Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кармин Новиелло - Освоение STM32.pdf
Скачиваний:
2751
Добавлен:
23.09.2021
Размер:
47.68 Mб
Скачать

26. Разработка IoT-приложений

В взаимосвязанном мире все больше и больше устройств подключены к Интернету. Автомобили, бытовая техника, такая как стиральные машины и холодильники, освещение, жалюзи, термостаты, а также датчики для мониторинга окружающей среды – это лишь несколько примеров устройств, которые в настоящее время обмениваются сообщениями через Интернет. Некоторые наблюдатели согласны с этим, говоря, что наступила эра Интернета вещей (Internet of Things, IoT). На самом деле, трудно сказать, станет ли IoT новой золотой эрой для электронной промышленности. Но нет сомнений, что многие производители интегральных схем вкладывают миллиарды в эту область.

Интернет вещей (IoT) – расплывчатый термин. В нем ничего не говорится о стандартах связи, протоколах, уровнях приложений и даже архитектурах системы. Мир коммуникационных протоколов и технологий IoT – это джунгли. Существуют десятки стандартов, особенно для протоколов беспроводной связи. WiFi, Bluetooth, Zigbee, LoRaWAN, проприетарные решения, такие как SimpliciTI от TI или MiWI от Microchip, мобильные сети 4G/3G. Существуют даже десятки средств коммуникации. Например, в беспроводной связи частоты 2,4 ГГц и 5,8 ГГц являются мировыми стандартами, но существует несколько региональных и альтернативных частот, таких как 868 МГц в ЕС (915 МГц в США), 434 МГц в некоторых частях ЕС и США, 169 МГц в большей части ЕС и Японии. Каждый из этих стандартов имеет свои правила относительно мощности передачи, рабочего цикла и так далее. У каждого есть свои преимущества и недостатки.

Выбор коммуникационной среды и протокола также влияет на архитектуру приложения. Например, устройство с поддержкой Wi-Fi или Ethernet может подключаться к Интернету, используя только маршрутизатор со встроенным МОДЕМОМ. Устройству, использующему проприетарный протокол (например, устройство Zigbee), обычно требуется промежуточное устройство (блок управления), которое собирает сообщения и отправляет их на централизованный сервер (или облачный сервер, как сейчас называются централизованные сервера) через Интернет. Для некоторых «промышленных» приложений это часто является преимуществом (локальные устройства могут продолжать работать даже при отсутствии Интернета). Для потребительских приложений это обычно отбивает у пользователей желание принять решение.

В настоящее время существует несколько производителей интегральных схем, которые предлагают микроконтроллеры со встроенной проводной и беспроводной связью. Компания Texas Instruments после приобретения ChipCon разработала несколько микроконтроллеров со встроенными интерфейсами радиосвязи. Например, CC2540 – это микроконтроллер 8051 с радиомодулем 2,4 ГГц, предназначенный для Bluetooth-прило- жений. CC3200 – это ядро Cortex-M4 с радиомодулем 2,4 ГГц, способное обмениваться данными в соответствии со стандартом WiFi. Недавно на рынке появился еще один игрок. Espressif1 – китайская компания, которая представила на рынке двухъядерный микроконтроллер Tensilica2 LX6, работающий на частоте 240 МГц, со встроенным радио-

1https://espressif.com/

2Tensilica – это компания, которая, как и ARM, разрабатывает IP-ядра, которые позже внедряются производителями интегральных схем. В настоящее время она принадлежит Cadence – той же компании, которая разрабатывает Allegro CAD.

Разработка IoT-приложений

713

модулем 2,4 ГГц и уровнем MAC (ESP323). Эти микроконтроллеры стоят менее 5 долларов США при небольших объемах и становятся очень популярными среди производителей.

Помимо неудачного STM32W, ST до сих пор не предлагает микроконтроллер STM32 со встроенным радиоканалом. И это действительно печально, особенно потому, что ST обладает всеми необходимыми ноу-хау для создания радиоприложений (по мнению автора, ее радиопередатчики SPIRIT являются одними из лучших решений на рынке). Несколько микроконтроллеров STM32, принадлежащих более мощным сериям, имеют интегрированный Ethernet контроллер, которому просто требуется физический адаптер LAN для подключения микроконтроллера к Интернету. К сожалению, за исключением пары номеров устройств по каталогу (P/N) из серии STM32F1, все микроконтроллеры с интерфейсом Ethernet поставляются в корпусе с большим количеством выводов.

