ESP8266 主控台

No Comments

主控台,如圖,就是一個使用者界面,有 display 輸出,及輸入裝置。輸入裝置讓我們可以跟裝置互動,並包含了對遠端的裝置溝通互動。事實上目的就是透過手上的裝置,輸入,來操控遠端裝置。故,沒錯,所有該具備的軟體,我們在前面都鋪好路了。
而輸入裝置,我們只需一支搖桿。困難的文字輸入,就只要透過搖桿選字即成。故還有什麼無法完成的嗎?

元件細列包含了 WeMos TTGO,司顯示;搖桿司輸入;電池;充電板(太陽春,不過很小,規格飽充 4.0V,0.1A~0.5A 充電流,5V 輸入),電位器司電池分壓以判斷低電量,CD74HC4051E 8-ch Mux 用於搖桿輸入及電池分壓輸入給 ADC,排阻用於額外的 pull-level,一來 TTGO 早已 pull 好但不排除還會有需要的電阻,總合起來體積將不大如洞洞板 4X6 大小。如此,我們就有一個透過 http 溝通的主控台了。
本專案所需主要元件列圖
EN pin 已被 pull-high,故須把圖中紅圈處的電阻拿掉,EN 將會直接接 GPIO2 及搖桿按鍵實現按鍵啟閉主控台。
https://www.ti.com/lit/ds/symlink/cd74hc4052.pdf

電路考量

  • 類比 Mux 的供電,3.3V 或 5V 都是可用的,我們只採取 3.3V。我們透過 GPIO 來開關電源,故還需要用上一顆電晶體,這對筆者有難度不過還是得硬著頭皮上。而 EE 腳位(負電源)接地。 E 腳位則直接 pull-low。不過這規劃簡直是砸腳;電源直接進來,並用上一支 GPIO 來操控 E 腳位,並作外部 pull-low,並且有省電的助益也用不著電晶體及複雜線路,如此才對。再者使用此 GPIO 除能的機會應是很小故直接固接 always active 應是合適的。該考量的是,Mux 的選擇腳位 Si,有搖桿的按鍵, X,Y,及電池電壓,分別對應(0, 0, 0),(0, 0, 1),(0, 1, 0),(0, 1, 1)。故只需要 2 支 GPIO,S2 直接接地。故目前看來,(1+)2 GPIOs 會用掉。A0 也用掉。
  • 按鍵 pull-high,會接至 EN 及 GPIO2,還有 Mux。
  • GPIO16 於 deep sleep mode 上用掉。
  • 充電板輸入端直接接 TTGO 5V,後接電池,絕大部份,充電板輸入端與輸出端是不能共軌的,因此,輸出端將會單獨接至 3.3V LDO 再輸出。輸出的 +3.3V 將被源輸入 5V 透過另一顆電晶體作開關。此點是不是有問題,筆者未知。
  • 立即惡補,參考資料
  • http://www.liot.io/hardware/design/
  • https://kknews.cc/science/nq3z883.html
  • https://kknews.cc/science/axvpg26.html
  • https://kknews.cc/tech/6k26y3m.html
  • https://kknews.cc/home/jje4e.html
  • https://kknews.cc/design/ynr9z2b.html
  • https://kknews.cc/tech/bqmpqr6.html
  • https://kknews.cc/news/avprmon.html
  • https://kknews.cc/news/9qqaxq.html
  • https://kknews.cc/digital/4xla55q.html
  • http://wyj-learning.blogspot.com/2017/10/arduino-03bjt-pc817.html
  • http://www.allchiphome.com/post/triode_circuit
  • https://www.eet-china.com/mp/a43200.html
  • ss8050
  • ss8550
  • 不過,筆者的 3.3V LDO 恰巧有 low/DEN,floating/high/EN 腳位,故當 5V 不存在時,3.3V LDO 才需要被致能否則除能,就不會跟前端的 3.3V 強碰了。
  • 但是,再考量電池過來的 3.3V,若是經由電晶體的 CE 路徑再到系統內,將會有可觀的電流耗用在限流電阻上是絕不 OK 的。因此,使用 S8550 PNP 電晶體將作用在非截止區成 5V 進來 B,B 只接下拉 100K 電阻,3.7V 加在 E,C 有 pull-low 10K 電阻,因此 PN 結皆反偏當 5V 灌入時致 C 點零電位。斷電 EB 正偏,Vb 應不為零且其電流跟隨負載由 100K 慢速消耗且拉低貝塔積,BC 反偏(或正偏), EC 導通,接於 C 點的 EN 拉 high。而響應速度則需實際觀察看看。以上純是筆者的譩測參考就好。實測成立但有何副作用筆者未知。
  • 最後一點,是在筆者成板後,量測 3.3V LDO 在雙電源下,EN pin 是 0.375V,Vbc 4.60V,Vbe 0.92V,Vec 3.74V,到底有沒有啟用 LDO 就無法得知了。而拔除 USB,板子可順利被電池供電而無斷差,EN pin 是 4.08V,Vbc -0.75V,Vbe -0.75V,Vec 0.001V。再來,顯示不出來才發覺,OLED I2C 用上了 GPIO 2/14/4,故關於按鍵啟閉的功能就得錯開 GPIO2 了,用了 GPIO5,S0/S1 分別用了 GPIO12/GPIO13。
