Espruino Puck.js: распиновка, схема подключения и программирование

Espruino Puck.js — миниатюрная платформа для разработки со встроенным интерпретатором JavaScript.

Мозгом платы является модуль MDBT42Q с чипом Nordic nRF52840, который также обеспечивает беспроводную связь и прошивку по Bluetooth v5.0.

Подключение и настройка

Платформа поддерживает два типа подключения и отладки:

Беспроводное подключение

Если у вас на ПК отсутствует Bluetooh-модуль или вы сторонник проводной системы — используйте проводной способ коммуникации с платформой.

Шаг 1

Для старта вклюсите плату Espruino Puck.js.

  1. Снимите силиконовый бампер с модуля.
  2. Вытащите плату из пластикового кейса.
  3. Вытяните батарейку из батарейного отсека, снимите защитную плёнку и установите батарейку обратно в отсек.
  4. По финалу должен мигнуть крансый светодиод.

Шаг 2

Для работы с платой Espruino Puck.js по беспроводному протоколу Bluetooth добавьте и настройте в Google Chrome среду программирования Espruino Web IDE.

Проводное подключение

Шаг 1

Так как на плате отсутствует USB, для коммуникации с компьютером нам понадобиться USB-UART преобразователь, а подробнее:

Шаг 2

Для работы с платой Espruino Puck.js добавьте и настройте в Google Chrome среду программирования Espruino Web IDE.

Примеры работы

В качестве примера прошьём платформу Espruino Puck.js скриптом, который каждую секунду будет по очереди включать встроенные светодиоды LED1, LED2 и LED3.

example-running-fire.js
// создаём объекты таймеры для генерирования событий
var timerBlue = require('@amperka/timer')
  .create(1);
 
var timerGreen = require('@amperka/timer')
  .create(1);
 
var timerRed = require('@amperka/timer')
  .create(1);
 
var timerLedsOff = require('@amperka/timer')
  .create(1);
 
// подписываемся на событие-тик 
timerRed.on('tick', function() {
  timerGreen.stop();
  LED1.write(1);
  LED2.write(0);
  LED3.write(0);
  timerLedsOff.run();
});
 
// подписываемся на событие-тик
timerGreen.on('tick', function() {
  timerBlue.stop();
  LED1.write(0);
  LED2.write(1);
  LED3.write(0);
  timerRed.run();
});
 
// подписываемся на событие-тик
timerBlue.on('tick', function() {
  timerLedsOff.stop();
  LED1.write(0);
  LED2.write(0);
  LED3.write(1);
  timerGreen.run();
});
 
// подписываемся на событие-тик
timerLedsOff.on('tick', function() {
  LED1.write(0);
  LED2.write(0);
  LED3.write(0);
  timerBlue.run();
  timerRed.stop();
});
 
// запускаем таймер отключения всех светодиодов
timerLedsOff.run();

Элементы платы

Модуль MDBT42Q

Платформа Espruino Puck.js выполнена на модуле MDBT42Q, который включает в себя 32-битный микроконтроллер Nordic nRF52840 на архитектуре ARM Cortex-M4 с тактовой частотой 64 МГц, 512 КБ Flash-памяти и 64 КБ SRAM-памяти.

Чип Nordic nRF52840 так же обеспечивает связь Bluetooth v5.0 в диапазоне 2,4 ГГц и поддерживает энергосберегающий протокол Bluetooth Low Energy (BLE). Всё это позволяет прошивать и отлаживать платформу Puck.js через Espruino Web IDE прямо по воздуху.

Магнитометр

На плате расположен магнитомер MAG3110, который можно использовать в роли датчика Холла или детектора металла и скрытой проводки.

Светодиодная индикация

Имя светодиода Назначение
LED1 Пользовательский светодиод красного цвета на D5 пине микроконтроллера. Используйте определение LED1 для работы со светодиодом. При задании значения высокого уровня светодиод включается, при низком – выключается.
LED2 Пользовательский светодиод зелёного цвета на D4 пине микроконтроллера. Используйте определение LED2 для работы со светодиодом. При задании значения высокого уровня светодиод включается, при низком – выключается.
LED3 Пользовательский светодиод синего цвета на D3 пине микроконтроллера. Используйте определение LED3 для работы со светодиодом. При задании значения высокого уровня светодиод включается, при низком – выключается.

Инфракрасный светодиод

