Arduino-Web経由で電球を制御
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
このプロジェクトについて
最近では、Webを介した制御が一般的になっています。この簡単なプロジェクトでは、Webを介して電球を制御するアプリケーションを作成する方法を紹介します。
確かにそれは新しいことではありませんが、Webベースの制御機能は、自分でそれを行うためにほんの数ステップしか実行できないことがわかります。 Webプログラミングについてある程度の知識がある人なら誰でも、デバイスを制御/監視するためのWebベースのアプリケーションを作成できます。
ここでデモを見ることができます:
ハードウェアコンポーネント
まず、ハードウェアをセットアップします。ここでは、Arduino Unoボード、PHPoC WiFiシールド、およびPHPoCArduinoリレーボードを使用しています。
<図>
仕組み
次に、「Webベース」の部分になります。 PHPoC Shieldと組み合わせると、ArduinoボードはWebサーバー/ WebSocketサーバーになりました。したがって、基本的に必要なものは次のとおりです。
+クライアント側コード :電球を制御するためのWebベースのユーザーインターフェイスを提供します。 UIは、ユーザーが制御コマンドをWebサーバー(Arduinoボード)に送信できるようにする必要があります。 UIには、サーバーからの応答で送信された電球のステータスも表示されます。このWebページのソースコードはシールドにアップロードする必要があります。 Webブラウザ(Webクライアント)からHTTPリクエストを受信すると、シールド(Webサーバー)は解釈されたWebファイルをWebブラウザに送信します。
+サーバー側コード :Webブラウザから送信されたデータに基づいて電球を制御します。コードはArduinoボード上で実行され、フローはループにすぎません。電球をオン/オフするようにリレーを設定するためにWebクライアントからの要求があるかどうかを確認してから、電球のステータスをWebブラウザーに送信します。 。
このプロジェクトでは、電球を表示するためのSVG要素と、Webから制御コマンドを送信するためのボタンを作成しました。 WebブラウザとWebサーバーは、WebSocketを介して相互に通信します。 WebSocket接続はリアルタイムアプリケーションに適しています。
UIの作成に多くの労力を費やすほど、UIの見栄えが良くなる可能性があります。しかし、心配しないでください。インターネット上にはたくさんの共有リソースがあるので、プログラミングをすべて自分で行う代わりに、UI用のクールな無料のソースコードを見つけることができます。
読んでくれてありがとう:D。
このチュートリアルでリレーの詳細をご覧ください
コード
- remote_led.php
- remoteLed.ino
remote_led.php PHP
クライアント側のコード。 PHPoCシールドにアップロードする<? echo system( "uname -i")?> スイッチ
remoteLed.ino Arduino
Webブラウザから送信されたWebSocketデータに基づいてI / O制御を処理するサーバー側コード#include#include #define ON '1' #define OFF '0' byte ExpansionId =1; ExpansionRelayOutput Relay(expansionId、0); PhpocServer server(80); void setup(){Serial.begin(9600); while(!Serial); // PHPoC [WiFi]シールドを初期化します:Phpoc.begin(PF_LOG_SPI | PF_LOG_NET); //Phpoc.begin(); // WebSocketサーバーを起動しますserver.beginWebSocket( "remote_led"); // PHPoC [WiFi]シールドのIPアドレスをシリアルモニターに出力します:Serial.print( "WebSocketサーバーアドレス:"); Serial.println(Phpoc.localIP()); Expansion.begin(); //名前を取得し、シリアルに出力しますSerial.println(relay.getName()); } void loop(){//新しいクライアントを待つ:PhpocClient client =server.available(); if(client){if(client.available()> 0){//クライアントから着信するバイトを読み取ります:char thisChar =client.read(); switch(thisChar){case OFF:Serial.println( "Turn LED OFF"); relay.off(); server.write(OFF);壊す;ケースオン:Serial.println( "LEDをオンにする"); relay.on(); server.write(ON);壊す; }}}}