こんな疑問について、今回はお手軽に開発できる「ESP32」を紹介したいと思います。
お手軽組み込み開発「ESP32」解説
どうお手軽?
どうお手軽かを以下にまとめてみました。
その①:プログラムの書き込みが簡単
PCとUSBで接続するだけで、プログラムの書き込みが出来ます。
その②:すぐ動作確認できる
プログラムの書き込みが簡単なので、書き込み完了後にすぐ動作確認出来ます。
その③:はんだごてを使わなくてもだいたいOK
ピンが既に出ているため、モジュールとの接続は、ジャンパワイヤーと呼ばれるもので接続可能です。
ソフトウェア人にとっては地味にうれしいです。
その④:安い
マイコン付きでUSB接続して書き込み可能な基板なのに低価格で提供されているのはうれしいです。
その⑤:コンパクト
簡単な試作にはもってこいです。
余談になりますが、BLEやWiFiも使えたりするので、スマフォやネットワーク経由でPCアプリにデータを表示したりと、デモ表示にも振り幅があっていいですよね。
実践
簡単なUART通信まで実践してみたいと思います。
開発環境
開発環境は、大きく3つほどあります。
今回は、WindowsPCで、Arduino IDEというソフトで実践したいと思います。
Arduino IDE(C言語)
一番メジャー。ライブラリが豊富で大抵のことはできます。
ESP-IDF(C言語やpython)
もっと細かいことや複雑なことを行いたい場合に利用する感じでしょうか。
(大きなプロジェクトだと、ビルド時間がかかり過ぎてしんどい。SSDじゃないときつい)
micropython(python)
pythonで開発できることが一番の魅力。
Windowsで行いたい場合、VMwareなどソフト上でLinuxを動かして、そこにインストールして使う感じです。
(Linux慣れてないとしんどい)
ArduinoIDEのインストール
Windows版は、Installerでインストール方法と、zipでインストールする方法があります。
Arduino IDEの古いバージョンも開発したい人など、複数の環境で使用したい場合は、zipファイルを選ぶ感じです。
今回は、Installerで行います。
以下Arduinoホームページへアクセス
ダウンロード
・メニュー[SOFTWARE]-[DOWNLOAD]選択
・少し画面をスクロールすると、「Download the Arduino IDE」
・「Windows Installer, for Windows 7 and up」(Windows7以降のインストーラ)をクリック
ダウンロードからインストールまで行います。
ArduinoIDEの初期設定
1.ボードマネージャのURL設定
これは、次の項目の「ボードマネージャ」で、ESP32やESP8266のライブラリをインストール出来るようにするための設定になります。
1-1. メニュー[ファイル]-[環境設定]を選択
1-2. [追加のボードマネージャの URL:] に以下文字列を追加。
追加元の文字列は、以下URLにあります。
https://github.com/espressif/arduino-esp32
のページ内にある「Instructions for Boards Manager」のリンクをクリック。
Stable release link:(安定版)に記載されているパスをコピーして、[追加のボードマネージャの URL:]に貼りつけます。
現バージョンでは、以下の文字列。バージョンによって文字列が変わるかも
「https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json」
(現段階 1.6.4以降)
2.ESP32ライブラリの取得
2-1. メニュー[ツール]-[ボード:xxxx]-[ボードマネージャ…]を選択
2-2. “esp32″と入力すると、”esp32 by Espressif Systems”がリストに表示。
インストールボタン押下
以上で、環境の準備が完了です。
プログラム構成
さっそく新規で作成してみます。すると以下2つの空の関数が生成されます。
・setup()関数:1番最初に1回だけ呼ばれる
void setup() {
// put your setup code here, to run once:
}
・loop()関数:setup()の後に呼ばれる
void loop() {
// put your main code here, to run repeatedly:
}
永久に繰り返し呼ばれる。
(loop()を抜けたら、すぐloop()が呼ばれる)
例えば、1秒周期で動かしたい場合は、「delay(1000);」を入れる。
サンプルプログラム
USBシリアルで送信した文字を表示するサンプルになります。
void setup() {
// シリアル通信初期化(9600bpsに設定)
Serial.begin(9600);
}
void loop() {
// 受信データが存在している?
if(Serial.available()){
// 受信データをそのまま送信
Serial.write(Serial.read());
}
}
「Serial」というオブジェクトは、デフォルトでUSBシリアルポートが設定されているので、USBシリアルポートの細かい設定は省略可能となってます。
プログラムの書き込み手順
書き込み手順は以下の通りです。基板によって微妙に操作が違ったりしますが。
基本、転送が始まったらボタンを離すという形になります。
- IO0 (FLASH / KEY / BOOT) ボタンを押しっぱなしにする
- EN (RST / RESET) ボタンを押して離す
- スケッチをコンパイル&転送 ([マイコンボードに書き込む] ボタンを押す)
- 転送が始まったら IO0 ボタンを離す
- 書き込みが完了したら、EN ボタンを押して離す(リセット。別にやらなくてもいい)
動作確認
- メニュー[ツール]-[シリアルポート]で、COMポート番号を選択
ESP32をUSB接続すれば、COMポート番号の項目が増えているので、その番号を選ぶ。 - ArduinoIDE画面右上にある虫眼鏡アイコン(メニュー[ツール]-[シリアルモニタ])をクリック
- 右下の「bps」を、「9600bps」を選択
- 送信テキストボックスに何か文字を入力して、「送信」ボタンを押下
- すると、受信テキストボックスに入力した文字が表示される。
最後に
いかがでしたでしょうか?
他にも、BLEやWiFiも使えたりするので、スマフォやPCアプリにデータを表示したりと、デモ表示にも使えたりと利用範囲も広いです。
ファームウェア開発がお手軽で身近に、そして安価で体験できることを実感して頂けたらと思います。