【分享】自制环境参数检测装置接入 oneNet 平台(一)-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10800|回复: 2

【分享】自制环境参数检测装置接入 oneNet 平台(一)

[复制链接]
发表于 2016-1-20 14:38 | 显示全部楼层 |阅读模式
本帖最后由 xiebinqiang 于 2016-1-27 09:30 编辑

       最近自己制作了一个简单的环境参数检测装置接入oneNet平台,在论坛里面也有人做过温湿度检测装置,用的是ardiuno yun开发板,该开发板自带一个WIFI模块,但是整个开发板将近五百块钱,太贵,而且操作起来相对较复杂,特别是WIFI联网的过程中,比较繁琐。于是打算用OCROBOT MANGO II的板子和OCROBOT SEED WIFI模块,重新做一个环境参数检测装置。两个模块价格总共一百多一点。在网上也有网友(迷你强)做过OCROBOT SEED WIFI的库,但是随着OCROBOT SEED WIFI固件版本更新,那些库早已经不在适用。下面将我制作环境参数检测仪的全过程写成教程,希望多多指正。
       首先,明确目标,我打算做一个带有温度、湿度、噪音、关照强度四个参数的检测装置,将收集到的四个参数通过WIFI传到oneNet平台,用到的硬件有:
       1、OCROBOT MANGO II板子
       2、OCROBOT SEED WIFI模块
       3、温湿度传感器一个
       4、LED灯一个
       5、光照强度模块一个
       6、噪音传感器一个
       7、Micro USB线一条
       8、杜邦线若干
       9、面包板一个
       实物图如下:
       1.png
      以下将通过三个部分讲述整个过程。

      第一部分 WIFI无线通信

      OK!首先解决最重要最困难的问题,就是与网络通信的问题,这里需要保证OCROBOT SEED WIFI的固件版本,固件更新教程可以参考如下地址:         http://www.ocrobot.com/doku.php?id=zhcrobot:modules:seed

      更新固件完成后,为了确保WIFI固件更新成功,可以先在电脑上进行测试,连线图如下,这里把Ardiuno板作为一个USB转串口的转接板使用。      
       2.png
        连线完成后,就通过串口发送AT指令给WIFI模块,如果有返回值,说明固件更新成功。在发送AT指令时注意在指令后加上回车,下图为测试实例截图:
       3.png
        更新完固件后,就是使用OCROBOT SEED WIFI模块联网络的时候了,首先用OCROBOT MANGO II板子连接OCROBOT SEED WIFI模块,连线如下:
        ESP8266---ARDUINO
        V  -------- 3v3
        G  ------- GND
        T --------- 0
        R --------- 1
        为了达到调试效果,额外连接一个LED灯,方便观察WIFI模块的工作状态,用pin8作为电平输出引脚,这个地方需要串联一个220欧姆的电阻,否则LED灯会被烧坏。实物接线图如下:
         4.png
        还是用上面的工具,这里用网络调试功能,协议类型选择TCP server,端口输入8234,主机IP就是本机电脑IP。该软件将本地主机模拟成服务器, ardiuno板通过WIFI模块与该服务器进行TCP连接通信。如下图:
         5.png
      下面是测试代码:
#define RET_OK   0
#define RET_ERR  1

void setup() {
  // put your setup code here, to run once:
  pinMode(8, OUTPUT);
  Serial.begin(115200);
  while (!Serial)
  {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  //init WIFI module
  WifiInit();
}

void WifiInit(void)
{
  SendCmd("AT+CWMODE=3\r");//设置为softAP+station共存模式
  SendCmd("AT+RST\r");//重启WIFI生效
  //通过无线网络的SSID和密码连接无线网络
  SendCmd("AT+CWJAP=\"hello-simon-30\",\"guajiguajiSIMONSEN2048\"\r");//连接无线网络
  SendCmd("AT+CIFSR\r");//返回设备的IP地址
  SendCmd("AT+CIPSTART=\"TCP\",\"192.168.206.12\",8234\r");//和目标服务器建立TCP连接
  SendCmd("AT+CIPMODE=1\r");//开启透传模式
  Serial.println("AT+CIPSEND\r");//开始透传
}

void loop() {
  Serial.println("Hello world!");//数据发送
  LedFlash();//工作状态显示
}

void LedFlash(void)
{
  digitalWrite(8, HIGH);
  delay(500);
  digitalWrite(8, LOW);
  delay(500);
}

char SendCmd(String data)
{
  Serial.println(data);  //发送AT指令
  while (1)
  {
      if (Serial.find("OK") == true)//返回值判断
      {
          LedFlash();//指令执行成功指示
          break;
      }
      Serial.println(data);
  }
  return RET_OK;
}
      连接好线后,就将代码copy进去编译、烧写。重启后可以看到LED等持续闪烁,闪烁6次后看到网络传输过来的数据“Hello world!”,如下图:
         6.png
        至此,说明WIFI模块联网成功,数据通信正常。












 楼主| 发表于 2016-1-20 14:42 | 显示全部楼层
各位坛友,不好意思,图片没能正常显示
 楼主| 发表于 2016-1-20 15:57 | 显示全部楼层
上面更新固件的网址中应改为:和o
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-9-20 11:56 , Processed in 0.140682 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表