常見(jiàn)LoRaWAN網(wǎng)關(guān)架構(gòu)
市面上網(wǎng)關(guān)硬件架構(gòu)較多的是:
- ESP8266/ESP32 + SX127X,支持C++/Lua/Python
- RPi Linux + SX127X,支持C++/Python
- RPi Linux + SX1301,支持C++,Web測(cè)使用Shell/Python/JS
單通道中,ESP方案最具成本競(jìng)爭(zhēng)力,但是RPi的普及率和擴(kuò)展性比較高,可以直接做邊緣計(jì)算。
USB方案LoRaWAN網(wǎng)關(guān)
而我除了提供ESP方案外,還提供USB Dongle方案,即:
Host + USB/SPI + SX127X。BOM成本和ESP方案一致,因?yàn)镾TM32F103和ESP8266/ESP32在一個(gè)區(qū)間,甚至更低些(寫到這里,覺(jué)得自己好Low):
- STM32F103 Bluepill,10CNY;
- ESP8266 ESP-12E,12CNY;
- ESP32 WROOM,18CNY;
目標(biāo)是在任意主機(jī),包括RPi/Android/PC/Mac上都可以即插即用,快速架設(shè)網(wǎng)關(guān)。
軟硬件接口
LoRa USB的接入方式,有點(diǎn)兒類似WiFi/藍(lán)牙,尤其是藍(lán)牙HCI接口。HCI接口將PHY (物理層)/DLL (數(shù)據(jù)鏈路層)留給了USB Dongle,數(shù)據(jù)鏈路層以上在主機(jī)實(shí)現(xiàn)。而DLL包括兩個(gè)子層:
- MAC (媒體訪問(wèn)層)
- LLC (邏輯鏈路層)

Fig 1: Bluetooth HCI 架構(gòu)圖
還有一種比較大膽的非標(biāo)準(zhǔn)模式,即USB/SPI橋接模式。之所以不使用CP/CH/PL的標(biāo)準(zhǔn)USB/SPI轉(zhuǎn)換IC,是因?yàn)椋?strong>MCU可以即時(shí)響應(yīng)中斷,而且可以利用RAM緩存更多報(bào)文,而純粹的轉(zhuǎn)換IC非但做不到,即便做到了,也會(huì)對(duì)主機(jī)OS的實(shí)時(shí)性有一定要求。
固件架構(gòu)
固件主要包括:
- Driver for SPI(s)
- LoRa Radio PHY;
- LoRa Radio LoRaMAC;
- Driver for USB/CDC-ACM;
- Host interface.
因?yàn)镸AC固化在MCU中,選擇合適的用戶升級(jí)模式,是一個(gè)蠻重要的選項(xiàng),包括Bootloader和SWD下載都是如此。從這個(gè)角度看,STM32F103C8的資源比較有限。即便是libmaple bootloader都需要F103CB才行。
軟件架構(gòu)
因?yàn)橐诓煌脚_(tái)上運(yùn)行,如Windows/Linux/Mac以及Android上。所以采用跨平臺(tái)語(yǔ)言比較合理,如Python/Lua/JS,如果是C/C++,則需要更多細(xì)節(jié)需要注意。并在此基礎(chǔ)上運(yùn)行LoRaMAC/LoRaWAN daemon。