Отправляясь в отпуск или другую длительную поездку, перед многими путешественниками встаёт вопрос кормления оставленных без попечения питомцев.
На просторах Интернета можно найти немало вариантов дистанционно управляемых кормушек, а в магазинах - готовых изделий. Повторить или сделать свою конструкцию можно, но связь с аппаратами почти всегда предполагает взаимодействие с серверами на разных условиях и по всевозможным сценариям. Настройка такого сопряжения не всегда проста и надёжна. Не говоря уже о необходимости оплаты и ввода данных при регистрации.
Блокчейн решит многие из вышеперечисленных проблем. Никаких серверов, никакой оплаты, никаких данных от пользователя при регистрации и минимум настроек! В статье описан способ удалённого управления устройствами с помощью технологии блокчейн.
Прежде чем познакомить читателей с анонсированным в предыдущей публикации "Блокчейн для всех" материалом об управлении устройствами через блокчейн, хочу рассказать об упущенной в прошлой статье теме. Речь идёт о тестовых сетях.
Поскольку запись в блокчейн любой информации требует расходов цифровых активов (в предыдущей публикации имелись в виду токены Emercoin), именно работа в тестовых сетях позволит читателям, решившим воспользоваться предложенными решениями, избежать ненужных трат.
Тестовые сети присутствуют во многих блокчейн-платформах, а не только в Emercoin, и предназначены они, как наверняка понятно из названия, для тестирования и проверки каких-либо действий в сети блокчейн. Этим сетям доступен весь функционал, как и основным. Единственное отличие тестовой сети от основной - это то, что в ней "крутятся" тестовые токены и весь блокчейн, т. е. все записи на некоторых платформах периодически обнуляются, ведь это, по сути, всего лишь черновик, и "раздувать" его нет смысла.
Для того чтобы открыть тестовый кошелёк и синхронизироваться с тестовой сетью, ничего скачивать не потребуется, если вы уже загрузили и установили Emercoin Core, описанный в статье "Блокчейн для всех", достаточно в файле конфигурации (о файле конфигурации emercoin.conf рассказано в вышеуказанной статье) дописать в начале строчку testnet=1. После этого станет открываться точно такой же кошелёк, что и основной, с пометкой в верхней части окна "[тестовая сеть]" рис. 1.
Рис. 1. Вид окна Emercoin Core - кошелёк [тестовая сеть]
Тестовые монеты Emercoin любезно предоставляют разработчики платформы, если к ним обратиться с такой просьбой через форму обратной связи на сайте emercoin.com. Укажите адрес, на который надо перевести тестовые монеты. Посмотреть и скопировать этот адрес можно в открытом кошельке, пройдя по вкладкам "получить". Для других платформ механизм распространения тестовых монет может быть иным.
Для работы в тестовых сетях необходимы токены, и распространяются они разработчиками платформ бесплатно. Тестовые токены не имеют монетарных свойств, т. е. они не продаются на биржах и не обмениваются на какую-либо валюту. Поэтому никакой финансовой подоплёки в их распространении нет.
Обратите внимание - в этом проекте используется блокчейн-платформа Waves, а не Emercoin. Скачивать и синхронизировать блокчейн на свой компьютер не требуется!
Адрес платформы - <https:// testnet.waves.exchange/>. После несложной регистрации (вариант "Программный доступ" не потребует ввода каких-либо персональных данных и адреса email - рис. 2) станет доступен весь функционал платформы. Пусть читателя не пугает интерфейс системы с наличием вкладок "Купить криптовалюту", "Торговля" и т. п. Ещё раз повторюсь - сеть тестовая, и все манипуляции в ней - с "ненастоящими" активами и валютами.
Рис. 2.
Тестовые токены можно получать один раз каждые десять минут, посещая страницу https://testnet. wavesexplorer.com/faucet/ платформы Waves и вводя адрес кошелька в поле Testnet Address (рис. 3).
Рис. 3.
Адрес или запишите при регистрации, или посмотрите в правом верхнем углу, кликнув на "галочку" (рис. 4).
Рис. 4.
Разрабатывая систему управления через блокчейн, хотелось экспортиро-вать код на миниатюрные устройства типа Arduino, но микроконтроллеры, установленные на этих платформах, не имеют мощностей для управления соединениями вида https, по которым идёт взаимодействие с блокчейном.
Проект можно реализовать с использованием миниатюрного компьютера Raspberry Pi. К тому же плата Raspberry Pi оснащена портами ввода/вывода GPIO, что решает вопрос с устройством сопряжения.
Но я остановил свой выбор на полноценном компьютере с операционной системой Windows, на который можно возложить много дополнительных функций, таких как охрана и видеонаблюдение. Для соединения компьютера с приводом кормушки я применил нестандартный и, по моему мнению, простой вариант сопряжения устройства с компьютером.
Рис. 5. Схема подключения к клавиатуре
Старая USB-клавиатура после небольшой доработки справится с задачей управления как минимум трёх реле. Как? Ведь на ней только кнопки! И с клавиатуры можно только ввести информацию в компьютер, а для управления необходимо выводить. Всё очень просто. Индикаторы NumLock, CapsLock и ScrollLock могут загораться и гаснуть не только при нажатии одноимённых клавиш, но и по сигналам от программ. На рис. 5 приведена схема подключения к клавиатуре, если ток срабатывания реле не превышает 50 мА. Схема на рис. 6 позволит реализовать управление в случае большего тока срабатывания. Излучающий диод оптрона подключают параллельно светодиоду клавиатуры или вместо него.
Рис. 6. Схема, которая позволит реализовать управление в случае большего тока срабатывания
Использовать можно либо всю клавиатуру, либо только плату, на которой размещены индикаторы NumLock, CapsLock и ScrollLock.
Можно воспользоваться готовым решением от китайских производителей - фотореле в виде модуля XH-M131 (рис. 7).
Рис. 7. Модуль XH-M131
Фотоэлемент закрепляют вплотную к штатному индикатору клавиатуры и све-тоизолируют, например фольгой. Какого-либо вмешательства в клавиатуру в этом случае не требуется.
Теперь, подключив к контактам реле какую-либо нагрузку, уже локально можно без всяких программ включать и выключать её, нажимая на клавишу, на которую реагирует задействованный светодиод.
Конечно, для электропривода кормушки такое простое устройство не годится, поскольку после сигнала включения требуется подать сигнал на выключение, и в случае промедления или задержки прохождения сигнала в сети возникнет угроза передозировки.
Несомненно, эту проблему можно было решить программно, но, помимо усложнения программной составляющей проекта, терялась возможность простого включения или выключения чего-либо и применения программы для других целей.
Поэтому решено было включить в узел коммутации одновибратор, срабатывающий при любых изменениях состояния светодиода клавиатуры. В этом случае, подав сигнал на включение, не надо заботиться о выключении. Всякое изменение состояния задействованного индикатора клавиатуры приведёт к тому, что устройство немного прокрутит привод кормушки и отсыпет порцию.
Одновибратор с оптронной развязкой можно рализовать на базе Arduino. Скетч single_vibrator.ino для загрузки в Arduino находится здесь. В двух местах скетча можно менять значения задержки delay(3000), увеличивая или уменьшая время, на которое будет включён привод кормушки, регулируя порцию выдаваемого за один раз корма.
В строках if (int(sensorValue) >100 && sost == 0) и if (int(sensorValue) <100 && sost == 1) скетча значение после знаков ">" и "<" надо подобрать таким, чтобы чётко и однозначно указать порог освещённости фоторезистора светодиодом клавиатуры, при котором включается реле. Узнать это значение, включив монитор порта в программной оболочке IDE Arduino после загрузки скетча, можно так. Включая и выключая светодиод клавиатуры, к которому "пристыкован" фоторезистор (ещё раз напомню, что эта фотопара должна быть хорошо светоизолирована от внешних засветок), обратите внимание на числа, выводимые в окне монитора. Минимальное число при включённом светодиоде и будет искомым значением.
Конечно, Arduino можно подключить к компьютеру через физический USB-порт, Bluetooth или по Wi-Fi, а реализация, предложенная в этой статье, - это всего лишь один из интересных, по моему мнению, вариантов сопряжения компьютера и устройства. Ещё один нестандартный вариант я предлагал в этой статье. Основным же в этом материале остаётся не способ сопряжения устройства с компьютером, а способ управления через Интернет.
Итак, войдите в систему Waves, узнайте адрес кошелька и получите тестовые токены на него.
После того как у вас будет адрес кошелька и энное количество тестовых токенов Waves, можно приступать к настройке и работе с программой, которую я приготовил для управления светодиодами клавиатуры.
Программа control_keyboard_ indicators.exe и файл её настройки ConfigLOCK.ini расположены на ftp-сервере журнала.
Программа control_keyboard_ indicators.exe периодически проверяет баланс кошелька и, в зависимости от его состояния в соответствии с условием, даёт команду на включение определённого индикатора клавиатуры.
Все настройки программы сводятся к изменению файла конфигурации ConfigLOCK.ini под ваши потребности. На рис. 8 показан пример программы.
Рис. 8. Пример программы
Для настройки достаточно поменять значения ключей всего в трёх подчёркнутых строках.
В ключ address после знака равенства впишите адрес кошелька сети Waves, от состояния которого будет зависеть сценарий управления.
Ключ lock указывает, каким именно индикатором клавиатуры будет управлять программа.
Ключ condition - это условие изменения состояния выбранного индикатора.
Если значение ключа condition = "<", то сигнал на изменение состояния индикатора подаётся при уменьшении баланса, т. е. управлять может только владелец кошелька, ведь изменять баланс на уменьшение может только он сам.
Значение ключа condition = ">" приведёт к тому, что сигнал на изменение состояния индикатора будет подан только при увеличении баланса, т. е. управлять может любой пользователь, кто отправит на адрес из ключа address любое число токенов.
В седьмой строке под ключом var для информации указаны все варианты ключей lock и condition.
Для управления тремя индикаторами клавиатуры можно запускать три экземпляра программы control_keyboard_ indicators.exe, скопировав их вместе с файлами конфигурации в отдельные папки. Ключи lock в файлах ConfigLOCK.ini, конечно же, должны быть разными. А ключи condition и address могут быть любыми для управления индикаторами независимо друг от друга и по разным сценариям.
Само управление непосредственно можно выполнить или с другого удалённого компьютера или даже со смартфона всё через тот же Web-интерфейс платформы Waves. Используя тот же аккаунт, что уже зарегистрирован, или заведя новый, совершите исходящую или входящую транзакцию на адрес из файла конфигурации ConfigLOCK.ini и на клавиатуре компьютера с запущенной программой control_keyboard_ indicators.exe обязательно изменит состояние индикатор, указанный под ключом lock (рис. 9).
Рис. 9.
Web-интерфейс для управления, конечно, не очень удобен, но при желании можно воспользоваться API, предоставляемым создателями платформы, и создать свой простой, удобный интерфейс для управления.
Упомянутые в статье программы размещены здесь.
Автор: Ю. Шомников, пгт Верховье Орловской обл.