====== 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?|Puck.js v1]] ^ Puck.js v2 ^ [[amp>product/espruino-puck-js-v2?|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}}