В данной главе представлено решение для владельцев плат Nucleo-64, на которых нет контроллера Ethernet. Предлагаемое решение основано на сетевом процессоре W5500 от WIZnet4 – корейской компании, специализирующейся на разработке такого рода устройств. Эта компания достигла большой популярности благодаря микросхеме W5100, которая использовалась при разработке популярного Arduino Ethernet Shield5. Мы увидим, как разработать встроенное приложение со встроенным веб-сервером с помощью Nucleo. Однако, прежде чем приступить к этому материалу, я кратко ознакомлю вас с тем, что ST предлагает для разработки приложений IoT с инициативой CubeHAL.

26.1. Решения, предлагаемые ST для разработки

IoT-приложений

Как было сказано ранее, несколько микроконтроллеров STM32 из серий F1/2/4/7 имеют встроенный Ethernet контроллер, который поддерживает независимый от среды передачи интерфейс (Media-Independent Interface, MII) и его вариант сокращенный интерфейс MII

(Reduced-MII, RMII). Это стандарт связи, который абстрагируется от используемой физической среды и позволяет подключать MAC-уровень контроллера Ethernet к микросхеме физического контроллера (physical controller chip), также называемой phyther. На рынке существует несколько LAN phyther, и межсоединение с микросхемой полностью обрабатывается низкоуровневым протоколом MII.

Однако наличие специализированного аппаратного интерфейса не позволяет быстро создавать IoT-приложения. Также необходим полный стек TCP/IP, иначе обработка такого сложного стека протоколов, как TCP/IP, невозможна для одного разработчика. ST не предоставляет специального решения, но использует стек Lightweight IP (LwIP). LwIP – это фреймворк с открытым исходным кодом, созданный Адамом Данкелсом (Adam Dunkels) и теперь поддерживаемый большим сообществом. Более того, несколько других компаний-производителей семейств, таких как Altera, Xilinx и Freescale, вносят вклад в разработку этого довольно сложного фреймворка.

ST интегрировала LwIP в CubeMX, который автоматически добавляет в проект все необходимые файлы для работы с этим фреймворком. После включения Ethernet контроллера LwIP появляется как выбираемый компонент промежуточного программного

3https://www.espressif.com/en/products/hardware/esp32/overview

4http://www.wiznet.co.kr/

5https://www.arduino.cc/en/Main/ArduinoEthernetShield

Разработка IoT-приложений

714

обеспечения. Текущий стабильный выпуск – 2.0.2, который был выпущен к концу 2016 года. ST активно обслуживает и поддерживает его.

Вот наиболее важные возможности LwIP:

Межсетевой протокол IP (Internet Protocol, IPv4 и IPv6), включая пересылку пакетов через несколько сетевых интерфейсов

Протокол межсетевых управляющих сообщений ICMP (Internet Control Message Protocol) для обслуживания и отладки сети

Протокол управления межсетевыми группами IGMP (Internet Group Management Protocol) для управления многоадресным трафиком

Протокол определения получателей мультивещательных запросов MLD (Multicast listener discovery) для IPv6

Стремится соответствовать RFC 2710. Нет поддержки MLDv2.

Протокол обнаружения соседей ND (Neighbor discovery) и автоконфигурация ад-

реса без сохранения состояния SLAAC (Stateless address autoconfiguration) для IPv6

Стремится соответствовать RFC 4861 (обнаружение соседей) и RFC 4862 (автоконфигурация адреса)

Протокол пользовательских дейтаграмм UDP (User Datagram Protocol), включая экспериментальные расширения UDP-lite

Протокол управления передачей TCP (Transmission Control Protocol) с контролем перегрузки, оценкой RTT и быстрыми восстановлением/повторной передачей

API-интерфейсы raw/native socket для повышения производительности

Дополнительно API-интерфейс Berkeley-like socket

Система доменных имен DNS (Domain name system)

LwIP также предоставляет полную реализацию следующих прикладных протоколов:

HTTP-сервер с SSI и CGI

Агент SNMPv2c с компилятором MIB (простой протокол сетевого управления

SNMP (Simple Network Management Protocol))

простой протокол сетевого времени SNTP (Simple network time protocol)

Ответчик службы имен NetBIOS

Ответчик MDNS (мультивещательный DNS (Multicast DNS))

Реализация сервера iPerf

