СС3000 – Wi-Fi-модуль для создания «интернета вещей»

25 февраля 2014

tiДля беспроводного подключения к сети Интернет на сегодняшний день широко доступны лишь два стандарта – GSM и Wi-Fi. Использование GSM (включая 3G и LTE) стало де-факто стандартом в M2M-промышленных приложениях. Использование недорогих Wi-Fi-чипов, ориентированных на рынок гаджетов, ограничивалась сложностью разработки и нежеланием производителей оказывать техническую поддержку разработчикам M2M-устройств. Сегодня ситуация изменилась – компания Texas Instruments выпустила Wi-Fi-модуль CC3000MOD, специально разработанный для рынка «интернета вещей» и имеющий цену менее $10 (цена на сайте производителя). В статье рассмотрены особенности практического использования модуля в связке с недорогими процессорными платами MSP430-Launchpad.

 

Концепция Internet Of Things подразумевает подключение к сети окружающих нас вещей, таких как бытовая техника, автомобили, спортивные тренажеры, инженерные и охранные системы зданий – практически любых предметов, с которыми имеет смысл вести обмен информацией (рисунок 1).

Рис. 1. Бытовая техника как один из сегментов «интернета вещей»

Рис. 1. Бытовая техника как один из сегментов «интернета вещей»

В одном случае это может быть информация, генерация которой, собственно, и является основной функцией устройства (датчик температуры), в другом случае это будут вспомогательные данные, повышающие удобство пользования, например, уведомление о процессе работы или поломке. Процесс подключения предметов к сети стартовал более десяти лет назад. Изначально это были проводные сети доступа к оборудованию в области энергетики и к дорогостоящему технологическому оборудованию в промышленности. Последние пять лет в мире стремительно растет число M2M-сетей счетчиков энергии, развиваются навигационные сервисы слежения за автомобильным транспортом и беспроводные системы безопасности. Существенный рост числа объединенных в сеть машин стал возможен благодаря развитию беспроводных технологий. Электронные компоненты для беспроводной передачи данных занимают видное место в линейках всех без исключения крупных производителей микросхем, а молодые компании, имеющие оригинальные разработки в этой области, раскупаются крупными игроками как горячие пирожки. Распространение ноутбуков, планшетов и смартфонов обеспечило выходом в сеть большое количество людей. Миниатюризация и снижение стоимости электронных компонентов позволило подключить к сети разнообразную бытовую технику (рисунок 1), включая вещи, которые никогда не претендовали на «интеллектуальность», например, очки, кроссовки или даже столовые приборы (рисунок 2). Мы стоим сегодня на пороге следующего витка развития «интернета вещей». Эксперты предсказывают, что к 2020 году от 30 (Gartner) до 75 (Morgan Stanley) миллиардов вещей будет объединено в сети.

Рис. 2. «Умные» вещи»

Рис. 2. «Умные» вещи»

Технические параметры и подключение

Модуль SimpleLink Wi-Fi CC3000MOD (рисунок 3) был впервые представлен компанией Texas Instruments на выставке CES 2012. Модуль построен на базе проверенных временем Wi-Fi-решений шестого поколения TI, которые уже работают в миллионах потребительских устройств по всему миру. CC3000MOD позиционируется производителем как законченное аппаратно-программное решение со встроенными сетевыми протоколами, позволяющее добавить беспроводной Wi-Fi-доступ в изделие даже с микроконтроллером небольшой мощности. Для интеграции модуля не требуется особых знаний в области разработки высокочастотных схем. Гарантированные радиотехнические параметры и, как следствие, отсутствие проблем при сертификации обеспечиваются 100% выходным контролем при производстве.

Wi-Fi-модуль SimpleLink CC3000MOD

Рис. 3. Wi-Fi-модуль SimpleLink CC3000MOD

Технические параметры модуля приведены в таблице 1, для работы модуля требуется минимум внешних компонентов (рисунок 4). Модуль содержит управляемый стабилизатор для встроенного процессора и может работать как от сетевого источника питания, так и напрямую от литий-ионной батареи. Для отключения питания можно использовать встроенный ключ, который управляется по линии VBAT_SW_EN от GPIO-порта хоста. Отдельное напряжение линий ввода-вывода облегчает согласование уровней для подключения управляющего микроконтроллера с любым напряжением питания в пределах 1,8…3,6 В. Модуль не требует кварца или внешнего тактирования, но сам может выдавать сигнал 32,768 кГц на линию EXT_32K.

