物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具

物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具

    • 文章摘要
    • 整体展示
      • 视频展示
      • 1.流程图
      • 1.硬件设备和APP端、华为云平台
    • 一、项目场景及功能说明
      • 1.项目场景
      • 2.功能说明
    • 二、华为云平台搭建
      • 1.产品信息
      • 2.确定平台的服务和属性以及命令参数
      • 3.在华为云平台创建产品
    • 三、硬件选择
      • 1、STM32F103RCT6
      • 2、传感器选择和部分硬件
    • 四、用ESP8266 wifi模块联网华为云平台
      • 1、AT固件库
      • 2、esp8266模块AT指令的测试
      • 3、获得华为云平台的设备三元组和接入地址、端口号
      • 4.esp8266模块联网华为云平台(PC机测试端和32开发板硬件端以及接线方式)
    • 四、华为云平台的数据上报
      • 1.首先是向华为云平台进行订阅(包括数据上报、命令下发,命令响应)
      • 2.进行数据上报,首先要进行传感器初始化(这里以超声波传感器为例)
      • 3.进行数据上报
    • 五、华为云平台的命令下发与响应(这里以水泵的操作为例)
    • 五、华为云平台设置联动规则,实现自动模式和手动模式
    • 六、APP端功能展示
    • 七、总结与资源获取

文章摘要

本文主要讲解了物联网IOT技术全栈开发,基于STM32F103RCT6开发板,使用keil编译工具(标准库模式),采用华为云平台设计的一个智能养殖系统以及相关APP的开发的详细步骤。并且可以根据该系统模型进行场景改造,可以在本模型的架构下轻松改造中智慧农业、智慧交通、智慧家居等等相关模型系统。

整体展示

视频展示

可以点击下发链接转置B站观看演示视频:
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具

1.流程图

物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第1张图片

1.硬件设备和APP端、华为云平台

物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第2张图片

一、项目场景及功能说明

1.项目场景

本次设计的基于室内智能养殖系统主要通过wifi联网方式,使华为云平台收集传感器上报的数据(包括温湿度、食物重量、水分余量、空气质量等),我们不仅可以通过手机app端及时观看养殖场环境数据,也可以通过养殖场内设计的OLED屏查看数据,而查看数据的权限则要RFID技术实现。;同时通过华为云平台或手机app下发指令控制水泵、电机等硬件设备完成补给粮食、补充水、清洁等功能并及时对命令进行响应,使我们可以根据监测到的数据及时下发命令完成各种操作;同时为方便日常操作,还在华为云平台上设计了一个设备联动规则,用于实现自动模式和手动模式的切换,通过设定一定的阈值来下发操作命令实现自动补给粮食、水等操作。

2.功能说明

1.通过传感器设备实时检测养殖场的温湿度、气体浓度、以及食物和水分余量等;
2.通过电机、水泵等设备实现补给和清洁功能;
3.通过WIFI模块进行组网,并在华为云平台创建产品,实时上报传感器收集的数据,同时下发命令对水泵、电机进行操作并响应;
4.通过华为云平台的设备联动规则实现对补充粮食、补水以及清洁的自动模式和手动模式;
5.通过RFID技术实现对室内OLED屏显示的环境信息查看的权限管理;
6.通过app端可查看相关传感器数据,并下发命令,切换工作模式,数据查询。

二、华为云平台搭建

1.产品信息

物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第3张图片

2.确定平台的服务和属性以及命令参数

物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第4张图片
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第5张图片

3.在华为云平台创建产品

可以转置以下文章:

还未发布,如需技术支持,可后台联系我或直接评论,看到都会回复,续将更新更详细的文章进行讲解。

三、硬件选择

1、STM32F103RCT6

物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第6张图片

2、传感器选择和部分硬件

  • esp8266-01s wifi模块
  • DHT11 温湿度传感器
  • MQ- 135 氨气传感器
  • JW01 三合一空气传感器
  • HW- 181 声音传感器
  • HC-SR04 超声波传感器
  • HX711 模块+5kg 压力传感器
  • OLED 屏
  • MFRC-522 RC522 RFID 射频 IC 卡感应模块
  • 水泵和电机

相关传感器模块如需技术支持,也可后台咨询我,或直接评论,看到都会回复,后续将更新更详细的文章进行讲解各个模块。

四、用ESP8266 wifi模块联网华为云平台

ESP8266模块
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第7张图片

1、AT固件库

首先我们手上的有些模块可能已经无法使用AT指令,或者出厂固件不支持全部的MQTT功能,因此需要首先对esp8266进行MQTT固件烧录,自行从官网上下载烧录软件和指定的固件库
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第8张图片

2、esp8266模块AT指令的测试

AT
AT+CWMODE=1
AT+CWJAP=“huawei”,“123123123”

用USB转TTL模块连接ESP8266至电脑,与电脑通过串口进行AT通信,发送以上三步,观察手机热点是否能够连上esp8266设备,并观察串口是否返回“ok”指令。、
(注意将AT+CWJAP=“huawei”,"123123123"中的"huawei"改为自己的热点名字,"123123123"改为自己的热点密码,同时切记将热点频段由5改为2.4)

