zoukankan      html  css  js  c++  java
  • CC3000 Arduino 连接Yeelink中文注释 示例

    代码如下“

    /*************************************************** 
     *这是一个例子的dfrobot维多-无线集成物联网建兴传感器和控制节点
    *产品页面及更多信息:http://www.dfrobot.com.cn/goods-997.html
    *特别设计的dfrobot维多产品的工作:
    *
    *图书馆叉从Adafruit
    *
    *劳伦写的
    * BSD许可证,所有以上文字必须包含在任何重
     * 
     ****************************************************/
     
    /*
    这个例子的代码是用于连接yeelink云服务(官方主页:www.yeelink .net)。
    所需的设备只是:
    1。LM35温度传感器的低成本或任何你用来上传数据的装置
    2。和Wido
    注意:请不要忘记在使用前更改下面的设置!
    1。wlan_ssid和wlan_pass
    2。api_key
    三.设备ID和传感器ID
    
     */
    
    
    #include <Adafruit_CC3000.h>
    #include <ccspi.h>
    #include <SPI.h>
    #define Wido_IRQ   7
    #define Wido_VBAT  5
    #define Wido_CS    10
    
    Adafruit_CC3000 Wido = Adafruit_CC3000(Wido_CS, Wido_IRQ, Wido_VBAT,
    SPI_CLOCK_DIVIDER); //你可以改变这个时钟速度
    // 安全可以wlan_sec_unsec,wlan_sec_wep,wlan_sec_wpa或wlan_sec_wpa2
    #define WLAN_SECURITY   WLAN_SEC_WPA2
    
    
    #define WLAN_SSID       "myNetwork"           // cannot be longer than 32 characters!
    #define WLAN_PASS       "myPassword"          // For connecting router or AP, don't forget to set the SSID and password here!!
    
    
    #define TCP_TIMEOUT      3000
    //定义cc3000_tiny_driver
    
    #define WEBSITE  "api.yeelink.net"
    #define API_key  "733115abefe88b0033c035ac9e000000"  // Update Your API Key. To get your API Key, please check the link below
                                                         // http://www.yeelink.net/user/user_profile
    
    void setup(){
    
      Serial.begin(115200);
      Serial.println(F("Hello, CC3000!
    "));
    
      /*初始化模块*/
      Serial.println(F("
    Initialising the CC3000 ..."));
      if (!Wido.begin())
      {
        Serial.println(F("无法初始化的CC3000!检查你的线路?"));
        while(1);
      }
    
      /* 尝试连接到接入点 */
      char *ssid = WLAN_SSID;             /* Max 32 chars */
      Serial.print(F("
    Attempting to connect to ")); 
      Serial.println(ssid);
    
      /* 注意:安全连接在“微”模式下不可用!
    默认情况下connecttoap将重试下去,但是你可以通过
    最大重试次数可选(大于零)作为第四个参数。
       */
      if (!Wido.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY)) {
        Serial.println(F("Failed!"));
        while(1);
      }
    
      Serial.println(F("Connected!"));
    
      /*等待DHCP完成 */
      Serial.println(F("Request DHCP"));
      while (!Wido.checkDHCP())
      {
        delay(100); // 每个插入的DHCP:超时!
      }  
    
    }
    
    uint32_t ip = 0;
    float temp = 0;
    
    void loop(){
      
      static Adafruit_CC3000_Client WidoClient;
      static unsigned long RetryMillis = 0;
      static unsigned long uploadtStamp = 0;
      static unsigned long sensortStamp = 0;
    
      if(!WidoClient.connected() && millis() - RetryMillis > TCP_TIMEOUT){
        // Update the time stamp更新时间戳
        RetryMillis = millis();
    
        Serial.println(F("Try to connect the cloud server"));
        WidoClient.close();
    
        // Get Yeelink IP address把Yeelink IP的地址
        Serial.print(F("api.yeelink.net -> "));
        while  (ip  ==  0)  {
          if  (!Wido.getHostByName(WEBSITE, &ip))  {    //  Get the server IP address based on the domain name
           //根据域名获取服务器IP地址
            Serial.println(F("Couldn't resolve!"));
          }
          delay(500);
        }  
        Wido.printIPdotsRev(ip);
        Serial.println(F(""));
        
        // Connect to the Yeelink Server连接到服务器的yeelink
        WidoClient = Wido.connectTCP(ip, 80);          // Try to connect cloud server尝试连接云服务器
      }
      
      if(WidoClient.connected() && millis() - uploadtStamp > 2000){
        uploadtStamp = millis();
        // If the device is connected to the cloud server, upload the data every 2000ms.
        //如果设备连接到云服务器,上传数据的每一2000ms。
        // Prepare Http Package for Yeelink & get length
        //准备和包装长度yeelink for HTTP get
        int length = 0;
        char lengthstr[3];
        
        // 创建HTTP数据包
        char httpPackage[60] = "";
        
        strcat(httpPackage,"{"value":");
        itoa(temp,httpPackage+strlen(httpPackage),10);          
        //日期(时间)Push the to the HTTP数据包
        strcat(httpPackage,"}");
        
        length = strlen(httpPackage);                           // get the length of data package
        itoa(length,lengthstr,10);                              // convert int to char array for posting
        Serial.print(F("Length = "));
        Serial.println(length);
        
        Serial.println(F("Connected to Yeelink server."));
        
        // Send headers
        Serial.print(F("Sending headers"));
        
        WidoClient.fastrprint(F("POST /v1.0/device/"));
        WidoClient.fastrprint(F("100/sensor/20/datapoints"));  //Please change your device ID and sensor ID here, after creating
                                                               //Please check the link: http://www.yeelink.net/user/devices
                                                               //The example URL: http://api.yeelink.net/v1.0/device/100/sensor/20/datapoints
        WidoClient.fastrprintln(F(" HTTP/1.1"));
        Serial.print(F("."));
        
        WidoClient.fastrprintln(F("Host: api.yeelink.net"));
        Serial.print(F("."));
        
        WidoClient.fastrprint(F("U-ApiKey: "));
        WidoClient.fastrprintln(API_key);
        Serial.print(F("."));
        
        WidoClient.fastrprint("Content-Length: "); 
        WidoClient.fastrprintln(lengthstr);
        WidoClient.fastrprintln("");
        Serial.print(F("."));
        
        Serial.println(F(" done."));
        
        // Send data
        Serial.print(F("Sending data"));
        WidoClient.fastrprintln(httpPackage);
    
        Serial.println(F(" done."));
        
        /********** Get the http page feedback ***********/
        
        unsigned long rTimer = millis();
        Serial.println(F("Reading Cloud Response!!!
    "));
        while (millis() - rTimer < 2000) {
          while (WidoClient.connected() && WidoClient.available()) {
            char c = WidoClient.read();
            Serial.print(c);
          }
        }
        delay(1000);             // Wait for 1s to finish posting the data stream
        WidoClient.close();      // Close the service connection
      
        RetryMillis = millis();  // Reset the timer stamp for applying the connection with the service
      }
    
      if(millis() - sensortStamp > 1000){
        sensortStamp = millis();
        // read the LM35 sensor value and convert to the degrees every 100ms.
    
        int reading = analogRead(0);
        temp = reading *0.0048828125*100;
        Serial.print(F("Real Time Temp: ")); 
        Serial.println(temp); 
      }
    }

    /***************************************************  *这是一个例子的dfrobot维多-无线集成物联网建兴传感器和控制节点*产品页面及更多信息:http://www.dfrobot.com.cn/goods-997.html*特别设计的dfrobot维多产品的工作:**图书馆叉从Adafruit**劳伦写的* BSD许可证,所有以上文字必须包含在任何重 *  ****************************************************/ /*这个例子的代码是用于连接yeelink云服务(官方主页:www.yeelink .net)。所需的设备只是:1。LM35温度传感器的低成本或任何你用来上传数据的装置2。和Wido注意:请不要忘记在使用前更改下面的设置!1。wlan_ssid和wlan_pass2。api_key三.设备ID和传感器ID
     */

    #include <Adafruit_CC3000.h>#include <ccspi.h>#include <SPI.h>#define Wido_IRQ   7#define Wido_VBAT  5#define Wido_CS    10
    Adafruit_CC3000 Wido = Adafruit_CC3000(Wido_CS, Wido_IRQ, Wido_VBAT,SPI_CLOCK_DIVIDER); //你可以改变这个时钟速度// 安全可以wlan_sec_unsec,wlan_sec_wep,wlan_sec_wpa或wlan_sec_wpa2#define WLAN_SECURITY   WLAN_SEC_WPA2

    #define WLAN_SSID       "myNetwork"           // cannot be longer than 32 characters!#define WLAN_PASS       "myPassword"          // For connecting router or AP, don't forget to set the SSID and password here!!

    #define TCP_TIMEOUT      3000//定义cc3000_tiny_driver
    #define WEBSITE  "api.yeelink.net"#define API_key  "733115abefe88b0033c035ac9e000000"  // Update Your API Key. To get your API Key, please check the link below                                                     // http://www.yeelink.net/user/user_profile
    void setup(){
      Serial.begin(115200);  Serial.println(F("Hello, CC3000! "));
      /*初始化模块*/  Serial.println(F(" Initialising the CC3000 ..."));  if (!Wido.begin())  {    Serial.println(F("无法初始化的CC3000!检查你的线路?"));    while(1);  }
      /* 尝试连接到接入点 */  char *ssid = WLAN_SSID;             /* Max 32 chars */  Serial.print(F(" Attempting to connect to "));   Serial.println(ssid);
      /* 注意:安全连接在“微”模式下不可用!默认情况下connecttoap将重试下去,但是你可以通过最大重试次数可选(大于零)作为第四个参数。   */  if (!Wido.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY)) {    Serial.println(F("Failed!"));    while(1);  }
      Serial.println(F("Connected!"));
      /*等待DHCP完成 */  Serial.println(F("Request DHCP"));  while (!Wido.checkDHCP())  {    delay(100); // 每个插入的DHCP:超时!  }  
    }
    uint32_t ip = 0;float temp = 0;
    void loop(){    static Adafruit_CC3000_Client WidoClient;  static unsigned long RetryMillis = 0;  static unsigned long uploadtStamp = 0;  static unsigned long sensortStamp = 0;
      if(!WidoClient.connected() && millis() - RetryMillis > TCP_TIMEOUT){    // Update the time stamp更新时间戳    RetryMillis = millis();
        Serial.println(F("Try to connect the cloud server"));    WidoClient.close();
        // Get Yeelink IP address把Yeelink IP的地址    Serial.print(F("api.yeelink.net -> "));    while  (ip  ==  0)  {      if  (!Wido.getHostByName(WEBSITE, &ip))  {    //  Get the server IP address based on the domain name       //根据域名获取服务器IP地址        Serial.println(F("Couldn't resolve!"));      }      delay(500);    }      Wido.printIPdotsRev(ip);    Serial.println(F(""));        // Connect to the Yeelink Server连接到服务器的yeelink    WidoClient = Wido.connectTCP(ip, 80);          // Try to connect cloud server尝试连接云服务器  }    if(WidoClient.connected() && millis() - uploadtStamp > 2000){    uploadtStamp = millis();    // If the device is connected to the cloud server, upload the data every 2000ms.    //如果设备连接到云服务器,上传数据的每一2000ms。    // Prepare Http Package for Yeelink & get length    //准备和包装长度yeelink for HTTP get    int length = 0;    char lengthstr[3];        // 创建HTTP数据包    char httpPackage[60] = "";        strcat(httpPackage,"{"value":");    itoa(temp,httpPackage+strlen(httpPackage),10);              //日期(时间)Push the to the HTTP数据包    strcat(httpPackage,"}");        length = strlen(httpPackage);                           // get the length of data package    itoa(length,lengthstr,10);                              // convert int to char array for posting    Serial.print(F("Length = "));    Serial.println(length);        Serial.println(F("Connected to Yeelink server."));        // Send headers    Serial.print(F("Sending headers"));        WidoClient.fastrprint(F("POST /v1.0/device/"));    WidoClient.fastrprint(F("100/sensor/20/datapoints"));  //Please change your device ID and sensor ID here, after creating                                                           //Please check the link: http://www.yeelink.net/user/devices                                                           //The example URL: http://api.yeelink.net/v1.0/device/100/sensor/20/datapoints    WidoClient.fastrprintln(F(" HTTP/1.1"));    Serial.print(F("."));        WidoClient.fastrprintln(F("Host: api.yeelink.net"));    Serial.print(F("."));        WidoClient.fastrprint(F("U-ApiKey: "));    WidoClient.fastrprintln(API_key);    Serial.print(F("."));        WidoClient.fastrprint("Content-Length: ");     WidoClient.fastrprintln(lengthstr);    WidoClient.fastrprintln("");    Serial.print(F("."));        Serial.println(F(" done."));        // Send data    Serial.print(F("Sending data"));    WidoClient.fastrprintln(httpPackage);
        Serial.println(F(" done."));        /********** Get the http page feedback ***********/        unsigned long rTimer = millis();    Serial.println(F("Reading Cloud Response!!! "));    while (millis() - rTimer < 2000) {      while (WidoClient.connected() && WidoClient.available()) {        char c = WidoClient.read();        Serial.print(c);      }    }    delay(1000);             // Wait for 1s to finish posting the data stream    WidoClient.close();      // Close the service connection      RetryMillis = millis();  // Reset the timer stamp for applying the connection with the service  }
      if(millis() - sensortStamp > 1000){    sensortStamp = millis();    // read the LM35 sensor value and convert to the degrees every 100ms.
        int reading = analogRead(0);    temp = reading *0.0048828125*100;    Serial.print(F("Real Time Temp: "));     Serial.println(temp);   }}

  • 相关阅读:
    advacing lnux program 互斥信号量[copy]
    线程专有数据(ThreadSpecific Data)
    advacing lnux program 条件变量[copy]
    advacing lnux program Thread Cancelation[copy]
    sql 按序号修改
    pku2941 Homogeneous Squares
    pku3051 Satellite Photographs
    pku1222 EXTENDED LIGHTS OUT
    pku3468 A Simple Problem with Integers
    pku2945 Find the Clones
  • 原文地址:https://www.cnblogs.com/xiaohe520/p/7223960.html
Copyright © 2011-2022 走看看