首页:修订间差异
imported>HEYAHONG  | 
				|||
| (未显示2个用户的155个中间版本) | |||
| 第1行: | 第1行: | ||
== 常用项目 ==  | |||
=== 嵌入式项目 ===  | |||
{| class="wikitable sortable"  | |||
!名称  | |||
!简介  | |||
!Wiki(若有)  | |||
!标签  | |||
|-  | |||
|ExtBoard-001       | |||
|扩展板,用于扩展一个可编程通道(RS485)。  | |||
主要采用以下芯片:  | |||
* CH334R:USB Hub。  | |||
* [[Air32F103CCT6]]:[[DAPLink]]主控芯片、Core主控芯片。  | |||
* MAX3485:3.3V电源驱动的RS485收发芯片。  | |||
|[[ExtBoard-001]]  | |||
|  | |||
* [[USB]]  | |||
* [[DAPLink]]  | |||
* [[Air32F103]]  | |||
|-  | |||
|CoreBoard-001  | |||
|核心板。  | |||
主要采用以下芯片/模块:  | |||
* HLK-7688A:[[MT7688AN]]核心板。  | |||
* DS1307:实时时钟  | |||
|[[CoreBoard-001]]  | |||
|  | |||
* [[USB]]  | |||
* [[MT7688]]  | |||
|-  | |||
|ExtBoard-002  | |||
|扩展板。使用USB提供4G联网功能。  | |||
主要采用以下芯片/模块:  | |||
* [[Air780EG]]  | |||
|[[ExtBoad-002]]  | |||
|  | |||
* [[USB]]  | |||
* [[Air780EG]]  | |||
|-  | |||
|ExtBoard-003  | |||
|扩展板。USB CAN适配器,复刻[[candleLight]]。  | |||
|[[ExtBoard-003]]  | |||
|  | |||
* [[USB]]  | |||
* [[CAN]]  | |||
|-  | |||
|ExtModule-001  | |||
|模块电路,用于验证廉价PY32单片机  | |||
|[[ExtModule-001]]  | |||
|  | |||
* PY32  | |||
* [[Modbus]]  | |||
|-  | |||
|ExtModule-002  | |||
|模块电路,用于验证ST17H66 蓝牙SOC  | |||
|[[ExtModule-002]]  | |||
|  | |||
* [[ST17H66]]  | |||
|-  | |||
|ExtModule-003  | |||
|模块电路,用于验证XL2409 廉价2.4G无线SOC  | |||
|[[ExtModule-003]]  | |||
|  | |||
* [[XL2409]]  | |||
|-  | |||
|ExtModule-004  | |||
|模块电路,用于验证CH32V208 SOC.  | |||
|[[ExtModule-004]]  | |||
|  | |||
* [[CH32V208]]  | |||
|}  | |||
== 常用技术栈 ==  | |||
=== 使用低成本无线连接的设备 ===  | |||
通常情况下,除了直接接入网络,通常还可以使用网关代为接入网络,此时大致可分为网关设备(例如ZigBee网络的协调器)与子设备(例如ZigBee的路由器与终端设备)。  | |||
网关设备通常用于协议的转换,通常使用性能相对强大的设备担任。  | |||
子设备一般用于实际的应用,对设备的性能的要求相对较低。  | |||
使用网关设备+子设备的模式优点如下:  | |||
* 在节点较多时可节约成本。  | |||
* 某些场所无法直接接入网络。  | |||
网关设备与子设备之间的连接可以使用有线连接(如[[CAN]]、[[Modbus|Modbus RTU]]等),也可以使用无线连接。  | |||
使用无线连接时,主要使用以下方案:  | |||
* [[NRF24L01+|NRF24L01]]及其兼容方案:实现简单,由用户自行定义协议,网关设备与子设备均需要自行开发。  | |||
* [[XL2409]]无线方案:其操作类似[[NRF24L01+|NRF24L01]]及其兼容方案,只是XL2409是一个SOC芯片,可编程。  | |||
* [[BLE]]:低功耗蓝牙,用户不能自定义协议,只能按照蓝牙定义的协议去开发,对于硬件而言,一般主要开发外围外设,中心设备可使用已有的硬件方案,调试使用可使用PC、手机调试。  | |||
==== NRF24L01及其兼容方案 ====  | |||
采用[[NRF24L01+]]及兼容方案,直接收发数据,网络协议栈由用户自行实现。  | |||
==== [[XL2409]]无线方案 ====  | |||
其操作类似[[NRF24L01+|NRF24L01]]及其兼容方案,只是XL2409是一个SOC芯片,可编程。直接收发数据,网络协议栈由用户自行实现。  | |||
==== [[BLE]] ====  | |||
很多SOC方案支持开发中心设备,也支持开发外围设备,但一般只开发外围设备(通常用于子设备)的硬件(调试使用PC、手机),中心设备的硬件可使用支持BLE的现成方案。  | |||
主要使用的BLE方案如下:  | |||
* [[ST17H66]]: 低成本[[BLE]] SOC。  | |||
=== 可连接TCP/IP的物联网设备 ===  | |||
开发物联网设备时,无论设备是通过WiFi、2G/3G/4G/5G或以太网连接网络,如设备支持TCP/IP,通常采用[[MQTT]]作为主要通信协议。  | |||
除了主要通信协议,通常物联网设备还需要支持NTP对时,有时还需要使用到Http作为辅助协议。  | |||
主要使用的协议如下:  | |||
{| class="wikitable"  | |||
!协议名称  | |||
!说明  | |||
!备注  | |||
|-  | |||
|[[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是用来使计算机时间同步化的一种协议。  | |||
|  | |||
|-  | |||
|[[CSA Matter|Matter]]  | |||
|Matter是一个统一的、开源的应用层连接标准,旨在使开发人员和设备制造商能够连接和构建可靠的、安全的生态系统,并增加智能家具设备之间的兼容性。  | |||
|按照其架构,可使用TCP/UDP,基于[[IPV6]].  | |||
|}  | |||
==== 低成本方案 ====  | |||
低成本方案主要是指硬件采用SOC方案并且操作系统采用嵌入式操作系统的方案或者外设方案:  | |||
* [[Air724UG]] :4G模块,可使用C/C++进行二次开发。  | |||
* [[Air780E]]:4G模块,EC618平台,可使用C/C++进行二次开发,较Air724UG廉价。  | |||
* [[ESP8266]] : WIFI模块。  | |||
* [[ESP32]] : WIFI模块,可接以太网PHY实现以太网上网。  | |||
* [[W600]] : WIFI模块。  | |||
* [[W800]] : WIFI模块。  | |||
* [[CH579]] : 自带以太网PHY,可实现以太网上网。  | |||
*[[W5500]] :全硬件以太网外设芯片,需配合主控使用。  | |||
==== 一般方案 ====  | |||
一般方案主要指资源相对充足的方案,一般采用Linux作为内核:  | |||
* [[MT7688]] :可采用以太网或者WIFI联网,通过USB可接4G上网模块通过RNDIS上网。  | |||
=== 带交流计量功能的设备 ===  | |||
==== 单相SOC方案 ====  | |||
对于单相计量(即常见的家用电)设备,通常采用SOC方案:  | |||
* [[RN8211B]]  | |||
* [[HT502X]]  | |||
此类SOC通常可以使用内置的模块完成包括计量功能在内的大部分需求,在某些情况下也可开发高精度的直流计量设备。<br>  | |||
如需与其它设备进行交互,通常还需要添加通信模块或者使用串口通信。<br>  | |||
若使用串口通信,本人常用[[Modbus]] RTU作为具体协议,将具体的硬件资源映射为线圈(可读写的位)、输入线圈(只读的位)、保持寄存器(可读写)、输入寄存器(只读)。<br>  | |||
* [[SimpleModbusRTUPacket]]  | |||
==== 单相非SOC方案 ====  | |||
若由于需要采用低成本导致计量部分相对于强电非隔离,而设备上又需要输出隔离接口时,通常采用非SOC方案+串口/SPI口隔离,常用芯片方案:  | |||
* [[RN8209]]  | |||
此方案需要另外加一个主控芯片。  | |||
==== 三相非SOC方案 ====  | |||
若待计量的电路为三相电路,常用芯片方案:  | |||
* [[RN8302B]]  | |||
此方案需要另外加一个主控芯片。<br>  | |||
注意:截至编辑时,尚未发现三相SOC方案。  | |||
=== 带有特殊功能的路由器/WIFI网关 ===  | |||
芯片方案:  | |||
* [[MT7688]]  | |||
软件开发方案:  | |||
* [[ openwrt ]]  | |||
在内核[[Devicetree|设备树(dts)]]配置中使能需要使用的标准接口,并在openwrt的[[Kconfig|menuconfig]]中选中对应的kmod包后,即可使用[[Linux]]用户程序(非内核模块)操作硬件设备。<br>  | |||
对于SPI、I2C与UART而言,用户可通过打开/dev目录下的相应字符设备即可使用。<br>  | |||
对于GPIO而言,可使用sysfs文件系统目录:/sys/class/gpio目录进行GPIO操作。  | |||
=== 基于[[USB]]的外设扩展 ===  | |||
对于使用Linux内核的设备的外设扩展,本人较为推崇使用[[USB]]作为外设总线,其优点如下:  | |||
* 支持热插拔与子设备枚举,无需在设备树中配置所挂接的子设备。  | |||
* 可使用hub扩展较多接口。  | |||
* 支持[[USB]]的转换芯片较多。  | |||
一般来讲,对于少量控制数据的传输,[[USB]] 2.0的传输速度就足够了。  | |||
==== [[USB]] HUB ====  | |||
{| class="wikitable"  | |||
!芯片系列  | |||
!说明  | |||
!官网(若有)  | |||
|-  | |||
|CH334/CH335  | |||
|4 口USB 2.0 USB Hub  | |||
|https://www.wch.cn/products/CH334.html  | |||
|-  | |||
|CH338  | |||
|7口USB 2.0 USB Hub  | |||
|https://www.wch.cn/products/CH338.html  | |||
|-  | |||
|FE1.1s  | |||
|4 口USB 2.0 USB Hub  | |||
|  | |||
|-  | |||
|HS8836A  | |||
|4 口USB 2.0 USB Hub  | |||
|  | |||
|}  | |||
==== [[USB]] 转换芯片 ====  | |||
{| class="wikitable"  | |||
!芯片系列  | |||
!说明  | |||
!官网(若有)  | |||
|-  | |||
|CH340  | |||
|USB转串口/打印口  | |||
|https://www.wch.cn/products/CH340.html  | |||
|}  | |||
==== [[USB]] 上位机软件开发 ====  | |||
* 对于标准外设,可按照标准外设的使用方法,如[[USB]]转串口按照串口的方式使用。  | |||
* 对于[[USB]]原生的应用(直接通过端点发送接收数据),可使用[https://libusb.info/ libusb]开发。  | |||
* 对于基于[[USB]]的HID设备,若未被其它内核驱动使用,可使用[https://github.com/signal11/hidapi hidapi]开发。  | |||
==== [[USB]] 嵌入式开发 ====  | |||
若未具体说明,本章节中的[[USB]]嵌入式开发指Device端的嵌入式开发,即[[USB]]外设开发。  | |||
除了各个芯片厂商提供的[[USB]]栈,还可使用以下USB栈用于USB外设开发:  | |||
{| class="wikitable"  | |||
!USB库  | |||
!说明  | |||
!官网(若有)  | |||
|-  | |||
!tinyusb  | |||
!开源、跨平台的USB HOST/DEVICE栈  | |||
!https://www.tinyusb.org/  | |||
|-  | |||
!CherryUSB  | |||
!小而美的、可移植性高的、用于嵌入式系统的 USB 主从协议栈  | |||
!https://cherryusb.readthedocs.io/  | |||
|}  | |||
=== 电子线连接器 ===  | |||
很多时候一个产品可由多个PCB组成,而PCB之间除了直接焊线,还可以由电子线连接器(包括插头、插座)连接。  | |||
{| class="wikitable"  | |||
|+常用电子线连接器  | |||
!引脚间距(mm)  | |||
!类型  | |||
!说明  | |||
|-  | |||
|1.0  | |||
|  | |||
* SH  | |||
|  | |||
|-  | |||
|1.25  | |||
|  | |||
* GH  | |||
|  | |||
|-  | |||
|1.50  | |||
|  | |||
* ZH  | |||
|  | |||
|-  | |||
|2.00  | |||
|  | |||
* PH  | |||
* HY  | |||
|  | |||
|-  | |||
|2.50/2.54  | |||
|  | |||
* EH  | |||
* XH  | |||
* SM  | |||
|  | |||
|-  | |||
|3.96  | |||
|  | |||
* VH  | |||
|  | |||
|}  | |||
注意:  | |||
# 以上所指的类型可能只是实际连接器的型号的一部分,一般用于搜索相应器件。如在淘宝上搜索'''PH 连接器''' 即可获取类型为PH的连接器。  | |||
# 同一个引脚间距可能有多个类型,这些不同的类型一般有其它差异(如材料、结构等)。  | |||
# 如需某个类型的双排连接器,可在类型中添加D(仅适用于部分类型),如需要类型为PH的连接器,则搜索'''PHD 连接器'''。  | |||
=== 外壳方案 ===  | |||
==== 可采用导轨安装的外壳方案 ====  | |||
对于电气控制柜、仪表柜、配电箱等,安装导轨是一个极其常见的配件。  | |||
常用的安装导轨方案如下:  | |||
* DIN TS35:35×7.5 安装导轨,宽度35mm,深度7.5mm,材质形式为钢、铝、铜等,表现形式为横条状金属片  | |||
若未特殊说明,导轨均指DIN TS35安装导轨。  | |||
对于带计量的产品而言,除了设计成插座样式,还可以设计成导轨安装并安放在配电箱里。  | |||
对于需要安装至导轨的产品而言,主要有以下方案:  | |||
* 直接使用可用于导轨安装的外壳。  | |||
* 采用导轨安装卡扣,卡扣上通常有螺丝孔位,可通过螺丝安装产品。  | |||
==== 廉价铝壳外壳方案 ====  | |||
作为物联网产品(尤其是具有RTU/DTU角色的物联网产品),通常需要一个外壳。一般情况下,可使用铁壳或者铝壳作为外壳。  | |||
为减小成本,本人一般采用成品铝壳作为外壳。  | |||
注意:本段落中的铝壳主要指主要外形为长方体,两侧或者顶部具有可拆卸的盖子的壳体,并不泛指所有采用铝作为主要材料的壳体。  | |||
一般情况下,通常需要给铝壳开孔以引出接口,常用方案如下:  | |||
* 正面开孔,一般通过厂家定制。仅试样的情况下,价格一般相对较高。  | |||
* 侧盖开孔(一面或两面),一般通过厂家定制。仅试样的情况下,价格一般相对较高。  | |||
* 采用PCB作为侧盖(一般使用黑色的壳体配合黑色PCB),使用PCB制造开孔。仅试样的情况下,价格相对便宜。  | |||
* 一侧不要侧盖。适用于直接引出导线的产品,一般配合灌胶工艺。一般直接用于量产产品。  | |||
如需使用导轨安装,可使用导轨安装卡扣固定铝壳。  | |||
===== 常用尺寸1 =====  | |||
{| class="wikitable"  | |||
|+铝壳参数  | |||
!长  | |||
!宽  | |||
!高  | |||
!PCB块数  | |||
!PCB最大厚度  | |||
!PCB最大宽度  | |||
!PCB最大长度  | |||
|-  | |||
|100mm  | |||
|66mm  | |||
|27mm  | |||
|2(一块顶部PCB板,一块底部PCB板)  | |||
|2mm  | |||
|60.3mm(不能小太多)  | |||
|100mm(取决于铝壳长度,一般可定制)  | |||
|}  | |||
[[文件:ALUMINUM SHELL 66x27x100.png|居中|有框]]  | |||
==== 接线盒(家庭) ====  | |||
此处所指接线盒主要指家庭中用于开关/插座的接线盒,并不指广义接线盒。  | |||
接线盒主要由底盒与面板组成。  | |||
其中底盒的种类多种多样,根据可分为明装与暗装,一般底盒均为提前安装好的,不可简单增加与减少。  | |||
面板一般是嵌入式开发中常用的壳体,只要保证安装孔距正确,即可安装在提前安装的底盒上。  | |||
接线盒可根据面板尺寸进行分类,主要有以下型号:  | |||
* 86型  | |||
* 118型  | |||
* 120型  | |||
采用接线盒进行嵌入式开发主要开发以下设备(与传统开关、传统插座有一定相似之处):  | |||
* 智能家居控制面板:可进行联网操作,控制智能家居设备。可显示一些信息(如时间、天气、场景等信息)。可连接到其它智能设备(如智能音箱)  | |||
* 智能家居开关:功能与传统开关类似,可通过无线(如BLE、Zigbee等)的方式连接到智能设备(如智能音箱、智能家居控制面板等)。  | |||
* 智能家居插座:功能与传统插座类似,可远程控制、数据采集(电量、电压、电流等)。可通过无线(如BLE、Zigbee、WiFi等)的方式连接到智能设备(如智能音箱、智能家居控制面板等)。  | |||
===== 86型接线盒 =====  | |||
86型接线盒作为较常用的接线盒,俗称86盒,其面板尺寸86mmX86mm。  | |||
许多厂商也提供采用86盒的开发板,如[https://wiki.sipeed.com/hardware/zh/lichee/RV/86_panel.html Sipeed Lichee RV 86 Panel]、[http://www.smartpanle.com/product-item-24.html Model 3C 86盒3.95寸开发板]。  | |||
== 常用芯片及模块 ==  | == 常用芯片及模块 ==  | ||
===   | === 常用芯片及核心模块 ===  | ||
{| 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]]  | ||
|-  | |||
|Air780E  | |||
|4G模块,EC618平台,可使用C/C++进行二次开发,较Air724UG廉价  | |||
|[[Air780E]]  | |||
|-  | |-  | ||
| ESP-12F || WIFI透传模块,可支持二次开发,主芯片为ESP8266 || [[ESP8266]]  | | ESP-12F || WIFI透传模块,可支持二次开发,主芯片为ESP8266 || [[ESP8266]]  | ||
| 第23行: | 第417行: | ||
|-  | |-  | ||
| E18-MS1|| CC2530芯片核心模块,可采用contiki开发或者Z-Stack开发 || [[CC2530]]  | | E18-MS1|| CC2530芯片核心模块,可采用contiki开发或者Z-Stack开发 || [[CC2530]]  | ||
|-  | |||
|Air105  | |||
|廉价大内存mcu,4M flash,640K SRAM,Cortex-M4F  | |||
|[[Air105]]  | |||
|-  | |||
|Lichee Zero  | |||
|全志V3s开发板,64M DRAM,廉价Linux开发板,V3s芯片可手贴  | |||
|[[V3s]]   [https://wiki.sipeed.com/hardware/zh/lichee/Zero/Zero.html Lichee Zero]  | |||
|-  | |||
|Air32F103  | |||
|96K RAM,兼容STM32F103  | |||
|[[Air32F103]] http://air32.cn  | |||
|-  | |||
|ST17H66  | |||
|64K RAM,256K Flash,廉价蓝牙SOC  | |||
|[[ST17H66]]  | |||
|}  | |}  | ||
注意:此章节可能不包含资料较多,应用极其成熟的芯片系列。  | |||
注意:  | |||
=== 外设芯片及外设模块 ===  | === 外设芯片及外设模块 ===  | ||
{| class="wikitable sortable"  | {| class="wikitable sortable"  | ||
| 第35行: | 第443行: | ||
| RN8302B || 三相计量芯片 || SPI || [[RN8302B]]  | | RN8302B || 三相计量芯片 || SPI || [[RN8302B]]  | ||
|-  | |-  | ||
| RN8209C/RN8209D || 单相计量芯片 || UART  | | RN8209C/RN8209D || 单相计量芯片 ||  | ||
* UART  | |||
* SPI  | |||
| [[RN8209]]  | |||
|-  | |-  | ||
| NRF24L01+ || 2.4G无线芯片,具有众多兼容替代(如Si24R1) || SPI+GPIO(中断、CE) || [[NRF24L01+]]  | | NRF24L01+ || 2.4G无线芯片,具有众多兼容替代(如Si24R1) || SPI+GPIO(中断、CE) || [[NRF24L01+]]  | ||
|-  | |||
|W5500  | |||
|全硬件栈以太网芯片  | |||
|SPI  | |||
|[[W5500]]  | |||
|-  | |||
|中景园0.96寸OLED点阵屏  | |||
|分辨率128x64,显示驱动(控制)芯片SSD1306  | |||
|  | |||
* IIC  | |||
* SPI+GPIO(DC、RES)  | |||
|[[SSD1306]] [[中景园0.96寸OLED点阵屏]]  | |||
|-  | |||
|AHT20  | |||
|温湿度传感器  | |||
|IIC  | |||
|[[AHT20]]  | |||
|-  | |||
|DS1307  | |||
|RTC(实时时钟)  | |||
|IIC  | |||
|[[DS1307]]  | |||
|}  | |}  | ||
==   | == 常用嵌入式操作系统、BootLoader、嵌入式固件及嵌入式软件库 ==  | ||
{| class="wikitable sortable"  | {| class="wikitable sortable"  | ||
|+    | |+    | ||
| 第49行: | 第482行: | ||
| 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]]  | |||
|-  | |||
|u8g2  | |||
|单色/点阵屏驱动库  | |||
|[[u8g2]]  | |||
|-  | |||
|U-Boot  | |||
|通用引导加载器。通常用于加载[[Linux]]。  | |||
|[[U-Boot]]  | |||
|-  | |||
|Newlib  | |||
|嵌入式C运行库(通常配合GCC使用)  | |||
|[[Newlib]]  | |||
|-  | |-  | ||
|   | |printf  | ||
|printf, sprintf and (v)snprintf 实现  | |||
|[[printf]]  | |||
|}  | |}  | ||
== 常用工具 ==  | |||
==常用工具==  | |||
{| class="wikitable sortable"  | {| class="wikitable sortable"  | ||
|+ 常用工具  | |+常用工具  | ||
|-  | |||
!名称!!说明!!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环境/开发环境/开发工具===  | |||
{| 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/  | |||
|-  | |||
|RT-Thread Studio  | |||
|一站式的 RT-Thread 开发工具,通过简单易用的图形化配置系统以及丰富的软件包和组件资源,让物联网开发变得简单和高效。本人主要用于开发与rt-thread相关设备。  | |||
|https://www.rt-thread.org/  | |||
|}  | |||
=== 电子硬件设计(原理图绘制/PCB绘制/其它相关工具) ===  | |||
{| class="wikitable"  | |||
|+  | |||
!名称  | |||
!说明  | |||
!wiki(若有)/链接地址  | |||
|-  | |||
|立创EDA  | |||
|高效的国产PCB设计工具,永久免费。可在线使用。  | |||
|https://lceda.cn/  | |||
|-  | |||
|KiCad  | |||
|跨平台开源电子设计套装。  | |||
|https://www.kicad.org/  | |||
|-  | |||
|freerouting  | |||
|自动布线工具。可配合立创EDA或KiCad使用。本人用于替代立创EDA自带的自动布线。  | |||
|https://www.freerouting.app/  | |||
https://github.com/freerouting/freerouting.git  | |||
|}  | |||
=== 测试工具 ===  | |||
{| class="wikitable"  | |||
!名称  | |||
!说明  | |||
!wiki(若有)/链接地址  | |||
|-  | |||
|Apipost  | |||
|Apipost-API 文档、设计、调试、自动化测试一体化协作平台。具有免费版本。  | |||
|https://www.apipost.cn/  | |||
|}  | |||
=== 编译器 ===  | |||
{| class="wikitable"  | |||
!名称  | |||
!说明  | |||
!wiki(若有)/链接地址  | |||
|-  | |||
|sdcc  | |||
|用于8位/16位单片机(如MCS51、DS80C390 、HC08、Z80、STM8, MOS 6502 、WDC 65C02等)的C编译器  | |||
|https://sdcc.sourceforge.net/  | |||
|}  | |||
=== 流程图/框图绘制 ===  | |||
{| class="wikitable"  | |||
|+  | |||
!名称  | |||
!说明  | |||
!wiki(若有)/链接地址  | |||
|-  | |-  | ||
! 名称   | |dia  | ||
|跨平台开源流程图绘制工具  | |||
|http://dia-installer.de/  | |||
https://sourceforge.net/projects/dia/  | |||
|}  | |||
=== 图像处理 ===  | |||
{| class="wikitable"  | |||
|+  | |||
!名称  | |||
!说明  | |||
!wiki(若有)/链接地址  | |||
|-  | |-  | ||
|   | |GIMP  | ||
|免费开源图像编辑器  | |||
|https://www.gimp.org/  | |||
|}  | |||
=== 作曲工具(MIDI制作) ===  | |||
{| class="wikitable"  | |||
!名称  | |||
!说明  | |||
!wiki(若有)/链接地址  | |||
|-  | |-  | ||
|   | |LMMS  | ||
|免费自由开源并且跨平台的作曲工具  | |||
|https://lmms.io/  | |||
|}  | |||
=== 字体编辑 ===  | |||
{| class="wikitable"  | |||
!名称  | |||
!说明  | |||
!wiki(若有)/链接地址  | |||
|-  | |-  | ||
|   | |FontForge  | ||
|免费字体编辑器  | |||
|https://fontforge.org  | |||
|}  | |||
=== 国际化/本地化 ===  | |||
{| class="wikitable"  | |||
|+  | |||
!名称  | |||
!说明  | |||
!wiki(若有)/链接地址  | |||
|-  | |-  | ||
|   | |Poedit  | ||
|.po编辑工具。可编辑使用 [[xgettext]] 生成的翻译文件  | |||
|https://poedit.net/  | |||
|}  | |}  | ||
==   | === 压缩/解压缩 ===  | ||
{| class="wikitable"  | |||
|+  | |||
!名称  | |||
!说明  | |||
!wiki(若有)/链接地址  | |||
|-  | |||
|7-zip  | |||
|开源免费的压缩/解压缩软件。Windows下有GUI程序,Linux下只有控制台版本。  | |||
|http://www.7-zip.org  | |||
|}  | |||
===  | === 虚拟磁盘/磁盘驱动 ===  | ||
{| class="wikitable"  | |||
!名称  | |||
!说明  | |||
!wiki(若有)/链接地址  | |||
|-  | |||
|imdisk  | |||
|Windows下开源虚拟磁盘工具,可方便挂载内存盘(存放临时文件)。  | |||
|https://sourceforge.net/projects/imdisk-toolkit  | |||
|-  | |||
|Ext2fsd  | |||
|Windows下访问Ext2/Ext3/Ext4文件系统驱动。  | |||
|https://sourceforge.net/projects/ext2fsd/  | |||
|}  | |||
==   | === 安装/卸载 ===  | ||
{| class="wikitable"  | |||
|+  | |||
!名称  | |||
!说明  | |||
!wiki(若有)/链接地址  | |||
|-  | |||
|Geek Uninstaller  | |||
|Windows下程序卸载工具,具有免费的版本。  | |||
|https://geekuninstaller.com/  | |||
|}  | |||
===  | ===小工具(自写/修改/组合)===  | ||
{| 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支持的桌面平台均支持。  | |||
|-  | |||
|OneNETTool  | |||
|开发OneNET辅助工具  | |||
|[[OneNETTool]]  | |||
|  | |||
*Windows  | |||
*Linux (ubuntu 20.04)  | |||
|-  | |||
|QGDW12184Tool  | |||
|开发Q/GDW 12184辅助工具  | |||
|[[QGDW12184Tool]]  | |||
|  | |||
*Windows  | |||
*Linux (ubuntu 20.04)  | |||
|-  | |||
|XServerForWSL1  | |||
|利用cygwin中的X服务对WSL提供X服务  | |||
|[[XServerForWSL1]]  | |||
|支持WSL1的Windows  | |||
|-  | |||
|linux_binfmt_pe  | |||
|使用[[wine]]直接执行PE可执行文件的Linux内核模块  | |||
|[[linux_binfmt_pe]]  | |||
|  | |||
* Linux内核  | |||
|-  | |||
|Win32Redirector  | |||
|重定向win32控制台应用至MSYS2或者Cygwin中的程序。  | |||
|[[Win32Redirector]]  | |||
|  | |||
* Windows  | |||
|-  | |-  | ||
|HEnvBox  | |||
|快速搭建本人常用的开发环境。  | |||
|[[HEnvBox]]  | |||
|  | |||
* Windows 10及更新版  | |||
* Ubuntu 22.04  | |||
* Debian  | |||
* Deepin  | |||
|-  | |-  | ||
|   | |HVCP  | ||
|Windows下虚拟串口  | |||
|[[HVCP]]  | |||
|  | |||
* Windows 7 及更新系统  | |||
|}  | |}  | ||
==   | == 常用库 ==  | ||
此章节主要对使用的比较多的库做一个整理。  | |||
{| class="wikitable   | {| class="wikitable"  | ||
|+   | |+  | ||
!名称  | |||
!官网  | |||
!说明  | |||
!Wiki  | |||
|-  | |-  | ||
|wxWidgets  | |||
|https://www.wxwidgets.org/  | |||
|跨平台GUI库  | |||
|[[wxWidgets]]  | |||
|-  | |-  | ||
|   | |Qt  | ||
|https://www.qt.io/  | |||
|跨平台库(包括GUI)  | |||
|[[Qt]]  | |||
|}  | |||
=== 工具/库(自写/修改) ===  | |||
{| class="wikitable"  | |||
|+  | |||
!名称  | |||
!说明  | |||
!Wiki(若有)  | |||
|-  | |-  | ||
|   | |DeployWin  | ||
|MSYS2与CygWin下编程辅助打包库。一般配合CMake的CPack使用。  | |||
|[[DeployWin]]  | |||
|-  | |-  | ||
|   | |HCppBox  | ||
|本人常用的C/C++代码  | |||
|[[HCppBox]]  | |||
|-  | |||
|SimpleModbusRTUPacket  | |||
|简易的[[Modbus]] RTU包解析  | |||
|[[SimpleModbusRTUPacket]]  | |||
|}  | |}  | ||
==  | ==常用镜像站==  | ||
{| class="wikitable   | 在找各种源码资源时,经常遇到国外网站下载较慢的情况下,此时通常需要更换镜像站。  | ||
|+   | |||
例如:  | |||
*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/  | ||
|阿里开源镜像站  | |||
|-  | |-  | ||
|   | |https://mirrors.cernet.edu.cn  | ||
|校园网联合镜像站  | |||
|}  | |||
== 静态文档网站 ==  | |||
一些静态的网页文档,如[https://www.doxygen.nl/ doxygen]生成的帮助文档与[https://docsify.js.org/#/ docsify]制作的静态说明文档。  | |||
{| class="wikitable"  | |||
|+  | |||
!类型  | |||
!URL  | |||
!备注  | |||
|-  | |-  | ||
|   | |静态文档仓库  | ||
|https://heyahong.github.io/#/  | |||
|采用github pages托管,源代码仓库:https://github.com/HEYAHONG/HEYAHONG.github.io.git  | |||
|-  | |-  | ||
|   | |网站  | ||
|http://docs.hyhsystem.cn  | |||
|采用nginx服务器,运行于云服务器  | |||
|}  | |}  | ||
==相关链接==  | |||
*[[测试资源]]  | |||
*[[第三方资源]]  | |||
*[[方案发现与探索]]  | |||
*[[杂项笔记与测试代码]]  | |||
*[[常见问题]]  | |||
2025年7月15日 (二) 08:26的最新版本
常用项目
嵌入式项目
| 名称 | 简介 | Wiki(若有) | 标签 | 
|---|---|---|---|
| ExtBoard-001 | 扩展板,用于扩展一个可编程通道(RS485)。
 主要采用以下芯片: 
  | 
