Help us understand the problem. What is going on with this article?

初心者向けESP-WROOM-02解説その1: ラズパイを母艦にする

More than 3 years have passed since last update.

電子工作をはじめて一週間経過したかしてないか位のerukitiです。ごきげんよう。そんな電子工作ビギナーですが、ラズパイを母艦にしてESP-WROOM-02を使うのはそれなりに簡単でした。今回はそんな知見を雑多にまとめていこうと思いますが、今回はラズパイを母艦にする方法です。

間違ったこと書いてる可能性高いかもしれないので、是非ハードウェア上級者の人は突っ込みを入れて頂けると助かります!

まずはESP-WROOM-02とはなんぞや

Arduinoのスケッチをある程度互換で動かす事ができる、WiFi搭載マイコンです (補足: AtmelAVR互換かと思ってたけど、そうじゃないようでした!)。500円〜1000円程度で入手できてWifi通信が可能で単体動作可能なマイコンです。すごくないですか?流行ってるのも理解できるというものです。

ESP-WROOM-02開発でRaspberry Pi を母艦にする

世の中ではESP-WROOM-02をUSB-serial変換器でPCにつなぐ系の記事ばかりですが、実はラズパイを母艦にすることも十分に可能です。電源も供給できますし、シリアルをクロス接続するだけで通信もできます。いちいちUSB-serial変換器を買う必要はありません。

電源をどうつなぐか

ラズパイのGPIOのピン番号1番は3.3Vが出ています。そのままESP-WROOM-02につなげば動きます。が、一つ問題があって、3.3Vは、最大で50mAしか出せません。2番ピンの5Vにはそのような制限はないようです。なので、三端子レギュレータで5Vから作成してしまいましょう。

シリアル(RXD, TXD)をクロスにつなぐ

ラズパイのピン番号8番がTXDでピン番号10番がRXDです。これらをESP-WROOM-02のTXD, RXDとそれぞれクロスにつなぐだけで通信が可能です。

用意するモノ

ひとまずこんなところでしょうか。秋月なのは単に好みです。というか、秋月のESP-WROOM-02 DIP化キットが一番使いやすそうな気がしています。ただ、秋月バージョンはモード切替をする時に自前でタクトスイッチを使う必要があります。結構操作が面倒です。なので、ファーム焼くモードと、普通に立ち上げるモードを別々に作ってしまおうということです。なのでブレッドボードを二つ用意しましょう。

むしろ、ブレッドボードは小さいサイズ、普通サイズ、大きいサイズをいくつかそろえておくといいと思います。カジュアルに買いましょう。

組み立て方 (焼く方)

回路図の書き方よくわからないので表形式で書いてみます。

ESP-WROOM-02 接続先
3V3 三端子レギュレータの3.3V
EN 10kΩ抵抗を挟んで、三端子レギュレータの3.3V
IO15 10kΩ抵抗を挟んで、GND (RaspberryPiの6番ピン)
IO02 10kΩ抵抗を挟んで、三端子レギュレータの3.3V
IO0 10kΩ抵抗を挟んで、GND (Raspberry Piの6番ピン)
GND GND (Raspberry Piの6番ピン)
RST 10kΩ抵抗を挟んで、三端子レギュレータの3.3V
TXD RXD (Raspberry Piの10番ピン)
RXD TXD (Raspberru Piの8番ピン)
三端子レギュレータ 接続先
5V (Raspberry Piの2番ピン)
積層セラミックコンデンサを挟んでで真ん中
真ん中 GND (Raspberry Piの6番ピン)
3.3V (ESP-WROOM-02の3.3Vに供給)
電解コンデンサを挟んで真ん中 (極性に注意)

うーん、これでわかる気がしません。誰かいい感じに回路図をPlantUMLみたいに書けるツール教えてください。