5V 控 3.3V LDO 輸出的開與關

成板卡關

  • OLED 用掉了 2/14/4 三支 GPIOs。
  • 初板,使用 GPIO 12/13 作為 Mux selection pins。GPIO5 作為 button sensing 或 EN 的驅動 pin。故只剩 GPIO 0/3 可作為 int pin & trigger pin 用以週期性顯示及 A0 取樣兩功能。
  • 結果失敗,無顯示。原因出於這兩支腳位。經量測,
  • GPIO 0 始終為 high。研判被直接接上了 Vcc 或使用比 ESP 內建還小的上拉電阻或 UART IC 的上拉 driving 能力比 ESP 大。
  • GPIO 3 也被板上 pull-high。output low 後,量測 low 電壓有 1.5V 左右。
  • 還好,還有一支 GPIO 15,實測後可利用。
  • 因此首度感受到 ESP8266 GPIO pins 不夠用的窘境XD。
  • 最快速的解決方式,便是廢掉由 timer 控制的週期顯示與取樣,這樣就不用對 GPIO 0/3 傷腦筋了。也只能這樣了XD。經實測結果可行且如所預期,顯示頓dae。
  • 先期,或許還能做得更多。因 2/14/4,GPIO 4 作為 OLED reset pin,也不知作用為何,且理解上 SDA/SCL 應就能應付所有 commands 與動作,除非就是與硬體相關。故挪用 GPIO4 來踹,結果 GPIO5 as int pin,GPIO4 as trigger pin,使得 ESP 反覆 reset(應是 OLED 延遲導致)。接著互換二腳位角色,結果不再 reset,不過顯示跳痛。因此 GPIO 4 動不得。
  • 因此,過關結論是,廢掉 timer 控制。或除了 GPIO 15,尚需一支從 GPIO 0 or 3 拿過來用。
    再視 GPIO 0,掌控著 flash mode,那麼是誰在掌控?當然是 USB2UR GPIO。動 0 變因多了點。3 呢,若增加下拉電阻,可能可以增強 low driving 的幅度。故不加思索,加了下拉電阻,直接在 TTGO 板上測試量測 high/low 準位,且必須再測試 write flash 是否正常。結果是,需用上 100 歐姆,才能將電壓拉成 2.85V high,1.0V low。(註,0.25Vio 才被視為 low)。故應是得拉成 0.7V,才能得到所求,但如此筆者不敢用XD。
    參考 ESP8266EX datasheet
  • 因此最終就只能廢掉 timer 控制了XD。
  • 對了,有人會問,不是已鞍一顆 Mux 嗎?沒錯,當前還有剩 4 channels 未用,若增加一支定址腳位,GPIO 15 可充當,但那 4 channels 只能接至其他硬體腳位,此前提下作輸入由 ADC 獲取。再假設有多一支可用腳位可作輸出至那 4 channels,也是可行的。故,2/4/14 三腳位,我是說,有另一張 OLED display,便可由此驅動,但,此時不再是使用 Mux IC,而是 shifter IC 了(同時輸出問題)。也就是說,若一開始我們的專案是 OLED display + shifter IC + Mux IC + ESP,則不再有 GPIO 不夠用的問題了。兩顆 IC 一起用的原因是 shifter IC 只能用在輸出。