ExtBoard-001 | |
| CoreBoard-001 | 核心板。
 主要采用以下芯片/模块: 
  | 
CoreBoard-001 | |
| ExtBoard-002 | 扩展板。使用USB提供4G联网功能。
 主要采用以下芯片/模块:  | 
ExtBoad-002 | |
| ExtBoard-003 | 扩展板。USB CAN适配器,复刻candleLight。 | ExtBoard-003 | |
| ExtModule-001 | 模块电路,用于验证廉价PY32单片机 | ExtModule-001 | 
  | 
| ExtModule-002 | 模块电路,用于验证ST17H66 蓝牙SOC | ExtModule-002 | |
| ExtModule-003 | 模块电路,用于验证XL2409 廉价2.4G无线SOC | ExtModule-003 | |
| ExtModule-004 | 模块电路,用于验证CH32V208 SOC. | ExtModule-004 | 
常用技术栈
使用低成本无线连接的设备
通常情况下,除了直接接入网络,通常还可以使用网关代为接入网络,此时大致可分为网关设备(例如ZigBee网络的协调器)与子设备(例如ZigBee的路由器与终端设备)。
网关设备通常用于协议的转换,通常使用性能相对强大的设备担任。
子设备一般用于实际的应用,对设备的性能的要求相对较低。
使用网关设备+子设备的模式优点如下:
- 在节点较多时可节约成本。
 - 某些场所无法直接接入网络。
 
