ブラウザからケトルを制御するか、インターネットコンセントをどのようにしたか



この記事では、制御されたアウトレットを作成した私の経験についてお話したいと思います。 GSMではありません(誰もが飽きており、あまりにも簡単です-SMSを読んでピンを引きます)が、HTMLページのボタンを使用してブラウザーで制御します。



それでは、ケトルをオンにするために信号はどのような経路に行く必要がありますか?

ページ上のボタンを押す->リンクをたどってWebサーバーを操作する-> CGIスクリプトを実行する-> UARTコントローラーを介してコマンドを送信する->ピンに電圧が表示される->リレー操作。これによりケトルがオンになります。



すべてを順番に考えてみましょう。



いいえ、バックエンド-コントローラーから始めましょう。



物理レベル-ピンを引っ張ります。



この役割の下で、MSP430を搭載しテキサス州の役員会が成功しました。

その下で、ファームウェアはEnergia環境で記述されました。これは、別のコントローラー用に再設計されたArduinoスケッチエディターです。 はい、喜ぶ-コードはarduynyと互換性があり、同じように機能します。 次のようになります。







すべてのコードはここで表示できます 。 注意、副次的なコードが少しあります。



そして、私が今お話しする作品について:



byte inByte = 0; //    UART int status[12]; //    void setup() { Serial.begin(9600);//  UART pinMode(RED_LED, OUTPUT);//     pinMode(6, OUTPUT);} if (Serial.available() > 0) { //          , inByte = Serial.read(); //     , switch (inByte){ //    ,    : case 's': //   "s",  Serial.print("RED_LED:"); //  , Serial.println(status[10]); //    ,    break; case 'r': //   , if (status[10] == 0) { //   ,     , digitalWrite(RED_LED, HIGH); //   status[10] = 1; } // (   ) else { digitalWrite(RED_LED, LOW); //   status[10] = 0; } // (    ) break; } } }
      
      







実際、それはすべてこれで構成されています(正直なところ、arduinoのコードとコードエディター自体も初めて見たとき)。私は、ケースよりも複雑なものを扱うにはあまりにも面倒でした。

これは14バイトで制御され、便宜上123456789nfrgsの文字で表されます

132456789-オンにし、再度送信するときはピンをオフにします。

n-すべてのピンを含む(O Nから)

f-すべてのピンをオフにします(O F Fから)

s-何がオンで何がオンでないかを示します( S TATから)

g-緑色のLEDをオンまたはオフにします( G REEN)

r-赤色のLED ...わかりました。

1つのパッケージで、rgs1などの複数の文字を組み合わせることができます。両方のLEDをオンにし、情報を表示してから、最初のピンに電圧を印加します。



赤い目



CP2101コントローラーがボードにすぐに接続されている状態で、zagashniksの靴紐を見つけました。 グーグルのわずかな動きで、ドライバーが見つかりました...

いいえ、嘘をついています。 コンピューターについて話す必要があります。

A10 ARMプロセッサとAndroidを搭載したシングルボードコンピューターがいくつかあります。







Linuxを実行することは可能でしたが、私はそれをしませんでした-私はまだそれで映画を見ます、そしてAndroideでそれはするのがより便利です。 Googleの問題またはシステムのGibletsのいずれかで、USB-UARTコンバーター用の少なくともいくつかのモジュールをアセンブルしようとして、私は4時間歩き回らなければなりませんでした。 私がほとんどalmostめたとき、私は私の救世主のブログに出くわしました。彼はA10に2つのAndroidモジュールを投稿し(私とは異なり、彼はビルドできました)、すぐにダウンロードされました(insmod cp210x.ko)。 その後、すべての箱をジャンクでひっくり返しましたが、CP2101コンバーターでレースを見つけました。



USBに貼り付け、息を止めてls / devを実行し、目的の/ dev / ttyUSB0がシステムに表示されます!

