|
|
本帖最后由 futianguo123 于 2015-7-8 01:52 编辑
最近一直想玩玩物联网,就买了个HLK-RM04的wifi-串口模块,看这个网站上也有几片这个贴子,也就研究乐一下,今天是第一步实验,做个大概记录吧。
第一步:设置RM04模块,刚买的好像是模块上电后会,在电脑的"无线网络连接"会出现HLK-RM04的连接.现选择这个连接.浏览器进入"192.168.16.254"进行设置.当热也可以用串口设置.说明书说的很清楚乐,不累述乐.
这时提交后,重新上电,过一会 浏览器进入"192.168.1.55"就可以用网页配置了.
第二步:设置于YEELINK的RM04配置.
第三步:注册YEELINK,这个没啥可讲的,网上一堆一堆的.我设置的是一个“数据型”传感器,温度
第四步:下载arduino程序
我用的是这个程序,用的是arduino2560.还没和RM04连接,没想好怎么连接arduino和RM04.就想看看这个程序串口发出的数据是不是能上传到YEELINK上,
#include <math.h>
int Filter_Value;
int Result;
//for yeelink api
#define APIKEY "xxxxxxxxxxxxxxxxxxxxxxxx" //自己YEELINK的API KEY
#define DEVICEID xxxx //设备号
#define SENSORID xxxxx //传感器号
void postData(int thisData) {
Serial.print("POST /v1.0/device/");
Serial.print(DEVICEID);
Serial.print("/sensor/");
Serial.print(SENSORID);
Serial.print("/datapoints");
Serial.println(" HTTP/1.1");
Serial.println("Host: api.yeelink.net");
Serial.print("Accept: *");
Serial.print("/");
Serial.println("*");
Serial.print("U-ApiKey: ");
Serial.println(APIKEY);
Serial.print("Content-Length: ");
int thisLength = 10 + getLength(thisData);
Serial.print(thisLength);
Serial.println();
Serial.println("Content-Type: application/x-www-form-urlencoded");
Serial.println();
Serial.print("{\"value\":");
Serial.print(thisData);
Serial.println("}");
}
int Get_AD() {
return analogRead(1);
}
int getLength(int someValue) {
int digits = 1;
int dividend = someValue /10;
while (dividend > 0) {
dividend = dividend /10;
digits++;
}
return digits;
}
// 中位值滤波法
#define FILTER_N 101
int Filter() {
int filter_buf[FILTER_N];
int i, j;
int filter_temp;
for(i = 0; i < FILTER_N; i++) {
filter_buf = Get_AD();
delay(1);
}
// 采样值从小到大排列(冒泡法)
for(j = 0; j < FILTER_N - 1; j++) {
for(i = 0; i < FILTER_N - 1 - j; i++) {
if(filter_buf > filter_buf[i + 1]) {
filter_temp = filter_buf;
filter_buf = filter_buf[i + 1];
filter_buf[i + 1] = filter_temp;
}
}
}
return filter_buf[(FILTER_N - 1) / 2];
}
void setup(){
Serial.begin(115200);
}
void loop() {
Filter_Value = Filter();
Result = Filter_Value*0.04;
postData(Result);
delay(30*1000);
}
第五步:下载进arduino2560 后,串口打印的信息如下:
POST /v1.0/device/xxxx/sensor/xxxx/datapoints HTTP/1.1
Host: api.yeelink.net
Accept: */*
U-ApiKey: xxxxxxxxxxxxxxxxxxxxxxxx //设备号
Content-Length: 12
Content-Type: application/x-www-form-urlencoded
{"value":40}
第六步:将RM04上电,打开RM04的串口,发送第五步串口打印的信息,
要是串口有返回数据如下:
HTTP/1.1 200 OK
Server: nginx/1.1.19
Date: Tue, 07 Jul 2015 17:34:39 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: close
X-Powered-By: PHP/5.3.10-1ubuntu3.6
Set-Cookie: CAKEPHP=b44179sua1tmdbu2de4rs0cg80; expires=Thu, 16-Jul-2015 01:34:39 GMT; path=/
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
0
那么数据就传到YEELINK了,用手机APP也可以看,建议用旧版的YEELINK界面。
结束,今天只是试试而已,明天要是有时间久=就把arduino和RM04连接起来。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|