基于 STM32+4G模块+微信小程序的环境监测系统的设计

最近在做毕业设计,接触到了许多之前没碰过的,在这里写一写,希望能帮上有需要的同学

目录

一        系统整体设计

二        下位机设计

三        阿里云物联网平台

四        上位机设计

五        总结

        整体设计        

                先来说一说整体的设计,主要分为上位机和下位机的设计,下位机采集数据,上传数据到上位机,并在上位机展示人们能建议明白的数据展示界面。系统要求,监测环境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版本-优快云博客

大家改改就行了,里面已经写得很详细了,我就不写了。

        后端数据

        微信小程序前端界面设计

大家可以去参考一下黄菊华黄老师的课程,在哔哩哔哩就能找到,咱们主要学一下界面布局,模板什么的,根据自己的项目去修改

        前端界面

大概就这些,后面等板子打好,焊接好,还有外壳这些弄好以后,我大概率会发布自己的第一个哔哩哔哩视频,大家有兴趣的可以先关注一波,后续发布再说。

### 微信小程序作为移动端上位机的可行性分析 #### 技术背景 微信小程序是一种基于轻量级应用的技术方案,能够在不安装独立应用程序的情况下提供接近原生应用的功能体验。通过与硬件设备结合,微信小程序可以成为一种便捷的移动终端控制工具[^1]。 #### 可行性评估 1. **通信能力** 腾讯云IoT平台支持多种通信协议(如MQTT),这些协议能够确保设备数据实时、高效地上报到云端。而微信小程序可以通过调用微信开放接口连接腾讯云服务,从而间接实现对下位机(如FPGA或STM32)的远程监控和指令发送[^1]。 2. **图形化交互** Qt框架虽然主要用于桌面端开发,但在某些场景下也可以移植到嵌入式环境。然而对于微信小程序而言,其内置组件已经具备足够的灵活性来构建直观的用户界面。开发者可以直接利用微信小程序提供的UI库完成设备状态显示及操作按钮布局等功能[^1]。 3. **跨平台特性** 小程序天然支持iOS和Android两大主流操作系统,这使得它成为一个理想的跨平台解决方案。相比传统的APP开发方式,使用微信小程序减少了因不同手机品牌而导致兼容性问题的可能性[^1]。 4. **资源消耗较低** 对于一些计算密集型任务或者复杂逻辑运算来说,直接运行在前端的小程序可能会面临性能瓶颈;但对于大多数简单的工业自动化控制系统来讲,仅需传递少量参数即可达成目标——这种情况下采用微信小程序是非常合适的。 5. **安全性考量** 数据加密传输是保障整个系统安全性的关键环节之一。借助TLS/SSL等标准网络层保护机制再加上腾讯云身份认证体系,则可以在一定程度上抵御外部攻击威胁并保证敏感信息的安全存储与交换过程不受干扰。 #### FPGA 控制集成可能性探讨 当考虑将FPGA纳入整体架构时需要注意以下几点事项: - 如果希望由FPGA执行部分核心算法处理工作负载的话,那么就需要额外增加相应的IP核配置流程以便适配特定应用场景下的功能需求. - 同样重要的是定义好两者之间清晰的消息格式约定规则以简化后续调试维护难度. 综上所述,微信小程序完全可以充当移动端上的简易版“上位机”,尤其适合那些注重成本效益比且不需要特别高精度反馈速度的应用场合。至于具体实施方案还需要依据实际项目情况进一步细化讨论。 ```python # 示例代码片段展示如何通过HTTP请求向服务器发送命令 import requests def send_command(device_id, action): url = f"https://yourserver.com/api/control?device={device_id}&action={action}" response = requests.get(url) return response.json() result = send_command('fpga_001', 'start') print(result) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值