Контроллер wifi схема подключения
Модуль ESP-01 с чипом ESP8266 предназначен для связи устройства с беспроводными сетями по WiFi.
Видеообзор
Общие сведения
ESP-01 — плата-модуль WiFi на базе популярного чипсета ESP8266EX . На борту платы находится микросхема Flash-памяти объёмом 2 МБ, чип ESP8266EX, кварцевый резонатор, два индикаторных светодиода и миниатюрная антенна из дорожки на верхнем слое печатной платы в виде змейки. Flash-память необходима для хранения программного обеспечения. При каждом включении питания, ПО автоматически загружается в чип ESP8266EX.
По умолчанию модуль настроен на работу через «AT-команды». Управляющая плата посылает команды — Wi-Fi модуль выполняет соответствующую операцию.
Но внутри чипа ESP8266 прячется целый микроконтроллер, который является самодостаточным устройством. Прошивать модуль можно на разных языках программирования. Но обо всё по порядку.
Работа с AT командами
Подключение и настройка
В стандартной прошивке Wi-Fi модуль общается с управляющей платой через «AT-команды» по протоколу UART.
На всех платах Iskra и Arduino присутствует хотя бы один аппаратный UART — HardwareSerial. Если же по каким то причинам он занят другим устройством, можно воспользоваться программным UART — SoftwareSerial.
HardwareSerial
На управляющей плате Iskra JS и платах Arduino с микроконтроллером ATmega32U4 / ATSAMD21G18 данные по USB и общение через пины 0 и 1 осуществляется через два раздельных UART . Это даёт возможность подключить Wi-Fi модуль к аппаратному UART на пинах 0 и 1 .
Список поддерживаемых плат:
Для примера подключим модуль Wi-Fi к платформе Iskra Neo.
Прошейте управляющую платформу кодом ниже.
Код прошивки
SoftwareSerial
Некоторые платы Arduino, например Uno, прошиваются через пины 0 и 1 . Это означает невозможность использовать одновременно прошивку/отладку по USB и общение с Wi-Fi модулем. Решение проблемы — программный UART . Подключите пины TX и RX ESP-модуля к другим контактам управляющей платы и используйте библиотеку SoftwareSerial.
Для примера подключим управляющие пины Wi-Fi модуля TX и RX — на 8 и 9 контакты управляющей платы. Прошейте управляющую платформу кодом ниже.
Код прошивки
HardwareSerial Mega
На платах форм-фактора Arduino Mega 2560 аппаратный UART, который отвечает за передачу данных через пины 1 и 0 , отвечает также за передачу по USB. Это означает невозможность использовать одновременно UART для коммуникации с Wi-Fi модулем и отладки по USB.
Но на платах такого форм-фактора есть ещё дополнительно три аппаратных UART:
Список поддерживаемых плат:
Подключите Wi-Fi модуль к объекту Serial1 на пины 18 и 19 на примере платы Mega 2560 Прошейте управляющую платформу кодом ниже.
Код прошивки
Примеры работы
Рассмотрим несколько примеров по работе с «AT-командами»
Тестовая команда «AT»
Настройка режима работы
Wi-Fi модуль умеет работать в трёх режимах:
Переведём чип в смешанный режим командой:
После установки модуль должен ответить «OK»:
В отличии от аппаратного UART (HardwareSerial), за работу программного UART (SoftwareSerial) отвечает микроконтроллер, который назначает другие пины в режим работы RX и TX , соответственно и данные которые приходят от Wi-Fi модуля обрабатывает сам микроконтроллер во время программы. По умолчанию скорость общения Troyka Wi-Fi равна 115200 , что значительно выше чем позволяет библиотека SoftwareSerial. В итоге часть информации которая приходит с Wi-Fi модуля будет утеряна. Если вы используете плату с HardwareSerial подключением модуля можете пропустить пункт настройки скорости и сразу перейти к дальнейшей работе с модулем.
AT установка скорости общения
Для корректной работы с большими объемами необходимо понизить скорость соединения модуля и микроконтроллера. Для этого используйте «AT-команду»:
После проделанной операции, измените скорость программного UART в скетче программы и прошейте плату.
По итогу программный UART успеет обработать каждый пришедший байт с Wi-Fi модуля.
AT сканирование WI-FI сетей
Откройте Serial-порт и отправьте на модуль «AT-команду» для сканирования всех доступных Wi-Fi сетей:
Для продолжение работы используйте перечень «AT-команд»
Wi-Fi модуль как самостоятельный контроллер
ESP-01 (ESP8266) — очень умный модуль. Внутри чипа прячется целый микроконтроллер, который можно программировать на языке C++ через Arduino IDE и JavaScript через Espruino Web IDE .
Настройка железа
Ввиду отсутствия у платформы ESP-01 собственного USB-порта, понижающего преобразователя и отсутствия толерантности к 5 вольтам, подключите её к компьютеру, используя один из перечисленных способов:
Схема через Arduino Uno
Для сборки программатора понадобится:
Необходимо каждый раз выполнять перед прошивкой модуля.
Притяните пин 0 к 3.3V — фиолетовый провод через резистор к питанию.Схема через USB-Serial адаптер
Для сборки программатора понадобится:
Необходимо каждый раз выполнять перед прошивкой модуля.
Притяните пин 0 к 3.3V — фиолетовый провод через резистор к питанию.Программирование на C++
После выполненных действий модуль ESP-01 готов к программированию через Arduino IDE.
Подробности о функциях и методах работы ESP-01 (ESP8266) на языке C++ читайте на ESP8266 Arduino Cores.
Программирование на JavaScript
После выполненных действий модуль ESP-01 готов к программированию через Espruino Web IDE.
Подробнее о функциях и методах работы ESP8266 на языке JavaScript читайте на Espruino.
Восстановление стандартной АТ-прошивки
После программирования платформы в режиме самостоятельного контроллера может понадобиться восстановить на модуле стандартную AT-прошивку. Для этого необходимо воспользоваться утилитой Flash Download Tool.
Элементы платы
Чип ESP8266EX
Чип ESP8266 — выполнен по технологии SoC (англ. System-on-a-Chip — система на кристалле). В основе кристалла входит процессор семейства Xtensa — 32-х битный Tensilica L106 с частой 80 МГц с ультранизким энергопотреблением, радиочастотный трансивер с физическим уровнем WiFi IEEE 802.11 b/g/ и блоки памяти SRAM. Мощности процессорного ядра хватает для работы сложных пользовательских приложений и цифровой сигнальной обработки.
Программное приложение пользователя должно храниться на внешней микросхеме Flash-памяти и загружаться в ESP8266EX через один из доступных интерфейсов (SPI, UART, SDIO и др.) каждый раз в момент включения питания системы.
Чип ESP8266 не содержит в себе Flash-память и многих других компонентов для пользовательского старта. Микросхема является основой на базе которой выпускаются модули с необходимой периферией, например ESP-01.
Светодиодная индикация
Имя светодиода | Назначение |
---|---|
LED | Индикаторный светодиод подключённый к цифровому пину 1 |
POWER | Индикатор питание на модуле |
Распиновка
Пины питания
3.3V: Вывод питания модуля. Потребляемый ток не менее 250 мА.Пины ввода/вывода
В отличии от большинства плат Arduino, родным напряжением платформы ESP-01 является 3,3 В, а не 5 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать не более 3,3 В. Большее напряжение может повредить модуль!
Будьте внимательны при подключении периферии: убедитесь, что она может корректно функционировать в этом диапазоне напряжений.
Предлагаю сегодня познакомиться с новинкой радиолюбительской техники - WiFi модулем ESP8266. Он представляет собой что-то наподобие уже давно всем знакомого NRF24L01, но по размерам чуть меньше и немного другой функционал. WiFi модуль имеет как свои неоспоримые достоинства, так и некоторые недостатки, последнее как раз скорее всего отчасти связано с тем, что это новинка и разработчики весьма странным способом подошли к этому - информация распространяется очень туго (документация дает лишь общие представления о модулях, не раскрывая их полный функционал). Ну что же, будем ждать снисхождения компании предоставившей "железо".
Особо стоит отметить стоимость модуля: на текущий момент она составляет 3-4$ (например на AliExpress)
Справа NRF, слева ESP модуль.
Что конкретнее представляет собой эти WiFi модули? На плате расположена сама микросхема WiFi, помимо того в этом же корпусе имеется микроконтроллер 8051, который можно программировать, обходясь без отдельного микроконтроллера, но об этом в другой раз, далее на плате расположена микросхема EEPROM памяти, необходимая для сохранения настроек, также на плате модуля имеется вся минимально необходимая обвязка - кварцевый резонатор, конденсаторы, бонусом индикация светодиодами напряжения питания и передачи (приема) информации. Модуль реализует интерфейс только UART, хотя возможности микросхемы WiFi позволяют использовать и другие интерфейсы. Печатным проводником на плате сделана антенна WiFi необходимой конфигурации. Самая большая деталь - это разъем 4 х 2 штырька.
Распиновка WiFi модуля ESP8266:
Для подключения в схему этого модуль нужно подключить питание на VCC и GND, на TX и RX соответствующие вывода UART принимающего устройства (помните, что RX соединяется с TX, а TX с RX) и CH_PD (типа чип энэбл, без него все горит, но ничего не работает) на плюс питания.
Параметры модуля ESP8266:
- напряжение питания 3,3 В (причем сам то модуль терпит 5 В, но выводы ввода - вывода откажутся работать скорее всего)
- ток до 215 мА в режиме передачи
- ток до 62 мА во время приема
- 802.11 b/g/n протокол
- +20.5dBm мощность в режиме 802.11b
- SDIO (два вывода присутствуют на плате модуля, но ими особо нельзя пользоваться кроме как для служебных операций)
- режимы сохранения энергии и сна для экономии энергии
- встроенный микроконтроллер
- управление по средством AT-команд
- температура функционирования от -40 до +125 градусов Цельсия
- максимальная дистанция связи 100 метров
Как было указано, модулем можно управлять посредством AT-команд, однако их полный список не известен, самое необходимое представлено ниже:
Перезагрузка модуля, после введения команды выдаст лог перезагрузки в конце и ответ ready
Для одного соединения (+CIPMUX=0):
AT+CIPSTART=<тип>,<адрес>,<порт>
Для мульти соединения (+CIPMUX=1):
AT+CIPSTART=<айди>,<тип>,<адрес>,<порт>
Установить режим передачи:
<режим>= 0 — not data mode (сервер может отправлять данные клиенту и может принимать данные от клиента)
<режим>= 1 — data mode (сервер не может отправлять данные клиенту, но может принимать данные от клиента)
Для одного соединения (+CIPMUX=0):
AT+CIPSEND=<длина>
Для мульти соединения (+CIPMUX=1):
AT+CIPSTART=<айди>,<длина>
Для одного соединения (+CIPMUX=0):
AT+CIPCLOSE
Для мульти соединения (+CIPMUX=1):
AT+CIPCLOSE=<айди>
Поднять порт. <режим>- режим скрытности (0 - скрыт, 1 - открыт), <порт> - порт
Данные принимаются с преамбулой +IPD, после которой следует информация о принятых данных, а потом сама информация
Для одного соединения (+CIPMUX=0): +IPD,<длинна>:<передаваемая информация>
Для мульти соединения (+CIPMUX=1): +IPD,<айди>,<длинна>:<передаваемая информация>
Пример: +IPD,0,1:x - принят 1 байт информации
Как вводятся команды:
- Выполнение команды: <Команда>.
- Просмотреть статус по команде: <Команда>?
- Выполнить команду с заданием параметров: <Команда>=<Параметр>
При покупке модуля можно проверить версию прошивки модуля через команду AT+GMR. Версию прошивки можно обновить при помощи отдельного софта или при версии прошивки от 0.92 это можно делать только при помощи команды AT+CIUPDATE. При этом модуль нужно соединить с роутером для доступа к интернету. Прошивка и программа для прошивки модуля до версии 0,92 будет предоставлена в конце статьи. Для прошивки через софт необходимо вывод GPIO0 подсоединить к плюсу питания. Это включит режим обновления модуля. Далее выбрать файл прошивки модуля в программе и соединиться с модулем WiFi, обновление прошивки пойдет автоматически после соединения. После обновления последующие обновления прошивки возможны будут только через интернет.
Теперь, зная организацию команд модуля WiFi, на его основе можно организовать передачу информации по средством беспроводной связи, в чем, я считаю, их основное назначение. Для этого мы будем использовать микроконтроллер AVR Atmega8 в качестве устройства, которое управляется через беспроводной модуль. Схема устройства:
Суть схемы будет заключаться в следующем. Термодатчиком DS18B20 измеряется температура, обрабатывается микроконтроллером и передается по WiFi сети с небольшим промежутком по времени. При этом контроллер следит за получаемыми данными по WiFi, при получении символа 'а' загорится светодиод LED1, при получении символа 'b' светодиод потухнет. Схема больше демонстративная, чем полезная, хотя ее можно использовать для удаленного контроля температуры, например, на улице, необходимо только написать софт для компьютера или телефона. Модуль ESP8266 требует питания напряжением 3,3 вольта, поэтому вся схема запитывается от стабилизатора AMS1117 на 3,3 вольта. Микроконтроллер тактируется от внешнего кварцевого генератора на 16 МГц с обвязкой конденсаторами на 18 пФ. Резистор R1 подтягивает ножку микроконтроллера reset к плюсу питания для исключения самопроизвольного перазапуска микроконтроллера при наличии каких-либо помех. Резистор R2 выполняет функцию ограничения тока через светодиод, чтобы не сгорел ни он, ни вывод МК. Эту цепочку можно заменить, например, на цепь реле и использовать схему для дистанционного управления. Резистор R3 необходим для работы термометра по шине 1-Wire. Схему нужно питать от достаточно мощного источника, так как пиковое потребления WiFi модуля может доходить до 300 мА. В этом, наверное, и кроется главный недостаток модуля - большое потребление. Такая схема от батареек долго может не проработать. При подаче питания на схему во время ее инициализации светодиод должен 5 раз моргнуть, что будет свидетельствовать об успешном открытии порта и предыдущих операциях (после включения схемы по нажатию кнопки ресет светодиод может моргать по 2 раза - это нормально).
Более подробно работу схемы можно посмотреть в исходном коде прошивки микроконтроллера на языке Си, который будет представлена ниже.
Схема собиралась и отлаживалась на макетной плате, термометр DS18B20 используется в формате "зонда" с металлическим колпачком:
Для "общения" с такой схемой можно использовать как стандартный WiFi контроллер компьютера, так и построить схему приемопередатчика при помощи USB-UART преобразователя и еще одного модуля ESP8266:
К слову о переходниках и терминалах, эти модули достаточно капризны к ним, хорошо работают с преобразователем на CP2303 и отказываются адекватно работать с преобразователями, построенными на микроконтроллерах (самодельных), терминал лучше всего подходит Termite (там в настройках есть автоматическое добавление символа возвращения каретки, без чего также адекватно модуль не будет работать с терминалом). А вот просто при подключении к микроконтроллеру модули работают без нареканий.
Итак, для обмена информацией с микроконтроллером по WiFi будем использовать второй модуль, подключенный к компьютеру и терминал Termite. Перед началом работы со схемой каждый модуль нужно подключить через USB-UART и проделать несколько операций - настроить режим работы, создать точку подключения и подключиться к точке, к которой в последующем будем подключаться для обмена информацией, AT командой узнать IP адрес модулей WiFi (необходимо будет для подключения модулей друг к другу и обмена информацией). Все эти настройки сохранятся и будут автоматически применяться при каждом включении модуля. Таким образом можно сэкономить немного памяти микроконтроллера на командах подготовки модуля к работе.
Модули работают в совмещенном режиме, то есть могут быть как клиентом, так и точкой доступа. Если по настройкам модуль уже работает в этом режиме (AT+CWMODE=3), то при повторной попытке настроить в этот же режим модуль выдаст ответ "no change". Чтобы настройки вступили в силу нужно перезапустить модуль или ввести команду AT+RST.
После аналогичных настроек второго модуля в списке доступных точек появится наша точка под названием "ATmega":
В нашем случае схема WiFi будет такой - модуль с микроконтроллером будет подключаться к домашнему роутеру (фактически микроконтроллер в таком случае может выходить в интернет, если это прописать), далее поднимать порт и действовать по алгоритму. На другой стороне модуль также подключим к роутеру и соединимся с микроконтроллером через TCP (как показано на скриншоте, для этого нужно настроить режим передачи и количество соединений командами AT+CIPMODE и AT+CIPMUX соответственно и ввести команду на соединение с сервером AT+CIPSTART). Все! Если подключиться к точке доступа (WiFi точка только, к серверу нужно переподключаться каждый раз, ровно также каждый раз сервер нужно поднимать на другом конце каждый раз при включении питания) и перезапустить модуль, то надобности самостоятельно еще раз присоединяться нет, это тоже сохраняется в памяти и автоматически подключается при доступности при включении модуля. Удобно, однако.
Теперь данные о температуре автоматически должны пойти на компьютер, а по командам с компьютера можно управлять светодиодом. Для удобства можно написать софт под Windows и мониторить температуру по WiFi.
Одно НО - желательно модуль питать не от батареек, а от стационарного питания розетки (естественно через блок питания) из-за большого потребления модулей.
Это один из вариантов передачи информации между модулями WiFi, можно их подключать также без роутера напрямую друг к другу, а можно к модулю подключаться через стандартный WIFi компьютера и работать уже через него.
Функционал задействован самый очевидный этих модулей, кто знает, что там еще разработчики приготовили для нас!
Для программирования микроконтроллера нужно использовать следующую комбинацию фьюз битов:
В заключении хочется отметить, что это действительно революция интернет вещей! При цене модуля в несколько зеленых единиц, мы имеем полноценный Wi-Fi модуль с огромными возможностями (которые пока что ограничивают разработчики сего чуда), область применения просто не ограничена - везде, где позволит фантазия, а учитывая тот факт, что в этом модуле уже присутствует микроконтроллер, отпадает надобность в использовании внешнего микроконтроллера, однако который нужно как-то программировать. Так что, друзья, вот такое дело - даем Wi-Fi каждой розетке!
К статье прилагается прошивка для микроконтроллера, исходный код в программе AVRStudio4, документация на микросхему модуля Wi-Fi, программа для обновления прошивки модуля и прошивка модуля версии 0,92 (архив разбит на 3 части, потому что общий размер его слишком велик, чтобы приложить к статье), а также видео, демонстрирующее работу схемы (на видео управляемая плата, соединенная по WiFi с управляющим модулем, управляемая плата периодически передает информацию о температуре, при погружении термометра в воду на видео видно, что температура начинает падать, далее если передать символ "а" от управляющего модуля, на управляемой плате загорится светодиод, а если символ "b", то он потухнет).
На этом, кажется, все. Не забывайте писать свои замечания и пожелания, при наличии внимания к этой теме будем развивать идеи для новых.
После своего появления платы на базе Wifi чипа ESP8266, стали по настоящему народными. Огромные возможности и минимальная цена, которая даже на старте продаж и в розницу не превышала 5$ сделали свое дело. Вокруг чипа организовались сообщества в которых люди делятся информацией и создают программное обеспечение.
В чем же причина такой популярности, помимо низкой цены?
Все дело в том, что платы на ESP8266 это не просто модули для связи по WiFi. Чип по сути, является микроконтроллером со своими интерфейсами SPI, UART, а также портами GPIO, а это значит, что модуль можно использовать автономно без Arduino и других плат с микроконтроллерами.
Информация
В данном обзоре я буду использовать, одну из самых первых плат ESP-01. Так же для полноценной работы с чипом потребуется конвертер USB/UART, рекомендую 6-пиновый USB — UART TTL на CP2102, обзор которого уже был на mysku.
Подключение
Распиновка разъёма ESP-01, представлена на рисунке:
Если в своих проектах вам не хватит двух выведенных GPIO, а заниматься «грязными хаками» нет желания, то я рекомендую сразу приобретать более новые платы, например ESP-07 или ESP-12. Только имейте ввиду, что данные платы требуют самостоятельной разводки и в продаже для этого есть специальные мининаборы.
ESP-01 hacked by Dave Allan, как пример. Дополнительно вы получаете 4 GPIO: GPIO14, GPIO12, GPIO13 и GPIO15
Схема подключения:
— ESP-01 VCC к USB/UART VCC (+3.3В);
— ESP-01 GND к USB/UART GND;
— ESP-01 URXD к USB/UART TXD;
— ESP-01 UTXD к USB/UART RXD;
— ESP-01 CH_PD к USB/UART VCC (+3.3В);
— ESP-01 GPIO0 к USB/UART GND — только во время прошивки.
Прошивка
Для ESP8266, существует SDK и оригинальная прошивка от Espressif Systems, но многих она не устраивает ввиду своей «сырости», поэтому выпускаются не оригинальные прошивки, такие как NodeMCU, Frankenstein и другие.
В данном обзоре будет использоваться не оригинальная прошивка NodeMCU. Список команда и примеры можно посмотреть на GitHub.
Первый скрипт
Если при работе со скриптами у Вас будут проблемы, то рекомендуется подать питание 3.3V не от USB/UART, а от отдельного источника. Напряжение должно быть именно 3.3V, например через модуль стабилизированного питания на AMS1117 3.3V 800ma.
Для написания и загрузки скриптов в ESP8266, будет использоваться небольшая и удобная IDE — ESPlorer:
Наш первый скрипт, будет выключать и включать светодиод с периодичностью в 2 секунды:
— Отключаем питание, к GPIO2 подключаем резистор и светодиод. Включаем питание;
— Запускаем ESPlorer, выбираем нужный COM и скорость порта 9600, нажимаем Open;
— Вставляем код и нажимаем Save To ESP;
— Для повторного запуска нажимаем DoFile.
Подключаем датчик DHT11
Чтобы продемонстрировать, более продвинутую работу с прошивкой NodeMCU подключим к ESP-01 датчик DHT11:
— DHT11 VCC к USB/UART VCC
— DHT11 GND к USB/UART GND
— DHT11 Out к USB/UART GPIO2
Прошу прощения за качество видео, снимал на телефон.
Эпилог
Чип ESP8266 это безусловно прорыв, прежде всего в соотношении цена/качество. Конечно стоит упомянуть о существующих проблемах в оригинальных и не оригинальных прошивках, но работы ведутся и я надеюсь, что в будущем подобные чипы, будут встроены в каждый чайник.
В статье рассказано о том, как систему на 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, или им можно обновить прошивки, чтобы они стали его поддерживать. Но я не уверен в этом.
В рассматриваемой версии шифрование доступно во время компиляции, и ключ постоянно хранится во флеш-памяти. Таким образом, при желании его будет довольно легко изменить.
Продолжение читайте здесь
Читайте также: