ESP-WROOM-32 ( ESP32 ) で Wi-Fi スマホ LED スイッチ作り

wroom32_00 ESP32 ( ESP-WROOM-32 )

こんばんは。

私も技適取得済み、2.4GHz Wi-Fi & Bluetooth マイコンモジュール、ESP-WROOM-32 ( ESP32 )を検証してみました。

なんと、これは秋月電子通商さんから税込 700 円で発売されています。
ESP-WROOM-02 が初めて発売されたときの値段とあまり変わらないじゃぁないですか!
しかし、日本製でこういう物が何で出てこないんでしょうかね・・・?。
この分野ではもう他社が入る余地が無くなってきているのでしょうか・・・。

さて。ESPRESSIF社のデータシートを見てみると、電子工作用途としてはスペックがバケモノですね。

いずれ開発ボードが発売されて、安定して電子工作ができるようになってくれることと思いますが、ESP-WROOM-02 でもそうだったように、まずは自分自身で電源周りとUSBシリアルモジュール接続を行ってみないと、トラブルが起こった時の対処方法が分からなくなってきます。

Wi-Fiモジュールは多量の電力を食うことが前提なので、そのせいでマイコンの動作が不安定になってしまうことがよくあります。
そこは自分自身で押さえておきたいですね。

ところで、私がIoT実現用マイコンで重要視しているのは、CPUクロック速度と、SRAMサイズです。

●ESP-WROOM-02 ( ESP8266 )
 CPU Clock 最大 160MHz
 SRAM(ユーザーメモリ)(Arduino IDE使用時) 約50KB
●ESP-WROOM-32 ( ESP32 )
 CPU Clock 最大 240 MHz (デュアルコア使用可)
 SRAM(ユーザーメモリ)(Arduino IDE使用時) 約 273 KB

どうですか? ESP-WROOM-02 よりも形が少し大きいだけなのにバケモンですね。

Arduino IDE を使った時に、ESP32 のCPUクロックを240MHzにする方法は今のところ分かりませんでした。
今後恐らく変えられるようになると思います。

SRAMサイズは、Arduino IDE で空のスケッチをコンパイルしたときに、IDE 上で表示されているユーザーSRAMメモリサイズを調べたものです。
データシートによると、On-Chip (チップ内蔵)SRAMサイズは520KB とありますが、実際は273KBしか使えません。
恐らく、Wi-FiやBluetooth 動作等、その他インターフェースの動作でメモリが取られてしまっているのでしょう。
それでも、ESP-WROOM-02 の5倍以上あります。
最近、私の場合は、ESP-WROOM-02 のSRAMサイズが足りなくて悩んでいたので、これはとても有難いです。
しかも、データシートによれば、オンチップ以外に8MB (8000KB)の外部SRAM が付いているようです。
ただ、これはまだ使ったことないので、ホントかどうか定かではありませんが、そうだとしたら、これ、スゴイですねぇ~!!!
これだけあれば、WEBからの多量の文字列を処理しても、問題なく動きそうです。

では、このバケモノのESP-WROOM-32 ( ESP32 )を私なりの方法で動作させてみましたので、紹介してみます。

※ESP-WROOM-32 は1Aを超える電流が流れる場合があります。
その場合、デバイスやパソコンのUSBポートに悪い影響があることを十分に認識しておいてください。
以下で紹介する工作やプログラムは全て無保証です。
私は回路やプログラミングについては専門家ではありませんので、何か間違い等がありましたら、コメント等でご連絡いただけると助かります。

この記事以降、ESP32 ( ESP-WROOM-32 )の突入電流や、3.3Vラインの瞬時電圧降下による悪影響が分かって来ました。
電源レギュレーターは高速応答のものを使用しなければいけません。
以下の記事も合わせてご覧ください。
ESP-WROOM-32 ( ESP32 )の消費電流を電流プローブ無しで測定してみました
●ESP-WROOM-32 (ESP32) の 電流 測定 その2
●ESP-WROOM-32 ( ESP32 ) のUSB電源突入電流(インラッシュカレント)を考える
●ESP-WROOM-32 ( ESP32 ) の保護機能付き電源強化対策の実験

 

最新記事では、ESP32-DevKitC ( ESP-WROOM-32 開発ボード )とスマホで Wi-Fi リアルタイム双方向通信をやったりしています。
LEDを調光コントロールして、CdS光センサー値をスマホにリアルタイム表示させています。
以下の記事も合わせてご覧ください。


ESP32 -DevKitC ( ESP-WROOM-32 )でスマホとWi-Fi リアルタイム双方向同時通信

 

スポンサーリンク

1.ESP-WROOM-32 の外観

