Получил на днях посылку с aliexpress’а – несколько USB-реле, по паре штук на 1, 2 и 4 канала. Их я упоминал в статье – обзоре плат управления майнинг-ригами.
С одноканальными возникла некоторая проблема – устройство нормально определялись в системе, однако софт ругался на bad device id и “не видел” плату. При этом под виндой все же можно было выбрать из списка найденный идентификатор (в отличие, например, от двухканальной платы с идентификатором 6H66 тут он выглядел как “яяяяя”), после чего плата успешно управлялась. Так что железо было целое, осталось решить вопрос с багом в прошивке.
Платы на 1 и 2 канала собраны на Attiny45, на 4 канала – на Atmega8A. На удивление, на пришедших платах (в отличие от тех, что лежали уже давно) были распаяны пины для программатора и, так уж совпало, что буквально недавно обзавелся программатором USBasp V3 AVR 3.3/5V, который как раз и мог работать с данными контроллерами. Было решено попробовать прошить плату.
Поиск прошивки в итоге привел меня к этому проекту. На всякий случай продублирую его содержимое: usb-relay-firmware.tar
Проект исключительно под одноканальное реле – как раз мой случай. Но с учетом того, что двухканалка на том же контроллере, то, думаю, несложно сделать прошивку и под нее. Собственно, в архиве уже есть собранная мной прошивка под 1 канал.
Распиновка контактов на USB-реле (если держать его, разместив реле вверху):
- RESET (1-я нога контроллера)
- SCK (7-я нога контроллера)
- MISO (6-я нога контроллера)
- MOSI (5-я нога контроллера)
И 2 нижних контакта – +5В и общий, соответственно.
В свою очередь в примере с прошивкой использовался другой программатор – piratebus – не такой, как у меня. Описание моего и картинка ниже были найдены тут.
Заметка: пин общего провода не соединен напрямую с общим проводом программатора, с ним соединены 2 нижних левых контакта.
Соединяем согласно схеме, дальше из каталога с прошивкой даем команду:
avrdude -p t45 -c usbasp -P usb -U flash:w:main.hex:i -F
Отключаем реле от программатора, подключаем штатно – должно все работать. Реле теперь пишет, что ID не установлен – и я особо не разбирался, можно ли его перед прошивкой задать вручную – однако теперь нормально управляется.
Раз уж взялся работать с программатором, то по ходу написания статьи решил сдампить прошивку и с двухканального реле.
avrdude -p t45 -c usbasp -P usb -U flash:r:main.hex:i
main.hex для двухканального реле
Решил добавить прошивки и для остальных реле.
Pinout на 4/8-канальном реле:
- MISO (16)
- SCK (17)
- RESET (29)
- MOSI (15)
С питанием чуть веселее, отдельных пинов нет (реле на 4 и 8 каналов исключительно с внешним питанием от 12В). Для прошивки подключил 4 data-пина согласно схеме, общий провод подключил в DC- на винтовом разъеме, а питание подал с внешнего блока. В теории – можно попробовать оставить подключенным USB-шнур, но меня смутила разная земля на входе и выходе программатора, а разбираться не стал.
avrdude -p m8 -c usbasp -P usb -U flash:r:main_4ch.hex:i
На 8-канальном реле использовалась Atmega8L, в остальном – все то же самое. Особенность 8-каналки – софт не отдает состояние отдельных реле. Возможно когда-то попадется нормальная прошивка, где это есть.
http://microsin.ru/content/view/1319/44/ – есть ссылка на проект с прошивками, 8-й меги нет, но есть tiny45
https://mysku.ru/blog/aliexpress/52686.html – работа с USBasp