Перепрошивка USB-реле

Получил на днях посылку с 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

main_4ch.hex

На 8-канальном реле использовалась Atmega8L, в остальном – все то же самое. Особенность 8-каналки – софт не отдает состояние отдельных реле. Возможно когда-то попадется нормальная прошивка, где это есть.

main_8ch.hex

3 мысли о “Перепрошивка USB-реле”

Добавить комментарий