XC4418 8 채널 릴레이 컨트롤러에서 최대 8 개의 릴레이를 제어 할 ESP8266 웹 사이트 생성

이 간단한 두 부분으로 구성된 설정으로 릴레이를 쉽게 사용하십시오! 테스트하거나 활성화하려는 장치를 릴레이 모듈에 연결하기 만하면됩니다. 그런 다음 제작 된 전화 앱을 사용하여 원할 때마다 제어하십시오. 전환, 타이머 또는 순간 활성화로 릴레이를 설정합니다. 심지어 하루 종일 특정 시간에 가십시오. 자동 플랜트 급수 키트, 테스트 장치, 조명 제어 또는 최대 10A의 다른 하중에 적합합니다.
| 수량 | 암호 | 설명 |
|---|---|---|
| 1 | XC4418 | 8 채널 릴레이 컨트롤러 |
| 1 | XC4411 | Wi -Fi와 Uno |
언제나 그렇듯이 ESP8266 Data-Upload 플러그인과 함께 Arduino IDE 도구에 ESP8266 라이브러리를 설치해야합니다. 그렇지 않으면 아래에서 하나를 얻을 수 있습니다.
이 시스템은 매우 간단한 설정입니다. 우리가 알다시피, XC4411은 단일 보드 설정으로 결합 된 UNO 및 ESP입니다. ESP 부분은 간단한 "웹 애플"유형의 프로그램을 실행하여 UNO와 통신합니다.

코드의 UNO 부분은 단순히 명령을 받으면 릴레이를 활성화하고 제어 할 책임이 있습니다.
XC4411은 Serial 포트를 통해 UNO와 ESP를 모두 연결합니다. 즉, 두 가지 사이를 통신하려면 Serial.read() 및 Serial.write() 수행해야합니다. 사물을 단순하게 유지하기 위해 데이터 흐름을 한 가지 방법으로 유지하므로 ESP는 릴레이가 어떻게 보이는지 알지 못할 것입니다. 즉, 웹 애플은 실제 릴레이의 모습을 보여줄 수 없지만 간단한 추측을 할 수 있습니다.
이것은 XC4411 보드의 단순성 덕분에 간단한 원형 빌드입니다.

5V와 GND를 릴레이 보드의 상단 2 핀에 연결하기 만하면 ( VCC 및 GND 로 표시되어 있음을 찾아야합니다). 그런 다음 IN# 다른 모든 것을 UNO의 디지털 핀에 연결하십시오. 물건을 단순하게 유지하기 위해 Pin 2 부터 시작하여 Pin 9 까지 올라가는 핀을 순서대로 유지합니다. 이는 하단에서 시작하여 릴레이 보드의 내용과 일치합니다.
COM 과 GND 핀 사이에 녹색 탭을 릴레이 보드의 녹색 탭을 유지하는 것이 합리적인 아이디어입니다.
XC4411에서는 딥 스위치 행을 찾아야합니다. 이것은 장치가있는 모드를 설정하는 데 사용됩니다.

(우리는 얼마나 자주 사용하는지 때문에 우리는 약간 더럽습니다).
이 섹션에서는 사물의 UNO 측면을 프로그래밍하려고하므로 펜을 사용하거나 딥 스위치를 다음과 같이 설정하십시오.
| 핀 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 상태 | 끄다 | 끄다 | 에 | 에 | 끄다 | 끄다 | 끄다 | 끄다 |
그런 다음 Arduino IDE 편집기에서 코드의 uno/uno.ino 부분을 열고 정상적으로 업로드하십시오.
Serial Monitor 열고 옵션을 설정 하여이 측면을 테스트 할 수 있어야합니다.
115200 BAUD그런 다음 다음과 같은 명령을 입력하십시오.
>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/ 폴더에 맞출 수 있습니다. 데이터 폴더에서 웹 사이트 코드를 찾을 수 있습니다. 아래는 설정의 스크린 샷입니다.

먼저 코드를 정상적으로 업로드하십시오. 업로드를 누르면 IDE가 업로드되지 않거나 다음과 같은 출력이 발생합니다.

이것은 IDE가 ESP가 재부팅되기를 기다리고 있음을 의미합니다. IDE 가이 메시지를 표시하면 보드의 RESET 버튼을 누릅니다. 히치없이 업로드해야합니다.
코드가 완료되면 ESP Data Upload Tool (위의 이미지에서 강조 표시된대로)를 사용하여 웹 사이트를 ESP에 업로드하십시오. 이전과 비슷한 재설정 버튼을 누르야합니다. 프로그래밍되면 Dip -Switch 7을 끄고 직렬 모니터를 끄면 "릴레이 컨트롤러" 핫스팟에 연결할 때 ESP의 출력을 확인하고 http://192.168.4.1로 이동하거나 계속 계속 진행할 수 있습니다.
UNO 코드와 유사하게 디버깅에 대한 또 다른 정의가 있습니다. 이 방법으로 디버그 메시지를 활성화하거나 비활성화 할 수 있습니다.
코드를 변경할 때 기억해야 할 몇 가지 중요한 사항 :
Flash size 동일하게 유지하십시오. 변경하면 코드와 웹 사이트를 모두 재 작업해야합니다.두 반쪽이 프로그래밍되면 마지막으로 딥 스위치를 아래로 전환하십시오.
| 핀 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 상태 | 에 | 에 | 끄다 | 끄다 | 끄다 | 끄다 | 끄다 | 끄다 |
이것은 ESP의 직렬을 UNO의 직렬에 연결합니다. 이제 USB에 의해서만 구동되며 직렬 모니터는 아무것도 연결되지 않습니다.
휴대 전화의 WiFi를 열고 XC4411을 재부팅하십시오. "릴레이 컨트롤러"라는 새로운 무선 네트워크가 있음을 찾아야합니다. 연결하고 브라우저를 열고 http://192.168.4.1로 이동하십시오.

웹 사이트는 많이 볼 수는 없지만 작동합니다. 버튼을 누르고 릴레이를 켜고 끄는 것을 찾을 수 있어야합니다. 웹 사이트를 멋지게 보이게하고 더 좋아 보이도록 촬영하는 방법을 알고 있다면 새 data/ 폴더를 개발하고 GitHub 문제 탭에 제출하거나 repo를 포크하고 풀 요청을 제출하십시오.
작동하지 않는 경우 컴퓨터를 네트워크에 연결하고 (또는 ESP를 홈 네트워크에 연결하고) 컴퓨터에서 웹 사이트를 열십시오. "Chrome Inspector Tool"을 열고 메시지를 출력하는 콘솔을 찾을 수 있어야합니다.
그러나 일어나는 일을 테스트하는 확실한 방법은 직렬 모니터를 장치에 연결하고 (테스트중인 섹션에 해당하는 딥 스위치와 함께) 필요한대로 코드의 각 부분을 테스트하는 것입니다.
>3a 켜고 릴레이 3을 켜고 >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" ) ;
}
} ) ; 이는 웹 사이트 ?relay=3&mode=activate 의 매개 변수와 함께 http://192.168.4.1/relay 의 새 웹 페이지에 액세스하려고한다는 것을 의미합니다. 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 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); 주목해야 할 것은 데이터 플로우는이 코드의 한 방향 일 뿐이며 ESP에 의해 serial.read ( Serial.read() 가 될 UNO에 serial.write Serial.write() 가 없다는 것입니다.