正点原子STM32f103ZE精英开发板实现基于ESP8266 WIFI模块温湿度数据上传至乐联网平台
文章目录
- 一、准备工作
- 二、实现流程
- 1.AT指令
- 2.接入乐联网平台
- 3.代码实现
- 三、数据可视化分析
一、准备工作
1.准备一块正点原子STM32f103ZE精英开发板
2.在某宝上购买好正点原子的ATK-ESP8266 WIFI串口模块
3.顺便买好DH11温湿度传感器
4.别忘了ATK-USB-UART模块
用于单片机烧录使用,电脑上需安装CH340驱动程序
·注意:烧录需要使用USB-UART模块与wifi模块连接;开始烧录的时候它会要求你给WIFI模块复位,如设备无自动复位,只需要使RST接一下低电平触发即可,IO-0需置低电平
5.烧录安信可固件
通过flash下载工具ESPFlashDownloadTool烧录固件
二、实现流程
1.AT指令
1.通过串口发送AT+CWMODE=1进入STA模式 2.通过串口发送AT+CWLAP查询可用热点(路由),并找到ssid(路由/热点名字) 3.串口答复: WIFI CONNECTEDWIFI GOT IP OK 表示成功
font >
具体操作流程:
一、设置8266工作模式
8266一共有三种工作模式,分别为AP、STA、AP+STA,我们通过AT+CWMODE=x(x=1,2,3)指令进行模式的选择。当x为1时为STA模式,为2时为AP模式,3为AP+STA模式
STA模式(Station):相当于终端,连接其他路由器,不能被其他是设备连接 (=没有热点功能的手机)
AP模式(Access Point):提供无线接入服务,允许其他无线设备接入,模块自己就不能连接其他的路由器。(=路由器)
二、连接WIFI热点
AT+CWJAP=“WIFI名”,“WIFI密码”
补充:查询ESP8266所连的路由器网络:AT+CWJAP?
三、建立TCP连接->透传
AT+CIPMUX=x,(x=0或1)
AT+CIPSTART=“TCP”,“这里输入ip地址”,这里输入端口号
前一个指令用来设置TCP的连接模式,0为单连接,1为多连接。
AT+CIPMODE=x(x=0或1),0为普通模式,1为透传模式
这里设置AT指令
AT+CIPMUX=0 , TCP为单连接
AT+CIPMODE=1 , 1为透传模式
AT+CIPSTART=“TCP”,“10.158.121.192”,8086 设置了8266为TCP单连接模式,并与ip地址为10.158.121.192,端口号为8086建立了TCP连接
AT+CIPSEND , 开始透传
退出透传模式的指令+++时,不发送回车换行(串口调试助手发送的话,不勾选“发送新行”)。
四、 通过网络调试助手查看TCP连接情况:
2.接入乐联网平台
1.基于以上操作,我们就开始接入乐联网平台吧
串口输入以下指令,等待回应ack:ok 即可
2.打开keil,在esp8266.c 中输入以下代码,实现http报文发送:
#include "esp8266.h"
#include "sys.h"
#include "common.h"
#include "usart3.h"
void esp8266Init() {//检测wifi模块是否能回复指令printf("1.AT\r\n");while(atk_8266_send_cmd("AT","OK",20)) {}delay_ms(500);//关闭wifi自动连接printf("2. CWAUTOCONN\r\n");while(atk_8266_send_cmd("AT+CWAUTOCONN=0","OK",20)) {}delay_ms(500);//配置wifi模式 AT+CWMODE=1为sta模式printf("3. CWMODE\r\n");while(atk_8266_send_cmd("AT+CWMODE=1","OK",20)) {}delay_ms(500);printf("4. CWJAP\r\n");//连接网络while(atk_8266_send_cmd(ESP8266_WIFI_INFO,"OK",1000)) {}delay_ms(1000);//开启单连接模式,因为透传必须开启单连接模式printf("5. CIPMUX\r\n");while(atk_8266_send_cmd("AT+CIPMUX=0","OK",20)) {}delay_ms(500);//开启透传模式printf("6. CIPMODE\r\n");while(atk_8266_send_cmd("AT+CIPMODE=1","OK",20)) {}delay_ms(500);//建立TCP连接printf("7. CIPSTART\r\n");while(atk_8266_send_cmd(ESP8266_LLW_INFO,"OK",50)) {}delay_ms(500);//进入透传模式printf("7. CIPSEND\r\n");while(atk_8266_send_cmd("AT+CIPSEND","OK",20)) {}delay_ms(500);printf("ESP8266Init ok");}void LLW_send(u8 value1,u8 value2)
{//这里的temp和wet是自己在乐联网上设置的名称//下面是http协议的一些格式,一定要注意有些地方是有空格的char p[100]="";char p1[100]="";sprintf((char*)p,"[{\"Name\":\"temp\",\"Value\":%d}]\r\n",value1);u3_printf("POST /api/V1/gateway/Updatesensors/01 HTTP/1.1\r\n");u3_printf("userkey: 0d11f35a728e405ba72686ab3001c5ca\r\n");u3_printf("Host: open.lewei50.com\r\n");u3_printf("Content-Length: %d\r\n",strlen(p)-2);u3_printf("Connection: close\r\n");u3_printf("\r\n");atk_8266_send_data(p,"true",20);delay_ms(20);sprintf((char*)p1,"[{\"Name\":\"wet\",\"Value\":%d}]\r\n",value2);u3_printf("POST /api/V1/gateway/Updatesensors/01 HTTP/1.1\r\n");u3_printf("userkey: 0d11f35a728e405ba72686ab3001c5ca\r\n");u3_printf("Host: open.lewei50.com\r\n");u3_printf("Content-Length: %d\r\n",strlen(p)-2);u3_printf("Connection: close\r\n");u3_printf("\r\n");atk_8266_send_data(p1,"true",20);
}
3.创建一个乐联网账号,并且设置好所需要用的温湿度传感器
3.代码实现
main.c 如下:
/******************************************************************************** * FileName : main.c * Version : v1.0 * Author : JackyFeng * Date : 2022-01-16 * Description: ESP8266实现DHT11采集温湿度数据上传并显示在乐联网平台* Function List: 1. ....<version>: <modify staff>:<data>:<description>: 开发板:正点原子STM32f103ZE精英开发板 2. ...*******************************************************************************/
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "key.h"
#include "usart3.h"
#include "common.h"
#include "dht11.h"
#include "esp8266.h"u8 temperature;
u8 humidity;/* -------------------------------- begin -------------------------------- */
/*** @Name main* @brief * @param None* @retval* @author JackyFeng* @Data 2022-01-16* 1. ...* <modify staff>:* <data> :* <description> : ESP8266实现DHT11采集温湿度数据上传并显示在乐联网平台* 2. ...**/
/* -------------------------------- end -------------------------------- */int main(void)
{u8 t=0;delay_init(); //延时函数初始化NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级uart_init(115200); //串口初始化为115200LED_Init(); //初始化与LED连接的硬件接口LCD_Init(); //初始化LCDusart3_init(115200); //初始化串口3KEY_Init(); //初始化按键POINT_COLOR=RED; //设置字体为红色esp8266Init();while(DHT11_Init()) //DHT11初始化{LCD_ShowString(30,130,200,16,16,"DHT11 Error");delay_ms(200);LCD_Fill(30,130,239,130+16,WHITE);delay_ms(200);}LCD_ShowString(30,130,200,16,16,"DHT11 OK");POINT_COLOR=BLUE;//设置字体为蓝色LCD_ShowString(30,150,200,16,16,"Temp: C");LCD_ShowString(30,170,200,16,16,"Humi: %");while(1){if(t%10==0) //每100ms读取一次{DHT11_Read_Data(&temperature,&humidity); //读取温湿度值LCD_ShowNum(30+40,150,temperature,2,16); //显示温度LCD_ShowNum(30+40,170,humidity,2,16); //显示湿度}delay_ms(10);t++;if(t==20){t=0;}delay_ms(10000);//上传时间间隔10秒LLW_send(temperature,humidity);//温湿度数据上传乐联网平台}
}
keil编译后,乐联网平台显示如下:
传感器状态为蓝色即为开启成功
三、数据可视化分析
1.温度可视化折线图
2.温度可视化历史统计
3.温度可视化柱状图
4.设备监控
正点原子STM32f103ZE精英开发板实现基于ESP8266 WIFI模块温湿度数据上传至乐联网平台相关推荐
- 【毕设项目】基于STM32F103ZET6的土壤温湿度数据采集和存储系统
目录导航 一.前言 二.准备工作 三.实现流程 1.keil编程 2.机智云台开发 3.Android开发 四.数据可视化分析 五.小结 一.前言 上一篇博客提到<正点原子STM32f103ZE ...
- 大数据上传-GB/T 32960测试开发实践
文章目录 前言 GB/T 32960介绍 GB/T 32960测试开发 总结 参考文献 前言 数据时代,数据为王.车辆网联化为汽车数据时代提供技术支撑,更多的数据可被收集,但是哪些数据需要被收集,又如 ...
- 新大陆物联网-Android实现网关功能-连接云平台并上传传感器数据-获取执行器指令并执行-Android网关开发-通信-数据上传云平台-JAVA原理讲解-免费云平台使用-竞赛2022国赛真题
目录 一.任务要求 二.开发环境 三.网关上线 四.数据上传与命令下发 五.JSON命令解析思路 六.总结 一.任务要求 我们将要实现的效果是:Android开发平板与Lora板进行有线串口通信,解析 ...
- 【Verilog】基于Nexys4DDR开发板实现数字钟
功能: 基于Nexys4DDR开发板实现的数字钟,六位数码管显示时分秒,可切换24时制/12时制,有整点报时功能(led灯闪烁). Verilog代码: `timescale 1ns / 1ps//数 ...
- fpga驱动rgb液晶屏_正点原子开拓者FPGA开发板资料连载第五十四章基于的数字识别实验...
1)实验平台:正点原子开拓者FPGA 开发板 2)摘自<开拓者FPGA开发指南>关注官方微信号公众号,获取更多资料:正点原子 3)全套实验源码+手册+视频下载地址:http://www.o ...
- 基于PYNQ-Z2开发板实现矩阵乘法加速详细流程
基于PYNQ-Z2开发板实现矩阵乘法加速 主要内容 1.在Vivado HLS中生成矩阵乘法加速的IP核. 2.在Vivado中完成Block Design. 3.在Jupyter Notebook上 ...
- 基于正点原子STM32F103精英板IIC实验的MS5611气压计的使用
MS5611是一款气压计,能够提供高精度的气压值与温度值,这次做项目正好需要用到这款传感器,包括之前也没好好学习用过IIC,所以写下博客记录一下. 如果有需要使用的朋友可以去https://downl ...
- 基于正点原子STM32F1精英版秒表(库函数版)
基于正点原子STM32F1精英版秒表(库函数版) 一.前期准备 二.代码实现: 1.独立按键与触摸按键 2.TFTLCD 3.定时器 4.蜂鸣器与LED灯 5.主函数设计 三. 结束语: 一.前期准备 ...
- Mixly(米思齐)的安装以及基于Arduino开发板实现电容触摸控制灯
Mixly(米思齐)的安装以及基于Arduino开发板实现电容触摸控制灯 1.Mixly下载 http://mixly.org/bnu-maker/mixly-arduino-win Mixly软件安 ...
最新文章
- DSAPI多功能组件编程应用-DS提示气泡
- python基于水色图像的水质评价_基于Python和遥感图像的膨胀与腐蚀操作
- python 简易 http server
- # 睡眠3秒_【for fun】睡眠排序算法
- php格式化输出字_PHP 输出格式化字符串
- CentOS 7的安装
- Asp.Net客户端触发服务器端事件及_dopostback
- 读书笔记 - 简约之美:软件设计之道
- 中原建业在港上市首日破发,基石投资者祥来及楼公望亏780万港元
- Layui Table格式化日期(表格)
- 子曰:中庸之为德也,其至矣乎!民鲜久矣。
- addClass()与removeClass
- RIGHT-BICEP测试第二次
- 【侠客行】Lombok深度解析
- ERP在企业财务管理中的应用
- Windows11/10 使用RDP远程桌面时提示 您的凭据不工作/登录没有成功可能的一种原因
- 图象恢复——(逆滤波,维纳滤波)
- 括号匹配问题(数据结构)
- 该不该抛弃那匹马呢?
- 什么是(抽象方法,普通方法,抽象类、接口),区别又是什么?