В современном мире «интернет вещей» (IoT) стремительно набирает популярность. Он в будущем поможет человечеству автоматизировать многие аспекты жизни, упростить рутинные операции, да и просто сделать жизнь комфортнее и приятнее. Современная элементная база только способствует этому. Еще несколько лет назад задача управления устройством из сети порождала необходимость использовать высокопроизводительные процессоры, что увеличивало стоимость конечного исполнительного устройства в разы. Сейчас же есть возможность построить простые и эффективные IoT-решения за копейки.
Сделать свой дом поистине «умным» можно и без использования модных Raspberry Pi или Arduino. Большинство IoT-задач сводится к подключению типовых датчиков и исполнительных механизмов со стандартными интерфейсами: I2C, SPI, UART. А иногда даже с элементарным аналоговым выводом, с которого нужно считать наличие напряжения или подать его, или просто замкнуть.
Вот россыпь датчиков — примерно $ 20 за все. Продаются на куче онлайн-площадок (Aliexpress, Ebay и т. п).
Большинство подобных датчиков, конечно, можно купить в виде простых микросхем или не распаянных на плате деталей в магазине радиодеталей. Это бывает проще, но в большинстве случаев удобнее взять такую плату и соединить с платой микроконтроллера проводом:
Используя дешевые аналоговые датчики, уже можно реализовать множество простых, но полезных решений: автоматическое включение света в зависимости от освещенности, включение нагревателя для поддержания температуры, контроль открывания-закрывания дверей.
Стоимость подобных датчиков ничтожна мала. А исполнительные механизмы, даже если у них нет интерфейсов для программирования, можно активировать банальными реле. Например, вы хотите, чтобы, когда вы открываете входную дверь, придя с работы, кофемашина начинала делать кофе. Но при этом она не должна активироваться, когда вы закрываете дверь, уходя утром. Или хотите включить кофемашину из офиса, кликнув в браузере.
В большинстве случаев, для решения задачи придется немного модифицировать кофемашину — поставить механизм, который будет давить на кнопку, или добавить внутрь реле, которое будет замыкать контакты, имитируя нажатие кнопки.
Большинство разработчиков предпочтет использовать широко распиаренные Raspberry Pi или Arduino — это все равно что стрелять из пушки по воробьям. Разработчиков привлекает простота написания приложения для данных платформ и большое сообщество. При этом такие задачи можно решить, используя микросхемы стоимостью по два доллара ($ 2,5 в виде модуля на большинстве китайских торговых площадок, включая доставку) и при этом получить все преимущества и гибкость разработки на вашем любимом языке. В итоге получится полноценное IoT-устройство, которое является частью сети, позволяя легко масштабировать и изменять систему. Подключаться к сети оно будет при помощи обыкновенного Wi-Fi, который чаще всего уже есть.
При такой стоимости во многих случаях будет дешевле установить такой модуль, чем прокладывать кабель (стоимость меди + прокладки). Если бы все производители договорились бы устанавливать подобные интерфейсы в бытовые приборы (например, в вышеописанную кофеварку), стоимость производства большинства устройств увеличилась бы на копейки, но при этом «умный дом» был бы действительно умным и недорогим.
Исходя из вышеописанного, очень выгодно смотрится микроконтроллер ESP8266 со встроеным Wi-Fi-модулем. Однако его программирование может потребовать недюжинных усилий и умений — не зря же его часто подключают к другим платформам для получения Wi-Fi-соединения через UART, используя стандартную прошивку от произоводителя. Да и изобретать велосипед — как-то странно…
Мы предлагаем использовать нашу платформу с открытым исходным кодом DeviceHive и микросхему ESP8266 c нашей прошивкой, реализующей протокол DeviceHive на этом SoC. Вам останется лишь подключить устройство к модулю и общаться с серверов DeviceHive по HTTP или через WebSocket в среде, в которой вы привыкли.
Мы предоставляем свой код под лицензией MIT — серверной части и всего клиентского ПО. Сервер можно легко развернуть и облачном сервисе, и в локальной сети. Чтобы просто поиграть и попробовать DeviceHive в действии, можно воспользоваться бесплатным плейграундом.
Общение с прошивкой для ESP8266 сводится к трем простым действиям:
Рассмотрим, как послать команду по HTTP, на примере JavaScript:
Затем достаточно позвать эту функцию, например, send('gpio/write', 1, 0, 0), указав команду и параметры. В данном случае команда “gpio/set” установит логическую единицу на выводе GPIO12 и логический ноль на выводах GPIO13 и GPIO14, после чего подключенное устройство выполнит что-то. Просто, не правда ли?
Написание HTTP-запроса, задача, решенная для любого языка программирования, т.е. разработчик может реализовывать свое клиентское приложение в любой среде разработки, на любой платформе, и при этом управлять настоящим IoT-устройством.
В планах реализовать:
Пока есть только демо, но в ближайшее время появится версия с открытым исходным кодом, доступная всем для скачивания. Следите за обновлениями. С первым релизом подготовим еще одну статью с подробным видео, рассказывающуя, как завести плейграунд DeviceHive, как прошить и запустить модуль с ESP8266, подключив простейшие дискретные устройства. И напишем простую веб-страничку, чтобы ими управлять.
Автор: Николай Хабаров, Senior Embedded Developer
Сделать свой дом поистине «умным» можно и без использования модных Raspberry Pi или Arduino. Большинство IoT-задач сводится к подключению типовых датчиков и исполнительных механизмов со стандартными интерфейсами: I2C, SPI, UART. А иногда даже с элементарным аналоговым выводом, с которого нужно считать наличие напряжения или подать его, или просто замкнуть.
Вот россыпь датчиков — примерно $ 20 за все. Продаются на куче онлайн-площадок (Aliexpress, Ebay и т. п).
Большинство подобных датчиков, конечно, можно купить в виде простых микросхем или не распаянных на плате деталей в магазине радиодеталей. Это бывает проще, но в большинстве случаев удобнее взять такую плату и соединить с платой микроконтроллера проводом:
Используя дешевые аналоговые датчики, уже можно реализовать множество простых, но полезных решений: автоматическое включение света в зависимости от освещенности, включение нагревателя для поддержания температуры, контроль открывания-закрывания дверей.
Стоимость подобных датчиков ничтожна мала. А исполнительные механизмы, даже если у них нет интерфейсов для программирования, можно активировать банальными реле. Например, вы хотите, чтобы, когда вы открываете входную дверь, придя с работы, кофемашина начинала делать кофе. Но при этом она не должна активироваться, когда вы закрываете дверь, уходя утром. Или хотите включить кофемашину из офиса, кликнув в браузере.
В большинстве случаев, для решения задачи придется немного модифицировать кофемашину — поставить механизм, который будет давить на кнопку, или добавить внутрь реле, которое будет замыкать контакты, имитируя нажатие кнопки.
Большинство разработчиков предпочтет использовать широко распиаренные Raspberry Pi или Arduino — это все равно что стрелять из пушки по воробьям. Разработчиков привлекает простота написания приложения для данных платформ и большое сообщество. При этом такие задачи можно решить, используя микросхемы стоимостью по два доллара ($ 2,5 в виде модуля на большинстве китайских торговых площадок, включая доставку) и при этом получить все преимущества и гибкость разработки на вашем любимом языке. В итоге получится полноценное IoT-устройство, которое является частью сети, позволяя легко масштабировать и изменять систему. Подключаться к сети оно будет при помощи обыкновенного Wi-Fi, который чаще всего уже есть.
При такой стоимости во многих случаях будет дешевле установить такой модуль, чем прокладывать кабель (стоимость меди + прокладки). Если бы все производители договорились бы устанавливать подобные интерфейсы в бытовые приборы (например, в вышеописанную кофеварку), стоимость производства большинства устройств увеличилась бы на копейки, но при этом «умный дом» был бы действительно умным и недорогим.
Исходя из вышеописанного, очень выгодно смотрится микроконтроллер ESP8266 со встроеным Wi-Fi-модулем. Однако его программирование может потребовать недюжинных усилий и умений — не зря же его часто подключают к другим платформам для получения Wi-Fi-соединения через UART, используя стандартную прошивку от произоводителя. Да и изобретать велосипед — как-то странно…
DeviceHive
Мы предлагаем использовать нашу платформу с открытым исходным кодом DeviceHive и микросхему ESP8266 c нашей прошивкой, реализующей протокол DeviceHive на этом SoC. Вам останется лишь подключить устройство к модулю и общаться с серверов DeviceHive по HTTP или через WebSocket в среде, в которой вы привыкли.
Мы предоставляем свой код под лицензией MIT — серверной части и всего клиентского ПО. Сервер можно легко развернуть и облачном сервисе, и в локальной сети. Чтобы просто поиграть и попробовать DeviceHive в действии, можно воспользоваться бесплатным плейграундом.
Общение с прошивкой для ESP8266 сводится к трем простым действиям:
- послать команду на устройство для осуществления какого-либо действия (активирование выводов микросхемы, запись данных в интерфейс, включение «подтяжки» для входных выводов микросхемы, запрос состояния выводов, уведомление сервера об изменении уровня на выводах);
- спросить сервер о результате выполнения команды;
- начать «поллить» уведомления, на которые подписались при помощи команд.
Рассмотрим, как послать команду по HTTP, на примере JavaScript:
function send(command, r, g, b) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', 'http://server.example.com/api/device/device-uuid/command', true);
xmlhttp.setRequestHeader("Authorization", "Basic " + btoa("user:password"));
xmlhttp.setRequestHeader("Content-type", "application/json;charset=UTF-8");
var myjson = {};
myjson["command"] = command;
myjson["parameters"] = {};
myjson["parameters"][12] = r;
myjson["parameters"][13] = b;
myjson["parameters"][14] = g;
xmlhttp.send(JSON.stringify(myjson));
}
Затем достаточно позвать эту функцию, например, send('gpio/write', 1, 0, 0), указав команду и параметры. В данном случае команда “gpio/set” установит логическую единицу на выводе GPIO12 и логический ноль на выводах GPIO13 и GPIO14, после чего подключенное устройство выполнит что-то. Просто, не правда ли?
Написание HTTP-запроса, задача, решенная для любого языка программирования, т.е. разработчик может реализовывать свое клиентское приложение в любой среде разработки, на любой платформе, и при этом управлять настоящим IoT-устройством.
В планах реализовать:
- SPI;
- I2C;
- UART;
- ADC (аналоговый вход);
- 1-wire-интерфейс для DS18B20 и DHT11;
- PWM (ШИМ, широтно-импульсная модуляция).
Пока есть только демо, но в ближайшее время появится версия с открытым исходным кодом, доступная всем для скачивания. Следите за обновлениями. С первым релизом подготовим еще одну статью с подробным видео, рассказывающуя, как завести плейграунд DeviceHive, как прошить и запустить модуль с ESP8266, подключив простейшие дискретные устройства. И напишем простую веб-страничку, чтобы ими управлять.
Автор: Николай Хабаров, Senior Embedded Developer