网关设备与子设备之间的连接可以使用有线连接(如CAN、Modbus RTU等),也可以使用无线连接。
使用无线连接时,主要使用以下方案:
- NRF24L01及其兼容方案:实现简单,由用户自行定义协议,网关设备与子设备均需要自行开发。
 - XL2409无线方案:其操作类似NRF24L01及其兼容方案,只是XL2409是一个SOC芯片,可编程。
 - BLE:低功耗蓝牙,用户不能自定义协议,只能按照蓝牙定义的协议去开发,对于硬件而言,一般主要开发外围外设,中心设备可使用已有的硬件方案,调试使用可使用PC、手机调试。
 
NRF24L01及其兼容方案
采用NRF24L01+及兼容方案,直接收发数据,网络协议栈由用户自行实现。
XL2409无线方案
其操作类似NRF24L01及其兼容方案,只是XL2409是一个SOC芯片,可编程。直接收发数据,网络协议栈由用户自行实现。
BLE
很多SOC方案支持开发中心设备,也支持开发外围设备,但一般只开发外围设备(通常用于子设备)的硬件(调试使用PC、手机),中心设备的硬件可使用支持BLE的现成方案。
主要使用的BLE方案如下:
可连接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是用来使计算机时间同步化的一种协议。 | |
| Matter | Matter是一个统一的、开源的应用层连接标准,旨在使开发人员和设备制造商能够连接和构建可靠的、安全的生态系统,并增加智能家具设备之间的兼容性。 | 按照其架构,可使用TCP/UDP,基于IPV6. | 
低成本方案
低成本方案主要是指硬件采用SOC方案并且操作系统采用嵌入式操作系统的方案或者外设方案:
- Air724UG :4G模块,可使用C/C++进行二次开发。
 - Air780E:4G模块,EC618平台,可使用C/C++进行二次开发,较Air724UG廉价。
 - 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操作。
