Wi fi and avr

SPI2CF — модуль WiFi для AVR. Часть 1. Железо

DRS-240/480 – новые интеллектуальные ИБП (UPS) от MEAN WELL на DIN-рейку

В статье рассказано о том, как систему на AVR микроконтроллере оснастить интерфейсом PRISM WLAN. Документ предназначен для людей, уже имеющих опыт работы с микроконтроллерами AVR, и описывает, как добавить дешевый но гибкий WLAN интерфейс в ваши AVR проекты.

Разрабатывая свою систему, я хотел, чтобы устройство получилось маленьким, простым и дешевым настолько, насколько это возможно, и в то же время оставляло большую часть функциональности AVR для других целей и обеспечивало надежную и быструю передачу данных по WLAN. Разработка выполнена на основе WLAN карты с интерфейсом Compact Flash (CF) на чипсете PRISM, подключенной к AVR микроконтроллеру через микросхему программируемой логики (ПЛИС), фирмы Xilinx. Так как CF карта присоединена к AVR контроллеру через интерфейс SPI, вся система получила название «Проект SPI2CF».

Плюсы и минусы этого решения:

  • Надежная передача данных по интерфейсу CF
  • Простота взаимодействия с AVR через SPI
  • Быстрая передача с низкой загрузкой процессора
  • Железо и программы сделаны в домашних условиях (все требуемые инструменты доступны бесплатно)
  • Устройство может использоваться и для других CF карт
  • Поддержка стека uIP TCP/IP
  • Необходимость программирования ПЛИС
  • В проекте используется устаревшее оборудование для WLAN.

Почему я не стал использовать SD, USB или PCI карту?

С WLAN есть большая проблема: отсутствие документации по железу. Карты WLAN SDIO совершенно несовместимы с AVR контроллерами. несмотря на то, что стандарт SDIO распространяется не свободно и требует покупки дорогой лицензии, его SPI часть общедоступна. Хотя это и не самый выокоскоростной способ доступа к карте SDIO, он достаточно быстр для простых систем на основе AVR. В таком решении используются всего несколько контактов AVR контроллера и, благодаря встроенному в AVR SPI интерфейсу, имеется возможность разрабатывать неплохие устройства. К сожалению, ни один из производителей WLAN SD карт, с которыми я связывался, не пожелал предоставить необходимую для этого информацию. Без этой документации единственным путем решения проблемы может быть только долгий анализ, проводить который я не хотел.

Другие интерфейсы, такие как USB и PCI, требуют более быстрого и сложного взаимодействия, и не могут быть легко подключены к небольшому 8 битному AVR микроконтроллеру.

Какую именно CF WLAN использовать

Я выбрал CF WLAN карту на чипсете PRISM, так как вся документация по ее использованию доступна для программистов открытого исходного кода, и, например, авторы ядра Linux, Procyon AVRlib имели к ней доступ тоже. К сожалению, сейчас эти карты становятся редкостью. Известные мне карты, попавшие в эту категорию, – Pretec WL-201 и Netgear MA701. Наверное, могут подойти и другие карты, но они не тестировались. Спецификацию интерфейса CF можно загрузить (после регистрации) с сайта Ассоциации Compact Flash, информацию по чипсету PRISM можно легко найти в Интернете, используя любой поисковик.

Обзор системы

Вся система состоит из трех основных функциональных блоков: Контроллера AVR выполняющего высокоуровневые сетевые функции включая стек TCP/IP. Второй функциональный блок – WLAN карта, выполняющая все низкоуровневые сетевые операции включая шифрование. Третий блок – ПЛИС XC9572XL, – программируемое логическое устройство, формирующее spi2cf интерфейс между AVR SPI и CF картой. ПЛИС, главным образом, осуществляет преобразование между SPI интерфейсом, используемым для связи с AVR и параллельным интерфейсом слота CF.

Читайте также:  Забыл пароль от вайфая через телефон

Концепция SPI2CF

Интерфейс SPI2CF на основе ПЛИС обеспечивает правильное преобразование циклов доступа SPI в сигналы интерфейса CF. Это основная причина того, почему CF карты с чисто программным интерфейсом часто работают ненадежно. Программные решения не позволяют точно задать временные параметры сигналов CF, необходимые для ввода/вывода. Использование интерфейса SPI2CF на основе ПЛИС позволяет обойти эти проблемы.

Остальные части второстепенны. Например микросхема согласования уровня MAX232 необходима для интерфейса RS-232, мультиплексор 4053 используется для переключения линий ввода/вывода AVR контроллера между ПЛИС и интерфейсом программирования.