Рис. 4. Схема подключения CC3000MOD

Рис. 4. Схема подключения CC3000MOD

Таблица 1. Технические характеристики СС3000MOD
Стандарт 802.11 b/g, BSS Station
Выходная мощность TX power: +18,0 dBm at 11 Mbps, CCK
Чувствительность RX sensitivity: -88 dBm, 8% PER, 11 Mbps
Режимы безопасности WEP, WPA/WPA2 (AES и TKIP – Personal)
Встроенные стеки протоколов TCP/IP stack (IPv4 – DHCP client, DNS, mDNS, ARP), Wi-Fi driver, security supplicant, Auto-calibrated radio
Программный интерфейс BSD-sockets (~35 APIs)
Объем FLASH и RAM на внешнем микроконтроллере, Кбайт 5 (Flash) и 3 (RAM)
Интерфейс внешнего управления SPI 16 MГц
Пропускная способность (TCP), Mbps ~4*
Число одновременно открытых соединений 4 сокета (UDP или TCP)
Режимы энергопотребления Активный режим (92 мА, тип. ток RX); выключенное состояние (Shutdown Mode) <5 мкА
Напряжение питания, В 2,7…4,8
Рабочее напряжение для линий ввода-вывода (I/O Voltage), В 1,8…3,6
Размеры, мм 16,3 × 13,5 × 2
Температурный диапазон, °C -20…70
Обновление прошивки Через загрузку Patch в EEPROM
Вспомогательные интерфейсы I2C для прямого доступа к EEPROM UART для тестирования радиочасти
Сертификация FCC, IC, CE (для варианта с ЧИП-антенной)
* – измерено при работе совместно с микроконтроллером MSP430FR5739.

 

Основное управление осуществляется по пяти линиям интерфейса SPI (рисунок 5). CC3000MOD выступает в качестве подчиненного Slave-устройства. Частота тактирования 0…16 МГц. Передача данных осуществляется блоками по 16 бит, первым идет старший бит. Чтение данных происходит по спаду сигнала CLK (CPHA = 1). Если длина блока получается нечетной, то в конце нужно добавить опциональный выравнивающий байт. Специальная линия IRQ (от СС3000MOD к хосту) уведомляет Master (управляющий микроконтроллер) о том, что СС3000MOD имеет некоторые данные, которые необходимо вычитать. Эта же линия сообщает о готовности CC3000MOD к обмену данными по SPI.

Рис. 5. Управляющие линии SPI

Рис. 5. Управляющие линии SPI

Структура SPI-пакета приведена на рисунке 6. Первым идет байт «Команда», который включает в себя признак записи или чтения данных. Далее в двух байтах указывается длина блока с учетом выравнивающего байта. Завершают заголовок пакета два байта «Занято» (Busy). Используемый формат SPI-протокола является расширением стандартного SPI. При отправке самого первого SPI-пакета необходимо вставить две паузы по 50 мкс после выставления сигнала CSn и между 4 и 5 байтами (между байтами Busy).

Рис. 6. Формат SPI-блока данных

Рис. 6. Формат SPI-блока данных

Пример SPI-пакета HCI_CMND_SIMPLE_LINK_START, который должен быть отправлен первым со стороны хоста после подачи питания на СС3000, приведен на рисунке 7. Для выполнения всех операций по передаче данных через Wi-Fi-сеть производителем предоставляется набор API в виде платформенно-независимого исходного C-кода драйвера хоста, поэтому разработчику не обязательно изучать формат передачи данных на уровне HCI.

Рис. 7. HCI-пакет HCI_CMND_SIMPLE_LINK_START

Рис. 7. HCI-пакет HCI_CMND_SIMPLE_LINK_START

Имеющаяся на борту EEPROM-память используется для сохранения сетевой конфигурации, MAC-адреса и обновления прошивки, которое реализовано в виде загрузки небольших исправляемых кусков кода (Patch). Обновления прошивки (патчи) выпускаются производителем. Доступ к EEPROM возможен как напрямую, через отдельный служебный интерфейс I2C, так и через основной интерфейс управления SPI c помощью специального API. В EEPROM есть свободная область объемом около 5 Кбайт, где можно хранить пользовательские данные.