基于USB的外设扩展
对于使用Linux内核的设备的外设扩展,本人较为推崇使用USB作为外设总线,其优点如下:
- 支持热插拔与子设备枚举,无需在设备树中配置所挂接的子设备。
 - 可使用hub扩展较多接口。
 - 支持USB的转换芯片较多。
 
一般来讲,对于少量控制数据的传输,USB 2.0的传输速度就足够了。
USB HUB
| 芯片系列 | 说明 | 官网(若有) | 
|---|---|---|
| CH334/CH335 | 4 口USB 2.0 USB Hub | https://www.wch.cn/products/CH334.html | 
| CH338 | 7口USB 2.0 USB Hub | https://www.wch.cn/products/CH338.html | 
| FE1.1s | 4 口USB 2.0 USB Hub | |
| HS8836A | 4 口USB 2.0 USB Hub | 
USB 转换芯片
| 芯片系列 | 说明 | 官网(若有) | 
|---|---|---|
| CH340 | USB转串口/打印口 | https://www.wch.cn/products/CH340.html | 
USB 上位机软件开发
- 对于标准外设,可按照标准外设的使用方法,如USB转串口按照串口的方式使用。
 - 对于USB原生的应用(直接通过端点发送接收数据),可使用libusb开发。
 - 对于基于USB的HID设备,若未被其它内核驱动使用,可使用hidapi开发。
 
