基于STM32的(NB-IOT(BC26))温湿度监测系统

3 篇文章 2 订阅
2 篇文章 0 订阅

基于STM32的(NB-IOT(BC26))温湿度监测系统

闲来无事,用手头STM32做个项目。

成品功能:STM32采集温度、湿度数据,显示在屏幕上,通过NB-IOT(BC26)模块连接阿里云物联网平台接受数据并实时监控。


材料

  • STM32ZET6开发板(战舰V3)
  • TFT显示屏(战舰有我用的2.7寸的)
  • NB-IOT(BC26)模块
  • DHT11温湿度模块
  • 杜邦线
  • 用keil5进行开发

开始制作。

制作过程

首先从板子测温湿度开始

DHT11温湿度模块

原子哥有DHT11例程,所以直接在此基础上进行开发

下载上之后这是效果。

阿里云物联网平台

先到阿里云物联网平台注册一个设备。

  1. 进入阿里云官网搜索物联网平台,现在可以免费注册一个。
  2. 点击设备接入服务
    在这里插入图片描述
  3. 点击创建产品在这里插入图片描述
  4. 联网方式要选择蜂窝(4G)网络在这里插入图片描述
  5. 点击添加设备输入设备名称在这里插入图片描述
  6. 选中该设备之后,点击查看DeviceSecret码在这里插入图片描述
  7. 记录这三个码后边有用在这里插入图片描述
  8. 在设备中查看要发布信息的地址(下边的属性上报)在这里插入图片描述
  9. 查看信息的标识符,既传送信息的头部在这里插入图片描述
  10. 阿里云物联网平台接受的是json格式,所以数据发送的格式为:
    AT+QMTPUB=0,0,0,0,"/sys/a1Xi4HdVogd/mzh001/thing/event/property/post","
    {"id":"26","version":"1.0","params": { "CurrentTemperature":{"value":32},"GeoLocation":{"E":123,"W":234} }, "method":"thing.event.property.post"}"
NB-IOT(BC26)模块

先用USB转TTL,用串口助手,用AT指令进行调整

这是用到的AT指令
在这里插入图片描述

硬件连接:BC26的VIN接TTL的5V,BC26的GND接TTL的地,BC26的RX接TTL的TX,BC26的TX接TTL的RX,跳线帽短接BC26的PWR和3.3V

注意地和电千万不能接错,会烧坏器件!!!
接好后插电脑上,连接串口助手(我用原子哥的XCOME)。

指令返回说明
ATOK模块正常,可正常实现收发
AT+CIMI460043331505555查询是否有卡
AT+CSQ1~31信号强度
AT+CGATT?+CGATT: 1查询网络注册情况
AT+CGPADDR=1+CGPADDR: 1,10.68.55.555查询是否分配IP地址
AT+QMTCFG=“aliauth”,0,“a1Xi4HdV4gd”,“mz4001”,“c538f1eb6deb2020c83579bac4444405”OK配置 MQTT 可选参数
AT+QMTOPEN=0,“iot-as-mqtt.cn-shanghai.aliyuncs.com”,1883+QMTOPEN: 0,0打开 MQTT 客户端网络
AT+QMTCONN=0,“test21115”+QMTCONN: 0,0,0连接客户端至 MQTT 服务器
AT+QMTPUB=0,0,0,0,"/sys/a1Xi4HdVogd/mzh001/thing/event/property/post","{“id”:“26”,“version”:“1.0”,“params”:{“Temperature”:{“value”:32}},“method”:“thing.event.property.post”}"+QMTPUB: 0,0,0发布消息

接着用串口助手发送这些指令进行调试。
在这里插入图片描述
在这里插入图片描述
说明:

  1. 数据5要结合你的阿里云物联平台中的7的三个码ProductKeyDeviceNameDeviceSecret
  2. 数据6要结合阿里云地址和端口,一般设置这个就可以。
  3. 数据7是登陆请求,这个名字一般没什么要求,只要不重复即可。
  4. 数据8要注意中间那个地址就是阿里云物联网平台8中那个属性上报的topic地址。后边的params要结合json数据格式以及阿里云物联网平台9中的标识符,数据要注意阿里云物联网平台9中的数据格式。
  5. 最后返回+QMTPUB: 0,0,0表示发送成功。
  6. 到阿里云物联网平台查看数据。点击设备点击查看,点击物联网数据,可以打开实时更新。在这里插入图片描述
  7. 数据出现问题,可以到日志中查看问题原因。在这里插入图片描述
  8. 设备物联网模型中出现我们上传的数据就表示成功了。

这样USB转TTL单独调试就成功了。

接下来将这些放到板子中实现自动化。

板载上传数据

移植墨子号STM32F103RC的例程

  1. 首先在DHT11例程的基础上,将printf函数改为串口2,方便连接。初始化串口2。
//重定义fputc函数
int fputc(int ch, FILE *f)
{      
	while((USART2->SR&0X40)==0);//串口2输出,循环发送直到发送完毕
    USART2->DR = (u8) ch;      
	return ch;
}
  1. 移植BC26初始化以及连接函数。
