ESP32でAmazon自動注文ボタンを作れないかと模索中です。
ボタン側のプログラムのベースとして、
ESP32にボタンをつなげて、それをクリックしたら「Button ON!!!」と画面に表示してくれるプログラムをつくりました。
目次
はじめに HW回路図とプログラム
HW回路図
ボタンクリック時のチャタリング対策として、「スイッチと平行にコンデンサを挿入」しています。
以下のブログを参考にチャタリング対策をしました。
・スイッチが複数回押される現象を直す、チャタリングを対策する【逆引き回路設計】
サンプルプログラム
const byte INPUT_PIN = 5;
byte interruptState = 0;
unsigned long msTime;
void setup() {
Serial.begin(9600);
// Digital Pin設定
pinMode(INPUT_PIN, INPUT);
// 割り込み設定:入力ピン、割り込みハンドラ、割り込み条件はHIGH→LOW
attachInterrupt(digitalPinToInterrupt(INPUT_PIN), switchON, FALLING);
msTime = millis();
Serial.println("Hello!");
}
void loop() {
if(interruptState) {
if((millis() - msTime) > 1000) {
Serial.println("Button ON!!!");
msTime = millis();
}
interruptState = 0;
}
}
// 割り込みハンドラ
// IMPUT_PIN HIGH→LOW
void switchON() {
interruptState = 1;
}
INPUT_PIN
はGPIO5を設定しています。ご自分の環境に合わせてください。
開発環境の準備
Windows10 PCに以下のソフトウェアをインストールします。
- Arduino IDE
- Tera Term
Arduino IDEをインストール
Arduinoの公式ページ「https://www.arduino.cc/en/software」にアクセスして、Arduino IDEをインストールしてください。
インストール手順は以下のブログが分かりやすいです。
Tera Termをインストール
Arduinoに書き込んだプログラムの画面出力用にTeraTermを使います。
TeraTermプロジェクトの公式ページ「https://ja.osdn.net/projects/ttssh2/」にアクセスして、TeraTermをインストールしてください。
インストール手順は 以下のブログが分かりやすいです。
Arduino IDEにESP32のボードマネージャを追加する
Arduino IDEのデフォルト設定ではESP32のボードマネージャ(PCからESP32を操作するためのソフトウェア群みたいなもの)がインストールされていないです。
以下の手順でESP32のボードマネージャをArduino IDEに登録します。
- Arduino IDEを起動する。
- Arduino IDEの上部にあるメニューから[ファイル > 環境設定]で環境設定ウィンドウを開く。
- 「追加のボードマネージャのURL:」のところに「https://dl.espressif.com/dl/package_esp32_index.json」を入れる。
- Arduino IDEの上部にあるメニューから[ツール > ボード > ボードマネージャ]でボードマネージャウィンドウを開く。
- 「ESP32」と検索をして、「esp32 by Espressif Systems」をインストールする。
- Arduino IDEの上部にあるメニューから[ツール > ボード > ESP32 Dev Module]で、ボードをESP32 Dev Moduleに選択する。
- ESP32-DevKitC-32Dボードのボード情報として、以下のように設定をする。
参考:
・ESP32-DevKitC-32Dボードの基本的な使い方 ~Arduino IDE編~
ESP32にプログラムを書き込む
- Arduino IDEに冒頭で紹介したプログラムを書き込む。
- ESP32を接続して、Arduino IDEの上部にあるメニューから[ツール > シリアルポート]でESP32のCOMポートを指定する。
※COMポートはデバイスマネージャで確認できます。
- Arduino IDEの右上にある「マイコンボードに書き込む」ボタンをクリックする。
- Arduino IDEの下部に「ボードへの書き込みが完了しました。」と表示されればOK。
ボタンを検出できるか、確認する
- 冒頭で紹介した回路図を組み、Arduinoと接続する。
- Teratermを開くと「新しい接続」ウィンドウが開くので、シリアルを選択して、ESP32のポートを指定する。
- 自作ボタンをクリックする。
- Teratermで以下のように「Button ON!!!」と表示されるはずです!
※最初の方が文字化けしているのは「起動時のシリアルポートの速度(74880bps)が違うから」なんだそうです。今回は気にしなくてよいかと思います。(「ESP8266の起動時に文字化けしているメッセージをちゃんと読みたい」より)
もし、その他のところで文字化けしたら以下を試してください。
- Teratermを開き、[設定 > シリアルポート]で「シリアルポート設定」ウィンドウを開く。
- 以下にように設定をする。
以上!
コメント