Привет, Geektimes!
Представляем цикл статей, в котором рассмотрим, как с нуля и без пайки реализовать управляемое из облака недорогое IoT-устройство с огромными потенциалом. За основу возьмем «чистый» микрочип ESP8266, о котором недавно уже писали. Используем свежую DeviceHive-прошивку и напишем простенькое веб-приложение для обращения к cloud-серверу. К микрочипу подключим простое устройство, управлять которым можно будет с помощью пары кликов в браузере.
Перед вами первая статья цикла, из которой мы узнаем, какое именно оборудование нам понадобится.
Совсем недавно состоялся публичный релиз первой версии DeviceHive-прошивки для ESP8266. Цель наших статей — помочь каждому желающему реализовать с помощью DeviceHive собственное IoT-решение максимально дешево, быстро и без лишних сложностей.
Нам понадобится всего пять вещей:
- плата с распаянным ESP8266;
- USB ->UART-переходник;
- источник питания;
- провода;
- сам девайс, который мы хотим подружить с облаком.
Общая стоимость первых четырех пунктов не превысит $ 5. Какое устройство выбрать для экспериментов — решайте сами.
Давайте рассмотрим каждый пункт подробнее.
Плата с ESP8266
Большинство доступных на рынке модулей с ESP8266 представляет собой просто плату, на которой расположены сам ESP8266, SPI флэш-память 25Q40 на 512 килобайт (у ESP на борту — всего 64 килобайта памяти для загрузчика) и небольшое количество дискретных элементов. Отличия зачастую оказываются исключительно визуальными, хотя встречаются еще и специализированные модули с батарейным питанием и различными модификациями. Они подороже, но смысл остается неизменным.
Отдельно отметим модуль ESP-201 (сверху на фотографии). Интересен он, в первую очередь, тем, что не требует пайки, а с внешним разъемом соединено максимальное количество выводов ESP8266, что может быть очень полезно в экспериментах. Далее для демонстрации будем использовать именно этот модуль, однако вы можете взять любые аналоги. Отличия будут только в распайке выводов.
USB -> UART-переходник
Для перепрограммирования ESP8266 использует интерфейс UART. Это обыкновенный последовательный порт с уровнем логической единицы в 3.3 вольта, т. е. простой COM-порт c другим электрическим уровнем. Такие переходники спрятаны в очень многих устройствах, наверняка вы не раз использовали их, даже не подозревая об этом. В прошлом подобные переходники использовались, например, в датакабелях телефонов.
Больше всего распространены переходники на микросхемах CP2102, PL2303, CH431, FT232 и некоторых других. Нам подойдет любой из перечисленных. С последним, однако, стоит быть аккуранее. Меньше всего проблем с драйверами под Windows и OS X у CP2102. Пользователи Linux могут вообще не беспокоиться — все чипы нативно поддерживаются ядром.
Источник питания
ESP8266 нужен источник питания с выходным напряжением от 3 до 3.6 вольт. Это может быть сетевой адаптер на 3,3 вольта, либо понижающий источник. В моменты включения и активного использования ESP8266 может потреблять в импульсах до 300 миллиампер.
У некоторых USB -> UART-переходников имеется выход на 3.3 вольта от внутреннего стабилизатора. Исходящий ток крайне слаб, поэтому дополнительный источник питания — вынужденная необходимость. При питании от USB хорошим решением может стать источник на микросхеме AMS1117-3.3.
Для демонстрации мы используем источник, изображенный на фото, т. к. он оснащен множеством выводов для подключений.
Провода
Можно просто взять и спаять платы, но всего за один доллар можно купить целый шлейф проводов с распаянными разъемами для соединения модулей. В наших модулях встречаются только выводы типа «папа», поэтому нам потребуются провода с разъемами «мама». Эти шлейфы можно легко разделить руками на шлейфы с меньшим количеством проводов.
Для прототипирования — просто мечта!
Устройство, которое мы хотим подключить
Тут уже начинается простор для фантазии. Устройств, которые можно подключить к облаку, — масса. Стоит, однако, учитывать возможности электрического подключения. На любой вывод микросхемы нельзя подавать напряжение, превышающее то, от которого питается сама микросхема. Максимально допустимый ток нагрузки на каждый GPIO-вывод — 12 миллиампер. Кажется, что показатели довольно скромные, но на самом деле это — стандартные характеристики для микроконтроллера. Для подключения с большими нагрузками можно использовать силовые MOSFET-транзисторы, тиристоры, твердотельные реле и другие схемотехнические решения, рассмотрение которых выходит за рамки этой статьи.
Мы же рассмотрим простейшее механическое реле. На большинстве торговых площадок можно найти готовые модули с распаянными реле.
Что представляет собой модуль? Это обыкновенное реле с распаянным предусилителем на оптопаре или транзисторе. Реле — это группа контактов, которые механически замыкаются и размыкаются при помощи расположенного внутри электромагнита. Иначе говоря, контакты способны разрывать или соединять электрическую цепь, когда к электромагниту извне приложено небольшое напряжение. На обмотке электромагнита ток, как правило, получается в районе 10 – 50 миллиампер, поэтому напрямую подключать его к микроконтроллеру нельзя. Специально для этого на модуле распаян небольшой предусилитель для реле, который можно напрямую подключить к микроконтроллеру.
Слева выведена колонка с клемниками, к которым уже можно подключить серьезную нагрузку. Реле, изображенное на фото, способно выдержать 250 вольт и 10 ампер.
Слева на фото можно увидеть клемник. Эти три вывода — общая группа контактов: один нормально замкнутый, один нормально разомкнутый и один общий. При появление логической единицы на входе модуля, реле перебрасывает общий вывод к другому контакту. Таким образом можно коммутировать, размыкать или соединять что-либо.
Для демонстрации работы прошивки мы используем вот такой лазерный модуль:
Модуль требует напряжение в 5 вольт и потребляет около 90 миллиампер. Чтобы подключить его, нам потребуется реле.
Не забывайте: вместо этого модуля мы можем использовать любое другое устройство, будь то лампочка в вашей комнате или мощнейший прожектор (который сам по себе — просто огромный фонарик, потребляющий киловатты электроэнергии). Стоит лишь учитывать мощность устройства при выборе реле.
К ESP8266 можно также подключить различные датчики и сенсоры, т. к. его выводы (как у других микроконтроллеров) могут работать и на вход, и на выход. Помимо этого, у ESP8266 есть аналоговый вход, который можно использовать для передачи собственно аналоговых сигналов. Но этому мы, пожалуй, посвятим отдельную статью.
В следующей статье мы расскажем:
- как получить и настроить сервер DeviceHive;
- как прошить и настроить ESP8266 с прошивкой от DeviceHive.
На самом деле, ничего сложного тут нет. Искушенный читать уже может взять нашу прошивку и попытаться запустить ее самостоятельно. Исходный код и собранный образ можно найти здесь. Пока доступна лишь ранняя публичная версия, работа над которой продолжается. Но строить DIY-устройства можно уже сейчас!
Автор: Николай Хабаров, Senior Embedded Developer
Jeditobe
Если кому будет интересно, то пример реле на плате вот:
Tolako 5v Relay Module for Arduino
И там же есть целые матрицы из таких реле.
Rumlin
твердотельное реле проще.
Jeditobe
Не знаю. Они, вроде как подороже, стабильно
SainSmart 5V 2-Channel Solid State Relay Board for Arduino Uno
Rumlin
Я имел ввиду такое промышленное за 3$
barabanus
Твердотельные реле плохо работают с емкостной нагрузкой. Однажды я пытался управлять светодиодными лампами со своими встроенными блоками питания через твердотельное реле, так лампы в выключенном состоянии вспыхивали в случайном порядке раз в десять секунд. Тока утечки реле хватало на зарядку внутренних конденсаторов.
evtomax
Помехоподавляющий конденсатор параллельно нагрузке, и ток утечки пойдёт через него.
barabanus
Какого типа конденсатор и какой емкости? Я могу попробовать сегодня.
Вообще, в даташите к своему твердотельному реле (самый дешевый Fotek на eBay) я видел фразу: работает только с резистивной нагрузкой.
Rumlin
керамический 0,01 мкф с запасом по напряжению +30%.
Indemsys
Напишите пожалуйста, сколько у чипа ESP8266 памяти (Flash, RAM и т.д.)
Jeditobe
github.com/esp8266/esp8266-wiki/wiki
It's a wireless SoC
It has GPIO, I2C, ADC, SPI, PWM and some more
It's running at 80MHz
64KBytes of instruction RAM
96KBytes of data RAM
64KBytes boot ROM
It has a Winbond W25Q40BVNIG SPI flash
It's a RISC architecture
The core is a 106micro Diamond Standard core (LX3) made by Tensilica
The ESP8266 chip is made by Espressif
Modules bearing this chip are made by various manufacturers
Zzzuhell
Возможен обратный вариант: устройство отдает в облако информацию о состоянии?
Надо срочно сколхозить датчик протечки :)
DataArt Автор
Конечно! Используйте команду gpio/read, если нужно периодический читать состояние или команду gpio/int, чтобы подписаться на уведомление об изменения состояния входа. Пример использования уведомлений можете найти здесь — github.com/devicehive/esp8266-firmware/blob/master/examples/gpio-in-out.html