Arduino IED 開發環境搭建及ESP8266 WiFi網絡時鍾+OLED顯示


Arduino IDE是由 Arduino 官方提供的支持 C 語言的集成開發環境,主要是針對 Arduino 系列的開發板進行編程。
通過簡單的配置,可以在原本的編程環境里添加上對 ESP8266 開發板的支持。對於熟悉 Arduino 函數庫和開發流程的用戶,基本上沒有任何使用上的區別。
 
一、添加ESP8266
首先從 Arduino官網(https://www.arduino.cc/en/software)下載最新版本的 Arduino IDE 軟件並安裝。
安裝完成以后,進入 首選項(Preferences),找到 附加開發板管理器地址(Additional Board Manager URLs),並在其后添加如下信息:
http://arduino.esp8266.com/stable/package_esp8266com_index.json

 

 之后點擊工具 - 開發板 - 開發板管理器,進入開發板管理器界面:

 

 在搜索欄找到ESP8266並安裝:

 

安裝完成后,重啟Arduino IED軟件。在工具 - 開發板選項中即會看到ESP8266開發板選項:

注意:根據自己的開發板選型

 

 

 二、WiFi網絡時鍾+OLED

  • 一塊Esb8266 NodeMCU CH340開發版
  • 一塊0.96寸OLED 屏幕(4針)
  • 4根杜邦線

 

 OLED屏幕 ---------- ESP8266

    GND ---------- G

    VCC ----------- 3V

    SCL ------------ D1

    SDA ------------ D2

 實物圖-

 

一定找根帶有數據傳輸功能的數據線接到電腦上。(上次被坑了,一直不顯示串口!!)

裝CH340驅動(啥,不會?不會找百度!),然后在設備管理器就可以看到了

 

 OK上面步驟都沒問題了,上干貨

 

  1 /*
  2   注意:
  3   有的庫需要自己安裝或更新
  4 */
  5 
  6 #include <Arduino.h>
  7 #include <ESP8266WiFi.h>
  8 #include <ESP8266WiFiMulti.h>
  9 #include <ESP8266HTTPClient.h>
 10 #include <WiFiClient.h>
 11 #include <ArduinoJson.h>
 12 #include <U8g2lib.h>
 13 
 14 #ifdef U8X8_HAVE_HW_SPI
 15 #include <SPI.h>
 16 #endif
 17 #ifdef U8X8_HAVE_HW_I2C
 18 #include <Wire.h>
 19 #endif
 20 
 21 U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE);   // All Boards without Reset of the Display
 22 
 23 
 24 ESP8266WiFiMulti WiFiMulti;
 25 WiFiClient client;
 26 HTTPClient http;
 27 
 28 String payload = "";
 29 
 30 bool HttpDateFlag = false;
 31 
 32 char ssid[] = "你的WiFi名稱";
 33 char pswd[] = "密碼";
 34 
 35 void GetHttpDate()
 36 {
 37     //等待連接
 38     while(WiFiMulti.run() != WL_CONNECTED)
 39     {
 40         delay(200);
 41     }
 42 
 43     if ((WiFiMulti.run() == WL_CONNECTED))
 44     {
 45         http.begin(client, "http://quan.suning.com/getSysTime.do");//蘇寧網站提供的網絡授時
 46 
 47         int httpCode = http.GET();
 48 
 49         if (httpCode > 0)
 50         {
 51             HttpDateFlag = true;
 52             // file found at server
 53             if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY)
 54             {
 55                 payload = http.getString();
 56                 Serial.println(payload);
 57             }
 58         }
 59         else
 60         {
 61             Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
 62         }
 63 
 64         http.end();
 65     }
 66 }
 67 void HttpDateHandle()
 68 {
 69     const size_t capacity = JSON_OBJECT_SIZE(2) + 60;
 70     DynamicJsonBuffer jsonBuffer(capacity);
 71     
 72     JsonObject& root = jsonBuffer.parseObject(payload);
 73 
 74     const char* sysTime2 = root["sysTime2"]; // "2021-07-17 15:26:56"
 75     const char* sysTime1 = root["sysTime1"]; // "20210807170356"
 76     Serial.println(sysTime2);
 77     u8g2.setFont(u8g2_font_wqy15_t_chinese2); 
 78     u8g2.setFontDirection(0);
 79     u8g2.clearBuffer();
 80     u8g2.setCursor(0, 15);
 81     u8g2.println("北京時間");
 82     u8g2.setCursor(0, 40);
 83     u8g2.println(sysTime2);
 84     u8g2.setCursor(0, 60);
 85     u8g2.print(sysTime2+11);
 86     u8g2.sendBuffer();
 87 }
 88 
 89 void setup() 
 90 {
 91     u8g2.begin();
 92     u8g2.enableUTF8Print();   
 93 
 94     Serial.begin(115200);
 95 
 96     Serial.println();
 97 
 98     WiFi.mode(WIFI_STA);
 99     WiFiMulti.addAP(ssid, pswd);
100 }
101 
102 void loop() 
103 {
104     GetHttpDate();
105     if(HttpDateFlag)
106     {
107         HttpDateHandle();
108         HttpDateFlag = false;
109     }
110     //delay(10000);
111 }

 

 

效果圖:

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM