====== 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}}