python温湿度传感器源代码_在树莓派上读取DHT11温湿度传感器-python代码实现及常见问题(全面简单易懂)...
最近由于自己的課題需要,想要用在樹莓派上使用DHT11溫濕度傳感器來讀取空氣中溫濕度,遇到了幾個問題,解決之后也對之前的知識進行了回顧,總結,特整理如下,希望能給也在學習樹莓派的小伙伴們帶來一些幫助。總的來說操作很簡單,但很容易出現細節方面的問題,我也把我遇到的問題進行了簡單整理,如果有其他問題可以直接在評論區提出,我看到了就會回答。文章有什么用詞不當或表述不清的問題(由于研究生在海外讀,所以用英語較多,很多硬件的術語可能并不專業,抱歉啦~),期待大家在評論區為我批評指正。本篇文章純手打,如需轉載,請注明出處,感謝。
本篇文章主要對DHT11進行了簡單梳理,主要分為四大模塊,分別為:
一、DHT11溫濕度傳感器
二、實驗所需設備與連線方式
三、Python代碼實現
四、常見問題
對哪個模塊感興趣也直接翻到相應部分閱讀即可。
一、DHT11溫濕度傳感器
DHT11溫濕度傳感器是一個性能很棒的模塊,它提供溫度和濕度讀數。價格低廉,精準度高使用簡單,并且有python庫可以直接導入使用,應用也很廣泛,在遠程氣象站、土壤監測器和家庭自動化系統都可以看見它的身影。
在日常工作學習中,我們接觸到的DHT11主要有兩種形式。一種是三引腳的焊有PCB的模塊,另一款是是四引腳的獨立模塊。如下圖所示:
第一種傳感器從左到右分別是信號引腳,VCC引腳(連接電源正極),ground接地引腳(連接電源負極)。需要注意的是,關于三引腳傳感器,不同廠商的傳感器引腳的順序可能不同,大家在連接之前需要看準傳感器上標的符號來進行判斷,比如我的傳感器就是這樣的,從左到右的第一個引腳(+)是連接電源正極的。
二、實驗所需設備與連線方式
(一)實驗所需設備
1. DHT11 溫室度傳感器
2. 樹莓派 3 B+/樹莓派 4 B
3. 三根杜邦線(母對母)
(二)DHT11與樹莓派連線方式
根據DHT11傳感器兩種形式不同,連線不太相同,卻也大同小異。你有哪一種都可以,按照
此處的連線與后面的代碼相關,第一次直接按照圖示方式連接即可。
1.三針引腳DHT11溫濕度傳感器與樹莓派的連接方式(我也把樹莓派的引腳功能圖放到下方了,不熟悉樹莓派引腳功能的同學可以直接在本頁面進行比對查看。)
2.四針引腳DHT11溫濕度傳感器與樹莓派的連接方式
注意:
1.一定要看好傳感器引腳的順序再進行連接。(vcc-樹莓派pin2,ground-樹莓派pin6,signal-樹莓派pin7(gpio4))
2.關于傳感器引腳的連接是很隨意的,vcc只要連接的是樹莓派上標有“5v”標識的引腳(pin2或pin4),ground連接樹莓派上標有“GND”標識的引腳(pin6,pin9,pin14,pin25,pin30,pin39),signal連接任意標有“GPIO”的引腳,但最后連接pin7,這樣后面的代碼直接復制粘貼的即可,建議第一次連接的同學直接按照我的方式連接即可,避免后期不必要的錯誤。
三、Python代碼實現
就我而言,在樹莓派的編程中我使用Python較多,代碼簡單,易懂,也有很多現成的庫可供使用,拿本次的DHT11來說,可以直接導入Adafruit DHT11庫,最后寫出的代碼也就只有幾行。在寫代碼之前,先把python和Adafruit DHT11庫下載下來。
sudo apt-get install git-core
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo apt-get install build-essential python-dev
sudo python3 setup.py install
1.sudo apt-get install git-core
(注意:如果下載失敗,則先運行sudo apt-get update并且再試一遍,其實不管下載什么,都可以先update到最新)
2.安裝Adafruit DHT11庫
(1)下載庫: git clone https://github.com/adafruit/Adafruit_Python_DHT.git
(2)使用cd命令進到 Adafruit_Python_DHT文件夾: cd Adafruit_Python_DHT
(3)sudo apt-get install build-essential python-dev
(4)下載python3:sudo python3 setup.py install
新建py文件
#!/usr/bin/python
importsysimportAdafruit_DHTwhileTrue:
humidity,temperature= Adafruit_DHT.read_retry(11, 4)print ('Temp: {0:0.1f} C Humidity: {1:0.1f} %'.format(temperature, humidity))
然后點運行就可以了
這是運行結果
代碼解釋:
(1)Adafruit_DHT.read_retry(11, 4)中的“11”代表你使用的是DHT11傳感器,如果你使用的是DHT22傳感器,則把數字改成“22”即可。數字“4”代表你的信號引腳連接的是gpio4所在的引腳,而不是“pin4”哦,這點要注意,如果你不想使用這個引腳,在連線方式改變的同時,改變這個數字接口。
(2)輸出的溫度以攝氏度為單位,相對濕度是以百分比的形式呈現。
(3)在shell框中會連續不斷的輸出溫度和相對濕度,暫停點擊右上角的stop即可。
四、 常見問題:
其實整個過程下來,連線方式或者代碼的編寫都是沒有多大難度的,但是細節的問題一旦忽視,就會報錯。結合其他網友的經驗和我自己的問題總結如下。
(一)報錯:
TypeError: unsupported format string passed to NoneType.__format__(這種情況一般是先沒有讀數,等一會后出現這個錯誤。這個是我一直以來最常見的報錯,一開始出現的時候根本沒有頭腦,后來才發現是因為造成這個報錯的原因比較多)
1. 杜邦線與樹莓派的連線問題。連線沒有插緊、線序有問題、線有損壞、代碼對應信號引腳的數字有問題、沒有查到樹莓派5v電 源引腳上(樹莓派與傳感器的連接方式最好使用樹莓派5v,電源,存在使用3.3v電源最后得到到數值的情況)
2. 傳感器有問題(我上次的那個傳感器有問題竟然也報錯了,具體什么錯我也記不清楚了,費半天勁一直查看代碼排錯,結果發現換了個傳感器就好了,哭暈)
3. 電源問題(我這里是指樹莓派引腳,在使用5V引腳和接地引腳給傳感器供電時)
明明引腳分配沒問題,也插在了樹莓派5v電源引腳上還是報錯,可能是你的樹莓派上插了其他設備影響到供電了(我上次是插了一個用來控制水泵的繼電器)。解決方法是接一個外接電源,保證電源電壓的穩定。
(二)報錯:
Traceback (most recent call last):
File "/home/pi/Desktop/temp.py", line 9
print 'Temp: {0:0.1f} C Humidity: {1:0.1f} %'.format(temperature, humidity)
^
SyntaxError: invalid syntax
這句話的意思是python代碼有問題,但當時的我找了好久也沒有發現哪有問題。后來才發現我的python代碼是這樣的“print 'Temp: {0:0.1f} C Humidity: {1:0.1f} %'.format(temperature, humidity)”,這在python3中是錯誤的語句格式,必須加上括號, 找了好久才發現是這個問題。
(三)報錯:ModuleNotFoundError: No module named 'Adafruit_DHT'
“import Adafruit_DHT ”語句錯誤,提示找不到Adafruit_DHT模塊,但是在terminal里輸入“import Adafruit_DHT”不報錯,并且已經下載了相關庫??赡苁悄愕膒ython版本有問題,可以是python2,但使用的是python3。是否是之前的命令行“sudo python3 setup.py install”寫錯了,寫成“sudo python setup.py install”從而下載的是python2了
部分圖片來源于網絡,侵刪。
最后祝大家都玩派順利~~
2020-06-09 12:46:38
總結
以上是生活随笔為你收集整理的python温湿度传感器源代码_在树莓派上读取DHT11温湿度传感器-python代码实现及常见问题(全面简单易懂)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 加密 压缩_如何用java 将
- 下一篇: UI自动化执行遇到的问题汇总