Интерфейс UART (линии WL_RS232_RX и WL_RS232_TX) предназначены для прямого управления радиочипом с целью тестирования радиочастотных параметров при производстве модуля. Специальная Windows-утилита СС3000 Radio Tool позволяет инициировать непрерывный прием или передачу для калибровки радио. В принципе, в разрабатываемом изделии эти линии можно никуда не подключать.

Для разрешения сложных проблем с Wi-Fi-протоколом имеется возможность извлечь отладочную информацию (logging information) из внутренних регистров чипсета CC3000. Отладочная информация существует в виде двух слоев – уровень драйвера (Driver level from pin NS_UART_DBG) и уровень внутренней прошивки (Firmware level from pin WL_UART_DBG). Каждый уровень выводится через специально выделенный для этих целей вывод модуля СС3000MOD – NS_UART_DBG присутствует на выводе 2, в то время как WL_UART_DBG разведен на вывод 4. Данные выдаются по последовательному интерфейсу UART c рабочим напряжением 1,8 В в формате 921600/8/n/1. Для съема информации на ПК необходимо запустить любую терминальную программу и сохранить поступающие данные в бинарном формате (не текстовом!). Анализом данных занимается техническая поддержка производителя – документация по формату отладочных данных разработчику не доступна.

Для разводки модуля достаточно двух слоев печатной платы, хотя референсный дизайн разведен в четырех слоях. Не рекомендуется проводить сигнальные линии под модулем на том слое, где монтируется сам модуль. При использовании четырех слоев рекомендуется слой 2 делать сплошным земляным полигоном для отвода тепла. Подключение антенны необходимо выполнить с помощью согласованной 50-омной линии, при использовании керамических антенн нужно строго следовать рекомендациям производителя по расстояниям от антенны до линий земли и границ печатной платы. Линии SPI требуется делать минимально возможной длины. Линия питания VBAT должна быть не менее 40 mils, линия VIO_HOST не менее 18 mils. Линию VBAT следует, по возможности, окружать земляными полигонами со всех сторон.

 

Программное управление

Программное обеспечение для внешнего управляющего микроконтроллера (хост-драйвер) позволяет организовать взаимодействие пользовательского приложения с CC3000MOD через небольшой (~35) набор API-функций. Исходный код хост-драйвера может быть портирован на любой микроконтроллер. Для реализации API на внешнем микроконтроллере необходимо иметь свободные ресурсы объемом около 7 Кбайт FLASH и 3 Кбайт RAM, что в 100 раз меньше по сравнению с Wi-Fi-модулями, работающими под управлением ОС Linux, Windows или Android. Готовые примеры приложений от TI существуют для микроконтроллеров MSP430 и TIVA (ядро Cortex-M4), в сети можно найти ссылки на успешную работу библиотек CC3000MOD на микроконтроллерах STM32 (Cortex-M3).

Структура хост-драйвера приведена на рисунке 8.

Рис. 8. Структура хост-драйвера

Рис. 8. Структура хост-драйвера

Хост-драйвер имеет модульную структуру, что позволяет адаптировать его даже к микроконтроллерам с ограниченными ресурсами – для этого можно отключить необязательные программные блоки. Драйвер хорошо документирован и не привязан к конкретному типу микроконтроллера или какой-либо операционной системе. Сам производитель использует этот драйвер в примерах для микроконтроллеров с совершенно разной внутренней структурой – MSP430 и CORTEX-M4 (TIVA). При компиляции в минимальном режиме (Tiny Compilation Option) драйвер может работать на микроконтроллере с 2 Кбайт FLASH и 251 байтами свободного ОЗУ. Разумеется, такой минимализм приводит к ограничению размера отправляемого по Wi-Fi пакета данных до 8 байт. При компиляции со всеми включенными опциями результирующий код для микроконтроллера MSP430FR5739 получается примерно 7,2 Кбайт для компилятора IAR.

Хост-драйвер обеспечивает доступ ко всем возможностям встроенного в CC3000MOD стека протоколов:

  • IPv4 TCP/IP-стек с BSD socket APIs;
  • поддержка одновременной работы TCP или UDP-сокетов;
  • сетевые протоколы: ARP, ICMP, DHCP-клиент, DNS-клиент.

