【分享】自制环境参数检测装置接入 oneNet 平台(一)
本帖最后由 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、面包板一个
实物图如下:
以下将通过三个部分讲述整个过程。
第一部分 WIFI无线通信
OK!首先解决最重要最困难的问题,就是与网络通信的问题,这里需要保证OCROBOT SEED WIFI的固件版本,固件更新教程可以参考如下地址: http://www.ocrobot.com/doku.php?id=zh:ocrobot:modules:seed
更新固件完成后,为了确保WIFI固件更新成功,可以先在电脑上进行测试,连线图如下,这里把Ardiuno板作为一个USB转串口的转接板使用。
连线完成后,就通过串口发送AT指令给WIFI模块,如果有返回值,说明固件更新成功。在发送AT指令时注意在指令后加上回车,下图为测试实例截图:
更新完固件后,就是使用OCROBOT SEED WIFI模块联网络的时候了,首先用OCROBOT MANGO II板子连接OCROBOT SEED WIFI模块,连线如下:
ESP8266---ARDUINO
V-------- 3v3
G------- GND
T --------- 0
R --------- 1
为了达到调试效果,额外连接一个LED灯,方便观察WIFI模块的工作状态,用pin8作为电平输出引脚,这个地方需要串联一个220欧姆的电阻,否则LED灯会被烧坏。实物接线图如下:
还是用上面的工具,这里用网络调试功能,协议类型选择TCP server,端口输入8234,主机IP就是本机电脑IP。该软件将本地主机模拟成服务器, ardiuno板通过WIFI模块与该服务器进行TCP连接通信。如下图:
下面是测试代码:
#define RET_OK 0
#define RET_ERR1
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!”,如下图:
至此,说明WIFI模块联网成功,数据通信正常。
各位坛友,不好意思,图片没能正常显示 上面更新固件的网址中:o应改为:和o
页:
[1]