UMEHOSHI ITA TOP PAGE    COMPUTER SHIEN LAB

以下で示す部品の追加は、一つの例です。必ずこうしなくてはならないという訳ではございません。
また、[UMEHOSHI ITA]へ何を追加して、どう使うかは自由です。
最終的な安全性や信頼性は、ご利用者の責任で追加部品などを選定し、ご利用者の判断でお使いくいださい。

UART を介して、ESP32-WROOM-32Dを制御する部品追加例

「UMEHOSHI ITA」ににESP32-WROOM-32Dを取り付けても、 ESP32-WROOM-32Dの全ての端子を引き出して使えるようになる訳ではありません。
  (またESP32-WROOM-32Dの全能力を引き出せるものでもありません。)
「UMEHOSHI ITA」は一部の端子だけをCN11とCN12を介して引き出し、そこに別途の自作基板を取り付けて、 少しだけ利用することを想定しています。
ESP32を付けた後のデフォルトでの動作は、 ビルトイン BASIC が起動します。

なお、ESP32-WROOM-32Dの内部プログラム(フラッシュメモリ)をパソコンから書き込み変更したい場合、 IO0(General-purpose input/output-0)をLOWにしての起動のモードで書込みを行う仕様になっていますが、 このIO0の端子は開放状態です。
よって簡単にはESP32-WROOM-32Dの内部プログラム(フラッシュメモリ)を変更できません。

ですがIO0の端子は裏面でT6のシルクのスルーホールと繋がっており、 これとCN12の5(開放端子)と直接にワイヤーで半田付けすれば、 CN11とCN12に取り付ける拡張基板でIO0の端子を操作できます。
その拡張基板でボタンを付けて、起動時の手動操作でIO0の端子を一時的にLOWに できればESP32のプログラムを変更でます。
(MicroPythonなどが動作可能です。)

回路の説明