USB 嵌入式开发
若未具体说明,本章节中的USB嵌入式开发指Device端的嵌入式开发,即USB外设开发。
除了各个芯片厂商提供的USB栈,还可使用以下USB栈用于USB外设开发:
| USB库 | 说明 | 官网(若有) | 
|---|---|---|
| tinyusb | 开源、跨平台的USB HOST/DEVICE栈 | https://www.tinyusb.org/ | 
| CherryUSB | 小而美的、可移植性高的、用于嵌入式系统的 USB 主从协议栈 | https://cherryusb.readthedocs.io/ | 
电子线连接器
很多时候一个产品可由多个PCB组成,而PCB之间除了直接焊线,还可以由电子线连接器(包括插头、插座)连接。
| 引脚间距(mm) | 类型 | 说明 | 
|---|---|---|
| 1.0 | 
  | 
|
| 1.25 | 
  | 
|
| 1.50 | 
  | 
|
| 2.00 | 
  | 
|
| 2.50/2.54 | 
  | 
|
| 3.96 | 
  | 
注意:
- 以上所指的类型可能只是实际连接器的型号的一部分,一般用于搜索相应器件。如在淘宝上搜索PH 连接器 即可获取类型为PH的连接器。
 - 同一个引脚间距可能有多个类型,这些不同的类型一般有其它差异(如材料、结构等)。
 - 如需某个类型的双排连接器,可在类型中添加D(仅适用于部分类型),如需要类型为PH的连接器,则搜索PHD 连接器。
 
