【ESP32入門】ESP32をArduino IDEで遊ぶ!【2回目】

2023/01/08

ESP32 HOW2 レベルメーター 電子工作

t f B! P L
レベルメータ作成のまとめはこちら

はじめに

どうもtakaです。
ESP32マイコンモジュールをArduino IDEで遊ぶ2回目です。
前回は準備(ハード編)を投稿しました。今回は準備(ソフト)+試運転です!
それでは行ってみよ~

そもそもマイコンってなに?どうやって遊ぶの?

マイコンは小さなコンピュータの総称と思ってください。
ESP32もマイコンの一つです。
モジュールには剣山の如く沢山のピンが並んでいます。

このピン一つ一つを自在に操ることでアイディアを形にしていきます。
例えば、
    ・ピンにLEDを接続し点灯を自由自在にコントロール
    ・ピンにポンプを接続し水のくみ上げを自由自在にコントロール!
こんなことが出来ます。
さらに、WiFiやBluetooth経由でのリモート操作なんかも簡単に出来ちゃいます👏

Arduino IDEってなに?

ArduinoはESP32と同様にマイコン(ハードウェア)の名称です。IDEとは統合開発環境(ソフトウェア)の総称で、Arduino IDEはArduino向けの無料の統合開発環境ということです。

ん?ESP32の開発にArduinoのIDEを使うの?ん?

ESP32はArduinoの開発と同じ感覚で開発できる仕組みが用意されているためArduinoのIDEが使用可能です。公式の開発環境はESP-IDFです。

なぜ公式のESP-IDFを使用しないの?天邪鬼?

Arduino IDEを使用するメリットは
・シンプルなUI
・Arduino向けプログラムの多くがそのままESP32でも使用できる
ことにあります。
Arduinoのサンプルプログラムは豊富にありますので2番目のメリットは強力です。

ESP-IDFで開発するメリットは
・プログラムがESP32に最適化されている(例えば動作速度が速い)
があげられるかなと思います。

準備

※ESP32モジュールはまだPCに接続しないでください。

IDEの準備

インストール

①インストーラは こちらの公式ページ からダウンロードできます。
※現時点2.0系と1.8系がありますが今回は1.8系で説明します。
(2.0系はプロキシ環境だとそのままでは起動できない等の難点があります)

②WindowsユーザはWindows Win 7 and newerを選択します。
私はUbuntuなのでLinuxを選択しました。

JUST DOWNLOADでインストーラをダウンロードできます。
寄付される方はCONTRIBUTE&DOWNLOADからどうぞ。


④ダウンロードしたインストーラーを開き"Next"連打でインストールします。

初期設定

初期状態ではESP32は扱えませんのでIDEにESP32のボード情報を追加します。
①ESP32のボード情報がある場所を設定
ファイル=>環境設定


”追加のボードマネージャのURL:”の枠に
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
を入力します。
枠が空白ではない場合は枠の右側のボタンをクリックし、開いた画面に上記URLを追記します。

②ボード情報をインストール
ツール=>ボード=>ボードマネージャ
でマネージャを起動します。
(画像ではボード:"ESP32 Dev Module"と表示されていますが無視してください)

起動したマネージャーで"ESP32”と入力しバージョンを指定しインストールをクリックします。
バージョンはとりあえず最新で構いません。

以上でボード情報の追加完了ですのでIDEを一度閉じ再起動しましょう!

ESP32の接続確認

①ボードの指定、②COMポートの確認、③ESP32を接続、④COMポートの確認の流れで接続確認します。

①ボードの指定
IDEを起動し使用するボードとしてESP32を指定します。

②COMポートの確認
ESP32を接続していない状態のCOMポートの内容をメモします。
(COMポートとは機器を接続するPCの口(クチ)だと考えてください)

シリアルポートに表示されている内容をメモしてください。
画像の例ではCOM1が表示されています。
何も表示されていない場合もありますが正常です。

③ESP32を接続
USBケーブルを用いESP32とPCを接続してください。接続時にPCにドライバーのインストール云々が表示された場合はインストールします。

④COMポートの確認
再度COMポートを確認し②でメモした内容に対してポートが追加されていることを確認します。
COM3が追加されています。
これが接続したESP32です。

以上で接続確認が完了です。次はいよいよESP32を動かしてみます。

動かしてみる!

LEDを接続しESP32にプログラムを焼きこみ点灯させてみます。

LEDの接続

ESP32、LED、抵抗を接続します。(抵抗はLEDを保護するためです)
LEDの2本の足は極性があります。
足の長い側(もしくはレンズのフチが欠けている側)がA、反対側をKとします。
接続方法は

・AをESP32の5番ピンに接続
・Kを1[kΩ]程度の抵抗に接続
・抵抗の残りの足をESP32のGNDピンに接続

です。ブレッドボードを用いて接続した状態が下の写真です。
ブレッドボードは青い線で示すように内部で接続されています。
便利!電子工作には必須です。

抵抗もブレッドボードも持ってないよ!という方は抵抗やブレッドボードがセットになったこちらが便利です!

サンプルプログラムを作成する

説明は後回しにして、下記をIDEにコピペし保存してください。
void setup() {
  	pinMode(5, OUTPUT);
}
void loop() {
	digitalWrite(5, HIGH);
}
		

