吹口琴的钢铁侠 发表于 2015-9-10 20:53:38

基于Edison的微信硬件平台

本帖最后由 吹口琴的钢铁侠 于 2015-9-10 20:58 编辑

由于一些原因,我测试Edison上的蓝牙发射广播包时,总是出现错误(在树莓派上用同样的代码是可行的),加上已经开始军训,于是我目前只能降低要求(军训完有空会继续折腾之前的设想),在原来基础上,加了些功能。
有兴趣使用这套方案的可以加291715187


该方案的初衷是只用微信来控制物联网,免去开发其他的控制端应用。
此次更改主要加上了Edison,并不是简单地让微信来控制Edison,这太简单了.......
稍微加点难度,想到了在保证控制的及时情况下,减小服务器端的资源消耗。
简单地讲,就是每个Arduino或其他物联网节点,通过Edison来发送传感器数据和获取控制命令。

前面的内容类似于这个帖子,服务器端可以照做,注意要先通过新浪云的实名认证,有自己的VPS资源更佳。
在Edison主要使用node.js,来接受终端的请求和发起对服务器的请求。
在随便一个位置添加以下代码

//httpserverrequestget.js
var http =require('http');
var http2 = require('http');
var url = require('url');
var querystring = require("querystring");
var path1 = '/downup.php?token=doubleq&data=';
var sensordata = '123';
var pathful;
var options;
var resdata;

http.createServer(function(req,res){
res.writeHead(200,{'Content-Type':'text/html'});
var objectUrl = url.parse(req.url);
      var objectQuery = querystring.parse(objectUrl.query);
var gething = objectQuery['data'];
pathful = path1+gething;
options = {
      host: '1.ulink42.sinaapp.com',
      path: pathful,
      method: 'GET',
      headers: {
          'Accept': 'text/html'
      }
};
var req = http2.request(options, function(res2) {
      res2.setEncoding('utf8');
      res2.on('data', function(data) {
          console.log(data);
          resdata = data;
      });
});
req.end();
res.end(resdata);
}).listen(8080);
我测试的物联网终端是DFRobot出的WIDO
用IDE烧写以下的代码
#include <Adafruit_CC3000.h>
#include <ccspi.h>
#include <SPI.h>
#include <string.h>
#include "utility/debug.h"

#define WiDo_IRQ   7
#define WiDo_VBAT5
#define WiDo_CS    10

Adafruit_CC3000 WiDo = Adafruit_CC3000(WiDo_CS, WiDo_IRQ, WiDo_VBAT,
SPI_CLOCK_DIVIDER);

#define WLAN_SSID       "yourwifi"
#define WLAN_PASS       "yourpswd"
#define WLAN_SECURITY   WLAN_SEC_WPA2
int value = 0;
char tem;
char state;
char c;

#define TIMEOUT_MS      20000

void setup(){
Serial.begin(9600);
pinMode(2, OUTPUT);
Serial.println(F("Hello, Wido!\n"));
Serial.println(F("\nInitialising the CC3000 ..."));
if (!WiDo.begin())
{
    Serial.println(F("Unable to initialise the CC3000! Check your wiring?"));
    while(1);
}

if (!WiDo.connectToAP(WLAN_SSID,WLAN_PASS,WLAN_SECURITY)) {
    Serial.println(F("Failed!"));
    while(1);
}

Serial.println(F("Connected!"));
Serial.println(F("Request DHCP"));
while (!WiDo.checkDHCP())
{
    delay(100);
}
}


void loop(){
static Adafruit_CC3000_Client client;

if(client.connected()){

    if(state == '0'){
      digitalWrite(2, LOW);      
    }else if(state == '1'){
      digitalWrite(2, HIGH);
    }
   

   
    value = analogRead(0);
    value= int(value*0.0048828125*100);   //把读取到的val转换为温度数值,系数一:0.00488125=5/1024,0~5V对应模拟口读数1~1024,系数二:100=1000/10,1000是毫伏与伏的转换;10是每10毫伏对应一度温升。
    itoa(value,tem,10);
    Serial.println(tem);
    client.fastrprint("GET /?data=");
    client.fastrprint(tem);
    client.fastrprint(" HTTP/1.1\r\nHost: 192.168.11.132\r\nUser-Agent: arduino-ethernet\r\nConnection: close");
    Serial.println("geted");
    client.fastrprint(F("\r\n"));
    client.fastrprint(F("\r\n"));

    Serial.println();

    unsigned long lastRead = millis();
    while (client.connected() && (millis() - lastRead < TIMEOUT_MS)) {
      while(client.available()) {
      c = client.read();
      Serial.print(c);
      if (c == '{'){
            state = client.read();
            Serial.print(state);
      }
      }
    }
    client.close();
}else{
    uint32_t ip = WiDo.IP2U32(192,168,11,132);
    client = WiDo.connectTCP(ip,8080);
    Serial.println("Connecting IoT Server...");
}
delay(5000);
}
其中发起请求的ip是Edison的地址,务必使他们在同一局域网内,可在Edison的命令行中输入ifconfig来进行查看。
在这个例子中,WIDO收集LM35的温度值,上传到Edison,Edison收到请求后,将数据上传至新浪云上的服务器,并获得控制LED的命令,返回给WIDO,WIDO再对LED进行控制。

大连林海 发表于 2015-9-11 18:29:25

没事来我们单位玩啊

dsweiliang 发表于 2015-9-12 10:19:58

数据线好帅喔,求淘宝

吹口琴的钢铁侠 发表于 2015-9-13 19:16:47

大连林海 发表于 2015-9-11 18:29
没事来我们单位玩啊

等我军训完吧......

吹口琴的钢铁侠 发表于 2015-9-13 19:17:11

dsweiliang 发表于 2015-9-12 10:19
数据线好帅喔,求淘宝

质量过硬的数据线,DF商城就有

dsweiliang 发表于 2015-9-13 22:53:50

吹口琴的钢铁侠 发表于 2015-9-13 19:17
质量过硬的数据线,DF商城就有

谢谢

大连林海 发表于 2015-9-13 23:17:55

吹口琴的钢铁侠 发表于 2015-9-13 19:16
等我军训完吧......

好的 提前告诉我
页: [1]
查看完整版本: 基于Edison的微信硬件平台