上記で示したCN11とCN12は 2mmピッチ10ピンで、マイクロコントローラ (PIC32MX270F256B-50I/SP) のURAT(Universal Asynchronous Receiver/Transmitter)用端子と繋がっています。
このページでは、U19にESP32-WROOM-32Dを取り付け例を示しています。
(この資料は、「esp_wroom_32_datasheet_en.pdf」です
U19に取り付けたESP32-WROOM-32Dの端子の一部がCN11とCN12の端子に繋がっています。
そしてESP32-WROOM-32DのU19端子は次のように繋がります。
U01は、マイクロコントローラ :PIC32MX270F256B-50I/SP です

ESP32-WROOM-32DとPIC32MX270F256B-50I/SPの接続状態
U19のESP32-WROOM-32D 繋がり情報
(U01のPIC32MX270F256B-50I/SPなどの端子)
備考
ESP32端子番号ESP32端子意味
U19-1,15,38GND [UMEHOSHI ITA]のGND
U19-23V3 [UMEHOSHI ITA]のVCC
U19-3EN S2を介してU01-1 MCLR, そしてSW1のRESET
U19-14IO12 U01-16 RB7(INT0)入力, そしてSW2や赤外線受光LINESW2のOFF起動でビルトイン BASICが起動
U19-16IO13 JMP11-OPENスルーホール、他方はU01-17 CTSの入力
U19-36IO22(RTS) CN11-7
U19-23IO15 JMP10-OPENスルーホール、他方はU01-18 RTCの出力
U19-31IO19(CTS) CN11-1
U19-25IO0未接続(続裏面シルク T6)(起動時Lowで書き込みモード)
U19-34RXD0 出力 U01-11 TX シリアル出力
U19-35TXD0 出力 U01-12 RX シリアル入力

ESP32-WROOM-32DのIO12はSW2に繋がっており、SW2を押さないで電源を入れると、 シリアルへ Enter 送信でビルトイン BASIC が起動します。
なお、IO15が開放なので「HIGH」となってシリアルへブートログを繰り返し出力します。
[UMEHOSHI ITA]のデフォルトプログラムでは、このブートログ出力を止めるために、起動後の2秒経過のタイミングで シリアルへ "\r\n"の改行を 送信をしています。

そしてUSBでターミナルソフト(Tera Termなど)により、BASICのプログラムが可能です。

CN11とCN12へ 2mmピッチ10ピンの取り付けです。

下記が「2mmピッチピンヘッダ 1×10[PH2-1x10SG(4.0/2.8)][C-08978]」です。
必ず取り付けなければならない部品ではないのですが、ESP32-WROOM-32Dの一部の端子と繋がっており、 ESP32-WROOM-32Dを利用した時、このコネクタを介した拡張基板を取り付けできるようにするものです。

(下の赤マークが取り付け位置です)

ESP32-WROOM-32Dの取り付けです。

 参考:概要 ht-deko.com
       エスプレッシフ社(www.espressif.com)
上記のESP32-WROOM-32Dとマイクロコントローラ (PIC32MX270F256B-50I/SP) は、
URAT(Universal Asynchronous Receiver/Transmitter)端子で繋がっており、非同期式で送受信できます。
(下の赤マークが取り付け位置です)

上記の接続で、ESP32-WROOM-32Dの一部の端子がCN11とCN12に繋がります。
この繋がりの関係を以下に表で示します。
CN12ESP32-WROOM-32D端子名PIC32MX端子No:名-CN11ESP32-WROOM-32D端子名PIC32MX端子No:名
CN12-12: 3V313: VDD CN11-1011: IO26
CN12-235:TXD0 出力12: RX (RA4) 入力 CN11-910: IO25
CN12-334:RXD0 入力11: TX (RB4) 出力 CN11-837: IO23
CN12-46: IO34 CN11-736: IO22(RTS)
CN12-5 未接続 CN11-6JMP10-OPEN-U19-23: IO1518: RTS (RB9) 出力
CN12-67: IO35 CN11-533:IO21
CN12-78: IO32 CN11-4 5: SENSOR_VN
CN12-89: IO33 CN11-3 4: SENSER_VP
CN12-912: IO27 CN11-2JUM11-OPEN-16: IO13(注1)17: CTS (RB8) 入力
CN12-10GND19: Vss CN11-131: IO19(CTS)

上記で取り付けでESP32-WROOM-32DのUART0のシリアル入力が、 PIC32MX270F256B-50I/SPの URAT1 に繋がます。
そして、テスト用プログラム(「テスト・ウメ・フラッシュ」)には 「Throughモード」と呼ぶ状態があり、そのモードでUSBに接続したPCからターミナルソフトでESP32-WROOM-32Dへの文字列送受信ができます。
(「Throughモード」では、USB経由で「UMEHOSHI ITA」へ送ったデータが、そのままURAT1 へ送られるようになります。
また逆ににURAT1から受信したデータは「UMEHOSHI ITA」を介してUSBより受信できるようになります。)

ESP32において起動モードを決定するピンは、次の箇所です。
●「IO12」がSW2にのラインに繋がって、起動時にHIGHTになってため、 『シリアルへ Enter 送信によりビルトイン BASIC が起動しています。』
●「IO15」はHIGHTになってため、起動時にシリアルへのブートログ出力状態になっています。
●起動時に「IO0」がHIGHTになっているとプログラム実行時の「SPI Flash Boot Mode」で、 LOWになっていると、プログラム書き込みの「UART Download Mode」になる。

この「Throughモード」へは"T\r\n"の受信により移行します。 このモードはリセットするまで持続します。
この実験は、 PC側で「Tera Term」というターミナルエミュレータを別途にインストールして確認するのが簡単です。
(お薦めはTeraTerm ポータブル版です。)



取り付けたESP32-WROOM-32Dの動作確認

このようにESP32を追加した基板を使うには、大きなUSB電源供給能力(1.5A程度)が必要です。
PCやスマフォと直接USB接続しないで、別電源付きのUSBハブを経由して接続した方が良いでしょう。

(USB2.0の給電能力が500mA、USB3.0で900mAのため、規格を超えて使うことになります)

まず次のイメージで、PCと接続して、「Tera Term」を起動します。
(USBはPCと接続) 

PC側で起動した「Tera Term」 以下のように接続した時に出現するUSBのCOMポートをの設定をします。(この例ではCOM3を選んでいます。)
この操作は、「Setup」メニューの「Serial Port」メニューで行います。


同様に「Setup」メニューの「Tertminal」メニューで、改行(New-line)を次のように設定します。


FileメニューのNew Connection より、上記設定のSerialのCOMポートを選択して接続します。

以上で、ターミナルで入力した文字列がUSBを介して、「UMEHOSHI ITA」に送られるようになります。
適当な文字列(hello)を入力して[Enter]してみましょう。
これで表示さるということは、入力した文字列が「UMEHOSHI ITA」へ送られて、 その応答として、エコー(echo)となる同じ文字が「UMEHOSHI ITA」から戻ってきて表示しているのです。
このEchoモードをOFFすると、何も表示しなくなります。
「UMEHOSHI ITA」は[E\r\n]を受信することで、EchoのON/OFFの切り替えができます。
(この時、モードが切り替わったことを知らせるメッセージが出ます)
以下では、『Eと[Enter]』のキー操作を2回行った後に『Tと[Enter]』の入力操作をしています。
(この操作によってこのリンクで示した一時スルーモードと呼ぶ状態に変わります。)

上記最後に行ったに『Tと[Enter]』の入力操作で、「Though Mode」に移行して、これ以降のキー入力情報は、 URAT1への送信になっています。
またURAT1の受信文字列がターミナルへ表示するように切り替わりました。
よって、URAT1の接続先の部品の仕様により、挙動が変わります。
そして現在、URAT1の接続先がESP32-WROOM-32Dになっており、 「esp-32 built-in basic」が起動しています。
確認操作をします。以下がその操作例です。(挙動は、取り付けデバイスより異なる可能性があります。)

>HELP
A very Basic ROM conole. Available commands/functions:
LIST
NEW
RUN
NEX
LET
IF
GOTO
GOSUB
RETURN
REM
FOR
INPUT
PRINT
PHEX
POKE
STOP
BYE
MEM
?
'
DELAY
END
RSEED
HELP
ABOUT
IOSET
IODIR
PEEK
ABS
RND
IOGET
USR
>

10 IODIR 2,1
20 IOSET 2,1
25 PRINT "hello"
30 DELAY 500
50 IOSET 2,0
60 GOTO 20

BASICのコード例は、こちらに示します。

ESP32-WROOM-32Dの確認 その2

上記で示したESP32-WROOM-32Dの「IO15」接続状態がHIGHTで、シリアルへのブートログが出力される状態です。 ですが[UMEHOSHI ITA]の「テスト・ウメ・フラッシュ」のプログラムで、起動より2秒後にUARTからの1行受信で、 1回だけ改行で応答するようになっており、これでログ出力が止まります。

そしてESP32-WROOM-32Dの接続状態(SW2がOFFで「IO12」がHIGHT)で、 BASIC が起動しています。

ESP32-WROOM-32Dは、「IO12」端子をLOW で起動させると、BASIC の起動はなくなります。
この場合は、ESP32はBasic起動の代わりに、非同期端末用の操作用のATコマンドに相当する「SSC Command」が使える環境になります。
この環境を試すための操作と実行例を示すます。

[UMEHOSHI ITA]では、SW2スイッチが「IO12」端子と繋がって押すと「IO12」端子をLOW にします。
またSW2スイッチを押した状態で起動し、3秒程度後にLED1が消灯に変わったら、SW2スイッチを放すと スルーモードになります。 (「テスト・ウメ・フラッシュ」のプログラムはリセット後に、3秒程度SW2が押されると、エコーOFFのスルーモードになるからです。)
この操作後に下記の「SSC Command」が使える状態となります。
何回かのEnterキーを入力すると、:>のプロンプトが確認できれば、このモードで動作していることになります。

なお、[UMEHOSHI ITA]のSW1スイッチはリセットスイッチで、ESP32の EN (3番端子)に繋がっています。
よって起動の後でも リセットのSW1を押しながらSW2を押して、SW1を離してから、LED1が消灯するまでSW2を押し続ける操作を行うことで、 このモードになります。

:>op -Q

+CURMODE:2

+MODE:OK

:>
:>what?
:>sta -Q

+JAP:DISCONNECTED

:>ap -Q

+APCONFIG:ESP_049A14,,1,0,0,4,100

:>
:>what?
:>mac -Q

+APMAC:26:0a:c4:04:9a:14

:>
:>dhcp -Q

+DHCP:AP,STARTED

:>ip

+APIP:192.168.4.1

+APIPMASK:255.255.255.0

+APIPGW:192.168.4.1

:>
:>what?
:>reboot
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0x00
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3ffc0000,len:0
load:0x3ffc0000,len:2304
load:0x40078000,len:3788
ho 0 tail 12 room 4
load:0x40098000,len:532
entry 0x4009813c


**************************************
*       hello espressif ESP32!       *
*        2nd boot is running!        *
*            version (V0.1)          *
**************************************
compile time 18:16:58

  SPI Speed      : 40MHz
  SPI Mode       : DIO
  SPI Flash Size : 4MB
Partition Table:
## Label            Usage          Type ST Offset   Length
 0 factory          factory app      00 00 00010000 00100000
 1 rfdata           RF data          01 01 00110000 00040000
 2 wifidata         WiFi data        01 02 00150000 00040000
End of partition table
Loading app partition at offset 00010000
section 0: paddr=0x00000020 vaddr=0x00000000 size=0x0ffe8 ( 65512)
section 1: paddr=0x00010010 vaddr=0x3f400010 size=0x05b64 ( 23396) map
section 2: paddr=0x00015b7c vaddr=0x3ffba720 size=0x01378 (  4984) load
section 3: paddr=0x00016efc vaddr=0x40080000 size=0x00400 (  1024) load
section 4: paddr=0x00017304 vaddr=0x40080400 size=0x126ac ( 75436) load
section 5: paddr=0x000299b8 vaddr=0x00000000 size=0x06658 ( 26200)
section 6: paddr=0x00030018 vaddr=0x400d0018 size=0x325b4 (206260) map
start: 0x400807ac

Initializing heap allocator:
Region 19: 3FFBBA98 len 00024568 tag 0
Region 25: 3FFE8000 len 00018000 tag 1
Pro cpu up.
Pro cpu start user code
nvs_flash_init
frc2_timer_task_hdl:3ffbc564, prio:22, stack:2048
tcpip_task_hdlxxx : 3ffbeca8, prio:20,stack:2048
phy_version: 80, Aug 26 2016, 13:04:06, 0
pp_task_hdl : 3ffc34f0, prio:23, stack:8192

:>enter uart init
uart init wait fifo succeed
exit uart init

IDF version : master(db93bceb)

WIFI LIB version : master(934d079b)

ssc version : master(r283 4d376412)

!!!ready!!!
mode : softAP(26:0a:c4:04:9a:14)
dhcp server start:(ip: 192.168.4.1, mask: 255.255.255.0, gw: 192.168.4.1)

+WIFI:AP_START

上記実行例のコマンド操作資料は、「2a-esp32_getting_started_guide_en-v0.1.pdf に記述されます。
(なお、このページで示すように ESP32の初期内容を変更によっては、このような動作ができなくなる可能性があります。)