Умная лампа с помощью Arduino и ESP8266

Мы познакомимся с удивительными способами создания домашней сети из разнообразных устройств, которые будут работать либо автономно, либо при помощи человека.

1. Что нам нужно

Первая статья ознакомительная, я хочу, чтобы вы поняли, что я буду работать с самыми распространенными платами и модулями, чтобы большинство людей могло попробовать себя в разработке IoT.

Итак, для начала нам потребуются два микроконтроллера, которые мы будем использовать: Arduino UNO и ESP8266.

Arduino UNO

Я думаю не надо знакомить вас с этой платой, она очень популярна среди начинающих и поклонников DIY.  Скажу только то, что способности этой платы ограничены и UNO не может работать с протоколом https, не хватает вычислительной мощности микроконтроллера ATmega328P, поэтому, когда нам придется работать с микроконтроллером и протоколом https, то мы будем программировать ESP8266.

ESP8266

Я буду работать с Troyka-модулем ESP8266 от компании "Амперка", но можно спокойно использовать и обычный модуль ESP 8266, они практически не имеют отличий, главное при подключении посмотреть значение пинов и запомнить, что ESP работает по 3,3 вольтовой логике, поэтому нужно либо подключать через 5 вольт, но подключить в схему стабилизатор напряжения, либо просто использовать пин со подачей напряжения в 3,3 вольта.

Данный микроконтроллер не самый мощный в серии компании Espressif на общем рынке, но он один из самых дешевых и распространенных. Он будет основой наших IoT разработок.

Дополнительные детали

Также нам потребуется для создания всех опытов:

  1. Светодиоды
  2. Фоторезистор
  3. Термистор
  4. Ультразвуковой дальномер
  5. Реле
  6. Пьезодинамик
  7. Мини Сервопривод
  8. ИК - датчик
  9. ИК - пульт

Не нужно иметь все эти модули, чтобы работать с IoT, но для того, чтобы сделать все будущие проекты, нам со временем придется приобрести их все.

Программы и библиотеки

Первое - скачайте библиотеку, которая поможет вам намного проще работать в Arduino IDE, если вы используйте ESP8266 - http://wiki.amperka.ru/_media/iot-m:iot-m-libs.zip

Второе - для лучшего ознакомления с IoT нам потребуется веб-сайты, которые предоставят нам возможность отправлять на них данные.

  1. www.dweet.io
  2. maker.ifttt.com
  3. narodmon.ru
  4. и т.д.

Третье - также нам пригодятся различные приложения на андройд, чтобы с помощью телефона мы могли управлять умным домом.

  1. OpenHab
  2. Blink
  3. и т.д.

Подробно со всеми способами, программами и сайтами мы познакомимся уже в ближайших проектах.

2. Делаем "умную лампу"

Я уже заставил вас скучать? Сделаем самую простую умную лампу, которая будет включатся, если в комнате темно.

На самом деле для этого даже не нужна UNO, можно использовать цифровой настраиваемый фотодатчик, но в будущим мы изменим этот проект до неузнаваемости, поэтому придется с чего-то начать.

Если вы не уверены в том, что готовы работать с электричеством в 220 вольт, то используйте вместо фонаря обычный светодиод. В начале я взял свою старую лампу TLI – 204, такие есть практически в любом магазине (отключил заранее от сети).

У лампы два вида работы (светит/не светит), что хочу сделать я, я хочу увеличить ее функциональность, оставить возможность полностью включить и полностью выключить лампу.

Подключить как-то параллельно в цепь фоторезистор с реле без использования еще одного переключателе не получится, поэтому я решил поставить вместо двухпозиционного переключателю трехпозиционный тумблер.

Общая электрическая схема должны будет выглядеть так:

Если все сделать правильно, то на третьей позиции переключателя вы сможете, подавая с микроконтроллера ток на реле, включать лампу.

Подключим к ардуино фоторезистор. Схема выглядит так:

3. Код для "умной лампы"

Теперь напишем код, по которому будем передавать ток на реле, если в комнате будет темно.

#define SHINE 5 //ПИН НА ФОТОРЕЗИСТОРЕ
#define REL 13 //ПИН НА РЕЛЕ

void setup(){
	pinMode(SHINE, INPUT);
	pinMode(REL, OUTPUT);
	Serial.begin(9600);
}

void loop(){
	if (analogRead(SHINE)<600) // Если света в комнате мало, то включаем лампу
	{
		digitalWrite(REL, HIGH)
	}
	else // если много, то выключаем
	{
		digitalWrite(REL, LOW);
	}
	Serial.printIn(analogRead(SHINE));
	selay(500);
}

Когда будете все подключать, не забудьте убрать фотодатчик от ламы, иначе вас будет ждать световое представление. Все должно заработать. В следующий раз мы попробуем усложнить код и добавить еще пару функций.

13 марта 2018 в 13:59 | Обновлено 13 июля 2020 в 13:48 (редакция)
Опубликовано:
Уроки, , , ,

Добавить комментарий

Ваш E-mail не будет никому виден. Обязательные поля отмечены *