Из-за отсутствия интерфейса RMII в микроконтроллерах STM32, установленных в шестнадцати платах Nucleo-64, я не буду подробно описывать здесь операции, необходимые для настройки LwIP в ваших приложениях. Обратитесь к примерам CubeHAL для получения дополнительной информации. Более того, вы можете найти в моем блоге несколько сообщений по этой теме. Напоследок, инструмент CubeMXImporter реализует всю необходимую логику для импорта стека LwIP в проект GNU MCU Eclipse.

Для разработки Wi-Fi приложений ST предоставляет специальный модуль6 под названием SPWF01SA7 (см. рисунок 1). Это монолитный модуль, состоящий из STM32 и внешнего интерфейса 2,4 ГГц радиомодуля. STM32 не предназначен для программирования

6http://www.st.com/content/st_com/en/products/wireless-connectivity/wi-fi/spwf01sa.html

7Существует четыре варианта этого модуля. Они различаются наличием антенны (если P/N заканчивается на «A», модуль имеет встроенную чип-антенну, если P/N заканчивается на «C», то предоставляется разъем micro SMA) и размером встроенной Flash-памяти (512 КБ или 1,5 КБ).

Разработка IoT-приложений

715

пользователем, но он хранит полный стек TCP/IPv4 плюс встроенный веб-сервер. Отправляя AT-команды по интерфейсу UART, пользователь может настроить модуль таким образом, чтобы он выполнял сетевые операции (подключение к Wi-Fi, сети, открытие сокетов и т. д.). Встроенный веб-сервер также может обрабатывать веб-страницы, хранящиеся во внутренней Flash-памяти (поэтому размер Flash-памяти имеет решающее значение). Внутреннюю прошивку можно обновить по UART с помощью специального загрузчика. ST не предоставляет никакого исходного кода и подробностей относительно стека TCP/IP. У меня нет опыта работы с этим модулем, и я не могу сказать, стоит ли вкладывать в него средства. Я подозреваю, что его функциональные возможности действительно ограничены. В конце концов, существует совместимая плата расширения

Nucleo под названием X-NUCLEO-IDW01M18.

Рисунок 1: Монолитный WiFi модуль SPWF01SA

Для разработки приложений субгигагерцового диапазона ST предлагает несколько решений на основе ИС SPIRIT1. Более того, ST может предоставить под NDA полный стек для разработки беспроводных приложений с использованием этой ИС. Этот стек также совместим с протоколом 6LowPAN. Существует плата расширения Nucleo (X-NUCLEO- IDS01A49), и ST добавила поддержку ContikiOS10, чтобы использовать ее вместе с приемопередатчиком SPIRIT1.

Наконец, ST недавно объявила о партнерстве с Semtech для разработки индивидуальных решений, совместимых с Long Range Alliance (LoRa). Согласно этой новости в прессе11, ST планирует разработать микроконтроллеры STM32 с встроенной технологией LoRa, которая поддерживает стандартизированный протокол LoRaWANTM. Semtech и ST будут сотрудничать, чтобы интегрировать технологию LoRa во множество платформ, предназначенных для различных приложений, для нескольких бизнес-инициатив вокруг LoRa. На момент написания данной главы (ноябрь 2016 г.) ST выпустила библиотеку, совместимую с CubeHAL12, и комплект на основе платы Nucleo. В комплекте используется MBEDсовместимый шилд SX1272MB2xAS13 от Semtech. Я скоро опробую их. Следите за моим блогом. Наконец, эта тайваньская компания14 производит модули типа система в корпусе (System-in-a-Package, SiP), которые объединяют STM32 и радиочастотную ИС Semtech в одном корпусе: это кажется действительно интересной интеграцией.

8http://www.st.com/content/st_com/en/products/ecosystems/stm32-open-development-environment/stm32-nu- cleo-expansion-boards/stm32-ode-connect-hw/x-nucleo-idw01m1.html

9http://www.st.com/content/st_com/en/products/ecosystems/stm32-open-development-environment/stm32-nu- cleo-expansion-boards/stm32-ode-connect-hw/x-nucleo-ids01a4.html

10http://www.st.com/content/st_com/en/products/embedded-software/wireless-connectivity-software/open- rf/osxcontiki6lp.html

11http://www.st.com/content/st_com/en/about/media-center/press-item.html/c2790.html

12http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embed- ded-software/stm32cube-expansion-software/i-cube-lrwan.html

13http://www.st.com/content/st_com/en/products/wireless-connectivity/lorawan/p-nucleo-lrwan1.html

14http://www.acsip.com.tw