再次卡關

  • 前文的 deep sleep 文章中提到單鍵啟閉的做法只使用上一支 pin。不過,應是 dead-end。因為按鍵一側勢必是 Vcc,另一側則是 pull-low 並且接到 GPIOs。問題出在於 GPIO X 拉 high 後讓系統保持在 active,那麼,這另一側的準位便保持在 high,按不按鍵也都將是 high。幾乎可說按鍵廢了。轉圜餘地或許有後述。
  • 衍生另一個問題是,實測下,GPIO X 設為 INPUT_PULLUP,並不能讓 EN pin 保持在 high,系統將會 power down。只能設為 output high 才行。可能的原因是本身驅動力不足外,其因分享給 EN pin 及 a Mux pin「補註:斷開 Mux pin 留必要的,INPUT_PULLUP 確實能如所求了,但極易受干擾而離線,故仍不可行」。但這或許成了轉圜餘地;
  • 轉圜是,此 high 準位會稍低於 Vcc,若加把勁在 GPIO X 前加點電阻,則能讓壓降更大但仍是 high。關鍵點是,我們按鍵除了 GPIO X 外,也用上了 ADC。也唯因如此,才可能讓按鍵復活;透過些微的電壓變化。簡單講,單鍵啟閉/按鍵仍有作用,則非搭配用上 ADC 不可
  • 但事情並不會被那麼好處理。ADC 本身就是個問題,大概 3.2V 左右,就已是 1024 了。且必然 case by case。因此,在本專案,只能依特例去處理。將 ADC 輸入準位再先經過分壓,讓進入值至少降為 3V 以下,這也表示電池的電壓檢測變為更不準且須先期介入修正了。不過實際的處置,是在 Mux input 端加上分壓電阻就不會影響其他的了。
  • 當然,新專案可用上電晶體作開關,或許就沒有以上的問題了。(筆者無 idea)

成板初版總結

  • 按鍵本身一側接 Vcc。另一側有接至 EN pin,Mux input pin,及 GPIO 5,並且這一側有 pull-low 10K。先前提到,EN 已被 pull-high 10K,本應拿掉,但於此搭配下,不拿仍可行。
  • 當 ESP active,按鍵另一側便只得保持在 high,但比 Vcc 稍低。故在 the Mux input pin 端加上分壓電阻以解決 ADC 超額問題。故,按下與不按,量測下相差 ADC 數值 14。雖能判斷了但超危險的,不過這是初板下能盡量使能的了。
