目次
1400円のWi-Fi付きマイコン『ESP32』で始めるIoT電子工作入門
こんにちは!この記事では私がESP32を2018/12月に購入して1か月で出来るようになったことを、チュートリアル形式で紹介します。
ESP32とは?
ESP32シリーズは Wi-FiとBluetoothを内蔵する低コスト、低消費電力なSoCのマイクロコントローラである。
wikipediaより
より簡単に説明すると、「Wi-FiやBluetooth等が使えるIot電子工作に便利で安価なマイコン」です。
特に良いのが、Arduino開発環境を使えるという点です。開発コミュニティも活発で、すぐに情報が見つけられるのでIot電子工作初心者だけでなく、電子工作自体をしたことがない人もESP32を使えます。(twitterで「esp32」と検索するといかに活発化が分かりますよ!)
ESP32で出来ること
できることが多すぎて一部の紹介になります。ご了承ください。
スマホから電子回路を操作
ESP32はただWi-Fiに繋ぐだけではなく、webページを動作させるwebサーバーとしても動作できます。これを利用して、スマホから電子回路を操作できるのです!
ESP32開発ボードでRGBLEDをスマホから操作できました。完全フルカラー対応です!!???????????? pic.twitter.com/wyzMKezmDV
— ????????????-????????????????????電子工作 (@wak_tech) December 16, 2018
web上のデータを表示する
httpリクエストを利用して、web上のデータを取得できます。以下の例では天気予報のデータをESP32で取得して、それをディスプレイに表示しています。
ESP32&OLEDディスプレイ「SSD1306」でお天気ステーション
1ページ目に現在の天気と気温が、2ページ目に12時間後の天気と気温が出ます。 pic.twitter.com/ZALSw8lAgl— ????????????-????????????????????電子工作 (@wak_tech) January 13, 2019
今まではスマホを見て天気予報を確認していたので、普通に生活の質が上がりました。ディスプレイを合わせても2000円行きません。
タッチセンサでピアノ
ESP32はその前に出たESP8266というWi-Fi接続可能なマイコンの後継です。その際に加わった新機能として「タッチセンサ」があります。端子に電気を通すものをつなぐだけでセンサーになってしまうのです。バナナを接続しても動きます。
ということでこれを利用してピアノを作ってみました。IoTとかもう関係ない。普通にタッチセンサが楽しい。
ESP32のタッチセンサで3bit直入力式の抵抗鍵盤ピアノが実現しました!!!????
右から順に0,1,2bit目を表していて、0-7までの入力に対応。順に入れるとドレミファソラシになります。#esp32 #ワクテク #ピアノ pic.twitter.com/OMtNb9frCb— ????????????-????????????????????電子工作 (@wak_tech) December 28, 2018
ラジコン飛行機
これは私が作ったものではない&ESP8266の物ですが、ESP32でも動作するはずです。
なんだこれすごい。https://t.co/cYSLn8EqrA
ESP8266を使ってスマホからラジコン飛行機をコントロール。しかも総額15$以下。回路もシンプル。— ????????????-????????????????????電子工作 (@wak_tech) January 5, 2019
このように、Wi-Fiに接続できるという利点から様々な電子工作が可能になります。
市販されているArduinoの価格は3000円近くしますが、スペック的にはESP32の方が圧勝でしかも単体なら700円と激安。扱いやすい開発ボードでも1400円程度とかなりお得になっています。
以下のチュートリアル一覧では、この開発ボードを使う前提で解説しています。Amazonでも同等の商品が発売されているので要チェックです。(動作確認はしていないので、なるべく秋月電子さんの開発ボードを購入したほうがいいかもです)
チュートリアルで出来るようになること
以下の入門チュートリアルでは、上記のラジコン飛行機以外のものを実際に作っていきます。最後にはオリジナルのお天気ステーションが出来上がります。
かなりステップを区切って記事にしていますので、ご安心ください。
0から始める方は、最近出版されたESP32&Arduino 電子工作 プログラミング入門がすごくお勧めです。Arduinoの使い方からESP32の使い方まで網羅されているので、購入をお勧めします。
チュートリアル記事一覧
チュートリアル記事をやるべき順にまとめました。
ESP32のセットアップ
ESP32で出来ることを確認する
ここではスマホから操作できるLEDを実際に作りますが、コードの内容が初心者には難しくなっています。ですので、回路を組んでコードをコピペしてとりあえず動かしてみましょう!
初心者に大事なのは「よくわからんけど動いた!すごい!なんで動くんだろうか」⇒「詳しく知りたい」というモチベーションの出し方です。
以下の記事でも、
①まず動いている様子を見せる ②コードの解説
という流れをとっています。ワクワクしながら作りましょう。
基本部品の制御
LEDやモーターなど、一般的な部品の制御をしていきます。
- ESP32で電子ホタルをつくる(PWM制御、ledc)
- ESP32でledcWrite()を使ってPWM出力をする
- ESP32でモーターを駆動する
- ESP32でRGBLEDを使う
- ESP32で圧電スピーカーを動かしてみた
タッチセンサ
ESP32で実装されたタッチセンサを使っていきましょう。
以下の二つは若干番外編。3つのタッチセンサだけでドレミファソラシドが鳴らせるのかを検討したものです。飛ばしても全く構いません。
フォトトランジスタ(明るさセンサ)
LEDの逆の原理を利用して、光で起電力が発生する「フォトトランジスタ」を使って明るさを検知しましょう。
組み合わせ応用編
いよいよここでスマホから操作可能なRGBLEDを作っていきます。
文字・グラフィック表示をしてみよう
マイコンの醍醐味と言えば小さなLCD(液晶ディスプレイ)などへの数値出力。この項では一般的な文字表示LCD「AQM1602A」と、より自由に文字や絵が出力可能なグラフィック液晶「SSD1306」の使い方から応用までまとめました。
文字出力LCD「AQM1602A」編
ここで、ESP32らしくネット上の天気予報を取得してLCDに表示してみましょう。
- ESP32で現在の天気を取得してみた
- ESP32でOpenWeatherMapから天気情報を取得し、成形してみた
- ESP32でOpenWeatherMapのAPIを使って現在の天気をLCD「AQM1602A」に表示させる
グラフィック液晶「SSD1306」
お天気ステーションを作ろう
いよいよこのチュートリアルの目的である「お天気ステーション」を作ります。
- ESP32でネットワーク上から現在時刻を取得する(NTP)
- ESP32でNTPで取得した時間をOLEDディスプレイ「SSD1306」に表示してみた
- ESP32でssd1306を使って複数のページを表示してみる
- ESP32でお天気ステーションを作ろう
応用編(順番関係なし)
上記のリストで体系的なESP32の使い方は終わりですが、その他にも様々なESP32工作を続けています。
その工作の作り方を上記と同様に丁寧に解説していますので、ご覧くださいませ!
- ESP32-DevKitCを挿してタッチピアノにする基板「ESPiano」を作った
- 【SD不要】ESP32の内臓DACを使ってSPIFFS領域のMP3ファイルを再生する
- ESP32でのサーボモーターの使い方
- ESP32を遠隔操作!Blynkの使い方とLチカ
- ESP32でWS2812(NeoPixel)を使う方法
- ESP32のSPIFFS領域内のHTMLファイルでLチカWeb Serverを立てる
- ESP32とタクトスイッチでBluetoothキーボードを自作する(ESP32-BLE-KEYBORAD)
- ESP32で赤外線通信ができるライブラリ「IRremoteESP8266」の使い方
今後の予定
最近サーボモーターを購入したので、それとESP32を使って現実に物理的に干渉するような工作をしていきます。
物理で起こしに来る目覚まし時計とか、Twitterに通知が来たら何か動きをするとか、いろいろ思いつきますね。
新着情報がある場合は必ずTwitterで通知しますので、フォローお願いしますm(__)m
「役に立った」「工作の続きを見たい」と思ってくださった方、もしよろしければnoteもやっておりますので、少しでもご支援いただければと思います。よろしくお願いします。
夢があるなあ