arduino互換マイコン(ESP32-WROOM-32)で電子工作入門

  • by

電子工作に入門!

ロボットについて散々学んで色々やってきたくせに、
電子回路についてだけなぜか避けて通ってきてしまった著者です。

電子回路や工作に明るい後輩がいるので、やってみようと思い、
今更ながら電子工作にトライしてみました!
やってみたら案外楽しいもので、是非とも広めたいという思いもあり、
記事にしてみました。

Contents

  1. 電子工作について
  2. マイコン
  3. とりあえずLED点灯(Lチカ)
  4. まとめ

まず電子工作そのものについて、
電子工作をやるモチベーションやおすすめする理由、
実際に電子工作の中でキーとなるマイコンについての説明、
そしてESP32というマイコンを使っての簡単な例と、
最後にまとめ、という構成です。

1. 電子工作について

電子工作は後述するマイコンを含め、センサやモーターなどの
電気で動作する部品を組み合わせた工作です。

実際にやる内容としては、何かの問題、タスクに対して
どういうもので解決するか設計をしたり
ICチップやセンサーなどの使い方を調べたり
パーツの動作を決めるプログラムを書いたり
といったことをします。

著者が考える電子工作を学ぶモチベーションや魅力を紹介します。

  • 学ぶハードルが低い
  • IoTができる
  • 問題解決能力が身につく
  • ワクワクする

学ぶハードルが低い

電子工作は、手軽に扱えるキットや学ぶための教材セットの類が
たくさんあって、学ぶ・触れるハードルがかなり低いと思います。
(ちなみに個人的には学研の電子ブロックがかっこよくて好きです。)

電子工作やっている人が多いので勉強になるサイトもたくさんあります。

IoTができる

最近はインターネットと既にあるものを組み合わせて、
色々と便利にするIoT技術が話題です。
(IoT=Internet of Things:モノのインターネット)
IoTは日常的なデータをとったり、あるいは家電の制御をしたり、
様々な用途がありますが、必要となるのは
対象とするモノと、電子回路と、インターネットだけです。
このIoTも電子工作によって実現することができます。

例えば、著者はハムスターと一緒に暮らしていますが、
彼らは人間ほど温度に対して強くないので、温度調節をする必要があります。
ずっと家にいられればいいですが、中々そういうわけにもいかないので、
出先でもケージ内の温度を確認できるようにしたいと考えます。
これはIoTによって比較的簡単に実現できます。 (Fig. 1)

Fig. 1 IoTの例(ハムスターのケージ内の温度を外出先で確認)

このようなIoTに対して電子工作の技術を活かすことができます。

問題解決能力

電子工作は既にやられていることをなぞって勉強することができますが、
本来は、こういう問題を解決したい!というニーズに対して、
どう手段を講じるか、を考えて実装する手段です。

プログラミング教育の必修化にも関係する部分ですが、
電子工作はトライ・アンド・エラーをひたすら繰り返します。
何が問題で上手くいかないか、どうやったら上手くいくかを、
手をうごかして調べたり、
インターネット上で同じような症状になった人を探したり、
あるいはデータシートをじっくり読んだり…

これらは生きていく上で必須のスキルであり、
それを身につける一助になると思います。

ワクワクする

上3つは正直言ってどうでもいいです。

これが一番大事です。
実際に自分で手を動かして実装することの面白さは
何にでも言えることですが、電子工作もそのひとつだと実感しました。

電子工作はプログラムと同様に基本的にすぐに結果が出ます。
しかも、たいてい視覚的にわかりやすい。
ゲームに夢中になるメカニズムは、その行動に対する報酬がわかりやすく、
かつ行動の後すぐに得られることにあると考えていますが、
電子回路もおそらくそういった楽しみがあるように思います。

また、日常生活の中で「これ、もっと便利にできないかな」だとか、
電子部品などを見て「こういうことに使えそう!」だとか、
世界の見方が変わります。

まぁ、とにかくおすすめですよ、ということであります!

2. マイコンについて

マイコンとは色々すっ飛ばして説明するとちっさいコンピュータです。
これ一台でプログラムを記憶し、実行することができます。

マイコンは、センサなどからのデータの入力、
LEDやスピーカ、モーターなどに対して制御信号を出力、
PCや他機器との通信など様々な機能を持っています。
(中の構成などは少し専門的になってしまうので本記事では割愛します。)

電子工作自体はICチップなどマイコンに比べて低級なものでもできますが、
初心者はやはりマイコンから手をつけたほうがわかりやすいと思います。

マイコン単体では少し面倒が多いので私のような初心者は、
様々な機能が乗った「マイコンボード」を使うのが良いです。
マイコンボードには、パソコンとデータをやりとりするためにつなげるUSBの
端子を差し込む部分がついていたり、
センサやLEDなどをつなげるピンという部分がわかりやすくなっていたり、
色々優しくなっております。

有名どころだと、H8、arduino、PIC、Raspberry Piなどがあります。

今回はタイトルにもあるESP32-WROOM-32というマイコンが載っている
ESP32-DevKitCというマイコンボード(Fig. 2)を使います。

Fig. 2 ESP32-DevKitCの外観

これなにがすごいってarduino互換な上にwi-fiやbluetoothなどの無線通信も
簡単にできるし、なにより安い!実際安い!

arduinoというマイコンとしてはとんでもなく有名なものがありますが、
このarduinoとまったく同じ開発環境(プログラムを書いたりマイコンからの
データを見たりするソフトウェア)が使えるマイコンです。

有名ということはそれほど資料が豊富であることも示しています。
なにかに詰まったときはググれば解決方法にたどり着きやすいです。

wifiモジュールがあるのでインターネットと接続が無線ででき、
bluetoothが使える機器と連携が単体でできます。

そして値段ですが、秋月で¥1,480(税込)です。
Wifiなど無線機能がない一般的なArduinoが¥2,940(税込)
と比べるとその安さがよくわかります。

ちなみによりパソコンに近く、機能も豊富なRasbpberry Pi
¥5,600(税込)でmicroSDが別途必要です。
しかも単体でアナログセンサを使うのにはひと手間必要。

ただそれぞれ使いどころ、得意不得意があるので何がなんでも
ESP32がいいというわけではないです。

3. 実装テスト

プログラムの紹介をしたときは、最初のお試しとしてHello, world!という
文字列を表示しました。電子工作におけるハローワールドにあたるのが
LEDの点灯(通称「Lチカ」)です。

Fig. 3 使う物(一部)

