esp8266制作太空人天氣時(shí)鐘

背景
簡(jiǎn)單來(lái)說(shuō),就是最近太閑了,然后下班也無(wú)所事事,在B站上刷著一眾up
們的diy
視頻,一次又一次地激起了我應(yīng)該做點(diǎn)啥的想法,于是在這一陣又一陣的激勵(lì)下,我再次燃起了對(duì)diy
硬件的興趣,于是我便又一次把自己年前買(mǎi)到的一些硬件翻出來(lái),開(kāi)始自己的新一輪arduino
之旅。

材料準(zhǔn)備
本次項(xiàng)目的總成本不到30RMB
,esp8266
開(kāi)發(fā)板的成本13RMB
,1.3
寸IPS
屏幕成本15RMB
esp8266
開(kāi)發(fā)板杜邦線(xiàn)
6
條1.3
寸TFT
屏幕一個(gè)(ST7789
)
準(zhǔn)備工作
接線(xiàn)
接線(xiàn)對(duì)應(yīng)關(guān)系如下:

視頻發(fā)出來(lái)之后,有好多小伙伴在問(wèn)如何接線(xiàn),這里我放出一張實(shí)物的接線(xiàn)示意圖,各位小伙伴直接對(duì)照?qǐng)D片進(jìn)行連接即可:

依賴(lài)庫(kù)
安裝TFT_eSPI
庫(kù),這里算是arduino
的最基本操作了,我們就不展開(kāi)了。

如果對(duì)esp8266
的開(kāi)發(fā)環(huán)境還有疑問(wèn)的小伙伴可以看下我之前發(fā)出來(lái)了的相關(guān)內(nèi)容:
https://zhuanlan.zhihu.com/p/589448075
運(yùn)行測(cè)試用例
這里運(yùn)行測(cè)試用例的意義是為了驗(yàn)證我們的接線(xiàn)和環(huán)境配置是否正常
修改配置
運(yùn)行測(cè)試用例前,我們要先修改Arduino\libraries\TFT_eSPI
下的User_Setup.h
文件,修改這個(gè)文件的作用是配置屏幕的相關(guān)數(shù)據(jù),確保代碼可以驅(qū)動(dòng)我們的屏幕,主要包括屏幕驅(qū)動(dòng)版本、分辨率和屏幕引腳定義,具體修改的點(diǎn)如下:
驅(qū)動(dòng)文件設(shè)置:這里根據(jù)
TFT
屏幕的驅(qū)動(dòng)版本選擇

屏幕分辨率:這里也是根據(jù)屏幕參數(shù)選擇

引腳設(shè)置:這里只需要設(shè)置
dc
和rst
引腳即可,要和接線(xiàn)部分的引腳相對(duì)應(yīng)

其余配置項(xiàng)保持默認(rèn)即可。
運(yùn)行測(cè)試用例
選擇一個(gè)示例,這里我們選擇Colour_test

然后選擇串口和開(kāi)發(fā)板,上傳即可。如果接線(xiàn)和代碼都沒(méi)有問(wèn)題,那么屏幕會(huì)顯示如下圖像:

至此,我們的準(zhǔn)備工作告一段落,下面開(kāi)始我們的代碼編寫(xiě)。
開(kāi)始擼代碼
本項(xiàng)目是基于esp8266和IPS彩屏的一個(gè)桌面天氣時(shí)鐘,項(xiàng)目代碼基于嘉立創(chuàng)開(kāi)源平臺(tái)的《ESP8266太空人天氣時(shí)鐘》源碼,優(yōu)化了其中HTTPClient的報(bào)錯(cuò),代碼本身未作大的調(diào)整,項(xiàng)目地址如下:
https://oshwhub.com/nanxiangxiao/tai-kong-ren-shi-zhong_copy
本次項(xiàng)目演示的代碼倉(cāng)庫(kù)如下:
https://github.com/Syske/esp8266-click-weather-ips
下面我們簡(jiǎn)單介紹下代碼的修改點(diǎn),確保各位小伙伴看了之后就可以直接點(diǎn)亮。這里我們要修改的文件只有一個(gè)——click-weather.ino
,由于代碼本身內(nèi)容過(guò)多,這里我們只貼出需要修改的部分:
wifi相關(guān)信息
這里把wifi
改成你自己的,之后直接上傳代碼即可。

關(guān)于城市編碼
在實(shí)際測(cè)試過(guò)程中,發(fā)現(xiàn)ip
識(shí)別城市會(huì)有異常的情況,這時(shí)候我們可以通過(guò)配置城市編碼的方式來(lái)解決,當(dāng)然也需要將根據(jù)ip
獲取城市編碼的相關(guān)代碼注釋掉


城市的編碼信息可以從下面這個(gè)地址中搜索:
https://gitee.com/sysker/LocationList/blob/master/China-City-List-latest.csv

至此,我們本次的項(xiàng)目基本上就結(jié)束了。
其他修改點(diǎn)
如果只是想復(fù)刻項(xiàng)目的小伙伴,以下內(nèi)容可以不關(guān)注,這里說(shuō)的是我在原代碼基礎(chǔ)上的優(yōu)化點(diǎn)。其實(shí)這里的優(yōu)化點(diǎn)和沒(méi)有優(yōu)化一樣,因?yàn)檫@里所謂的優(yōu)化點(diǎn)應(yīng)該是由于httpClient
版本問(wèn)題,優(yōu)化的原因是原代碼在編譯過(guò)程中報(bào)錯(cuò)了,然后我根據(jù)錯(cuò)誤提示做了簡(jiǎn)單的調(diào)整:

錯(cuò)誤的意思是HTTPClient
的begin(URL)
過(guò)期了,推薦我們使用begin(WiFiClient, url)
,所以我的優(yōu)化點(diǎn)就是改成了新方法:
首先實(shí)例化一個(gè)
WiFiClient

然后替換所有調(diào)用
begin
方法的地方,之后成功編譯代碼

簡(jiǎn)單總結(jié)
本次項(xiàng)目的難點(diǎn)有兩個(gè),第一個(gè)是esp8266
點(diǎn)亮屏幕部分的配置和接線(xiàn),這一塊如果順利,本次項(xiàng)目基本上就算完成了70%
;第二個(gè)就是項(xiàng)目源碼的修改和上傳,這塊要求對(duì)arduino
和C++
的基礎(chǔ)知識(shí),但是參照本教程也可以順利完成。好了,關(guān)于這個(gè)項(xiàng)目,我們就先說(shuō)這么多,有疑問(wèn)的小伙伴可以留言,我們一起探討交流。