これが今話題の技適取得済み 2.4GHz Wi-Fi Bluetooth マイコンモジュールです。
意外と小さいです。
技術適合認証マークが刻印されてますね。
これがあれば、日本で存分に使用できます。

裏面はこんな感じです。

ESP-WROOM-02 と比べても、ちょっと大きいだけです。

1.準備するもの

ESP-WROOM-32 ( ESPRESSIF )

技適取得済み 2.4GHz帯Wi-Fi & Bluetoothマイコンモジュール

ESP32-WROOM-32D WiFi+BLEモジュール お得な2個セット
マイクロテクニカ
¥1,800(2024/10/04 08:57時点)

ADP3338 AKCZ-3.3RL7 ( ANALOG DEVICES )

LDO ( ロー・ドロップ・アウト)電圧レギュレーターです。
これを選んだ理由は ねむいさんのぶろぐ の以下の記事を参考にさせていただきました。

ESP-WROOM-32を使ってみる2 -そんな電源で本当に大丈夫か-

私はこれをRSコンポーネンツの RSオンライン で入手しました。
Amazonや秋月電子通商さんでは売ってなかったです。

秋月電子通商さんで販売されてました。
http://akizukidenshi.com/catalog/g/gI-12635/

入力電圧範囲 2.7~8V
出力電圧 3.3V
最大ピーク出力電流 1.6A

これの最大の特徴は1A出力で、0.19V しか電圧降下が起こらないことです。
それと、これには出力側に電解コンデンサではなく、セラミックコンデンサを使わねばなりません。
ただし!、B特性の 2uF 以上のセラミックコンデンサを推奨します
データシートには1uFのセラミックコンデンサで回路図が表記されていますが、これは、ねむいさんのぶろぐ記事でも紹介されているように、F特性のセラミックコンデンサの場合、温度によっては 1uF を下回ってしまう可能性があります。
データシートの最後の方に1uF以上と記述されていますので、実測値がそれ以下だと安定動作しない可能性があります。
ここはちょっと分かりにくいですね。
10uFのセラミックコンデンサを使うと安定すると思います。

FT231XS USB-シリアル変換ボード(スイッチサイエンス)


FT231XS USB-シリアル変換ボード
スイッチサイエンス(Switch Science)

いろいろあるUSB-シリアル変換ボードでこれを選んだ理由は、USB の5Vラインを5V端子に直接出力していることです。
つまり、USBポートの最大定格電流を取り出すことができるわけです。
USB2.0端子では、最大500mA までしか取り出せません。
USB3.0端子では、最大900mA まで取り出せます。
他のUSB-シリアル変換モジュールでは、小容量の電源レギュレーターで5V出力されている場合があり、それではこのESP-WROOM-32 の大電流は耐えられない場合があります。
ですから、このデバイスの出力最大電流はよく考慮して選ばなければなりませんね。
3.3V電圧出力端子がついていて、出力が1.6Aくらいあれば問題ないのですが、そういうものは見当たりませんでした。

表面実装 チップ積層セラミックコンデンサ 2uF以上 2個

LDO 電圧レギュレーターに使用します。
ADP3338のデータシートによると、セラミックコンデンサが良いそうです。
私は16Vのものを使いました。

※F特性の1uFコンデンサは発信する可能性があるらしいです。温度によって、1uFを下回ってしまう可能性があるからです。よって、B特性 2uF以上のコンデンサが良いと思われます。

表面実装 チップ積層セラミックコンデンサ 0.1uF 1個

ESP-WROOM-32 ( ESP32 ) のパスコン用です。

チップインダクター BLM21P G331SN (村田製作所) 2個

フェライトビーズと同様の効果のあるチップタイプのインダクターです。
これは秋月電子通商さんで購入しました。
こんな小さいチップにコイル状に回路ができているようです。
ノイズ対策用で、LDO 電圧レギュレーターの入力側5Vラインに使います。
パソコン等のUSB からくるスパイクノイズを抑制する効果があります。
1500mA まで耐えられる優れものです。
これを選んだ理由は以下のページのADP3338 の参考回路図で使われていた為です。

アナログデバイセズ ADP3338 概要

0.1uF セラミックコンデンサ 2個

GPIO #0, #2 に使うものです。
電源電圧以上の物であれば何でも良いと思います。

10uF 16V電解コンデンサ

電圧レギュレーター LDO の後、ESP-WROOM-32 の前に入れるものです。

固定抵抗 10kΩ 3個

GPIO や ENピンのプルアップ用です。

砲弾型LED 5V用

5V用であれば何でもよいですが、高輝度のものは電流が多すぎるので避けた方が良いです。

定電流ダイオード E-103



