物聯(lián)網(wǎng) (IoT) 應(yīng)用的開發(fā)人員需要確保他們的無線傳感器系統(tǒng)能夠無縫連接到基于云的軟件和服務(wù)。但是,這通常需要選擇和使用多個無線接口。確保這些接口都能滿足他們的要求,可讓他們不再將注意力集中在更高級別的物聯(lián)網(wǎng)應(yīng)用本身。
為了解決這個問題,許多供應(yīng)商都提供了開發(fā)板和軟件,幫助物聯(lián)網(wǎng)開發(fā)人員快速部署能夠通過局域網(wǎng)、中型網(wǎng)絡(luò)和廣域網(wǎng)進行無線連接的傳感器設(shè)備。
本文將介紹 Pycom Ltd. 提供的一個此類解決方案,并說明其特征和特性,然后展示如何應(yīng)用。
對于大多數(shù)物聯(lián)網(wǎng)應(yīng)用而言,高效的無線連接是物聯(lián)網(wǎng)設(shè)備設(shè)計的關(guān)鍵要求。迄今為止,沒有任何一種無線技術(shù)成為首選的連接解決方案。事實上,沒有任何一種無線技術(shù)可能占據(jù)優(yōu)勢地位,因為無線提供商總能提供更加有效的替代方案。
物聯(lián)網(wǎng)應(yīng)用的使用案例非常多,這就使得單一連接解決方案的概念變得更加復(fù)雜。相同的物聯(lián)網(wǎng)應(yīng)用可能提出不同的連接要求,這取決于用戶的物理位置、數(shù)據(jù)吞吐量要求和其他條件。有時,同一個應(yīng)用可能要求同一部物聯(lián)網(wǎng)設(shè)備支持使用藍牙與附近用戶進行交互,使用 Wi-Fi 與其他本地資源交互,使用 LTE 蜂窩網(wǎng)絡(luò)在 Wi-Fi 范圍外保持連接,甚至是使用 LoRaWAN 或 SigFox 與流入中央物聯(lián)網(wǎng)網(wǎng)關(guān)或控制器的其他地理位置分散型物聯(lián)網(wǎng)設(shè)備相連接。
如果這些設(shè)備能夠支持使用所有這些技術(shù)進行靈活連接,那么將為物聯(lián)網(wǎng)應(yīng)用開發(fā)人員帶來顯著競爭優(yōu)勢。早期實現(xiàn)這種多技術(shù)連接的方法導(dǎo)致設(shè)計過于復(fù)雜、成本過高,或者體積過大,以至無法滿足物聯(lián)網(wǎng)設(shè)計要求。即使使用較早的無線收發(fā)器,開發(fā)人員也面臨著與射頻信號路徑優(yōu)化、降噪、物理布局等相關(guān)的挑戰(zhàn)。
對于開發(fā)人員而言,為單個無線技術(shù)構(gòu)建優(yōu)化的硬件解決方案已經(jīng)非常困難。在旨在支持多種無線技術(shù)的硬件設(shè)計中,復(fù)雜性甚至還會顯著增加。即便在設(shè)計了合適的硬件之后,軟件工程師還要應(yīng)對物聯(lián)網(wǎng)設(shè)計中爭奪相同有限資源的多個協(xié)議棧和軟件服務(wù)。
不足為奇的是,有效的多技術(shù)無線連接解決方案的部署,在最好的情況下也是有限的。Pycom 的多技術(shù)無線板和軟件可降低無線物聯(lián)網(wǎng)開發(fā)的復(fù)雜性,只需組合一些硬件和軟件即可,從而解決了這些難題。
無線選項
Pycom FiPy 和 GPy 是 55 x 20 x 3.5 毫米(mm)板,旨在為物聯(lián)網(wǎng)設(shè)計提供完整的多技術(shù)無線解決方案。與大多數(shù)無線產(chǎn)品不同,F(xiàn)iPy 支持藍牙 4.2、IEEE 802.11b/g/n Wi-Fi、窄帶 LTE、LoRaWAN 和 Sigfox。GPy 板不包含 LoRaWAN 和 Sigfox,但提供與 FiPy 相同的功能。本文重點介紹 FiPy 板。
在物聯(lián)網(wǎng)設(shè)計產(chǎn)品中,支持 LTE 蜂窩網(wǎng)絡(luò)是一種快速興起的趨勢。Pycom 的 LTE 解決方案是為其不斷擴大的支持蜂窩網(wǎng)絡(luò)的電路板系列而設(shè)計的,支持 LTE Cat M1 和 NB-IoT,在降低功耗的同時保持與大多數(shù)物聯(lián)網(wǎng)設(shè)備要求相符的吞吐量水平。通過利用這些不同的連接選項,開發(fā)人員可以優(yōu)化其無線實現(xiàn),以滿足靜態(tài)或動態(tài)應(yīng)用對范圍、吞吐量和功耗的需求。
該板為除連接之外的物聯(lián)網(wǎng)設(shè)計要求提供了一個合適的平臺。FiPy 的核心是 Espressif ESP32 SoC,集成了雙處理器、8 MB 閃存、4 MB 的 RAM,還有一個提供藍牙和 Wi-Fi 連接的射頻無線電子系統(tǒng)。當(dāng)網(wǎng)絡(luò)處理器執(zhí)行通信協(xié)議棧時,主處理器可以運行用戶代碼。
SoC 帶有多通道 12 位模數(shù)轉(zhuǎn)換器 (ADC) 和一對 8 位數(shù)模轉(zhuǎn)換器 (DAC),可以滿足基本物聯(lián)網(wǎng)感測要求。除了標(biāo)準(zhǔn)串行接口、GPIO 和串行接口,Pycom 還通過板的可配置端口,提供模擬和射頻功能(圖 1)。
圖 1:Pycom FiPy 板引出了其處理器的引腳,開發(fā)人員可以將其映射到處理器的集成模擬和數(shù)字功能。(圖片來源:Pycom)
除了廣泛的功能外,F(xiàn)iPy 還提供節(jié)能特性,以滿足以電池供電的物聯(lián)網(wǎng)設(shè)計的節(jié)能要求。例如,開發(fā)人員可以將處理器置于深度休眠模式,并使用專用的超低功耗 (ULP) 處理器來處理 I/O 活動,電力消耗低至 25 微安 (μA)。ULP 處理器獨立于主處理器工作,可執(zhí)行用戶代碼來訪問 GPIO,或者使用 SoC 的集成 ADC 或 DAC 執(zhí)行數(shù)據(jù)轉(zhuǎn)換,為開發(fā)人員提供靈活的低功耗操作平臺,而不會影響外設(shè)工作。
插件硬件增強
對于具有更廣泛感測要求的物聯(lián)網(wǎng)設(shè)計,開發(fā)者可將 FiPy 與 Pycom 的 Pysense 感測板和 Pytrack 位置跟蹤板結(jié)合起來。
對于感測應(yīng)用,Pysense 板提供 STMicroelectronics LIS2HH12 加速計、Silicon Labs SI7006-A20 溫度/濕度傳感器、Lite-On LTR-329ALS-01 環(huán)境光傳感器、NXP Semiconductors MPL3115A2 壓力傳感器——所有這些均通過板的共享 I2C 串行總線進行連接(圖 2)。在正常工作狀態(tài)下,所有這些傳感器都消耗最小的功率。例如,NXP MPL3115A2 壓力傳感器在正常采樣模式下僅消耗 40 μA,而功耗最大的傳感器 Lite-On LTR-329ALS-01 環(huán)境光傳感器則消耗大約 250 μA。其他兩個傳感器分別消耗大約 150 μA。
圖 2:通過將 FiPy 插入 Pysense 板,開發(fā)人員可以構(gòu)建出能夠使用多個無線連接選項的多傳感器物聯(lián)網(wǎng)設(shè)備。(圖片來源:Pycom)
由于 Pysense 和 FiPy 的功耗需求相對較低,開發(fā)人員可以使用電池運行基于 Pycom 的設(shè)計長達數(shù)年。Pysense 板包括 Texas Instruments 的 BQ24040 電池充電器 IC 和連接器,使用帶有 JST 連接器的合適可充電電池(例如 TinyCircuits ASR00007 270 毫安小時 (mAh) 鋰離子聚合物 (LiPo) 電池)為設(shè)計供電。
對于位置跟蹤應(yīng)用,Pytrack 板結(jié)合了精確的全球?qū)Ш叫l(wèi)星系統(tǒng) (GNSS) GPS 傳感器和加速計,以及與 Pysense 中所用相同的 LiPo 電池充電子系統(tǒng)。
Pysense 和 Pytrack 傳感器板上的針座提供了一個簡單的解決方案,可構(gòu)建專用于每個物聯(lián)網(wǎng)應(yīng)用的硬件平臺。開發(fā)人員只需將 FiPy 板插入適當(dāng)?shù)臄U展板,即可創(chuàng)建特定的硬件配置。對于不需要 LoRaWAN 或 Sigfox 連接的應(yīng)用,開發(fā)人員可以改為使用 GPy 板。
插件軟件增強
對于原型開發(fā)而言,組合多個板來擴展整體硬件功能是常見而重要的功能。但在過去,基礎(chǔ)設(shè)計的硬件增強可能會在軟件方面帶來重大挑戰(zhàn),因為開發(fā)人員要努力尋找和集成支持特定硬件配置所需的不同軟件驅(qū)動程序和中間件。由于能夠支持 MicroPython,Pycom 讓應(yīng)用軟件開發(fā)變得非常簡單,就如同將插件板用于物聯(lián)網(wǎng)設(shè)備硬件一樣。
MicroPython 采用 Python 語言,利用面向硬件的支持來增強其功能。同時,MicroPython 消除了嵌入式系統(tǒng)中不需要的 Python 功能,增強了性能,同時減少了資源受限的嵌入式設(shè)計的存儲器空間占用。
與 Python 相同,MicroPython 讓開發(fā)人員只需導(dǎo)入一個模塊即可添加特定軟件功能。例如,開發(fā)人員只需加載 ADC 模塊和讀取值,即可對 FiPy 的集成 ADC 進行編程(列表 1)。
Copy
import machine
adc = machine.ADC() # create an ADC object
apin = adc.channel(pin=‘P16’) # create an analog pin on P16
val = apin() # read an analog value
列表 1:與 Python 相同,MicroPython 允許開發(fā)人員通過導(dǎo)入軟件模塊來增強其軟件功能,從而提供了一種簡單方法來添加硬件特定的功能,如從模數(shù)轉(zhuǎn)換器 (ADC) 讀取數(shù)據(jù),如下所示。(代碼來源:Pycom)
正如開發(fā)人員可以輕松地通過擴展板來增強設(shè)計一樣,他們可以通過導(dǎo)入適當(dāng)?shù)哪K來增加補充支持。將無線板插入擴展板后,開發(fā)人員只需將相應(yīng)的 MicroPython 模塊添加到其代碼中即可。
MicroPython 的編程模型讓開發(fā)人員能夠無縫地使用這些模塊來快速實現(xiàn)物聯(lián)網(wǎng)應(yīng)用。與列表 1 所示的對 ADC 硬件的軟件支持相同,對硬件擴展(例如 Pysense)的軟件支持只需開發(fā)人員導(dǎo)入相應(yīng)的模塊即可。除了一套完整的傳感器專用模塊,還提供了演示其在典型軟件應(yīng)用中使用的示例軟件,可以隨時使用。例如,為了讀取 Pysense 的 SI7006A20 溫度和濕度傳感器,在實例化用于讀取傳感器的溫度值 (si.temperature()) 和濕度值 (si.humidity()) 的 SI7006A20 對象 (SI7006A20(py)) 之前,開發(fā)人員只需導(dǎo)入 Pysense 模塊和傳感器專用模塊(列表 2)。
Copy
from pysense import Pysense
from LIS2HH12 import LIS2HH12
from SI7006A20 import SI7006A20
from LTR329ALS01 import LTR329ALS01
from MPL3115A2 import MPL3115A2,ALTITUDE,PRESSURE
py = Pysense()
mp = MPL3115A2(py,mode=ALTITUDE) # Returns height in meters. Mode may also be set to PRESSURE, returning a value in Pascals
si = SI7006A20(py)
lt = LTR329ALS01(py)
li = LIS2HH12(py)
print(mp.temperature())
print(mp.altitude())
mpp = MPL3115A2(py,mode=PRESSURE) # Returns pressure in Pa. Mode may also be set to ALTITUDE, returning a value in meters
print(mpp.pressure())
print(si.temperature())
print(si.humidity())
print(lt.light())
print(li.acceleration())
print(li.roll())
print(li.pitch())
print(py.read_battery_voltage())
列表 2:開發(fā)人員可以學(xué)習(xí) Pycom Pysense API 和相關(guān)軟件示例,以便使用 Pycom Pysense 硬件板中集成的傳感器特定 MicroPython 模塊。(代碼來源:Pycom)
由于采用了這種模塊化方法,實現(xiàn)無線連接同樣簡單。開發(fā)人員只需為所需的無線技術(shù)導(dǎo)入適當(dāng)?shù)哪K,以及用于 HTTPS 或 MQTT 等協(xié)議的其他模塊。除了這些無線通信模塊之外,Pycom 示例軟件還演示了開發(fā)人員如何快速建立 Wi-Fi 連接,并使用 MQTT 與 Adafruit IO 等基于云的服務(wù)進行交互(列表 3)。Adafruit IO 在原型開發(fā)免費服務(wù)計劃中提供,是簡單的云資源,設(shè)計用于創(chuàng)建物聯(lián)網(wǎng)數(shù)據(jù)流流程,包括輸入數(shù)據(jù)流、數(shù)據(jù)管理和分析。
Copy
from mqtt import MQTTClient
import machine
import time
from network import WLAN
def sub_cb(topic, msg):
print(“Received: “ + msg)
wlan = WLAN(mode=WLAN.STA)
wlan.connect(“yourwifinetwork”, auth=(WLAN.WPA2, “wifipassword”), timeout=5000)
while not wlan.isconnected():
machine.idle()
print(“Connected to Wifi\n”)
client = MQTTClient(“device_id”, “io.adafruit.com”,user=“your_username”, password=“your_api_key”, port=1883)
client.set_callback(sub_cb)
client.connect()
client.subscribe(topic=“youraccount/feeds/lights”)
while True:
print(“Sending ON”)
client.publish(topic=“youraccount/feeds/lights”, msg=“ON”)
time.sleep(1)
print(“Sending OFF”)
client.publish(topic=“youraccount/feeds/lights”, msg=“OFF”)
time.sleep(1)
列表 3:Pycom 的示例軟件演示了開發(fā)人員如何使用幾個簡單的 Wi-Fi 模塊調(diào)用(以黃色突出顯示),通過 MQTT 與基于云的資源(例如此處所示的 Adafruit IO)進行交互。(代碼來源:Pycom)
Pycom 多技術(shù)無線板與 MicroPython 相結(jié)合,為開發(fā)無線物聯(lián)網(wǎng)設(shè)計提供了強大的平臺,能夠動態(tài)響應(yīng)不斷變化的連接環(huán)境。很多物聯(lián)網(wǎng)應(yīng)用都要求隨時訪問傳入的數(shù)據(jù)流。但是,舉例來說,每當(dāng)局域網(wǎng)發(fā)生故障,或者由于干擾或網(wǎng)絡(luò)事件導(dǎo)致本地 Wi-Fi 信號強度下降時,應(yīng)用將無法訪問旨在通過 Wi-Fi LAN 與云進行交互的物聯(lián)網(wǎng)設(shè)備。但是,對于 Pycom 板,開發(fā)人員只需切換到另一個無線連接選項即可。
例如,要通過 LTE 蜂窩服務(wù)連接,開發(fā)人員只需使用 MicroPython LTE 模塊。相同的底層方法允許開發(fā)人員在 Wi-Fi 和 LTE 蜂窩連接之間進行切換,而無需更改構(gòu)建來與主機交互或提供應(yīng)用級別功能的更高級代碼。例如,要使用 LTE 連接,開發(fā)人員只需加載 LTE 模塊,并且實例化相應(yīng)的 LTE 對象,然后連接到提供商服務(wù)。因此,開發(fā)人員只需稍作改動,即可在應(yīng)用中切換到 LTE 連接(列表 4)。
Copy
from mqtt import MQTTClient
import machine
import time
from network import LTE
def sub_cb(topic, msg):
print(“Received: “ + msg)
lte = LTE()
lte.connect()
while not lte.isconnected():
machine.idle()
print(“Connected to LTE\n”)
client = MQTTClient(“device_id”, “io.adafruit.com”, user=“your_username”, password=“your_api_key”, port=1883)
client.set_callback(sub_cb)
client.connect()
client.subscribe(topic=“youraccount/feeds/lights”)
while True:
print(“Sending ON”)
client.publish(topic=“youraccount/feeds/lights”, msg=“ON”)
time.sleep(1)
print(“Sending OFF”)
client.publish(topic=“youraccount/feeds/lights”, msg=“OFF”)
time.sleep(1)
列表 4:Pycom 示例軟件演示了開發(fā)人員如何使用 LTE 連接(以藍色突出顯示)而不是 Wi-Fi(在列表 3 中以黃色突出顯示),執(zhí)行與云資源交互的更高級操作。(代碼來源:Pycom)
同樣的常規(guī)方法也適用于將連接切換到藍牙、LoRaWAN 或 Sigfox,以響應(yīng)變化的條件。因此,開發(fā)人員可以構(gòu)建出能夠輕松支持各種無線連接技術(shù)的物聯(lián)網(wǎng)設(shè)備。當(dāng)操作或功能要求需要切換到不同的連接選項時(甚至在運行時期間進行切換),開發(fā)人員就可以輕松實現(xiàn)所需的動態(tài)切換功能,以保持可用性或滿足不斷變化的性能要求。
總結(jié)
開發(fā)人員可以使用專門為支持多種無線技術(shù)(包括藍牙、Wi-Fi、LTE、LoRaWAN 和 Sigfox)而構(gòu)建的 Pycom 板,快速滿足新興的無線連接要求。通過將這些板與基于 MicroPython 的軟件相結(jié)合,開發(fā)人員可以快速實現(xiàn)能夠響應(yīng)不斷變化的無線連接要求的物聯(lián)網(wǎng)設(shè)備。
評論
查看更多