Преобразователь USB — I2C/SPI/GPIO интерфейсы на Atmel AT90USB647
userial — проект, позволяющий создать свободный мост между USB и устройствами использующими I2C/SPI/GPIO интерфейсы, на основе процессора фирмы Atmel AT90USB647. Аппаратное и программное обеспечение реализовано в соответствии с Общедоступной лицензией ( Open Source licence ).
Поддерживаются следующие интерфейсы:
* 1 × интерфейс USB (последовательная эмуляция)
* 1 × JTAG интерфейс
* 1 × I2C (TWI)
* 1 × SPI
* 8 × цифровых вводов/выводов
* 4 × Аналога к цифровым конвертерам
Устройство общается с главным компьютером, используя CDC (коммуникационный класс устройства USB).
Это облегчает использовать userial, не устанавливая драйвер устройства или специальные библиотеки.
Использование интерфейса основанного на ASCII командах, позволяет легко обращаться к исполнительным устройствам вручную, с использованием простой терминальной программы. Это дает возможность получать быстрые результаты, формировать устройства « на лету « или управлять прототипами напрямую.
Схемы и программное обеспечение распространяются свободно.
Программируемое оборудование выпущено в соответствии с лицензией Массачусетского технологического института ( MIT license), аппаратные средства реализованы в соответствии с (Creative Commons Attribution-Share Alike 3.0 Unported License).
Если Вам не хочется создавать свои собственные аппаратные средства, то Вы можете поискать Bumble-B от Fletchtronics. Это — довольно недорогое устройство, основанное на чипе AT90USB162, поддерживаемое программным обеспечение userial, начиная с версии 1.9.
Fletchtronicsc продает готовые устройства названные Bumble-B с перенесенным userial на процессоре AT90USB162.
Все новости могут быть прочитаны в userial news archive…
Перевод с английского dr-mobius
Оригинал статьи на английском.
Источник
Usb to gpio adapter своими руками
Существует несколько способов подключения исполнительных механизмов ( освещение и другие электроприборы) для управления через компьютер в системе умного дома или в других электронных поделках.Это и отдельные микроконтроллеры,подключенные через ethernet или через последовательный порт и используя различные беспроводные протоколы.Но существует вариант и простой и очень дешевый — всего в 200 рублей можно уложится в примере,который ниже будет описан.Хотя данный вариант это не полноценный GPIO ,но как минимум управление портами и чтение их состояния возможно.Так же существует ещё вариант GPIO на основе USBasp с возможностью подключения ,например датчиков влажности
Для этого нам необходимо всего два основных радиокомпонента:
1. I2C-USB переходник,который можно получить,перепрограммируя USBasp программатор.Его стоимость на ebay.com всего чуть больше 3$.Можно собрать и самому,но врят ли цена будет ниже..
2.Микросхема MCP23017 — это I2C расширитель портов.Имеет 16 вводов-выводов.Может как читать состояние контактов,так и управлять на них нагрузкой.Примерная цена 1.5$.
Управление MCP23017 возможно как из Linux так и из Windows.
Подключение микросхемы MCP23017 к I2C осуществляется согласно распиновке микросхемы:Vdd подключаем к плюсу питания,к Vss подключаем минус питания.Для адреса 0х20 замыкаем А0,А1 и А2 на минус.SCL и SDA подключем на соотвествущие выводы GPIO Raspberry PI или переходника I2C-USB.Так же необходимо подключить вывод Reset к плюсу против случайной наводки на вывод и ненамеренного сброса микросхемы в исходное состояние.Согласно стандарту шины I2C выводы SCL и SDA необходимо «подтянуть» на плюс через резисторы 4.7кОм (У Raspberry они уже запаяны на плате).
Пример работы с MCP23017 из Linux
Данный способ подключения и исходный код программы подходит для подключения MCP23017 и к одноплатному компьютеру Raspberry PI и к другим , имеющим на борту Linux.
- Откройте,чтобы увидеть код программы mcp_rw.c
Для компиляции данного примера необходимо ввести команду в консоли gcc -Wall -o mcp_rw ./mcp_rw.c ,находясь в той же папке где и сохранен исходный код.Пример mcp_rw работает только с одной микросхемой MCP23017 ,но ничего не мешает переписать программу или скомпилировать несколько вариантов с разными адресами.
Не забываем поправить номер i2c устройства в исходном коде,у Вас оно может быть другим.
Возможности примера программы mcp_rw:
1.Вывод состояния портов,сконфигурированные на вывод.Команда ./mcp_rw out . Прочерк состояния порта означает,что порт сконфигурирован на ввод.
2.Управление состоянием порта,сконфигурированный на вывод ./mcp_rw out номер_пина состояние_пина(0 или 1).
3.Вывод состояния портов,сконфигурированные на ввод.Команда ./mcp_rw in . Прочерк состояния порта означает,что порт сконфигурирован на вывод.
4.Чтение состояния порта,сконфигурированный на ввод .Команда ./mcp_rw in номер_пина.
В текущем виде программку mcp_rw in можно использовать , вызвав её из других языков,например из php или использовать подпрограммы в своих более полноценных программах на Си.
Схема на макетной плате:
Видео демонстрация работы:
На видео показано как из консоли можно управлять устойствами.Подключено 2 светодиода и блок из 2-х реле.
Обратите внимание,что блок реле управляется нулем,а не единицей.
На скриншоте видим как вводились команды в видеоролике.А так же можно увидеть результат сканирования i2c устройств командой i2cdetect -y 7 ,где находит устройство по адресу 0х20 — это как раз подключеная микросхема MCP23017.В данном случае все выводы,кроме 2, назначены на вывод.
Запуск утилиты требует права суперпользователя,если на устройство /dev/i2c не назначены полные права.
Пример работы с MCP23017 из Windows
Программа написана на Си используя cygwin,основана на примерах из i2c_tiny_usb.Управление пинами MCP23017 через данную утилиту осуществляется аналогично примеру из Linux.
Качаем программу тут ,перед запуском не забываем про драйвер для переходника I2C-USB.Работа программы проверена только через переходник i2c_tiny_usb.
Программа создает файл pinsmode.cfg ,где указывается режим работы выводов в виде 16 единиц и нулей -нумерация справа налево ! Состояние 0 — вывод назначен как вывод.Состояние 1 — вывод назначен как ввод.По умолчанию все выводы назначены на вывод -т.е. в файле все нули.Обратите внимание,что pinsmode.cfg должен находится там,откуда идет вызов программы:
Например в данном случае файл pinsmode.cfg должен находится в папке C:\mcp_win\ .Этот пример ярлыка включает единичку на 1 порте.
Принимаются предложения и пожелания по доработке утилиты.
Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.
Источник
Usb to gpio adapter своими руками
userial — открытый, свободный проект для выполнения моста USB I2C/SPI/GPIO с применением микроконтроллера Atmel AT90USB647. Программное обеспечение и описание железа опубликовано под открытой (Open Source) лицензией.
1 x интерфейс USB (виртуальный COM-порт)
1 x интерфейс JTAG
1 x I2C (TWI)
1 x SPI
8 x цифровых портов ввода/вывода (General purpose digital I/O, GPIO)
4 x аналого-цифровых преобразователя (АЦП, ADC)
Плата связывается с компьютером с использованием класса CDC (USB communications device class), который создает на компьютере виртуальный COM-порт. Поэтому userial не требует установки драйверов или специальных библиотек. Интерфейс управления основывается на ASCII, и его очень просто использовать через программу-терминал (обычный терминальный клиент SecureCRT, putty, HyperTerminal, TerraTerm и т. д.).Таким образом, получение результатов может быть очень простым и быстрым. Конфигурирование устройств происходит также быстро и прозрачно для пользователя.
Схемы, документация и программное обеспечение доступны для свободного скачивания (см. ссылки). Программное обеспечение (firmware) поставляется под лицензией MIT, а железо (hardware) поставляется под лицензией Creative Commons Attribution-Share Alike 3.0 Unported License.
Программное обеспечение также портировано на чип AT90USB162 (проект Bumble-B), и может быть записано в макетную плату AVR-USB162 (см. ссылки). При этом не доступен ADC, так как микроконтроллер AT90USB162 лишен цифро-аналогового преобразователя.
[Чем программировать — USB bootloader Atmel, Flip DFU]
В микроконтроллер прошито заводское программное обеспечение (bootloader, называемое также DFU — Device Firmware Uploader или Device Firmware Upgrade), позволяющее загрузить программу пользователя в память микроконтроллера через интерфейс USB и запустить её на выполнение. Это позволяет писать и отлаживать программы, не имея вообще никакого отладчика и программатора. Конечно, не те удобства, что предоставляет аппаратный отладчик JTAGICE-mkII, но зато дешево и сердито, затраты для быстрого старта минимальные. Программа и технология, предоставляющая такие возможности, называется Flip (FLexible In-system Programmer), программа бесплатна и доступна для скачивания на сайте atmel.com. Подробная документация, как все это делается, также доступна, правда на английском языке.
После заливки firmware с помощью загрузчика Flip DFU сам загрузчик не стирается, поэтому Вы можете перепрошивать макетную плату через USB практически неограниченное количество раз. Это очень удобно использовать для обновления программного обеспечения в приборах, где используется макетная плата, потому что ISP-программатор оказывается не нужен. Для повторного запуска бутлоадера служит перемычка HWB JP4.
Прошивку-bootloader, записанную на фабрике Atmel (она обеспечивает работу Flip), нельзя считать ISP-программатором, поскольку она защищена lock-битами. Для того, чтобы можно было воспользоваться ISP-программатором или debugWIRE-отладчиком, чип придется стереть, что полностью уничтожит Flip-bootloader. Но особо печалиться по этому поводу не стОит, так как на сайте atmel.com доступен для свободного скачивания бинарник bootloader-a (его можно бесплатно скачать на сайте Atmel), и его всегда можно восстановить. Как я понял, использование Flip исключает применение для отладки обычного ISP-программатора и отладчика debugWIRE, и наоборот.
[Установка драйвера Flip, запись firmware userial]
Для того, чтобы записать прошивку (firmware) в плату userial, понадобится специальное программное обеспечение Atmel — программа Flip. Эту программу можно легко найти на сайте Atmel, свободно скачать и установить (программа Flip бесплатна). Эта программа позволяет записывать почти все чипы Atmel, имеющие интерфейс USB (кстати, и не только USB, но и CAN, и RS232, но нас сейчас это не интересует) через простое подключение шнуром USB к компьютеру. Для этого достаточно иметь программу Flip и установленный драйвер USB для Вашей платы с программируемым чипом (в нашем случае это плата userial, на которой стоит чип AT90USB647). Программирование через USB возможно, так как в большинство чипов Atmel с аппаратным интерфейсом USB еще на заводе прошит bootloader USB Flip (DFU). Сейчас мы как раз и рассмотрим нехитрый процесс установки программы Flip и драйвера для bootloader USB Flip. Итак, процесс по шагам.
1. Скачайте и установите программу Flip. Последнюю версию можно легко найти на сайте Atmel, воспользовавшись поиском по слову Flip. Можете воспользоваться ссылкой [3]. В результате на компьютере появится папка с программой (например, C:\Program Files\Atmel\Flip 3.3.2\), а по кнопке Start будут доступны ярлыки для запуска. Если запустить программу через ярлык (например «Flip 3.3.2»), то получится что-то наподобие этого:
Теперь можно подключить плату userial к компьютеру по USB, и установить драйвер USB Flip.
2. При первом подключении только что собранной, непрошитой платы userial к компьютеру загорится на плате userial зеленый светодиод PWRLED,и система Windows обнаружит новое устройство USB bootloader-а Flip. Если это произошло, значит Ваша плата userial аппаратно исправна и собрана правильно (см. скриншоты).
Теперь нужно установить драйвер. На первый вопрос Мастера установки драйвера отвечаем, что не нужно в этот раз подключаться к Windows Update для поиска драйвера:
Указываем, что драйвер будет лежать в специально указанной папке:
Кнопкой Browse указываем папку usb в каталоге, куда установлена программа Flip:
Далее снова жмем Next и начинается установка драйвера:
В процессе установки может получиться так, что у Вас уже установлена на компьютере библиотека libusb, тогда Мастер запросит Вас — перезаписывать ли уже имеющиеся в каталоге драйверов Windows файлы? Если не знаете, что отвечать, можно нажать на кнопку Yes (файлы будут перезаписаны новыми версиями, как в моем примере):
И, наконец, процедура установки успешно завершится:
3.Теперь можно прошить плату прошивкой userial. Это совсем просто. Скачиваем прошивку (см. ссылки [1]). Скомпилированная прошивка на кварц 16 МГц находится в файле userial\userial-firmware-v1.9\userial.hex. Запускаем программу Flip, в меню выбираем тип программируемого устройства (Device -> Select. ):
Из списка выбираем чип AT90USB647:
Выбираем тип подключения Settings -> Communication -> USB:
Для подключения к плате userial жмем кнопку Open:
В результате программа подключится через USB к бутлоадеру в чипе AT90USB647, и на экране отобразится информация о программируемом устройстве (тип чипа, размер доступной для записи памяти, сигнатура чипа и проч.):
Укажем файл прошивки userial.hex, который будем загружать через меню File -> Load HEX File.
Останется нажать на кнопку Run, и начнется процесс записи чипа. Сначала стирание (стоит галка Erase), потом запись прошивки userial.hex в память flash чипа AT90USB647 (стоит галка Program), а затем будет произведена проверка того, что записалось (стоит галка Verify). Итак, жмем кнопку Run:
После окончания процесса нажмем на кнопку Start Application, и запустится firmware userial в чипе AT90USB647. При этом на плате userial один за другим загорятся желтые светодиоды — сначала LED1 (он слева на фото), а затем LED2 (он справа на фото). Windows обнаружит новое устройство, и запросит драйвер.
Драйвер userial — это просто информационный файл виртуального COM-порта userial.inf, который находится в папке userial-firmware-v1.9 архива по ссылке [1] (там же, где и прошивка userial.hex). На скриншотах проиллюстрирована процедура инсталляции драйвера.
Может случиться так, что обнаружится несколько inf-файлов, подходящих для платы userial. В этом случае выбираем именно наш файл userial.inf:
В ответ на предупреждение о том, что драйвер не прошел тест на совместимость с Windows XP, нажимаем кнопку Continue Anyway (установить все равно):
После непродолжительной процедуры установки в системе появится новый виртуальный COM-порт (в моем примере COM15):
Плата userial готова к работе.
4. Программа firmware прошита, драйвер COM-порта, который эмулирует плата userial, установлен. Теперь осталось проверить, как работает интерфейс команд userial. Для этого нужно подключиться к появившемуся COM-порту (в моем примере COM15) любым терминальным клиентом. Мне больше всего нравится в этом качестве программа SecureCRT. Параметры подключения — стандартные.
После подключения можно вводить команды. Например, чтобы прочитать напряжение со входа канала 0 аналого-цифрового преобразователя (ADC), нужно ввести команду AV0 и нажать Enter, в результате получим:
Полный список команд userial приведен в руководстве пользователя userial, см. [4].
[Как заказать]
Можно приобрести пустую печатную плату (без деталей, только печатная плата) userial за 100 рублей, или полностью готовую, собранную плату за 1100 рублей (цена указана без учета стоимости пересылки). Для заказа отправьте мне сообщение на email (адрес см. на страничке Контакты ),или оставьте комментарий ниже, указав контакты для связи с Вами (email,ICQ или телефон). Если Вы находитесь не в Москве, возможна пересылка Почтой.
Источник