2022年3月30日 星期三

WEMOS LOLIN32 ESP32 模組電路解析 - 輸入電源選擇

 兩種輸入電源選擇電路

1. VBATT無輸入,+5V有輸入時,Q2閘極+5V,Q2關閉,U3由+5V供電
2. VBATT有輸入,+5V無輸入時,Q2閘極經由R5拉地,Q2開啟,U3由VBATT供電
3. VBATT有輸入,+5V有輸入時,Q2閘極+5V,Q2關閉,U3由+5V供電
4. D2防止VBATT逆流/短路到+5V,影響到其他電路,如下方的鋰電池充電電路

簡單來說,U3優先由+5V供電,沒有+5V再由VBATT供電

WEMOS LOLIN32 ESP32 模組電路解析 - 理想二極體 (Ideal Diode)

模組上有個保護電路

ATtiny212 - LED blink example (using UPDI)

如果還沒有燒錄器...

ARDUINO IDE 設定
1. 檔案->偏好設定->開啟額外的開發板管理員網址
添加:http://drazzy.com/package_drazzy.com_index.json

2. 工具->開發板->開發板管理員
搜尋:megaTinyCore
注意:測試megaTinyCore 2.5.1~2.5.10版本,使用Serial.begin()無法編譯成功,參考資料[3]

3. 選擇正確的開發板

4. 選擇燒錄器

ATtiny x12/x14 pinout for ARDUINO

麵包板接線 (ATtiny212)
接線:
Pin1 -- 5V
Pin6 -- UPDI
Pin8 -- GND
Pin4 -- (-LED+) -- 1K -- 5V

程式碼
void setup() { pinMode(2, OUTPUT); } void loop() { digitalWrite(2, HIGH); delay(1000); digitalWrite(2, LOW); delay(1000); }









執行結果

參考資料

使用 CH340C 製作ATtiny UPDI

電路圖

手工焊接電路板 (尺寸10x23mm)

在Atmel-ICE UserGuide提到的注意事項

參考資料:

2022年3月17日 星期四

ESP8266/ESP32模組電路解析 -自動燒錄

 手動進入燒錄模式
參考[1]

步驟:
左手RESET按鍵,右手PROGRAM (GPIO0)按鍵
1. 按下RESET按鍵並維持
2. 按下PROGRAM按鍵並維持
3. 放開RESET,ESP32進入燒錄模式
4. 放開PROGRAM按鍵
5. 更新程式

自動燒錄電路
參考[2]

參考[2]

規格書中描述,GPIO0/2已有內部弱up/down,所以此電路R2與R3不需打件,不過使用上還是以需求考量

參考[3]

自動與手動步驟對照:
1. EN為LOW (按下RESET按鍵並維持)
2. GPIO0為LOW,此時EN低於VIH階段視為LOW (按下PROGRAM按鍵並維持)
3. EN一段時間後高於VIH,轉為HIGH最少1ms (放開RESET,ESP32進入燒錄模式)
4. GPIO0轉為HIGH (放開PROGRAM按鍵)

依照真值表,EN與GPIO0無法一起為LOW (手動步驟的1到2),所以需要在EN加上電容,對電容充電使EN保持一段時間為LOW,好等待(波形顯示,EN會比GPIO0更早為HIGH)並保持與GPIO0同時為LOW

所以加上充電時間的考量,真值表可以理解為下圖:
這樣就可以作到,EN=0時候為兩個按鍵同時按下的狀態,EN=1的時候為RESET放開,此過程為手動2到3

GPIO2對燒錄的影響
規格書中載明,GPIO2可以規劃成SD_DATA0(參考[2]的SD電路),但D0有10K pull-up電阻,這時就會造成燒錄失敗(燒錄時,GPIO2必須為LOW),解決方法是再加上與GPIO0連動的電路
參考[2]

電路精簡

如果GPIO2不會影響到燒錄,可以將電路以UMH3N等預偏置NPN取代,以節省元件數量與面積


參考:
 


使Arduino Nano Every在ARDUINO IDE支援ATmega4809 48pin包裝

軟體環境 ARDUINO IDE 2.3.2 板函式庫MegaCoreX 1.1.2, https://github.com/MCUdude/MegaCoreX ARDUINO IDE 選擇48pin,編譯時會產生以下錯誤 修正錯誤 修改C:\Users\<your_acc...