焼きこむ

IDEの右矢印ボタンを押して書き込みます。
正常に書き込みができるとこのような画面になります。

※Connecting....でエラーが出てしまう場合
基板のBootボタンを押したまま焼きこみを行ってください。
もし、この方法でうまくいく場合で毎回Bootボタンを押すのが面倒な方は、
ENピンとGND間に10[uF]程度の電解キャパシタを接続します。
これでボタンを押すことなく書き込めるようになります。
(電解キャパシタは有極性です。マイナス側をGNDに接続してください。)

無事書き込みが完了するとESP32が動作を開始しLEDが点灯するはずです!

説明

プログラムはC言語で作成しています。(正確にはC++ライクな言語です)
C言語はざっくり説明すると、私が日本語を話すように、コンピュータにも理解できる言語がいくつか存在します。その一つを指します。
後ほど詳しく書きますが、私は”言語の理解はふんわりでよい”と考えておりますので、プログラムの説明もふんわりとしています。

先ほど示したプログラムはC言語で書かれたESP32の最もシンプルな構図です。
ざっくりとこんな感じです↓
void setup(){}:電源ON直後に{}内が1度だけ実行されます。
void loop(){}:{}内を繰り返し実行します。
pinMode(5, OUTPUT):5番ピンの動作モードを出力モードに設定します。
digitalWrite(5, HIGH):5番ピンにHIGHを出力します。(HIGH=3.3[V]=LEDが点灯!)
※LOWを指定するとLEDが消灯します(後述)。

サンプルを改造する

マイコンのプログラミングを行うステップは大きく分けて2ステップあります。
・主言語の理解(今回はC言語)
・マイコン固有関数の理解

これについて下記サンプルプログラムを通して説明します。
void setup() {
	pinMode(5, OUTPUT);
}

void loop() {
	int cnt;
	for(cnt=1;cnt<10;cnt++){
		digitalWrite(5, HIGH);
		delay(500);
		digitalWrite(5, LOW);
		delay(500);
	}
	while(true){}
}
		
こちらを実行するとLEDが点滅するはずです。いかがでしょうか?

マイコンプログラミングで大切な事

これ以降は個人的な考えですので適当に読み飛ばしてください。
プログラミング恐怖症の方の救いになればと思い書いていきます。
(本来クリエイティブでとても楽しいことなのです)

言語の理解はふんわり(=適当)でよいと説明したことについて書きたいと思います。
理由はいくつかあるのですが

プログラミングとは日常会話と同様であり、
”言語の文法や関数は非常に多くあり、かつ、アップデートも頻繁”
なため、
”記憶するよりも随時調べる方が効率的”
と考えているからです。

日常会話を思い浮かべてください。

常に文法を意識して会話していますか?
広辞苑を丸暗記してから会話していますか?

そのような方は稀と思います。オフィシャルな場面でのスピーチをお願いされたら正しい文法や言い回しを調べて文章を組み立てると思いますし、会話で知らない単語に出会えば辞書で調べたり、文脈から意味を推定したりしていますよね。

マイコンプログラミングも同じです。
主言語(日常会話であれば日本語)の文法と関数(標準語)をざっくり理解し、
マイコン固有の関数(方言)をざっくり理解すれば十分です。
(何か間違いがあればPCが丁寧に教えてくれますし)

主言語とマイコン特有の関数の組み合わせで成り立っていることさえ知っていれば十分かと思います。

主言語(C言語)について

全ては説明できませんが、”{}”や";"はC言語の文法です。
”int”、"for"、"while"もです。
文法に加え関数なんかもあります。

マイコン特有の関数について

setup()やloop()はArduino特有の関数です。digitalWrite()やdelay()もです。


このように、マイコンプログラミングは主言語とマイコン特有の情報をレゴブロックの様に組み立てることで出来上がっています。
マイコンプログラミングで大切なことはこの点を知っておくことだと思います。
(例えばC言語とマイコン特有に同じ名称の命令がある場合、誤ってC言語の仕様を調べてしまうなんてことになりかねませんので。ただし、くどい様ですが、調べた仕様を完全に理解したり覚えておく必要は無いです。)

グダグダと書いてしまいましたが最後までありがとうございました!!!

次回は高性能なLEDの制御を行います!乞うご期待!

全投稿のまとめページはこちら

中の人

自分の写真
モノ作りが好きです。GUIアプリの作成からアナログ回路まで手当たり次第です。 アンプの修理を紹介するためにブログを始めました。 (Twitter:@TakaElc)

記事カテゴリ

5M21 (10) A-6 (5) A-717 (2) A-950 (1) AB級 (8) Arduino (2) A級 (29) C-21 (1) C29 (1) ESP32 (9) EUMIG (13) FFT (2) HOW2 (6) LED (2) LUXMAN (10) M-1000 (13) M-22 (23) MATLAB (1) mcintosh (1) MCP3208 (3) OPアンプ (1) Pioneer (26) QUAD (1) Simulink (1) WS2812B (4) YAMAHA (6) アンプ (62) スピーカ (3) プリ (1) プリアンプ (1) プリメイン (6) レベルメーター (8) 化石 (1) 山水 (3) 自作アンプ (7) 電子工作 (20) 日記 (1)

QooQ