阿里云IOT物联网终端设备代码简介
零、介绍
该仓库是合肥万物以网科技有限公司的支持阿里云IOT的通用终端设备的C代码库。硬件方案是STM32+CAT1+WIFI+BT,其中可以通过CAT1或WIFI连接到阿里云IOT。gitee地址https://gitee.com/allthingonline/aliyuniot-device-platform-freertos
一、概述
ATOL_DC10是万物以网开发的一套通用的阿里云IOT物联网通用的终端设备,建设了完整的硬件平台和软件平台。在后续的开发中可以在硬件及软件平台上做相应的业务开发即可。欢迎大家借鉴或使用,并承接各种物联网开发。有任何建议或者问题可以联系个人微信【allthingonline】,CSDN【万物以网】,该代码中的具体业务和实现会逐步在CSDN中展开介绍。
实测测试数据:
- 20台ATOL_DC10,连续在线6个月,平均每台设备掉线4次,之后立马重连。
- 20台ATOL_DC10,连续在线6个月,每分钟定时上传数据,迄今无数据丢失。
二、硬件结构
- MCU
STM32系列,当前代码是基于STM32F1xx,后续持续更新STM32F4xx,STM32Gxx。 - CAT-1 通信模块
当前支持移远ECxx系列,例如EC200S、EC200U、EC600S等,另外也兼容CAT-4模块,例如EC20。 - WIFI 通信模块
当前支持上海庆科MX3080,后续扩展支持乐鑫和安信可。 - 蓝牙模块
当前支持汇承全系列。 - MP3播放模块
支持串口接口的语音播放模块。 - RS485总线
当前电路板上没有做隔离,在实际开发中会根据具体的场景来增加隔离。 - CAN总线
当前电路板上没有做隔离,在实际开发中会根据具体的场景来增加隔离。 - 电力载波模块
参考ATOL_L10E设备,支持三相电力载波通信。 - DI DO AI
4路 DI,是4路光耦输入电路。
4路 DO,是4路继电器输出电路。
2路 AI,是2路ADC采集电路,支持普通电压采集和4-20ma信号采集。 - 定位模块
使用通信模组内部GNSS或者增加GNSS的外挂芯片,支持北斗&GPS。可以做单频普通定位精度(10米级)和双频差分高精度(厘米级)。 - 其他外设或芯片
例如SPI的RN8206的计量芯片,I2C的OLED屏幕等。
三、软件架构
1)概述
该版本使用了RTOS系统,FreeRTOS在这几年上涨的趋势非常明显,另外也免费。该代码选择了FreeRTOS,堆栈选择heap4。整个软件结构分为kernel、firmware、thread、service等四层,可以理解为从下至上的叠加关系,在具体的service层中所需要执行的业务都是下层的组合关系。这样统一设备型号之间的底层硬件或数据操作,减少开发工作量。
2)宏控
在all_head.h的头文件中,增加设备宏控,来选择所需要的硬件外设。另外也有通信方式的宏控,可以通过选择不同模组厂家的宏控来直接调用对应的硬件外设和固件。
3)kernel层
- kernel_usart1-3,使用DMA,在接收数据后存入到串口MQ中,和数据消费者解耦合。
- kernel_uart4,使用DMA,蜂窝通讯专用串口,也可以修改为其他串口,但是不建议。
- kernel_uart5,DEBUG串口,输出系统运行信息。
- kernel_watchdog,硬件看门狗。
4)firmware层,可以理解为固件层或者是某个外设的驱动层,是能实现硬件的基本操作和控制的,能提供给上层的数据控制接口。
- firmware_gpio,引脚的AI DI DO的定义,以及相关的控制。
- firmware_led,指示灯,对外提供一个控制灯闪烁的数组。
- firmware_rs485,在这里增加485的使能引脚在收发中的控制。
- firmware_flash,STM32的FALSH是按照片区操作的,经过封装之后可以提供按照non flash类似的函数。
- firmware_mp3,串口语音播放外设的串口接口,封装相关的协议。
- firmware_bluetooth,蓝牙通信接口,在汇承蓝牙中除了串口通信以外还有KEY引脚的控制。所以没有放在kernel层。
5)thread层,这个就是实现某个类型业务的线程,在另外的状态机版本(无rtos)的软件中,该层的实现不是靠建立线程来执行。
- thread_4g_comm_init,4G通信模组的初始化和连接阿里云的线程,只在初始化时候执行,执行完成之后没有挂起。
- thread_bluetooth,蓝牙的协议解析和数据业务。
- thread_state_machine,状态机线程,读取状态机MQ来执行对应的业务。
- thread_decoder,数据解码业务,读取串口4的接收MQ,来解析和阿里云IOT通信的相关数据,不同的模组厂商的指令不同。可以宏控中设置。
- thread_encoder,数据编码业务,根据所需要发送的数据合成相应的AT指令,不同的模组厂商的指令不同。可以宏控中设置。
- thread_timer,时间线程,可以计时以及在特定时刻触发相关状态,该版本没有用RTC。
- thread_wifi_init,wifi模块的初始化线程。
6)service层,这个是不同型号的具体业务层,包含各自的具体逻辑业务、数据解码编码、外设控制等。这里不展开说明。
四、应用场景
该硬件及代码充分考虑了主流的物联网接入方式和主流的厂商平台,可以根据客户的需求快速开发相关的业务。当前已经实现下面的产品功能:
1)工业现场类
- 工业现场的DTU设备
把现场总线例如RS485、RS422、RS232、电力载波、CAN等数据和私有云连通、支持TCP\UDP、MQTT方式上云。在DTU内部可以集成modbus协议或者私有协议。 - 工业现场的控制设备和数据采集设备
包含DTU功能的同时,能开放DI DO AI等外设接口,也可以在设备中增加逻辑控制业务。 - 数字工厂,已嵌入的方式把工厂的控制器、执行器、采集器、传感器等数据上传到云端,建立完整的工厂监测和数据挖掘云平台。
2)日常生活类
- 汽车、单车控制器
- 数字农业,已嵌入的方式把农业中的传感器、执行器等数据上传到云端,建立农业养殖种植的全生命周期管理。
- 电气安全监测及预警,通过边缘计算以及云平台的大数据挖掘,能对电气设备和线路的历史溯源及细小颗粒数据分析,能在把预警提前到1-6个月。
- 接入阿里智能,阿里云生活平台,提供阿里智能APP,主要面向智能家居方向。
- 接入天猫精灵,主要面向智能家居方向。
末、联系我们
合肥万物以网科技有限公司—物联网全栈开发专家
微信【allthingonline】
阿里云IOT物联网终端设备代码简介相关推荐
- HaaS学习笔记 | 终端设备接入和断开阿里云IoT物联网平台的明细教程
[1]题目要求 [本教程视频]:终端设备连接阿里云物联网平台 [2]理论基础 aliyunIoT是HaaS轻应用扩展库中模块,能帮助厂商将设备安全地接入到阿里云IoT物联网平台,继而让设备可以被物联网 ...
- 支付宝小程序使用MQTT over WebSocket连接阿里云IoT物联网平台
前言 之前写了一篇微信小程序使用MQTT over WebSocket连接阿里云IoT物联网平台,介绍了如何使用mqtt.js在微信小程序上连接mqtt服务器,文中顺带提了mqtt.js是支持支付宝小 ...
- MQTT协议与阿里云IoT物联网平台
1.MQTT协议介绍 1.1 MQTT协议 MQTT(消息队列遥测传输) 是基于 TCP/IP 协议栈而构建的支持在各方之间异步通信的消息协议.MQTT在空间和时间上将消息发送者与接收者分离,因此可以 ...
- 微信小程序使用MQTT.js连接阿里云IoT物联网平台
官方已经开源了一个SDK版本,也是基于mqtt.js,进行了各种封装: https://github.com/aliyun/alibabacloud-iot-device-sdk · 阅读以下内容需要 ...
- 【微信小程序控制硬件⑧ 】微信小程序以 websocket 连接阿里云IOT物联网平台mqtt服务器,封装起来使用就是这么简单!(附带Demo)
[微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...
- 【小程序案例】支付宝小程序-MQTT模器,IoT设备通过WSS接入阿里云IoT物联网平台...
支付宝小程序-MQTT模拟器通过WSS接入阿里云IoT物联网平台 准备工作 1.1 注册阿里云账号 开通阿里云账号,并通过支付宝实名认证 https://www.aliyun.com 1.2 免费开通 ...
- 解密阿里云IoT物联网平台MQTT Access Server核心架构
MQTT是基于TCP/IP协议栈构建的异步通信消息协议,是一种轻量级的发布.订阅信息传输协议.MQTT已逐渐成为IoT领域最热门的协议,也是国内外各大物联网平台最主流的传输协议,阿里云IoT物联网平台 ...
- 下载 | mqtt4aliyun 阿里云 IoT 物联网 设备模拟器 Mac , Windows版本
mqtt4aliyun 是基于 MQTT X 开源版本修改,用于连接阿里云IoT物联网平台的 MQTT模拟器,支持 macOS, Windows系统,支持简体中文/English切换.相比于 MQTT ...
- 阿里云IoT物联网平台
IoT物联网平台 一.工作原理 1.MQTT(Message Queuing Telemetry Transport) 是一种轻量级的消息传输协议,专门设计用于物联网(IoT)应用中的通信.它是一种发 ...
最新文章
- Hadoop中Block和Split区别
- PyQt5初级——2
- DeepWriterID:不依赖书写内容的书写人识别
- 一些在线的WebEdit编辑器
- PCA原理分析和Matlab实现方法(三)
- Linux文件系统基础(1)
- MySQL的外键约束
- CEPH快速部署(Centos7+Jewel)
- 系统架构设计之-任务调度系统的设计
- 条件锁pthread_cond_t 的应用
- Eclipse内存溢出
- A2DP AVRCP,蓝牙音频协议的兄弟组合(1)
- mysql导出表所有数据库,plsql导出所有数据库表
- ps2键盘测试软件,PS2键盘51测试程序1
- Python 标准库之 random 生成伪随机数『详细』
- PYTHON MIP 算法实现
- Java聊天室系统(三):图形界面窗口展示
- pyspark steaming常规语句及操作
- 论文笔记1:Fast and Robust Multi-Person 3D Pose Estimation from Multiple Views
- Kubernetes微服务入门教程:部署spring-boot应用