1. 程式人生 > 其它 >Arduino IED 開發環境搭建及ESP8266 WiFi網路時鐘+OLED顯示

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 */
  7 
  8 #include <Arduino.h>
  9 #include <ESP8266WiFi.h>
 10 #include <ESP8266WiFiMulti.h>
 11 #include <ESP8266HTTPClient.h>
 12 #include <WiFiClient.h>
 13
#include <ArduinoJson.h> 14 #include <U8g2lib.h> 15 16 #ifdef U8X8_HAVE_HW_SPI 17 #include <SPI.h> 18 #endif 19 #ifdef U8X8_HAVE_HW_I2C 20 #include <Wire.h> 21 #endif 22 23 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 24 25 26 ESP8266WiFiMulti WiFiMulti; 27 WiFiClient client; 28 HTTPClient http; 29 30 String payload = ""; 31 32 bool HttpDateFlag = false; 33 34 char ssid[] = "你的WiFi名稱"; 35 char pswd[] = "密碼"; 36 37 void GetHttpDate() 38 { 39 //等待連線 40 while(WiFiMulti.run() != WL_CONNECTED) 41 { 42 delay(200); 43 } 44 45 if ((WiFiMulti.run() == WL_CONNECTED)) 46 { 47 http.begin(client, "http://quan.suning.com/getSysTime.do");//蘇寧網站提供的網路授時 48 49 int httpCode = http.GET(); 50 51 if (httpCode > 0) 52 { 53 HttpDateFlag = true; 54 // file found at server 55 if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) 56 { 57 payload = http.getString(); 58 Serial.println(payload); 59 } 60 } 61 else 62 { 63 Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str()); 64 } 65 66 http.end(); 67 } 68 } 69 void HttpDateHandle() 70 { 71 const size_t capacity = JSON_OBJECT_SIZE(2) + 60; 72 DynamicJsonBuffer jsonBuffer(capacity); 73 74 JsonObject& root = jsonBuffer.parseObject(payload); 75 76 const char* sysTime2 = root["sysTime2"]; // "2021-07-17 15:26:56" 77 const char* sysTime1 = root["sysTime1"]; // "20210807170356" 78 Serial.println(sysTime2); 79 u8g2.setFont(u8g2_font_VCR_OSD_mr); 80 u8g2.setFontDirection(0); 81 u8g2.clearBuffer(); 82 u8g2.setCursor(0, 15); 83 u8g2.print(sysTime2); 84 u8g2.setCursor(0, 40); 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 }

效果圖: