<noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • 機智云開發板在線穩定性測試

    機智云開發板在線穩定性測試的詳細介紹

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

    一、設備功能

    機智云gokit開發板實時上傳DHT11溫濕度數據,接受控制并進行反饋,保持斷線重連,可以通過開發板的usb口,用串口工具調試工具,直接控制esp8266。

    機智云gokit開發板連接貝殼物聯

    二、硬件

    gokit開發板2.0v,esp8266網絡模塊。

    三、實現方法

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

    2、下載基于ebox系統的stm32,工程文件,點擊下載

    3、復制下方代碼,粘貼替換下載工程文件中的mian.cpp文件內容;

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

    5、編譯燒錄;

    6、進行透傳設置,直接通過gokit的usb口,使用串口調試工具,向esp8266發送命令進行透傳設置,可參見:ESP8266透傳設置腳本,設置成功后自動連接貝殼物聯平臺 ,請透傳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();
            }
        }
    }

     

    <noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • 三上悠亚在线观看