これに続いてセックスが行われました。これは、デバイスを適切に初期化してバイトがデバイスに送信されるようにする方法を見つけることに費やし興味深い時間です。 読者を苦しめることはありません。すぐに伝えます。

stty -F / dev / ttyUSB0 9600-ポートを初期化します。 それぞれのフレーミングで実行する方が良いでしょう、あなたは決して知りません。 突然、区画間でレースを引き出します。

/ system / bin / echo "r"> / dev / ttyUSB0-ポートにバイトを送信します。

そして、コントローラーはそれを受け取り、赤いLEDがハングするポートをオンにします。



WebおよびCGI



親切な人々は、コンソールレベルからブラウザレベルに到達する方法を教えてくれました。 この神聖な知識をあなたと共有します:

1)BusyboxとSSHサーバーが必要です。 ただし、デバイス自体にスクリプトを入力する場合は、ターミナルエミュレーターを入手することもできます。

2)ファイルを置くディレクトリを作成します。

http.cfgは、1行で構成されるWebサーバー構成です。* .html:/ system / bin / sh。これは、すべてのhtmlファイルをshインタープリターで実行する必要があることを意味します。

スクリプト、たとえばstarthttpdという名前を付けましょう。これには数行もあります。

insmod /sdcard/www/cp210x.ko> / dev / null 2>&1-コンバータードライバーをカーネルにロードする行(毎回手動で実行しないように)、および存在する場合は誓いません。

httpd -p12 -h / sdcard / www -c /sdcard/www/http.cfg-ポート12(誰かが80を占有)でサーバーを起動し、ルートフォルダー/ sdcard / www、および以前に行った構成を使用します。

そして最後に中心となるのはindex.htmlです。



 #!/bin/sh stty -F /dev/ttyUSB0 9600 #  /system/bin/echo $QUERY_STRING >/dev/ttyUSB0 #   ,    GET-. echo "Content-type: text/html" echo "" echo "<html><header></header><body>" echo "<input type=\"button\" value=\"RED_LED\" onclick=\"location.href='?r'\" />" # ,     (href='?r') echo "<input type=\"button\" value=\"GREEN_LED\" onclick=\"location.href='?g'\" /><p>" echo "<input type=\"button\" value=\"PIN_1.4\" onclick=\"location.href='?1'\" />" echo "<input type=\"button\" value=\"PIN_1.5\" onclick=\"location.href='?2'\" /><p>" echo "<input type=\"button\" value=\"PIN_1.7\" onclick=\"location.href='?9'\" />" echo "<input type=\"button\" value=\"PIN_2.0\" onclick=\"location.href='?3'\" /><p>" echo "<input type=\"button\" value=\"PIN_2.1\" onclick=\"location.href='?4'\" />" echo "<input type=\"button\" value=\"PIN_2.2\" onclick=\"location.href='?5'\" /><p>" echo "<input type=\"button\" value=\"PIN_2.3\" onclick=\"location.href='?6'\" />" echo "<input type=\"button\" value=\"PIN_2.4\" onclick=\"location.href='?7'\" /><p>" echo "<input type=\"button\" value=\"PIN_2.5\" onclick=\"location.href='?8'\" /><p>" echo "<input type=\"button\" value=\"ON_ALL\" onclick=\"location.href='?n'\" />" echo "<input type=\"button\" value=\"OFF_ALL\" onclick=\"location.href='?f'\" /><p>" echo "</font></pre>" echo "</body></html>"
      
      







このようなメニューにはボタンがあります:





テーブルからゴミを取り除き、すべてをまとめるために残っています:







結果の短いビデオは次のとおりです。







もちろん、範囲はカラー音楽に限定されません。 5vリレーを追加し、9つのリモートコントロール(!)を取得します。トイレやオフィスの照明からエアコンや電源パネルに至るまで、あらゆるものを操作できるコンピューター出力から。



また、sshをサーバーに転送し、同じことを行うことができますが、インターネットにアクセスできる場所であればどこからでもできます。



All Articles