成板初版正面
成板初版背面
初版成品
初版大小
  • 因此,按鍵 power on 功能,閒置 60 秒後關電,按鍵上下左右及按放功能,及電池電壓的偵測也手調至相當的程度。充放電也是沒有問題的。因此所有預期的功能基本上是 working 的。
  • 程式碼,同樣初版的程度,附於下。
  • 問題:
  • 當作 flash 更新時,必須按住搖桿按鍵直至 flash 完成,這也是不得不的。
  • 此 TTGO 開發板,筆者已有一個壞掉。壞掉原因是無法 flash。然而現在手上這個,在使用一陣子後,開始發生無法 flash 更新的現象,要嘗試多次才能連上線成功 flash。在一次插上 microusb 時,與 SIL USB2UR chip 相接的應是電源轉換 IC 燒燬了,故現在無法使用 microusb 了。幸而尚能作 webupdate。因此研判,此 TTGO 開發板的線路設計在 USB2UR chip 與 電源 chip 相匹配上是有問題的。
  • 不得不說到,筆者廢了 timer 控制顯示與按鍵取樣,整個使用上是相當卡頓的。此初版程式碼將 timer 控制註解掉,並直接對 timer isr polling。基於此,改善的方式是將按鍵取樣獨立出來 polling,顯示的部份唯需更新時才作呼叫。
  • 其次,恰巧 UR 的部份燒壞了,或許筆者可嘗試將 GPIO 3 挪出來用。
  • 再不然,就是再版了XD。因此以上有三種做法。
  • 筆者後來還真的將 GPIO 3 給挪了出來,用上 GPIO 3,GPIO 15,作為 timer 的控制。故,成了。不過搖桿的𤫊敏度偏低及按鍵感應處理待加強。故必然需將顯示及搖桿感知分開處理。
  • 「20210428 補述:身在此山中雲深不知處。筆者都忘了 GPIO 16 deep sleep mode,並沒有在本專案中使用,所以 GPIO 16 是可利用的也不需接至 RST pin。GPIO 3 而言通常與 write flash 有關,所以用上它並不是很合適並且它也是 MultiPwms 的 parking pin。而 GPIO 15 則與 boot mode 有關,原則上就直接與 ESP GPIO 16 相接或許很合適。故,將會對 GPIO 15,GPIO 16 配成一對。不過用上 GPIO 15 必須要小心;可能需先停止 timer,再將 GPIO 15 設為 input,GPIO 16 設為 output low;因筆者一直 flash 失敗XD。此外,按鍵用上了一支 GPIO 及 ADC 如本專案的土炮作法,是很不 OK 的。筆者再想想辦法改進。」
  • 「20210502 再補充:本案例中,TTGO GPIO 3 或許只直接接到 USB2UR chip,筆者未知但很奇怪,最初試,GPIO 3 是可被利用的。但後來試,始終不能被使用。不再細究。至於 GPIO 15,可以肯定 high/low 會影響啟動。當 GPIO 16 與 GPIO 15 接在一起時,線上 flash 更新是始終失敗的。並且啟動也是始終無法成功的。重點是即便將 GPIO 16 外部 pull-low,依然失敗。即,如此也並不能助益於 GPIO 15 於啟動時保持在 low 的狀態,約不超過 0.8V,實際量測是 1.7V。對了還有一點,GPIO 16 規格上是不能當中斷腳位的,而實測也是如此。因此,為了多爭取到一支 GPIO,當前結論簡便的解法,只剩再細究 GPIO 3,GPIO 3 當中斷腳位,GPIO 16 當 timer trigger 腳位。「再追加補充,GPIO 3 也無法當中斷腳位,至少在本案例上是如此」。那麼,所幸有最終可行結論,就是將 GPIO 12/13 與 GPIO 3/16 這兩對交換;GPIO 3/16 轉而為控制按鍵。假若此舉還是失敗,唯有進入下一階段,用上 reg shifter IC 了」。

20210508 更新

經將 GPIO 12/13,GPIO 3/16 調換後,已可順利運作,不過程式碼還是得將 display 的部份從 isr 中移出至 main function 中。才不會 wdt reset。
至此,整個板子可說完善,除了動態顯示位於 main function 會卡頓,及按鍵的 sensing 線路需要修改。
總結一下,

  • display 使用了 GPIO 4,14,2,無法省略
  • 按鍵使用了 GPIO 5,並且 input pull-high 是失敗的
  • 類比 Mux 用了 GPIO 3,16
  • timer 中斷用了 GPIO 12,13。這在時序上的控制不可或缺
  • 還有一支 GPIO 15 如果對接者是輸入高阻抗的話或 tri-state output 的話或許可利用
  • GPIO 0,若搭配用上 jumper,或許也可利用。但本案例下已被 USB2UR 佔用。


