首页
常用技术栈
可连接TCP/IP的物联网设备
开发物联网设备时,无论设备是通过WiFi、2G/3G/4G/5G或以太网连接网络,如设备支持TCP/IP,通常采用MQTT作为主要通信协议。
除了主要通信协议,通常物联网设备还需要支持NTP对时,有时还需要使用到Http作为辅助协议。
主要使用的协议如下:
协议名称 | 说明 | 备注 |
---|---|---|
MQTT | MQTT是专门针对物联网开发的轻量级传输协议。 | 通常采用TCP,可实现实时控制。 |
LwM2M | LwM2M是一种轻量级的、标准通用的物联网设备管理协议,可用于快速部署客户端/服务器模式的物联网业务 | 通常采用UDP,常见于NB-IOT模块。
由于UDP的在公网上的老化(公网的NAT转换机制),在公网上不能实现实时控制,只能应用于周期上报的设备。 在专网或者局域网内可实现实时控制。 |
CoAP | CoAP是一种用于受限节点与受限网络的web传输协议,由IETF提出。 | 通常采用UDP,可使用DTLS加密,一般情况下用于在受限环境中替代http。 |
Http/Https | 超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议。 | 通常用于调用后端服务器的api接口。 |
NTP | NTP是用来使计算机时间同步化的一种协议。 |
低成本方案
低成本方案主要是指硬件采用SOC方案并且操作系统采用嵌入式操作系统的方案或者外设方案:
- Air724UG :4G模块,可使用C/C++进行二次开发。
- ESP8266 : WIFI模块。
- ESP32 : WIFI模块,可接以太网PHY实现以太网上网。
- W600 : WIFI模块。
- W800 : WIFI模块。
- CH579 : 自带以太网PHY,可实现以太网上网。
- W5500 :全硬件以太网外设芯片,需配合主控使用。
一般方案
一般方案主要指资源相对充足的方案,一般采用Linux作为内核:
- MT7688 :可采用以太网或者WIFI联网,通过USB可接4G上网模块通过RNDIS上网。
带交流计量功能的设备
单相SOC方案
对于单相计量(即常见的家用电)设备,通常采用SOC方案:
此类SOC通常可以使用内置的模块完成包括计量功能在内的大部分需求,在某些情况下也可开发高精度的直流计量设备。
如需与其它设备进行交互,通常还需要添加通信模块或者使用串口通信。
若使用串口通信,本人常用Modbus RTU作为具体协议,将具体的硬件资源映射为线圈(可读写的位)、输入线圈(只读的位)、保持寄存器(可读写)、输入寄存器(只读)。
单相非SOC方案
若由于需要采用低成本导致计量部分相对于强电非隔离,而设备上又需要输出隔离接口时,通常采用非SOC方案+串口/SPI口隔离,常用芯片方案:
此方案需要另外加一个主控芯片。
三相非SOC方案
若待计量的电路为三相电路,常用芯片方案:
此方案需要另外加一个主控芯片。
注意:截至编辑时,尚未发现三相SOC方案。
带有特殊功能的路由器/WIFI网关
芯片方案:
软件开发方案:
在内核设备树(dts)配置中使能需要使用的标准接口,并在openwrt的menuconfig中选中对应的kmod包后,即可使用Linux用户程序(非内核模块)操作硬件设备。
对于SPI、I2C与UART而言,用户可通过打开/dev目录下的相应字符设备即可使用。
对于GPIO而言,可使用sysfs文件系统目录:/sys/class/gpio目录进行GPIO操作。
常用芯片及模块
常用芯片及核心模块
芯片/模块名称 | 说明 | wiki(若有) |
---|---|---|
RN8211B | 单相计量SOC | RN8211B |
HT502X | 单相计量SOC | HT502X |
Air724UG | 4G模块,进行C语言开发 | Air724UG |
ESP-12F | WIFI透传模块,可支持二次开发,主芯片为ESP8266 | ESP8266 |
ESP-32S | ESP32模块,可支持WIFI、蓝牙、以太网,可采用esp-idf开发 | ESP32 |
TB-01 | W600开发板,WIFI SOC,Cortex-M3内核 | W600 |
TB-08 | W800开发板,WIFI/蓝牙 SOC, XT804内核 | W800 |
CH579 | 以太网、蓝牙、USB SOC,Cortex-M0内核MCU | CH579 |
HLK-7688A | MT7688芯片核心模块,可采用openwrt开发 | MT7688 |
E18-MS1 | CC2530芯片核心模块,可采用contiki开发或者Z-Stack开发 | CC2530 |
Air105 | 廉价大内存mcu,4M flash,640K SRAM,Cortex-M4F | Air105 |
Lichee Zero | 全志V3s开发板,64M DRAM,廉价Linux开发板,V3s芯片可手贴 | V3s Lichee Zero |
注意:此章节可能不包含资料较多,应用极其成熟的芯片系列。
外设芯片及外设模块
名称 | 说明 | 接口 | wiki(若有) |
---|---|---|---|
RN8302B | 三相计量芯片 | SPI | RN8302B |
RN8209C/RN8209D | 单相计量芯片 |
|
RN8209 |
NRF24L01+ | 2.4G无线芯片,具有众多兼容替代(如Si24R1) | SPI+GPIO(中断、CE) | NRF24L01+ |
W5500 | 全硬件栈以太网芯片 | SPI | W5500 |
中景园0.96寸OLED点阵屏 | 分辨率128x64,显示驱动(控制)芯片SSD1306 |
|
SSD1306 中景园0.96寸OLED点阵屏 |
AHT20 | 温湿度传感器 | IIC | AHT20 |
DS1307 | RTC(实时时钟) | IIC | DS1307 |
常用嵌入式操作系统、BootLoader、嵌入式固件及嵌入式软件库
名称 | 说明 | wiki(若有) |
---|---|---|
FreeRTOS | 嵌入式操作系统 | FreeRTOS |
rt-thread | 物联网嵌入式操作系统 | rt-thread |
nuttx | 嵌入式操作系统 | nuttx |
paho.mqtt.embedded-c | MQTT客户端,可移植到各种芯片平台 | paho.mqtt.embedded-c |
openwrt | 操作系统,嵌入式Linux构建工具 | openwrt |
u8g2 | 单色/点阵屏驱动库 | u8g2 |
U-Boot | 通用引导加载器。通常用于加载Linux。 | U-Boot |
Newlib | 嵌入式C运行库(通常配合GCC使用) | Newlib |
常用工具
名称 | 说明 | wiki(若有)/链接地址 |
---|---|---|
easy-rsa | 使用SSL/TLS时,自签证书制作/管理工具 | easy-rsa |
buildroot | 嵌入式Linux构建工具 | buildroot |
debootstrap | Linux系统根文件系统创建工具,可创建Debian系Linux系统根文件系统 | debootstrap |
crosstool-ng | 交叉编译工具链创建工具 | crosstool-ng |
ScreenToGif | 在Windows下录屏制作gif的工具 | https://github.com/NickeManarin/ScreenToGif.git |
Xfel | 全志SOC的FEL工具(可下载固件等) | Xfel |
busybox | unix工具箱,可用于创建体积极小的rootfs | busybox |
IDE环境/开发环境/开发工具
名称 | 说明 | wiki(若有)/链接地址 |
---|---|---|
codeblocks | 免费的C/C++ IDE,可开发多种C/C++程序。本人只要将它用作基于CMake构建的工程的代码编写。 | http://www.codeblocks.org/ |
Microsoft Visual Studio | 微软的开发工具集。本人主要用于开发WIN32程序。本人优先使用codeblocks作为C/C++开发环境,VS占用的空间太大,但有些第三方库在Windows上可能只支持MSVC,故而必须使用VS。 | https://visualstudio.microsoft.com/zh-hans/ |
keil5 | 用于ARM嵌入式芯片的开发。注意:keil5不是免费的。 | https://www.keil.com/ |
IAR | 本人主要使用针对ARM嵌入式芯片的开发。注意:IAR不是免费的。 | https://www.iar.com/ |
QtCreator | 用于创建基于Qt的程序。 | https://www.qt.io/product/development-tools |
MounRiver | 基于Eclipse的嵌入式ARM/RISC-V的集成开发环境。本人主要用于测试WCH的单片机。 | http://www.mounriver.com/ |
RT-Thread Studio | 一站式的 RT-Thread 开发工具,通过简单易用的图形化配置系统以及丰富的软件包和组件资源,让物联网开发变得简单和高效。本人主要用于开发与rt-thread相关设备。 | https://www.rt-thread.org/ |
电子硬件设计(原理图绘制/PCB绘制/其它相关工具)
名称 | 说明 | wiki(若有)/链接地址 |
---|---|---|
立创EDA | 高效的国产PCB设计工具,永久免费。可在线使用。 | https://lceda.cn/ |
KiCad | 跨平台开源电子设计套装。 | https://www.kicad.org/ |
freerouting | 自动布线工具。可配合立创EDA或KiCad使用。本人用于替代立创EDA自带的自动布线。 | https://www.freerouting.app/ |
流程图/框图绘制
名称 | 说明 | wiki(若有)/链接地址 |
---|---|---|
dia | 跨平台开源流程图绘制工具 | http://dia-installer.de/ |
图像处理
名称 | 说明 | wiki(若有)/链接地址 |
---|---|---|
GIMP | 免费开源图像编辑器 | https://www.gimp.org/ |
国际化/本地化
名称 | 说明 | wiki(若有)/链接地址 |
---|---|---|
Poedit | .po编辑工具。可编辑使用 xgettext 生成的翻译文件 | https://poedit.net/ |
压缩/解压缩
名称 | 说明 | wiki(若有)/链接地址 |
---|---|---|
7-zip | 开源免费的压缩/解压缩软件。Windows下有GUI程序,Linux下只有控制台版本。 | http://www.7-zip.org |
虚拟磁盘
名称 | 说明 | wiki(若有)/链接地址 |
---|---|---|
imdisk | Windows下开源虚拟磁盘工具,可方便挂载内存盘(存放临时文件)。 | https://sourceforge.net/projects/imdisk-toolkit |
安装/卸载
名称 | 说明 | wiki(若有)/链接地址 |
---|---|---|
Geek Uninstaller | Windows下程序卸载工具,具有免费的版本。 | https://geekuninstaller.com/ |
小工具(自写/修改/组合)
名称 | 说明 | wiki | 支持平台 |
---|---|---|---|
CC3200_GangGenerator | 生成用于烧录CC3200 SPI Flash的工具 | CC3200_GangGenerator |
|
WMToolHelper | W600烧录工具 | WMToolHelper |
|
WinBleTool | Windows下调试BLE的工具 | WinBleTool |
|
SimpleBLETool | 调试BLE的工具 | SimpleBLETool |
|
cutecom-ng | 基于Qt5的串口工具。个人修改版。 | cutecom-ng | 只要是Qt5支持的桌面平台均支持。 |
OneNETTool | 开发OneNET辅助工具 | OneNETTool |
|
XServerForWSL1 | 利用cygwin中的X服务对WSL提供X服务 | XServerForWSL1 | 支持WSL1的Windows |
linux_binfmt_pe | 使用wine直接执行PE可执行文件的Linux内核模块 | linux_binfmt_pe |
|
常用库
此章节主要对使用的比较多的库做一个整理。
名称 | 官网 | 说明 | Wiki |
---|---|---|---|
wxWidgets | https://www.wxwidgets.org/ | 跨平台GUI库 | wxWidgets |
Qt | https://www.qt.io/ | 跨平台库(包括GUI) | Qt |
工具库(自写/修改)
名称 | 说明 | Wiki(若有) |
---|---|---|
DeployWin | MSYS2与CygWin下编程辅助打包库。一般配合CMake的CPack使用。 | DeployWin |
常用镜像站
在找各种源码资源时,经常遇到国外网站下载较慢的情况下,此时通常需要更换镜像站。
例如:
- ubuntu系统的软件包(包括使用deboostrap的镜像源)
- python软件包
- gnu软件源码包
- linux源码
地址 | 说明 |
---|---|
http://mirrors.ustc.edu.cn/ | 中国科学技术大学镜像站 |
https://mirrors.tuna.tsinghua.edu.cn/ | 清华大学镜像站 |
http://mirrors.163.com/ | 网易开源镜像站 |
http://mirrors.aliyun.com/ | 阿里开源镜像站 |
静态文档网站
一些静态的网页文档,如doxygen生成的帮助文档与docsify制作的静态说明文档。
类型 | URL | 备注 |
---|---|---|
静态文档仓库 | https://heyahong.github.io/#/ | 采用github pages托管,源代码仓库:https://github.com/HEYAHONG/HEYAHONG.github.io.git |
网站 | http://docs.hyhsystem.cn | 采用nginx服务器,运行于云服务器 |