2020年7月18日土曜日

Arduino Pro Miniの書き込み

これも届いたので、動作チェックです^^;

Arduino Pro Miniは、Arduino NANOのUSB無しってところです。
昔青年さんに教えていただきましたm(_ _)m
小さいのでOLEDのメーターへの組込用です。
US$ 1.56(18% OFF、送料 $ 0.37)

USBがないので書き込みは、このUSB to Serial変換器でやります。
マーティーは何も考えずに、
CP2102とやらのモジュールを一緒にポチっておりました。
US$ 1.24(6% OFF、送料 $ 0.58)

さて、届いたArduino Pro Miniを見ると
シルクにTXO、RXIの他にDTRがあります。
ちょっとググるとどれもDTRを繋いでます。

で、AliExpressの別の店でこの接続図を見つけました。
が、DTR無しでの書き込み方が説明されてないのです。
 TXO --- RXD
 RXI  --- TXD

そうだ、ESP32の様にボタン押せばできるはず!
そういえば、この時に苦労したCNC2418のコントロールボードWoodpeckerは、
Arduino NANOベースで書込時のRESET信号をDTRから作ってたのでした。

思い起こすに、というか覚えてれば、
DTR付きのを買ってチェックはすぐに終わってたことでしょう(-_-;)
で、しなぷすのハード製作記さんのここにブートローダー起動の詳しい説明があって
USBからUploadのタイミングでDTR信号がHIGHからLOWになり
それをC6で微分してリセット信号を作ってるのです。
Arduinoのブートローダーは、リセットがかかると、
まず、スケッチ(hexですが)が来ていないか見るんです。
一定時間経過すると既に入ってるスケッチが起動します。

タイミングよく一瞬RESETすれば、書き込みできるはずです。
その前に、店では[3.3V 8MHz]と[5V 16MHz]を選ぶようになってて
[5V 16M]をポチってたのですが

裏はこれで、どこにもチェックがありません(T_T)
SWITCH SCIENCEさんとか見ても、3.3V版も5V版も同じ外観です。

どうやら秋葉のここの情報によると
レギュレータの型番
・5V版:S8RD
・3.3V版:KB33・4B2Xなど
で判断できるらしく、マーティーのを見ると「S8OE」!
どうやら5V版とみて大丈夫のようです。

セラーの間違いもないと信じて~
Arduino IDE Ver.1.8.3を起動して、5V 16MHzに設定します。

ようやく書き込みです。
どのタイミングかわからないので、ちょっと試すと
これが出た瞬間にRESETボタンをプチッ!と一瞬押せばいいようです。
1秒遅れても失敗します。

ボタンを押す準備をして、見えた瞬間にプチッ!と押せば、
10発10中、書き込みが開始して

書き込み成功することがわかりました。
無事Lチカも動きました。

まあ、かなり昔の既知の手順だと思うのですが、
タイミングとか、また忘れるだろうから記録を残しておきます。

5Vで無事動作したので
[16MHz]と[5V]に印を付けて、
出番が来るまでパーツボックスで眠ってもらいます^^;

ちなみにNANOと並べたところ。

今更ながらArduino Pro Miniの回路図を探すと、
Arduino.ccのこのPDFです。
NANOと同じ様にDTRを微分してRESETに入ってますね~

で、CP2102のDatasheet(PDF)を見ると
28pinがDTRですね~

改めて、USB to Serial変換器を見ると

拡大!
透明のスミチューブ被ってるのでボケた感じですが、
28pinは、OPENになっています。
ここから引き出せば、いけそうですが、
今回はここまでにしておきます(-_-;)

ESP32-WROOM-32の動作チェック

マーティーに使いこなせるかわかりませんが、
たまに見かけるので、興味が湧いてきて、取り敢えずポチッ!^^;
US$ 3.68(15% OFF、送料 $0.29)
とても高性能なのに
Arduino Micro(SparkFun Pro Micro)とほぼ同じ価格なのです。


届いたのは、これ

