電子工作の基本、Lチカ! ESP-WROOM02を使ってArduinoと同じように3色LEDを光らせる!
こんにちは!
電子工作を始めてやられる方はとりあえずLED(発光ダイオード)を光らせるところから入る方が多いかと思います!
自分も初めて電子工作をしたときはLEDでとにかく遊んだのを覚えています。
懐中電灯を作ったりLEDを使ったちょっとしたゲームを作ったりしてましたね(笑)
そこで、ESP‐WOOM02を使ってArduinoと全く同じやり方で光らせてみたいと思います^^
(Arduino、ESP‐WOOM02、ESP-WROOM32でも全く同じプログラムで使用できます)
①「使う部品を用意」
・3色LED
電子工作ステーション 25円+送料(500円以上で送料無料)(アノードコモン)
秋月電子 50円+送料(カソードコモン)
・抵抗 (約100~150Ω)
電子工作ステーショ 1本3円+送料(500円以上で無料)
秋月電子 100本100円+送料
・低損失三端子レギュレーター 3.3V1A TA48033S
・電解コンデンサ 47μF35V(秋月電子で購入すると、3端子レギュレータに付属されています。)
・セラミックコンデンサ 0.1μF(秋月電子で購入すると、3端子レギュレータに付属されています。)
・LED(起動などを確認するためのメッセージ用に使う。なので任意)
電子工作ステーション 10円+送料(500円以上で送料無料)
秋月電子 10円+送料
・タクトスイッチ(2個)(任意ですがあると便利です)
電子工作ステーション 9円+送料(500円以上で送料無料)
秋月電子 10円+送料
・ブレットボード
電子工作ステーション 250円+送料(500円以上で無料)(400穴)
秋月電子 270円+送料(400穴)
・ミニブレットボード(あると便利)
秋月電子 130円+送料(130穴)
・ジャンパーワイヤー(オス・メス)(4本)
電子工作ステーション 1セット(10本)100円+送料(500円以上で無料)
秋月電子 10本220円+送料
・ブレッドボード・ジャンパーワイヤ
(ブレットボードで回路を組むとき、見栄え良く綺麗に繫げられますのであると便利)
秋月電子 300円+送料
・通信用マイクロUSBケーブルタイプB (家に無ければ)
秋月電子 120円+送料
ESP-WROOM-32とパソコンを繋ぐためのケーブルです。
100円ショップなどでも販売していますが、スマホ用充電専用タイプだと使えないのでご注意ください。
※任意(楽したい方向け)
ESP-WROOM-02開発ボードを使うとすぐに開発ができるよう回路が組まれているため、上記の「ESP-WROOM02」「超小型USBシリアル変換モジュール」「3端子レギュレータ」「電解コンデンサ 47μF35V」「セラミックコンデンサ 0.1μF」「タクトスイッチ」は不要になります!
②「回路作成」
・今回使うLEDは3色LEDで、「カソードコモン」というタイプになります。
まずアノード、カーソードは電極を表しています。アノードが+ (プラス)、カソードが ー (マイナス)です。
※カソードコモンとは、アノードを軸にカソード側を接続PINに接続して制御するということです。
・つまり、LEDを一般的に使用する場合、アノード(+)をマイコンのdigitalPINなどに
差してカソード側をGND(ー)に接続するのが一般的ですが、
カソードコモンの場合それが逆になります。アノードをV(電源部)に接続し、
カソードをdigitalPINなどに接続して制御します。
なので、アノードコモンでもLEDの接続箇所を逆に考えればアノードコモンでも問題ないです。
では早速回路の方を作ってみたいと思います。
ESP-WROOM02の回路は下記サイトさんの「6.各部品の接続」を参考にしていただければと思います。
WROOM 単体に Arduino スケッチで Wi-Fi ストリーミング
ESP‐WROOM02本体の接続箇所
pinナンバー | 状態 |
---|---|
GPIO 15(IO15) | LOW |
GPIO 2(IO2) | HIGH |
GPIO 0(IO0) | LOW |
EN | HIGH |
※GPIO 0(IO0)をLOWの状態で起動させるときのみ書き込みモード、
LOWじゃなければ実行モードになります。なのでGPIO 0とGNDにダクトスイッチをかましとくと後が楽です。
※RST(リセット)もLOWにすることでプログラムのリセットが行えますので、
RSTとGNDにダクトスイッチをかましておくと後が楽です。
下の画像と同じように作っていただければ問題なく機能するはずです。
黒がRTS(リセット)ボタンで黄色がモード切替ボタンです。
※画像をクリックすれば拡大できます。
※ESP-WROOM-02開発ボードをご使用の方はここからスタート。
・3色LEDの接続
一番長い足がアノード(+)になります。上の画像、左から順番に赤、アノード、緑、青になります。
今回はこんな感じに接続してみました。
IO13 → 赤
IO12 → 緑
IO14 → 青
3V3 → アノード
※画像をクリックすると拡大して見れます。
※尚、アノードに100Ωの抵抗と、赤に100Ωの抵抗を使用しています。
赤のみ抵抗を多くしないと明るくなりすぎ他の色が目立たなくなってしまいます。
③「開発環境を用意」
・こちらをご参考に⇩
Arduino IDEでESP-WROOM-02(ESP8266)とESP-WROOM-32を使えるようにする!(Windows10)
※Arduinoでチャレンジされる方は必要ありません。
※WSP-WROOM32でチャレンジされるこちらのサイトをご参考にお願いします。
④「プログラミング」
まずは緑、赤、青の順番で光らせてみたいと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
//LEDを接続するPINを指定 #define green 12 #define red 13 #define blue 14 void setup() { pinMode(green, OUTPUT); pinMode(red, OUTPUT); pinMode(blue, OUTPUT); //digitalPINをHIGHにすることで消灯させます。LOWで点灯になります。 digitalWrite(green, HIGH); digitalWrite(red, HIGH); digitalWrite(blue, HIGH); } void loop() { //緑点灯 digitalWrite(green, LOW); delay(1500); //緑消灯 digitalWrite(green, HIGH); //赤 digitalWrite(red, LOW); delay(1500); digitalWrite(red, HIGH); //青 digitalWrite(blue, LOW); delay(1500); digitalWrite(blue, HIGH); } |
こちらの回路で作っていただいた場合、黄ボタンを押しながら黒ボタン一回押すと書き込みモードになります。黒ボタンを押した後は黄ボタンははなして大丈夫です。
この状態でビルドしていただければ書き込みができるかと思います。
書き込みが完了しましたら念のため黒ボタン(リセット)を一回押しときましょう。
※ビルドをした際に、こんなエラーが出たら書き込みモードになっていないのが原因です。
(GPIO 0(IO0)をLOWの状態で起動させるときのみ書き込みモード、LOWじゃなければ実行モードになります。)
改善されない場合はもう一度②「回路作成」を読み直してみてください。
成功すればこんな感じに光ります↓
LEDを徐々に点灯させるにはこんな感じに書けばできるかと思います。
1 2 3 4 5 |
for (int i = 1023; i >= 0; i--) { analogWrite(red, i); delay(3); } digitalWrite(red, HIGH); |
これらを繫げて光らせてみました↓
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
//LEDを接続するPINを指定 #define green 12 #define red 13 #define blue 14 void setup() { pinMode(green, OUTPUT); pinMode(red, OUTPUT); pinMode(blue, OUTPUT); //digitalPINをHIGHにすることで消灯させます。LOWで点灯になります。 digitalWrite(green, HIGH); digitalWrite(red, HIGH); digitalWrite(blue, HIGH); } void loop() { //緑点灯 digitalWrite(green, LOW); delay(1500); //緑消灯 digitalWrite(green, HIGH); //赤 digitalWrite(red, LOW); delay(1500); digitalWrite(red, HIGH); //青 digitalWrite(blue, LOW); delay(1500); digitalWrite(blue, HIGH); //緑赤 digitalWrite(green, LOW); digitalWrite(red, LOW); delay(2000); digitalWrite(green, HIGH); digitalWrite(red, HIGH); //緑青 digitalWrite(green, LOW); digitalWrite(blue, LOW); delay(2000); digitalWrite(green, HIGH); digitalWrite(blue, HIGH); //赤青 digitalWrite(red, LOW); digitalWrite(blue, LOW); delay(2000); digitalWrite(red, HIGH); digitalWrite(blue, HIGH); //緑赤青 digitalWrite(green, LOW); digitalWrite(red, LOW); digitalWrite(blue, LOW); delay(2000); digitalWrite(green, HIGH); digitalWrite(red, HIGH); digitalWrite(blue, HIGH); //緑を徐々に消灯 for (int i = 0; i < 1023; i++) { analogWrite(green, i); delay(3); } //赤を徐々に点灯 for (int i = 1023; i >= 0; i--) { analogWrite(red, i); delay(3); } digitalWrite(red, HIGH); //青を徐々に消灯 for (int i = 0; i < 1023; i++) { analogWrite(blue, i); delay(3); } //赤青を徐々に点灯 for (int i = 1023; i >= 0; i--) { analogWrite(red, i); analogWrite(blue, i); delay(3); } digitalWrite(red, HIGH); digitalWrite(blue, HIGH); //緑青を徐々に消灯 for (int i = 0; i < 1023; i++) { analogWrite(blue, i); analogWrite(green, i); delay(3); } //赤緑を徐々に点灯 for (int i = 1023; i >= 0; i--) { analogWrite(red, i); analogWrite(green, i); delay(3); } digitalWrite(red, HIGH); digitalWrite(green, HIGH); } |
成功すればこんな感じに光ります↓
以上、これで少しは電子工作に自信が付いたかと思いますので
どんどんいろんなものを考え作っちゃいましょう^^
2件のフィードバック