Мы познакомимся с удивительными способами создания домашней сети из разнообразных устройств, которые будут работать либо автономно, либо при помощи человека.
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 разработок.
Дополнительные детали
Также нам потребуется для создания всех опытов:
- Светодиоды
- Фоторезистор
- Термистор
- Ультразвуковой дальномер
- Реле
- Пьезодинамик
- Мини Сервопривод
- ИК - датчик
- ИК - пульт
Не нужно иметь все эти модули, чтобы работать с IoT, но для того, чтобы сделать все будущие проекты, нам со временем придется приобрести их все.
Программы и библиотеки
Первое - скачайте библиотеку, которая поможет вам намного проще работать в Arduino IDE, если вы используйте ESP8266 - http://wiki.amperka.ru/_media/iot-m:iot-m-libs.zip
Второе - для лучшего ознакомления с IoT нам потребуется веб-сайты, которые предоставят нам возможность отправлять на них данные.
Третье - также нам пригодятся различные приложения на андройд, чтобы с помощью телефона мы могли управлять умным домом.
- OpenHab
- Blink
- и т.д.
Подробно со всеми способами, программами и сайтами мы познакомимся уже в ближайших проектах.
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); }
Когда будете все подключать, не забудьте убрать фотодатчик от ламы, иначе вас будет ждать световое представление. Все должно заработать. В следующий раз мы попробуем усложнить код и добавить еще пару функций.