MicroPython開發ESP8266——網絡時鐘demo
使用MicroPython寫了一個簡單的網絡時鐘小demo,非常簡陋,連u8g2庫都沒移植,代碼放在了我的 github 上,也順便回顧一下以前學的 git 操作。
一些還有待優化的地方:
1.沒有看門狗和錯誤處理。例如沒有掃描到 DS18B20 裝置或連接配接 wifi 失敗時,應該有一個錯誤事件處理機制。
2.RTC網絡時間校準。ESP 晶片的 RTC 好像說是有些問題,每隔 7 小時 45 分會有毫秒級的溢出誤差,是以應該做一個網絡時間定時校準的功能。筆者使用定時器進行周期性的網絡校準時,産生了記憶體溢出的現象,猜測應該為定時周期資料過長的原因。ESP 的定時器時鐘周期為 ms 級别,定時七小時的話 period = 1000 * 60 * 60 * 7,可能内部處理時産生了錯誤。也可能是筆者的功能設計上有一些問題,不想排查了是以就剔除了這個功能。
3.I2C重新整理速度。ESP8266上沒有硬體I2C,隻能使用軟體模拟,在速度上可能有一些限制,最終的oled重新整理率不是很高。
4.沒有使用多線程。ESP8266的資源比較緊張,使用 MicroPython 本身也會消耗不少資源,再引入多線程的話,每次線程切換所需要的資源會更大。是以就需要對程式執行的邏輯進行規劃,筆者本來想将 led 做成 pwm 呼吸燈形式,但是這樣需要一個單獨的 while 循環,最後就簡單的做成了上電訓示燈。
5.有興趣的話可以移植一下u8g2庫之類的顯示庫,這樣螢幕顯示會好看一點,還可以添加一個網絡天氣功能,功能就更加完善。
總結:MicroPython 開發 ESP 确實比較簡單,但是也有不少限制,适合一些不太複雜的應用場景。筆者昨天又扒了扒雜貨堆,找到一個樂鑫以前做活動時 7 塊錢包郵買的 ESP-C3 核心闆,先挖個坑,之後有空用這個核心闆做一個開發闆,使用 ESP-IDF 進行開發,看看能否有更好的體驗。