运行成功会如下显示:
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第9张图片

3、获得华为云平台的设备三元组和接入地址、端口号

1.在华为云平台创建设备后获取设备的ID和密码
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第10张图片

2.在(产品文档-开发指南-设备测开发)中寻找该界面后输入设备的ID和密码即可获得设备三元组
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第11张图片
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第12张图片

3.获得独属自己的华为云接入地址
(注意本系统采用的是MQTT协议)

  1. 端口号大家都一致:1883
  2. 获取接入地址
    点击 总览–接入信息–复制接入地址(可以将接入地址用电脑ping一下得到常见的127.什么的类型,该步骤可做也可不做)物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第13张图片

至此,我们接入华为云所需要的信息已经全部准备完毕,可将其编写在我们keil中的esp8266.h文件中。如下所示:
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第14张图片

4.esp8266模块联网华为云平台(PC机测试端和32开发板硬件端以及接线方式)

  • PC机测试端(最好先进行PC机端测试在进行开发板连接)

1.首先可在电脑主机进行串口通信测试)(用USB转TTL模块连接esp8266与电脑进行AT通信)
成功连上云平台会有如下显示:
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第15张图片
发送AT指令如下

AT

AT+CWMODE=1

AT+CWJAP=“wifi名称”,“wifi密码”

AT+MQTTUSERCFG=0,1,“NULL”,“设备三元组USERNAME”,“设备三元组PASSWORD”,0,0,“”

AT+MQTTCLIENTID=0,“设备三元组的ClientID”

AT+MQTTCONN=0,“产品接入地址”,1883,1

至此我们的esp8266模块就成功连上华为云平台了。

  • 32开发板硬件端

1、接线方式
采用3.3v
RX接PA9
TX接PA10
(esp8266模块共有六个引脚,在连接到开发板的时候只需使用电源,地线,RX,TX四个引脚)

2、keil端程序编写
首先在esp8266.c程序中编写发送AT指令的at函数

void at(char string[500])//等待正确回复
{
		flag=0;
    printf("%s\r\n",string);
		while(1)
		{
			if(flag==1)	//当串口中断判断接收到的回复为正确回复时会将flag置1
			{
				flag=0;
				break;
			}
			else 
				delay_ms(50);
		}	
}

其次在esp8266.c程序中编写需要发送的相关AT指令进行发送,最后在主函数main.c中进行初始化在编译运行即可联网华为云平台,打开华为云平台可以发现设备处于在线状态

at("AT");					//AT测试
delay_ms(2000);					//等待设备重启
at("AT");					//AT测试
at("AT+CWMODE=1");//设置模块为STA模式
sprintf(str_temp,"AT+CWJAP=\"%s\",\"%s\"",WIFI_SSID,WIFI_PWD);	//连接WiFi
at(str_temp);
sprintf(str_temp,"AT+MQTTUSERCFG=0,1,\"NULL\",\"%s\",\"%s\",0,0,\"\"",USERNAME,PASSWORD);//设置MQTT的登陆用户名与密码
at(str_temp);
sprintf(str_temp,"AT+MQTTCLIENTID=0,\"%s\"",ClientID);//设置MQTT的ClientID
at(str_temp);
sprintf(str_temp,"AT+MQTTCONN=0,\"%s\",%s,1",ADDRESS,PORT);//设置MQTT接入地址与端口号
at(str_temp);
sprintf(str_temp,"AT+MQTTSUB=0,\"$oc/devices/%s/sys/properties/report\",1",DeviceID);	//订阅设备属性上报的主题
at(str_temp);
sprintf(str_temp,"AT+MQTTSUB=0,\"$oc/devices/%s/sys/commands/#\",1",DeviceID);//订阅设备命令接收的主题
at(str_temp);
sprintf(str_temp,"AT+MQTTSUB=0,\"$oc/devices/%s/sys/commands/response/#\",1",DeviceID);//订阅设备命令响应的主题
at(str_temp);
        

至此,我们以及完成了esp8266模块联网华为云平台了!!! 坚持就是胜利!

四、华为云平台的数据上报

1.首先是向华为云平台进行订阅(包括数据上报、命令下发,命令响应)

订阅的过程也是向华为云平台发送AT指令,进行订阅,这里在上一步已经完成了订阅了!!

(无需进行重复操作,只做简单说明)

sprintf(str_temp,"AT+MQTTSUB=0,\"$oc/devices/%s/sys/properties/report\",1",DeviceID);	//订阅设备属性上报的主题
at(str_temp);
sprintf(str_temp,"AT+MQTTSUB=0,\"$oc/devices/%s/sys/commands/#\",1",DeviceID);//订阅设备命令接收的主题
at(str_temp);
sprintf(str_temp,"AT+MQTTSUB=0,\"$oc/devices/%s/sys/commands/response/#\",1",DeviceID);//订阅设备命令响应的主题
at(str_temp);

2.进行数据上报,首先要进行传感器初始化(这里以超声波传感器为例)

