<noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • ESP8266 arduino IDE模式 使用smartconfig配置WIFI,連接物聯網

    作者:wangbo0727 | 更新時間:2018-12-11 | 瀏覽量:5438

    一直想試用ESP8266做一個和商業WIFI能媲美的項目但是總是做不好。網上看了很多例程后來還是覺得arduino IDE好懂一點;

    想要達到商業WIFI項目基本上要能有以下功能:

    設備開機之后默認進入smartconfig模式,手機打開APP能很快配網;

    配網結束之后,進入連接WiFi模式,聯網結束之后,連接服務器,之后就能傳輸數據,還有發送指令了,

    目前網上很多代碼都是基本里程,沒有很完整的,那個大神能寫一個完整的啊;

     

     


    評論:共5條

    wangbo0727 評論于:2018-12-11 16:52:00
    我附上我寫的源代碼,基本上開機之后默認配網,還可以按鍵強制配網;之后都是大家熟悉的連接方式
    wangbo0727 評論于:2018-12-11 16:53:03
    #include <ESP8266WiFi.h>
    WiFiClient client;
    #define relay1 2
    #define key 5//將dht11的data口接在8266的GPIO2上
    const char *ssid = "Charlie Testing AP";
    const char *password = "11111111";
    const char *host = "121.42.180.30";
    char flag=0;

    bool autoConfig()
    {
    int a=0;
    pinMode(key,INPUT);
    if(digitalRead(key) == LOW)
    flag=1;
    else
    flag=0;
    while(!digitalRead(key));

    if(flag==1)
    {
    return false;
    }
    else
    {
    WiFi.begin();
    while (WiFi.status() != WL_CONNECTED)
    {
    Serial.println("AutoConfig Success");
    Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
    Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
    WiFi.printDiag(Serial);
    delay(1000);
    a++;
    if(a==30)
    {
    a=0;
    return false;
    break;
    }
    }
    if(false)
    {
    Serial.println("");
    Serial.println("wifi line faild !");
    }
    else
    {
    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
    return true;
    }
    }
    }

    void smartConfig()
    {
    WiFi.mode(WIFI_STA);
    Serial.println("\r\nWait for Smartconfig");
    WiFi.beginSmartConfig();
    while (1)
    {
    Serial.print("Wait soft line..\r\n");
    if (WiFi.smartConfigDone())
    {
    Serial.println("SmartConfig Success");
    Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
    Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
    WiFi.setAutoConnect(true); // 設置自動連接
    break;
    }
    delay(1000);
    }
    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
    }
    void line_tcp()
    {
    Serial.println(WiFi.localIP());
    const int httpPort =8181;
    if (!client.connect(host, httpPort))
    {
    Serial.println("connection failed");
    return;
    }
    Serial.print("connecting to ");
    Serial.println(host);
    client.write("{\"M\":\"checkin\",\"ID\":\"****\",\"K\":\"**********\"}\r\n");//登陸設備,修改成自己的ID和key
    delay(100);
    }
    void setup()
    {
    Serial.begin(115200);
    if (!autoConfig())
    {
    Serial.println("Start AP mode");
    smartConfig();
    }
    line_tcp();
    }

    void loop()
    {
    char valueread;
    while(client.available())
    {
    String line = client.readStringUntil('\r');
    Serial.print(line);
    int i;
    for(i=0;i<=150;i++)
    {
    if((line[i]=='p') &&( line[i+1]=='l'))
    {
    digitalWrite(relay1,HIGH);
    client.write("{\"M\":\"say\",\"ID\":\"ALL\",\"C\":\"LED1 is on\",\"SIGN\":\"ok\"}\r\n");
    }

    if((line[i]=='s') && (line[i+1]=='t'))
    {
    digitalWrite(relay1,LOW);
    client.write("{\"M\":\"say\",\"ID\":\"ALL\",\"C\":\"LED1 is off\",\"SIGN\":\"ok\"}\r\n");
    }


    }
    }
    client.write("{\"M\":\"say\",\"ID\":\"****\",\"C\":\"123456\"}\r\n");//修改自己的ID,向設備發送信息,防止掉線
    delay(6000);
    }
    xupengju110 回復于:2018-12-16 17:24:46
    回復 @wangbo0727:dht11數據接口的ID填寫到哪里么?
    wangbo0727 評論于:2018-12-19 08:11:56
    DHT還沒寫上去
    zjnbzm 評論于:2019-04-16 12:03:57
    這個源代碼能用NodeMCU Studio 2015 LUA 編輯,寫入ESP8266內嗎?
    返回頂部
    <noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • 三上悠亚在线观看