pretty code

顯示具有 ESP8266 標籤的文章。 顯示所有文章
顯示具有 ESP8266 標籤的文章。 顯示所有文章

2020年11月11日 星期三

DD0403MA_3V3

10/28 在 Amazon.com 購買了這個型號的 DC Converter 共 6 顆,11/10 就收到貨了,速度還蠻快的。

攤提運費後,一顆約要 NT $160 元,不算便宜,但買得到比較重要。

詳細規格

DD0403MA_3V3
3.5V-6V to 3.3V DC DC Step Down Converter LDO Module

Description:

Low power consumption,Low ESR Cap.Compatible DD0403MA Series LDO Module,Very suitable for lithium battery-powered
Input voltage: DC 3.5-6V
Output voltage: DC 3.3V
Long time maximum output current 300mA
Short time maximum output current 400mA
Highly Accurate:±2%
Quiescent Current : 8uA
Short Circuit Current : 30mA
Over Current Protection : 500mA
Operating Temperature: -25℃ ~ +85℃
Size(Not including pin) : 11.6 x 7.8 x 2.5mm
Weight : 0.5g
   
Attention :

This is a DC-DC voltage converter module,Must be noted when using:
1 Input voltage can not be greater than the maximum input range
2 Output power can not be greater than the maximum load for a long time
3 Input power must be greater than the output power, because the power consumption of the module itself

原本是想配合 4 顆 AAA 鹼性電池,再做一個新的 ESP8266 翻頁器,買了才想到 AAA 電池出廠電壓有可能超過 1.5V,故 4 顆串聯可能會超過電壓工作範圍,如果是 3 顆串聯又達不到我想把電池用乾的需求,因為其最低工作電壓只到 3.5V。看來還是只能配合 18650 等電池使用。

這個大小比我之前買的升壓 Converter 都還要更小,也就是說更考驗焊接技術了。

2020年10月3日 星期六

Kobo 翻頁器 DIY 最終回

將 ESP8266 (ESP-12S) 裝進 3 x AAA 電池盒中,只使用 2 x AAA 共 3V 當做輸入,原本預計要加一顆 DC-DC 0.8V ~ 3.3V to 3.3V Converter,但因賣家送錯,故直接使用 3V 的電壓驅動 ESP8266 (ESP-12S),希望可以撐到 2.7V 的最低工作電壓為止。

原則上還是要讓 ESP8266  (ESP-12S) 工作在 3.3V 才對!我這是沒辦法中的辦法,在沒有任何外加電路下,工作電壓應該也不穩定,如果還能拿到 DC Converter 再說吧。

工作影片


2020/10/05 更新

無意間在 YouTube 看到,有一種 LiFePO4 電池,其工作電壓為 3.2V,在到低電量前,都維持一個很穩定的電壓,如果可以買到 AAA 規格的電池,應該就可以省略 DC Converter,還可以用並聯增加電池容量,可惜的是,不容易買到 AAA 規格的電池,選擇還不多,目前市面上看到的都是大陸製的產品,且容量在 280 ~ 350 mAh。

另外,昨天實測的結果,使用兩顆新的乾電池看了一個多小時的書,翻頁都還正常。但我猜應該是沒辦法撐過 3 小時,因為乾電池的放電電壓下降的很快。

2020/10/07 更新

根據 Kobo 閱讀器自己的閱讀統計,累計閱讀了約 2 小時又 24 分鐘後,翻頁器已經無法工作,斷電再開也無法開機,兩顆全新的乾電池使用電表量測的結果,電壓都約在 1.24V 左右,離最低 2.7V 的工作電壓已有一段距離。不過,這兩顆電池只是無法再提供 ESP-12S 需要的工作電壓,拿去裝在手電筒上還是可以用的。

2020/10/08 更新

還有一種鎳鋅充電電池,其電壓為 1.6V,其放電電壓也很穩定,故也是一種替代方案,但跟 LiFePO4 一樣,沒有大廠的產品可購買。

