【ESP32でAmazon自動注文ボタン】ボタンを作る(はんだ付けはあとで)

DIY
スポンサーリンク

Amazon自動注文ボタンをESP32で作ろうとしています。
本記事はESP32で自作ボタンを作る手順をまとめました。
※本記事はESP32でボタンクリックを検出する手順をまとめています。AWS IoT Coreとの接続は次の手順でまとめる予定です。

●開発環境
(自作ボタンへのプログラム書込み、TeraTermでプログラムの画面出力)
・Windows 10 Home Ver.21H1
・Arduino IDE 1.8.12
・Tera Term Version 4.104(SVN# 8043)
●自作ボタン
・ESP32-DevKitC ESP-WROOM-32開発ボード

 

目次

 


 

はじめに

本記事は「ESP32でAmazon自動注文ボタン」の作成手順をまとめた連載記事の1つです。

前の手順

【ESP32でAmazon自動注文ボタン】AWS IoT CoreでAWS IoT deviceを作成する
Amazon自動注文ボタンをESP32で作ろうとしています。 本記事はAWS IoT CoreでESP32をIoTデバイス(モノ)として登録する手順をまとめました。

 

次の手順

【ESP32でAmazon自動注文ボタン】AWS IoT Coreと自作ボタンを接続する
Amazon自動注文ボタンをESP32で作ろうとしています。 本記事はAWS IoT Coreと自作ボタンを接続する手順をまとめました。

 

手順全体や関連情報まとめ

 

 

 

HW回路図とプログラム

HW回路図

ボタンクリック時のチャタリング対策として、「スイッチと平行にコンデンサを挿入」しています。

以下のブログを参考にチャタリング対策をしました。
スイッチが複数回押される現象を直す、チャタリングを対策する【逆引き回路設計】

 

サンプルプログラム


/***** パラメータ(ご自分の環境に合わせてください) *****/
const byte INPUT_PIN = 5;

/***** メインプログラム *****/
void setup() {
  Serial.begin(9600);
  Serial.println("Hello!");
  // ボタン検出機能の初期化処理を実行
  setup_button();
}
 
void loop() {
  // ボタン検出機能のループ処理を実行
  loop_button();
}

/***** ボタン検出機能 関連プログラム *****/
byte interruptState = 0;
unsigned long msTime;

// ボタン検出機能の初期化処理
void setup_button(){
  // Digital Pin設定
  pinMode(INPUT_PIN, INPUT);
  
  // 割り込み設定:入力ピン、割り込みハンドラ、割り込み条件はHIGH→LOW
  attachInterrupt(digitalPinToInterrupt(INPUT_PIN), switchON, FALLING);
  msTime = millis();
}

// ボタン検出機能のループ処理
void loop_button(){
  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を設定しています。ご自分の環境に合わせてください。
  • 本プログラムはESP32でボタンクリックを検出する機能のみ実装しています。AWS IoT Coreとの接続は次の手順でまとめる予定です。

参考:
Arduinoで割り込み処理

 

開発環境の準備

Windows10 PCに以下のソフトウェアをインストールします。

  • Arduino IDE
  • Tera Term

 

Arduino IDEをインストール

Arduinoの公式ページ「https://www.arduino.cc/en/software」にアクセスして、Arduino IDEをインストールしてください。

インストール手順は以下のブログが分かりやすいです。

Arduino IDEのインストールと設定 (Windows, Mac, Linux対応) – Indoor Corgi

 

Tera Termをインストール

Arduinoに書き込んだプログラムの画面出力用にTeraTermを使います。
TeraTermプロジェクトの公式ページ「https://ja.osdn.net/projects/ttssh2/」にアクセスして、TeraTermをインストールしてください。

インストール手順は 以下のブログが分かりやすいです。

【ゼロからわかる】Teratermのインストールと使い方
Teratermは多機能端末だ。サーバにリモート接続するときなどによく使われる。このページではTeratermのインストールや使い方についてご紹介しよう。

 

Arduino IDEにESP32のボードマネージャを追加する

Arduino IDEのデフォルト設定ではESP32のボードマネージャ(PCからESP32を操作するためのソフトウェア群みたいなもの)がインストールされていないです。
以下の手順でESP32のボードマネージャをArduino IDEに登録します。

  1. Arduino IDEを起動する。
  2. Arduino IDEの上部にあるメニューから[ファイル > 環境設定]で環境設定ウィンドウを開く。
  3. 「追加のボードマネージャのURL:」のところに「https://dl.espressif.com/dl/package_esp32_index.json」を入れる。
  1. Arduino IDEの上部にあるメニューから[ツール > ボード > ボードマネージャ]でボードマネージャウィンドウを開く。
  2. 「ESP32」と検索をして、「esp32 by Espressif Systems」をインストールする。
  1. Arduino IDEの上部にあるメニューから[ツール > ボード > ESP32 Dev Module]で、ボードをESP32 Dev Moduleに選択する。
  2. ESP32-DevKitC-32Dボードのボード情報として、以下のように設定をする。

 

参考:
ESP32-DevKitC-32Dボードの基本的な使い方 ~Arduino IDE編~

 

ESP32にプログラムを書き込む

  1. Arduino IDEに冒頭で紹介したプログラムを書き込む。
  2. ESP32を接続して、Arduino IDEの上部にあるメニューから[ツール > シリアルポート]でESP32のCOMポートを指定する。
    ※COMポートはデバイスマネージャで確認できます。
  1. Arduino IDEの右上にある「マイコンボードに書き込む」ボタンをクリックする。
  2. Arduino IDEの下部に「ボードへの書き込みが完了しました。」と表示されればOK。

 

ボタンを検出できるか、確認する

  1. 冒頭で紹介した回路図を組み、Arduinoと接続する。
  2. Teratermを開くと「新しい接続」ウィンドウが開くので、シリアルを選択して、ESP32のポートを指定する。
  3. 自作ボタンをクリックする。
  4. Teratermで以下のように「Button ON!!!」と表示されるはずです!

※最初の方が文字化けしているのは「起動時のシリアルポートの速度(74880bps)が違うから」なんだそうです。今回は気にしなくてよいかと思います。(「ESP8266の起動時に文字化けしているメッセージをちゃんと読みたい」より)

 

もし、その他のところで文字化けしたら以下を試してください。

  1. Teratermを開き、[設定 > シリアルポート]で「シリアルポート設定」ウィンドウを開く。
  2. 以下にように設定をする。

 

さいごに

「ESP32でAmazon自動注文ボタン」に向けて、ESP32で自作ボタンを作りました。
引き続き、「ESP32でAmazon自動注文ボタン」の作成手順をまとめています。

前の手順

【ESP32でAmazon自動注文ボタン】AWS IoT CoreでAWS IoT deviceを作成する
Amazon自動注文ボタンをESP32で作ろうとしています。 本記事はAWS IoT CoreでESP32をIoTデバイス(モノ)として登録する手順をまとめました。

 

次の手順

【ESP32でAmazon自動注文ボタン】AWS IoT Coreと自作ボタンを接続する
Amazon自動注文ボタンをESP32で作ろうとしています。 本記事はAWS IoT Coreと自作ボタンを接続する手順をまとめました。

 

手順全体や関連情報まとめ

 

以上!

コメント

タイトルとURLをコピーしました