\r\n\r\n

esp8266を使ったwi-fi接続ボタンの自作方法

このチュートリアルでは、nodemcuとiftttを使用してWi-fi対応ボタンを作成する方法を学びます...

モノのインターネットはDIYの可能性が大きく、十分な専門知識といくつかの安価な部品があれば、接続された機器の複雑なシステムを構築することができます。

しかし、時にはシンプルなものが欲しくなることもあります。ボタン1つで、ひとつの作業をこなす。アマゾンのダッシュボタンを使って日用品を再注文したことがある人なら、こんなことはもうお馴染みでしょう。

今日は、NodeMCU**をWi-Fiイネーブルボタンとして使い、IFTTを使って何でもできるようにプログラムしてみましょう。ご希望であれば、動画にしたがって指示を書いてください。

必要なもの

必要です。

  • NodeMCU (ESP8266) ボード 1枚 AliExpressで$2-$3。
  • 1ボタン
  • 1 x LED(オプション)
  • 220Ω抵抗×1(オプション)
  • テストボードと接続ケーブル
  • プログラミング用Micro-USB
  • Arduino IDEがインストールされたパソコン

NodeMCUを除けば、これらの部品のほとんどはArduinoの初心者向けキットに含まれているはずです。このチュートリアルでは、オプションのLEDと抵抗を使用することを前提としていますが、これらは必須ではありません。

ステップ1:回路の設定

このプロジェクトのハードウェアのセットアップは非常に簡単です。この図に従ってボードをセットアップしてください。

紫のリード線は、D0ピンをボタンの片側に接続します。緑色の線は、ボタンの反対側とRSTピンを接続します。青線はD1ピンから抵抗とLEDまで伸びており,LEDのマイナスピンはNodeMCUのGNDピンに接続されています。

テストプレートをセットするときは、次のようにします。

もし、私がこの小さなケーブルだけを使ってLEDをグランドピンに接続したことに疑問をお持ちでしたら、クイックラボボードクラッシュコースをご覧ください!このコースは、それをきれいにするのに役立ちます。設定を確認し、NodeMCUをUSBでパソコンに接続します。

ステップ2:イデの設定

コードを書き始める前に、いくつかの準備が必要です。まだお持ちでない方は、Arduino IDEでNodeMCUボードを認識するようにセットアップしてください。File" > "Preferences "からボードのリストに追加することができます。

この手順については、NodeMCU入門の記事でより詳しく説明しています。

このプロジェクトでは、2つのライブラリが必要です。Sketches" > "Include Libraries" > "Manage Libraries "に移動します。Ivan Grokhotkov氏が提供するESP8266WIFIを検索し、インストールします。本ライブラリは、NodeMCUボードとのWi-Fi接続を確立するために使用されます。

次にjohnromkeyさんが提供するifttwebhookを検索し、最新版をインストールします。IFTTTへのWebhooks送信処理を簡略化するためのライブラリです。

これでコーディングの準備は万端です!

コードの仕組み

ESP8266WIFIライブラリを使用してWi-Fi接続を確立します。 ifttwebhooksライブラリはIFTTTにリクエストを送信します。この場合、リクエストはTwitterに投稿されます。その後、NodeMCUボードは電力を節約するために未使用時にハイバネートするよう指示されます。

ボタンが押されると、D0ピンとRSTピンがリンクします。これにより、ボードがリセットされ、プロセスが再び行われます。

このチュートリアルのコードのほとんどは、初心者にとって十分シンプルなものです。とはいえ、これから始める方は、Arduinoビギナーズガイドをご覧になると、より理解しやすくなると思います。

このチュートリアルでは、理解を助けるために、コードを分割して紹介します。すぐにでも始めたい方は、Pastebinで全コードをご覧ください。正しく動作させるためには、このコードにWi-FiとIFTTTの認証情報を記入する必要があることに注意してください。

ステップ3:深い眠りのためのテスト

