支援PoE的Pi為定制遙感平臺(tái)提供了極好的基礎(chǔ)。
為遙感平臺(tái)提供基礎(chǔ)僅僅是新型以太網(wǎng)供電(PoE)樹莓派3型B +適合的眾多用途之一。在本文中,在探討一個(gè)簡單的真實(shí)世界示例 (該示例使用DesignSpark Pmod HAT和Python腳本從熱電偶Pmod獲取讀數(shù),并通過MQTT發(fā)布它們。)之前,我們將介紹可用的接口選項(xiàng)以及一些便捷的集成傳感器方法。
接口選項(xiàng)
所以讓我們從基礎(chǔ)開始,并提醒我們自己有可用的本地接口:
-
USB. 更多的終端用戶外設(shè)接口,但會(huì)有一些傳感器使用它,實(shí)際上也適用于其他總線,如RS-422和CAN。
-
Plain GPIO. 我們可以讀取“bitbanging”狀態(tài)的數(shù)字引腳使用軟件/庫來實(shí)現(xiàn)對(duì)某些通常速度較低的總線的支持,例如高度流行的DS18B20溫度傳感器使用的單線總線。
-
I2C. 一個(gè)簡單的串行主/從總線,它使用兩條線并具有7位地址范圍。 I2C提供了大量的傳感器和ADC,以及數(shù)字I / O擴(kuò)展器,為您提供更多的GPIO引腳,EEPROM和其他器件。
-
SPI. 4根時(shí)鐘線,雙向數(shù)據(jù)傳輸和從機(jī)選擇。再次受到許多器件的支援,通常以比I2C更高的速度運(yùn)行,但由于只有2個(gè)芯片使能線可用于選擇外設(shè),因此只能使用兩個(gè),除非您還對(duì)GPIO進(jìn)行了bit-bit。
我們可以簡單地將傳感器通過面包板,跳線或跳板等進(jìn)行集成。但是,也有非常便利的模塊化系統(tǒng)可用,所以我們來看看其中兩個(gè)。
MikroElektronika點(diǎn)擊
點(diǎn)擊板是緊湊的模塊,可以通過接口適配器“屏蔽”與各種不同的平臺(tái)一起使用,其中一種可用于Raspberry Pi 3 Model B +(896-8660),以提供即時(shí)通行方便的模塊范圍。
為以下傳感器提供Python代碼示例Click board:
-
顏色點(diǎn)擊 (923-5999). RGBC顏色傳感器
-
加速點(diǎn)擊 (923-5999). 3軸加速度計(jì) (882-8900)
-
天氣點(diǎn)擊 (912-5170). 溫度,濕度和壓力傳感器
當(dāng)然,還有更多的傳感器和ADC等模塊可供使用,通常提供的C代碼示例代碼可用作您自己項(xiàng)目的起點(diǎn)。
要了解有關(guān)Pi 3 Click Shield的更多信息,請參閱此前的博文。
Digilent Pmod
外設(shè)模塊(簡稱Pmod)是另一個(gè)開放式規(guī)范標(biāo)準(zhǔn),但是這次是來自Digilent。 DesignSpark Pmod HAT最初與FPGA和微控制器平臺(tái)相關(guān)聯(lián),為與Raspberry Pi一起使用提供了一個(gè)完美的解決方案。
與Click板一樣,有許多不同的Pmod可供使用,并且有很多不同的Pmod提供有用的傳感器和輸入。一個(gè)用于Pmod HAT的Python庫支援六個(gè)Pmod,其中四個(gè)是傳感器/輸入:
-
PmodAD1 (134-6443). 雙通道12位ADC。
-
PmodTC1 (134-6476). 冷端熱電偶到數(shù)字轉(zhuǎn)換器。
The DesignSpark.Pmod Python庫提供了一個(gè)簡單而一致的界面,可以讀取上述Pmod中的讀數(shù),并驅(qū)動(dòng)H橋Pmod和RGB OLED Pmod。
有關(guān)Pmod HAT,庫和所有支持的Pmod的詳細(xì)信息,請參閱上一篇博文。
接下來讓我們看一下使用PmodTC1的實(shí)例。
監(jiān)測溫度
PmodTC1配有K型熱電偶線,溫度范圍為 -73°C 至482°C,這意味著它可以用于各種不同的應(yīng)用場合。
舉例來說,我們希望能夠測量熱水箱的溫度,因?yàn)槲覀兿雵L試優(yōu)化我們鍋爐的定時(shí)器程序或可能的恒溫器設(shè)定點(diǎn)。蓄水箱在閣樓上,靠近沒有電源插座,我們不想讓電工出門。沒問題 - PoE供電的Pi適用于這種情況。我們將使用MQTT發(fā)布數(shù)據(jù)饋送,因?yàn)樗子谑褂貌⒌玫綇V泛支援。
K型熱電偶導(dǎo)線
使用Raspbian - Lite版本就足夠了 - 寫入插入到我們的Pi中的Micro SD卡并引導(dǎo),我們首先需要安裝DesignSpark.Pmod庫。接下來我們將安裝Paho MQTT庫:
pi@3bplus:~$sudopipinstallpaho-mqtt現(xiàn)在我們擁有易于使用的庫,可以讓我們從PmodTC1讀取數(shù)據(jù)并將其發(fā)布到MQTT代理。以下是我們的代碼最簡單的樣子:
importtimefromDesignSpark.Pmod.HATimportcreatePmodimportpaho.mqtt.publishaspublish broker='localhost'topic='house/boiler/hotwater/temperature'therm=createPmod('TC1','JBA')whileTrue: cel=therm.readCelcius() printcel publish.single(topic,cel,hostname=broker,client_id="temp_sensor") time.sleep(1)這是做什么的?
-
導(dǎo)入我們需要的Python模塊(庫)
-
定義我們想要發(fā)布讀數(shù)的MQTT代理主機(jī)和主題
-
每秒鐘讀取一次,將其打印到終端并發(fā)布給代理
如果您有一個(gè)現(xiàn)有的MQTT代理運(yùn)行在某個(gè)地方,則可以在您自己的或基于云的IoT平臺(tái)的系統(tǒng)上進(jìn)行配置,您可以將其配置為主機(jī)。在這里我們使用“l(fā)ocalhost”,我們可以通過以下方式輕松測試這種方式:安裝Mosquitto MQTT代理和客戶端:
pi@3bplus:~$sudoapt-getinstallmosquittomosquitto-clients然后在一個(gè)窗口中,我們可以運(yùn)行我們的Python腳本:
pi@3bplus:~$pythonPmodTC1-MQTT.py在第二個(gè)窗口中,我們可以訂閱該主題以確認(rèn)消息確實(shí)正在向代理發(fā)布:
pi@3bplus:~$mosquitto_sub-hlocalhost-t'house/boiler/hotwater/temperature'
進(jìn)一步應(yīng)用
當(dāng)然,許多不同的方向可能會(huì)進(jìn)一步采用這種應(yīng)用。假設(shè)您有其他傳感器連接到同一個(gè)Pi,那么您可以像在示例中一樣運(yùn)行代理,也可以安裝Node-RED來實(shí)現(xiàn)某些邏輯,將數(shù)據(jù)發(fā)布到網(wǎng)頁,設(shè)置警報(bào)和/或與一些云服務(wù)集成。您可以在Pi上安裝時(shí)間序列數(shù)據(jù)庫以記錄數(shù)據(jù),例如InfluxDB,也可能在Grafana中進(jìn)行可視化。
可以使用的云服務(wù)包括IBM Cloud、OpenSensors 和Cayenne,它們都支持MQTT以及其他API。
正如我們所看到的,感謝使用DesignSpark Pmod HAT和支援庫,將傳感器添加到Raspberry Pi 3 Model B +并獲取數(shù)據(jù)。通過這種組合,可以為原型化遙感平臺(tái)提供完善的解決方案,并提供大量可用于開發(fā)應(yīng)用程序的開源工具,以及物聯(lián)網(wǎng)云服務(wù)。
-
樹莓派
+關(guān)注
關(guān)注
117文章
1709瀏覽量
105716
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論