WLAN карте на чипсете PRISM требуется напряжение 3.3 В. ПЛИС XC9572 выпускается в двух версиях: XC9572 питается напряжением 5 В, XC9572XL – 3.3 В. Наконец микроконтроллер AVR ATmega32 также бывает с питанием 3.3 и 5 В. Таким образом, возможно создать систему питающееся только от 3.3 В. Но у такой системы будет один недостаток – AVR контроллер питающийся от 3.3 В не может быть тактирован столь же высокой частотой как его 5-вольтовый аналог. Т.е. контроллер, работающий на частоте 16 МГц, должен питаться напряжением 5 В. Но входы 3.3-вольтовой ПЛИС XC9572XL допускают напряжение 5 В, а входы контроллера AVR, питающегося от 5 В, поддерживают входное напряжение 3.3 В. Таким образом, вполне возможно напрямую подключить AVR контроллер, питающийся напряжением 5 В к ПЛИС, питающейся напряжением 3.3 В. ПЛИС будет работать как простой согласователь логических уровней. Демонстрационная система использует эту возможность, контроллер в ней питается напряжением 5 В.

Потребляемая мощность

Прототипы потребляют от источника 5 В около 250 мА при с установленной и инициализированной, но не передающей карте Pretec. Когда осуществляется двунаправленный обмен данными на полной скорости, потребляемый ток возрастает до 400 мА.

Внешние интерфейсы

Особенностью данной платы является целый набор разъемов, несмотря на то, что устройство задумывалась как беспроводное. Но эти кабели требуются только на время разработки. Интерфейс RS-232 используется для вывода отладочной информации из AVR в компьютер. Интерфейс программирования AVR используется для прошивки программы во внутреннюю флеш-память микроконтроллера. Для программирования ПЛИС используется подобный интерфейс программирования, используемый для загрузки функциональной конфигурации во внутренние ячейки флеш-памяти ПЛИС. AVR контроллер, также как и ПЛИС, не теряют хранимую информацию, таким образом программирование требуется произвести лишь один раз. После того, как разработка будет завершена, устройство станет по настоящему беспроводным.

Внутренние интерфейсы

Три основных устройства соединены двумя интерфейсами. SPI используется для подключения ПЛИС к контроллеру, для взаимодействия между ПЛИС и картой CF используется интерфейс CF. ПЛИС, таким образом, выступает в роли транслятора между SPI и CF и поэтому называется SPI2CF.

Детали для прототипа легко приобрести, все детали можно установить на перфорированную макетную плату. Проблемы могут возникнуть только с разъемом CF. Я купил две дешевых карты – переходников из PCMCIA в CF, аккуратно вскрыл их, удалил CF разъемы и поместил их на макетную плату. Ниже представлена схема и несколько фотографий моего прототипа.

Читайте также:  Серые иконки вай фай

Схема окончательного варианта устройства

Прототип наглядно показывает, что для соединения AVR контроллера и ПЛИС требуется всего несколько линий. Все устройство умещается на перфорированной плате размером 10 × 8 см. Вышеприведенная схема соответствует окончательному варианту печатной платы. Ее отличие от прототипа лишь в расположении выводов микросхем, так как в прототипе и окончательном варианте устройства используются микросхемы в разных корпусах.

Окончательный вариант устройства

В окончательном варианте устройства используются только SMD элементы, поэтому вся плата по размерам не превышает размеров самой CF карты.

Кликните для увеличения Кликните для увеличения
Расположение компонентов на верхней стороне платы Расположение компонентов на нижней стороне платы
Печатная плата, вид сверху Печатная плата, вид снизу
Собранная схема, вид сверху Собранная схема, вид снизу

Безопасность/Шифрование

В текущей версии ПО поддерживает WEP шифрование с длинной ключа в 40 (64) или 104 (128) бит. Шифрование реализовано целиком внутри CF карты и не требует вычислительных ресурсов AVR. WPA не поддерживается, так как я не уверен в том, что карта на чипсете PRISM, которую я использую, поддерживает его. Мне кажется, что некоторые версии этих карт поддерживают WPA, или им можно обновить прошивки, чтобы они стали его поддерживать. Но я не уверен в этом.

В рассматриваемой версии шифрование доступно во время компиляции, и ключ постоянно хранится во флеш-памяти. Таким образом, при желании его будет довольно легко изменить.

Продолжение читайте здесь

Перевод: [IMG]/i/Image/wand.gif[/IMG] по заказу РадиоЛоцман

Источник

Беспроводной адаптер для программирования Arduino или AVR с загрузчиком на базе ESP8266