Набор пользовательских API-функций делится на четыре категории:

  • WLAN APIs. Набор функций, которые связаны с работой протокола 802.11. Сюда входят, например, такие действия, как задание SSID и пароля, сканирование эфира для получения списка доступных сетей и т.п.
  • Network Stack APIs. Взаимодействие со встроенным стеком TCP/IP – задание портов, создание и открытие сокетов, прием-передача данных. Структура API соответствует широко известному набору BSD (Berkeley socket APIs).
  • Network Application APIs. Вспомогательные сетевые операции, которые может задействовать приложение пользователя. Например, утилита PING или DNS.
  • NVNEM APIs. Взаимодействие со встроенной в CC3000MOD энергонезависимой памятью (EEPROM 32 Кбайт). Обновление прошивок, сохранение сетевых настроек (профилей), запись-чтение пользовательских данных (до 5,5 Кбайт).

Каждая группа API работает с командами (CMDs) и событиями (Events). Обработка событий производится через зарегистрированные Call-back-функции. События могут быть двух типов – формирующиеся как результат выполнения команд и так называемые незапрашиваемые события. Незапрашиваемые события (unsolicited events) не связаны с действиями пользователя, это может быть, например, сообщение хосту об отключении от сети в силу потери радиосигнала. В связи с тем, что хост-драйвер не использует механизм очередей, обработчик незапрашиваемых событий должен вызываться не реже чем каждые 500 мс.

В таблице 2 приведены примеры асинхронных событий, которые генерируются CC3000.

Таблица 2. Перечень асинхронных событий
HCI_EVNT_WLAN_ASYNC_SIMPLE_CONFIG_DONE Уведомление о том, что процесс первичной конфигурации завершен
HCI_EVNT_WLAN_KEEPALIVE Периодическое событие , подтверждающее нормальную работу стека протоколов внутри CC3000 (keep-alive event)
HCI_EVNT_WLAN_UNSOL_CONNECT Информирование об успешном подключении к сети WLAN
HCI_EVNT_WLAN_UNSOL_DISCONNECT Уведомление о том, что CC3000MOD был отключен от точки доступа (AP-access point)
HCI_EVNT_WLAN_UNSOL_DHCP Сообщение об изменении статуса в процессе работы DHCP
HCI_EVNT_WLAN_UNSOL_INIT Уведомление об окончании процесса инициализации CC3000MOD
HCI_EVNT_WLAN_ASYNC_PING_REPORT Уведомление о результатах команды PING

 

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

Политика подключения (WLAN Policy) определяет действия CC3000MOD при подаче питания. Возможны три алгоритма подключения к сети Wi-Fi:

  • режим автоматического подключения (Auto Connect) – подключение к любой доступной Wi-Fi-сети в процессе сканирования;
  • режим быстрого подключения (Fast Connect) – подключение к последней доступной сети, в которой производилась работа предыдущего сеанса;
  • режим использования профиля (Use Profiles) – подключение к Wi-Fi-сети, параметры которой прописаны в энергонезависимой памяти.

 

Технология SmartConfig™

Модуль CC3000MOD предназначен для встраивания в устройства, которые подчас не имеют привычных пользовательских интерфейсов ввода-вывода, таких как дисплей и клавиатура. Для подключения к Wi-Fi-сети устройству необходимо сообщить имя сети (SSID) и ключ шифрования (KEY). Как передать эти текстовые строки, например, в настольную лампу, у которой пользовательский интерфейс заключается в единственной кнопке включения? Для устройств, оснащенных модулем CC3000MOD, TI предлагает оригинальную технологию SmartConfig. Эта технология позволяет быстро сконфигурировать беспроводное Wi-Fi-устройство с помощью вспомогательного мобильного гаджета, работающего в той же сети, к которой нам нужно подключить нашу лампу. На смартфоне, планшете или на ноутбуке (iOs, Android, Windows) запускается специальное бесплатное приложение, которое позволяет передать настроечные параметры в подключаемое устройство. Приложение SmartConfig™ может одновременно подключать множество устройств, при этом передача параметров по эфиру возможна в опциональном безопасном режиме (AES-128).

