物联网实战之基于OneNET的智能农业系统

想玩物联网的时候物色了很多国内的云平台,最后选了中移云去实现。其实阿里云华为云机智云都不错,机智云网页界面不行但是带APP,阿里云也有个贝壳物联APP功能更强大,华为云不太了解不过好像也还行。中移云感觉更加的纯粹,没有那么多花里胡哨的功能(其实是我用不到而已)。这里记录一下基于4个stm32+lora建立组网,上传数据到云平台这个简单的项目。

硬件环境

在这里插入图片描述

在这里插入图片描述

硬件环境即一个主控板(照片找不到了)+三个采集板,基于LORA构建组网,采集3个不同地点的环境数据,通过WIFI模块上发数据到云平台。外加一个OpenMV3做人脸识别。采集板挂载了温湿度+光照强度+LORA模块。

软件环境

IDE:Keil 5.15
OS:Ucos-III

ESP8266 WIFI模块基本知识详解

市面上的WIFI模块大多数都是乐鑫的,通过串口+AT指令,即可简单的进行操作。
硬件连接:
在这里插入图片描述

AT指令基本结构:
在这里插入图片描述
WIFI模块和服务器建立连接有两种方式:
在这里插入图片描述
TCP连接通信比较常用,再该模式下,相应的设备必须处于同一网络中,即处于同一个局域网中!!!AP模式下ESP8266做服务端时就是,手机和电脑必须连在ESP8266的WiFi,才能用网络调试助手等软件与ESP8266通信。

WIFI 模块的AT指令配置大家看官方文档即可,整体了来说还是比较简单的。WIFI一般有WIFI-AP模式,WIFI-STA模式,WIFI-AP兼STA模式三种,这里只说常用的前两种:
①、WIFI-AP模式:首先,我们可以把WIFI模块当成一个热点,开启热点以后别的设备可以连接这个热点,从而我们就可以向连接热点的设备
!!发送数据!!
ESP8266建立TCP服务器时,步骤为:
1.AT+CWMODE=2//配置ESP8266为AP模式,(路由器模式,发出WIFI)。
在这里插入图片描述
2.AT+RST // 重启模块使刚刚配置模式生效
3.AT+CWSAP=“wifi账号”,“WIFI密码”,1,4
在这里插入图片描述
4.AT+CIPMUX = 1 // 启动多连接
5.AT+CIPSERVER = 1,8080 // 模块开启服务器模式,端口号8080
这一步一定要保证设备连接到了ESP8266的WIFI,不然会连接失败
6.AT+CIPSEND=X,X // 第一个X是对应的ID号,第二个X是对应的字符个数,调用这个AT指令就可以向对应的客户端发送数据,注意对应的字符个数问题,如果个数少了就不发,个数多了就只发前对应的个数。
以上,便是ESP8266做服务器,PC端(移动端)做客户端的情况。

ESP8266做客户端,PC端(移动端)做服务器时(单路连接),具体的步骤简要为:
在这里插入图片描述完成连接后,调用AT+CIPSEND这个指令即可与服务器收发数据。这里我们只介绍单路连接,这种模式下是可以做到最多5路连接,感兴趣的话可以查一下相关资料。
在这里插入图片描述
②.WIFI-STA模式:这个模式与AP模式相反,是ESP8266去连接别的路由器(WIFI),只要保证与通信方处于同一局域网下即可,可以理解为一个基站去接收信号。
ESP8266做服务器,PC做客户端,具体步骤为:
在这里插入图片描述
到这里,我们发送AT+CWLAP指令可以查询周围的WIFI信号(去酒店之类的可以用这招预防那种WIFI摄像头,但是SD卡那种还是防不了的。。)
发送AT+CWJAP?可以查看WIFI是否真的连接成功。
4.AT+CIPMUX=1启动多连接
5.AT+CIPSERVER=1,8080 // 打开服务器端口为8080
6.AT+CIFSR // 看一下你模块现在分配的ip是多少,只要模块联网就会重新分配ip地址,这也是网络调试助手里面远程主机栏要填写的ip地址。
在这里插入图片描述

ESP8266做客户端,PC端(移动端)做服务器,具体步骤如下:
1.AT+CWMODE=1,设置为STA模式
2.AT+RST , 重启生效
3.AT+CWJAP=“WIFI账号”,“WIFI密码”
4.AT+CIPMUX=0 ,单连接
5.AT+CIPSTART=“TCP”,“192.168.1.101”,8080
下面用AT+CIPSEND发送数据即可

这次工程是把WIFI模块配成STA模式下的客户端,网站就当成服务器,方便操作。

OneNET建立自己的物联网应用

首先来个官网网址中移云网址,进去以后注册一个自己的账号
在这里插入图片描述
点击开发者中心,然后创建自己的产品。这里跟着官方文档走就好了,不多赘述创建产品
接入协议这里选择http协议,因为我们只需要POST上报数据,GET获得数据即可。有能力的话建议搞一下MQTT协议,近两年最火的物联网协议。然后建一个设备,这里跟着官方文档走就可以了。最后我们会得到这些必要信息:
在这里插入图片描述
这四个ID/key是上报数据必须的东西,要做好记录。至此平台端我们已经解决了大半。

收发协议

因为涉及了不同设备多个数据的采集,这里制定了一个简单的协议,只有一个帧头采集板发过来的帧头到主控板会被识别为ASCII码,所以主控接收从机帧头时一定要以ASCII码形式判断。其实出来实习以后,发现这些协议走16进制的话会更方便,便于不同平台之间交互。下面上代码:

u8 a = 0;
u8 b = 0;
u8 c = 0;
u8 RX1_Buff[3];
u8 RX2_Buff[3];
u8 RX3_Buff[3];
int i = 1;
int j = 1;
int k = 1;
char one = '1';
char two = '2';
char three = '3';

void USART2_IRQHandler(void)
{
   
 u8 res;
 {
   
  res=USART_ReceiveData(USART2);
  //printf("%c",res);
  if(res == one)
  {
   
   a = 1;
   two = '7';
   three = '8';
  }
  if(a == 1)
  {
   
   switch(i)
   {
   
    case 1:i++;break;
    case 2:i++;RX1_Buff[0] = res;break;
    case 3:i++;RX1_Buff[1] = res;break;
    case 4:i++;RX1_Buff[2] = res;i=1;a=0;two = '2';three = '3';break;
    default:break;
   }
  }
  if(res == two)
  {
   
   b=1;
   one = '6';
   three = '8';
  }
  if(b == 1)
  {
   
   switch(j)
   {
   
    case 1:j++;break;
    case 2:j++;RX2_Buff[0]=res;;break;
    case 3:j++;RX2_Buff[1]=res;;break;
    case 4:j++;RX2_Buff[2]=res;j=1;b=0;one = '1';three = '3';break;
    default:break;
   }
  }
  if(res == three)
  {
   
   c = 1;
   one = '6';
   two = '7';
  }
  if(c == 1)
  {
   
   switch
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值