外壳方案
可采用导轨安装的外壳方案
对于电气控制柜、仪表柜、配电箱等,安装导轨是一个极其常见的配件。
常用的安装导轨方案如下:
- DIN TS35:35×7.5 安装导轨,宽度35mm,深度7.5mm,材质形式为钢、铝、铜等,表现形式为横条状金属片
 
若未特殊说明,导轨均指DIN TS35安装导轨。
对于带计量的产品而言,除了设计成插座样式,还可以设计成导轨安装并安放在配电箱里。
对于需要安装至导轨的产品而言,主要有以下方案:
- 直接使用可用于导轨安装的外壳。
 - 采用导轨安装卡扣,卡扣上通常有螺丝孔位,可通过螺丝安装产品。
 
廉价铝壳外壳方案
作为物联网产品(尤其是具有RTU/DTU角色的物联网产品),通常需要一个外壳。一般情况下,可使用铁壳或者铝壳作为外壳。
为减小成本,本人一般采用成品铝壳作为外壳。
注意:本段落中的铝壳主要指主要外形为长方体,两侧或者顶部具有可拆卸的盖子的壳体,并不泛指所有采用铝作为主要材料的壳体。
一般情况下,通常需要给铝壳开孔以引出接口,常用方案如下:
- 正面开孔,一般通过厂家定制。仅试样的情况下,价格一般相对较高。
 - 侧盖开孔(一面或两面),一般通过厂家定制。仅试样的情况下,价格一般相对较高。
 - 采用PCB作为侧盖(一般使用黑色的壳体配合黑色PCB),使用PCB制造开孔。仅试样的情况下,价格相对便宜。
 - 一侧不要侧盖。适用于直接引出导线的产品,一般配合灌胶工艺。一般直接用于量产产品。
 