另外,今天又跟另外一個賣家購入了 DC Converter,這個東西在市面上不太好找,希望這次賣家不要再標示錯誤了。

好奇統計了一下,截至目前為止,為了這個硬體翻頁器共花了 NT $8,592 元,都可以再買一台電子書閱讀器了!但是跟學習到的東西比起來,還是很划算。

烙鐵及排風扇等:約 3,300 元。
硬體開發板相關:約 1,200 元。
其他零件及收納:約 4,100 元。

2020/10/12 更新

新的賣家出貨速度很快,給個讚!這次學乖了,焊接前,先量測一下電壓,2.86V 左右的電壓轉完後約為 3.44V,比號稱的 3.3V 高出了些許,使用電表看不出是否真的恆定在 3.44V?但應該是有符合我的需求,等到原本用過的電池沒電後,再拿全新的電池記錄數據。

另外,這次的 Converter 比上次賣家送錯的還大了些,雖然只是公釐的差異,放進電池盒就得喬一下位置。還有這次的焊接技術又更差了,不小心傷到外盒好幾處,焊好的線我也覺得搖搖欲墜,哪一天線突然斷掉我也不意外XD

2020/10/15 更新

事情果然沒有那麼順利,反正我也習慣了XD

使用新的乾電池測試時,約 40 分後翻頁器便無法工作,比不使用 DC Converter 的 2 小時半還差?量測輸入電壓約 1.6V,輸出電壓約 2.5V,而我的 Convert 規格為 DC - DC 0.8 ~ 3.3V To 3.3V。

懷疑是下面幾個原因:

01. ESP-12S 使用了第一個賣家標示錯的 5V Converter 造成的內傷。
02. 被第一個賣家標示誤導,使用 4.3V 測試第二個賣家的真 3.3V Converter,導致 3.3V Converter 內傷。
03. 焊接技術差,沒有完全接好,電流過不去,造成異常耗電。
04. 要如原廠建議,供電電流 > 500 mA。
05. GPIO 當輸入時,還是要接個電阻限流?CHIP 內部電阻阻值不夠,導致 CHIP 內傷。

後續待我好好想想 ~

2020/10/16 更新

從官方討論區看到的討論,看起來 internal pull-up resistor 應該不是問題。


2020/10/19 更新

除了在按鍵上的焊點貼上絕緣膠帶外,並未做其他改進。由於家裡只剩鹼性電池,故改用鹼性電池測試,陸續分別使用了 4 次,資料如下:

21:40 ~ 23:40 (120)
10:40 ~ 11:20 (040)
11:30 ~ 12:20 (050)
17:40 ~ 18:35 (055)

總共看了 265 分鐘,第 5 次想要繼續使用,翻頁器便無法開機,拿去手電筒仍然可以使用。

好像在 Youtube 上曾看過,鹼性電池的使用時間約略是普通乾電池的 2 倍?如果是這樣我會認為,雖然電池應該也還有電,但因為 DC Converter 會隨著輸入電壓的下降,提供的電流也隨之下降,故這時候的工作電流已經無法讓 ESP8266 正常開機。假設我調整使用時間,也許可以得到更漂亮的數據。

另外,Kobo Clara HD 在搭配我的自製翻頁器時,1 個小時約掉 5% 電。

如果想要讓翻頁器更持久,也許還可以朝下面幾點改進:

01. 按鍵從 polling 改 interrupt。
02. 使用官方 SDK 寫程式,減少不必要的執行程式碼。

這篇文章描述了一些關於啟動時的注意事項,還提到如果因為電源的關係導致 ESP8266 進入了故障模式,則有可能因為溫度一直上升而讓 ESP8266 死掉。

2020/10/22 更新

昨天趁休假時,又試了一次鹼性電池,總共看了 3 次,分別是 01:30、01:00、0200,累積看到 270 分鐘後,翻頁器便無法作用,關掉電源再開也無法正常開機。一樣把電池拿去手電筒還是可以使用。

看來在接了 DC Converter 後,使用鹼性電池就是可以使用約 4 小時半,暫時就先這樣吧。