至於按鍵 sensing 線路,可能最簡便的解法,就是加上二極體,pull-low 那一側有接 Mux input,於二極體陽極,而 EN 及 GPIO 5 則於二極體的陰極。會不會有其他衍生問題需測。而此時,EN 板上的 pull-high 電阻須拿掉才能正常了。「再補充:沒錯,衍生問題是,因二極體,電壓就掉了 0.7V,並且於 powerdown 模式下 GPIO 5 應會造成漏電而有約 1.6V,故如此將造成難以啟動或斷電後又動作的窘境」。
至此,一連串的卡關也終已突破。顯示部份,若置於主程式,則該顯示更新再更新。若再放回 isr,其實也無不可,只是要再調試讓長處理時間更短。「再補充:不過我終於想到了,U8g2 函式庫,得全宣告成 IRAM_ATTR 才能避免 wdt-reset,才得以置於 ISR 中」。
所以。。。沒有所以,就再想想吧。

請注意,筆者有發現用上 SIL USB2UR chip,必須在 setup() 一開頭 delay 上至少 2 秒。

20210512 補充

前述問題,筆者找到快速的解答有二,並聯 diode(反,有此一說電流只走並聯中最低阻抗的一路)。或找低 Vf 的鍺型蕭特基二極體如下(ESP GPIO sink current Imax 20mA):

Here are some lower Vf SMD diodes that I have and use:

DIODE           PIV  A    Vf 50ma   Vf .4A    Vf 1A     Vf 3A
PMEG3050EP      30   5    0.16V     0.218V    0.242V    0.288V
PMEG3020EP      30   2    0.19      0.24      0.28
DB2141200L      40   1.5  0.23      0.31
SS14-E3/61T     40   1    0.26      0.35
SD0805S020S1    20   1    0.29      0.42       0.44
MSS2P2M3/89A    20   2    0.31      0.38       0.44
RB461FM 20 0.7 0.7A/0.49V
RB421D/RB425D 40 0.1 0.1A/0.55V 0.01A/0.34V
BAT85S 30 5 0.03A/0.5V 0.01A/0.4V


筆者目前的狀況是降到 2.7V,約 0.5V 壓降並不算高,剛好就是 ESP bring up 的臨界。將先並聯試試。結果,改善 0.1V 成 2.8V,一樣不易啟動。
問題:使用充電器,將影響 y 軸數值。

最後總結

  • 至今所有提及的 user GPIOs 是都可被復用的,單看開發板上被接至哪些其他地方而作因應。細數:0,1,2,3,4,5,12,13,14,15,16 總共 11 pins,扣除 TX/1 也有 10 pins。
  • GPIO 3,16 無法用作中斷 pin。
  • GPIO 15 很敏感,用上時要先確認該線路下能夠啟動。
  • 當由某 GPIO 拉 low,其直接連接至 EN pin,而進入 powerdown mode,可能會有關不乾淨而漏電的情形,需先確認有此狀況及因應。
  • 此主控台所用的開發板本身具電池充電的功能,並且也有飽停功能,故可不用如本案例外加了一顆充電板及 3.3V LDO 和開關電晶體。
  • 按鍵廢掉的問題,筆者決意加上三顆二極體來解決,目前兩顆基本上成功率約七成。若讀者有更好的解法歡迎賜教。
  • 顯示圖形的使用與製作。
  • 更小的搖桿的尋找。
  • 故改版的主控台可如上述精簡。
  • 不再使用此開發板而用 primitive IIC display。IIC 部份可用函式庫或自訂打訊號。後者好處是可用上 timer 來控制以規避獨佔的 IIC 運算,但缺點是時脈不高。
  • 進階版的主控台,可加用上一顆 reg shifter ic 司輸出,致例如充電的啟閉也可控制。當然 IIC 也可由此 IC 運作。此版本的開發可玩性相當高,並有機會限縮在目前洞洞板大小。不過 ESP 本身板呎吋可能是個問題。
  • 精簡版或進階版筆者都還不急著做。。。目前有一張堪用就夠了。

20210518 更新