如需使用导轨安装,可使用导轨安装卡扣固定铝壳。
常用尺寸1
| 长 | 宽 | 高 | PCB块数 | PCB最大厚度 | PCB最大宽度 | PCB最大长度 | 
|---|---|---|---|---|---|---|
| 100mm | 66mm | 27mm | 2(一块顶部PCB板,一块底部PCB板) | 2mm | 60.3mm(不能小太多) | 100mm(取决于铝壳长度,一般可定制) | 

接线盒(家庭)
此处所指接线盒主要指家庭中用于开关/插座的接线盒,并不指广义接线盒。
接线盒主要由底盒与面板组成。
其中底盒的种类多种多样,根据可分为明装与暗装,一般底盒均为提前安装好的,不可简单增加与减少。
面板一般是嵌入式开发中常用的壳体,只要保证安装孔距正确,即可安装在提前安装的底盒上。
接线盒可根据面板尺寸进行分类,主要有以下型号:
- 86型
 - 118型
 - 120型
 
采用接线盒进行嵌入式开发主要开发以下设备(与传统开关、传统插座有一定相似之处):
- 智能家居控制面板:可进行联网操作,控制智能家居设备。可显示一些信息(如时间、天气、场景等信息)。可连接到其它智能设备(如智能音箱)
 - 智能家居开关:功能与传统开关类似,可通过无线(如BLE、Zigbee等)的方式连接到智能设备(如智能音箱、智能家居控制面板等)。
 - 智能家居插座:功能与传统插座类似,可远程控制、数据采集(电量、电压、电流等)。可通过无线(如BLE、Zigbee、WiFi等)的方式连接到智能设备(如智能音箱、智能家居控制面板等)。
 