必要なもの(リンク先は秋月電子通商の販売ページ)

  • PC(あるだろうけど、インターネット回線とUSB差すところ)
  • マイコンボード ESP32-DevKitC
  • USBケーブル(A-microB)(例: USBcable A-microB
  • LED 3V付近で動くやつ(OSUB5161P
  • ブレッドボードとジャンパ線(後述)
  • 抵抗(今回は330Ω

PC以外は安価に求められるものです。

ブレッドボードについて、Fig. 3にあるものの幅と同じものを選ぶか、
連結しないとマイコンボードのピンを活かしきれないので注意です。
(Fig. 3のものは秋月電子の店内で売ってました。)

ジャンパ線はセットを買うと後々の工作にも使えます。

ブレッドボードは電子工作を簡単にします。
電子部品を差したり、ジャンパ線を差したりできる穴がズラと並んでいる外観
をしていますが、それぞれが行もしくは列で電気的につながっています。
その様子をFig. 4に示します。

Fig. 4 ブレッドボードの中身

さて引き続き、開発環境の準備をします。

ESP32はarduinoの互換として使えるのでarduinoIDEで開発をします。

まずダウンロードページに飛びます。
「Arduino IDE」で検索すると出てきます。

Windowsユーザなら「Windows Installer, for Windows XP and up」で
いいと思います。私もそうしました。

選択すると寄付のお願い兼ダウンロードリンクが出てきます。
懐が広い場合を除いて、JUST DOWNLOADにしましょう。
私もそうしました。

JUST DOWNLOADのリンクをクリックするとインストーラが、
ダウンロードされます。完了次第、実行してインストールを完了させましょう。

インストールが済んだら実行します。
ここからarduinoIDEでESP32を扱えるようにする準備をします。

まずGithubにあるarduino-esp32のページの Stable release link ↓をコピーします。

https://dl.espressif.com/dl/package_esp32_index.json

arduinoIDEの上部にあるメニューの[ファイル]から[環境設定]を選びます。
そうすると環境設定の画面が開きます。

[追加のボードマネージャのURL]のエリアに、先ほどコピーしたURLを
ペーストして[OK]を押します。(Fig. 5)

Fig. 5 ボードマネージャ(arduino-esp32)の追加

次にarduinoIDE上部メニューの[ツール]から[ボード]を選択、
出てきたメニューの一番上の[ボードマネージャ…]をクリックします。
ボードマネージャ画面が出てくるので上部の検索窓で「esp32」と入力、
検索結果に出てくるesp32 by Espressifl Systemsを[インストール]します。(Fig. 6)

Fig. 6 esp32 by Espressifl Systems をインストールしたボードマネージャ画面

これで準備は完了です。

次はブレッドボードにESP32を差して、USBでPCとつなげます。

つなげたらarduinoIDE画面上部メニューから、[ツール]→
[シリアルポート]→[COM 3](COM の後ろの数字は環境で異なる可能性あり)
を選択します。

ブレッドボード上にパーツを配置していきます。(Fig. 7~9)

Fig. 7 ブレッドボード上でパーツを配置してつなげた様子
Fig. 8 LED点灯の配線図(powered by fritzing)
Fig. 8 LED点灯の配線図 (自作)

最後にプログラムを書いて、ESP32本体に書き込めば完了です。

プログラムを書き込む前の状態をFig. 9に示します。
setup()の{ }の中には、使うピンの設定などを書き込みます。
このパートは最初に一度実行されます。
loop()の{ }には実際の動作を書き込みます。
ここはリセットされない限りずっと繰り返し実行されます。

Fig. 9 空っぽのプログラム

では今回使うプログラムを以下に示します。

void setup() {
  // put your setup code here, to run once:
  pinMode(4, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(4, HIGH);
}

setup内のpinMode(4, OUTPUT)では、
4番のピンを出力として使う」ことを宣言しています。
これをすることで4番のピンからON/OFFの指令を出すことができます。

loop内のdigitalWrite(4, HIGH)では実際に指令を出しています。
指令の内容は「4番のピンをONにする」です。
コンピュータの中ではONは電圧が高い状態、
OFFは電圧が低い状態で表すのでHIGH/LOWで表現します。

プログラムができたら上部メニューとプログラムを書くエリアの
間にある書き込みボタン(丸に右矢印)をクリックします。

LEDが点灯したら成功です!(Fig. 10)

Fig. 10 LED点灯の様子

4. まとめ

  • 電子工作はナウいしバカウケする
  • ESP32-WROOM-32は初心者に優しい
  • LEDがついた

終わってみればなんのことはない、小さい明かりがついただけ、
のように思えますが実際はそうではありません。

指令によって明かりをつけられたのなら、
その指令をセンサからの情報によって変えることで、
センサの値に応じて制御可能であることがわかります。

そして制御する対象をLEDからモータに変えてみたらどうでしょう?
距離を測るセンサとモーターを組み合わせるだけでも、
テーブルから落ちない移動ロボットも、迷路を脱出するロボットも、
自動ドアも、作れちゃいます!

私自身、電子工作初心者ではありますが、初歩の初歩として取り組んだことを
今回は記事にしてみました。
電子工作はとっても自由度が高い分、遊び甲斐がありそうです。


ディスクオルゴール

河口湖オルゴールの森美術館にて撮影

音を”とっておきたい”という人の願いはずっと
続いているのだなぁ、としみじみと感じる

オルゴールの森は歴史的な価値のある展示、
エンターテイメント、フォトジェニック、
なんでもあるので観光におすすめ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です