void OPEN_BC26(void)
{
   char *strx;
    printf("AT\r\n"); 
    delay_ms(300);
    strx=strstr((const char*)USART_RX_BUF,(const char*)"OK");//返回OK
    printf("AT\r\n"); 
    delay_ms(300);
    strx=strstr((const char*)USART_RX_BUF,(const char*)"OK");//返回OK
   if(strx==NULL)
	{
        delay_ms(300);
        delay_ms(300);
        delay_ms(300);
        delay_ms(300);	
	}
    printf("AT\r\n"); 
    delay_ms(300);
    strx=strstr((const char*)USART_RX_BUF,(const char*)"OK");//返回OK
    printf("ATE0&W\r\n"); //关闭回显
    delay_ms(300); 
    LED0=0;
    printf("AT+QMTDISC=0\r\n");//关闭连接 
    delay_ms(300);
    printf("AT+QMTCLOSE=0\r\n");
    delay_ms(300); 
}

3.main()函数中初始化

	OPEN_BC26();//对BC26开机
	BC26_Init();//对BC26初始化
	MQTT_Init();//连接阿里云

板子串口返回+QMTOPEN: 0,0表示连接成功。
4. 将需要传送的值通过aliyunMQTT_PUBdata(temp,humi);函数发送到MTQQ准备函数中。
5. 接收之后通过

//访问阿里云需要提交的数据
u8 Mqttaliyun_Savedata_tm(u8 *t_payload,u8 temp,u8 humi)
{
    char json[]="{\"id\":\"26\",\"version\":\"1.0\",\"params\":{\"CurrentTemperature\":{\"value\":%d},\"CurrentHumidity\":{\"value\":%d}},\"method\":\"thing.event.property.post\"}";	 
    char t_json[200];
    unsigned short json_len;
    sprintf(t_json, json, temp, humi);
    json_len = strlen(t_json)/sizeof(char);
  	memcpy(t_payload, t_json, json_len);
    return json_len;
}

函数包装成需要提交的数据JSON格式。
6. 发送数据并查看返回值

void aliyunMQTT_PUBdata(u8 temp,u8 humi)
{
     u8 t_payload[200],len,t_payload_1[200],len_1;;
     printf("AT+QMTPUB=0,0,0,0,%s\r\n",PubTopic);//发布主题
     delay_ms(300);
     len=Mqttaliyun_Savedata_tm(t_payload,temp,humi);
     t_payload[len]=0;
     printf("%s",t_payload);
  while((USART2->SR&0X40)==0){}//循环发送知道发送完毕
     USART2->DR = (u8) 0x1A;    
     delay_ms(100);
     strx=strstr((const char*)RxBuffer,(const char*)"+QMTPUB: 0,0,0");//看下返回状态
  while(strx==NULL)
    {
        strx=strstr((const char*)RxBuffer,(const char*)"+QMTPUB: 0,0,0");//看下返回状态
    }
    Clear_Buffer(); 
}
  1. 查看串口助手返回
    +QMTPUB: 0,0,0
    :0.0},"HoldingTemperature":13,"Diu":0},"method":"thing.event.property.post"}
    OK这个表示成功。
  2. 到阿里云物联网平台查看设备。打开设备实时更新,可以看到数据更新正常。在这里插入图片描述

最后附上完整的项目文件。自行下载。
https://download.csdn.net/download/weixin_42320020/19103652

这个项目到这里就算完了。
还有很多不足的地方,希望大佬可以指正。也希望和爱好者交流学习。


大家有想法可以私信或者留言,博主有时间会帮大家做一些项目。

禁止转载!!!
QQ:2039723308
VX:Shiboven

  • 37
    点赞
  • 332
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
基于stm32nb-iot技术的智能水产养殖系统,是一种利用物联网技术与单片机相结合的水产养殖系统。 该系统主要由stm32nb-iot开发板、传感器、执行器和云平台组成。stm32nb-iot开发板通过nb-iot网络与云平台进行通信,实现水产养殖系统的智能化管理。 在该系统中,传感器起到了收集环境参数的作用,包括水质、温度、湿度等。传感器将这些数据通过stm32nb-iot开发板发送到云平台进行分析和存储。通过分析这些数据,我们可以了解水产养殖环境的实时情况,根据需要进行相应的调节。 同时,该系统还配备了执行器,用于执行根据云平台分析结果而产生的控制指令。例如,在水质不达标时,云平台会下发相应的指令到stm32nb-iot开发板,执行器会根据指令控制水泵、加热器等设备进行调节,以保证水产的健康和生长。 云平台系统作为核心,承担了数据的存储和分析。通过对数据进行分析,可以提供水产养殖的指导和预测报告,帮助养殖者做出更加科学、精准的管理决策。 基于stm32nb-iot技术的智能水产养殖系统具有实时性强、远程监控、自动化调控等特点。通过这个系统,水产养殖业可以更加科学、高效地进行管理,提高了养殖效益和生产效率。同时,也减少了人力资源的消耗和水产养殖过程中的不可预测性,为水产养殖业的健康发展提供了有力的支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

释博文

您的鼓励是我最大的动力!

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

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

打赏作者

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

抵扣说明:

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

余额充值