ESP8266で独自のWi-Fi接続ボタンを作成する方法

ESP8266で独自のWi-Fi接続ボタンを作成する方法

モノのインターネットには、DIYの大きな可能性があります。十分なノウハウといくつかの安価なコンポーネントがあれば、接続されたデバイスの複雑なシステムを構築できます。





ただし、単純なものが必要な場合もあります。ベルやホイッスルはなく、1つのタスクを実行するボタンだけです。 Amazon Dashボタンを使用して日用品を再注文したことがある場合は、このようなことをすでにご存知かもしれません。





今日は、NodeMCUを使用してWi-Fi対応ボタンを作成し、IFTTTを使用して実行するようにプログラムします。必要に応じて、ビデオの後に書かれた指示。





必要なもの

必要になるだろう:

  • 1 x NodeMCU(ESP8266)ボード、 AliExpressで$ 2-3
  • 1x押しボタン
  • 1 x LED(オプション)
  • 1 x 220オーム抵抗(オプション)
  • ブレッドボードとフックアップワイヤー
  • プログラミング用マイクロUSB
  • ArduinoIDEがインストールされているコンピューター

NodeMCUとは別に、これらのパーツのほとんどはArduinoスターターキットで見つけることができるはずです。このチュートリアルでは、オプションのLEDと抵抗を使用していることを前提としていますが、これらは必須ではありません。



ステップ1:回路を設定する

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

紫色のワイヤーが付いています ピンD0 ボタンの片側に。緑のワイヤーはボタンの反対側を RSTピン 。青いワイヤーはから走っています ピンD1 抵抗器とLEDに。 LEDの負の脚はに接続します GNDピン NodeMCUの。





ブレッドボードを設定すると、次のようになります。

xbox360ハードドライブをインストールする方法

ほんの少しのケーブルを使ってLEDをアースピンに接続する方法がわからない場合は、 ブレッドボードクラッシュコース それを片付けるのに役立つはずです!セットアップを確認し、USB経由でNodeMCUをコンピューターに接続します。





ステップ2:IDEをセットアップする

コーディングを始める前に、いくつかの準備をする必要があります。まだ行っていない場合は、NodeMCUボードを認識するようにArduinoIDEをセットアップします。あなたはそれをあなたのボードリストに追加することができます ファイル>設定

このステップの詳細な説明は、NodeMCUの紹介記事にあります。

このプロジェクトには2つのライブラリが必要です。案内する スケッチ>ライブラリを含める>ライブラリを管理する 。検索する ESP8266WIFI IvanGrokhotkovによってインストールします。このライブラリは、NodeMCUボードとのWi-Fi接続を確立するために作成されています。

次の検索 IFTTTWebhook John Romkeyによって、最新バージョンをインストールします。このライブラリは、WebhookをIFTTTに送信するプロセスを簡素化するように設計されています。

必要な準備はこれですべてです。コードを作成しましょう。

コードのしくみ

を使用します ESP8266WIFI Wi-Fi接続を確立するためのライブラリ。 NS IFTTTWebhooks ライブラリはIFTTTにリクエストを送信します---この場合、Twitterに投稿します。次に、電力を節約するために、使用していないときはNodeMCUボードをスリープ状態にするように指示します。

ボタンを押すと、リンクされます D0RST ピン。これによりボードがリセットされ、プロセスが再度実行されます。

このチュートリアルのコードのほとんどは、初心者にとって十分に単純です。とは言うものの、始めたばかりの場合は、私たちをフォローした後の方がはるかに理解しやすいでしょう。 Arduino初心者ガイド

このチュートリアルでは、理解を助けるためにコードをチャンクで説明します。あなたがビジネスに直行したいなら、あなたは見つけることができます Pastebinの完全なコード 。それが機能するためには、このコードにWi-FiとIFTTTのクレデンシャルを入力する必要があることに注意してください!

ステップ3:深い睡眠をテストする

まず、深い睡眠がどのように機能するかを示す簡単なテストを作成します。 ArduinoIDEで新しいスケッチを開きます。次の2つのコードチャンクを入力します。

#include
#include
#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'

ここでは、スケッチで必要となるいくつかの変数を定義するとともに、ライブラリを含めます。ここでは、ledPinとwakePinの番号が、上記のフリッツの図とは異なることに気付くでしょう。 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ループを使用して開始するまで待機します。このコードはリセットボタンを押すとトリガーされるため、印刷します 「ボタンが押されました」 シリアルモニターに。次に、NodeMCUに、を接続するボタンが接続されるまでディープスリープに入るように指示します。 wakePinRST ピンが押されています。

最後に、テストのために、これをあなたの ループ() 方法:

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

通常、Arduinoスケッチはセットアップ後もループ機能を継続的に実行します。セットアップが終了する前にボードをスリープ状態にするため、ループは実行されません。

スケッチを保存してボードにアップロードします。シリアルモニターを開くと、次のように表示されます。 「ボタンが押されました。」 ボタンがトリガーされるたびに、ボードがリセットされ、メッセージが再度印刷されます。できます!

シリアルモニターについての注意

プロジェクトの中には、シリアルモニターに意味のない文字が表示されていることに気付いたかもしれません。これは通常、シリアルモニターをと同じボーレートに設定していないことが原因です。 Serial.begin(XXXX) 割合。