首先最好是在初始化的过程中做到最简单的在main.c主函数中只需要初始化和一个输出函数就可以获得传感器的值,便于后续上报数据。
在这里插入图片描述
如上图所示:length就是超声波传感器所返回的值。

如果不会进行如上的初始化,可在后台私信我,也可以进行评论,看到都会及时回复,后续将发布更详细的传感器讲解文章。

3.进行数据上报

1.进行数据上报只需要在main.c程序中编写printf函数通过串口通信发送上报数据的AT指令即可。
如下代码示例(以此可以类比到温湿度等等数据的上报)

printf("AT+MQTTPUB=0,\"$oc/devices/%s/sys/properties/report\",\"{\\\"services\\\":[{\\\"service_id\\\":\\\"%s\\\"\\,\\\"properties\\\":{\\\"Water\\\": %f}}]}\",0,0\r\n",DeviceID,ServiceID1,length);

其中DeviceID是设备ID,ServiceID1是我们华为云创建的服务,根据自己所创自行修改,length是超声波传感器数据。同时还需要将上述的water改为自己的属性名

可以看到华为云平台上成功上报的数据。
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第16张图片

五、华为云平台的命令下发与响应(这里以水泵的操作为例)

1.首先我们可以使用USB转TTL模块连接esp8266模块至电脑端进行串口通信,成功连接华为云并订阅更类消息后,我们在华为云下发命令,观察esp8266模块收到的消息格式。
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第17张图片
可以观察到我们esp8266模块会收到如下数据:
在这里插入图片描述

2.通过步骤1我们已经知道了华为云平台下发数据的格式后,我们可以在串口中断函数中进行提取重要信息并进行判断执行什么操作。

我们需要提取的数据包括(request_id、以及操作符(我这里是1或0,也可以是ON、off,这些都是在创建云平台时自己设置的) 以及其他判断条件。)

串口中断函数(部分)

if(uart1_rec_i>=192)   //
					{
						strncpy(analysis_Str, uart1_recstring, 12);							//提取出“+MQTTSUBRECV”
						if(strcmp(analysis_Str,"+MQTTSUBRECV")==0)
            {
							memset(analysis_Str,0,sizeof(analysis_Str));					//清空缓存区
							
							strncpy(request_id, uart1_recstring+88, 36);     			//提取出request_id
							
							strncpy(analysis_Str, uart1_recstring+131, 5);    		//提取出"paras"
							
							if(strcmp(analysis_Str,"paras")==0)        						//有效参数体
							{
											memset(analysis_Str,0,sizeof(analysis_Str));	//清空缓存区
											strncpy(analysis_Str, uart1_recstring+140,13);	//提取出"Wat_1_control"
								if(strcmp(analysis_Str,"Wat_1_control")==0)
											{
														if(uart1_recstring[156]=='0')
															{
																	
																relay_off();//水泵开启
	 
															}
															else if(uart1_recstring[156]=='1')
															{
																relay_on();//水泵关闭
		
															} 
														
															printf("AT+MQTTPUB=0,\"$oc/devices/%s/sys/commands/response/request_id=%s\",\"\",0,0\r\n",DeviceID,request_id);//命令响应
															
																																
										}        
										

通过中断函数提取操作符1或0判断执行什么操作;同时在上述步骤中也利用提取到的request_id完成了命令响应。可以观察到华为云平台的消息跟踪如下所示:
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第18张图片

至此我们已经完成了硬件端到华为云平台的组网,数据上报,命令下发,命令响应。以上是以超声波传感器的数据上报华为云和华为云下发命令对水泵的控制与响应为例,以此为例可以进行多种传感器的数据上报和对多个设备的控制与响应。包括电机、风扇等等。

对上述硬件端到云平台的操作如有不懂,可以后台私信或直接评论,看到后都会进行回复,需要整个工程的也可以直接联系我。关注我后台发联系方式。

五、华为云平台设置联动规则,实现自动模式和手动模式

1.在云平台上创建规则联动:
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第19张图片

2.创建好的联动规则如下图所示:
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第20张图片

3.联动规则触发命令:
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第21张图片
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第22张图片

六、APP端功能展示

① 登录(身份认证)界面
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第23张图片
② 查看数据和下发命令界面
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第24张图片
③ 数据可视化分析界面
可以点击数据类型的下拉框选择温度、湿度、二氧化碳浓度、氨气浓度、饲料剩余量、饮用水剩余量等6中数据类型进行可视化分析。
物联网IOT-基于STM32开发板的智能养殖系统+华为云平台+APP端应用+keil编译工具_第25张图片

七、总结与资源获取

至此,完成了整个智能养殖系统的全栈开发,使用keil编译工具进行开发板程序编写,在到华为云平台的搭建,以及APP的开发。可以再此的基础上进行场景切换,适用于各个场景包括智慧交通,智慧家居等等。

同时,如果需要整个工程的资源,可以后台联系我,获取相关联系方式。

最后,我也将继续更新更多物联网 IoT相关文章,共同学习与进步。

你可能感兴趣的:(物联网,stm32,华为云,iot,嵌入式硬件,智能家居,智能硬件)