4、编写报告,详细描述系统实现和关键代码分析,附带实现图片。
河池学院
课程项目报告
课程名称: 物联网工程关键技术应用
班级:本科2020级电子信息工程技术1班
组员姓名: 韦雄峰 覃少华 陈文贵 蒋文健
授课教师: 邱越
2023年6月28日
目 录
- 项目任务要求
- 项目所用硬件模块
- 项目程序流程
3.1 主程序流程图 4
3.2 温度测量流程图 5
3.3 事件处理流程图 6
四、关键功能函数代码
4.1 片内温度传感器数值采集…7
4.2 片外气体传感器电压值采集…8
4.3 无线传感器网络建立…9
4.4 无线数据发送与接收…10
4.5 协调器数据串口发送…11
五、项目实现效果
5.1 串口效果图…12
5.2硬件效果图…13
六、项目总结
一、项目任务要求
- 系统功能:实时监测环境的温度和光照强度
- 系统组成:由zigbee硬件监测部分和pc监控软件两部分组成。
- 硬件由三个zigbee设备组成,一个协调器,两个终端节点。其中一个终端节点每隔2S采集光照强度电压传给协调器,另外一个终端节点采集内部温度每隔1s传给协调器,无线通信方式为组播。协调器接收到两个终端节点的数据后通过串口转发给PC机。
- PC机通过串口实时接受到协调器传过来的温度和光照强度电压,在界面上显示其值,并将数据写入数据库
- 要求完成以下内容:
- 三个zigbee设备的底层编程,组成无线网络,其中一个终端节点每隔2S采集光照强度电压传给协调器,另外一个终端节点采集内部温度每隔1s传给协调器,协调器接收到两个终端节点的数据后通过串口转发给PC机
- 编写上位机程序实现:PC机通过串口实时接受到协调器传过来的温度和光照强度电压,在界面上显示其值,并将数据写入数据库
- 要求完成以下内容:
- 三个zigbee设备的底层编程,组成无线网络,其中一个终端节点每隔2S采集光照强度电压传给协调器,另外一个终端节点采集内部温度每隔1s传给协调器,协调器接收到两个终端节点的数据后通过串口转发给PC机
- 编写上位机程序实现:PC机通过串口实时接受到协调器传过来的温度和光照强度电压,在界面上显示其值,并将数据写入数据库
- PC上位机程序动态显示温度和光照强度电压曲线(拓展,不做硬性要求),如:
4、编写报告,详细描述系统实现和关键代码分析,附带实现图片。
二、项目所用硬件模块
三个ZIGBEE模块,一个温度光照传感模块,两个实验平台。
三、项目程序流程
3.1主程序流程图
图 Z–Stack 系统运行流程图
3.2温度测量流程图
3.3事件处理流程图
- 关键功能函数代码
4.1片内温度传感器数值采集
float T;
uint16 adcvalue;
float getTemp(void)
{
ATEST = 0x01;
TR0 = 0x01;
ADCCON3 |= 0x0e;
ADCCON3 &= 0x3f;
ADCCON3 |= 0x30;
ADCCON1 |= 0x30;
ADCCON1 |= 0x40;
while(!(ADCCON1 & 0x80));
adcvalue = (uint16) ADCL;
adcvalue |= (uint16) (ADCH << 8);
adcvalue = adcvalue >> 2;
T = adcvalue * 0.06229 - 303.3 - 25;
return T;
}
4.2片外气体传感器电压值采集
uint16 sensor_val;
float volt;
float get_VL(void){
sensor_val = get_adc();
volt = (sensor_val * 3.3) / 8192;
return volt;
}
uint16 get_adc()
{
uint32 value;
adc_init();
ADCIF = 0;
ADCCON3 = (0x80 | 0x10 | 0x00);
while(!ADCIF);
value = ADCL;
value = (((uint16)ADCH) << 8);
return (uint16) value;
}
void adc_init()
{
APCFG |= 1;
P0SEL |= (1 << (0));
P0DIR &= (1 << (0));
}
4.3无线传感器网络建立
void SampleApp_SendPeriodicMessage( void ) //发送周期信息
{ //调用AF_DataRequest()函数将数据无线广播出去
if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc, //发送目的地址+端点地址和传送模式
SAMPLEAPP_PERIODIC_CLUSTERID, //被Profile指定有效的集群号
1, //发送数据长度
(uint8*)&SampleAppPeriodicCounter, //发送数据的缓冲区
&SampleApp_TransID, //任务ID号
AF_DISCV_ROUTE, //有效位掩码的发送选项 传送跳数通常设置为AF_DEFAULT_RADIUS
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
{
}
else
{
// Error occurred in request to send.
}
}
4.4无线数据发送与接收
void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt ) //无线数据接收函数
{
uint16 flashTime;
SAMEPLEAPP_TEMP temperatuer;
uint8 asc_16[16]={‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘A’,‘B’,‘C’,‘D’,‘E’,‘F’};
uint16 temp;
switch ( pkt->clusterId ) //判断簇ID
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!
69761)]
[外链图片转存中…(img-j3R6EESJ-1715768569761)]
[外链图片转存中…(img-2luJxX75-1715768569762)]
[外链图片转存中…(img-3DIowRgI-1715768569762)]
[外链图片转存中…(img-8PopCnv0-1715768569763)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!