Espruino:Примеры/Техническая информация о Bangle.js: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=Техническая информация о Bangle.js<ref>[https://www.espruino.com/Bangle.js+Technical www.espruino.com - Bangle.js Technical | =Техническая информация о Bangle.js<ref>[https://www.espruino.com/Bangle.js+Technical www.espruino.com - Bangle.js Technical Information]</ref>= | ||
Общую информацию о Bangle.js читайте в [https://www.espruino.com/Bangle.js этой статье]. | Общую информацию о Bangle.js читайте в [https://www.espruino.com/Bangle.js этой статье]. |
Версия от 19:19, 24 июля 2021
Техническая информация о Bangle.js[1]
Общую информацию о Bangle.js читайте в этой статье.
Эта статья содержит более подробную информацию о внутренней начинке Bangle.js. Если вы просто пишете JS-код, то вам она, скорее всего, не понадобится, но будет интересна, если планируете модифицировать прошивку Bangle.js.
Функции
- Водостойкость уровня IP68: до 10 метров под водой
- Процессор Nordic nRF52832 ARM Cortex-M4 62 МГц с поддержкой BLE
- RAM-память – 64 Кб, встроенная в чип flash-память – 512 Кб, внешняя flash-память – 4 Мб
- 1.3-дюймовый 16-битный LCD-дисплей 240х240 с двумя сенсорными зонами
- Приёмник GPS/Glonass (UBlox)
- Пульсометр
- 3-осевой акселерометр (с шагомером и функцией определения касаний)
- 3-осевой магнетометр
- Вибрационный мотор
- Батарея на 350 мА·ч, позволяющая 1 неделю работать в режиме ожидания
- Пластиковый корпус 5 x 5 x 1.7 см с кольцом из нержавеющей стали
- Можно разобрать, открутив всего 4 шурупа
Код
Espruino-версия для Bangle.js имеет несколько специальных модификаций:
- Файл «jswrap_bangle.c» содержит все функции Bangle.* и почти весь функционал Bangle.js.
- Некоторый функционал (вроде меню) написан на JavaScript и встроен в прошивку. Эти JavaScript-файлы можно найти тут.
- Сборка описана в файле BANGLEJS.py:
- Устройство SPIFLASH вызывает определение SPIFLASH_BASE, что включает в «jshardware.c» поддержку внешней flash-памяти с шиной SPI
- Загрузчик начинается с 0x7A000 (на 4 Кб меньше, чем у стандартного загрузчика SDK12), потому что изначально это SDK11-устройство.
Аппаратная начинка Bangle.js
Хотите заглянуть внутрь Bangle.js? Ознакомьтесь с этим руководством.
- Акселерометр KX023
- 3-осевой компас GMC303
- Пульсометр BD 1668 (даташита нет). Всё аналоговое – компаратор на операционном усилителе, сравнивающий две световые волны
- 32-мегабитная flash-память – тот же набор команд, что и у Macronix MX25
- LCD-дисплей 240х240 с драйвером ST7789 (8-битный параллельный интерфейс)
- Сенсорный контроллер Holtek – возможно, BS83A02A с 2 сенсорными зонами
- GPS-модуль – это UBlox UBX-M8130
- Литий-ионная батарея 502527
GPS
Как уже говорилось выше, GPS-модуль – это UBlox UBX-M8130.
В момент загрузки он сообщает ROM CORE 3.01, PROTVER=18.00*11.
Espruino осуществляет приём и парсинг NMEA-данных через GPS UART при вызове Bangle.setGPSPower(1).
Но вы также можете настраивать GPS, отправляя команды UBLOX UBX (см. тут).
GPIO-контакты
IO-контакты подключены к nRF52. Кроме того, у Bangle.js есть IO-расширитель для подачи питания на другие вещи.
nRF52
Контакт | Название | Примечания |
D0 | LCD_D0 | Биты 0-7 задаются вместе с помощью(char*)P0_OUT |
D1 | LCD_D1 | Биты 0-7 задаются вместе с помощью (char*)P0_OUT |
D2 | LCD_D2 | Биты 0-7 задаются вместе с помощью (char*)P0_OUT |
D3 | LCD_D3 | Биты 0-7 задаются вместе с помощью (char*)P0_OUT |
D4 | LCD_D4 | Биты 0-7 задаются вместе с помощью (char*)P0_OUT |
D5 | LCD_D5 | Биты 0-7 задаются вместе с помощью (char*)P0_OUT |
D6 | LCD_D6 | Биты 0-7 задаются вместе с помощью (char*)P0_OUT |
D7 | LCD_D7 | Биты 0-7 задаются вместе с помощью (char*)P0_OUT |
D8 | LCD_DC | |
D9 | LCD_CLK | |
D10 | LCD_CS | |
D11 | Правая тач-зона | Инвертированный |
D12 | Зарядка батареи при LOW | Входной подтягивающий резистор |
D13 | Вибрация, активный HIGH | |
D14 | I2C_SCK | |
D15 | I2C_SDA | |
D16 | Левая тач-зона | Инвертированный |
D17 | D3 flash-памяти (RST – подключить к VCC) | |
D18 | Динамик (если есть). Если нет, то инвертированный вывод пульсометра | |
D19 | SCLK flash-памяти | |
D20 | D1 flash-памяти (MISO) | |
D21 | CS flash-памяти | |
D22 | Средняя кнопка | Инвертированный |
D23 | Верхняя кнопка | Инвертированный |
D24 | Нижняя кнопка | Инвертированный |
D25 | RX-линия GPS | |
D26 | TX-линия GPS | |
D27 | D0 flash-памяти (MOSI) | |
D28 | Сброс IO-расширителя | |
D29 | Аналоговые данные пульсометра | |
D30 | Уровень батареи | 0.51 – низкий, 0.62 – хороший |
D31 | D2 flash-памяти (WP – подключить к GND) |
IO-расширитель
Маска | Описание | Значение по умолчанию |
0x01 | GPS | 0 |
0x02 | ||
0x04 | ||
0x08 | ||
0x10 | ||
0x20 | Подсветка LCD-дисплея | 1 |
0x40 | Сброс LCD-дисплея | 1 |
0x80 | Пульсометр | 1 |
Плата пульсометра
В правой нижней части платы (рядом с надписью R6) есть две контактные площадки для динамика.
Рядом с одной из них есть надпись «+» – она идёт напрямую к 3.3 вольтам, а другая через транзистор идёт к контакту D18.
Таким образом, D18 инвертирован, и его можно использовать только для вывода. В то же время на него подаётся питание (притянут вниз при помощи MMDT3904), так что с его помощью можно управлять относительно высокой нагрузкой (примерно до 100 мА).
Сам пульсометр питается от IO-расширителя и оснащён только одним аналоговым выводом – D29.
Контакты для зарядки
Две круглые золотые контактные площадки сзади подключены к зарядной цепи Bangle.js. Левая площадка подключена к GND, а правая – к 5-вольтовой линии для зарядки.
I2C
Контакт D14 – это SCK, а D15 – это SDA.
- 0x0C – магнетометр GMC303
- 0x1E – акселерометр KX023
- 0x20 – IO-расширитель
- 0x7C – неизвестно. Был проверен только один раз OEM-прошивкой
См.также
Внешние ссылки