程式做得非常完整了。不多說,直接上菜。並看影片,有點長,182MB。
不過還是要簡單講一下。此硬體也如所預期的動作,算滿意。並沒有再改版了。
而,還是得講詳細點。。。
程式完善後,並聯 2 顆二極體的做法,就已能順利啟閉 ESP 了,成功率百百。
之所以先前的問題多多,應是 timer 在一上電後便啟動,故任何拖累的地方就可能造成 wdt reset。於此簡單講,任何可能拖累的地方,可先後將 timer 暫停與復駛。例如,在存取 filesystem 時,若不如此,必 wdt reset。因此,display 的部份又再度放回 isr 並運作正常。
當前按鍵似乎不𤫊敏但實因選單的動態行為影響;將選單動作時間縮短便能呈現,但縮短在視覺上就稍扣分。
在 isr 內已有不少 functions 已不使用 IRAM_ATTR,因已不夠用。目前尚沒造成問題。
關機閒置 8 小時,耗電約 0.15V,預期大概 2 天內就要充一次電了。

20210522 更新

新增一些功能,其中,將選單做得完整,所以要自訂選單,便可就現有的程式碼來參考。
另外加入 multicast。故 wifi 的函式庫要跟著更新。筆者已更新置入至 “ESP8266s AP/STA/HTTP/UPDATE”這篇文章內了,版號 0.3。
不過後來筆者測了此主控台的 AP mode,發現兩個地方少了加上 STA_MODE 巨集,使用者可自行加上。主控台若有下一版會改入。
使用者可比對 v0.3 和 v0.4 的差異,便可快速知道如何增刪修選單。儘管可將程式碼做得更物件導向或設計將調整選單的部份更獨立化結構化,以易於修改。不過若如此很可能讓 runtime 時增加更多的負擔。故稍花點時間瞭解程式架構以裨益於後續。
此專案同時適用於 AP mode 及 STA mode。STA 將自動向 AP 作 http request。而 STA 之間,可互為 multicasting。

20210526 update v.0.5

0.5 版加入了對遠端發送 http commands。是專用目的。但使用者可由此自訂改為己用。並且新增可對回傳資料作瀏覽全貌;當然是透過搖桿;不過算得上實用。並且新增浮動訊息視窗。以上,此小指頭大小的 0.9 吋的主控台可說是人小志氣高了。筆者擬加入一系列的測試影片,不然光文字真的不易看出其呈現的多樣功能。但簡單講,筆者網站內提供的程式碼,及主控台製作說明,擁有跟筆者一樣的主控台一點都不難。

20210527 update v.0.6

0.6 版加入了自行比對。說點重要的。STA 預設連上線,是就會對 AP 作 HTTP request,其回傳速度,是隨時更新的數值,當然是由 AP 亂數産生的,在 STA 端是由 SPEED 頁面顯示。並且,STA 本身亦會産生此亂數值,同樣也是當有其他人向他作 HTTP request 時回傳。URI 都是 “/s”。唯有 AP 模式不主動向其他人作 HTTP request。STA 若有多個,可啟用 MDNS_FULL 或手動區分唯一的 hostname。還有,此份程式,透過指定 AP or STA 模式,就是此個別的角色。所以,程式碼是 self-contained,例如,有一張 AP,三張 STA,就能完整測試程式所有功能。STA 之間(由 query (motor, udp) 列出)能被 user 指定誰向誰 HTTP request。即,某 STA 主控台將搜尋 service 是 (motor, udp) 的,目前設定最多 3 個 devices,接著此主控台便可由 command list 來發送 motor service 所可接受的 http request commands,並回應至”顯示回傳頁面“中可完整被瀏覽。並且 multicast(由 query (multicast, udp) 列出),有一個被 user 指定為 transmitter,則其他的 STA 將被此 transmitter 自動 HTTP request 成 receiver,反之亦然;此時角色是 receiver 的,http request 速度值將被暫停而由 multicast 的傳輸模式所取代。transmitter 也將自動 multicast 發送亂數值;此 receivers 可透過暫停 http request 並看到數值仍在變化而確認運作正常。關於 services,若一對多,則此多個需提供如本例 motor service,一則需能識別 motor。若多對多,則,所有 device 不僅提供 motor service,也能識別 motor,簡視為他們為一群組。這便是 services 的用法。multicast,mdns query,皆使用 udp 封包,若失敗,需再試因封包不保證收得到。當 AP 接入 3 個 STA 後,STA 整個運作會變慢,這是因為 AP 同時被 3 個 STA http request。且 http request 本身是 blocking manner。將主控台的 http request 暫停後便會回復正常。若使用 udp,則不會有速度變慢問題,筆者是不知道 udp 封包是否有經過 AP 轉送,猜測是有的,因異地。若沒有,則需稱為 wireless multicast。故可知 AP 在轉發 udp 封包速度快很多。
簡單講這個專案,
可說順利結案。(鍵盤可能還需要改版,及繁中顯示)
不僅擁有還算不差的顯示環境,我們只需單單透過姆指,就能操控任何所求。

