Задний план
Когда я возвращаюсь с работы на велосипеде, процесс парковки велосипеда в гараже был следующим.
- Откройте входную дверь в дом.
- Выключи будильник.
- Откройте дверь гаража с помощью пульта дистанционного управления.
- Припаркуйте байк в гараже.
Мотор порта гаража
Мотор, используемый в гараже, имеет два разъема, которые работают как кнопка, если они соединены вместе. При подключении состояние порта переключается, и это означает, что если он закрыт, он откроется, а если он открыт, он закроется. Я попытался сократить путь в гараж с помощью этих разъемов, а также некоторого оборудования и программного обеспечения.
Дубль 1
Моей первой попыткой было использовать Arduino Uno, подключенную к считывателю RFID. Это решение позволило бы спрыгнуть с велосипеда перед портом гаража и прикоснуться к считывателю RFID с помощью предоставленного модуля RFID. Я использовал транзистор Mosfit, чтобы попытаться подключить мотор, открывающий порт. Он работал нормально, когда на Arduino Uno подавалось питание от компьютера, но переставал работать, когда для питания использовался источник питания USB. Я пробовал много других решений, чтобы заставить его работать с моими минимальными знаниями электричества, но порт оставался закрытым.
Дубль 2
Через некоторое время, зализывая раны, я получил на свой почтовый ящик заказ проекта Kickstartered Onion Omega2. Это небольшой компьютер с Linux и цитата из его кампании по кикстартеру.
Он сочетает в себе крошечный форм-фактор и энергоэффективность Arduino с мощностью и гибкостью Raspberry Pi.
Приятно то, что он создает собственную точку доступа Wi-Fi, и вы можете получить к ней доступ через SSH. Когда я играл с Omega2, я также наткнулся на видео от ItKindaWorks, где он показывал, как он решает ту же проблему, что и я. В своем решении он использовал релейный модуль, который изолировал гаражный двигатель от электричества. Я купил один из этих модулей, подключил его к Omega2 и смог открыть порт гаража! УСПЕХ :)
(Релейный модуль заставил бы меня впервые решить эту проблему. Но я продолжил путь Omega2.)
Это команда оболочки, которую я запускал на Omega2 для переключения порта гаража.
gpioctl dirout-high 0 && sleep 1 && gpioctl dirout-low 0
Команда устанавливает на выводе 0 IO Omega2 высокий уровень, затем ждет одну секунду, а затем устанавливает низкий уровень на выводе 0. Эта серия имитирует кнопку и переключает текущее состояние порта гаража. Если порт закрыт, он откроется, если он полностью открыт, он закроется, если порт закрывается / открывается, он останавливается, а если он был закрыт на пути вниз, он поднимается и наоборот.
После серии тестов я решил усовершенствовать решение Omega2 с датчиком герконового переключателя, чтобы знать, был ли порт закрыт или открыт. Добавьте протокол MQTT для управления портом, а также для того, чтобы знать его текущий статус. Добавьте веб-страницу, чтобы открыть / закрыть порт из любого места, а также узнать, открыт порт или закрыт.
Аппаратное обеспечение
One Onion Omega2 - сердце проекта.
One Onion Omega dock - обнажить контакты ввода-вывода и USB-разъем питания
Один модуль реле - разделяет питание Omega2 и гаражного порта.
Один геркон - указывает, открыт порт или закрыт
Один магнит - устанавливает высокое или низкое переключение язычка.
Четыре кабельных стяжки« папа-мама - соединяет релейный модуль и герконовый переключатель с док-станцией Omega.
Одно зарядное устройство USB - питает Omega2
Один биполярный кабель - соединяет модуль реле с двигателем, который открывает гараж.
Настраивать
Программное обеспечение
москит - клиент MQTT.
MQTT - это легкий протокол публикации / подписки, который упрощает отправку событий от одного или нескольких издателей, где один или несколько подписчиков могут прослушивать события.
Счет у MQTT-брокера (в моем случае Shiftr.io).
Два скрипта cmd.sh и status.sh, которые будут взаимодействовать с выводами ввода-вывода на Omega2 и брокере MQTT. Я черпал вдохновение из этой публикации Stackexchange при создании скриптов.
Веб-страница с текущим статусом порта гаража и местом, где его можно переключить.
Настраивать
Подключитесь к Omega2 по SSH
Установить москит
opkg update opkg install mosquitto mosquitto-client libmosquitto
Загрузите два сценария cmd.sh и status.sh в корневую папку /.
cd /root wget https://gist.githubusercontent.com/hallgren/c68e0cb648e2abc701b85f483d5902e9/raw/e0a6a0805dd755ac658b685e9ae8239899ba6138/cmd.sh wget https://gist.githubusercontent.com/hallgren/8cec28707047ec0a20750bdc3aaf1661/raw/3c6e3d03d70608bee613370d51142eb42b66c0b9/status.sh #Make the scripts executable chmod +x cmd.sh chmod +x status.sh
Добавьте свою информацию MQTT в два файла. cmd.sh подписывается только на тему и ему нужен только доступ для чтения, в то время как status.sh публикуется и ему нужен доступ для записи в тему.
#!/bin/ash # MQTT SETTINGS host="<mqtt_broker_url>" user="<user>" password="<password>" port=1883 topic="<topic>" . .
Добавьте два файла в /etc/rc.local, чтобы файлы запускались при загрузке Omega2.
# Put your custom commands here that should be executed once # the system init finished. By default this file does nothing. ash /root/cmd.sh & ash /root/status.sh & exit 0
Если все работает правильно, вы должны увидеть, как по теме начинают течь статусные события. Вот как выглядит моя тема. Https://shiftr.io/morgan/garage
Чтобы переключить порт гаража, мы должны отправить toggle
событие в тему. Вы можете сделать это вручную с помощью клиента mosquitto.
mosquitto_pub -h $host -u $user -P $password -p $port -t $topic -m "toggle"
Я создал небольшую программу на Ruby, которая открывает веб-страницу, подключенную к брокеру MQTT. На веб-странице событие переключения может быть инициировано с помощью кнопки, и отображается текущий статус порта гаража. Ниже приведены два изображения, на которых показаны два возможных состояния веб-страницы.
Довольно просто разместить на Heroku, и если вы хотите поэкспериментировать с исходным кодом, вы найдете его на Github.
Take 2.1 - интеграция часов Kronaby
Я владелец часов Kronaby от Anima, аналоговых часов, которые подключаются к вашему смартфону, что делает их наполовину умными.
Приятно то, что вы можете использовать его вместе с IFTTT для управления вещами в вашем окружении. Я использую апплет веб-перехватчика в IFTTT для отправки HTTP-запроса Post, когда я нажимаю одну из кнопок на боковой стороне часов. Запрос запускает событие переключения MQTT с помощью тех же функций, что и кнопка отправки на сборке веб-страницы в Take 2.
Вот видео с финальным результатом. Https://www.youtube.com/watch?v=N_0D8SKBXrE
Удачного взлома.