XC4418 8チャンネルリレーコントローラーで最大8つのリレーを制御するESP8266 Webサイトを作成する

このシンプルな2部構成のセットアップでは、リレーを簡単に使用してください!テストまたはアクティブ化するデバイスをリレーモジュールに接続するだけです。次に、組み込みの電話アプリを使用して、いつでも必要なときにそれらを制御します。トグル、タイマー、または瞬間的なアクティベーションにリレーを設定します。そして、彼らをその日の特定の時間にも設定します。自動植物の散水キット、テストデバイス、ライトの制御、または最大10アンペアのその他の負荷に最適です。
| 数量 | コード | 説明 |
|---|---|---|
| 1 | XC4418 | 8チャネルリレーコントローラー |
| 1 | XC4411 | wifiとのuno |
いつものように、 ESP8266 LibraryをArduino IDEツールに、ESP8266 Data-Uploadプラグインとともにインストールする必要があります。そうでない場合は、下からどちらかを取得できます。
このシステムは非常に簡単なセットアップです。私たちが知っているように、XC4411はUNOであり、ESPが単一のボードセットアップに組み合わされています。 ESP部分は、単純な「Webアプリ」タイプのプログラムの実行を処理し、UNOと通信します。

コードのUNO部分は、コマンドを受信すると、リレーをアクティブにして制御する責任があります。
XC4411は、シリアルポートを介してUNOとESPの両方を一緒に接続します。つまり、2つの間で通信するにはSerial.read()とSerial.write()実行する必要があります。物事をシンプルに保つために、データフローを一方向に保持するため、ESPはリレーの外観を決して知りません。つまり、Webアプリは実際のリレーがどのように見えるかを表示できませんが、簡単な推測をすることができます。
これは、XC4411ボードのシンプルさのおかげで、シンプルな1モジュールビルドです。

5VとGNDをリレーボードの上位2つのピンに接続するだけです( VCCとGNDとラベル付けされていることがわかります)。次に、 IN#他のすべてをUNOのデジタルピンに接続します。物事をシンプルに保つために、ピンをピンを整理して、 Pin 2から始めてPin 9に移動します。これは、下から始まるリレーボードの内容と一致します。
リレーボードのCOMとGNDピンの間にグリーンタブを維持することは合理的なアイデアです。
XC4411には、ディップスイッチの行が見つかります。これは、デバイスがどのモードにあるかを設定するために使用されます。

(私たちはそれを使用する頻度のために少し汚いです)。
このセクションでは、uno side of thingsをプログラムしたいので、ペンを使用するか、そのようなディップスイッチを設定します。
| ピン | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 州 | オフ | オフ | の上 | の上 | オフ | オフ | オフ | オフ |
次に、Arduino IDEエディターのコードのuno/uno.ino部分を開き、通常どおりアップロードします。
Serial Monitorを開き、オプションを次のように設定することにより、この側面をテストできるはずです。
115200ボー次に、次のようなコマンドを入力します。
>4a
本当にコードをデバッグしたい場合は、UNOコードの10行目と11行目にいくつかの定義を見つける必要があります。 1行目の1つは、以下と同様のテキストを出力します。

もう1つの定義(11行目)は何もしません。また、リレーをオンにするだけです。プロジェクトを最終化するときに、11行目を定義する必要があります。
下のようにディップスイッチを設定します。
| ピン | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 州 | オフ | オフ | オフ | オフ | の上 | の上 | の上 | オフ |
この部分では、Arduino IDEのESP/ESP.inoコードを開き、ボードタイプをGeneric ESP8266ボードに変更する必要があります。
プログラムの「フラッシュサイズ」を4M (3M SPIFFS)に変更します。これにより、 data/フォルダーに収まるように、コードの一部が分かれます。データフォルダーにWebサイトコードがあり、それをすべてESPに配置する必要があります。以下は、設定のスクリーンショットです。

まず、コードを通常どおりアップロードします。アップロードを押すと、IDEがアップロードに失敗している場合、または次のような出力が得られていることがわかりました。