20210529 update v.0.7

完善了鍵盤。在這麼小的顯示,用姆指,來作輸入。筆者盡可能地突破如此窘境讓輸入變得容易且就手;也有瀏覽輸入視窗,也增加了歴史記錄,相信。。。,用過的人就相信。。。
並且修正了一些 BUG。再讓 multicast 更切合實用。
簡單講,在功能強大之後,現在再次讓它更強大了。

20210601 update v.0.8

鍵盤再進化。再美化了 input window,使輸入更為視覺化,支援超過 1000 個字以手動輸入,這樣講應該看得懂吧。並且增加了也視覺化的 history insert mode。
另發現一個問題,區網 http 連線是沒問題的,但 internet http 則連線失敗。當前查到的可能原因是 core version 問題。
再後來覆測後,internet 是有機會連線成功的。所以較可能的原因是筆者將 timeout 設得太短了。
另想到一點。等累積多點想法再來更新。就是輸入送出後,儲存至歴史列表中但不儲存至 flash;當前僅是需明白要求,才會既加入列表且儲存至 flash。

20210602 update v.0.9

簡化輸入視窗的引入,使得想輸入時不用再改很多程式。
至此筆者尚未想到還有哪些必要修改或新增的。次要的就等有空再來改版。

另外,下面放一個單純的 AP,可作 update 的。用以 multicast 時看運作能不能更快一點。

後來又改版了這個簡化版的 wifi access point。
並且加入了 STA 模式,
可執行時期切換 AP/STA 模式。
而這兩個版本,也將追加到 wifi 整合程式碼的那篇文章中以較方便取用。

20210609 revised v.0.9a

這個版本,附加英文字母的,是為專用目的改版的,較不適合一般使用。

20210611 update v.1.0,v.1.0a

20210613 update v.1.1,v.1.1a

20210720 add v.1.1b,gesture 專用

20210725 add v.1.1aa,based on v.1.1a,special version

almost ready the esp8266 control panel
single line text editor
至此。筆者已完成這一個大專案了。如此視訊所展示的,及結合前文章中的實務視訊。簡單講,成員:中控台,馬達閥門,主控台三張獨立的板子,全使用無線通訊,而這三張板子,將(主/被動地)互相檢測彼此的存在(透過 mDNS services)。當中,中控台的這張板子,將車子的轉速訊號取樣並廣播(multicast)出來,由另一張板子接收並控制馬達閥門的開閤程度;與此同時,主控台這張板子也可接收中控台的廣播並將數值 display 出來,並且也可取代取消原中控台的廣播,並自己亂數産生轉速數值並廣播出來以測試馬達閥門,同時,主控台可隨意操控馬達閥門及中控台。
這些全由 esp8266 擔綱演出。
該指出的,MultiTimers 及 timer & GPIO 中斷互搭機制,打破了 ESP8266 的封印,使得 ESP8266 成為了筆者認定的當今世上此級距下 CP 值最高的微控器的此前提下,無所不能,相信這樣說不為過!筆者在後面文章有整理 esp8266 的用法並指出了它的缺點。若官方(當然有 esp32,就無前述問題,不過第一只有一名)或第三方艾設公司能補足這些缺點(功耗最為關鍵)並有近比齊的價位,將所向披靡(個人認定)。當然,這背後的唯一功臣,
就是 the communities, open and free!

Categories: Arduino Arduino Brick

Tags:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

PHP Code Snippets Powered By : XYZScripts.com