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

解密交通氣象站:數(shù)據驅動的交通氣象服務革新

智慧校園:氣象站引領氣象知識科普
自動氣象站的工作原理與應用
綠色校園,智慧氣象:走進我們的氣象站
自動超聲波氣象站:智慧氣象的重要組成部分
校園內環(huán)境監(jiān)測氣象站
交通氣象站:實時監(jiān)測道路氣象環(huán)境

車載小型氣象站:實時、準確地監(jiān)測氣象
自動氣象站組成和功能特點

區(qū)域生態(tài)自動氣象站:數(shù)據監(jiān)測與傳輸

校園氣象站高校科普論文氣象站多功能氣象站

基于啟揚IMX8MPlus核心板的自動氣象站應用解決方案

評論