ESP-WROOM-02の接続方法は、ESP8266 - ESP-WROOM-02 の Arduino 環境で I2C 制御 - Qiita を参考にしました。この図のうちESP-WROOM-02だけ利用した上で、タクトスイッチを両方省略しています。

ブレッドボードに乗せた写真

ミニサイズのブレッドボードを使っています。

組み立て方 (動かす方)

三端子レギュレータは同じです。

ESP-WROOM-02 接続先
3V3 三端子レギュレータの3.3V
EN 10kΩ抵抗を挟んで、三端子レギュレータの3.3V
IO15 10kΩ抵抗を挟んで、GND (RaspberryPiの6番ピン)
IO02 10kΩ抵抗を挟んで、三端子レギュレータの3.3V
IO0 10kΩ抵抗を挟んで、GND (Raspberry Piの6番ピン)
GND GND (Raspberry Piの6番ピン)
RST 10kΩ抵抗を挟んで、三端子レギュレータの3.3V
RST タクトスイッチを挟んでGND (Raspberry Piの6番ピン)
IO13 動作検証用のLED

動作検証用のLEDは、仕様に合わせて抵抗を決める必要があります。たとえば、3mm 緑色LED EBG3402S (20個入)ならば、(3.3 - 2.1) / 0.02 = 60 ですが、それに近い カーボン抵抗 (炭素皮膜抵抗) 1/4W 75Ω (100本入り) を買っておけばいいような気がします。僕もあまりよくわかっていません。きっと詳しい方のコメントが入ると思います。

あとタクトスイッチはタクトスイッチでRaspberryPiをシャットダウンさせてみた【Python】【supervisor】: Raspberry Piでやってみたを参考につなぎましょう。失敗するとリセットが入りっぱなしになります。

ブレッドボードに乗せた写真

焼き方 (CUIで焼く)

ESP8266 を CUI で開発する - Qiitaを参考に PlatformIOを使って焼いてしまいましょう (僕はIDEが大嫌いなのです)。

まずラズパイにどうにかしてPythonとcurlが動くようにしましょう。補足: Raspbian (Jessie現在) ならデフォルトでPythonとcurlは入っているのですが、python-devが追加で必要になります。

$ sudo apt-get -y install python-dev
$ sudo python -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/master/scripts/get-platformio.py)"
$ exec bash -l

pip 経由でインストールする方法が色々なサイトに書かれてますが、何故かちょっと古いバージョンが入ってしまってラズパイ&ESP-WROOM-02だとエラーが出たりするので、この方法で最新のを入れましょう。

シリアル(/dev/ttyAMA0)を自由に使えるようにする必要があります。備忘録 Raspberry PiでUART、シリアル通信なんかを参考にしてセットアップしてください。

また、シリアルにアクセスする権限が無いとファームウェアを転送できません。/dev/ttyAMA0 のグループである dialout をユーザーに追加しておいてください。

後はスケッチを用意して焼き込みます。

$ mkdir test
$ cd test
$ yes y|platformio init -b esp12e
$ cat > src/test.ino
// src/test.ino

#define LED_PIN 13

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(1000);
  digitalWrite(LED_PIN, LOW);
  delay(1000);
}
$ platformio run
$ platformio run -t upload --upload-port /dev/ttyAMA0

おまけの知見 (ラズパイでGPIO)

ラズパイでGPIOを制御するのにライブラリは必要ありません。シェル上からデバイスファイルを叩くだけでも十分可能です。How to use GPIOs on raspberry pi (Simple I/O, PWM and UART) - Semillero: Advanced Digital Technologies - UPB Bucaramanga, Colombia を参考にしてみてください。

試しにLチカしておくといいでしょう。

まとめ

  • 一家に一台転がってるラズパイを有効活用しましょう
  • ファーム焼く用のブレッドボードと、実際に動かすブレッドボードは分けましょう
  • 間違ってたら突っ込みお願いします!
  • 回路図楽に書くツール教えてください

それではごきげんよう。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした