ESP8266:Примеры/Модуль ESP8266, дистанционно управляющий розетками
Поддержать проект | Содержание | Введение | Модули | AT-команды | Прошивки | Примеры | Проекты | Типовые проблемы | Библиотеки |
![]() |
Черновик |
Модуль ESP8266, дистанционно управляющий розетками[1]
В этой статье рассказывается, как собрать веб-сервер на базе ESP8266, позволяющий дистанционно управлять двумя розетками.
Перед тем, как продолжить, пройдите вот эти руководства:
- Как начать работать с трансиверным WiFi-модулем на базе ESP8266
- Как установить аддон для ESP8266 на IDE Arduino
- Гайд по использованию приемника/передатчика RF 433 MHz с Arduino
Сначала посмотрите вот это видео:
[Видео]
Необходимые компоненты
- Один модуль ESP8266
- Один программатор FTDI
- Одна плата Arduino
- Одна пара из приемника/передатчика RF 433 MHz
- Розетки и пульт дистанционного управления
Дистанционно управляемые розетки (433 МГц)
Имейте в виду, что управление ими осуществляется на радиочастоте 433 МГц. Мой комплект работал вот так:
- Пульт дистанционного управления – канал 1
- Розетка 1 – канал 1, режим 1
- Розетка 2 – канал 1, режим 3
Библиотека «RC Switch»
Для этого проекта нам понадобится библиотека «RC Switch». Чтобы становить ее в IDE Arduino, проделайте следующее:
- Загрузите отсюда ZIP-архив с библиотекой
- Распакуйте архив
- Удалите символы «-» из названия главной папки, иначе IDE Arduino эту библиотеку не распознает
- Установите библиотеку в IDE Arduino
- Перезапустите IDE Arduino
Эта библиотека работает почти со всеми радиоуправляемыми розетками, имеющимися на рынке.
Цепь и код для приемника
Подключите Arduino и приемник согласно схеме на картинке выше. Затем загрузите на Arduino код, показанный ниже. Его также можно открыть через IDE Arduino, кликнув на Файл > Примеры > RC Switch > ReceiveDemo_Advanced (File > Examples > RC Switch > ReceiveDemo_Advanced).
1 /*********
2 Автор - Руи Сантос (Rui Santos)
3 Более подробно о проекте на: randomnerdtutorials.com
4 *********/
5
6 #include <RCSwitch.h>
7
8 RCSwitch mySwitch = RCSwitch();
9
10 void setup() {
11 Serial.begin(9600);
12 mySwitch.enableReceive(0); // приемник на прерывании 0,
13 // т.е. на цифровом контакте 2
14 }
15
16 void loop() {
17 if (mySwitch.available()) {
18 output(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(), mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol());
19 mySwitch.resetAvailable();
20 }
21 }
Значения для кнопок пульта
Откройте монитор порта IDE Arduino на скорости 9600 бод и начните нажимать кнопки на пульте управления. В мониторе порта начнут появляться данные, и вам нужно сохранить куда-нибудь значения, выделенные на картинке ниже красным цветом:
Схема для 3,3-вольтового программатора FTDI
Чтобы загрузить код на ESP8266, его нужно подключить к программатору FTDI. Как это сделать, показано на картинке ниже:
Загрузка кода на ESP8266
Установите в IDE Arduino аддон для ESP8266, если еще не установили (о том, как это сделать, можно почитать тут). Далее кликните в IDE Arduino на Инструменты > Плата > Generic ESP8266 Module (Tools > Board > Generic ESP8266 Module).
Скопируйте в IDE Arduino скетч, показанный ниже. Замените SSID и пароль на собственные. Также понадобится изменить значения для кнопок пульта (их 4). Отредактировав скетч, загрузите его на ESP8266.
1 /*********
2 Автор – Руи Сантос (Rui Santos)
3 Более подробно о проекте на http://randomnerdtutorials.com
4 *********/
5
6 #include <ESP8266WiFi.h>
7 #include <WiFiClient.h>
8 #include <ESP8266WebServer.h>
9 #include <ESP8266mDNS.h>
10 #include <RCSwitch.h>
11
12 RCSwitch mySwitch = RCSwitch();
13 MDNSResponder mdns;
14
15 // вставляем сюда SSID и пароль для вашей сети:
16 const char* ssid = "YOUR_SSID";
17 const char* password = "YOUR_PASSWORD";
18
19 ESP8266WebServer server(80);
20
21 // вставляем сюда значения для кнопок пульта:
22 char* socket1TriStateOn = "0FFF0FFFFFFF";
23 char* socket1TriStateOff = "0FFF0FFFFFF0";
24 char* socket2TriStateOn = "0FFFFF0FFFFF";
25 char* socket2TriStateOff = "0FFFFF0FFFF0";
26
27 String webPage = "";
28
29 void setup(void){
30 webPage += "<h1>ESP8266 Web Server</h1><p>Socket #1 <a href=\"socket1On\"><button>ON</button></a> <a href=\"socket1Off\"><button>OFF</button></a></p>";
31 webPage += "<p>Socket #2 <a href=\"socket2On\"><button>ON</button></a> <a href=\"socket2Off\"><button>OFF</button></a></p>";
32 mySwitch.enableTransmit(2);
33 delay(1000);
34 Serial.begin(115200);
35 WiFi.begin(ssid, password);
36 Serial.println("");
37
38 // ждем подключения:
39 while (WiFi.status() != WL_CONNECTED) {
40 delay(500);
41 Serial.print(".");
42 }
43 Serial.println("");
44 Serial.print("Connected to "); // "Подключились к "
45 Serial.println(ssid);
46 Serial.print("IP address: "); // "IP-адрес: "
47 Serial.println(WiFi.localIP());
48
49 if (mdns.begin("esp8266", WiFi.localIP())) {
50 Serial.println("MDNS responder started");
51 // "MDNSresponder запущен"
52 }
53
54 server.on("/", [](){
55 server.send(200, "text/html", webPage);
56 });
57 server.on("/socket1On", [](){
58 server.send(200, "text/html", webPage);
59 mySwitch.sendTriState(socket1TriStateOn);
60 delay(1000);
61 });
62 server.on("/socket1Off", [](){
63 server.send(200, "text/html", webPage);
64 mySwitch.sendTriState(socket1TriStateOff);
65 delay(1000);
66 });
67 server.on("/socket2On", [](){
68 server.send(200, "text/html", webPage);
69 mySwitch.sendTriState(socket2TriStateOn);
70 delay(1000);
71 });
72 server.on("/socket2Off", [](){
73 server.send(200, "text/html", webPage);
74 mySwitch.sendTriState(socket2TriStateOff);
75 delay(1000);
76 });
77 server.begin();
78 Serial.println("HTTP server started");
79 // "Запущен HTTP-сервер"
80 }
81
82 void loop(void){
83 server.handleClient();
84 }
IP-адрес ESP8266
Откройте монитор порта IDE Arduino на скорости 115200 бод. Подключите 0-ой GPIO-контакт ESP8266 к контакту VCC и сбросьте плату.
Через несколько секунд в мониторе порта появится IP-адрес ESP8266. В моем случае это «192.168.1.70».
Схема проекта
Это цепь для ESP8266, который хостит веб-сервер и передает радиочастотные сигналы для управления розетками.
Демонстрация
Чтобы посмотреть, как работает проект, откройте любой браузер на устройстве, подключенном к той же сети, что и ESP8266. Затем впишите в адресную строку IP-адрес и нажмите на ↵ Enter .
Теперь, нажимая кнопки в браузере, вы можете управлять обеими розетками. То, как проект работает вживую, можно посмотреть в видео в самом начале статьи.
См.также
Внешние ссылки