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