USB Контроллер умного дома (или GPIO на любом компьютере II)
Рассмотрим простой способ сделать USB контроллер умного дома из USBasp на базе Atmega8.Прошивку можно адаптировать и для других микроконтроллеров,например Atmega32 c 32 входами/выходами.
Ожидается обновление версии до 1.1,где будет возможна поддержка до 4 датчиков DHT и исправлены ошибки.
К сожалению на USBasp доступны без пайки только 6 выводов микроконтоллера и 2 светодиода,но это самый быстрый способ получить готовое устройство USB контроллера,умеющего на данный момент:
-Управление внешними разнообразными нагрузками (выводы GPIO ) ,например реле.Чтение состояния выводов.2 вывода умеют работать как PWM (ШИМ) и могут например управлять яркостью светодиодной подсветки.
-Один из выводов устройства умеет работать как RCremote ,к которому можно подключить передатчик на 433 или 315 мгц для управления популярными сейчас радиорозетками или люстрами с радиоуправлением.Так же можно передавать данные на удаленное устройство,например на монитор отображения какой либо информации.Описание передачи информации по данному алгоритму можно посмотреть тут.Протокол совместим с микросхемами,использующуеся в радиопультах.
-Подключение датчиков DHT11 или DHT22 для мониторинга температуры и влажности.
Клиентская программа написана на Си и может работать как в операционной системе Windows так и в Linux.Драйвера для HID варианта не требуются.Для USB варианта устанавливаются стандартные драйвера V-USB.
Прошивка микроконтроллера основана на проекте V-USB,создающим программный USB.
Архив с прошивкой ,утилитой управления и её исходный код можно скачать по ссылке.В архиве имеется вариант usb-gpio как USB устройство,в том числе исходный код на Си утилиты управления и откомпилированый вариант для windows.Для его необходимы стандартные V-USB драйвера.В разработке вариант usb-gpio как HID устройство.
Прошивка м/к:
Микроконтроллер прошивается стандартно ,через другой программатор USBasp или Arduino .Прошивка возможна и при установленном USBasp загрузчике.
Подключение устройств к контроллеру:
Не забывайте,что на шлейфе,идущим в комплекте контакты будут зеркальны относительно ключа у 5 контакта.
Номер контакта |
Номер GPIO |
Доп.Функции |
Светодиод | 1 | - |
Светодиод | 2 | - |
5 | 3 | PWM |
1 | 4 | PWM |
9 | 5 | DHT |
7 | 6 | RCremote |
6 | 7 | - |
4 | 8 | - |
Все порты могут назначены как на ввод так и на вывод,а так же могут использоватся дополнительные функции:
DHT- подключение датчика влажности DHT 11 или DHT 22 ,датчик определяется автоматически.
PWM- на портах возможен режим ШИМ для управления мощностью(яркостю) устройств.
RCremote - Отправка команды для управления радиоустройствами.К данному выводу подключается радиопередатчик 433 или 315 мгц.
Управление через консольную утилиту:
Утилитой можно управлять из других программ , используя следущие команды:
gpio-usb on <номер GPIO> -Включает высокий уровень на соотвествующем порте.
gpio-usb off <номер GPIO> -Выключает высокий уровень на соотвествующем порте.
gpio-usb status - Чтение статуса GPIO на вывод.
gpio-usb statusin -Чтение статуса GPIO на ввод.
gpio-usb mode -Управление режимом порта.Для того,чтобы например назначить 7 порт на ввод необходимо ввести gpio-usb mode 7 1 .Режимы записываются в энергонезависимую память.
gpio-usb rcsend <key> -Отправить ключ RCremote.
gpio-usb dhtread -Чтение датчика DHT11 или DHT22,подключенного на GPIO 5.
gpio-usb dhtsetup -Запрос статуса и вкл/выкл опроса датчика DHT.Опрос происходит раз в минуту.Статус записывается в энергонезависимую память.
gpio-usb pwm3 <level> -Управление ШИМ на 3 GPIO.
gpio-usb pwm4 <level> -Управление ШИМ на 4 GPIO.
Исходный код утилиты можно интегрировать в свои проекты..Например можно дополнить оболочкой (GUI) для управления.
Принимаются предложения и пожелания по доработке утилиты.
Стороннее приложение для работы в датчиками BMP085/180 и DHT11/22 ссылка в windows.