Запуск подключения на устройстве может инициироваться с помощью одной кнопки. Технология SmartConfig может работать с SSID и KEY длиной до 32 символов. Пример приложения для iPhone приведен на рисунке 9.

Рис. 9. Приложение SmartConfig для iPhone

Рис. 9. Приложение SmartConfig для iPhone

С технической точки зрения процедура SmartConfig происходит следующим образом:

  • CC3000MOD переходит в состояние SmartConfig и начинает отслеживать UDP-пакеты, которые содержат информацию о SSID и ключе точки доступа, к которой CC3000MOD будет подключаться;
  • после того, как CC3000MOD получает всю информацию для подключения, модуль генерирует асинхронное событие SIMPLE_CONFIG_DONE к хосту и сохраняет информацию в энергонезависимой памяти (EEPROM файла ID 13);
  • процедура SmartConfig может быть выполнена с опциональным шифрованием AES-128. Это определяется на этапе компиляции драйвера хоста с помощью соответствующего флага среды разработки (флаг CC3000_UNENCRYPTED_SMART_CONFIG );
  • при выборе шифрования AES-128 вспомогательное устройство конфигурирования (смартфон) будет шифровать информацию с помощью определенного ключа, занесенного заранее в устройство с CC3000MOD;
  • при выборе шифрования AES-128 хост сначала расшифровывает информацию о параметрах доступа, затем сохраняет ее в качестве профиля;
  • если шифрование AES-128 не включено, CC3000MOD сразу сохраняет информацию о параметрах доступа в виде профиля;
  • как только процесс SmartConfig завершен и профиль сохранен, CC3000MOD производит сброс и подключается к нужной точке доступа. Пакет mDNS отправляется к устройству конфигурации (смартфону) для того, чтобы сообщить об окончании процесса конфигурации.

Процедура SmartConfig в большинстве случаев происходит в течение первых 10 секунд после старта. Однако в случае большого количества точек доступа следует ожидать результата не менее минуты.

 

Средства разработки

Модуль CC3000MOD имеет хорошую документацию и поддерживается большим набором средств разработки TI. Для тестирования модуля подойдут простые платы серии Launchpad на базе микроконтроллеров MSP430G2553, MSP430FR5739 и многофункциональные средства разработки на базе процессоров MSP430F5438, MSP430FG4618, TM4C123GH6PGE, LM3S9D96. Для работы с этими платами можно использовать быстросъемные оценочные модули на разъемах (мезонинные платы), которые представляют собой небольшие переходные платы с запаянным модулем CC3000MOD, антенной и минимально необходимой обвязкой (рисунок 10).

Рис. 10. Мезонинные платы на базе CC3000MOD для средств разработки TI

CC3000BOOST CC3000EM CC3000TIWISLEM CC3000TYPEVKEM
CC3000BOOST CC3000EM CC3000TIWISLEM* CC3000TYPEVKEM*
* – эти платы построены на модулях от третьих компаний (с чипсетом CC3000). Данные мезонинные платы продаются в интернет-магазине TiStore и входят в состав некоторых демонстрационных наборов TI. Для замены рекомендуется использовать совместимую по разъемам мезонинную плату CC3000EM на базе модуля CC3000MOD.

 

Производитель предоставляет несколько примеров приложений, которые реализуют типовые операции по обмену данными через сеть Wi-Fi. В таблице 3 приведен перечень демонстрационных приложений.

Таблица 3. Средства разработки и демонстрационные приложения
Программный интерфейс Демонстрационное приложение Средство разработки
t3_1a Отправка E-mail (Simple Email). Приложение позволяет отправить сообщение электронной почты через сервер SMTP (Simple Mail Transfer Protocol). Взаимодействие с пользователем происходит через любую терминальную программу

MSP EXP430FR5739

MSP-EXP430FR5739

