2021-08-19 20:53:22 索煒達電子 993
項目編號:E366
文件大?。?86K
源碼說明:帶中文注釋
開發(fā)環(huán)境:Python
簡要概述:
樹莓派485接口抄表(電表)
(1)項目背景:
有的小區(qū)(農村地區(qū))建設大樓后,供電公司不肯一個套房一個電表,只提供了兩個公共的三相表,再自己去分表。因此,有必要制作一套遠程抄表的方法解決抄表、算電費的問題。
(2)實現(xiàn)功能:
1.遠程抄表(有功電量),并存入數(shù)據(jù)庫。開程序后自動啟動抄表一次。
2.自動發(fā)送微博。
3.自動發(fā)送郵件并抄送數(shù)據(jù)庫文件為附件。
(3)使用條件:
1.電網(wǎng)專用的電表(含485模塊),可遠程抄表的電表。(既可以直接接入485總線,或者購買載波模塊省去接信號線的麻煩);
2.樹莓派(raspberry 系統(tǒng));
3.USB轉485模塊;
4.3.5寸顯示屏;
(4)使用方法:
1.在win.py文件中114行輸入微博賬號和密碼;
2.mail.py文件中輸入發(fā)件人的賬號和密碼,以及收件人的郵箱賬號;
3.win.py第26行說明了,該程序只能打包之后使用;
4.打包方法:下載所有文件之后,用cmd進入文件夾,然后使用指令:
pyinstaller -F -w win.spec進行打包;
5.打包之后,會生成一個dist文件夾,里面的win文件就可以直接運行了。
ps:注意我用的是USB轉485串口,因此wattmeter.py文件的第13行用的是'/dev/ttyUSB0'
另外,樹莓派安裝CH340芯片的USB模塊方法如下:
樹莓派安裝CH340驅動(USB轉串口)
為何有此需求
原本樹莓派3B+帶有兩個串口,一個硬件串口,一個mini串口。硬件串口默認給了藍牙使用,mini串口使用的是CPU的時鐘(CPU頻率變化不穩(wěn)定)。因此,藍牙與硬件串口不可兼得。
我的3B+用一塊3.5寸屏幕插在排針上面,導致排針要另外接線非常麻煩。因此,考慮從USB接口再接一個串口使用。
驅動下載官方網(wǎng)址(linux版本)
http://www.wch.cn/download/CH341SER_LINUX_ZIP.html
下載下來是三個文件,分別是:ch34x.c、Makefile、readme.txt。通過源碼安裝步驟為:
(1)進入該文件夾;
(2)make;
(3)make load
遇到問題
(1)make步驟報錯:/lib/modules/4.19.75-v7+/build: 沒有那個文件或目錄。 停止。 這個時候,是linux-headers的問題。處理辦法:
sudo apt-get install linux-headers
ls /usr/src 查看linux-headrs的版本
cd /lib/modules/4.19.75-v7+ 進入文件夾(上面報錯的文件夾)
sudo ln -s /usr/src/linux-headers-4.19.66-v7+ build 形成鏈接即可
(2)報錯:unknown type name ‘wait_queue_t’。打開ch34x.c查看源碼,發(fā)現(xiàn)實際上wait_queue_t wait 并沒有用,直接注釋掉。
(3)報錯:implicit declaration of function ‘signal_pending’。這個錯誤是因為沒有包含一個頭文件signal.h。
在文件包含頭文件的地方加入 #include <linux/sched/signal.h>。
以上問題解決之后,進入源碼文件夾依次執(zhí)行(1)make;(2)make load即可安裝成功。
如何查看是否安裝成功。
dmesg | grep ttyS* 執(zhí)行該命令,即可查看擁有幾個串口。能夠看到:
[ 2.025631] console [ttyS0] enabled
[ 7.836397] usb 1-1.2: ch341-uart converter now attached to ttyUSB0
成功??!
目錄│文件列表:
└ WattMeter
│ 20200114164530.jpg
│ 20200114164538.jpg
│ config.py
│ mail.py
│ quit.png
│ wattmeter.py
│ weibo.py
│ win.py
└ win.spec