ESP8266:Примеры/Как собрать «лампу настроения»

Материал из ВикиСправочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 1784 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Как собрать «лампу настроения»[1]

В этой статье я расскажу, как сделать так называемую «лампу настроения» (от англ. «mood lamp»). В проекте будет задействован чип ESP8266, а также смартфон (или другое устройство с браузером), с помощью которого вы будете дистанционно менять цвет освещения.

Сначала взгляните на это видеоруководство:

[Видео]

Что ж, приступим!

Необходимые компоненты

  • Один чип ESP8266-12E (см. на eBay)
  • Одна RGB-светодиодная лента (см. на eBay)
Rgb-led-strip 1.png
  • Один 12-вольтовый источник питания (см. на eBay)
  • Одно устройство для понижения напряжения с 12 до 5 вольт. Рекомендуется использовать понижающий преобразователь (см. на eBay), но в качестве альтернативы подойдет и LM7805 с радиатором
Buck-converter 2.png
  • Три NPN-транзистора 2N2222 (или эквиваленты; см. на eBay)
  • Три резистора на 1кОм (см. на eBay)
  • Одна макетная плата (см. на eBay)
  • Провода-перемычки (см. на eBay)
  • Подходящая настольная лампа
White-lamp 3.png

Загрузка на ESP8266 прошивки NodeMCU

Для этого проекта мы воспользуемся прошивкой NodeMCU – ее нужно будет загрузить на ESP8266. О том, как это сделать, читайте тут.

Загрузка и установка ESPlorer IDE

ESPlorer IDE – это программа, созданная пользователем 4refr0nt и предназначенная для отправки команд на чип ESP8266. Чтобы скачать и установить ESPlorer IDE, проделайте следующее:

  1. Кликните здесь, чтобы загрузить ESPlorer IDE
  2. Распакуйте скачанный ZIP-архив
  3. Перейдите к главной папке
  4. Запустите файл «ESPlorer.jar»
  5. Откройте ESPlorer IDE

Загрузка кода

Когда вы запустите ESPlorer IDE, перед вами должно появиться примерно такое окно:

Esplorer-start 4.png

Чтобы загрузить на ESP8266 файл Lua, проделайте следующее:

  1. Подключите ESP8266-12E (он оснащен встроенным программатором) к компьютеру
  2. Выберите порт, к которому подключен ESP8266-12E (в моем случае это «COM8»)
  3. Нажмите на кнопку «Open/Close»
  4. Выберите вкладку «NodeMCU+MicroPtyhon»
  5. Создайте новый файл, назвав его «init.lua»
  6. Нажмите кнопку «Save to ESP»

Все, что вам понадобится для этих действий, обведено на этой картинке красным цветом:

Esplorer tab 5.png

Код

Теперь при помощи ESPlorer IDE устанавливаем на ESP8266 код, показанный ниже. Ваш файл должен быть назван «init.lua».

Не забудьте вписать в этот код информацию (SSID и пароль к ней) для вашей собственной WiFi-сети.

  1. -- Руи Сантос (Rui Santos)
  2. -- Более подробно о проекте на: http://randomnerdtutorials.com
  3.  
  4. wifi.setmode(wifi.STATION)
  5. wifi.sta.config("МЕСТО_ДЛЯ_SSID","МЕСТО_ДЛЯ_ПАРОЛЯ")
  6.  
  7. print(wifi.sta.getip())
  8.  
  9. function led(r, g, b)
  10.     pwm.setduty(5, r)
  11.     pwm.setduty(6, g)
  12.     pwm.setduty(7, b)
  13. end
  14. pwm.setup(5, 1000, 1023)
  15. pwm.setup(6, 1000, 1023)
  16. pwm.setup(7, 1000, 1023)
  17. pwm.start(5)
  18. pwm.start(6)
  19. pwm.start(7)
  20.  
  21. srv=net.createServer(net.TCP)
  22. srv:listen(80,function(conn)
  23.     conn:on("receive", function(client,request)
  24.         local buf = "";
  25.         buf = buf.."HTTP/1.1 200 OK\n\n"
  26.         local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
  27.         if(method == nil)then
  28.             _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
  29.         end
  30.         local _GET = {}
  31.         if (vars ~= nil)then
  32.             for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
  33.                 _GET[k] = v
  34.             end
  35.         end
  36.         buf = buf.."<!DOCTYPE html><html><head>";
  37.         buf = buf.."<meta charset=\"utf-8\">";
  38.         buf = buf.."<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">";
  39.         buf = buf.."<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">";
  40.         buf = buf.."<link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css\">";
  41.         buf = buf.."<script src=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js\"></script>";
  42.         buf = buf.."<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jscolor/2.0.4/jscolor.min.js\"></script>";
  43.         buf = buf.."</head><body><div class=\"container\"><div class=\"row\"><h1>ESP Color Picker</h1>";      
  44.         buf = buf.."<a type=\"submit\" id=\"change_color\" type=\"button\" class=\"btn btn-primary\">Change Color</a> ";
  45.         buf = buf.."<input class=\"jscolor {onFineChange:'update(this)'}\" id=\"rgb\"></div></div>";
  46.         buf = buf.."<script>function update(picker) {document.getElementById('rgb').innerHTML = Math.round(picker.rgb[0]) + ', ' +  Math.round(picker.rgb[1]) + ', ' + Math.round(picker.rgb[2]);";      
  47.         buf = buf.."document.getElementById(\"change_color\").href=\"?r=\" + Math.round(picker.rgb[0]*4.0117) + \"&g=\" +  Math.round(picker.rgb[1]*4.0117) + \"&b=\" + Math.round(picker.rgb[2]*4.0117);}</script></body></html>";
  48.        
  49.         if(_GET.r or _GET.g or _GET.b) then
  50.             led(_GET.r, _GET.g,_GET.b)
  51.         end
  52.         client:send(buf);
  53.         client:close();
  54.         collectgarbage();
  55.     end)
  56. end)

Схема

Подключите компоненты друг к другу, как показано на картинке ниже:

ESP8266 moodlight bb.jpg

IP-адрес ESP8266

Перезапустившись, ESP8266 напечатает в мониторе порта IP-адрес ESP8266. Сохраните его, потому что чуть позже он вам понадобится.

В моем случае IP-адрес ESP8266 – это «192.168.1.105». Если IP-адреса нет, то решение этой проблемы, возможно, найдется в этом руководстве.

Если IP-адрес на месте, значит, все в порядке!

ESPlorer-IDE-fixed-1 6.png

Открываем веб-сервер

Переходим в браузер и вводим в адресную строку IP-адрес ESP8266. Вот что вы должны увидеть:

RGB-color-picker-main-selecting-color 7.png

Кликните на поле ввода. Должно открыться небольшое окошко с меню для выбора цвета. Просто проведите мышкой или пальцем, чтобы выбрать цвет, которым загорится ваша RGB-светодиодная лента:

Selecting-color 8.png

Наконец, нажимаем на кнопку «Change Color»:

Esp8266 Browser 9.png

Готово! Теперь лампу настроения можно смело ставить в спальню или гостиную.

Esp8266 living-room 10.png

См.также

Внешние ссылки

  1. randomnerdtutorials.com - $10 DIY WiFi RGB LED Mood Light with ESP8266 (Step by Step)