86型接线盒
86型接线盒作为较常用的接线盒,俗称86盒,其面板尺寸86mmX86mm。
许多厂商也提供采用86盒的开发板,如Sipeed Lichee RV 86 Panel、Model 3C 86盒3.95寸开发板。
常用芯片及模块
常用芯片及核心模块
| 芯片/模块名称 | 说明 | wiki(若有) | 
|---|---|---|
| RN8211B | 单相计量SOC | RN8211B | 
| HT502X | 单相计量SOC | HT502X | 
| Air724UG | 4G模块,进行C语言开发 | Air724UG | 
| Air780E | 4G模块,EC618平台,可使用C/C++进行二次开发,较Air724UG廉价 | Air780E | 
| 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 | 
| Air32F103 | 96K RAM,兼容STM32F103 | Air32F103 http://air32.cn | 
| ST17H66 | 64K RAM,256K Flash,廉价蓝牙SOC | ST17H66 | 
注意:此章节可能不包含资料较多,应用极其成熟的芯片系列。
外设芯片及外设模块
| 名称 | 说明 | 接口 | 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 | 
| printf | printf, sprintf and (v)snprintf 实现 | printf | 
常用工具
| 名称 | 说明 | 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(若有)/链接地址 | 
|---|---|---|
| Apipost | Apipost-API 文档、设计、调试、自动化测试一体化协作平台。具有免费版本。 | https://www.apipost.cn/ | 
编译器
| 名称 | 说明 | wiki(若有)/链接地址 | 
|---|---|---|
| sdcc | 用于8位/16位单片机(如MCS51、DS80C390 、HC08、Z80、STM8, MOS 6502 、WDC 65C02等)的C编译器 | https://sdcc.sourceforge.net/ | 
流程图/框图绘制
| 名称 | 说明 | wiki(若有)/链接地址 | 
|---|---|---|
| dia | 跨平台开源流程图绘制工具 | http://dia-installer.de/ | 
图像处理
| 名称 | 说明 | wiki(若有)/链接地址 | 
|---|---|---|
| GIMP | 免费开源图像编辑器 | https://www.gimp.org/ | 
作曲工具(MIDI制作)
| 名称 | 说明 | wiki(若有)/链接地址 | 
|---|---|---|
| LMMS | 免费自由开源并且跨平台的作曲工具 | https://lmms.io/ | 
字体编辑
| 名称 | 说明 | wiki(若有)/链接地址 | 
|---|---|---|
| FontForge | 免费字体编辑器 | https://fontforge.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 | 
| Ext2fsd | Windows下访问Ext2/Ext3/Ext4文件系统驱动。 | https://sourceforge.net/projects/ext2fsd/ | 
安装/卸载
| 名称 | 说明 | 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 | 
  | 
| QGDW12184Tool | 开发Q/GDW 12184辅助工具 | QGDW12184Tool | 
  | 
| XServerForWSL1 | 利用cygwin中的X服务对WSL提供X服务 | XServerForWSL1 | 支持WSL1的Windows | 
| linux_binfmt_pe | 使用wine直接执行PE可执行文件的Linux内核模块 | linux_binfmt_pe | 
  | 
| Win32Redirector | 重定向win32控制台应用至MSYS2或者Cygwin中的程序。 | Win32Redirector | 
  | 
| HEnvBox | 快速搭建本人常用的开发环境。 | HEnvBox | 
  | 
| HVCP | Windows下虚拟串口 | HVCP | 
  | 
常用库
此章节主要对使用的比较多的库做一个整理。
| 名称 | 官网 | 说明 | Wiki | 
|---|---|---|---|
| wxWidgets | https://www.wxwidgets.org/ | 跨平台GUI库 | wxWidgets | 
| Qt | https://www.qt.io/ | 跨平台库(包括GUI) | Qt | 
工具/库(自写/修改)
| 名称 | 说明 | Wiki(若有) | 
|---|---|---|
| DeployWin | MSYS2与CygWin下编程辅助打包库。一般配合CMake的CPack使用。 | DeployWin | 
| HCppBox | 本人常用的C/C++代码 | HCppBox | 
| SimpleModbusRTUPacket | 简易的Modbus RTU包解析 | SimpleModbusRTUPacket | 
常用镜像站
在找各种源码资源时,经常遇到国外网站下载较慢的情况下,此时通常需要更换镜像站。
例如:
- ubuntu系统的软件包(包括使用deboostrap的镜像源)
 - python软件包
 - gnu软件源码包
 - linux源码
 
| 地址 | 说明 | 
|---|---|
| http://mirrors.ustc.edu.cn/ | 中国科学技术大学镜像站 | 
| https://mirrors.tuna.tsinghua.edu.cn/ | 清华大学镜像站 | 
| http://mirrors.163.com/ | 网易开源镜像站 | 
| http://mirrors.aliyun.com/ | 阿里开源镜像站 | 
| https://mirrors.cernet.edu.cn | 校园网联合镜像站 | 
静态文档网站
一些静态的网页文档,如doxygen生成的帮助文档与docsify制作的静态说明文档。
| 类型 | URL | 备注 | 
|---|---|---|
| 静态文档仓库 | https://heyahong.github.io/#/ | 采用github pages托管,源代码仓库:https://github.com/HEYAHONG/HEYAHONG.github.io.git | 
| 网站 | http://docs.hyhsystem.cn | 采用nginx服务器,运行于云服务器 |