通称「ESP32」と呼ぶのでしょうか?
ボードには「ESP32-WROOM-32」と刻印があります。

技適マークが付いてました\(^o^)/
〒をパックマンが食べてるようなマークです。
大きな顔してWirelessが使えます!

ESPRESSIF SYSTEMS社、ここがメーカーサイトで、
「ESP32-DevKitC」というものみたいです。
実はマーティーは、よく知らずに買ったのであります(-_-;)

上に乗ってるモジュールは、これだけ種類があるようです。

裏側の刻印は「ESP32S」とだけ
S:Single Coreのことで、D:Dual Coreだとか。

マーティーのは、上の表の一番上の
「ESP32-WROOM-32」のようです。
WROOM / WROVER familyのfirst moduleだそうです。
ここから
・ESP32-WROOM-32 Datasheet (PDF)
・ESP32-WROOM-32 Reference Design
がダウンロードできます。

Arduinoとして使うには、
ボードマネージャーを追加する必要があります。
記憶は人なり」さんを参考にさせていただきましたm(_ _)m

Arduino Ver.1.8.3を起動して
[ファイル]-[環境設定]

マーティーは、既に幾つか入れてるので
赤枠の所をクリックして、

出てきたボックスの最後の行に
https://dl.espressif.com/dl/package_esp32_index.json
を追加して[OK]します。

URLを追加するだけなので、何も変わりませんが
[OK]して閉じます。

[ツール]-[ボード]から
[ボードマネージャ]をクリックして、

暫く待つと、最上欄に入力できるようになるので
「ESP32」を入力して

出てきた「esp32 by Espressif Systems」の所をクリックして
選択状態にすると
[インストール]が現れます。

ちなみに、執筆時点では、Ver.1.0.4でした。

で、そのまま[インストール]をクリックすると

一番下にダウンロードやインストールが進んで
数分間かかって

「インストール完了!」が出て、更に待つと

INSTALLED 」 の表示が出れば、完了なので
右下の[閉じる]します。

ボードの所を見ると[ESP32 Arduino]シリーズがメチャ一杯できてます。
マーティーのは、「ESP32-DevKitC」なので
[ESP32 Dev Module]を選択します。

設定項目がこんなに沢山だ~(-_-;)
何と!CPU Frequency 240MHz!

各項目の中を見ると、
[ Flash Mode ]

[ Flash Sizes ]

[ Partition Scheme: ]

[ Flash Frequency: ]
[ CPU Frequency: ]

[ PSRAM: ]

[ Upload Speed: ]

[Core Debug Level: ]

では、一旦、ボードをUSBで接続してみます。
マーティーPCは、Windows10 Home Ver.1803  Build 17134.407 です。
デバイスマネージャーには
[ポート(COM と LPT)]に
[Silicon Labs CP210x USB to UART Bridge(COM10)]が現れました。

もし、「Silicon Labs CP210x USB to UART Bridge」ドライバが
入ってない場合は、Silicon Labsのサイトからダウンロードできます。

[ボード情報を取得]してみると、

Flash Sizeとか出てくると思ったのですが...(T_T)

GitHubのこのスケッチ、中身は、これです。
どうやらボード内のLEDを点滅できそう。
*********
/*
  ESP 32 Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
  The ESP32 has an internal blue LED at D2 (GPIO 02)
*/

int LED_BUILTIN = 2;


void setup() 

{
  pinMode(LED_BUILTIN, OUTPUT);
}

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
}
*********

この設定で

書き込みします。
短いスケッチなのに、コンパイルにえらく時間がかかりましたが、

 Connecting........____........ 
と進んでると思ったら

あちゃ~~エラーだ~(T_T)
 A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header 

UARTの接続エラーのようですね~

どうやら[書き込み装置]が間違ってました(-_-;)
[USBasp]にしないといけないようです。

所が、またConnectingが長引いて繋がらず

同じエラーです(T_T)

また地雷を踏んでしまったのか~と思いながらも(-_-;)
自力でなんとかしたいな~
COMポートが9600だったので115200にして

