本設(shè)計(jì)是在Linux操作系統(tǒng)中實(shí)現(xiàn)一個(gè)靈活的物聯(lián)網(wǎng)網(wǎng)關(guān),主要依托于標(biāo)準(zhǔn)化的USB/ACM,USB/ECM傳輸接口,實(shí)現(xiàn)動態(tài)加載、動態(tài)配置、多路并行的網(wǎng)關(guān)設(shè)計(jì)。
網(wǎng)關(guān)與USB
現(xiàn)在物聯(lián)網(wǎng)設(shè)計(jì)中網(wǎng)關(guān)的前端模塊與Linux主機(jī)之間往往采用UART/SPI方式連接,但是這兩種方式都不如USB能夠?qū)崿F(xiàn),熱插拔,即插即用,動態(tài)加載和配置,以及標(biāo)準(zhǔn)化設(shè)計(jì)。USB也可以Mini-PCI-Express的形式出現(xiàn)。
以LoRa/Sub-1GHz/2.4GHz為例,同時(shí)接入多路收發(fā)器,除了最常見的TDM,還可以按照FDM/CDM/SDM等復(fù)用方式實(shí)現(xiàn)多路頻譜共享??梢宰畹土膬r(jià)格實(shí)現(xiàn)專業(yè)的網(wǎng)關(guān)架構(gòu)。除此之外,也可以實(shí)現(xiàn)混合型網(wǎng)關(guān),即將RFID/NFC/IEEE802.15.4/Sub-1GHz/LoRa/WiFi/BLE等在同一網(wǎng)關(guān)中實(shí)施。由于USB是自我描述的,可以用于自動識別和配置。
網(wǎng)關(guān)架構(gòu)
雖說USB理論上可以擴(kuò)展127個(gè)設(shè)備,由于BLE/WiFi日益集成,所以物聯(lián)網(wǎng)能夠接入的設(shè)備數(shù)量,以LoRa為例,8個(gè)就差不多了。多了,電源部分也需要更新。所以,無論是多線程,多進(jìn)程,異步協(xié)程都可以。雖說每個(gè)設(shè)備都可以用單一進(jìn)程去驅(qū)動,但是多個(gè)設(shè)備接入時(shí),往往需要一個(gè)服務(wù)程序來實(shí)現(xiàn)頻率和資源調(diào)度。以LoRa/Sub-1GHz為例,不同的模塊需要配置不同的頻率載頻,調(diào)制參數(shù)等等,以實(shí)現(xiàn)LoRaWAN的規(guī)范。這種同類模塊使用異步或協(xié)程就可以了。
而異構(gòu)模塊,如NFC/Sub-1GHz/BLE的混搭,我覺得使用多個(gè)單獨(dú)進(jìn)程配合消息隊(duì)列的方式更加合理。當(dāng)然,同類模塊也可以使用這種方式。