WSN-LTE шлюз на CC1310 и WP8548. Часть 1

Приветствую, Habr! В данной статье рассмотрен процесс разработки Wireless Sensor Network (WSN) шлюза для передачи данных от беспроводных датчиков на сервер через мобильную связь. В качестве начинки будем использовать Sub-1GHz SoC CC1310 и программируемый модуль WP8548 от Sierra Wireless. AirPrime WP8548 — это промышленный модуль LGA-239. Его беспроводной модем обеспечивает передачу данных в сетях HSPA, WCDMA, EDGE и GPRS, а также прием GPS сигнала.

Мотивация. Зачем это всё?

Конечно, данную задачу можно было бы решить путем применения микроконтроллера CC1310 в связке с 3G модемом от SIMCOM или Quectel, но: модуль WP8548 лежит у меня в столе уже несколько лет. Рациональное применение данному модулю из-за его стоимости ($60, DigiKey) я так и не нашел, но зуд попробовать его на деле до сих пор мучает меня. Предупреждаю сразу:

  1. Решение дороже аналогичных с Aliexpress

  2. Я не решаю конкретную задачу, а пытаюсь оценить возможности данного модуля

Шаг 1. Блок-схема питания

Самый скучный этап проектирования схемы будущего устройства. Но отложим все свои вздохи и посмотрим параметры питания основных компонентов схемы. Открываем страницу 26 документации и видим, что диапазон напряжения питания WP8548 от 3.4 до 4.3 вольт (напрашивается питание от литиевого аккумулятора). CC1310 работает при напряжении питания от 1.8 до 3.8 вольт. Давайте предъявим к будущему устройству общие требования:

  1. Работа от литиевого аккумулятора + его зарядка

  2. Повышающий преобразователь на 5В для питания внешних устройств от литиевго аккумулятора.

  3. Возможность отключения питания части схемы при переходе в спящий режим

  4. Размер печатной платы не больше кредитной карты, конечно

Для начала прикинем, что у нас в целом будет на плате. WP8548 имеет возможнсть работы с MicroSD картой, которая требует 2,95В для своего питания. Логический уровень GPIO у модуля 1.8В, что не очень удобно для домашних поделок. Будем использовать микросхемы согласования уровня, которые требуют для своего питания напряжения 1.8В и 3.3В. Кроме того модуль имеет HSIC интерфейс. К нему будем подключать микросхему USB3503 (имеет внутренние LDO) для обеспечения работы с внешними USB устройствами.

Для зарядки используем микросхему BQ24292. С ней мы получаем возможность использовать источник напряжения до 17В на случай, если захотим подключить наш шлюз к солнечной батарее с 12В АКБ. Ток заряда до 4А, что теоретически позволит нам заправлять параллельно два аккумулятора из PowerBank’ов на 20А.

В качестве повышающего преобразователя мне понравилась микросхема TPS63802. Для запуска нужно всего 6 компонентов, а с учетом корпуса микросхемы и частоты преобразования в 2МГц мы получим минимальный по площади (и пригодный для ручной пайки) buck-boost конвертер.

Микроконтроллер CC1310 будет выступать в качестве программируемого PMIC, то есть напряжение 3.3В на него будет подаваться всегда. Все остальные напряжения делаем отключаемыми.

Итого нам надо:

  1. 1.8В для микросхемы согласования (отключаемое)

  2. 3.3В для микросхемы согласования (отключаемое)

  3. 2.95В для MicroSD (отключаемое)

  4. 3.3В для CC1310 (всегда включено)

Будем использовать программируемую (ADJ) микросхему линейного регулятора TPS79301 для всех четырех напряжений, чтобы не увеличивать количество позиций в перечне элементов.

Суммарно имеем следующее:

fe2e476e10cf6d0d48d1e449f502f04b

Шаг 2. Схема электрическая. Принципиальная

Процесс проектирования схемы расписывать я не буду, а лишь оставлю некоторые части схемы с комментариями. В конце статьи будет ссылка на полную схему.

Схема заряда

fb62a5b1c3b7c871f43fbe636a0388e8

Зарядка осуществляется от внешнего адаптера питания напряжением до 17В. При подключении питания по USB (высокий уровень на PSEL от +VBUS), микросхема BQ24292 будет ограничивать ток заряда так, чтобы не перегрузить USB порт ПК.

Часть схемы согласования уровней

5a622918dfaa6a3f0b9e27a9298fa20a

Предполагается отключение U5 и U10 при переходе в спящий режим. Для включения WP8548 необходимо кратковременно подать логический 0 на вывод PWR_ON, который имеет внутренний pull-up резистор. По сути, VT1 и VT2 включены по схеме с открытым коллектором для запуска и сброса модуля. Open-drain в CC1310 не используется для этих целей с точки зрения защиты от случайной перегрузки по напряжению.

Питание MicroSD, питание CC1310, USB

afc7e7e459e9ad3dc8d455eaa5f95cc4

USB необходимо для настройки и прошивки WP8548, дополнительно обеспечиваем для него ESD защиту.

Шаг 3: Трассировка и пайка платы

И вот мы добираемся до трассировки платы. По классике жанра, берем кредитку и с линейкой переносим ее контур на слой keep-out. Затем импортируем схему и приступаем к разводке.

236064a457c38890d1654c15964e8e38

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

f094cd61b4bc20b78c5646cdd0804df4

А вот и сам модуль с сокетом. Паять мы будем сокет.

3219eacf3f94ff8f9fc24c21b77d2099

3D модель платы.

Что касается пайки. Я не заказывал трафарет для паяльной пасты, дабы сэкономить на его стоимости. Поэтому аккуратно наносим припой паяльником, наносим флюс, расставляем компоненты и отправляем плату в печку.

Когда я собираю первую версию платы, то не паяю все компоненты сразу, а начинаю пайку с узлов питания. Например, паяю понижающий DC-DC преобразователь c 12В до 5В. Запускаю и с осциллографом проверяю, что всё работает корректно. Затем продолжаю пайку и собираю понижающий преобразователь с 5В до 2.8В и снова проверяю плату. И так далее, пока не будут собраны и проверены все цепи питания. Если пайка осуществляется на заводе, то на схеме между источниками и потребителями достаточно заложить перемычки.

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

c92ab0674da915a657fca13318055a83

Отмывочной ванны у меня нет. Всё что смог оттереть щеткой со спиртом — оттёр :) Видим, что горит красный светодиод справа — модуль поймал сеть, синий светодиод слева — идет зарядка аккумулятора. Отлично, подключаем плату к ПК и видим три виртуальных COM-порта.

b1040b4826e49c7a6b4ba7ff4e62001f

Кроме того в системе появляется сетевой интерфейс. Пробуем пинговать модуль по адресу 192.168.2.2

3f5094ade812f22666875aa4b4e1830c

Здорово, пробуем подключиться по SSH к модулю. Пользователь root, пароль не требуется.

a6007fca68c45854c76267326f061789

Видим, что модуль определил SIM-карту на втором слоте, сигнал сети сильный.

Отлично, первый шаг к реализации шлюза сделан. В следующий раз будем писать прошивку для CC1310 и начнем собирать данные от беспроводных устройств.

Ссылка на схему устройства тут.

© Habrahabr.ru