Arduino IDEの[Upload Speed]を115200に合わせてみたり

全てのレートを試して格闘するも、
Connectingから先に進みません(T_T)

そういえば、ずっと前のこの時
CNCのWoodpeckerボード(中身はArduino NANO)の書き込みの時、
CH340GのDTRからRESET信号を作るコンデンサの不良で
書き込みできないことがありました。
それに似た感じがします。
改めてESP32ボードを眺めると、USBの横のコンデンサも怪しいけど
[EN]と[BOOT]のボタンが目に入りました。

まずは試しに、Connectingの時に[EN]ボタンを押すもダメで~
次に[BOOT]ボタンを
Connecting待ちの Connecting........____ の所で押すと
お~~っ!次の処理に進みだして・・・書き込みできました\(^o^)/
一応、記念のログを記録しておきます。
*********
最大1310720バイトのフラッシュメモリのうち、スケッチが207713バイト(15%)を使っています。
最大327680バイトのRAMのうち、グローバル変数が15228バイト(4%)を使っていて、ローカル変数で312452バイト使うことができます。
C:\Users\marty\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\2.6.1/esptool.exe --chip esp32 --port COM10 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0xe000 C:\Users\marty\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4/tools/partitions/boot_app0.bin 0x1000 C:\Users\marty\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4/tools/sdk/bin/bootloader_qio_80m.bin 0x10000 C:\Users\marty\AppData\Local\Temp\arduino_build_889392/ESP32_Blink.ino.bin 0x8000 C:\Users\marty\AppData\Local\Temp\arduino_build_889392/ESP32_Blink.ino.partitions.bin 
esptool.py v2.6
Serial port COM10
Connecting........____ ⇐これがでた時に[BOOT]ボタンを押したら
Chip is ESP32D0WDQ6 (revision 1) ⇐次の処理に進んでいった
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
MAC: fc:f5:c4:29:2a:08
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 8192 bytes to 47...
                                                  
Writing at 0x0000e000... (100 %) 
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 1057.0 kbit/s)...
Hash of data verified.
Compressed 17392 bytes to 11186...
                                                  
Writing at 0x00001000... (100 %) 
Wrote 17392 bytes (11186 compressed) at 0x00001000 in 0.2 seconds (effective 692.2 kbit/s)...
Hash of data verified.
Compressed 207824 bytes to 105378...
                                               
Writing at 0x00010000... (14 %)
Writing at 0x00014000... (28 %)
Writing at 0x00018000... (42 %)
Writing at 0x0001c000... (57 %)
Writing at 0x00020000... (71 %)
Writing at 0x00024000... (85 %)
Writing at 0x00028000... (100 %)
Wrote 207824 bytes (105378 compressed) at 0x00010000 in 1.8 seconds (effective 914.0 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...
                                                 
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.1 seconds (effective 438.9 kbit/s)...
Hash of data verified.
              
Leaving...
Hard resetting via RTS pin...
*********

一応「 ボードへの書き込みが完了しました 」と出ますが
窓の中に、いつもの「avrdude done. Thank you.」が出てこず
「pin...」で終わられると、不安が残りますね~(-_-;)

すぐに青LED点滅し始めたので一安心です^^;
スケッチから青LEDは、D2のハズですが、
回路図を探してもLEDなしのしか見つからないですね~
わりと新しいバージョンのボードなんだろうか?

書き込む前の新品では、赤LEDだけが点灯したままです。
これは、PowerラインのLEDと思われます。

外観は、ここのが同じのようです。
LEDは、Power LEDとGPIO2 LEDであってましたが
GPIO2 LEDもREDと書いてありますね~
出所:circuits4you.com

そこのピンアサインが見易いので拝借m(_ _)m
出所:circuits4you.com

届いてから知ったのでありますが
GitHubのここにGRBLがあるのです。
何と6軸まで!
しかも各軸独立にステッピングモータ制御パルスが出せます。
6軸までは無理としても4軸はやりたいな~
夢が広がる一品であります^^;