(四)AIR800接收STM32发送的温湿度上传阿里云并远程控制STM32LED亮灭

最终要实现的功能:

1、STM32采集温湿度通过串口1发送至AIR800,然后通过AIR800将温湿度上传至阿里云
2、阿里云物联网云平台下发命令通过AIR800控制STM32的LED亮灭(打开或关闭功能,或者定时 自动打开和自动关闭)
3、通过nrf24l01实现点对点通信,阿里云下发数据至air800,STM32(A)串口2接收数据之后进行判断,如果需要控制另一个STM32的LED灯,则会将数据发送至另外一个STM32(B),STM32(B)通过数据判断执行相应的功能

本部分要实现的功能:
(1)Air800接收STM32发送的温湿度并上传至阿里云物联网云平台
(2)阿里云物联网云平台下发控制LED亮灭的指令,和定时开关LED的指令

一、首先进行云端部署

阿里云云端部署前面已经介绍过,这里不再介绍,在阿里云上创建自己的产品和设备,云端创建物模型进行显示云下设备上传数据,以及Air800如何订阅并解析云端数据等请依次打开下面链接查看

1–云端部署-阿里云上创建属于自己的产品和设备

2–mqtt客户端接入阿里云–云端查看接收到的数据(只看云端创建物模型部分即可)

3–Air800接入阿里云–设备发送静态数据-云端进行显示

4–air800订阅云端数据并进行解析

在自己的设备下创建四个属性,温湿度,开关值,定时时间
在这里插入图片描述

二、修改云下设备代码

1、首先移植串口部分的程序到所编写的程序中
在这里插入图片描述

2、打开上面的程序代码后,仿照串口例程把需要的东西进行赋值粘贴到程序中去
在这里插入图片描述

3、在顶部添加变量
在这里插入图片描述
4、把串口发送函数和接收函数全部复制过来,串口接收函数最后用完注释掉即可

在这里插入图片描述

5、编写向云端发布函数
图中串口部接收部分是串口接收函数中的代码,复制过来后,串口接收函数删掉即可
在这里插入图片描述

整个发布函数如下

--发布一条QOS为1的消息
function publishTest()
if sConnected then
    --注意:在此处自己去控制payload的内容编码,aLiYun库中不会对payload的内容做任何编码转换

    while true do        
    data = uart.read(UART_ID,"*l")
    --这一部分放在前面是为字符串搜索和转化提供点时间
    local hum1=string.match(data,"%d+",8)
    local hum=tonumber(hum1)--这是将字符串转化为数值
    basedata["params"]["hum"]=hum	--这是赋值湿度数值

    if not data or string.len(data) == 0 then break end

    if true then
	local temp1=string.match(data,"%d+ ")
	local temp_data=tonumber(temp1)--这是转化为数值
	print(type(temp_data))--打印转换后的数据类型用于判断是否转化成功
	basedata["params"]["temp"]=temp_data --上传温度数值
	print("temp1",temp1)
	print("---------------")
    end
    jsondata=json.encode(basedata)--进行编码传输
   aLiYun.publish("/sys/"..PRODUCT_KEY.."/"..getDeviceName().."/thing/event/property/post",jsondata,1,publishTestCb,"publishTest_"..publishCnt)
  end  
 
end
end

6、订阅函数,进行数据解析
将解析到的数据发送至串口1(串口1是连接STM32的串口2的—比特率一定要一致)
在这里插入图片描述

数据订阅并解析函数

---数据接收的处理函数
-- @string topic,UTF8编码的消息主题
-- @number qos,消息质量等级
-- @string payload,原始编码的消息负载
local function rcvCbFnc(topic,qos,payload)
log.info("testALiYun.rcvCbFnc",topic,qos,payload)

print("-----------------------------------------")
local tjsondata,result,errinfo = json.decode(payload)
--以下为解析数据
if result then
    local switch_rcv=0
    switch_rcv=tjsondata["params"]["switch"]--把对应的开关属性值取出来
   	local time=0
	time=tjsondata["params"]["set_time"]--把对应的定时信息数值取出来
    print("switch_value",type(switch_rcv),switch_rcv)
	print("set_time",type(time),time)

    if switch_rcv == 1 then
		write("led on")
		basedata["params"]["switch"]=1 --上传开关数值
	elseif switch_rcv == 0 then
		write("ledoff")
		basedata["params"]["switch"]=0 --上传开关数值
	else
		write(time)
		basedata["params"]["set_time"]=time--上传定时时间
		write(time)
	end

else
    print("json.decode error",errinfo)
end
print("--------------------------")
end

7、烧写程序进行调试即可,
STM32通过串口1发送温湿度至AIR800接收端
AIR800通过串口发送至STM32串口2接收端

下为air800订阅云端数据解析结果
在这里插入图片描述

在这里插入图片描述

开关值和定时是通过阿里云产品下的在线调试功能,调试真实设备对设置下达指令后所返回的值,温湿度则是云下设备上传的值
在这里插入图片描述

再次调试设备效果如下
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
STM32代码参考如下:
STM32+DHT11+OLED+RTC+MQ2+NRF24L01+串口1,2-----代码参考
AIR800代码参考-合宙AIR800+阿里云+上传数据+订阅数据+打电话+串口接收/发送

这样云端和设备就打通了,设备上报数据至阿里云,阿里云下发指令简单的控制STM32的LED

下一步是在设备端添加nrf24l01,和另外一个STM32点对点通信

  • 10
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 31
    评论
你可以按照以下步骤基于STM32读取SHT20温湿度,并使用AT指令结合Air780e模块将数据连接到华为云平台上报温湿度: 1. 硬件连接: - 将SHT20传感器与STM32控制器进行连接,确保电源和通信线路正确连接。 - 将Air780e模块连接STM32的串口或者使用其他通信方式(例如SPI)进行连接。 2. 在STM32上配置和读取SHT20传感器: - 首先,确保你已经熟悉STM32的开发环境和编程语言(如C/C++)。 - 使用合适的GPIO引脚进行数据线和时钟线的连接。 - 在代码中使用相应的库函数或者驱动程序来初始化I2C总线和配置SHT20传感器。 - 使用对应的函数读取温湿度数据。 3. 配置和使用Air780e模块: - 确保你已经熟悉Air780e模块的AT指令集和相关文档。 - 使用串口或其他通信方式与Air780e模块进行通信。 - 通过AT指令将Air780e模块配置为与华为云平台通信所需的参数,如APN、用户名、密码等。 - 使用AT指令将温湿度数据发送到华为云平台。你可以选择MQTT或者HTTP等协议进行数据上报。 4. 在华为云平台接收和处理数据: - 在华为云平台上创建相应的设备和产品,获取设备的身份标识和访问密钥等信息。 - 在设备端使用相应的库函数或者驱动程序将温湿度数据发送到华为云平台。 - 在华为云平台上创建相应的Topic或者API接口来接收和处理温湿度数据。 请注意,在实际开发中可能还需要处理异常情况、错误处理、数据加密等其他问题。此外,确保你已经阅读了STM32、SHT20、Air780e以及华为云平台的官方文档,并且遵循相关的开发规范和最佳实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

永栀哇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值