最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

NodeMCU(ESP8266) WiFi時(shí)鐘

2021-03-01 10:28 作者:老閑漁  | 我要投稿

一、實(shí)現(xiàn)功能

利用oled屏幕作為顯示,esp8266作為聯(lián)網(wǎng)模塊,實(shí)現(xiàn)一個(gè)可以聯(lián)網(wǎng)校準(zhǔn)時(shí)間的時(shí)鐘??

???????????????????????????????????????????????????????????????????????(PS:文末有完整代碼以及相關(guān)資料)


二、主要材料

1、NodeMCU(esp8266

NodeMCU(esp8266)

2、oled屏


OLED(i2c協(xié)議通信)


三、開(kāi)發(fā)環(huán)境

這里代碼我選擇用arduino IDE寫(xiě),因?yàn)橛泻芏嗪芊奖愫芎糜玫膸?kù)

具體如何使用arduino搭建esp8266環(huán)境網(wǎng)上有很多超詳細(xì)保姆級(jí)教程,這里就不再贅述??

然后就可以開(kāi)始愉快的碼代碼了!

思路:連上WiFi---->通過(guò)獲取時(shí)間的api得到準(zhǔn)確時(shí)間---->將時(shí)間經(jīng)過(guò)處理后保存---->用oled屏顯示出來(lái)!

只要再加上億點(diǎn)點(diǎn)細(xì)節(jié)就好啦!

一、連接WiFi

連接WiFi的方法和庫(kù)有很多,我這里列出兩種方法,大家可以自行根據(jù)情況選擇

(1)使用ESP8266WiFi庫(kù)

該庫(kù)是用于控制esp8266 WiFi功能的基本庫(kù),功能強(qiáng)大,我這里只介紹如何連接上自己的WiFi這一功能

我們主要用到該庫(kù)的兩個(gè)基本函數(shù)----mode()和begin()

示例代碼:

連接WiFi

(2)使用WiFiManager庫(kù)

該庫(kù)功能強(qiáng)大,在一定程度上包含了上一個(gè)庫(kù)的部分功能,在連接WiFi上更加自由,不需要在代碼中配置WiFi名稱和密碼了

這個(gè)庫(kù)并不是自帶的,需要我們自行下載安裝,大家可以去官網(wǎng)下載,也可以通過(guò)我的網(wǎng)盤(pán)下載,已經(jīng)放在文末了(放心,是最新版本的,文件不大,下載很快??)

工作流程:先判斷有無(wú)連接WiFi,如果連上了就繼續(xù)執(zhí)行后續(xù)代碼,如果沒(méi)有連接WiFi,則先將8266的模式改為ap模式(熱點(diǎn)模式),此時(shí)通過(guò)手機(jī)或者電腦可以看到一個(gè)名為“configure WiFi”的熱點(diǎn),連接8266發(fā)出的WiFi熱點(diǎn),會(huì)自動(dòng)跳轉(zhuǎn)到配置界面,在配置界面配置好WiFi后會(huì)自動(dòng)退出ap模式,再轉(zhuǎn)為sta模式連接剛剛配置好的WiFi

示例代碼:

配置界面:


然后等待連接成功就好啦??


二、獲取時(shí)間

這里涉及到一個(gè)概念----->API

什么是API呢?簡(jiǎn)單的說(shuō)就是一個(gè)接口,就是...有點(diǎn)不好解釋哈哈??,不太明白的可以百度一哈??百度上有詳細(xì)的解釋

大家可以百度搜索一下時(shí)間api,有很多的,我這里不方便做推薦

大家可以先直接用瀏覽器打開(kāi)這個(gè)api看一下是啥樣的

我所用的這個(gè)api用瀏覽器打開(kāi)后可以看到一長(zhǎng)串字符,:{"sysTime2":"2021-02-27 21:35:09","sysTime1":"20210227213509"}

沒(méi)錯(cuò),我們要的時(shí)間就已經(jīng)在這里面啦!??

至于我們?nèi)绾瓮ㄟ^(guò)8266去訪問(wèn)這個(gè)api,直接看代碼---->

代碼示例:


三、數(shù)據(jù)處理

經(jīng)過(guò)前兩步我們已經(jīng)能夠得到當(dāng)前的準(zhǔn)確時(shí)間了,但是那么一長(zhǎng)串信息顯然沒(méi)法直接使用,所以我們需要經(jīng)過(guò)一定的處理,準(zhǔn)確的將年、月、日、時(shí)、分、秒都單獨(dú)的提取出來(lái),這里我本來(lái)是想用正則表達(dá)式去提取的,但是沒(méi)找到arduino相關(guān)的庫(kù),后來(lái)發(fā)現(xiàn)直接用字符串分割操作就可以完成了??

