本设计是在Linux操作系统中实现一个灵活的物联网网关,主要依托于标准化的USB/ACM,USB/ECM传输接口,实现动态加载、动态配置、多路并行的网关设计。
网关与USB
现在物联网设计中网关的前端模块与Linux主机之间往往采用UART/SPI方式连接,但是这两种方式都不如USB能够实现,热插拔,即插即用,动态加载和配置,以及标准化设计。USB也可以Mini-PCI-Express的形式出现。
以LoRa/Sub-1GHz/2.4GHz为例,同时接入多路收发器,除了最常见的TDM,还可以按照FDM/CDM/SDM等复用方式实现多路频谱共享。可以最低廉的价格实现专业的网关架构。除此之外,也可以实现混合型网关,即将RFID/NFC/IEEE802.15.4/Sub-1GHz/LoRa/WiFi/BLE等在同一网关中实施。由于USB是自我描述的,可以用于自动识别和配置。
网关架构
虽说USB理论上可以扩展127个设备,由于BLE/WiFi日益集成,所以物联网能够接入的设备数量,以LoRa为例,8个就差不多了。多了,电源部分也需要更新。所以,无论是多线程,多进程,异步协程都可以。虽说每个设备都可以用单一进程去驱动,但是多个设备接入时,往往需要一个服务程序来实现频率和资源调度。以LoRa/Sub-1GHz为例,不同的模块需要配置不同的频率载频,调制参数等等,以实现LoRaWAN的规范。这种同类模块使用异步或协程就可以了。
而异构模块,如NFC/Sub-1GHz/BLE的混搭,我觉得使用多个单独进程配合消息队列的方式更加合理。当然,同类模块也可以使用这种方式。