これは、IDEがESPが再起動するのを待っていることを意味します。このメッセージを表示したら、ボードのRESETボタンを押します。それは問題なくアップロードする必要があります。
コードが完了したら、 ESP Data Upload Tool (上記の画像で強調表示されているように)を使用して、WebサイトをESPにアップロードします。以前と同様のリセットボタンを押す必要があります。プログラムされたら、ディップスイッチ7をオフにし、シリアルモニターを開き、 「リレーコントローラー」ホットスポットに接続してhttp://192.168.4.1に移動するときにESPが出力するかを確認できます。
UNOコードと同様に、デバッグ用の別の定義があります。この方法でデバッグメッセージを有効または無効にすることができます。
コードを変更するときに、覚えておくべきいくつかの重要なこと:
Flash size同じように保ちます。変更すると、コードとWebサイトの両方を再アップロードする必要があります。2つの半分がプログラムされたら、最終的にディップスイッチを以下に切り替えます。
| ピン | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 州 | の上 | の上 | オフ | オフ | オフ | オフ | オフ | オフ |
これにより、ESPのシリアルをUNOのシリアルに接続します。現在、それはUSBのみを搭載しており、シリアルモニターは何にも接続されません。
携帯電話のWiFiを開き、XC4411を再起動します - 「リレーコントローラー」と呼ばれる新しいワイヤレスネットワークがあることがわかります。それに接続してから、ブラウザを開いてhttp://192.168.4.1にアクセスしてください

ウェブサイトはあまり見るべきではありませんが、機能します。ボタンを押して、リレーをオン /オフにすることができるはずです。 Webサイトを見栄えの良い方法と、この見た目を良くするショットを持ちたい場合は、新しいdata/フォルダーを開発してGitHub Issuesタブで送信するか、リポジトリをフォークしてプルリクエストを送信したい場合は、Webサイトを見せたい場合はご覧ください。
いくつかのものが機能していない場合は、コンピューターをネットワークに接続し(または、ESPをホームネットワークに接続します)、コンピューターでWebサイトを開きます。 「Chrome Inspectorツール」を開き、メッセージを出力するコンソールを見つけることができるはずです。
ただし、何が起こっているのかをテストする確実な方法は、シリアルモニターをデバイスに接続し(テストするセクションに対応するディップスイッチを使用して)、必要に応じてコードの各部分をテストすることです。
>3aターンを送信し、 >3dリレー3をオフにすることがわかります。>1aコマンド出力を取得する必要があります。 明らかに、ウェブサイトには作業が必要ですが、このプロジェクトには何度も変更される可能性があります。あなたはまだいくつかのピンを無料で持っているはずであり、何かを追加するためにあなたがしなければならないことは次のとおりです:
以下は、説明するコードセグメントです。
Webサイトには、リレーをオンにするために使用するボタンがあります。これは、単純な<button id='3' class='relay'></button>要素であり、ピンのIDがあります(完全ではありませんが、この例には十分に近いです)。
次に、JavaScriptコード(簡素化)があります。
$ ( "button.relay" ) . on ( "click" , function ( ) {
//do this when a button with the class 'relay' is clicked
} ) ;この関数では、 /relayを指す新しいWebページをfetch() 。リターンステータスがOKである場合、クラス「ison」をボタンに追加します。
fetch ( "relay?relay=3&mode=activate" ) . then ( response => {
if ( response . status == 200 ) {
button . addClass ( "isOn" ) ;
}
} ) ;これは、Webサイトがhttp://192.168.4.1/relayの新しいWebページにアクセスしようとすることを意味します?relay=3&mode=activateのパラメーターを使用します。 ESPコードをチェックしましょう:
// firstly, set the handler function in the setup():
server.on( " /relay " , handleRelayCommand);
// ... later ...
void handleRelayCommand (){
String relayNumber = server. arg ( " relay " );
String mode = server. arg ( " mode " );
// ...
} command server.arg("relay"); 「リレー」が設定されている引数を取得するだけです。元のリクエストでは: ?relay=3&mode=activateこれは文字列"3"になります。同様に、モード引数は文字列"activate"に設定されます
次に、いくつかのチェックを実行し、 "3"リレーが対応するものを見つけ、 "activate"がリレーをオンにしていることを意味し、それをunoにコマンドとして送信することを意味します。
Serial.write( ' > ' ); // start of command
Serial.write( ' 3 ' ); // relay 3
Serial.write( ' a ' ); // activate, or turn onこれはUNOによって解釈され、実際にリレーをオンにします。
uno.ino(再び、簡素化):
while (Serial.read() != ' > ' ) // do nothing until we get '>'
continue ;
char relay = Serial.read(); // next character is relay;
char mode = Serial.read(); // next character is mode;
// ... do some checks, turn char into int, see if it's valid, etc.
digitalWrite (theRelay, theMode);注意すべきことの1つはSerial.read()データフローがこのコードに1つの方向にSerial.write()ないことです。ESP。