首页:修订间差异
imported>HEYAHONG |
|||
(未显示2个用户的43个中间版本) | |||
第1行: | 第1行: | ||
== 常用技术栈 == | |||
=== 可连接TCP/IP的物联网设备 === | |||
开发物联网设备时,无论设备是通过WiFi、2G/3G/4G/5G或以太网连接网络,如设备支持TCP/IP,通常采用[[MQTT]]作为主要通信协议。 | |||
除了主要通信协议,通常物联网设备还需要支持NTP对时,有时还需要使用到Http作为辅助协议。<br> | |||
=== 带交流计量功能的设备 === | |||
==== 单相SOC方案 ==== | |||
对于单相计量(即常见的家用电)设备,通常采用SOC方案: | |||
* [[RN8211B]] | |||
* [[HT502X]] | |||
此类SOC通常可以使用内置的模块完成包括计量功能在内的大部分需求,在某些情况下也可开发高精度的直流计量设备。<br> | |||
如需与其它设备进行交互,通常还需要添加通信模块或者使用串口通信。<br> | |||
若使用串口通信,本人常用Modbus RTU作为具体协议,将具体的硬件资源映射为线圈(可读写的位)、输入线圈(只读的位)、保持寄存器(可读写)、输入寄存器(只读)。<br> | |||
* [[SimpleModbusRTUPacket]] | |||
==== 单相非SOC方案 ==== | |||
若由于需要采用低成本导致计量部分相对于强电非隔离,而设备上又需要输出隔离接口时,通常采用非SOC方案+串口/SPI口隔离,常用芯片方案: | |||
* [[RN8209]] | |||
此方案需要另外加一个主控芯片。 | |||
==== 三相非SOC方案 ==== | |||
若待计量的电路为三相电路,常用芯片方案: | |||
* [[RN8302B]] | |||
此方案需要另外加一个主控芯片。<br> | |||
注意:截至编辑时,尚未发现三相SOC方案。 | |||
=== 带有特殊功能的路由器/WIFI网关 === | |||
芯片方案: | |||
* [[MT7688]] | |||
软件开发方案: | |||
* [[ openwrt ]] | |||
在内核设备树(dts)配置中使能需要使用的标准接口,并在openwrt的menuconfig中选中对应的kmod包后,即可使用Linux用户程序(非内核模块)操作硬件设备。<br> | |||
对于SPI、I2C与UART而言,用户可通过打开/dev目录下的相应字符设备即可使用。<br> | |||
对于GPIO而言,可使用sysfs文件系统目录:/sys/class/gpio目录进行GPIO操作。<br> | |||
== 常用芯片及模块 == | == 常用芯片及模块 == | ||
=== | === 常用芯片及核心模块 === | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|+ | |+ 常用芯片及核心模块 | ||
|- | |- | ||
! 芯片/模块名称 !! 说明 !! wiki(若有) | ! 芯片/模块名称 !! 说明 !! wiki(若有) | ||
|- | |- | ||
| RN8211B || 单相计量SOC || [[RN8211B]] | | RN8211B || 单相计量SOC || [[RN8211B]] | ||
|- | |||
| HT502X || 单相计量SOC || [[HT502X]] | |||
|- | |- | ||
| Air724UG || 4G模块,进行C语言开发 || [[Air724UG]] | | Air724UG || 4G模块,进行C语言开发 || [[Air724UG]] | ||
第49行: | 第83行: | ||
| FreeRTOS || 嵌入式操作系统 || [[FreeRTOS]] | | FreeRTOS || 嵌入式操作系统 || [[FreeRTOS]] | ||
|- | |- | ||
| paho.mqtt.embedded-c || MQTT客户端,可移植到各种芯片平台 || [[paho.mqtt.embedded-c]] | | rt-thread || 物联网嵌入式操作系统 || [[ rt-thread ]] | ||
|- | |||
|nuttx||嵌入式操作系统||[[nuttx]] | |||
|- | |||
|paho.mqtt.embedded-c|| MQTT客户端,可移植到各种芯片平台||[[paho.mqtt.embedded-c]] | |||
|- | |- | ||
| openwrt || 操作系统,嵌入式Linux构建工具 || [[ openwrt ]] | |openwrt||操作系统,嵌入式Linux构建工具||[[ openwrt | openwrt]] | ||
|} | |} | ||
== 常用工具 == | |||
==常用工具== | |||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|+ 常用工具 | |+常用工具 | ||
|- | |- | ||
! 名称 !! 说明 !! wiki(若有) | !名称!!说明!!wiki(若有)/链接地址 | ||
|- | |- | ||
| easy-rsa || 使用SSL/TLS时,自签证书制作/管理工具 || [[easy-rsa]] | |easy-rsa||使用SSL/TLS时,自签证书制作/管理工具||[[easy-rsa]] | ||
|- | |- | ||
| buildroot || 嵌入式Linux构建工具 || [[buildroot]] | |buildroot||嵌入式Linux构建工具||[[buildroot]] | ||
|- | |- | ||
| debootstrap || Linux系统根文件系统创建工具,可创建Debian系Linux系统根文件系统 || [[debootstrap]] | |debootstrap||Linux系统根文件系统创建工具,可创建Debian系Linux系统根文件系统||[[debootstrap]] | ||
|- | |- | ||
| crosstool-ng || 交叉编译工具链创建工具 || [[crosstool-ng]] | |crosstool-ng||交叉编译工具链创建工具||[[crosstool-ng]] | ||
|- | |- | ||
| | |ScreenToGif | ||
|在Windows下录屏制作gif的工具 | |||
|https://github.com/NickeManarin/ScreenToGif.git | |||
|} | |} | ||
== | ===IDE环境/开发环境/开发工具=== | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|+ | |+ | ||
!名称 | |||
!说明 | |||
!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的集成开发环境。本人主要用于测试[https://www.wch.cn/ WCH]的单片机。 | |||
|http://www.mounriver.com/ | |||
|} | |} | ||
=== | ===小工具(自写/修改)=== | ||
{| class="wikitable | {| class="wikitable" | ||
|+ | |+ | ||
!名称 | |||
!说明 | |||
!wiki | |||
!支持平台 | |||
|- | |- | ||
|CC3200_GangGenerator | |||
|生成用于烧录CC3200 SPI Flash的工具 | |||
|[[CC3200_GangGenerator]] | |||
| | |||
*Windows | |||
|- | |- | ||
| | |WMToolHelper | ||
| | | W600烧录工具 | ||
|[[WMToolHelper]] | |||
| | |||
*Windows | |||
*Linux (ubuntu 20.04) | |||
|- | |- | ||
|WinBleTool | |||
| Windows下调试BLE的工具 | |||
|[[WinBleTool]] | |||
| | |||
*Windows 10(及以上) | |||
|- | |- | ||
| | |SimpleBLETool | ||
|调试BLE的工具 | |||
| [[SimpleBLETool]] | |||
| | |||
*Windows 10+ | |||
*Linux(ubuntu 20.04+) | |||
|- | |- | ||
| | |cutecom-ng | ||
|基于Qt5的串口工具。个人修改版。 | |||
|[[cutecom-ng]] | |||
|只要是Qt5支持的桌面平台均支持。 | |||
|} | |} | ||
== | == 常用库 == | ||
{| class="wikitable | 此章节主要对使用的比较多的库做一个整理。 | ||
|+ | {| class="wikitable" | ||
|+ | |||
!名称 | |||
!官网 | |||
!说明 | |||
!Wiki | |||
|- | |- | ||
|wxWidgets | |||
|https://www.wxwidgets.org/ | |||
|跨平台GUI库 | |||
|[[wxWidgets]] | |||
|- | |- | ||
| | |Qt | ||
|https://www.qt.io/ | |||
|跨平台库(包括GUI) | |||
|[[Qt]] | |||
|} | |||
==常用镜像站== | |||
再找各种源码资源时,经常遇到国外网站下载较慢的情况下,此时通常需要更换镜像站。 | |||
例如: | |||
*ubuntu系统的软件包(包括使用deboostrap的镜像源) | |||
*python软件包 | |||
*gnu软件源码包 | |||
*linux源码 | |||
{| class="wikitable" | |||
|+ | |||
!地址 | |||
!说明 | |||
|- | |- | ||
| | |http://mirrors.ustc.edu.cn/ | ||
|中国科学技术大学镜像站 | |||
|- | |- | ||
|https://mirrors.tuna.tsinghua.edu.cn/ | |||
|清华大学镜像站 | |||
|- | |- | ||
| | |http://mirrors.163.com/ | ||
|网易开源镜像站 | |||
|- | |- | ||
|http://mirrors.aliyun.com/ | |||
|阿里开源镜像站 | |||
|} | |} | ||
==相关链接== | |||
*[[测试资源]] | |||
*[[方案发现与探索]] | |||
*[[杂项笔记与测试代码]] | |||
*[[常见问题]] |
2022年12月24日 (六) 05:42的版本
常用技术栈
可连接TCP/IP的物联网设备
开发物联网设备时,无论设备是通过WiFi、2G/3G/4G/5G或以太网连接网络,如设备支持TCP/IP,通常采用MQTT作为主要通信协议。
除了主要通信协议,通常物联网设备还需要支持NTP对时,有时还需要使用到Http作为辅助协议。
带交流计量功能的设备
单相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 |
注意:此章节可能不包含资料较多,应用极其成熟的芯片系列,如STM32
外设芯片及外设模块
名称 | 说明 | 接口 | wiki(若有) |
---|---|---|---|
RN8302B | 三相计量芯片 | SPI | RN8302B |
RN8209C/RN8209D | 单相计量芯片 | UART/SPI | RN8209 |
NRF24L01+ | 2.4G无线芯片,具有众多兼容替代(如Si24R1) | SPI+GPIO(中断、CE) | NRF24L01+ |
常用软件
本章节不包含工具类软件(如集成开发环境、编译工具链等)。
名称 | 说明 | wiki(若有) |
---|---|---|
FreeRTOS | 嵌入式操作系统 | FreeRTOS |
rt-thread | 物联网嵌入式操作系统 | rt-thread |
nuttx | 嵌入式操作系统 | nuttx |
paho.mqtt.embedded-c | MQTT客户端,可移植到各种芯片平台 | paho.mqtt.embedded-c |
openwrt | 操作系统,嵌入式Linux构建工具 | openwrt |
常用工具
名称 | 说明 | 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 |
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/ |
小工具(自写/修改)
名称 | 说明 | wiki | 支持平台 |
---|---|---|---|
CC3200_GangGenerator | 生成用于烧录CC3200 SPI Flash的工具 | CC3200_GangGenerator |
|
WMToolHelper | W600烧录工具 | WMToolHelper |
|
WinBleTool | Windows下调试BLE的工具 | WinBleTool |
|
SimpleBLETool | 调试BLE的工具 | SimpleBLETool |
|
cutecom-ng | 基于Qt5的串口工具。个人修改版。 | cutecom-ng | 只要是Qt5支持的桌面平台均支持。 |
常用库
此章节主要对使用的比较多的库做一个整理。
名称 | 官网 | 说明 | Wiki |
---|---|---|---|
wxWidgets | https://www.wxwidgets.org/ | 跨平台GUI库 | wxWidgets |
Qt | https://www.qt.io/ | 跨平台库(包括GUI) | Qt |
常用镜像站
再找各种源码资源时,经常遇到国外网站下载较慢的情况下,此时通常需要更换镜像站。
例如:
- ubuntu系统的软件包(包括使用deboostrap的镜像源)
- python软件包
- gnu软件源码包
- linux源码
地址 | 说明 |
---|---|
http://mirrors.ustc.edu.cn/ | 中国科学技术大学镜像站 |
https://mirrors.tuna.tsinghua.edu.cn/ | 清华大学镜像站 |
http://mirrors.163.com/ | 网易开源镜像站 |
http://mirrors.aliyun.com/ | 阿里开源镜像站 |