国内综合精彩aⅤ无码不卡_日本少妇做爰全过程_欧美性爱在线播放免费_午夜?V日韩一区二区_免费a级毛片无码免费播放_成在人线av无码喷水_亚洲精品网站色视频_国产婷婷精品成人_老师撩起裙子让我桶的视频_秋霞影院国产

機(jī)智云開發(fā)板在線穩(wěn)定性測試

機(jī)智云開發(fā)板在線穩(wěn)定性測試的詳細(xì)介紹

創(chuàng)作者:admin | 更新日期:2016-12-20 | 在線時長:77天
機(jī)智云Gokit2開發(fā)板,ESP8266刷AT固件后,使用基于ebox代碼在線穩(wěn)定性測試。有教程有源碼。。。

一、設(shè)備功能

機(jī)智云gokit開發(fā)板實時上傳DHT11溫濕度數(shù)據(jù),接受控制并進(jìn)行反饋,保持?jǐn)嗑€重連,可以通過開發(fā)板的usb口,用串口工具調(diào)試工具,直接控制esp8266。

機(jī)智云gokit開發(fā)板連接貝殼物聯(lián)

二、硬件

gokit開發(fā)板2.0v,esp8266網(wǎng)絡(luò)模塊。

三、實現(xiàn)方法

1、gokit擴(kuò)展板上的esp8266刷AT固件,參見:機(jī)智云Gokit2代功能板ESP-12F直接刷AT固件透傳方法

2、下載基于ebox系統(tǒng)的stm32,工程文件,點擊下載;

3、復(fù)制下方代碼,粘貼替換下載工程文件中的mian.cpp文件內(nèi)容;

4、修改文件中的DEVICEID、APIKEY、temp_input_id、hum_input_id,分別為設(shè)備id,設(shè)備密碼,屬于該設(shè)備下的溫度接口和濕度接口id;

5、編譯燒錄;

6、進(jìn)行透傳設(shè)置,直接通過gokit的usb口,使用串口調(diào)試工具,向esp8266發(fā)送命令進(jìn)行透傳設(shè)置,可參見:ESP8266透傳設(shè)置腳本,設(shè)置成功后自動連接貝殼物聯(lián)平臺 ,請透傳8282端口。

四、代碼

//STM32 RUN IN eBox

#include "ebox.h"
#include "cJSON.h"
#include "Dht11.h"

//================================
String DEVICEID = "xxx";
String APIKEY = "xxxxxxxxx";
String temp_input_id="xxxx";
String hum_input_id="xxxx";
//====================================

Iwdg dog;
Dht11 sensor(&PB3);
char uart1_rx_str[1024];
int i=0;
char uart2_rx_str[1024];
int j=0;
uint32_t last_beat_time = 0;
uint32_t last_say_time = 0;
bool checkinok = false;

String checkin="{\"M\":\"checkin\",\"ID\":\""+DEVICEID+"\",\"K\":\""+APIKEY+"\"}\n";
String checkout="{\"M\":\"checkout\",\"ID\":\""+DEVICEID+"\",\"K\":\""+APIKEY+"\"}\n";

void say(char *toID, char *content)
{
    uart2.printf("{\"M\":\"say\",\"ID\":\"%s\",\"C\":\"%s\"}\n",toID,content);
}

