這個手機的wifi 小玩意的英文從這個randomnerdtutorials点com  網站下載的裡面有詳細資

我加入了

1. 一個 DHT22
2. 加多一個 LED
3. 更改固定 IP 地圵
4. 更攺按鍵顏色

這是用手機通過無線網絡內網控制 ESP12E 輸出 3 LED 1 DHT22 溫度濕度在手機顯示

LED 輸出可更攺為繼電器輸出控制家電開關

如有須要可加入其它功能曾加或減少

下載用 Arduino 便可以。要 Arduino IDE 中安裝 ESP12 板。
image.png
连线实物图
image.png
点灯
image.png
手机截图
  1. 如何在 Arduino IDE 中安裝ESP8266
  2. /*************************************************************
  3.   从这个网更改的,詳细請看这网
  4.   Completeproject details at http://randomnerdtutorials点com  
  5. ****************************************************************/
  6. // Load Wi-Fi library
  7. #include <ESP8266WiFi.h>
  8. unsigned long previousMillis = 0;        
  9. unsigned long currentMillis = 0;
  10. const long interval = 4100;            
  11. float temp;
  12. float humi;
  13. float temp1;
  14. float humi1;
  15. #include <Wire.h>
  16. #include <DHT.h>
  17. #define DHTPin 2  
  18. #define DHTTYPE DHT
  19. DHT dht(DHTPin, DHT22);
  20. // Replace with your network credentials
  21. const char* ssid     = "xxxxxxxx";                   //????更攺自巳的wifi名稱
  22. const char* password ="xxxxxxxx";                  //????更攺自巳的密码
  23. // Set web server port number to 80
  24. WiFiServer server(80);
  25. // Variable to store the HTTP request
  26. String header;
  27. // Auxiliar variables to store the currentoutput state
  28. String output0State = "OFF";
  29. String output1State = "OFF";
  30. String output2State = "OFF";
  31. // Assign output variables to GPIO pins
  32. const int output0 = 14;
  33. const int output1 = 4;
  34. const int output3 = 5;
  35. // Set your Static IP address
  36. IPAddress local_IP(192, 168, 1, 167);//????更改自已IP,这里是固定IP地址,每次开机都是这个地圵.
  37. // Set your Gateway IP address
  38. IPAddress gateway(192, 168, 1, 1);
  39. IPAddress subnet(255, 255, 255, 0);
  40. IPAddress primaryDNS(8, 8, 8, 8);   //optional 可不用更改
  41. IPAddress secondaryDNS(8, 8, 4, 4);//optional  可不用更改
  42. //----------------------------------------------------------------------------------
  43. void setup() {
  44.   //Initialize the output variables as outputs
  45. pinMode(output0, OUTPUT);
  46. pinMode(output1, OUTPUT);
  47. pinMode(output3, OUTPUT);
  48.   //Set outputs to LOW
  49. digitalWrite(output0, LOW);
  50. digitalWrite(output1, LOW);
  51. digitalWrite(output3, LOW);
  52. //////////Serial.begin(9600);   //要不要都可以,试机时加入
  53. //--------------------------------------------------------------------------------  
  54.   dht.begin();
  55. // Configures static IP address
  56.   if(!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
  57.   /////////// Serial.println("STA Failed to configure");
  58. }  
  59.   //Connect to Wi-Fi network with SSID and password
  60. ///////////Serial.print("Connecting to ");
  61. ///////////Serial.println(ssid);
  62. WiFi.begin(ssid, password);
  63. while (WiFi.status() != WL_CONNECTED) {
  64.    delay(500);
  65.    ////////////Serial.print(".");
  66.   }
  67.   //Print local IP address and start web server
  68. /////////////Serial.println("");
  69. ////////////Serial.println("WiFi connected.");
  70. ////////////Serial.println("IP address: ");
  71. ////////////Serial.println(WiFi.localIP());
  72. server.begin();
  73. }
  74. //-------------------------------------------------------------------------------
  75. void loop(){
  76.             //4sec read dhl22 one time
  77.        currentMillis = millis();
  78.        if(currentMillis - previousMillis >= interval)
  79.          {                                             
  80.         previousMillis = currentMillis;   
  81.         temp1 = dht.readTemperature();
  82.         humi1 = dht.readHumidity();                                    
  83.                       if (!(isnan(humi1) ||isnan(temp1)))
  84.                        {
  85.                         temp=temp1;
  86.                         humi=humi1;
  87.                       }
  88.           }   
  89. //-----------------------------------------------------------------------------------------               
  90.    WiFiClient client = server.available();                 // Listen for incomingclients         
  91.   if(client)
  92. {                                                        // If a new client connects,
  93.    //////////////Serial.println("New ClientX1.");          // print a message out in the serialport
  94.    String currentLine ="";                                // make aString to hold incoming data from the client
  95.     while (client.connected())
  96.    {                                                    // loop while the client's connected
  97.                                                          // Serial.println("New ClientX2.");
  98.      if (client.available())
  99.       {                                                  // if there's bytes to read from the client,
  100.        char c = client.read();                           // read a byte, then
  101.      ///////////////Serial.write(c);                     // print it out the serialmonitor
  102.        header += c;
  103.        if (c == '\n')
  104.        {        // if the byte is anewline character
  105.                 // if the current line isblank, you got two newline characters in a row.
  106.                 // that's the end of the clientHTTP request, so send a response:
  107.          if (currentLine.length() == 0)
  108.          {
  109.             // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
  110.            // and a content-type so the client knows what's coming, then a blankline:
  111. //-----------------------------------------------------------------------------------------------           
  112.            client.println("HTTP/1.1 200 OK");
  113.            client.println("Content-type:text/html");
  114.            client.println("Connection: close");
  115.            client.println("Refresh: 10");
  116.            client.println();
  117. //---------------------------------------------------------------------------------------           
  118.               // turns the GPIOs on and off
  119.            if (header.indexOf("GET/0/on") >= 0)     {
  120.            //////////// Serial.println("GPIO 0 on");
  121.               output0State ="ON";
  122.               digitalWrite(output0, HIGH);        
  123.               }
  124.            else if (header.indexOf("GET /0/off") >= 0){
  125.            ////////////Serial.println("GPIO 0 off");
  126.               output0State ="OFF";
  127.               digitalWrite(output0, LOW);
  128.            }
  129.            else if (header.indexOf("GET /1/on") >= 0) {
  130.            //////////// Serial.println("GPIO 1 on");
  131.               output1State ="ON";
  132.               digitalWrite(output1, HIGH);
  133.            }
  134.            else if (header.indexOf("GET /1/off") >= 0) {
  135.           //////////// Serial.println("GPIO 1 off");
  136.               output1State ="OFF";
  137.             digitalWrite(output1, LOW);
  138.            }
  139.            else if (header.indexOf("GET /2/on") >= 0) {
  140.              ////////////Serial.println("GPIO 3 on");
  141.               output2State ="ON";
  142.               digitalWrite(output3, HIGH);
  143.            }
  144.            else if (header.indexOf("GET /2/off") >= 0) {
  145.           ////////////// Serial.println("GPIO 3 off");
  146.               output2State ="OFF";
  147.             digitalWrite(output3, LOW);
  148.            }
  149. //------------------------------------------------------------------------------           
  150.               // Display the HTML web page
  151.            client.println("<!DOCTYPE html><html>");
  152.            client.println("<head><meta name="viewport"content="width=device-width, initial-scale=1">");
  153.            client.println("<link rel="icon"href="data:,">");
  154.               // CSS to style the on/offbuttons
  155.               // Feel free to change thebackground-color and font-size attributes to fit your preferences
  156.            client.println("<style>html { font-family: Helvetica;display: inline-block; margin: 0px auto; text-align: center;}");
  157.            client.println(".button { background-color: #195B6A; border-radius:8px; color: white; padding:16px 40px;");
  158.            client.println("text-decoration: none; font-size: 14px; margin:2px; cursor: pointer;}");
  159.            client.println(".button2 {background-color:#c3352b;}</style></head>");
  160.               // Web Page Heading
  161.            client.println("<body><h4>CONTROL 1 DHT 3 LED</h4>");
  162.            client.println("Temp: ");
  163.            client.println(temp);
  164.            client.println("C");
  165.            client.println("
  166. ");
  167.            client.println("Humi: ");
  168.            client.println(humi);
  169.            client.println("%");
  170. //--------------------------------------------------------------------------------------------------------------------         
  171.            // Display current state, and ON/OFF buttons                                                                        
  172.           // If the output0State is off, it displays the ON button      
  173.            if (output0State=="OFF")
  174.            {
  175.              client.println("<p><ahref="/0/on"><button class="button">LED0_OFF</button></a></p>");
  176.            }
  177.            else
  178.            {
  179.              client.println("<p><ahref="/0/off"><button class="buttonbutton2">LED0_ON</button></a></p>");
  180.            }     
  181. //-----------------------------------------------------------------------------------------------------------------------                     
  182.             // Display current state, and ON/OFF buttons  
  183.             // If the output1State is off, it displays the ON button                     
  184.          if (output1State=="OFF")
  185.             {
  186.            client.println("<p><ahref="/1/on"><buttonclass="button">LED1_OFF</button></a></p>");
  187.            }
  188.            else
  189.               {
  190.            client.println("<p><a href="/1/off"><buttonclass="buttonbutton2">LED1_ON</button></a></p>");
  191.               }
  192. //---------------------------------------------------------------------------------------------------------------------              
  193.            // Display current state, and ON/OFF buttons
  194.            // If the output1State is off, it displays the ON button      
  195.             if (output2State=="OFF")
  196.             {
  197.                client.println("<p><ahref="/2/on"><buttonclass="button">LED2_OFF</button></a></p>");
  198.                }
  199.            else
  200.             {
  201.            client.println("<p><ahref="/2/off"><button class="buttonbutton2">LED2_ON</button></a></p>");
  202.               }
  203. //------------------------------------------------------------------------------------------------------------              
  204.            client.println("</body></html>");           
  205.             // The HTTP response ends with another blank line
  206.            client.println();
  207.            // Break out of the while loop
  208.            break;
  209.          }
  210.          else
  211.          {  // if you got a newline, thenclear currentLine
  212.            currentLine = "";
  213.          }
  214.        }
  215.        else if (c != '\r')
  216.        {   // if you got anything elsebut a carriage return character,
  217.          currentLine += c;     // add it tothe end of the currentLine
  218.        }
  219.      }
  220.     }
  221.      // Clear the header variable
  222.    header = "";
  223.      // Close the connection
  224.    client.stop();
  225.    //////////////Serial.println("Client disconnected.");
  226. }  
  227. }