极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11517|回复: 0

RM04 物联网 实验(一)

[复制链接]
发表于 2015-7-8 01:28:07 | 显示全部楼层 |阅读模式
本帖最后由 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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 04:08 , Processed in 0.044643 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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