多くのガイドは、このようなプロジェクトでは、115200のボーレートでシリアル接続を開始することを提案しています。私は多くの組み合わせを試しましたが、それらはすべて、シリアルメッセージの前後でさまざまな程度のぎこちなさを持っていました。さまざまなフォーラムの投稿によると、これは障害のあるボードまたはソフトウェアの互換性の問題に起因する可能性があります。プロジェクトにそれほど悪影響を与えないので、私はそれが起こっていないふりをすることにしました。

Windows10をLinuxのように見せます

シリアルモニターに問題がある場合は、さまざまなボーレートを試して、どれが最適かを確認してください。

ステップ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() 呼び出されることはありません。 'ButtonPressed'メッセージとボードのスリープ状態の間にセットアップ関数への呼び出しを追加します。

connectToWifi();

これがどこに当てはまるのか疑問に思っている場合は、次のようになります。

スケッチの上部で、 ssidパスワード Wi-Fiクレデンシャルを持つ変数。スケッチを保存してボードにアップロードします。

これで、ボードが起動すると、セットアップ機能に戻る前に、Wi-Fiネットワークへの接続が試行されます。それでは、IFTTT統合を設定しましょう。

ステップ6:IFTTT統合の設定

IFTTTを使用すると、さまざまなWebサービスと統合できます。 Wi-Fi PCタワーのLEDチュートリアルでこれを使用して、新しい電子メールを受信するたびにアラートを送信しました。今日は、ボタンを押すだけでツイートを送信するために使用します。

に移動します 私のアプレット ページをクリックし、 新しいアプレット

クリック +これ に接続します Webhook 。選択する 「Webリクエストを受信する」 イベントに名前を付けます。 複雑にしないでおく !イベント名を書き留めておきます。後でNodeMCUコードに追加する必要があります。クリック 「トリガーの作成」

今選択 +それ 。検索する ツイッター サービスを提供して接続する--- Twitterアカウントに投稿することを承認する必要があります。選択する 「ツイートを投稿する」 そしてあなたのメッセージを選んでください。

次の画面では、アプレットを確認するように求められます。 [完了]をクリックします。それでおしまい!

ステップ7:コードにIFTTTクレデンシャルを追加する

Arduino IDEに戻り、定義した変数にIFTTTAPIキーとイベント名を追加する必要があります。 APIキーを見つけるには、次の場所に移動します 私のアプレット 選択します Webhookサービス タブ。選択する ドキュメンテーション キーにアクセスします。

キーとイベント名をコードにコピーし、それらに設定されている一時的な名前を置き換えます。

#define IFTTT_API_KEY 'IFTTT_KEY_GOES_HERE'
#define IFTTT_EVENT_NAME 'IFTTT_EVENT_NAME_HERE'

逆コンマはそのままにして、テキストを置き換えるだけであることに注意してください。

電話をかける間 connectToWifi() ボードをスリープ状態にして、IFTTTWebhookライブラリオブジェクトのインスタンスを作成します。 LEDは、ディープスリープが再開する前にタスクの完了を通知します。

映画を無料でオンラインでストリーミング登録なし
//just connected to Wi-Fi
IFTTTWebhook 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

のトリガーを呼び出す オブジェクトはIFTTTアプレットを起動し、Twitterアカウントに投稿する必要があります。スケッチを保存してアップロードします。これで、完全に機能するツイートボタンができました。

動作していないように見える場合は、コードとクレデンシャルを注意深くチェックして間違いがないか確認してください。本当に行き詰まった場合は、上から完全なコードを取得して、自分のコードと比較してください。

終わり!どうすればそれをさらに改善できますか?

これはWi-Fiボタンの基本バージョンですが、改善できる方法はたくさんあります。簡単にするために、ここではUSB接続を電源に使用しています。バッテリーはそれを完全に移動可能にし、回路を保持するケースは完璧な初心者の3D印刷プロジェクトになります。

ディープスリープを使用しているにもかかわらず、バッテリーがすぐになくなる場合があります。沢山あります Arduinoの省電力のヒント これらのタイプのプロジェクトに役立ちます。このチュートリアルよりも難しいですが、独自の電力を意識したArduinoを最初から作成した場合、バッテリー駆動のWi-Fiボタンは数か月続く可能性があります。

このプロジェクトは、スマートホームアプリケーションのリモコンに最適です。すでにかなりの量があります ホームオートメーションアプレット IFTTTで利用できます。基本を理解したら、ほぼすべてのセンサーまたはスイッチを使用して、想像できるほぼすべてのサービスをトリガーできます。

画像クレジット:Vadmary /

共有 共有 つぶやき Eメール 6つの可聴の選択肢:最高の無料または安価なオーディオブックアプリ

オーディオブックにお金をかけたくない場合は、無料で合法的にオーディオブックを聴くことができる優れたアプリをいくつか紹介します。

次を読む
関連トピック
  • DIY
  • Arduino
  • DIYプロジェクトのチュートリアル
著者について イアン・バックリー(216件の記事が公開されました)

Ian Buckleyは、ドイツのベルリンに住むフリーランスのジャーナリスト、ミュージシャン、パフォーマー、ビデオプロデューサーです。マッドサイエンティストになることを期待して、執筆中やステージ上にいないときは、DIYの電子機器やコードをいじっています。

イアン・バックリーのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください
カテゴリ Diy