天问51单片机结合WIFI模块上传温度数据到巴法云平台

目 录

一、前言

二、项目准备

三、设计思路

四、项目主要代码

五、项目成果

六、项目不足

一、前言:

      继前一个项目《天问51单片机结合WIFI模块上传温度数据到TCP服务器》,本次项目是在此基础上做的一个提高。本次项目基于天问STC16开发板,结合ESP8266模块和板载NTC热敏电阻进行测试。将NTC的温度数据通过AT指令上传到巴法云平台。(巴法云平台网址:https://cloud.bemfa.com/user/index.html?r=https://cloud.bemfa.com/tcp/index.html)

二、项目准备

     1.硬件材料:天问STC16F系列开发板、ESP-01S模组、STC-Link烧录器。

     2.软件平台:天问BLOCK编程软件、巴法云平台、XCOM串口助手。

三、设计思路

     本次项目以天问STC16单片机为核心,结合WIFI模块将NTC模块的温度数据上传到巴法云平台,其中主要涉及到AT指令、串口通信、TCP连接与MQTT通信。此前用网络调试助手进行过模拟测试,具体原理大同小异,AT指令几乎一样,只是连接云平台的IP地址、端口号不一样。

     代码中采用定时器0中断进行超时接收,如果超过一定时间没有接收到串口数据,就认为接收数据结束。利用板子上串口四和WIFI模块相连,串口四接收中断函数判断接收的数据。

下面是项目用到的AT指令:

AT+RST    //WiFi模块复位

ATE0     //关闭回显

AT+CWMODE=3  //模块设置成STA_AP模式

AT+CWJAP="User-name","Password"     //连接AP的用户名、密码

AT+CIPSTART="TCP","bemfa.com",8344  //连接云平台服务器(ip地址、端口号)

AT+CIPMODE=1  //开启透传模式

AT+CIPSEND   //发送数据

四、主要项目代码

      代码经过多次修改(增加串口调试信息、修改AT指令等等),基本功能已实现(温度数据可以上传到巴法云平台)。定时2S刷新一次温度数据,通过串口四透传到云平台上。

   巴法云平台能够接收和发送命令,它有推送订阅指令格式(详细请看官方文档),格式如下:

        1、发送订阅指令 格式: cmd=1&uid=***UID***&topic=***Topic***

               UID为云平台私钥,Topic为订阅的主题名,这个可以在云平台上创建。发送订阅指令之后,云平台就会显示设备在线,接着就可以下发命令控制下位机了。

 

 

 

 2、推送数据指令格式: cmd=2&uid=***UID***&topic=***Topic***&msg=***data***

         推送数据的指令和订阅格式差别不大,只是cmd后面编号为2,Topic后面加了个"&msg="用于发送数据。

五、项目成果

图5-1   下位机

图5-2 云平台

六、项目不足

      本次项目只是实现了基础功能,云平台下发命令控制下位机的部分还在调试,仍有不足之处。相信会弄好的。下一期将给大家带来云平台连接微信小程序,小程序通过云平台控制下位机的相关内容。谢谢大家,有什么问题大家都可以探讨。

以下是将 FSR402 电阻式薄膜压力传感器连接到 ESP32-S3 并将数据上传巴法云平台的 Arduino 代码示例: ```cpp #include <WiFi.h> #include <HTTPClient.h> const char* ssid = "你的WiFi名称"; const char* password = "你的WiFi密码"; // 巴法云平台的 API 地址和设备密钥 const char* apiURL = "https://api.bafasensors.com/data"; const char* deviceKey = "你的设备密钥"; // FSR402 传感器引脚 const int fsrPin = A0; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("连接到 WiFi..."); } Serial.println("WiFi 连接成功"); } void loop() { // 读取 FSR402 传感器的值 int fsrValue = analogRead(fsrPin); // 构建 POST 请求的数据 String postData = "key=" + String(deviceKey) + "&value=" + String(fsrValue); // 发送 POST 请求到巴法云平台 HTTPClient http; http.begin(apiURL); http.addHeader("Content-Type", "application/x-www-form-urlencoded"); int httpResponseCode = http.POST(postData); if (httpResponseCode == 200) { Serial.println("数据上传成功"); } else { Serial.print("数据上传失败,错误代码:"); Serial.println(httpResponseCode); } http.end(); delay(5000); // 每隔5秒上传一次数据 } ``` 请确保将代码中的以下部分替换为你自己的信息: - `ssid`:你的 WiFi 名称 - `password`:你的 WiFi 密码 - `apiURL`:巴法云平台的 API 地址 - `deviceKey`:你的设备密钥 这段代码将通过 WiFi 连接到你的网络并读取 FSR402 传感器的值。然后,它将使用 POST 请求将传感器值上传巴法云平台。代码中的延迟时间可以根据你的需要进行调整。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kunlunzr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值