2020/10/30 更新

上個星期買了Energizer Max AAA battery,測試看看是否可以撐比較久?陸續使用了 5 ~ 6 次,每次至少 30 分鐘以上,最後共可看 5 小時又 20 分鐘,好像也沒有比原本的鹼性電池好多少?此電池一顆價錢為 NT $12.4。

2020年9月28日 星期一

ESP8266 OTA 使用備忘

有鑒於前幾天沒有加上 OTA 更新的遺憾,今天便決定把 OTA 更新機制加入,過程中遇到一些問題,記錄一下避免忘記。

1. 跟隨範例加入 OTA code,我這裡用的是 Arduino IDE OTA 方式。

2. 理論上 reset 後,Arduino IDE 就可以看到 OTA port,但我的版本沒有出現(1.8.13)。查了一下 ESP8266 issues 列表,有人建議可以直接下 command 測試,我後來是以這個方式順利上傳成功。

3. IDE -> 草稿碼 -> 匯出已編譯的二進位檔,會跟 Code 在同一層目錄。

4. 切到工具路徑,C:\Users\User\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\tools

5. python espota.py -i 192.168.43.118 -p 8266 --auth=XXXX -f XXX.bin

透過上述方式便可以成功 OTA 更新。


2020/09/29 更新

回家測試的結果,按鍵整個反應變好慢,再加上我用的是 AP + Station 混合模式,Clara HD 看到的 Wi-Fi 訊號變得很微弱,可能是這樣的操作對 ESP8266 太操或是我的 Code 有 Bug,還需要想一想如何改比較好。

2020/09/30 更新

嗯,確認是 Bug 無誤!不過,在 loop 加入 OTA 機制後,整體流暢度約差了3% ~ 4% 左右,還算可接受範圍。

2020年9月26日 星期六

有時候放棄也是一種選擇

又是個不用補班日的週六,加上家裡的事終於告一段落,準備開開心心的來實作翻頁器成品。

早上先把 TX、RX、VCC、GND、GPIO0,焊到 ESP-12S 上,雖然焊的很醜,但也能順利燒錄程式,改了一下 Code 讓它連續翻頁好測試線路是否正常,實測半個小時,看起來沒有什麼問題。於是快中午時就殺去特力屋買齊我需要的東西,在等待 DC Converter  來的同時,準備下午先把能做的事做好。

好不容易自製焊台做好了,放置 ESP-12S 的洞挖了,兩個按鈕也鑽好洞放進電池盒內,這時悲劇發生了,原本配給向左翻頁的 GPIO14 在我喬線的時候,整個 PAD 被我扯掉,已經無法再把線焊上去,雖然還有其他 GPIO 可用,但我程式就需要改寫並重新燒錄,只好再比照早上把該焊的線焊一焊,不過這一次就沒有這麼順利了,沒有一根線可以順利焊上,偏偏屋漏又逢連夜雨,連 GPIO0 也被我扯掉,看看新買的 GOOT 烙鐵頭,似乎整個都氧化的很嚴重,連錫都無法順利吃上去。為了怕把我的 ESP-12S 整個報銷,果斷地放棄繼續下去。

到底是發生什麼事我也搞不清楚,究竟是我的大賣場錫條太差,還是我的使用方式不對才導致失敗?

想想軟體工程師還真是幸福,只要一台電腦就可以做事!不像硬體工程師,有準備不完的機斯。想不到我的 Kobo 翻頁器成品,竟然就這樣胎死腹中!

為了完成這個東西,目前為止花的錢大概又可以買一台五千元左右的翻頁器,這就是人生呀!

拍張照片為這個偽完成品留下記錄。


2020/10/02 更新

趁著連假前的晚上,用新買的一些機斯,一股作氣把所有要焊的線一起焊一焊,開開心心的翻了幾頁書之後,ESP8266 (ESP-12S) 就一直重開機,使用電表量測才發現我的工作電壓居然高達 5V?