На плате расположен ИК-светодиод, который подключён анадом (+) к D25 пину, а катодом (−) к D26 пину микроконтроллера.

Дальность действия ИК-порта составляет около 1,5 метра. Если хотите увеличить дальность, снимите с платформы силиноковый бампер.

Пользовательская кнопка

Пользовательская кнопка подключённая к D0 цифровому пину микроконтроллера. Для работы в программе используйте определение BTN. Кнопка пригодиться для создания и теста простых программ, без подключения дополнительных тактильных сенсоров.

Кнопка также может переводить плату в DFU-режим. Это позволит перепрошить или обновить интерпретатор JavaScript в микроконтроллер без дополнительного программатора. Для перевода в DFU-режим:

  • Отключите питание от платформы.
  • Зажмите кнопку BTN.
  • Подключите питание к платформе и отпустите кнопку.

Гнездо для батарейки

На плате расположен отсек для батарейки CR2032, которая обеспечивает работу платформы в портативном режиме. В автономном варианте батарейка сможет протянуть и обеспечить питание платфомы Puck.js до 20 дней.

Контакты SWD-интерфейса

Колодки SWD предназначены для подключения программатора и отладчика ST-Link к плате Puck.js.

Распиновка

Пины питания

  • 3V Выходной пин от с выходом 3 вольта от батарейки CR2032.
  • GND Выводы земли.

Порты ввода/вывода

В отличие от большинства плат Arduino, родным напряжением Espruino Puck.js является 3,3 В, а не 5 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать не более 3,3 В. Более высокое напряжение может повредить микроконтроллер!

Будьте внимательны при подключении периферии: убедитесь, что она может корректно функционировать в этом диапазоне напряжений.

  • Цифровые входы/выходы 17 пинов: D1, D2, D6D8, D11, D13D16, D23, D24 и D27D31
    Логический уровень единицы — 3,3 В, нуля — 0 В. Максимальный ток выхода — 15 мА. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.
  • ШИМ все пины ввода-вывода
    Позволяет выводить аналоговые значения в виде ШИМ-сигнала. Разрядность ШИМ установлена в 12 бит. Платформа поддерживает 4 канала аппаратного ШИМ-сигнала, каждый последующий становиться программным.
  • АЦП 5 пинов: D2 и D28D31
    Позволяет представить аналоговое напряжение в виде цифровом виде. Разрядность АЦП установлена в 12 бит.
  • NFC
    Для общения с картами общественного транспорта, смартфонами и планшетами, поддерживающими технологию Near Field Communication. Антенна уже встроеная в плату Puck.js и подключена к внутренним пинам модуля MQBT42Q.

Интерфейсы

Каждый пин ввода-вывода платформы поддерживает аппаратные интерфейсы.

Интерфейс Количество Назначение
I²C 1 Используется для общения с периферией по параллельному интерфейсу «I²C».
SPI 1 Для общения с периферией по последовательному интерфейсу «SPI».
UART/Serial 1 Для общения с периферией по интерфейсу «UART».

Принципиальная и монтажная схемы

Габаритный чертёж

Характеристики

  • Модуль: MDBT42Q с чипом nRF52832
  • Ядро: 32-битный ARM Cortex M4
  • Частотный диапазон связи: 2,4 ГГц
  • Стандарт связи: Bluetooth v5.0 с поддержкой BLE
  • Тактовая частота: 64 МГц
  • Flash-память: 512 КБ
  • SRAM-память: 64 КБ
  • Пинов ввода-вывода всего: 17 (8 THT + 9 SMD)
  • Напряжение логических уровней: 3,3 В
  • Пины с АЦП: 5
  • Разрядность АЦП: 12 бит
  • Пины с ШИМ: 17
  • Разрядность ШИМ: 12 бит
  • Аппаратных интерфейсов SPI: 1
  • Аппаратных интерфейсов I²C / TWI: 1
  • Аппаратных интерфейсов UART / Serial: 1
  • Максимальный ток с пина или на пин: 15 мА
  • Габариты платы: 29×9 мм
  • Габариты плаcтикового корпуса: 36×12,5 мм

Магнитометр

  • Чип: MAG3110
  • Интерфейс связи с микроконтроллером: I²C
  • Адрес модуля: 0x0E
  • Диапазон измерения магнитной индукции: ±4/±8/±12/±16 Гс
  • Частота опроса магнитометра: 0,625–80 Гц

Ресурсы