アルディーノ - Arduino, ESP-WROOM-02 ▲factory top


 

はじめに 2023 Jun 21-23

制御系には、 常時通電ではなくその都度電源が入り、 さらに即座に動作して欲しい用途が考えられます。 Single Board Computer であるラズパイは機能的には申し分ありませんが、 電源を入れてから Linux OS が起動するまでしばらく時間がかかります。 Android OS のスマホですら電源オン(hard boot)からだと 起動まで少し時間がかかります。

家電ぽい用途では、 使わない時は電源は完全にオフとかコードが抜かれていたりするくせに、 電源を入れると即座に動作することが要求されたりします。 このような用途にはラズパイは使えません。

ラズパイのような汎用 OS は搭載されておらず、 代りに専用機能のソフトウェアが搭載され、 電源投入と同時に目的の動作をするいわゆる Single Board Mycon が必要になります。

このような用途にもいろいろなソリューションがありますが、 ハードウェア、ソフトウェア共にネット上の情報量の多さから Arduino を第一候補にしました。

Arduino Uno R3

 

wifi が使えて Arduino 互換の ESP-WROOM-02

思いつく家電用途は幾つかありますが、 たとえ単純な機能であっても、それを制御したり状態を把握するために、 家のPCやラズパイ、スマホなどと wifi 接続出来ることは必要になります。 ちなみに Arduino には当初 wifi はありませんでした。 その後 Arduino Uno Rev4 Wifi になり wifi 機能が搭載されました。

実際に何かに組込んで使う場合、 上の写真のような Arduino をそのまま組み込んで使うことは、 コスト的にもサイズ的も無駄が多いように思います。 Arduino には開発に必要な機能が一通り搭載されていますが、 電源コンバータや有線系の通信機能など、 実使用時に場合によっては使わない機能もあります。 試作のみとか開発時間最優先などの場合は Arduino そのままもあり得ますが、 実際に組込む時は、基本 Chip と必要な周辺 Chip だけの方がスマートです。

ところで、超シンプルな組込みソリューションとして PIC (Peripheral Interface Controller) マイコンがあります。 wifi が不要ならこれで済みますが、 これに wifi を加えていたらシンプルさは薄れます。 ちなみに Arduino に乗っているマイコンも PIC と言えます。

以上のような考察の結果、 wifi が使え Arduino 互換である ESP-WROOM-02 を使うことにしました。 尚、後継でより高性能の ESP32-WROOM-32 が出ていますが、 前者で機能的に十分と考えました。

ESP-WROOM-02 Wi-Fi モジュール

ただしこのままでは半田付けすら困難なので、 実際には SWITCH SCIENCE が出しているピッチ変換済モジュールを使います。 以下のどちらも ESP-WROOM-02 Wi-Fi モジュールをそのままマウントし、 必要な端子を 2.54mm ピッチのピンホールランドに導いています。

ピッチ変換済みモジュール《フル版》

ピッチ変換済みモジュール《シンプル版》

開発ボード 2023 July 6-7

ソフトウェア開発に欠かせない開発ボード。 Windows PC と通信しプログラムをブートしたり操作や情報を得るための USB ポート、 USB 5V 電源を内部の 3.3V に変換する電源コンバータ、 リセットスイッチとプログラムブートスイッチ等を持ちます。 身近なものとしては、以下の秋月電子やスイッチサイエンスの開発ボードがあります。 どちらもソフトウェア開発には Arduino の標準開発環境がそのまま使えます。

秋月電子 ESP-WROOM-02 開発ボード

SWITCH SCIENCE ESP-WROOM-02 開発ボード

 

さて、実際に組み込む際に、 この開発ボードをそのまま使うことも出来ますが、 Arduino と同じ理由で無駄があります。 そこで開発ボードと同じ機能を持ったものを、 実際に組み込む ESP-WROOM-02 モジュールを使い、 ブレッドボードで作ることにしました。 プログラム開発後はプログラムが書き込まれた ESP-WROOM-02 モジュールをブレッドボードから引き抜いて、 そのまま実機に差して使います。

構成パーツ
ブレッドボード
FT231XS USB-シリアル変換ボード
TPS62827搭載 降圧コンバータ(3.3V/2A)
ESP-WROOM-02 ピッチ変換済みモジュール《フル版》(前出)
ブレッドボード用ジャンパー線

ブレッドボードにパーツをレイアウトした状態の ESP-WROOM-02 開発ボード
左側 USB 端子、リセットとブートのタクトスイッチ、黒い点線内は「遊び場」です

ジャンパー線で結線し完成です

サイズ感はこんな感じです

 

開発ボード回路、秋月電子の ESP-WROOM-02 開発キット等の回路も参考にしました。

 

開発環境セットアップとLチカまで 2023 July 14

  • Arduino 標準開発環境の「スケッチ」を使い Arduino としてプログラムします
  • ESP-WROOM-02 に最初に入っている AT コマンド群は使いません(消去されます)
  • 秋月電子の ESP-WROOM-02 開発キットの ドキュメント を参考にしながら進めました

 

スケッチのインストール
www.arduino.cc/en/software より、arduino-ide_2.1.1_Windows_64bit.exe をダウンロードし、 管理者として実行します。 メモ)私の場合インストール先は C:/Program Files/Arduino IDE/ としました。 最初の起動時に COM driver 等がインストールされるようです。 表示言語を日本語に変更しておきます。

 

スケッチのセットアップ
ファイル → 基本設定 → 追加のボードマネージャのURLに以下を1行記入しOKボタン
https://arduino.esp8266.com/stable/package_esp8266com_index.json
ツール → ボード → ボードマネージャより esp8266 を探し最新のバージョン 3.1.2 をインストール
ツール → ボード → esp8266 → Generic ESP8266 Module を選択
ツール → 下半分を秋月のドキュメントを参考に変更します

開発ブレッドボードとPCをUSB接続し、
Windows Device Manager でボードのシリアルポート番号を確認します。 (USB Serial(COM4)など)
ツール → ポート → そのポート番号 を選択します

 

Lチカのサンプルプログラムを実行
Lチカとは LED をチカチカ点滅させるだけの Hello World です。
void setup() {
  // put your setup code here, to run once:
  pinMode(5,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(5,HIGH);
  delay(100);
  digitalWrite(5,LOW);
  delay(100);
}
  • PGM ボタンを押した状態で RESET ボタンを一押しし PGM ボタンを離す
  • スケッチの「→」ボタンでプログラム転送開始
  • RESET ボタンを押すと転送したプログラムが起動
メモ)
IO15=0, IO2=1 に固定
IO0=0 で UART からのプログラム書き込みモード
IO0=1 で(プログラムを書き込んだ)Flash からの起動モード

以上ここまでハマることもなく大変スムーズに来ました。