重覆量測了好幾次結果還是一樣,為了怕是我焊接的問題,移除 ESP8266 (ESP-12S) 後重新量測,情況還是依舊!在確認了我露天拍賣購買物無誤後,發個訊息通知賣家這個情況。

等待的時間閒著也是閒著,拿出放大鏡仔細端詳,發現上面的型號是 HW-626,Google 了一下,確定是轉出 5V 的 DC Converter 沒錯!這告訴我們一件事,以後在焊接前要先確認好電壓才不會白做工,幸好 ESP8266 (ESP-12S) 用 3.3V 開機還算正常 ,但有沒有內傷我就不知道了?


如果賣家沒有給我正確的 Converter,我應該也懶得再找料重焊了,對於焊接苦手的我來說,可能也辦法再焊那麼順利了!我總不能缺什麼就買什麼工具吧?家裡的書櫃已經快放不下這些東西了。

2020/10/03 更新

既然 ESP8266 (ESP-12S) 最低工作電壓可到 2.7V,乾脆放棄使用 DC Converter,反正我也只是要驗證概念,順便測試在 5V 的摧殘下,我的 ESP8266 (ESP-12S) 是否還活著?終於我還是完成了這個產品,為這幾個月來的工作劃下句點。

2020年9月23日 星期三

買新不買舊的最好範例 ESP-12S

一直提不起勁去研究 3D 列印,尤其在得知列印時產生出來的微粒對身體不好後就更是興趣缺缺,雖然網路上有幫忙 3D 列印的店家,收費也不貴,但就是少了一股衝勁。

偶然看到網路上有人實做 Kindle 翻頁器,其設計原理跟我一模一樣,巧的是他也是使用 ESP8266 來實現,又可以將相關元件放入一個 3 x AAA 的電池盒中,於是便想依樣畫葫蘆的做出我的版本。

由於是 5 年前的文章,對方使用的是 ESP-03,目前網路上已經找不太到。故我就直接選了一個比較新的型號 ESP-12S。

雖然知道 Boot Mode 的差別,但我一直以為安信可公司的模組已經處理完畢,預設就是正常開機模式,後來才發現,如果我是購買舊一點的版本,例如 ESP-12F,很多腳位都要自己處理上拉或下拉,對高手來說這些不是問題,但對焊接低手的我來說,能少焊幾根線就是舒服。

原來買新不買舊的意義就在這裡!只要商家的產品真的是越出越好就好。


2020/09/24 更新

想不到也是一樣的 ESP8266 系列卻出現反例,NodeMCU 目前最新的是 V3,但網路上說雖然較新又較便宜,但因板子較大,故插在麵包板後已無空位容納其他排線,還好我之前買的是 V2。

2020年9月19日 星期六

Kobo 翻頁器 DIY 開發順序顛倒了

雖然這個專案已經告一段落,如果不做 3D 列印的話,其實也算是結束了!

但跟我當初預設的開發順序一點都不一樣?

為了回歸初心,還是花了一千塊錢,把當初想買的機斯備齊,也算是為這段時間留個記錄。

看似簡單的線路,如果沒有將 ESP8266 整個插進麵包板,完全沒有辦法工作,如果手邊有個三用電表,就能快速的排除問題。

其實任何學問都是相通的,雖然我還是個硬體菜鳥,但與程式解 Bug 的思路完全沒有兩樣,能夠細心思考問題並排除問題,這應該也算是工程師的浪漫一天吧。



另外,因為懶得一樣一樣購買,我使用的按鈕是直接從 Arduino 通用實驗零件包來的,價錢約略 100 出頭,內容如下:

2020年8月27日 星期四

WeMos D1 ESP Wroom 02 開發板 ESP8266+18650 電池座 初次使用記錄

為了 Kobo 硬體翻頁器的設計,最後選擇了這一塊開發版,這個開發版的好處是包含了 18650 電池座,也有供電及燒錄模組,我只要自己焊幾根線,3D 列印設計外殼,剩下的就是純軟體的工作了,應該可以加快開發速度。另外,其電路設計會讓 CHIP RESET 時進入燒錄模式,故不需要按下 FLASH 按鈕,似乎開發板都有內建這個功能。原理似乎是利用 UART 傳輸時,會觸發 RESET 並讓 GPIO0 拉 Low 好讓 CHIP 進入燒錄模式。下面是取自 NodeMCU 的電路圖。

下面是板子示意圖,隨手畫畫,元件相對位置是對的,但可能水平位置不一定有對齊。


相關 IC 概略

AMS1117 - 電源轉換 IC,負責將 5V 轉成 ESP8266 需要的 3.3V。
CP2102 - USB 轉 UART 的 IC,SILABS 網站上有提供驅動程式。
TP5400 - 負責電池充電,也會將電池的 3.7V 轉成 5V 輸出。

前置作業準備

01. 下載 Arduino IDE。
02. Arduino IDE -> 檔案 -> 偏好設定 -> 額外開發板管理員網址,輸入 http://arduino.esp8266.com/stable/package_esp8266com_index.json。
03. Arduino IDE -> 工具 -> 開發板管理員 -> 搜尋 ESP8266 並下載套件。
04. 開發板選擇 LOLIN(WEMOS) D1 R2 & mini,似乎選別的也無妨,重點自己是用那根 GPIO 要搞清楚。


第一個 Hello Word (控制 LED)


#define LED_BUILTIN 16

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

編譯及上傳訊息


Executable segment sizes:
IROM   : 228640          - code in flash         (default or ICACHE_FLASH_ATTR) 
IRAM   : 26756   / 32768 - code in IRAM          (ICACHE_RAM_ATTR, ISRs...) 
DATA   : 1248  )         - initialized variables (global, static) in RAM/HEAP 
RODATA : 688   ) / 81920 - constants             (global, static) in RAM/HEAP 
BSS    : 24880 )         - zeroed variables      (global, static) in RAM/HEAP 
草稿碼使用了 257332 bytes (24%) 的程式儲存空間。上限為 1044464 bytes。
全域變數使用了 26816 bytes (32%) 的動態記憶體,剩餘 55104 bytes 給區域變數。上限為 81920 bytes 。
esptool.py v2.8
Serial port COM6
Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 24:62:ab:00:00:00
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 2MB
Flash params set to 0x0230
Compressed 261488 bytes to 193147...
Wrote 261488 bytes (193147 compressed) at 0x00000000 in 4.4 seconds (effective 475.9 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

實際測試結果,這樣的一個小程式,耗電量約為 40 ~ 80 mA 左右。

2020/08/28 更新

早上趁著上班前,量測了一下腳位,確認板子上的 D1 ~ D8 是對應到那些 GPIO。

2020/08/29 更新

焊接技術真的很糟!看來自己是沒辦法把線焊到開發板上,程式已經大致 OK,雖然是用 polling 的方式,不是用中斷。非常克難的用一根線模擬按鍵的功能,意思到了就好。


2020年8月20日 星期四

ESP8266 翻頁器設計

ESP8266 概述

ESP8266 是物聯網時代興起時很熱門的一顆 Wi-Fi 晶片,除了可以當作外部裝置給 Arduino 使用,由於本身的計算能力還不錯,故也可以單獨使用。 

晶片開發廠商是上海樂鑫信息科技,而外面常見的模組則是由安信可科技(Ai-Thinker)整合販售的,有 ESP-01、ESP-03、ESP-12等等。不同的模組有不同的 GPIO 數量,可以視需求購買。

另外,還有連燒錄電路,供電電路都整合好的開發版,比如說 NodeMCU 之類的,插上 USB 就可以工作,不需要再買一條 USB 轉 TTL 的轉接線即可工作。另外,USB 轉 TTL 的轉接線預設是走 5V 輸出,而 ESP8266 是吃 3.3V,故還需要把轉接線接頭打開,自行將輸出焊接到 3.3V 腳位。

網路上還有看到,USB 因為電流可能不足,故燒錄時如果失敗,建議外接電源。

ESP8266 共有 17 根 GPIO,扣掉 GPIO6 ~ GPIO11 共 6 根讀取 flash 專用,再扣掉 GPIO1、GPIO3 共 2 根 UART 用,故最多能使用 9 根 GPIO。

下面是抄錄自官方 FAQ:「除了 XPD_DCDC,GPIO 可以配置上拉。關於 GPIO 的上電 IO 口預設狀態為:除了 SDIO 6根線 +GPIO4+GPIO5+GPIO16 上電 IO 默認無上拉,其他的 GPIO 口均有上拉。由於是內部配置上拉,所以如需下拉,需外部加下拉方式或者加一個三級管的反相電路。」

ESP8266 使用 3 根 GPIO 決定 Boot Mode 模式,分別是 GPIO15、GPIO0、GPIO2,其模式如下:

燒錄模式 - 0V, 0V, 3.3V
正常模式 - 0V, 3.3V, 3.3V

為了配合 Boot Mode,GPIO15 上電時會讓它保持 Low,故不建議把它設成 PULL_HIGH,故 9 根 GPIO中,建議使用 GPIO12 ~ GPIO14、GPIO16、GPIO4 ~ GPIO5、GPIO0、GPIO2 這 8 根,越前面的越推薦。另外,每根 GPIO 可提供的最大電流為 12 mA。

GPIO0 ~ GPIO15 都有內建的上拉電阻,GPIO16 則是下拉電阻。

ESP8266 大部份都是使用 26 MHz 晶振,故上電時,晶片預設鮑率為 74880,如果不是使用這個設定,上電訊息便會看到亂碼。

關於 ESP8266 的介紹,這篇文章是我看過寫得很棒的,可以參考。

翻頁器設計

01. GPIO - 3 個 Web API,1 個 LED 指示開機狀態,1 個 LED指示自動偵測 Server IP 狀態,1 個 LED 指示 API 狀態。
02. 電路 - 3.3V 
03. 外部燒錄接口

ESP-03 是 7 個 GPIO 接口,ESP-12 則是 9 個 GPIO。

供電電路

01. 鈕扣電池類,容量只有一兩百 mAh,最大容許放電電流也只有 3 mA,看來是不可行。
02. 4 號電池容量有 1250 mAh,放電電流未知?但我想應該是不行,設計目的不同。

穩壓電源簡介

工作目標

01. 先花幾百塊買現成開發版驗證程式功能。
02. 直接買現成模組 + 麵包板測試。
03. 使用 3 D 列印或其他方式製作外殼。

2020/08/24 更新

查了一下,似乎乾電池的供電電流是可以供 ESP8266 使用,也有賣集成 18500 mAh 電池座與 ESP8266 的開發版,就看那一樣最方便。

規格如下:
ESP-WROOM 02 - 20g
Panasonic 3.7V 3350 mAh - 46g

2020/08/25 更新

查了一下,NodeMCU 上面是使用 AMS1117 這顆 IC 來做電壓轉換,所有電路只需要額外 2 組電容,看起來還不錯。不過這種轉換 IC,效率可能不到 8 成,但簡單運用場景下還算不錯。

2020/08/26 更新

之前沒有想到,按鍵偵測應該要使用中斷,趕緊查了一下,幸好 ESP8266 除了 GPIO16,大部份的 GPIO 都可以觸發中斷。另外網路的操作在中斷裡應該會有問題?流程需要好好設計。

2020/08/29 更新

Arduino 也可以寫 ESP8266 程式真的很方便,polling 版的程式馬上就寫好了,實測模擬按鍵的靈敏度也還行,可惜的是自己焊接的功力真的太差,想把線焊到開發板上一直無法成功,看來這個專案只能到這了!幸好該有的概念都已驗證完畢。

影片連結

2020/08/31 更新

查了一下 3D 列印,一個門外漢要把外殼從無到有設計出來,看起來也不是一天兩天的事,目前看起來還堪用的 3D 列印機大概也要一萬多元,如果不是沒有地方可以放置,自己買一台應該是比較好的選擇。