http://www.geek-workshop.com/thread-11266-1-1.html
ITEAD首款智能wifi通用改装件成功上市:http://www.geek-workshop.com/thread-17944-1-1.html
----------------------------------------------------2015年6月10日更新-------------------------------------------------------
最新wifi库下载地址:https://github.com/itead/ITEADLIB_Arduino_WeeESP8266/archive/master.zip
库默认是使用硬件串口与ESP8266通信,需要软串口通信只需取消注释Esp8266.h文件里的一行代码
#define ESP8266_USE_SOFTWARE_SERIAL
--------------------------------------------------2015年2月5日发布---------------------------------------------------------
使用UNO搭建硬件所需配件:
因为UNO只有一对串口,已经被WIFI模块占用了,所以要增加一个转串口的板子用软串口来打印串口信息。
使用ITEADUINO MEGA2560搭建硬件所需配件:
此处也可以使用Arduino MEGA2560,但是需要飞线到后面的TX2和RX2。这个就交给小伙伴们自己去尝试吧,成功后可以发到帖子回复里跟大家分享。
需要使用到的库文件地址:http://pan.baidu.com/s/1kT9TBz5这个库跟之前发的库是一样的,但很多小伙伴反应编译不过,这个库我是用1.0.6版本的IDE测试一定能过的。不放心的朋友可以把以前下的库从libraries里移除,重新下载这个到libraries文件夹里面。
库默认设置的是UNO可以直接使用本教程,无需做任何修改。 使用mega2560的时候,只需要打开uartWIFI.h文件,把UNO注释掉,取消注释MEGA,如下:
//#define UNO //uncommentthis line when you use it with UNO board #define MEGA //uncommentthis line when you use it with MEGA board
硬件搭建方面我们先不说怎么接线,因为经常有人问我:“你好,程序已经烧给模块了,为什么不成功?”我的亲大哥啊,所有代码都是烧写进UNO和mega2560主板的,你就算不接模块,代码也是可以上传编译成功的。所以我们的步骤是先把代码烧写进UNO和MEGA2560。
代码如下:
ARDUINO 代码复制打印
- #define SSID "ITEAD_2" //type your own SSID name
- #define PASSWORD "27955416" //type your own WIFI password
- #include "uartWIFI.h"
- #include <SoftwareSerial.h>
- WIFI wifi;
- extern int chlID; //client id(0-4)
- void setup()
- {
- pinMode(6,OUTPUT); //使用mega的时候在不改变接线的情况下,此处改为24脚
- wifi.begin();
- bool b = wifi.Initialize(STA, SSID, PASSWORD);
- if(!b)
- {
- DebugSerial.println("Init error");
- }
- delay(8000); //make sure the module can have enough time to get an IP address
- String ipstring = wifi.showIP();
- DebugSerial.println(ipstring); //show the ip address of module
- delay(2000);
- wifi.confMux(1);
- delay(100);
- if(wifi.confServer(1,8080))
- DebugSerial.println("Server is set up");
- }
- void loop()
- {
- char buf[100];
- int iLen = wifi.ReceiveMessage(buf);
- if(iLen > 0)
- {
- if (strcmp(buf, "CH0ON") == 0)
- {
- digitalWrite(6,HIGH); //使用mega的时候在不改变接线的情况下,此处改为24脚
- DebugSerial.println("CH0ON");
- }
- if (strcmp(buf, "CH0OFF") == 0)
- {
- digitalWrite(6,LOW); //使用mega的时候在不改变接线的情况下,此处改为24脚
- DebugSerial.println("CH0OFF");
- }
- }
- }
使用MEGA时,把代码里继电器的D6脚改为D24脚。代码烧写完成后,我们现在来搭建硬件。
UNO接线如图:
Foca转串板连接的是D2和D3作为软串口。G要共地。
ITEADUINO MEGA2560接线如图:
此处的Xbee扩展板的跳帽应该是2和3,而不是0和1,此处有错。正确跳帽如下:
. . . 4
._. . 3
. ._. 2
. . . 1
. . . 0
Xbee扩展板插在TX2和RX2这排排母上。如图:
连接电脑,插上9V/1A适配器电源供电,打开Arduino IDE串口监视器就可以查看wifi运行状态了。如果是使用UNO,打开监视器后需要先按一下UNO板子上的重启键再按一下xbee扩展板上的重启键。此时才能看到串口监视信息。使用mega2560则无需操作。如果是出现“Module have no response”则只需要按一下mega板子侧边的重启键。
成功连接路由器后,我们就得到了WiFi模块的IP地址,串口打印信息如下: ↑UNO串口打印信息
↑MEGA串口打印信息
接下来,就需要安装手机APK了。下载地址:http://pan.baidu.com/s/1nt7ND6x
该软件目前只支持4寸-7寸安卓智能手机或者平板,7寸平板的话排版可能会有空隙,不过不影响使用。
下载安装后,进入set up设置界面。在客户端输入我们刚刚获得的IP地址和端口号8080,如图:
点击“开始连接”,连接成功会显示:成功连接server。如图:
按键指令我们重新设置一下,下拉到最下面,将On和Off的指令改为CH0OFF和CH0ON(指令可以任意设置,只要跟代码里的指令一致就行),如果开关状态相反,把指令反过来即可,如图:
↑修改前
↑修改后
输入完成后,点击“返回”到操作界面,此时点击On和Off就可以成功控制开关了!
关(UNO)
开(UNO)
关(MEGA)
开(MEGA)
可以收到串口打印信息如下:
-------------------------------------------------2014年10月15日发布-------------------------------------------------------
更新说明:由于固件升级,很多小伙伴们收到ESP8266模块后用我们的库调不通,在此诚挚道歉。发布此篇教程的时候使用的是旧版本固件,库文件设置的波特率是115200。如果调不通的话应该收到的是新版本,使用的波特率是9600。库文件我们已经更新了http://pan.baidu.com/s/1sj2nUyT 请知悉,谢谢!
(一)ESP8266 wifi模块库文件测试
上周终于写完ESP8266 wifi 模块的库了,测试OK!在此开出源码和实例教程,希望能帮到大家!
主要配件:
一张图介绍mini RBoard
步骤:
1. 下载库文件
烧写程序之前,我们需要用到ESP8266库,下载地址为:
http://pan.baidu.com/s/1sj2nUyT
温馨提示: ESP8266 wifi库文件是基于arduino IDE 1.0.5版本编译的,如遇编译不过,请尝试其他版本。
打开库中的uartWIFI.h文件,因为我们的mini RBoard使用的是跟UNO一样的芯片,所以要在H文件里去掉定义UNO的注释,注销掉MEGA。
#define UNO
//#define MEGA
然后把_DBG_RXPIN_和_DBG_TXPIN_引脚定义改为D9和D10.
#define _DBG_RXPIN_ 9 //A0
#define _DBG_TXPIN_ 10 //A1
然后保存uartWIFI.h文件。
烧写代码:
插上FOCA,板子的类型选择“Arduino UNO”,点击烧写程序。如下图:
ARDUINO 代码复制打印
- /*
- ESP8266 library
- When you use with UNO board, uncomment the follow line in uartWIFI.h.
- #define UNO
- When you use with MEGA board, uncomment the follow line in uartWIFI.h.
- #define MEGA
- Connection:
- When you use it with UNO board, the connection should be like these:
- ESP8266_TX->D0
- ESP8266_RX->D1
- ESP8266_CH_PD->3.3V
- ESP8266_VCC->3.3V
- ESP8266_GND->GND
- FTDI_RX->D3 //The baud rate of software serial can't be higher that 19200, so we use software serial as a debug port
- FTDI_TX->D2
- When you use it with MEGA board, the connection should be like these:
- ESP8266_TX->RX1(D19)
- ESP8266_RX->TX1(D18)
- ESP8266_CH_PD->3.3V
- ESP8266_VCC->3.3V
- ESP8266_GND->GND
- When you want to output the debug information, please use DebugSerial. For example,
- DebugSerial.println("hello");
- Note: The size of message from ESP8266 is too big for arduino sometimes, so the library can't receive the whole buffer because
- the size of the hardware serial buffer which is defined in HardwareSerial.h is too small.
- Open the file from \arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.h.
- See the follow line in the HardwareSerial.h file.
- #define SERIAL_BUFFER_SIZE 64
- The default size of the buffer is 64. Change it into a bigger number, like 256 or more.
- */
- #define SSID "Itead_1(Public)" //type your own SSID name
- #define PASSWORD "27955416" //type your own WIFI password
- #include "uartWIFI.h"
- #include <SoftwareSerial.h>
- WIFI wifi;
- extern int chlID; //client id(0-4)
- void setup()
- {
- pinMode(4,OUTPUT);
- pinMode(5,OUTPUT);
- pinMode(6,OUTPUT);
- pinMode(7,OUTPUT);
- wifi.begin();
- bool b = wifi.Initialize(STA, SSID, PASSWORD);
- if(!b)
- {
- DebugSerial.println("Init error");
- }
- delay(8000); //make sure the module can have enough time to get an IP address
- String ipstring = wifi.showIP();
- DebugSerial.println(ipstring); //show the ip address of module
- delay(2000);
- wifi.confMux(1);
- delay(100);
- if(wifi.confServer(1,8080))
- DebugSerial.println("Server is set up");
- }
- void loop()
- {
- char buf[100];
- int iLen = wifi.ReceiveMessage(buf);
- if(iLen > 0)
- {
- //mini Rboard D4 pin is relay,mini Rboard URL:[url=http://item.taobao.com/item.htm?spm=a1z10.3.w4002-2605688463.12.EMkeTJ&id=39334222369]http://item.taobao.com/item.htm? ... keTJ&id=39334222369[/url]
- if (strcmp(buf, "CH0ON") == 0)
- {
- digitalWrite(4,HIGH);
- DebugSerial.println("CH0ON");
- }
- if (strcmp(buf, "CH0OFF") == 0)
- {
- digitalWrite(4,LOW);
- DebugSerial.println("CH0OFF");
- }
- /* the other 3 chanels below are for Rboard D5 D6 D7 , Rboard URL:[url=http://item.taobao.com/item.htm?spm=a1z10.3.w4002-2605688463.12.EMkeTJ&id=39334222369]http://item.taobao.com/item.htm? ... keTJ&id=39334222369[/url]
- if (strcmp(buf, "CH1ON") == 0)
- {
- digitalWrite(5,HIGH);
- DebugSerial.println("CH1ON");
- }
- if (strcmp(buf, "CH1OFF") == 0)
- {
- digitalWrite(5,LOW);
- DebugSerial.println("CH1OFF");
- }
- if (strcmp(buf, "CH2ON") == 0)
- {
- digitalWrite(6,HIGH);
- DebugSerial.println("CH2ON");
- }
- if (strcmp(buf, "CH2OFF") == 0)
- {
- digitalWrite(6,LOW);
- DebugSerial.println("CH2OFF");
- }
- if (strcmp(buf, "CH3ON") == 0)
- {
- digitalWrite(7,HIGH);
- DebugSerial.println("CH3ON");
- }
- if (strcmp(buf, "CH3OFF") == 0)
- {
- digitalWrite(7,LOW);
- DebugSerial.println("CH3OFF");
- }
- */
- }
- }
黏贴代码到arduino IDE中,在SSID和PASSWORD宏定义中修改成自己的路由器WIFI名称和密码。
#define SSID "Itead_1(Public)" //type your own SSID name
#define PASSWORD "27955416" //type your own WIFI password
编译,烧写,OK!
接下来我们还需要用到foca来读取串口信息,查看wifi状态。
按照以下连接方式连接FOCA和ESP8266到mini Rboard上。
2015年1月29日修正:此图的foca串口接反了,TX应该接D9,RX接D10。
或者将库文件的9和10反过来。
#define _DBG_RXPIN_ 10 //A0
#define _DBG_TXPIN_ 9 //A1
另外说明:如果使用UNO请提供额外9V/1A适配器供电。Arduino IDE编译版本使用1.0.6以上。
实物连接图:
Mini Rboard的引脚定义图:
ESP8266的引脚定义图:
然后打开Serial监视器,按一下复位键,等待一段时间后,会看到串口显示它的ip地址:172.16.1.20,当然你也可以登陆路由器的管理后台查看到这个wifi模块的IP地址。
现在我们还需要下载一个软件来进行无线控制。
2. 下载UDP TCP Server app
打开手机的Google play,搜索UDP TCP Server,安装该软件。(不能*和没有google账户和不能安装google play的小伙伴自行安装VPN和google play所需app)
打开该软件,点击右上角的settings,将Target IP设置为wifi的IP地址,本文为172.16.1.12,以每次分配的实际IP为准。UPD/TCP选择TCP,Target Port设置为8080,TCP connection behavior设置为“Initiate connection,and keep open”。
然后返回上一级,点击Button Settings。设置buttons的数量为8个(适用于4通道的Rboard),分别在button的名字和命令上修改成:“CH0ON”, “CH1ON”, “CH2ON”, “CH3ON”, “CH0OFF”, “CH1OFF”, “CH2OFF”, “CH3OFF”。这分别代表设置对应继电器通道的开关状态。此次测试用的mini Rboard只需要用到“CH0ON”和“CH0OFF”这一个通道。
返回主页面,我们可以看到按钮的名称已改变,点击对应的按钮后,会看到mini Rboard上对应的通道设置为按钮上的状态。
演示视频:
(二)ESP8266 wifi模块上传数据到yeelink平台
上期我们实现了局域网内的wifi控制,基于上面的库文件,我们今天给大家带来使用yeelink平台的upload教程,小伙伴还可以用手机随时随地观看数据变化情况。
所需配件:
步骤:
1. 硬件连接
接线示意图
硬件实物连接图
2. 注册Yeelink账号
在烧写程序之前,我们必须做一些准备工作:注册Yeelink账号,并获取属于自己的API KEY和对应设备、传感器的ID地址值。ESP8266通过地址信息将DHT11的温度信息上传到服务器系统中唯一的标示图上,这样可以在Yeelink的网页上实时观察到该传感器当前环境温度信息。
步骤如下:
第一步,注册用户。Yeelink的地址为: http://www.yeelink.net/
第二步,点击“账号”目录下的“我的账户设置”按钮,记下当前的API KEY,在本例中,API KEY为“7bf75e6c2c8a17351d557f206f89fa2e”。
第三步,点击“我的设备”目录下的“添加新设备”按钮,并按照如下内容范例填写,然后点击保存按钮。
第四步,添加新设备完毕后还需要为该设备增加一个或多个传感器(一个设备可以同时支持多个传感器)。点击“传感器”栏下的“+增加一个传感器”按钮,进入添加传感器的页面。按照如下内容范例填写,然后点击保存。
第五步,保存后,在管理设备页面的下方会出现一个数据曲线的图表。设备的ID值为数据曲线的URL中device后面那串数字,而传感器的ID值为数据曲线的URL中sensor后面那串数字,记下该设备和传感器的ID值,在本例中温度的设备ID值为3047,传感器ID值为4285; 湿度的设备ID值为3047,传感器ID值为26142。
完成上面的操作后,会得到相应的API KEY,设备的ID值和传感器的ID值。如果想了解更具体的步骤,请查看以下网页: http://www.yeelink.net/developer/doc/42 。
3.烧写程序,我们需要用到ESP8266库,下载地址为: http://pan.baidu.com/s/1sj2nUyT 。库跟第一章的一样,已下载的小伙伴不需要重新下载了。
温馨提示: ESP8266 wifi库文件是基于arduino IDE1.0.5版本编译的,如遇编译不过,请尝试其他版本。
把ESP8266库解压缩到\arduino\libraries目录下。
因为以太网的数据包比较大,我们需要把串口的环形缓冲区的大小改大才能正常显示所有数据。
用记事本打开arduino\hardware\arduino\cores\arduino\HardwareSerial.cpp文件,把第59行的SERIAL_BUFFER_SIZE数值改为500.如下:
#if (RAMEND< 1000)
#define SERIAL_BUFFER_SIZE 16
#else
#define SERIAL_BUFFER_SIZE 500
#endif
保存修改。
打开下载的库文件里面的uartWIFI.H文件。确认以下两处是否如下:
#define _DBG_RXPIN_ 2 //使用UNO的时候改为9
#define _DBG_TXPIN_ 3 //使用UNO的时候改为10
#define debugBaudRate 9600
//#define UNO //使用UNO的时候取消这行的注释
#define MEGA //使用mega的时候注释掉这行
确认无误,保存。
复制以下demo代码到arduino IDE。
ARDUINO 代码复制打印
- #define SSID "Itead_1(Public)" //type your own SSID name
- #define PASSWORD "27955416" //type your own WIFI password
- #include "uartWIFI.h"
- #include <SoftwareSerial.h>
- WIFI wifi;
- extern int chlID; //client id(0-4)
- // for yeelink api
- #define APIKEY "3a362e99d6f1daf974561163a8c99a85" // replace your yeelink api key here
- //replace the device ID and sensor ID for temperature sensor.
- #define DEVICEID0 15483 // replace your device ID
- #define SENSORID0 26660 // replace your sensor ID
- //replace the device ID and sensor ID for humidity sensor.
- #define DEVICEID1 15483 // replace your device ID
- #define SENSORID1 26661 // replace your sensor ID
- char server[] = "api.yeelink.net"; // name address for yeelink API
- unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds
- boolean lastConnected = false; // state of the connection last time through the main loop
- const unsigned long postingInterval = 5*1000; // delay between 2 datapoints, 5s
- String returnValue = "";
- boolean ResponseBegin = false;
- int DHT11PIN=25; //Connect D25 to data pin of DHT11
- int humidity;
- int temperature;
- int post_number;
- void setup()
- {
- wifi.begin();
- bool b = wifi.Initialize(STA, SSID, PASSWORD);
- if(!b)
- {
- DebugSerial.println("Init error");
- }
- delay(8000); //make sure the module can have enough time to get an IP address
- String ipstring = wifi.showIP();
- DebugSerial.println(ipstring); //show the ip address of module
- }
- void loop()
- {
- char message[400];
- // if you're not connected, and ten seconds have passed since
- // your last connection, then connect again and send data:
- if((millis() - lastConnectionTime > postingInterval)) {
- //read dht11
- int chk = dht11_read(DHT11PIN);
- if(chk==0)
- {
- if(post_number==0)
- {
- sendData(DEVICEID0,SENSORID0,temperature);
- post_number++;
- }
- else
- {
- post_number = 0;
- sendData(DEVICEID1,SENSORID1,humidity);
- }
- }
- }
- // if there's incoming data from the net connection.
- // send it out the serial port. This is for debugging
- // purposes only:
- if(wifi.ReceiveMessage(message))
- {
- DebugSerial.println(message);
- }
- delay(10);
- }
- // this method makes a HTTP connection to the server:
- void sendData(int device_id,int sensor_id,int thisData) {
- // if there's a successful connection:
- if (wifi.ipConfig(TCP,server, 80)) {
- DebugSerial.println("connecting...");
- // send the HTTP PUT request:
- String cmd;
- cmd = "POST /v1.0/device/";
- cmd += String(device_id);
- cmd += "/sensor/";
- cmd += String(sensor_id);
- cmd += "/datapoints";
- cmd += " HTTP/1.1\r\n";
- cmd += "Host: api.yeelink.net\r\n";
- cmd += "Accept: *";
- cmd += "/";
- cmd += "*\r\n";
- cmd += "U-ApiKey: ";
- cmd += APIKEY;
- cmd += "\r\n";
- cmd += "Content-Length: ";
- int thisLength = 10 + getLength(thisData);
- cmd += String(thisLength);
- cmd += "\r\n";
- cmd += "Content-Type: application/x-www-form-urlencoded\r\n";
- cmd += "Connection: close\r\n";
- cmd += "\r\n";
- cmd += "{\"value\":";
- cmd += String(thisData);
- cmd += "}\r\n";
- DebugSerial.println(cmd);
- wifi.Send(cmd);
- // note the time that the connection was made:
- lastConnectionTime = millis();
- }
- else {
- // if you couldn't make a connection:
- DebugSerial.println("connection failed");
- DebugSerial.println("disconnecting.");
- wifi.closeMux();
- }
- }
- int getLength(int someValue) {
- // there's at least one byte:
- int digits = 1;
- // continually divide the value by ten,
- // adding one to the digit count for each
- // time you divide, until you're at 0:
- int dividend = someValue /10;
- while (dividend > 0) {
- dividend = dividend /10;
- digits++;
- }
- // return the number of digits:
- return digits;
- }
- int dht11_read(int pin)
- {
- // BUFFER TO RECEIVE
- int bits[5];
- int cnt = 7;
- int idx = 0;
- // EMPTY BUFFER
- for (int i=0; i< 5; i++)
- {bits[i]= 0;}[/i]
- [i] // REQUEST SAMPLE[/i]
- [i] pinMode(pin, OUTPUT);[/i]
- [i] digitalWrite(pin, LOW);[/i]
- [i] delay(18);[/i]
- [i] digitalWrite(pin, HIGH);[/i]
- [i] delayMicroseconds(40);[/i]
- [i] pinMode(pin, INPUT);[/i]
- [i] // ACKNOWLEDGE or TIMEOUT[/i]
- [i] unsigned int loopCnt = 10000;[/i]
- [i] while(digitalRead(pin) == LOW)[/i]
- [i] if (loopCnt-- == 0) return -2;[/i]
- [i] loopCnt = 10000;[/i]
- [i] while(digitalRead(pin) == HIGH)[/i]
- [i] if (loopCnt-- == 0) return -2;[/i]
- [i] // READ OUTPUT - 40 BITS => 5 BYTES or TIMEOUT[/i]
- [i] for (int i=0; i<40; i++)[/i]
- [i] {[/i]
- [i] loopCnt = 10000;[/i]
- [i] while(digitalRead(pin) == LOW)[/i]
- [i] if (loopCnt-- == 0) return -2;[/i]
- [i] unsigned long t = micros();[/i]
- [i] loopCnt = 10000;[/i]
- [i] while(digitalRead(pin) == HIGH)[/i]
- [i] if (loopCnt-- == 0) return -2;[/i]
- [i] if ((micros() - t) > 40) bits[idx] |= (1 << cnt);[/i]
- [i] if (cnt == 0) // next byte?[/i]
- [i] {[/i]
- [i] cnt = 7; // restart at MSB[/i]
- [i] idx++; // next byte![/i]
- [i] }[/i]
- [i] else cnt--;[/i]
- [i] }[/i]
- [i] // WRITE TO RIGHT VARS[/i]
- [i] // as bits[1] and bits[3] are allways zero they are omitted in formulas.[/i]
- [i] humidity = bits[0]; [/i]
- [i] temperature = bits[2]; [/i]
- [i] int sum = bits[0] + bits[2]; [/i]
- [i] if (bits[4] != sum) return -1;[/i]
- [i] return 0;[/i]
- [i]}
在SSID和PASSWORD宏定义中修改成自己的WIFI名称和密码。
#define SSID "Itead_1(Public)" //type your own SSID name
#define PASSWORD "27955416" //type your own WIFI password
接着,把刚才所取得的APIKEY,设备的ID值和传感器的ID值替换到程序相应的位置中。设备的ID值替换代码中DEVICEID的值,传感器的ID值替换代码中SENSORID的值。
// for yeelink api
#define APIKEY "7bf75e6c2c8a17351d557f206f89fa2e"// replace your yeelink api key here
//replace the device ID and sensor ID for temperature sensor.
#define DEVICEID0 3047 //replace your device ID
#define SENSORID0 4285 //replace your sensor ID
//replace the device ID and sensor ID for humidity sensor.
#define DEVICEID1 3047 // replaceyour device ID
#define SENSORID1 26142 //replace your sensor ID
修改完后,把该程序烧写到mega中去。
然后打开Serial monitor,等待一段时间后,会看到串口会显示它的ip地址,接着他就会每隔10s钟上传一次数据。
3. 查看数据图表
用网页打开yeelink平台,输入账号密码后,在用户中心的“我的设备”里可以看到温度和湿度的数据曲线。
手机还可以下载yeelink的客户端:http://www.yeelink.net/developer/tools
IoTgo:一个完全开源的物联网平台 由于各种不可控因素,包括硬件固件、平台通信等,小伙伴们在使用我们前面教程提供的ESP8266库文件后,经常遇到编译出错的问题或者对物联网控制方面的内部通信不了解,无法深度开发自己的项目。
在此,ITEAD Studio已经开发了一个现成的、完全开源的物联网平台,所有源码都可以在github下载,包括服务器搭建、web APP、手机APP、桌面APP以及量身定制的Arduino库文件(ESP8266、W5x00、SIM900等)。当然,后续我们也会有详细操作教程一一奉献给大家。
IoTgo项目的初衷是想让用户可以像部署zencart搭建博客,安装 phpbb创建论坛一样,通过部署IoTgo建立自己的云端服务器。服务器不仅仅是接口开放,而是全部代码开源。
项目介绍: http://www.leiphone.com/news/201502/ImM5BlLyyK4bEmQr.html
代码Github链接 :
- 物联网平台及webUI [webUI将会独立出来]:https://github.com/itead/IoTgo(请大家支持我们,为我们加个星星!谢谢!)
- 手机端app demo:https://github.com/itead/IoTgo_Android_App
- Arduino库[物理层支持W5100/W5500(网线连接);SIM900(GPRS连接);esp8266(wifi连接):https://github.com/itead/ITEADLIB_Arduino_IoTgo
- 树莓派,CB等卡片式电脑SDK:https://github.com/itead/Segnix/tree/master/libraries/itead_IoTgo
免费版本:BETA版本通信协议层仅支持HTTP Websocket; 年后通信协议层会支持MQTT, CoAP
商业版本:通信协议层成使用 ARM授权的mbed ds
IoTgo 制作成了 Docker Image,发布到了 Docker Hub 上面: https://registry.hub.docker.com/u/humingchun/iotgo/
使用 IoTgo Docker Image,可以仅用 4 条命令在几分钟内部署 IoTgo 服务,详情请参考 IoTgo Github 文档。视频及图片教程等年后...
今天先简单介绍下如何在IoTgo这个平台获取API Key和设备ID。 我们搭建了两个服务器,版面是一样的:
国内快速访问:http://iotgo.itead.cn 国外快速访问:http://iotgo.iteadstudio.com
更多内容可以一一进入其他导航页面查看。这里我们主要介绍下如何创建自己的DIY设备。
首先,我们需要在IoTgo平台上注册一个用户账号。在页面右上角点击“SING UP”即可进入注册页面。 注意:注册非常简单,填写的邮箱地址将作为你的登录账号,密码只确认一次,请牢记注册密码,暂时不提供密码找回功能。 点击“Sign Up”按钮,如果你的邮箱地址已经被注册过,将会提示“该邮箱地址已存在,请使用另一个邮箱”。如果是第一次注册,将会直接登录到系统后台。这种情况应该很少,如果有的话就是你把密码忘记了。
左边栏的个人账户中心有两个选项“My Profile(我的身份)”和“My Device(我的设备)”。
点开“我的身份”这个选项,可以看到自己的账户邮箱地址和API Key,以及修改密码功能。这里的重点是API Key,这个大家应该都懂的。
有了API Key以后,我们就可以创建自己的设备了。点开左边栏的“我的设备”选项,在右上角点击“Creat DIY Device(创建DIY设备)”。
“创建DIY 设备”旁边有个“Add Indie Device(添加成品设备)”按钮,这个是用于用户添加已经出厂就预设好API Key的成品,比如wifi智能开关,只需联网即可使用,不需要编程或者做任何修改,适合终端消费者,略过不谈。
接下来,在打开的添加DIY设备页面可以看到,目前用户可以添加的DIY设备分为4类:“01 Power switch(电源开关)”、“02 Simple light(灯光控制)”、“03Temperature and humidity sensor(温湿度传感器)”和“04 Custom device type(定制类或自行开发设备)”。
我们先来创建一个温湿度数据上传的传感器设备。在设备名称我们输入“机房温湿度”,设备类型选择“03 Temperature and humidity sensor(温湿度传感器)”,在组名输入“1号机房”,最后点击“Creat”创建按钮。
创建完成后,在“我的设备”页面就可以看到这个新增的设备图标。
现在我们点击这个设备图标,就可以看到这个设备目前的状态和ID号以及修改、删除等操作按钮。
同理,我们可以创建另外三种DIY设备,并得到对应的设备ID。
每个组别可以添加多个设备,只需在创建设备的时候填入要放置的组名即可。
设备ID是该传感器设备在服务器系统的唯一标识,上传数据的时候必须经过设备ID和账户API Key进行有效性验证才能成功上传。
至此,我们就成功得到了上传数据所需的服务器验证。
今天关于IoTgo平台的介绍就先到这里。下期我们将开始连载基于这个开源平台的远程控制教程。
第一篇:使用MEGA2560+ESP8266+SHT10温湿度实现实时数据上传,敬请期待!
-
-
mega.jpg(48.74 KB, 下载次数: 6)