文章目录
声明
华清远见教育集团 15年专注高端IT培训 做良心教育,做专业教育,做受人尊敬的职业教育
创客学院官网:http://www.makeru.com.cn/
华清远见创客学院嵌入式课程链接:http://www.makeru.com.cn/emb
华清远见创客学院物联网课程链接:http://www.makeru.com.cn/iot
软硬件环境分析
硬件环境 | 软件架构分析 |
---|---|
![]() | ![]() |
FS4412 资源描述
华清远见 ARM Cortex-A9 FS4412 开发平台(下文简称 FS4412)是由华清远见研发中心专为培训教学和项目研发定制的高性能的 ARM Cortex-A9 开发平台。FS4412 采用三星 ARM Exynos 4412 四核处理器,运行主频可高达 1.5GHz,其处理速度和节能能力比起双核大幅提高。对比上一代的双核处理器,四核能提供翻倍的处理能力以及减半的功耗,这也为精细的显示效果、1080P 拍摄及播放、以及各方面的超高流畅
ZigBee 开发套件简介
通信结构体定义
zigbee 模块对象信息参数结构体
typedef struct _makeru_zigbee_info
{
uint8_t head[3]; //标识位: 'm' 's' 'm' makeru-security-monitor
uint8_t type; //数据类型 'z'---zigbee 'a'---a9
float temperature; //温度
float humidity; //湿度
float tempMIN; //温度下限
float tempMAX; //温度上限
float humidityMIN; //湿度下限
float humidityMAX; //湿度上限
uint32_t reserved[2]; //保留扩展位,默认填充0
//void *data; 内核预留的扩展接口 参考版
}ZIGBEE_INFO_T;
A9模块对象信息参数结构体
typedef struct _makeru_a9_info
{
uint8_t head[3]; //标识位: 'm' 's' 'm' makeru-security-monitor
uint8_t type; //数据类型 'z'---zigbee 'a'---a9
float adc;
short gyrox; //陀螺仪数据
short gyroy;
short gyroz;
short aacx; //加速计数据
short aacy;
short aacz;
uint32_t reserved[2]; //保留扩展位,默认填充0
//void *data; 内核预留的扩展接口 参考版
}CROTEXA9_INFO_T;
环境参数对象结构体参数
typedef struct _makeru_env_data
{
CROTEXA9_INFO_T a9_info;
ZIGBEE_INFO_T zigbee_info;
uint32_t reserved[2]; //保留扩展位,默认填充0
}ENV_DATA_T;
所有监控区域的信息结构体
struct env_info_client_addr
{
ENV_DATA_T monitor_no[MONITOR_NUM]; //数组 老家---新家
}env_info_client_addr;
设备控制对象列表
typedef enum
{
DEVICE_CTL_LED = 1, //LED控制
DEVICE_CTL_BUZZER = 2, //蜂鸣器控制
DEVICE_CTL_DIGITAL = 3, //四路LED灯模拟的数码管
DEVICE_CTL_FAN =4, //风扇
DEVICE_CTL_TEMP_HUMI=5, //温湿度最值设置
DEVICE_CTL_RESERVED=6, //用于个人的扩展
DEVICE_CTL_GPRS = 10, //3G通信模块-GPRS
DEVICE_CTL_MAX,
}DEVICE_CONTROL_LIST_E;
A9-ZIGBEE通用指令
-
命令格式说明
一个字节,unsigned char 对应消息队列中正文的类型:
unsigned char 8位平台编号 设备编号 操作设备 7 6 5 4 3 2 1 0 -
平台编号详细说明
平台编号 设备说明 0x00 0号-ZigBee平台 0x40 1号-A9/A53平台 0x80 2号-STM32平台(可以自己扩展) 0xc0 3号-avr arduino…保留(如果平台继续增多的话可以采用2个字节或多个字节来对设备进唯一的编号,比如A9类下的1号平台,2号平台,先分类,然后再具体标识设备) -
设备编号控制说明
设备编号 设备对象 操作掩码-操作说明 0x00 LED 0x00 全部关闭
0x01 全部打开
0x02 打开LED2
0x03 打开LED3
0X04 打开LED4
0x05 打开LED5
0X10 打开流水灯0x10 蜂鸣器 0x00 关闭
0x01 打开
0x02 自动报警关闭
0x03 自动报警打开0x20 风扇 风扇 0x00 关闭风扇
0x01 打开风扇x30 数码管 0x0~0xF 显示0~F数字(四盏灯,对应0000-表示0,0001-表示1…1110-表示14)
0x0f 关闭数码管 led2-3-4-5 -
控制命令:
平台编号 + 设备编号 + 操作掩码 = 命令 (命令的封装)
例如:
0x00 + 0x20 + 0x01 = 0x21 风扇打开
0x40 + 0x10 + 0x01 = 0x51 蜂鸣器打开
0x40 + 0x30 + 0x08 = 0x78 数码管显示8
0x40 + 0x30 + 0x0f = 0x7f 关闭数码管上行:封装的结构体====共享内存和信号量 ===>交给CGI(C语言和HTML语言之间的转化接口)===>交给HTML 下行:封装的命令字====消息队列 ====>msgbuf msgsnd===>控制命令字封装在msgsnd的msgbuf中 ===>A9端解析==>向下控制硬件