int processMessage(char *msg){
    cJSON *jsonObj = cJSON_Parse(msg);
    if(!jsonObj)
    {
        uart1.printf("json string wrong!");
        return 0;
    }
    cJSON *method = cJSON_GetObjectItem(jsonObj, "M");
    char *m = method->valuestring;
    if(strncmp(m,"b",1) == 0 || strncmp(m,"WELCOME",7) == 0)
    {
        uart1.printf("sending checkout...\r\n");
        uart2.print(checkout);
        //delay_ms(500);
        uart1.printf("sending checkin...\r\n");
        uart2.print(checkin);
    }
    if(strncmp(m,"checkinok",9) == 0)
    {
        checkinok=true;
    }
    if(strncmp(m,"connected",9) == 0)
    {
        checkinok=false;
        uart1.printf("sending checkout...\r\n");
        uart2.print(checkout);
        //delay_ms(500);
        uart1.printf("sending checkin...\r\n");
        uart2.print(checkin);
    }
    if(strncmp(m,"checked",7) == 0)
    {
        checkinok=true;
    }
    if(strncmp(m,"login",5) == 0)
    {
        char *from_id = cJSON_GetObjectItem(jsonObj, "ID")->valuestring;
        if(strncmp(from_id,"G",1) == 0)
        {
            uart1.printf("saying...");
            char new_content[] = "Dear friend, welcome to BIGIOT !";
            say(from_id,new_content);
        }
    }
    if(strncmp(m,"say",3) == 0 && millis() - last_say_time > 10)
    {
        last_say_time = millis();
        char *content = cJSON_GetObjectItem(jsonObj, "C")->valuestring;
        char *from_id = cJSON_GetObjectItem(jsonObj, "ID")->valuestring;
        if(strncmp(content,"play",4) == 0)
        {
            //do something here....
            uart1.printf("saying...");
            char new_content[] = "played";
            say(from_id,new_content);
        }
        else if(strncmp(content,"stop",4) == 0)
        {
            //do something here....
            uart1.printf("saying...");
            char new_content[] = "stoped";
            say(from_id,new_content);
        }
    }
    if(jsonObj)cJSON_Delete(jsonObj);
    return 1;
}

void uart2_rx_event()
{
    uint16_t c;
    c = uart2.read();
    uart1.write(c);
    uart2_rx_str[j]=c;
    uart2_rx_str[j+1] = '\0';
    if (c == '\n')
    {
        if(uart2_rx_str[j-1] == '}')
        {
            processMessage(uart2_rx_str);
        }
        if(strncmp(uart2_rx_str,"ERROR",5) == 0)
        {
            checkinok = false;
        }
        j=0;
    }else{
        j++;
    }
}

void update_dht11()
{
    int temp,hum;
    switch (sensor.read())
    {
    case Dht11::OK:
        temp=sensor.getTemperature();
        hum=sensor.getHumidity();
        uart1.printf("{\"M\":\"update\",\"ID\":\"%s\",\"V\":{\"%s\":\"%d\",\"%s\":\"%d\"}}\n",DEVICEID.c_str(),temp_input_id.c_str(),temp,hum_input_id.c_str(),hum);
        uart2.printf("{\"M\":\"update\",\"ID\":\"%s\",\"V\":{\"%s\":\"%d\",\"%s\":\"%d\"}}\n",DEVICEID.c_str(),temp_input_id.c_str(),temp,hum_input_id.c_str(),hum);
        break;

    case Dht11::ERROR_CHECKSUM:
        uart1.printf("Checksum error\r\n");
        break;

    case Dht11::ERROR_TIMEOUT:
        uart1.printf("Timeout error\r\n");
        break;

    default:
        uart1.printf("Unknown error\r\n");
        break;
    }
}

void uart1_rx_event()
{
    uint16_t c;
    c = uart1.read();
    uart1_rx_str[i]=c;
    uart1_rx_str[i+1] = '\0';
    if (c == '\n')
    {
        uart2.printf(uart1_rx_str);
        i=0;
    }else if(strncmp(uart1_rx_str,"+++",3) == 0)
    {
        uart2.printf(uart1_rx_str);
        i=0;
    }else
    {
        i++;
    }
}

void setup()
{
    ebox_init();
    uart1.begin(115200);
    uart2.begin(115200);
    dog.begin(10000);
    uart1.printf("Working start!\r\n");
    uart1.attach(uart1_rx_event,RxIrq);
    uart2.attach(uart2_rx_event,RxIrq);
}

int main(void)
{
    uint32_t last_update_time = 0;
    uint32_t last_status_time = 0;
    setup();
    while(1)
    {
        if(millis() - last_update_time > 6310 && checkinok)
        {
            update_dht11();
            last_update_time = millis();
            dog.feed();
        }
        if(millis() - last_status_time > 120000 || last_status_time == 0)
        {
            uart2.printf("{\"M\":\"status\"}\n");
            last_status_time = millis();
        }
    }
}