t3_2a Беспроводные датчики (Wi-Fi Sensors). Это приложение отправляет на ПК данные с MEMS-акселерометра и температурного датчика. Температура, IP-адрес и наклон платы отображаются на ПК в виде летающей по орбите планеты
t3_3a Домашняя автоматизация (Home Automation). Приложение показывает, как модуль CC3000MOD может управлять бытовыми приборами через Wi-Fi. В качестве пульта управления используется любой смартфон на базе ОС Android
t3_4a Подключение к облачному серверу (Cloud Service). Приложение показывает удаленный сбор данных и управление M2M-объектом с помощью облачного сервиса Exosite. Плата отправляет данные с датчика температуры и шести каналов АЦП. Через WEB-интерфейс можно просматривать данные в виде графиков, приборных панелей и диаграмм. С помощью кнопки на странице сайта можно управлять светодиодом на плате.
t3_5a Базовое Wi-Fi приложение* (Basic Wi-Fi Application). Простейшее приложение, позволяющее подключаться к точке доступа, отправлять и принимать данные через UDP. Взаимодействие с пользователем происходит через любую терминальную программу.

* – Доступны версии для следующих микроконтроллеров: MSP430G2553, MSP430FR5739, MSP430F5529, TM4C123GH6PGE, LM4F120H5QR, MSP430FG4618, TM4C123G

t3_2b_1
MSP-EXP430G2

t3_6a Простой сетевой протокол синхронизации времени (Simple Network Time Protocol). Приложение позволяет получить точное время с помощью UDP-запросов. Запросы отправляются на один из девяти предопределенных NTP-серверов. Функция реализована в рамках приложения Basic Wi-Fi Application как дополнительная команда 0с

t3_5b

EK-TM4C123GXL

t3_7a Многопоточный обмен данными (Multithread – TI). Приложение показывает возможность одновременной работы нескольких TCP-сокетов (1 Tx, 2 Rx). Демонстрация функционала происходит через отладчик среды разработки CSS Debug
t3_8a Простой HTTP-сервер (Simple HTTP Server). Приложение показывает, как можно реализовать простейший HTTP WEB-сервер со статическими и динамическими страницами на базе модуля CC3000MOD. С помощью любого браузера можно управлять светодиодами на плате и считывать положение роторного джойстика

t3_4b
MSP-EXP430F5529

t3_9a_fmt WEB-сервер и клиент (Web Server & Client WSC application). WEB-сервер поддерживает несколько статических страниц и демонстрирует работу с динамическими страницами в формате HTML на базе сервера погоды. Динамические страницы используются для отображения местоположения. WEB-клиент получает данные о погоде в формате XML с помощью сервиса Google weather

t3_6b
DK-LM3S9B96

 

Примеры приложений от TI предоставляются вместе с исходным кодом в виде готовых проектов для сред разработки CSS и IAR. Для любителей платформы Arduino ряд сторонних компаний предлагает совместимые платы на базе CC3000MOD (рисунок 11).

Рис. 11. Платы с модулем CC3000 для платформы Arduino

ris_11_1 ris_11_2 ris_11_3

Для тех разработчиков, кто не готов устанавливать среду разработки, производитель предоставляет тестовые приложения для CC3000MOD в виде исполняемого exe-файла, который включает в себя программатор и, собственно, прошивку. При запуске данное приложение находит подключенную к ПК плату Launchpad и загружает приложение «в один клик».

 

Заключение

Модуль CC3000MOD представляет собой беспроводной сетевой процессор Wi-Fi, который существенно упрощает интернет-соединение для любого устройства, даже со слабым микроконтроллером на борту. Невысокие требования к производительности и объему памяти хост-контроллера позволяют встраивать CC3000 в достаточно простые и недорогие изделия – бытовую технику, медицинское и измерительное оборудование. Открытый программный код и большое количество недорогих отладочных средств, готовых к работе практически «из коробки», существенно ускоряют и облегчают процесс реализации инженерных идей разработчика.

Получение технической информации, заказ образцов, поставка – e-mail: wireless.vesti@compel.ru

Сover_2

•••

Наши информационные каналы

О компании Texas Instruments

В середине 2001 г. компании Texas Instruments и КОМПЭЛ заключили официальное дистрибьюторское соглашение, которое явилось результатом длительной и успешной работы КОМПЭЛ в качестве официального дистрибьютора фирмы Burr-Brown. (Как известно, Burr-Brown вошла в состав TI так же, как и компании Unitrode, Power Trend и Klixon). С этого времени компания КОМПЭЛ получила доступ к поставке всей номенклатуры производимых компанией TI компонен ...читать далее

Товары
Наименование
CC3000 CLICK (MIKROEL)