最近在做毕业设计,接触到了许多之前没碰过的,在这里写一写,希望能帮上有需要的同学
目录
一 系统整体设计
二 下位机设计
三 阿里云物联网平台
四 上位机设计
五 总结
整体设计
先来说一说整体的设计,主要分为上位机和下位机的设计,下位机采集数据,上传数据到上位机,并在上位机展示人们能建议明白的数据展示界面。系统要求,监测环境CO2,甲醛,噪声,还有监测点的位置信息
下位机设计
硬件设计:
上面的图只是一个一开始最初的硬件图,下面给一个改版的
大家能明显看到,我基本都在用串口读取数据或者发,没用别的,主要是方便,本设计一共用了四个串口,上面这张图片不止四个,是因为CO2甲醛都是一个传感器,硬件上大概就是这样,我这里又省了电源部分,在我后面调试好代码后挖了一个坑,记住这里的坑。
在这里先给大家看看我调试时用的模块和板子
整体样子
后续是模块化和立体化设计
底板
电源底板
底板加外壳
软件设计:
方案一:freeRTOS实时操作系统挂载任务
任务一:从CO2检测传感器获取当前环境CO2浓度
任务二:从甲烷检测传感器获取当前环境甲烷浓度
任务三:通过ADC采集,从调理电路获取麦克风信号,获取噪声信号值
任务四:从北斗模块串口获取北斗模块数据,解析数据
任务五:将数据处理显示
任务六:将合并的数据通过串口交付给4G模块上传云端
方案二:裸机前后台系统
后台:空着。
前台:中断里面不断的获取各种传感器的数据,并解析整合发送出去。
中断里面的代码;重定向了一下串口1和4,串口1是用来发数据给4G模块,串口4用发数据给串口屏,
重定向函数
int fputc(int c,FILE *f)
{
uint8_t ch; //定义一个无符号8位整型变量ch 并将字符C赋值给它
ch = c;
if(uart_xuanz==1){
HAL_UART_Transmit(&huart1,&ch,1,1000);
}
if(uart_xuanz==2){
HAL_UART_Transmit(&huart4,&ch,1,1000);
}
// 调用HAL库的串口发送函数,将ch发送到USART1串口,等待时间为1000ms
return c;
}
串口中断
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
//回调接受函数, 第一个参数是串口的地址,第二个是接受的字符地址,第三个是接受的长度
HAL_UART_Receive_IT(&huart2,Rarr,73);
HAL_UART_Receive_IT(&huart3,CO2,9);
// 把收到的发送给串口,也就是电脑显示
// Usart_sendString((uint8_t*)Rarr);
// Usart_sendString((uint8_t*)CO2);
gps_shuju();
qiti_shuju();
adc_z=getADC(&hadc1);
uart_xuanz=2;
printf("$%9.5f$%10.5f$%3.0f$%4.3f$%d$",wd_double/100,jd_double/100,qt_2,qt_1,(int)adc_z);
uart_xuanz=1;
printf("x0.val=%d\xff\xff\xff",jd_int);
printf("x1.val=%d\xff\xff\xff",wd_int);
printf("x3.val=%d\xff\xff\xff",qt_1_int);
printf("n0.val=%d\xff\xff\xff",qt_2_int);
printf("n4.val=%d\xff\xff\xff",(int)adc_z);
}
下位机展示
阿里云物联网平台
1.创建产品
在实列平台创建自己的产品
2.在产品下添加设备
3.激活设备
激活后设备会显示在线或者离线状态,大家可以参考别人的博文,有详细的例程。大家可以参考一下,然后主要主要的是三元组,也就是设备的证书
还有就是需要注意一下topic,订阅和发布,
这样基本上就能用了,但大家会遇到一个问题就是设备和设备之间的topic不能相互订阅,就需要之间转发,基于Topic消息路由的M2M设备间通信
来自 <如何基于Topic消息路由实现的M2M设备间通信_阿里云物联网平台-阿里云帮助中心>、
3.创建新的topic路由关系
CreateTopicRouteTable
用这个API可以把两个不同设备的信息相互转发,如A(下位机设备)设备的消息再次转发到B(微信小程序端)设备,
参数
IotInstanceId 实列平台的ID 本作品的是iot-060a8dke 根据自己的填写
来自 <https://next.api.aliyun.com/api/Iot/2018-01-20/CreateTopicRouteTable?params={%22IotInstanceId%22:%22iot-060a8dke%22,%22SrcTopic%22:%22%2Fk0fzhJo3MA5%2F868739056446374%2Fuser%2Fupdate%22,%22DstTopic%22:[%22/k0fzhO938qG/wei_xin/user/get%22]}&tab=DEBUG>
SrcTopic 源topic 在这里是填写了A设备的自定义topic的发布
DstTopic 目标topic 在这里填写的是B设备自定义的topic的订阅
这是下位机发送上来的数据
上位机
不管是用上面设计,都离不开前端界面,后端的数据获取,先来说一说可以用哪些
1.手机APP
2.微信小程序
3.应用程序
4.网页
后端数据获取
上面这几种在我做毕业设计前都没碰过,但后面选择的时候大概了解了一下,基本都是前端界面的设计,后端的数据获取,后端又涉及到了数据库和服务器,太麻烦了直接用MQTT,比较方便,具体实现我这里也是参考了别人的博文微信小程序使用MQTT.js连接阿里云IoT物联网平台_阿里 mqtt js版本-CSDN博客
大家改改就行了,里面已经写得很详细了,我就不写了。
后端数据
微信小程序前端界面设计
大家可以去参考一下黄菊华黄老师的课程,在哔哩哔哩就能找到,咱们主要学一下界面布局,模板什么的,根据自己的项目去修改
前端界面
文章来源:https://www.toymoban.com/news/detail-840230.html
大概就这些,后面等板子打好,焊接好,还有外壳这些弄好以后,我大概率会发布自己的第一个哔哩哔哩视频,大家有兴趣的可以先关注一波,后续发布再说。文章来源地址https://www.toymoban.com/news/detail-840230.html
到了这里,关于基于 STM32+4G模块+微信小程序的环境监测系统的设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!