まず、深い眠りの仕組みを示す簡単なテストを作成します。ArduinoIDEで新しいスケッチを開きます。次の2つのコードブロックを入力します。

#include <IFTTTWebhook.h>#include <ESP8266WiFi.h>#define ledPin 5 #define wakePin 16#define ssid "YOUR_WIFI_SSID"#define password "YOUR_WIFI_PASSWORD"#define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE"#define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"

ここでは、ライブラリを含め、スケッチで必要となるいくつかの変数を定義しています。NodeMCUはArduinoボードとは異なるピン配置になっていることがわかります。しかし、この便利な図があれば、問題ありません。

ここで、セット関数を作成します。

void setup() { Serial.begin(115200); while(!Serial) { } Serial.println(" ");// print an empty line before and after Button Press Serial.println("Button Pressed"); Serial.println(" ");// print an empty line ESP.deepSleep(wakePin); }

ここでは、シリアルポートを設定し、whileループで起動を待ちます。リセットボタンを押すとこのコードが起動するので、シリアルモニターに「ボタンが押されました」と表示します。そして、wakePinとRSTピンを接続するボタンが押されるまで、NodeMCUにディープスリープに入るように指示します。

最後に、テスト用に、loop()メソッドに以下を追加します。

void loop(){ //if deep sleep is working, this code will never run. Serial.println("This shouldn't get printed");}

通常、Arduinoスケッチはセットアップ後、ループ関数を連続的に実行します。設定終了前にボードをスリープさせたため、ループが実行されることはありません。

スケッチを保存し、Blackboardにアップロードしてください。シリアルモニターの電源を入れると、「プッシュボタン」が表示されます。ボタンが作動するたびに基板がリセットされ、メッセージが再び印刷されます。効果あり!

シリアルモニターに関する注意事項

プロジェクトによっては、シリアルモニターに意味のない文字が表示されることがあります。これは、通常、シリアルモニターがシリアル番号と一致するように設定されていないことが原因です。スタート(XXXX)率。

多くのガイドでは、このようなプロジェクトでは、ボーレート115200でシリアル接続を開始することを推奨しています。いろいろな組み合わせを試しましたが、どれもシリアルメッセージの前後に程度の差こそあれ、ちんぷんかんぷんな文章が表示されます。様々なフォーラムの投稿によると、これはボードの不具合やソフトウェアの互換性の問題が原因である可能性があるとのことです。プロジェクトにはあまり影響しないので、なかったことにすることにしました。

シリアルモニターに問題がある場合は、ボーレートを変えてみて、どのボーレートが一番適しているかを確認してください。

ステップ4:wi-fiに接続する

次に、Wi-Fiネットワークに接続する機能を作成します。

void connectToWifi() { Serial.print("Connecting to: SSID NAME"); //uncomment next line to show SSID name //Serial.print(ssid); WiFi.begin(ssid, password); Serial.println(" ");// print an empty line Serial.print("Attempting to connect: "); //try to connect for 10 seconds int i = 10; while(WiFi.status() != WL_CONNECTED && i >=0) { delay(1000); Serial.print(i); Serial.print(", "); i--; } Serial.println(" ");// print an empty line //print connection result if(WiFi.status() == WL_CONNECTED){ Serial.print("Connected."); Serial.println(" ");// print an empty line Serial.print("NodeMCU ip address: "); Serial.println(WiFi.localIP()); } else { Serial.println("Connection failed - check your credentials or connection"); }}

この方法は、1秒間隔で10回ネットワークへの接続を試みます。接続の成否は、シリアルモニターに出力されます。

手順5:接続メソッドを呼び出す

さて、connectToWifi()は絶対に呼ばないでください。ボタンを押す」メッセージとボードのスリープ送信の間に、セットアップ機能の呼び出しを追加する。

connectToWifi();

適合するものを知りたい場合は、このように表示されるはずです。

スケッチの上部で、変数ssidとpasswordをWi-Fi認証情報に置き換えます。スケッチを保存して、Blackboardにアップロードします。

これで、ボードが起動すると、Wi-Fiネットワークへの接続を試みてから、設定機能に戻ります。では、IFTTTとの連携を設定しましょう。

ステップ6: iftttの統合を設定する

IFTTTでは、数多くのウェブサービスとの連携が可能です。Wi-Fi PC Tower LEDのチュートリアルでは、新しい電子メールを受信したときにアラートを送信するために使用しました。今日はそれを使って、ボタン一つでつぶやきを送信してみましょう。

My Apps "ページに移動し、"New App "を選択します。

これをクリックし、Webhookに接続します。「Receive web requests」を選択し、イベントに名前を付けます。シンプルにイベント名をメモしておいてください。後でNodeMguのコードに追加する必要があります。トリガー作成」をクリックします。

ここで、「+that」を選択します。Twitterサービスを検索し、接続します。Twitterアカウントへの投稿を許可する必要があります。ツイートを投稿する」を選択し、メッセージを選択します。

次の画面でアプレットを表示するように指示されるので、"Finish "をクリックします。

ステップ7:コードにiftttの認証情報を追加する

Arduino IDEに戻って、IFTTTのAPIキーとイベント名を定義変数に追加する必要があります。APIキーを見つけるには、My Appletsに移動して、ServicesタブのWebhooksを選択します。Documentsを選択し、キーにアクセスします。

キーとイベントの名前をコードにコピーして、設定した一時的な名前に置き換えます。

#define IFTTT_API_KEY "IFTTT_KEY_GOES_HERE"#define IFTTT_EVENT_NAME "IFTTT_EVENT_NAME_HERE"

なお、反転したカンマはそのままにして、テキストのみを置き換える必要があります。

ifttWebHookライブラリオブジェクトのインスタンスは、connectToWifi()の呼び出しから回路基板をハイバネーションに送るまでの間に生成されます。LEDはタスクが完了したことを示すと、再びディープスリープを開始します。

//just connected to Wi-FiIFTTTWebhook hook(IFTTT_API_KEY, IFTTT_EVENT_NAME);hook.trigger();pinMode(ledPin, OUTPUT);digitalWrite(ledPin, HIGH); delay(200); digitalWrite(ledPin, LOW); //now sending board to sleep

hookオブジェクトにtriggerを呼び出すと、IFTTTアプレットが起動し、Twitterアカウントに公開されるはずです。スケッチを保存し、アップロードします。これで、ツイートボタンが完全に機能するはずです。

うまくいかないようであれば、コードと認証情報にエラーがないか再確認してください。もし、行き詰まった場合は、上記からフルコードを取得して、自分のコードと比較してみてください。

できた!どうすればさらに良くなるのか?

これはWi-Fiボタンの基本バージョンですが、いろいろと改良の余地があります。ここではわかりやすくするために、USB接続で電源を供給しています。バッテリーで十分な可動性を確保し、回路を収納するケースを用意すれば、3Dプリントの初心者に最適です。

ディープスリープを使用しているにもかかわらず、電池の消耗が激しいと感じることがあります。このようなプロジェクトでは、Arduinoの省エネのヒントがたくさんあります。このチュートリアルよりも難しいですが、電力を意識したArduinoでゼロから**始めると、電池駆動のWi-Fiボタンが数ヶ月持つようになるかもしれません!

このプロジェクトは、スマートホームアプリケーションの遠隔操作を完璧なものにします。すでにIFTTTでは、相当数のホームオートメーションアプレットが公開されています。基本を押さえれば、ほとんどすべてのセンサーやスイッチを使って、思いつく限りのサービスを起動させることができます。

写真提供:Vadmary/Hosting photos

  • 2021-03-23 22:23 に公開
  • 閲覧 ( 55 )
  • 分類:IT

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