<em id="ri2my"></em>
  • <em id="ri2my"></em>
    <em id="ri2my"><label id="ri2my"><nav id="ri2my"></nav></label></em>
  • <em id="ri2my"><label id="ri2my"></label></em>
    <div id="ri2my"></div>
    1. <em id="ri2my"><label id="ri2my"></label></em>
    2. <em id="ri2my"><ol id="ri2my"></ol></em>
      <em id="ri2my"></em>

      1. 機智云開發板在線穩定性測試

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

        創作者: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();
                }
            }
        }

         

        <em id="ri2my"></em>
      2. <em id="ri2my"></em>
        <em id="ri2my"><label id="ri2my"><nav id="ri2my"></nav></label></em>
      3. <em id="ri2my"><label id="ri2my"></label></em>
        <div id="ri2my"></div>
        1. <em id="ri2my"><label id="ri2my"></label></em>
        2. <em id="ri2my"><ol id="ri2my"></ol></em>
          <em id="ri2my"></em>

          1. 免费高清视频