創建一個ESP8266網站,以控制我們的XC4418 8頻道繼電器控制器的8個接力賽

使用此簡單的兩部分設置輕鬆使用繼電器!只需將要測試或激活的任何設備連接到繼電器模塊即可;然後使用內部構建的電話應用程序可以隨時控制它們。將繼電器設置為切換,計時器或瞬時激活;甚至讓他們在一天中的某些時間去。非常適合自動植物澆水套件,測試設備,控制燈或最多10安培的任何其他負載。
| 數量 | 代碼 | 描述 |
|---|---|---|
| 1 | XC4418 | 8通道繼電器控制器 |
| 1 | XC4411 | uno與wifi |
與往常一樣,您應該在Arduino IDE工具中安裝ESP8266庫以及ESP8266 Data-Upload插件。如果沒有,您可以從下面得到任何一個:
該系統是一個非常簡單的設置。如我們所知,XC4411是一個UNO,ESP合併為單板設置。 ESP部分將處理運行簡單的“ Web應用程序”程序類型的程序,然後將與UNO通信。

代碼的UNO部分將一旦接收命令,就將僅負責激活和控制繼電器。
XC4411通過串行端口將UNO和ESP一起連接在一起, Serial.write()意味著我們只需執行一些Serial.read() 。為了保持簡單,我們將保持數據流以一條方式,因此ESP將永遠不會知道繼電器的外觀,這意味著Web應用程序將無法顯示實際繼電器的外觀,但是我們可以做出簡單的猜測。
由於XC4411板的簡單性,這是一個簡單的一體調製構建。

只需將5V和GND連接到繼電器板的前兩個引腳(您應該發現它們被標記為VCC和GND )。然後將IN#引腳的所有其他所有內容連接到UNO的數字引腳。為了使事情變得簡單,我們從Pin 2開始,然後向上移動到Pin 9這將與繼電器板上的內容保持一致,從底部開始。
在繼電器板上也將COM和GND引腳之間的綠色選項卡保持在接力板上是一個合理的主意。
在XC4411上,您應該找到一行傾斜開關。這用於設置設備所在的模式。

(由於我們的頻率使用一次,我們的人有點臟)。
對於本節,我們將要編程事物的側面,因此請使用筆或以其他方式設置傾斜開關:
| 別針 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 狀態 | 離開 | 離開 | 在 | 在 | 離開 | 離開 | 離開 | 離開 |
然後在Arduino IDE編輯器中打開代碼的uno/uno.ino部分,並按照往常上傳。
您應該能夠通過打開Serial Monitor並將選項設置為:
115200波特然後輸入命令,例如:
>4a
如果您真的想調試代碼,則應在UNO代碼的第10行和11行上找到一些定義。第10行上的一個將輸出類似於下面的文本。

另一個定義(第11行)將無能為力,只需打開繼電器即可。確定項目時要定義第11行。
將傾斜開關設置為下面。
| 別針 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 狀態 | 離開 | 離開 | 離開 | 離開 | 在 | 在 | 在 | 離開 |
對於此部分,您需要在Arduino IDE中打開ESP/ESP.INO代碼,並將板類型更改為Generic ESP8266板。
將程序的“閃存大小”更改為4M (3M SPIFFS) - 這將使某些代碼份量,以便我們可以放入data/文件夾中。您將在數據文件夾中找到我們的網站代碼,我們希望將其全部放在ESP上。以下是我們設置的屏幕截圖。

首先,正常上傳代碼。如果您按上傳,並且發現IDE無法上傳,或者您會得到這樣的輸出:

這只是意味著IDE正在等待ESP重新啟動。當您看到IDE顯示此消息時,按板上的RESET按鈕。它應該在不搭便車的情況下上傳。
代碼完成後,使用ESP Data Upload Tool (如上圖中突出顯示)將我們的網站上傳到ESP。您必須按類似於以前的重置按鈕。編程後,您可以關閉DIP -SWitch 7並打開串行顯示器,以查看ESP連接到“繼電器控制器”熱點時的輸出,並導航到http://192.168.4.1-或繼續繼續。
與UNO代碼類似,我們還有另一堆用於調試的定義。您可以通過這種方式啟用或禁用調試消息。
更改代碼時要記住的一些重要事情:
Flash size相同。如果更改它,則必須重新上傳代碼和網站。一旦對兩個半進行編程,最終將DIP開關切換到下面。
| 別針 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 狀態 | 在 | 在 | 離開 | 離開 | 離開 | 離開 | 離開 | 離開 |
這將把ESP的序列連接到UNO的序列。現在,它僅由USB提供動力,並且串行監視器不會連接到任何內容。
打開手機的wifi並重新啟動XC4411-您應該發現有一個新的無線網絡,稱為“中繼控制器”。連接到它,然後打開瀏覽器,然後轉到:http://192.168.4.1

該網站並不多,但是可以使用。您應該能夠按下按鈕並找到接力線打開和關閉。如果您知道如何使網站看起來不錯,並且想拍攝使它看起來更好的鏡頭,請開發新的data/文件夾,然後在GitHub問題選項卡上提交,或者將其提交回購併提交拉動請求。
如果發現某些內容不起作用,請將計算機連接到網絡(或者將ESP連接到家庭網絡)並在計算機上打開網站。您應該能夠打開“ Chrome Inspector工具”並找到將輸出消息的控制台。
但是,測試正在發生的事情的確定方法是將串行監視器連接到設備(帶有與您要測試的部分相對應的傾角開關)並根據需要測試代碼的每個部分。
>3a轉換,然後>3d關閉中繼3。>1a命令輸出。 顯然,該網站需要工作,但是該項目可能會發生任何更改。您仍然應該免費提供一些銷釘,而您要做的就是添加一些銷釘是:
以下是一些可以解釋的代碼段。
在網站上是我們用來打開繼電器的按鈕,它是一個簡單的<button id='3' class='relay'></button>元素,該元素具有它的iD(不是完全,但在此示例中足夠接近)。
然後,我們有一些JavaScript代碼(簡化):
$ ( "button.relay" ) . on ( "click" , function ( ) {
//do this when a button with the class 'relay' is clicked
} ) ;在此功能中,我們fetch()一個新的網頁指向/relay ,如果返回狀態可以,我們將類“ ISON”添加到按鈕:
fetch ( "relay?relay=3&mode=activate" ) . then ( response => {
if ( response . status == 200 ) {
button . addClass ( "isOn" ) ;
}
} ) ;這意味著該網站將嘗試使用http://192.168.4.1/relay訪問新的網頁,並帶有?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 " );
// ...
}命令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 onUNO將解釋這一點,然後實際上將打開中繼:
在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);要注意的一件事是,數據流只是此代碼中的一個方向,ESP上沒有Serial.write()為Serial.read() 。