Небольшая заметка о самодельном адаптере на базе ESP8266, позволяющем загрузить прошивку в микроконтроллер с установленным UART загрузчиком или Arduino.
Последнее время при проектировании устройств на микроконтроллерах AVR, для программирования вывожу только один 6-пиновый разъем (не ISP) для FTDI адаптера. Он позволяет и загрузить прошивку, и отладиться по UART после прошивки. Именно так сделано в Arduino, идея позаимствована оттуда. Это удобно.
Тем временем, не раз приходилось сталкиваться с ситуацией, когда нужно загрузить прошивку в микроконтроллер, но он уже в корпусе который не помещается на рабочем месте/лежит на антресоли/в другом городе/замурован в стену. В таких случаях адаптер FTDI не применим из-за короткого USB шнурка и приходилось изворачиваться с ноутбуком. Задумался о беспроводном программаторе. Тут как нельзя лучше подойдет ESP8266, ведь он обладает UART и в любом исполнении имеет хотя бы один GPIO, пригодный для перезагрузки контроллера и входа в режим программирования.

В сети был найден следующий материал по теме:

  1. Programming an Arduino via WiFi with the ESP8266 — модуль типа ESP-01 подключается на проводках к Arduino pro mini, затем для загрузки прошивки используется python скрипт
  2. Programando un Arduino remotamente con el módulo ESP8266 — тут, как я понял, не вдаваясь в подробности, один из GPIO Arduino соединен с RESET. Сначала микроконтроллеру передается команда перезагрузить себя самого, а потом уже начинается загрузка прошивки
  3. ESP8266-transparent-bridge — прошивка для ESP8266 делающая из модуля прозрачный Wi-Fi — UART мост с поддержкой AT команд для управления GPIO2. Автор предлагает нажимать кнопку reset на Arduino, а затем запускать avrdude c параметрами -c avrisp и -P net:x.x.x.x:23, но это позволяют автоматизировать AT. Именно эту прошивку я и взял за основу
Читайте также:  Вай фай мост от ростелеком

    Шести-пиновый разъем c распиновкой как у адаптера FTDI

image

Для тех, кто не хочет паять и делать плату

В случае применения в схемах с питанием 3.3В достаточно просто присоединить модуль в исполнение esp-01 к Arduino проводками (VCC—>VCC, GND—>GND, RX—>TX, TX—>RX, GPIO2—>DTR). Плата сделана для удобства подключения и возможности работы в схемах с напряжением питания микроконтроллера 5В.

Принципиальная схема и печатная плата

Применяется модули типа esp-02, но подойдет и распространенный esp-01, только плату перетрассировать нужно будет слегка. Джамперами выбирается режим работы 3.3/5В. U1 — стабилизатор преобразующий 5В в 3.3В в случае необходимости. R2 и R3 — делитель, тоже для 5В режима. После сборки нужно установить джампер RPOG и при помощи того же FTDI или любого другого UART адаптера загрузить ESP8266-transparent-bridge.
Шаблон односторонней печатной платы (SVG вектор):

Если нужен негатив достаточно открыть текстовым редактором и заменить #000000 на #FFFFFF и наоборот.
В формате KiCad на github

Прошивка микроконтроллера

Обычно, чтобы загрузить прошивку следует перезагрузить микроконтроллер. FTDI адаптер делает это импульсом на ноге DTR (первая в разъеме), она через емкость соединена с ногой RESET микроконтроллера. В нашем случае на место DTR выведена GPIO2 (см. UPD). Для перезагрузки микроконтроллера используются AT команды «+++AT GPIO2 1» и затем «+++AT GPIO2 0», которые меняют уровень на GPIO2 ESP8266. Одного перепада достаточно, чтобы перезагрузить контроллер. Сразу после перезагрузки некоторое время работает загрузчик и ждет образ прошивки по UART, его можно передать с помощью утилиты avrdude. Ниже приведен скрипт выполнение которого прошивает контроллер:

#!/bin/bash HEXILE="firmware.hex" ADDRESS=x.x.x.x BAUD=57600 echo "+++AT BAUD $BAUD" | nc $(ADDRESS) 23 echo "+++AT GPIO2 1" | nc $(ADDRESS) 23 echo "+++AT GPIO2 0" | nc $(ADDRESS) 23 avrdude -P net:$(ADDRESS):23 -F -U flash:w:$(HEXILE):i 

Данные команды можно включить в Makefile.
Беспроводную прошивку можно провернуть и в Windows, установив утилиты nc и avrdude.

Видео, демонстрирующее работу на примере китайской Arduino pro mini

UPD:
sav13 предложил в качестве прошивки для ESP8266 использовать esp-link, она совместима с текущей схемой адаптера. Данная прошивка имеет ряд преимуществ по сравнению с ESP8266-transparent-bridge, в т.ч. WEB интерфейс для конфигурации, нет необходимости использовать AT команды, дополнительный функционал, более подробно тут.

Источник

Оцените статью
Adblock
detector