最大30Vまでで、10mA の定電流ダイオードです。
ESP-WROOM-32 のデータシートによると、GPIO 端子の最大電流は 12mA のようです(どこに明記してあるか微妙で分かりにくいです)。
LED を点灯させる時に使います。
古いLEDで型番が不明のものは、何A流れるか分からないものがありますので、これを入れていると安心ですね。
固定抵抗で電流制限しても良いです。

タクトスイッチ 2個

アルプス電気 6mm角タクトスイッチ(ステム高さ:4.3mm) 【SKHHAJA010】
アルプス電気(Alps Electric)
¥376(2024/10/05 09:12時点)

ごく普通の6mm角のもので良いです。
実はこれ、正確にはブレッドボードに合わないんですよね。
でも、手軽なので使っています。

2.54mm ユニバーサル基板

サンハヤト 小型ユニバーサル基板 ICB-288G
サンハヤト
¥216(2024/10/05 01:44時点)

カッターでカットして、ほんの少ししか使いません。
電圧レギュレーターLDO部分に使うだけです。

1.27mm ピッチ ピンソケット 3本

このピン数の場合、とりあえず3本あれば良いのですが、失敗したときを考えてもっとあった方が良いです。

1.27mm ピッチ ピンヘッダ 少々


この写真では3本ありますが、1本あれば十分です。

2.54mm L型 ピンヘッダ 1本

2.54mmピッチであれば別にL型でなくても良いです。
電圧レギュレーター LDO の自作モジュールを作るために使います。

ブレッドボード SAD-101 (サンハヤト)


サンハヤト SAD-101 ニューブレッドボード
サンハヤト
¥529(2024/10/05 00:44時点)

サンハヤトさんのこのブレッドボードは電源を5V と3.3V 部分に分けられるので便利です。

ヒートクリップ(goot)

電圧レギュレーターLDO モジュールを自作するときに、すずメッキ線のハンダ付けで熱を逃すために重宝します。

0.65mm 単線 電線

ブレッドボードに直接挿せる、軟銅線です。
撚り線よりは取り回しにくいのですが、今回はこれを使います。

熱収縮チューブ

外径が2.5mm程度のものがあれば良いと思います。

先の細いハンダこて、細目の糸ハンダ等

1.27mm ピッチのピンソケットやピンヘッダをハンダ付けしますので、先が細く、温度調節が出来るハンダコテや、細い糸ハンダが良いと思います。

USB3.0以上のポートのあるパソコン

USB2.0ポートの規格では、電源の最大供給電流が500mA です。
USB3.0ポートは900mAまで供給できますので、できるだけ大きな電流対応のポートを使わないと正常に動作しない場合があります。

その他、精密ピンセット、拡大鏡など

コメント

  1. 匿名 より:

    ソースファイルを使わせていただきました
    ありがとうございます(゚∀゚)

    https://twitter.com/coppercele/status/842932804115554305

    • mgo-tec mgo-tec より:

      どうぞどうぞ!
      ご自由に使ってくださいませ。

      • 匿名 より:

        お世話になります
        あれから色々魔改造したらこんなふうになりましたw

        HTTPのGETのパラメータで通信するのは効率悪いんでどうにかしたいですね(´・ω・`)

        https://twitter.com/coppercele/status/844599677869682688

        • mgo-tec mgo-tec より:

          スバラシイ!!
          これはUDP通信ですか?
          スライダーの縦表示もできるんですね。

          client.write でjavascript を吐き出していると辛いと思いますので、私の場合はSDカードから吐き出したりしています。
          いずれ、SPIFFSもArduino IDE で出来るようになると思うので、そうするとSDカード要らずになるかも知れません。

  2. 匿名 より:

    大変参考になる記事をありがとうございます。
    初心者なのでなにか勘違いしているかもしれませんが、ESP32のデータシートを見ると、GPIO2はデフォルトで内部的にプルダウンされているようです。(https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdfのp.11)
    そのため、改めてGNDラインに接続しなくてもよいのではないかと思うのですが、いかがでしょうか。

    • mgo-tec mgo-tec より:

      匿名さん

      記事をご覧いただき有難うございます。

      私も基本的に素人です。

      この記事を作った当初はあまりよく分かっておらず、とりあえず作成した記事でした。
      改めて見直すと、確かにプルダウンされていますね。
      抵抗を接続しなくても良いと思われます。

      今、私はこの記事の様な不安定なESP32環境を使っておらず、もっぱら ESPr Developer 32 や ESP32-DevKitC、M5Stack を使用しています。
      電源周りの安定性が難しく、結局のところ開発ボードを使った方が良いという結論に達しています。

      ご指摘ありがとうございました。
      記事にはコメントを追記しておきます。

タイトルとURLをコピーしました