網(wǎng)站返回的時(shí)間信息是字符串格式的,我們需要轉(zhuǎn)成整數(shù)型,然后利用8266每秒+1成為一個(gè)時(shí)鐘

數(shù)據(jù)處理代碼:

定義相關(guān)變量

substring(x,y)函數(shù)可以將第x個(gè)到第y個(gè)數(shù)之間的字符串提取出來(lái),然后用toint()函數(shù)將字符串轉(zhuǎn)為整型


四、每秒加一的實(shí)現(xiàn)

實(shí)現(xiàn)秒的加一有很多方法,例如在主循環(huán)中delay(1000),然后加一,我這里提供一種更好的方法,更加精確一點(diǎn),需要用到 Ticker庫(kù)

ticker庫(kù)可以指定時(shí)間去自動(dòng)執(zhí)行一個(gè)函數(shù)

代碼示例:

五、OLED的顯示

數(shù)據(jù)已經(jīng)全部準(zhǔn)備完畢了!只要將數(shù)據(jù)顯示出來(lái)就完工了!

oled的顯示需要用到u8g2這個(gè)庫(kù),這是一個(gè)專門(mén)用于處理屏幕顯示的庫(kù),十分強(qiáng)大好用

這里提供一段hello world的顯示例程,大家先感受下

代碼示例:

本人使用的是128*64像素的oled屏,通信協(xié)議為硬件i2c

小伙伴們可能找不到自己板子硬件i2c的腳,所以也可以這么寫(xiě):

這樣就是用IO口模擬的i2c,可以自定義引腳

其他的屏幕也是類(lèi)似的方法,不論是spi還是i2c,硬件或是模擬,u8g2庫(kù)都提供相應(yīng)的支持,如果小伙伴們?cè)谛吞?hào)的選擇上還不是很清楚的話可以看看u8g2庫(kù)的相關(guān)資料

六、億點(diǎn)點(diǎn)細(xì)節(jié)

那么基本上就已經(jīng)完成啦,接下來(lái)只要將各個(gè)部分拼接到一起,然后加以協(xié)調(diào)就可以了,前面所講述的只是最重要最基礎(chǔ)的部分,實(shí)際上還有許多需要思考的地方----->

1、WiFi不用一直連著,獲取完時(shí)間就可以關(guān)閉

2、屏幕不用一直亮著,過(guò)一段時(shí)間能自動(dòng)關(guān)閉

3、如何觸發(fā)獲取時(shí)間這一步驟(定時(shí)獲取或者按一下按鈕獲?。?/p>

....

七、演示

開(kāi)機(jī)后會(huì)有提示語(yǔ),提醒按下按鍵

提示語(yǔ)


按下按鍵后會(huì)開(kāi)始自動(dòng)連接WiFi并且獲取網(wǎng)絡(luò)時(shí)間

稍等

然后就可以看到時(shí)間啦,并且30秒后oled會(huì)自動(dòng)關(guān)閉,再次按下按鈕可以喚醒

時(shí)間

八、完整代碼及資料

PS:本來(lái)可以直接把代碼粘在這里的,但是出了點(diǎn)小問(wèn)題,我發(fā)現(xiàn)會(huì)出現(xiàn)部分代碼不全的情況,所以就用百度網(wǎng)盤(pán)來(lái)分享啦(小文件,下載很快的??)

源碼:

鏈接:https://pan.baidu.com/s/15Dl70g3fRFNg44HjhZ9f_w?

提取碼:8266?


庫(kù):

鏈接:https://pan.baidu.com/s/1P1Je_-wMdL-Bv-GrhWfOAw?

提取碼:wifi

總結(jié)?

總算碼完啦!新人小白第一次寫(xiě)這個(gè),百分百原創(chuàng)!有不足的地方望大家指出??我會(huì)加以改進(jìn),希望大家多多支持呀!


NodeMCU(ESP8266) WiFi時(shí)鐘的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
蚌埠市| 临沭县| 平泉县| 壶关县| 衡南县| 贵州省| 开平市| 太白县| 宝山区| 九江县| 安国市| 施甸县| 保定市| 东平县| 南宫市| 呈贡县| 冀州市| 特克斯县| 都江堰市| 寿光市| 都匀市| 武定县| 商丘市| 漳浦县| 洛隆县| 达日县| 南京市| 壤塘县| 怀来县| 汉川市| 开平市| 托克托县| 固原市| 长海县| 普兰县| 镇雄县| 江安县| 邓州市| 牙克石市| 杭锦旗| 宣武区|