的第1步:硬件要求
1)任何Raspberry pi(我使用3b型)
2)LCM1602C LCD屏幕(可選,使可以使用其他LCD屏幕或觸摸屏,但最好不要使用Adafruit。)您還可以使用10 k歐姆的電位器來(lái)設(shè)置屏幕對(duì)比度。
3)Sensirion SDP810-125 PA(差壓/微熱流量傳感器)。 SDP810-500 PA也可以使用,但是提供的python代碼將需要修改。
4)Bosch BME 280溫度,濕度和大氣壓力傳感器(最好在Adafruit分支板上使用,其他可能也可以使用,但可能具有不同的i2c地址)。
5)具有VNC或SSH的iOs或android手機(jī)或平板電腦(如果不使用LCM1602C LCD或其他屏幕,則為可選)
6)樹(shù)莓派電池或移動(dòng)電源(可選,以使設(shè)備便攜式)
7)2個(gè)10 K歐姆電阻器
8)大面包板,一個(gè)小面包板和PI補(bǔ)鞋匠
9)一些跳線(35對(duì)公對(duì)公和10對(duì)公對(duì)母)。
10)盡管提供了所有代碼,但有些Python技能也會(huì)有所幫助。
11 )2個(gè)內(nèi)徑為4mm的水族館(魚(yú)缸管)。您還將需要2個(gè)噴嘴,但可以3d打印它們。噴嘴上的孔的尺寸必須與SDP810的管道上的孔相同。我使用了來(lái)自廉價(jià)真空吸放泵的兩條吸管。皮托管也可以安裝在魚(yú)缸管上,但只能進(jìn)行一個(gè)方向的風(fēng)向測(cè)量和重新校準(zhǔn)。
12)3D打印機(jī)(可選,用于打印蓋子和噴嘴)
13)可能需要手持式風(fēng)速儀進(jìn)行校準(zhǔn),
在繼續(xù)之前,我必須先說(shuō)說(shuō)硬件及其極高的質(zhì)量。我相信Raspberry pi是眾所周知的,不需要任何介紹。該項(xiàng)目中使用的兩個(gè)傳感器(Bosch BME280和Sensirion SDP810-125 PA)可能是同類(lèi)產(chǎn)品中價(jià)格最低的業(yè)余愛(ài)好中最好的。但是,它非常精確,并且為醫(yī)療環(huán)境中的精確度而生產(chǎn)。在https://www.bosch-sensortec.com/bst/products/all_products/bme280和https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/0_Datasheets/Differential_Pressure/Sensirion_Differential_Pressure_Sensors_SDP中讀取相應(yīng)的數(shù)據(jù)表.pdf
步驟2:連接硬件
在使用GPIO引腳或連接/斷開(kāi)連接時(shí)請(qǐng)記住要關(guān)閉樹(shù)莓派
將Sensirion SDP 810連接到面包板上,如上圖和上圖所示。切記在Vdd和SDA以及Vdd和SCL之間使用兩個(gè)10 k歐姆上拉電阻。還要連接BME280(不需要上拉電阻)。由于兩個(gè)傳感器具有不同的i2c地址,因此可以將它們并行連接到同一i2c總線。我使用了顏色編碼Red = V,Green = SDA/SDI和Red = SCK/SCL
確保在系統(tǒng)上啟用了i2c(轉(zhuǎn)到“應(yīng)用程序菜單”,“首選項(xiàng)”,Raspberry PI配置,“接口”)
連接電路,打開(kāi)樹(shù)莓派。打開(kāi)一個(gè)終端窗口,然后運(yùn)行 sudo i2cdetect –y 1 。結(jié)果應(yīng)指示地址為0x25(SDP810)和x76或x77(BME280)上的2個(gè)設(shè)備。
連接LCM1602C。我按照adafruit的說(shuō)明進(jìn)行操作(https://learn.adafruit.com/drive-a-16x2-lcd-direct-with-a-raspberry-pi/overview),但是,adafruit修改了代碼中的引腳排列,因此請(qǐng)遵循以下說(shuō)明:
按照以下步驟將LCD連接到面包板上:
LCD的引腳1接地(黑線)
LCD的2號(hào)引腳變?yōu)? 5V(紅線)
3號(hào)引腳(Vo)連接到電位計(jì)的信號(hào)(橙色線)。如圖所示,將其余的電位器引腳連接到+ 5v和GND。如果不想讓屏幕對(duì)比度變化,請(qǐng)將LCD的引腳3連接到+ 5V
引腳4(RS)連接到Cobbler#25(GPIO 25)(黃線)
針腳5(RW)接地(黑線)
針腳6(EN)連接到Cobbler#24(GPIO 24)(綠線)
跳過(guò)LCD針#7,#8,#9和#10
針#11(D4)連接到補(bǔ)鞋匠#23(GPIO 23)(藍(lán)線)
針# 12(D5)連接到Cobbler#17(GPIO 17)(紫線)
針#13(D6)連接到Cobber#21(GPIO 21)(灰線)
針腳14(D7)連接到Cobber#22(GPIO 22)(白線)
針腳15(LED +)轉(zhuǎn)到+ 5V(紅線)
針腳# 16(LED-)接地(黑線)。
Adafruit i還提供以下警告:
在接線之前,請(qǐng)檢查您的LCD具有LED背光,而不是EL背光。 LED背光使用10-40mA的功率,EL背光使用200 + ma! EL背光燈通常價(jià)格便宜但無(wú)法使用,請(qǐng)確保不要使用背光燈,否則Pi會(huì)過(guò)載。一些帶有LED背光的廉價(jià)LCD在LCD模塊的背光上沒(méi)有電阻,如果不確定,請(qǐng)?jiān)?5針和5V引腳之間連接一個(gè)1Kohm電阻,而不是直接連接。所有Adafruit液晶顯示器均具有帶內(nèi)置電阻器的LED背光燈,因此您不需要額外的電阻器。
您現(xiàn)在可以打開(kāi)樹(shù)莓派。屏幕將點(diǎn)亮。如果看起來(lái)不像提供的照片上的屏幕,請(qǐng)檢查您的連接。如果屏幕點(diǎn)亮,但您看不到障礙物,請(qǐng)轉(zhuǎn)動(dòng)鍋。如果添加了1 k ohm電阻,則可能必須將其刪除才能使塊可見(jiàn)。
步驟3:準(zhǔn)備RASPBERRY PI軟件
我的代碼已在最新的Raspbian Stretch上進(jìn)行了測(cè)試。
確保您的系統(tǒng)是最新的
打開(kāi)終端并運(yùn)行:
$ sudo apt -get update
$ sudo apt-get upgrade
還請(qǐng)確保已安裝以下軟件包。它們可能已經(jīng)安裝。
$ sudo apt-get install python-dev
$ sudo apt-get install python-setuptools
$ sudo easy_install -U分發(fā)
$ sudo apt-get install python-pip
$ sudo pip install rpi.gpio
$ sudo pip install rpi.gpio
現(xiàn)在您需要安裝適用于BME280和LCM1602C的adafruit模塊。它們可以在Github上獲得
首先安裝git來(lái)啟用github上目錄的克隆。運(yùn)行
$ sudo apt-get install git
移動(dòng)到要安裝模塊的目錄。我建議您使用puthon目錄。運(yùn)行:
$ cd mkdir/home/pi/python
$ cd/home/pi/python
使用以下命令克隆Adafruit_Python_CharLCD目錄:
$ git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git
移至Adafruit_Python_CharLCD目錄
$ cd Adafruit_Python_CharLCD
運(yùn)行以下命令注冊(cè)模塊:
$ sudo python setup.py安裝
LCM1602 python模塊現(xiàn)在可用于所有python應(yīng)用程序,方法是:
將Adafruit_CharLCD作為L(zhǎng)CD導(dǎo)入LCD 在您的python編輯器中
您可以通過(guò)運(yùn)行附件LCD_Hello_world.py來(lái)測(cè)試LCD。如果您不根據(jù)物理插腳(在附件LCD_Hello_world.py和我提供的所有腳本中更正),不修改python中的插腳,則github上的示例(在示例目錄中可用)將無(wú)法工作。如果屏幕上沒(méi)有顯示“ hello world”,請(qǐng)檢查引腳排列,連接并轉(zhuǎn)動(dòng)電位計(jì)。如果這不起作用,則添加了1 k ohs電阻器。
您還需要安裝BME280模塊。使用以下shell命令移動(dòng)到python目錄。
$ cd/home/pi/python
運(yùn)行以下命令:
$ git clone https://github.com/adafruit/Adafruit_Python_BME280.git
$ cd Adafruit_Python_BME280
$ sudo python setup.py install
現(xiàn)在,通過(guò)導(dǎo)入Adafruit_BME280模塊,adafruit BME280模塊將可用于所有python腳本。
在運(yùn)行第一個(gè)腳本之前,請(qǐng)通過(guò)運(yùn)行
$ sudo i2cdetect –y 1
,確保BME280在i2c地址77上(其他BME280板可能在76上)。 BME280正在使用i2c地址76,將文件Adafruit_BME280.py第30行修改為BME280_I2CADDR = 0x76
可以使用附加的Reading_BME280.py示例來(lái)測(cè)試BME280。
Sensirion SDP810 micro熱流量傳感器不需要任何特殊模塊,并且可以通過(guò)smbus協(xié)議(i2c總線協(xié)議的子集)進(jìn)行通信。我在網(wǎng)上很難找到SDP810的python示例,不得不用辛苦的方式和使用它的數(shù)據(jù)表弄清楚它的工作方式。結(jié)果可在Github上找到,網(wǎng)址為https://github.com/JJSlabbert/Sensirion_SDP810_125PA。
第4步:運(yùn)行氣象臺(tái)軟件
當(dāng)前,我有兩個(gè)可用的python腳本:
weather_log_and_display.py 將讀取所有傳感器,將讀數(shù)打印到樹(shù)莓派屏幕上(如果已連接),將數(shù)據(jù)記錄在data.txt中并打印液晶顯示屏上的讀數(shù)。
anemometer.py 可以非??焖俚刈x取風(fēng)速數(shù)據(jù)。您可以在Python腳本中增加/減少讀取間隔。根據(jù)SDP810的數(shù)據(jù)表,每0.5 ms可獲得一個(gè)新的讀數(shù)。這是用于python和LCD屏幕的快速方法。該腳本還顯示了最小和最大讀數(shù),是檢測(cè)陣風(fēng)的理想選擇。
您還可以使用智能手機(jī)/平板電腦通過(guò)VNC監(jiān)視氣象站。有關(guān)更多信息,請(qǐng)?jiān)L問(wèn)https://www.raspberrypi.org/magpi/vnc-raspberry-pi/。檢查應(yīng)用商店中的vnc查看器。
如果您需要在啟動(dòng)時(shí)自動(dòng)運(yùn)行腳本,請(qǐng)?zhí)砑?/p>
@python/home/pi/python/Portable_Weather_Station/weather_log_and_display.py
對(duì)于/home/pi/.config/lxsession/LXDE-pi
關(guān)于海拔高度計(jì)算的注意事項(xiàng):
海拔高度是計(jì)算得出的作為局部大氣壓,溫度和可見(jiàn)水壓的函數(shù)??匆?jiàn)水平的實(shí)際壓力在1013,25 hPa附近頻繁波動(dòng)。我在Python腳本中使用了1013,25 hPa。因此,由Python腳本計(jì)算出的海拔高度只是估計(jì)值。
-
氣象站
+關(guān)注
關(guān)注
1文章
749瀏覽量
15660
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論