物联网应用开发--传感器数据上传新大陆云平台(STM32+SHT20温湿度+ESP8266+TCP)

实现目标

1、掌握新大陆云平台传感器的创建

2、熟悉STM32 +HAL与ESP8266模块之间的通信

3、具体实现目标:(1)创建2个传感器:温度传感器,湿度传感器;(2)上传开发板上的SHT20温湿度传感器数据至云平台。


前言

1、 上期已实现云平台创建的执行器对开发板上的蜂鸣器和LED的控制,详细请参考教程:https://blog.csdn.net/luojuan198780/article/details/138860797

2、关于温湿度传感器SHT20 的知识请参考教程:https://blog.csdn.net/luojuan198780/article/details/139030385

一、项目创建

本次项目整体:创建5个执行器(已建)+温湿度传感器(待建)

1.1 温度传感器创建

说明:湿度传感器除了名称和温度传感器一样

1.2 温度传感器创建后整体效果

二、开发板连接图

开发板P7四个跳键帽接法如下图:

说明:单片机的USART1 用于调试信息打印;USART2用于与ESP8266模块通信。

三、STM32CubeMX 配置

3.1 GPIO配置

BEEP :初始电平为低电平,推挽输出;LED1-LED4:初始电平为高电平,推挽输出。

3.2 串口USART1配置

**USART1:**异步模式,波特率115200,功能:用于打印调试信息

3.3 串口USART2配置

USART2: 异步模式,波特率115200,开启DMA,开启中断。功能:用于与ESP8266通信

3.4 IIC 配置

(1)开启I2C,其它默认

(2)打开中断(USART2 、I2C1)

四、程序设计

说明:整个工程的代码量大,下面只列出整个工程中温湿度传感器数据上传函数。

4.1在CloudReference.h 修改wifi名称、密码以及设备标志、SecretKey

4.2 stm32App.c 中数据上传部分新增温湿度数据上传

cpp 复制代码
if(TimeCount >= 1000)//10S发送一次数据
{
	TimeCount=0;
	SHT20_GetValue();
	printf( "Temperature:%0.1fC,Humidity:%0.1f%%\r\n",sht20_info.tempreture,sht20_info.humidity);                   
	ESP8266_SendSensor(sht20_info.tempreture,sht20_info.humidity);									
	ClrAtRxBuf();
}

4.3 打开 WiFiToCloud.h 文件重新声明修改后函数

cpp 复制代码
//int8_t ESP8266_SendSensor(uint8_t sensor, char *TimeStr);
int8_t ESP8266_SendSensor(float sensor1,float sensor2);

4.4 修改WiFiToCloud.c文件中函数

修改ESP8266_SendSensor 函数形参个数,修改上传数据格式。

同时上传温湿度数据,数据类型为浮点型,具体格式见下:

sprintf((char *)TxetBuf,"{\"t\":3,\"datatype\":1,\"datas\":{\"temp\":\"%.1f\",\"hum\":\"%.1f\"},\"msgid\":001}",sensor1,sensor2);

协议文档下载:http://www.nlecloud.com/doc/resources.shtml

//传感器数据上传函数

cpp 复制代码
int8_t ESP8266_SendSensor(float sensor1,float sensor2)
{
	uint8_t TryGo = 0;
	int8_t error = 0;
	uint8_t TxetBuf[MAX_AT_TX_LEN];
	memset(TxetBuf,0x00,MAX_AT_TX_LEN);//清空缓存
	sprintf((char *)TxetBuf,"{\"t\":3,\"datatype\":1,\"datas\":{\"temp\":\"%.1f\",\"hum\":\"%.1f\"},\"msgid\":001}",sensor1,sensor2);
	//printf("%s\r\n",TxetBuf);
	if(ESP8266_IpSend((char *)TxetBuf, strlen((char *)TxetBuf)) < 0)
	{//发送失败
		error=-1;
	}
	else
	{//发送成功
		for(TryGo = 0; TryGo<50; TryGo++)//最多等待时间50*10=500ms
		{
			if(strstr((const char *)AT_RX_BUF, (const char *)"\"status\":0") == NULL)//检查响应状态是否为"上报成功"
			{
				error = -1;
			}
			else
			{
				error = 0;
				break;
			}
			HAL_Delay(10);
		}
	}
	return error;
}

五、实验效果

设备在线后,打开"实时数据"开关,可以看见传感器数据上传。

六、仿真实现


总结

工程代码:https://download.csdn.net/download/luojuan198780/89330194

相关推荐
金色光环1 小时前
stm32与tp-linkv2接线、解决识别不到芯片问题
stm32·单片机·嵌入式硬件
boyedu2 小时前
物联网技术的关键技术与区块链发展趋势的深度融合分析
物联网·区块链
合作小小程序员小小店2 小时前
web渗透之指纹识别1
物联网·计算机网络·网络安全·网络攻击模型
流口水的兔子2 小时前
作为一个新手,如果让你去用【微信小程序通过BLE实现与设备通讯】,你会怎么做,
前端·物联网·微信小程序
森焱森3 小时前
APM与ChibiOS系统
c语言·单片机·算法·架构·无人机
xhload3d5 小时前
智慧航天运载体系全生命周期监测 | 图扑数字孪生
物联网·3d·智慧城市·html5·webgl·数字孪生·可视化·工业互联网·三维建模·工控·航空航天·火箭升空·智慧航空·智慧航天·火箭发射·火箭回收
Wangshanjie_985 小时前
【STM32】-单片机数据通讯基本概念
stm32·单片机
不落的太陽6 小时前
让测距功能与时俱进
单片机·嵌入式硬件
Funing76 小时前
stm32地址偏移:为什么相邻寄存器的地址偏移量0x04表示4个字节?
stm32·单片机·嵌入式硬件
W说编程6 小时前
物联网通信技术全景剖析:从LoRa到5G的深度对比与选型指南
网络·物联网·5g·射频工程