ESP32, IOT物聯網

【IOT物聯網應用-ESP32】第三十六篇:專題ESP32氣象站+電子時鐘 OpenWeather 天氣預報搭配 ILI9341顯示螢幕

實驗說明:

使用ESP32IlI934顯示螢幕來製作天氣時鐘,通過無線網絡從openweathermap.org網站上獲取本地的天氣資料,再將天氣、溫度、濕度、風向、風速、氣壓、月相、日出與日落時間呈現在顯示器上。

 

材料:

  • ESP32-E DevKit
  • USB 傳輸線
  • IlI9341顯示螢幕
  • 杜邦線

 

接線說明:  

 

獲取openweathermap API Keys:

Step1: 註冊帳號:  https://home.openweathermap.org/users/sign_in

 

Step2: 獲取API Keys

 

安裝程式庫:

請先將下列7個函式庫依序下載,然後再分別依序安裝。

安裝方式:在 Arduino 整合環境功能表點選 草稿碼 / 匯入程式庫 / 加入.ZIP程式庫…

 

▼ github 下載方式可參考下圖,點擊Download ZIP:

 

上傳文件到 ESP32 Filesystem文件系統:

需先將使用者UI介面、圖檔與字型存放在ESP32 SPIFFS內部空間。

Step1: Arduino IDE安裝 ESP32 Filesystem Uploader (可參考【IOT物聯網應用-ESP32】第三十五篇:SPIFFS檔案系統

Step2: 開啟OpenWeather範例程式

 

Step3: 執行Arduino IDE >> 工具 >> ESP32 Sketch Data Upload

 

程式:

在編譯程式碼之前,有3支程式碼檔案必須修改(NTP_Time.h、All_Settings.hUser_Setup.h),請參考以下程式碼修改設置:

 

  • NTP_Time.h

新增台灣時區如下:

// Zone reference "TW"
TimeChangeRule CST = {"CST", First, Sun, Jan, 0, 480}; 
Timezone TW(CST, CST);

▼將上面3行程式碼插入NTP_Time.h,如下圖所示:

 

  • All_Settings.h

填入網路名稱與密碼

#define WIFI_SSID      "Your_SSID"     //將Your_SSID修改為您的網路名稱
#define WIFI_PASSWORD  "Your_password" //將Your_password修改為您的網路密碼

 

修改為您所在的時區代碼,例如台灣時區代碼:TW

#define TIMEZONE TW

 

註冊https://openweathermap.org/,並取得API Keys,將xxxx修改為您的API Keys

const String api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 

 

經緯度設置為至少4位小數,預測地點設置為台北天母棒球場,您也可以利用google map自行更改。

const String latitude =  "25.11363"; 
const String longitude = "121.53298";

 

  • User_Setup.h

最後,需要修改User_Setup.h(檔案位置:/文件/Arduino/ libraries/TFT_eSPI-master/User_Setup.h)

將以下幾行的註解移除。

#define TFT_MISO 19
#define TFT_MOSI 23
#define TFT_SCLK 18
#define TFT_CS   15  // Chip select control pin
#define TFT_DC    2  // Data Command control pin
#define TFT_RST   4  // Reset pin (could connect to RST pin)
#define TFT_RST  -1  // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST

▼修改結果如下:

 

程式說明:

完成上述程式碼修改後,編譯並上傳程式碼到ESP32,您就可以在 TFT 顯示螢幕上看到天氣、溫度、濕度、風向、風速、氣壓、月相、日出與日落時間全部天氣有關的數據都呈現在顯示器上。