====== Espruino Puck.js v2.1: руководство по использованию ======
[[amp>product/espruino-puck-js?utm_source=man&utm_campaign=espruino-puck-js-v2&utm_medium=wiki|Espruino Puck.js v2.1]] — миниатюрная платформа для разработки со встроенным интерпретатором JavaScript.
{{ :products:espruino-puck-js-v2:espruino-puck-js-v2.1.jpg?nolink&500 |}}
Мозгом платы является модуль MDBT42Q с чипом Nordic nRF52840, который также обеспечивает беспроводную связь и прошивку по Bluetooth v5.3.
==== Ревизии модуля ====
^ Функции ^ [[amp>product/espruino-puck-js-v1?utm_source=man&utm_campaign=espruino-puck-js-v2&utm_medium=wiki|Puck.js v1]] ^ Puck.js v2 ^ [[amp>product/espruino-puck-js?utm_source=man&utm_campaign=espruino-puck-js-v2&utm_medium=wiki|Puck.js v2.1]] ^
|GPIO THT | 8 | 7 | 7 |
|GPIO SMD | 9 | 2 | 2 |
|Магнитометр | MAG3110 | LIS3MDLTR | MMC5603NJ |
|Акселерометр | Нет | LSM6DS3TR-C | LSM6DS3TR-C |
|Гироскоп | Нет | LSM6DS3TR-C | LSM6DS3TR-C |
|Датчик температуры | nRF52 | PCT2075TP | PCT2075TP |
|Силовой выход | Нет | 1 | 1 |
===== Подключение и настройка =====
- [[#включение_модуля|Включите плату Espruino Puck.js v2.]]
- Подключите модуль к Espruino Web IDE. Платформа поддерживает два типа подключения и отладки:
- [[#беспроводное_подключение|По беспроводному протоколу BLE]]
- [[#проводное_подключение|По проводному последовательному интерфейсу UART]]
- [[#примеры_работы|Переходите к примерам работы.]]
==== Включение модуля ====
Espruino Puck.js всегда находится в режиме готовности к коммуникации. Однако при первом запуске — необходимо подключить питание к модулю.
- Снимите силиконовый бампер с модуля и плату из пластикового кейса.{{ :products:espruino-puck-js-v2:espruino-puck-js-v2-setup-power.1.jpg?nolink |}}
- Установите батарейку таблетку в модуль. Если батарейка таблетка уже в модуле: вытяните таблетку из батарейного отсека, снимите защитную плёнку и установите таблетку обратно в отсек.{{ :products:espruino-puck-js-v2:espruino-puck-js-v2-setup-power.2.jpg?nolink |}}
- По финалу должен мигнуть красный светодиод. Это значит всё получилось и можно продолжать работу с модулем.
==== Беспроводное подключение ====
{{ :products:espruino-puck-js-v2:espruino-puck-js-v2-setup-wireless.1.jpg?nolink&500 |}}
Для работы с платой Espruino Puck.js v2.1 по беспроводному протоколу Bluetooth добавьте и настройте в Google Chrome среду программирования [[js:ide|Espruino Web IDE]].
Если у вас на ПК отсутствует Bluetooh-модуль или вы сторонник проводной системы — [[#проводное_подключение|используйте проводной способ коммуникации с платформой]].
==== Проводное подключение ====
{{ :products:espruino-puck-js-v2:espruino-puck-js-v2-setup-wiring.1.jpg?nolink&500 |}}
Так как на плате отсутствует USB, для коммуникации с компьютером нам понадобится собрать железо.
=== Что понадобится ====
Так как на плате отсутствует USB, для коммуникации с компьютером нам понадобится USB-UART преобразователь, а подробнее:
* [[amp>product/espruino-puck-js?utm_source=man&utm_campaign=espruino-puck-js-v2&utm_medium=wiki|Espruino Puck.js v2.1]]
* [[amp>product/breadboard-mini?utm_source=man&utm_campaign=espruino-puck-js-v2&utm_medium=wiki|Макетная плата (Mini)]]
* [[amp>product/troyka-usb-uart?utm_source=man&utm_campaign=espruino-puck-js-v2&utm_medium=wiki|USB-UART преобразователь]]
* [[amp>product/usb-cable-micro?utm_source=man&utm_campaign=espruino-puck-js-v2&utm_medium=wiki|Кабель USB (A — Micro USB)]]
* [[amp>product/wire-fm?utm_source=man&utm_campaign=espruino-puck-js-v2&utm_medium=wiki|Соединительные провода «папа-мама»]]
=== Схема устройства ===
{{ :products:espruino-puck-js-v2:espruino-puck-js-v2-setup-wiring.2.png?nolink |}}
=== Программная настройка ===
Для работы с платой Espruino Puck.js v2.1 добавьте и настройте в Google Chrome среду программирования [[js:ide|Espruino Web IDE]].
===== Примеры работы =====
В качестве примера прошьём платформу Espruino Puck.js v2.1 скриптом, который каждую секунду будет по очереди включать встроенные светодиоды LED1, LED2 и LED3.
// создаём объекты таймеры для генерирования событий
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();
{{ :products:espruino-puck-js-v2:espruino-puck-js-v2-example-blink.gif?nolink |}}
===== Элементы платы =====
{{ :products:espruino-puck-js-v2:espruino-puck-js-v2-annotation.png?nolink |}}
==== Модуль MDBT42Q ====
Платформа Espruino Puck.js v2.1 выполнена на модуле {{ :products:espruino-puck-js-v2:mdbt42q-datasheet.pdf |MDBT42Q}}, который включает в себя 32-битный микроконтроллер {{ :products:espruino-puck-js-v2:nrf52832-product-specification.pdf |Nordic nRF52840}} на архитектуре ARM Cortex-M4 с тактовой частотой 64 МГц, 512 КБ Flash-памяти и 64 КБ SRAM-памяти.
{{ :products:espruino-puck-js-v2:espruino-puck-js-v2-composed.png?nolink |}}
Чип Nordic nRF52840 так же обеспечивает связь Bluetooth v5.3 в диапазоне 2,4 ГГц и поддерживает энергосберегающий протокол Bluetooth Low Energy (BLE). Всё это позволяет прошивать и отлаживать платформу Puck.js v2.1 через Espruino Web IDE прямо по воздуху.
==== Магнитометр ====
На плате расположен магнитометр {{ :products:espruino-puck-js-v2:mmc5603nj-datasheet.pdf |MMC5603NJ}}, который можно использовать в роли датчика Холла или детектора металла и скрытой проводки.[[https://www.espruino.com/Puck.js#magnetometer|Примеры работы смотрите на сайте производителя]]
==== IMU-сенсор ====
IMU-сенсор на 6 степеней свободы включает в себя акселерометр и гироскоп компас. Сборка выполнена на чипе {{ :products:espruino-puck-js-v2:lsm6ds3tr-c-datasheet.pdf |LSM6DS3TR-C}} по технологии SiP (англ. System-in-Package — система в корпусе), где акселерометр и гироскоп лежат методом бутерброда в пластиковом корпусе. [[https://www.espruino.com/Puck.js#accelerometer-gyro|Примеры работы смотрите на сайте производителя]].
==== Светодиодная индикация ====
^ Имя светодиода ^ Назначение ^
| LED1 | Пользовательский светодиод красного цвета на ''D5'' пине микроконтроллера. Используйте определение ''LED1'' для работы со светодиодом. При задании значения высокого уровня светодиод включается, при низком – выключается.|
| LED2 | Пользовательский светодиод зелёного цвета на ''D4'' пине микроконтроллера. Используйте определение ''LED2'' для работы со светодиодом. При задании значения высокого уровня светодиод включается, при низком – выключается.|
| LED3 | Пользовательский светодиод синего цвета на ''D3'' пине микроконтроллера. Используйте определение ''LED3'' для работы со светодиодом. При задании значения высокого уровня светодиод включается, при низком – выключается.|
==== Инфракрасные светодиоды ====
На плате расположены два последовательно соединённых ИК-светодиода с дальностью свечения около 1,5 метра. Если хотите увеличить дальность, снимите с платформы силиконовый бампер. [[https://www.espruino.com/Puck.js#ir-infrared|Примеры работы смотрите на сайте производителя]].
==== Пользовательская кнопка ====
Пользовательская кнопка подключённая к ''D0'' цифровому пину микроконтроллера. Для работы в программе используйте определение ''BTN''. Кнопка пригодиться для создания и теста простых программ, без подключения дополнительных тактильных сенсоров.
Кнопка также может переводить плату в DFU-режим. Это позволит [[js:ide:dfu-firmware|перепрошить или обновить интерпретатор JavaScript]] в микроконтроллер без дополнительного программатора. Для перевода в DFU-режим:
* Отключите питание от платформы, т.е. вытащите батарейку.
* Зажмите кнопку BTN.
* Подключите питание к платформе и отпустите кнопку.
==== Гнездо для батарейки ====
На плате расположен отсек для батарейки CR2032, которая обеспечивает работу платформы в портативном режиме. В автономном варианте батарейка сможет протянуть и обеспечить питание платформы Puck.js v2.1 до 20 дней.
===== Распиновка =====
[[this>_media/products:espruino-puck-js-v2:espruino-puck-js-v2-pinout.pdf|{{:products:espruino-puck-js-v2:espruino-puck-js-v2-pinout.png}}]]
==== Пины питания ====
* **3V** Выходной пин от с выходом 3 вольта от батарейки CR2032.
* **GND** Выводы земли.
==== Порты ввода/вывода ====
В отличие от большинства плат Arduino, родным напряжением Espruino Puck.js v2.1 является 3,3 В, а не 5 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать не более 3,3 В. Более высокое напряжение может повредить микроконтроллер!
* **Пины общего назначения:** 17 пинов: ''D1'', ''D2'', ''D11'', ''D23'', ''D24'' и ''D27''–''D31''\\ Логический уровень единицы — 3,3 В, нуля — 0 В.
* **ШИМ:** все пины ввода-вывода\\ Позволяет выводить аналоговое напряжение в виде ШИМ-сигнала из цифровых значений. Разрядность ШИМ установлена в 12 бит. Платформа поддерживает 4 канала аппаратного ШИМ-сигнала, каждый последующий становиться программным.
* **АЦП:** 5 пинов: ''D2'' и ''D28''–''D31''\\ Позволяет представить напряжение в цифровом виде. Диапазон входного напряжения от 0 до 3,3 В, при подаче большего напряжения микроконтроллер может выйти из строя. Разрядность АЦП установлена в 12 бит.
* **NFC:**\\ Для общения с картами общественного транспорта, смартфонами и планшетами, поддерживающими технологию Near Field Communication. Антенна уже встроенная в плату Puck.js v2.1 и подключена к внутренним пинам модуля MQBT42Q.
==== Интерфейсы ====
Каждый пин ввода-вывода платформы поддерживает аппаратные интерфейсы для общения c [[amp>collection/boards?utm_source=man&utm_campaign=espruino-puck-js-v2&utm_medium=wiki|платами расширения]] и [[amp>collection/sensors?utm_source=man&utm_campaign=espruino-puck-js-v2&utm_medium=wiki|сенсорами]].
^ Интерфейс ^ Количество ^ Назначение ^
|I²C| 1 | Используется для общения с периферией по параллельному интерфейсу «I²C».|
|SPI| 1 | Для общения с периферией по последовательному интерфейсу «SPI».|
|UART| 1 | Для общения с периферией по интерфейсу «UART».|
===== Принципиальная схема =====
[[this>_media/products:espruino-puck-js-v2:espruino-puck-js-v2-schematic.pdf|{{:products:espruino-puck-js-v2:espruino-puck-js-v2-schematic.png}}]]
===== Габаритный чертёж =====
[[this>_media/products:espruino-puck-js-v2:espruino-puck-js-v2-dimensions.pdf|{{:products:espruino-puck-js-v2:espruino-puck-js-v2-dimensions.png}}]]
===== Характеристики =====
* Модель: Espruino Puck.js v2.1
* Модуль: MDBT42Q с чипом nRF52832
* Ядро: 32-битный ARM Cortex M4
* Тактовая частота: 64 МГц
* Частотный диапазон связи: 2,4 ГГц
* Стандарт связи: Bluetooth v5.3 с поддержкой BLE
* Flash-память: 512 КБ
* SRAM-память: 64 КБ
* Контакты ввода-вывода:
* 9× GPIO (7 THT + 2 SMD)
* 5× ADC / Разрядность 12 бит
* 17× PWM / Разрядность 12 бит
* Аппаратные интерфейсы:
* 1× SPI
* 1× I²C
* 1× UART
* Встроенная периферия:
* ИК-приёмопередатчик
* Термометр
* Гироскоп/акселерометр
* Магнитометр
* Габариты платы: 29×9 мм
* Габариты плаcтикового корпуса: 36×36×12,5 мм
==== Термометр ====
* Чип: NXP PCT2075TP
* Программный интерфейс: I²C
* Диапазон измерения температуры: −55…+125 °С
* Точность измерений:
* ±1 °С в диапазоне −25…+100 °С
* ±2 °С в диапазонах −55…−25 °С и +100…+125 °С
==== Магнитометр ====
* Чип: MEMSIC MMC5603NJ
* Программный интерфейс: I²C
* Диапазон измерения магнитной индукции: ±30 Гс
* Максимальная чувствительность: 0,625×10⁻⁴ Гс
* Частота опроса магнитометра: 0,625–80 Гц
==== IMU-сенсор ====
* Чип: STM LSM6DS3TR-C
* Программный интерфейс: I²C
* Встроенные датчики: акселерометр, гироскоп
* Акселерометр
* Диапазон измерения ускорения: ±2/±4/±8/±16g
* Частота опроса: 1,6–6664 Гц
* Гироскоп
* Диапазон измерения поворота: ±125/±250/±500/±1000/±2000 град./с
* Частота опроса гироскопа: 12,5–6664 Гц
===== Ресурсы =====
* [[amp>product/espruino-puck-js?utm_source=man&utm_campaign=espruino-puck-js-v2&utm_medium=wiki|Espruino Puck.js v2.1]] в магазине
* [[https://github.com/amperka/hardware-drawings/blob/master/espruino-puck-js-v2.svg|Векторное изображение Espruino Puck.js v2.1]]
==== Полезные статьи ====
* [[js:ide|Как настроить платформу Puck.js со средой Espruino Web IDE]]
* [[js:start|Учебные и справочные материалы по JavaScript’у в микроконтроллере]]
* [[https://www.espruino.com/Puck.js|Документация от производителя]]
==== Документация ====
* {{ :products:espruino-puck-js-v2:mdbt42q-datasheet.pdf |Datasheet на модуль MDBT42Q}}
* {{ :products:espruino-puck-js-v2:nrf52832-product-specification.pdf |Product Specification на nRF52832}}