mirror of
https://github.com/anklimov/lighthub
synced 2026-10-28 11:15:00 +00:00
docs: import wiki pages into the repo (core/integrations/hardware)
Ported the relevant lazyhome.ru dokuwiki pages to markdown, verified against the code; each page carries a 'cross-check with code' section where behavior differs from or extends the wiki.
This commit is contained in:
@@ -0,0 +1,215 @@
|
||||
# Заливка прошивки
|
||||
|
||||
> Источник: Wiki LightHub (lazyhome.ru), страница «заливка_прошивки». Снапшот от 2026-10-02.
|
||||
|
||||
## Заливка уже откомпилированной прошивки
|
||||
|
||||
В первую очередь необходимо скачать сам проект.
|
||||
Это можно сделать либо с использованием утилиты git:
|
||||
`git clone https://github.com/anklimov/lighthub.git`
|
||||
|
||||
Либо, если у вас она не установлена - открываем [https://github.com/anklimov/lighthub](https://github.com/anklimov/lighthub)
|
||||
Далее, нажимаем зеленую кнопку "Clone or download"
|
||||
Выбираем пункт "Download ZIP", скачиваем и распаковываем архив
|
||||
|
||||
Переходим в директорию lighthub-master/compiled/<требуемая_платформа> (список платформ выше)
|
||||
|
||||
Подключаете плату USB кабелем к компьютеру (кроме платформы NRF52 - там программирование только при помощи специального устройства JLink, об этом позже)
|
||||
|
||||
В диспетчере устройств находите порт, на который села плата (например, com3)
|
||||
корректируете номер порта в файле upload.bat, который находится в директории, в которую вы вошли
|
||||
|
||||
Запускаете файл на выполнение (если выдается запрос "нажмите любую клавишу" - нажимаете)
|
||||
Прошивка должна загрузиться в ваш контроллер.
|
||||
|
||||
## Компиляция и заливка с использованием platformio + Atom или VSC
|
||||
|
||||
Проект создан с использование Platformio , аналога Arduino IDE.
|
||||
|
||||
Сперва необходимо скачать Visual Studio Code или Atom, установить Platformio в качестве плагина. В интернете много материалов и видеоуроков на эту тему. Скорее всего потребуется установить клиент Git (Для Windows https://git-scm.com/download/win).
|
||||
|
||||
Далее, как и в предыдущем случае, необходимо скачать сам проект.
|
||||
Проект создан с использование Platformio , аналога Arduino IDE.
|
||||
|
||||
Это можно сделать либо с использованием утилиты git:
|
||||
`git clone https://github.com/anklimov/lighthub.git`
|
||||
|
||||
Либо, если у вас она не установлена - открываем [https://github.com/anklimov/lighthub](https://github.com/anklimov/lighthub)
|
||||
Далее, нажимаем зеленую кнопку "Clone or download"
|
||||
Выбираем пункт "Download ZIP", скачиваем и распаковываем архив
|
||||
|
||||
В Atom или VSC выбираем пункт "Открыть директорию" (Open Folder), и указываем директорию lighthub.master (или в директорию lighthub если использовался git)
|
||||
|
||||
Далее, выбираем файл platformio.ini и раскомментариваем в нем нужный вам вариант платформы (платы) в пункте env_default (убираем ; перед строкой, содержащей нужную платформу, добавляем - перед строкой, содержащей ненужные платформы)
|
||||
|
||||
NEW - если используете среду VSC (рекомендуется) - то можете ничего не комментировать/раскомментировать а просто выбрать нужную платформу в меню "switch PlatformIO Project environment" (нажмите на Default (lighthub) в самом низу экрана)
|
||||
|
||||
**Для платформы DUE:** обязательно придется найти фаил variant.cpp по пути
|
||||
|
||||
`.platformio/packages/framework-arduinosam/variants/arduino_due_x`
|
||||
|
||||
и вставить в него **последней строкой** следующую строку
|
||||
|
||||
`void USART0_Handler(void) __attribute__((weak));`
|
||||
|
||||
сохранить.
|
||||
|
||||
(К сожалению, внести это простое изменение в штатный репозиторий arduino не удалось никому из тех, кто создавал Pull request)
|
||||
|
||||
|
||||
Нажимаем кнопку "Build"
|
||||
Platformio скачивает все нужные библиотеки и компилирует код. Возможно придется несколько раз повторить эту операцию, так как по непонятным причинам, platformio может выдавать ошибки, не скачав какую-то библиотеку.
|
||||
|
||||
Если компиляция прошла успешно, можно подключить плату USB кабелем и нажать кнопку Upload
|
||||
|
||||
|
||||
|
||||
## Компиляция и заливка с использованием platformio. Вариант командная строка
|
||||
|
||||
Для того что бы прошить плату в первую очередь необходимо скачать сам проект [https://github.com/anklimov/lighthub](https://github.com/anklimov/lighthub) и установить Platformio
|
||||
|
||||
|
||||
* Если Вы считатет себя джедаем и не ищете легких путей то работать с платформио можно через командную строку. Для этого нужно:
|
||||
- установить Python 2.7,
|
||||
- установить git.
|
||||
|
||||
* Модифицировать PATH. идем: мой компьютер->правой кнопокой мыши вызываем контекстное меню->свойства->в появившемся окне "переменные среды"-> в окне "Системные переменные" выбираем переменную Path ->изменить->добавляем строку
|
||||
|
||||
`;C:\Python27;C:\Python27\Scripts`
|
||||
|
||||
* Установить Platformio открываем командную строку (поиск в "Пуске" cmd.exe) вводим команду
|
||||
|
||||
`pip install -U platformio`
|
||||
|
||||
Учтите, что Platformio установится по умолчанию в папку пользователя `С:\Пользователи\Имя пользователя\.platformio` Python 2.7 не поддерживает кириллицу, если имя пользователя написано кириллицей, необходимо скопировать папку Platformio в корень диска C:\ и изменить путь к рабочему каталогу в фале platformio.ini (который находится в ранее скачанной папке lighthub-master), указав после строки [platformio] следующую строку: `home_dir = C:\.platformio`
|
||||
|
||||
Сохраняем файл.
|
||||
Открываем папку lighthub-master, в строке отображающей путь вводим cmd и нажимаем enter или же выбираем папку в командной строке любым другим способом.
|
||||
|
||||
**Для платформы DUE:** обязательно придется найти фаил variant.cpp по пути
|
||||
|
||||
`.platformio/packages/framework-arduinosam/variants/arduino_due_x`
|
||||
|
||||
и вставить в него **последней строкой** следующую строку
|
||||
|
||||
`void USART0_Handler(void) __attribute__((weak));`
|
||||
|
||||
сохранить.
|
||||
|
||||
Далее вводим `pio run -e <платформа>`
|
||||
|
||||
Вариант <платформа> выберете в зависимости от используемой аппаратной платформы.
|
||||
|
||||
```
|
||||
; Arduino Mega compact build + Ethernet shield Wiznet 5X00, 1-wire, thermostates.
|
||||
; mega2560slim
|
||||
|
||||
; Another Arduino Mega compact build without 1-wire, DMX, but with OTA
|
||||
; OPTIBOOT bootloader required! https://github.com/MCUdude/MegaCore
|
||||
; mega2560-optiboot
|
||||
|
||||
; Arduino Mega + Ethernet shield Wiznet 5100
|
||||
; mega2560-5100
|
||||
|
||||
; Arduino Mega (Ethernet shield Wiznet 5X00, DMX, Artnet)
|
||||
; mega2560
|
||||
|
||||
; LightHub controller HW revision 2.1 and above (Wiznet 5500 CS on pin 53)
|
||||
; Если у вас плата LightHub версии 2.1 или более новая + DUE - используйте эту конфигурацию
|
||||
; **lighthub21**
|
||||
|
||||
; Arduino DUE + Ethernet shield Wiznet 5X00
|
||||
; Предпочтительный вариант для DUE с Ethernet Shield (не для платы LightHub), базированный на универсальном драйвере
|
||||
; **due**
|
||||
|
||||
; ESP 8266
|
||||
; **esp8266-wifi**
|
||||
|
||||
; ESP-32
|
||||
; **esp32-wifi**
|
||||
|
||||
; ESP-32-C3
|
||||
; **esp32c3-wifi**
|
||||
|
||||
; M5Stack core (ESP32 based)
|
||||
; m5stack
|
||||
|
||||
; Controllino
|
||||
; controllino
|
||||
|
||||
; STM32 board + ENC28j60 network
|
||||
; stm32-enc2860
|
||||
|
||||
; STM32 board (olmexino) with WIZNET 5X00 network
|
||||
; stm32
|
||||
|
||||
; STM32 board, no IP (LightSpot)
|
||||
; stm32-noip
|
||||
|
||||
; NRF52 board + Wiznet 5x00 network
|
||||
; nrf52840
|
||||
```
|
||||
|
||||
> **Примечание (сверка с кодом, 2026-10-02):** в оригинальном тексте wiki список целей в этом блоке был устаревшим — там фигурировали `mega2560slim-5100`, `mega2560-5500`, `due-5100`, `due-5500` и `nrf52840-5500`, а отсутствовали `nrf52840`, `mega2560`, `mega2560-optiboot`, `esp32c3-wifi`, `stm32`, `stm32-noip`. Список выше восстановлен по фактическим окружениям из `platformio.ini`.
|
||||
|
||||
Пример: "due" - это плата Arduino DUE + Ethernet Shield на чипе Wiznet-5X00 (универсальный драйвер)
|
||||
|
||||
**В общем случае, используйте варианты без указания 5100 или 5500 - в этом случае будет использован универсальный драйвер Wiznet**
|
||||
|
||||
Если плата LightHub версии 2.1 или выше то используйте опцию "lighthub21"
|
||||
|
||||
Проект должен скомпилироваться без ошибок.
|
||||
|
||||
**ЧАСТО Platformio выдает ошибки на ровном месте (не находит какие-либо файлы). В этом случае, повторный запуск компиляции часто решает эту проблему**
|
||||
|
||||
Если ошибок нет вводим `pio run -e <платформа> -t upload`
|
||||
Программа должна залиться в аппаратную платформу.
|
||||
|
||||
Если возникли ошибки:
|
||||
Попробовать очистить папку с библиотеками .piolibdeps и .pioenv удалив все их содержимое
|
||||
|
||||
|
||||
## Использование Arduino IDE для компиляции и заливки прошивки
|
||||
Это достаточно трудоемкий процесс, который требует, чтобы вы вручную установили массу библиотек в IDE.
|
||||
platformio - намного более гибкое и профессиональное средство - лучше и проще использовать его.
|
||||
Если для кого-то будет важно освоить именно этот метод - пишите, мы пополним инструкцию.
|
||||
|
||||
|
||||
Если возникают проблемы - пишите на форуме или в [группу Телеграмм](https://t.me/lighthub)
|
||||
|
||||
(Вы, также, можете улучшать эту инструкцию)
|
||||
|
||||
---
|
||||
|
||||
## Сверка с кодом (2026-10-02)
|
||||
|
||||
**Фактические окружения (env) в `platformio.ini`:**
|
||||
|
||||
| env | Платформа / описание | Папка в `compiled/` |
|
||||
|-----|----------------------|---------------------|
|
||||
| `due` | Arduino DUE, универсальный Wiznet-драйвер | `due/` |
|
||||
| `lighthub21` | LightHub HW rev 2.1+ (Wiznet 5500, CS на пине 53), DUE | `lighthub21/` |
|
||||
| `mega2560` | Arduino Mega + Wiznet 5X00, DMX, Artnet | `mega2560/` |
|
||||
| `mega2560slim` | Mega компактная сборка + Wiznet, 1-wire, термостаты | `mega2560slim/` |
|
||||
| `mega2560-optiboot` | Mega компактная + OTA (нужен OPTIBOOT) | `Mega2560-optiboot/` |
|
||||
| `mega2560-5100` | Mega + Ethernet Wiznet 5100 | `mega2560-5100/` |
|
||||
| `esp8266-wifi` | ESP8266 (Wi-Fi) | `esp8266-wifi/` |
|
||||
| `esp32-wifi` | ESP32 (Wi-Fi) | `esp32-wifi/` |
|
||||
| `esp32c3-wifi` | ESP32-C3 (Wi-Fi) | `esp32c3-wifi/` |
|
||||
| `m5stack` | M5Stack (ESP32) | `m5stack/` |
|
||||
| `nrf52840` | NRF52840 + Wiznet 5x00 | `nrf52840/` |
|
||||
| `controllino` | Controllino (AVR) | `controllino/` |
|
||||
| `stm32` | STM32 (olmexino) + WIZNET 5X00 | `stm32/` |
|
||||
| `stm32-enc2860` | STM32 + ENC28J60 | `stm32-enc2860/` |
|
||||
| `stm32-noip` | STM32, без IP-стека (LightSpot) | — (папки нет) |
|
||||
|
||||
(Также в `platformio.ini` есть служебные env `Upload_ISP` и `fuses_bootloader` для прошивки OPTIBOOT — они не являются целевыми сборками.)
|
||||
|
||||
**Папки в `compiled/`:** `controllino`, `due`, `DUE_16u2_reflash`, `esp32-wifi`, `esp32c3-wifi`, `esp8266-wifi`, `lighthub21`, `m5stack`, `mega2560`, `mega2560-5100`, `Mega2560-optiboot`, `mega2560slim`, `nrf52840`, `nrf52840-5500`, `stm32`, `stm32-enc2860`, `tools`.
|
||||
|
||||
**Расхождения wiki ↔ кода:**
|
||||
- Список целей в wiki устарел: упоминаются несуществующие env `mega2560slim-5100`, `mega2560-5500`, `due-5100`, `due-5500`. В текущем `platformio.ini` их нет — для DUE и Mega используется универсальный Wiznet-драйвер (`due`, `mega2560`). Список в тексте исправлен по факту (см. примечание выше).
|
||||
- `nrf52840-5500` в wiki указан как env, в `platformio.ini` такого env нет (есть только `nrf52840`), но в `compiled/` папка `nrf52840-5500/` присутствует — вероятно, это отдельная уже скомпилированная сборка, не являющаяся отдельным env.
|
||||
- `stm32-noip` — есть в `platformio.ini`, но готовой папки в `compiled/` нет.
|
||||
- `DUE_16u2_reflash/` в `compiled/` — утилита для перепрошивки USB-чипа 16u2, не целевая сборка.
|
||||
- Замечание о DUE: инструкция про правку `variant.cpp` (добавление `void USART0_Handler(void) __attribute__((weak));`) актуальна — в репозитории собственного `lighthub/variant.cpp` нет, используется вариант DUE из пакета PlatformIO `framework-arduinosam`.
|
||||
@@ -0,0 +1,69 @@
|
||||
# LightHub на разном железе
|
||||
|
||||
> Источник: Wiki LightHub (lazyhome.ru), страница «lighthub_на_разном_железе». Снапшот от 2026-10-02.
|
||||
|
||||
Прошивка может компилироваться и работать на следующих аппаратных платформах:
|
||||
|
||||
1. AVR Arduino MEGA 2560 - первая платформа, на которой была реализована. Прошивка оттестирована на этом железе. Но в настоящее время, уже не рекомендуется по причине ограниченной оперативной памяти. (не получится использовать всю периферию, но для небольших инсталляций подойдет)
|
||||
|
||||
2. Arduino DUE - в настоящее время, базовая платформа. Используется в контроллерах LightHub. Прошивка тщательно оттестирована на этом железе. Все новые функции изначально внедряются под эту платформу.
|
||||
|
||||
3. ESP8266 - Достаточно полнофункциональная стабильная сборка.
|
||||
|
||||
4. ESP32 - Достаточно полнофункциональная стабильная сборка.
|
||||
|
||||
5. NRF52840 - пилотная сборка, поддерживающая базовый функционал
|
||||
|
||||
6. STM32 - сборка с ограниченной функциональностью, является базовой для устройства LightSpot (минимальное LightHub устройство без IP стека, которое взаимодействует с внешним миром через полноценные устройства LightHub по шинне CAN)
|
||||
|
||||
Базовые возможности прошивки LightHUB поддерживаются на любом железе. К ним относится:
|
||||
|
||||
* Единообразное конфигурирование с использованием JSON
|
||||
* Поддержка MQTT и интеграция, фактически, с любой системой Умного Дома, поддерживающей данный протокол, включая, сенсоры, выключатели, термостаты(теплые полы), кондиционеры.
|
||||
* Поддержка всего расширенного набора команд, группы каналов, сохранение цвета/яркости и пр
|
||||
* Восстановление состояния контроллера и каналов при перезапуске из MQTT
|
||||
* Локальное управление каналами (даже при отсутствии сетевого соединения)
|
||||
* Термостаты (до 20-ти, в пределах кол-ва дискретных выходов)
|
||||
* Гибкая настройка работы с выключателями/кнопками, включая распознавание одинарного, двойного, тройного нажатия, длительного нажатия, кратковременного выключения
|
||||
|
||||
Возможности прошивки, зависящие от железа:
|
||||
|
||||
| Возможность | Mega2560 | DUE | ESP8266 | ESP32 | NRF52840 | STM32 | CONTROLLINO |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
|DMX512 In|+|+|-|-|-|-|-|
|
||||
|DMX512 Out|+|+|+|+|-|-|-|
|
||||
|Artnet|+|+|+|-|?|?|+|
|
||||
|1-Wire software|+|+|+|+|+|?|+|
|
||||
|1-Wire DS2482-100|+|+|+|+|+|+|+|
|
||||
|MCP23017 - I2C расширитель портов|+|+|+|?|?|?|?|
|
||||
|Wiznet 5100 Ethernet|+|+|+|+|-|+|+|
|
||||
|Wiznet 5500 Ethernet|+|+|+|+|+|+|-|
|
||||
|Wi-Fi|-|-|+|+|-|-|-|
|
||||
|Modbus Master|+|+|+|+|+|+|+|
|
||||
|DHT-22|+|+|+|+|+|?|+|
|
||||
|CCS811 & HDC1080 - сенсоры влажности и eCO2|+|+|+|+|+|?|+|
|
||||
|Управление кондиционерами Haier через UART|+|+|+|+|+|+|+|
|
||||
|Управление задвижками вентиляции с резистором ОС|+|+|+|+|?|?|+|
|
||||
|SPI-LED адресные ленты|+|+|+|+|+|+|+|
|
||||
|Watchdog|+|+|?|?|?|?|+|
|
||||
|Сохранение конфигурации во FLASH|+|+|+|+|-|?|+|
|
||||
|CAN|-|+|-|+|-|+|-|
|
||||
|Дискретных входов||||||||
|
||||
|Аналоговых входов||||||||
|
||||
|Дискретных выходов||||||||
|
||||
|PWM выходов||||||||
|
||||
|OTA|+-Optiboot bootloader|+|+|+|-|-|-|
|
||||
|Плавное управление DMX|-|+|-|-|-|-|-|
|
||||
|
||||
(Легенда: `+` — поддерживается, `-` — не поддерживается, `?` — не проверено / зависит от конкретной реализации.)
|
||||
|
||||
---
|
||||
|
||||
## Сверка с кодом (2026-10-02)
|
||||
|
||||
- Перечень платформ в тексте (Mega2560, DUE, ESP8266, ESP32, NRF52840, STM32) **совпадает** с окружениями `platformio.ini`: `mega2560`/`mega2560slim`/`mega2560-optiboot`/`mega2560-5100`, `due`/`lighthub21`, `esp8266-wifi`, `esp32-wifi`/`esp32c3-wifi`/`m5stack`, `nrf52840`, `stm32`/`stm32-enc2860`/`stm32-noip`, а также `controllino`.
|
||||
- Текст не упоминает **ESP32-C3** (env `esp32c3-wifi`) и **M5Stack** (env `m5stack`, ESP32-based) — в таблице возможностей у них стоит колонка ESP32; фактически это отдельные сборки.
|
||||
- **STM32 / LightSpot**: в `platformio.ini` есть `stm32-noip` — сборка без IP-стека (LightSpot), что соответствует описанию в п. 6.
|
||||
- **CAN**: в таблице отмечен только для DUE и ESP32/STM32. В `lighthub21`/`due` используется библиотека `collin80/due_can` (см. `platformio.ini`), для ESP32 — `anklimov/arduino-CAN`, для STM32 (stm32-noip) — `pazi88/STM32_CAN`. Совпадает.
|
||||
- **Wi-Fi** только у ESP8266/ESP32 — подтверждается наличием `WIFI_ENABLE`/`WiFiManager` только в ESP-окружениях.
|
||||
- **Сохранение конфигурации во FLASH** не поддержано у NRF52840 в таблице — в env `nrf52840` используется `NRFFlashStorage`/`d00616/arduino-NVM`, что требует уточнения (в таблице стоит `-`/`?`).
|
||||
@@ -0,0 +1,51 @@
|
||||
# MAC-адрес контроллера
|
||||
|
||||
> Источник: Wiki LightHub (lazyhome.ru), страница «mac_адрес». Снапшот от 2026-10-02.
|
||||
|
||||
Важно, чтобы у вашего контроллера был уникальный MAC адрес.
|
||||
Это важно не только потому, что в пределах одной локальной сети два контроллера с одинаковыми MAC не могут работать но еще и потому, что при старте, контроллер загружает с сервера конфигураций или с других контроллеров по шине CAN свою настройку, используя MAC как свой уникальный ключ.
|
||||
|
||||
У разных аппаратных платформ ситуация с MAC адресами разная:
|
||||
|
||||
* ESP8266 и ESP32 и так имеют уникальные адреса, тут ничего мудрить не надо
|
||||
|
||||
* DUE и STM имеют уникальный ID каждого чипа, из которого прошивка генерирует уникальный MAC
|
||||
|
||||
* Mega2560 не имеет такого ID, но, зато, имеет честный EEPROM, в который при первом запуске этот адрес можно записать и он сохранится на всю жизнь, даже если контроллеру обновлять прошивку
|
||||
|
||||
Кроме этого, при компиляции прошивки, можно задать опцию `CUSTOM_FIRMWARE_MAC` - в этом случае, у прошивки будет такой MAC адрес, как вы задали
|
||||
|
||||
Также, MAC адрес можно заменить командой `mac DE:22:33:11:22:33`, подключившись к контроллеру через [CLI-интерфейс](../core/cli_interface.md) (вместо DE:22:33:11:22:33 - ваш адрес)
|
||||
В случае Mega2560 это будет запомнено навсегда, в случае DUE - до следующей загрузки прошивки.
|
||||
|
||||
Замену MAC через опцию либо через команду не тестировал на ESP - там это совсем не нужно.
|
||||
|
||||
Для того, чтобы самостоятельно сгенерировать MAC - прочитайте [Википедию](https://ru.wikipedia.org/wiki/MAC-адрес#.D0.A1.D1.82.D1.80.D1.83.D0.BA.D1.82.D1.83.D1.80.D0.B0_MAC-.D0.B0.D0.B4.D1.80.D0.B5.D1.81.D0.B0)
|
||||
Если коротко, то у самой первой цифры, два младших бита должны быть "10", что соответствует не Multicast адресу, отвязанному от производителя
|
||||
|
||||
Если лень считать, возьмите первую цифру Макадреса, например, DE или 02, остальное - придумывайте как хотите
|
||||
|
||||
Посмотреть MAC адрес вашего контроллера проще всего, подключившись по USB - он будет выведен при перезагрузке контроллера
|
||||
См. [как LightHub работает с файлом конфигурации — подключение по USB](../core/config_file_workflow.md)
|
||||
|
||||
---
|
||||
|
||||
## Сверка с кодом (2026-10-02)
|
||||
|
||||
Проверено по `lighthub/main.cpp` (функция `setupMacAddress()`, строка 2817) и `lighthub/options.h`.
|
||||
|
||||
Логика генерации MAC в `setupMacAddress()` (при отсутствии MAC в NVRAM) выстроена цепочкой условий, что **полностью подтверждает** описание в wiki:
|
||||
|
||||
| Платформа | Механизм в коде | Строки | Соответствие wiki |
|
||||
|---|---|---|---|
|
||||
| (все) `CUSTOM_FIRMWARE_MAC` | MAC разбирается из build-flag (`parseBytes(macStr, ':', ...)`), затем принудительно: `mac[0] &= 0xFE; mac[0] \|= 2;` (locally-administered, не multicast) | main.cpp:2823-2828 | ✅ «опция CUSTOM_FIRMWARE_MAC» |
|
||||
| ESP8266/ESP32 (`WIFI_ENABLE`) | Используется штатный MAC чипа: `WiFi.macAddress(sysConf.mac)` | main.cpp:2830-2833 | ✅ «ESP и так имеют уникальные адреса» |
|
||||
| DUE (`__SAM3X8E__`) / STM32 (`ARDUINO_ARCH_STM32`) | MAC генерируется из серийного номера чипа: `mac[0]=0xDE;` остальные байты = сумма байтов `UniqueID.UID_Byte[]` | main.cpp:2835-2840 | ✅ «DUE и STM имеют уникальный ID чипа» |
|
||||
| fallback `DEFAULT_FIRMWARE_MAC` | Хардкод `{0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xFF}` | options.h:180 | (доп. fallback, в wiki не описан) |
|
||||
|
||||
**Дополнительные подтверждения:**
|
||||
- **Mega / EEPROM**: MAC хранится в NVRAM и читается в `systemConfig::getMAC()` (`config.cpp:44-47`), область EEPROM описана константой `OFFSET_MAC`/`EEPROM_FIX_PART_LEN` (`options.h:128`). Для Mega запись в EEPROM сохраняется при перепрошивке — согласуется с утверждением «запомнено навсегда».
|
||||
- **Команда `mac`**: обработчик `cmdFunctionSetMac` (`main.cpp:1820`) парсит адрес формата `de:ad:be:ef:fe:00` и сохраняет его в EEPROM. Команда регистрируется только при `not FLASH_64KB` (`main.cpp:2860`). Подтверждает возможность замены MAC командой.
|
||||
- **Вывод MAC по USB**: функция `printMACAddress()` (`main.cpp:543`) выводит адрес в `infoSerial` при старте — совпадает с «выведен при перезагрузке контроллера».
|
||||
|
||||
**Нюанс (расхождение):** wiki утверждает, что замена MAC командой/опцией «не тестировал на ESP». В коде для ESP32 при старте вызывается `wifi_set_macaddr(STATION_IF, sysConf.mac)` (`main.cpp:1207`) — то есть механизм замены MAC на ESP в коде присутствует, хоть и, вероятно, не всегда применяется на практике.
|
||||
@@ -0,0 +1,240 @@
|
||||
# Входы и выходы платы LightHub
|
||||
|
||||
> Источник: Wiki LightHub (lazyhome.ru), страница «входы_выходы». Снапшот от 2026-10-02.
|
||||
|
||||
## Электропитание
|
||||
|
||||
Контроллер имеет на борту DCDC преобразователь, который может обеспечивать питание устройства, а также, воспомогательных приборов от напряжения в диапазоне 12-29В
|
||||
|
||||
(Только v2.2) При превышении напряжения 30В, а также, при переполюсовке, сработает защитный TWS диод, замкнув цепь питания, что приведет к отключению самовосстанавливающегося предохранителя контроллера, рассчитанного на ток 1,2А либо к срабатыванию защиты используемого блока питания.
|
||||
|
||||
DCDC преобразователь может работать в двух режимах, выбираемых джампером JХ (серый на рисунке ниже)
|
||||
Если джампер замкнут - выходное напряжение преобразователя составляет 5В, если разомкнут - 7В (на более ранних версиях железа было 9В, но мы уменьшили это значение для меньшего тепловыделения на линейном стабилизаторе устройства)
|
||||
|
||||
~~Процессорная плата Ардуино может питаться как с выхода DCDC преобразователя так и непосредственно от входного питания устройства.
|
||||
|
||||
Режим питания платы Ардуино выбирается джампером J4 (желто-фиолетовый на рисунке ниже)
|
||||
В "желтом" режиме, Ардуино питается с выхода DCDC, в фиолетовом - от входного питания.
|
||||
|
||||
_Важно: при использовании второго (фиолетового) режима, контроллер следует питать от источника 12В. Использование источника 24В выведет процессорную плату из строя_~~
|
||||
|
||||
Внимание: Используйте контроллер версии 2.2 ТОЛЬКО в режиме, когда плата Ардуино питается от DCDC преобразователя. (J4 в Желтом режиме). Испытания показали, что DCDC преобразователь в ином случае работает нестабильно.
|
||||
|
||||
Если выбран режим питания Ардуино от DCDC преобразователя, преобразователь должен быть настроен на напряжение 7В (джампер JX разомкнут), так как 5В, в большинстве случаев, недостаточно для стабильной работы Ардуино.
|
||||
|
||||
Соответственно, единственное допустимое расположение джамперов: J4 - Желтый режим, JX-разомкнут
|
||||
|
||||
В этом режиме напряжение 7В с выхода DCDC преобразователя можно использовать для питания внешних цепей до 2А
|
||||
|
||||
~~Режим преобразователя 5В может быть использован для питания внешней нагрузки током до 2,5А подключенной к винтовым клеммам X24 в том случае, если контроллер запитан от внешнего источника 12В~~
|
||||
В данном режиме, входное напряжение питания контроллера: 12-24В
|
||||
|
||||
(рекомендуется 12В для уменьшения нагрузки на линейный стабилизатор опорного напряжения 10В)
|
||||
|
||||
~~Возможные конфигурации электропитания
|
||||
|
||||
|Входной диапазон |J4 |JX | Макс. ток UEXT 3.3V | Макс. ток UEXT 5V |Примечание|
|
||||
|---|---|---|---|---|---|
|
||||
|12-24В| DCDC (желтый)| OPEN (9V)|100mA|600mA|На клеммах X24 напряжение 9В|
|
||||
|12В| Vin (фиолетовый)| OPEN (9В)|100mA|300mA|На клеммах X24 напряжение 9В|
|
||||
|12В| Vin (фиолетовый)| CLOSED (5В)|300mA|300mA|На клеммах X24 напряжение 5В|~~
|
||||
|
||||
Джампером J2 можно задать напряжение, подаваемое на переферийный разъем стандарта UEXT
|
||||
Возможны варианты 3,3В (стандартное напряжение UEXT) и 5В (нестандартное, но требуемое для ряда модулей)
|
||||
См. рисунок ниже.
|
||||
|
||||
Контроллер поставляется с перемычками, установленными для работе в диапазоне питающих напряжений 12-24В и UEXT 3,3В
|
||||
|
||||
_Внимание: логические уровни сигналов на разъеме UEXT соответствуют применяемой процессорной плате: 5В для MEGA2560 и 3,3В для DUE_
|
||||
|
||||
_Подача уровней, превышающие данные значения, могут вывести процессор из строя._
|
||||
|
||||
## Версия платы 2.2
|
||||
|
||||
### Разьемы и джамперы
|
||||
|
||||
(см. иллюстрацию на [wiki-странице](https://www.lazyhome.ru/dokuwiki/doku.php?id=входы_выходы) — `инфографика.pdf`, В PDF)
|
||||
(см. иллюстрацию на [wiki-странице](https://www.lazyhome.ru/dokuwiki/doku.php?id=входы_выходы) — `lighthub22_pinout.png`)
|
||||
|
||||
В этой таблице приведено соответствие физических PIN-ов Arduino Mega/DUE и входов/выходов платы LightHub 2.2
|
||||
**В конфигурации контроллера пока можно использовать только цифровое значение из столбца MPU PIN**
|
||||
|
||||
Выберете по таблице интересующий вход или выход, найдите в таблице номер MPU PIN, его используйте в конфиге
|
||||
Также, таблица пригодится чтобы преобразовать названия аналоговых каналов в цифровой номер PIN
|
||||
|
||||
_Внимание: максимальные уровни сигналов на клеммниках PWM 0-3, PWM 10, и разъеме RJ-45 (UNPROT 0-7) соответствуют применяемой процессорной плате: 5В для MEGA2560 и 3,3В для DUE_
|
||||
|
||||
_Подача на данные разъемы напряжений, превышающие данные значения, могут вывести процессор из строя._
|
||||
_Данные входы не защищены. Подключайте к ним только локальную слаботочную нагрузку_
|
||||
|
||||
| Mnemonic | MPU PIN # | Plug | Plug PIN | Gnd | Comment |
|
||||
|---|---|---|---|---|---|
|
||||
|A0|54|X36 (IDC)|3|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A1|55|X36 (IDC)|4|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A2|56|X36 (IDC)|5|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A3|57|X36 (IDC)|6|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A4|58|X36 (IDC)|7|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A5|59|X36 (IDC)|8|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A6|60|X36 (IDC)|9|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A7|61|X36 (IDC)|10|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|-|-|X36 (IDC)|17|13,14,15,16|CAN H - (Начиная с V3.0)|
|
||||
|-|-|X36 (IDC)|18|13,14,15,16|CAN L - (Начиная с V3.0)|
|
||||
|A8|62|X36 (IDC)|19|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A9|63|X36 (IDC)|20|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A10|64|X36 (IDC)|21|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A11|65|X36 (IDC)|22|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|DA12|66|X36 (IDC)|23|13,14,15,16|Дискретный защищенный вход (слаботочный выход)|
|
||||
|DA13|67|X36 (IDC)|24|13,14,15,16|Дискретный защищенный вход (слаботочный выход) - не использовать в случае использования CAN (начиная с V3.0)|
|
||||
|DA14|68|X36 (IDC)|25|13,14,15,16|Дискретный защищенный вход (слаботочный выход) - не использовать в случае использования CAN (начиная с V3.0)|
|
||||
|DA15|69|X36 (IDC)|26|13,14,15,16|Дискретный защищенный вход (выход)|
|
||||
|+10V|-|X36 (IDC26)|2|1|Опорное напряжение 10В|
|
||||
|POUT0|22|X15||X14|Мощный дискретный выход|
|
||||
|POUT1|23|X16|||Мощный дискретный выход|
|
||||
|POUT2|24|X17|||Мощный дискретный выход|
|
||||
|POUT3|25|X18|||Мощный дискретный выход|
|
||||
|POUT4|9|X19|||Мощный PWM выход. Продублирован слаботочным на X11|
|
||||
|POUT5|8|X20|||Мощный PWM выход. Продублирован слаботочным на X10|
|
||||
|POUT6|11|X21|||Мощный PWM выход. Продублирован слаботочным на X12|
|
||||
|POUT7|12|X22|||Мощный PWM выход. Продублирован слаботочным на X13|
|
||||
|PWM0|4|X7|||Незащищенный PWM вход/выход |
|
||||
|PWM1|5|X6|||Незащищенный PWM вход/выход |
|
||||
|PWM2|6|X8|||Незащищенный PWM вход/выход |
|
||||
|PWM3|7|X9|||Незащищенный PWM вход/выход |
|
||||
|PWM10|10|X414|||Незащищенный PWM вход/выход |
|
||||
|UNPROT0|33|X35 (RJ45)|1|Shield|Незащищенный дискретный вход/выход|
|
||||
|UNPROT1|32|X35 (RJ45)|2||Незащищенный дискретный вход/выход |
|
||||
|UNPROT2|31|X35 (RJ45)|3||Незащищенный дискретный вход/выход |
|
||||
|UNPROT3|30|X35 (RJ45)|4||Незащищенный дискретный вход/выход |
|
||||
|UNPROT4|29|X35 (RJ45)|5||Незащищенный дискретный вход/выход |
|
||||
|UNPROT5|28|X35 (RJ45)|6||Незащищенный дискретный вход/выход |
|
||||
|UNPROT6|27|X35 (RJ45)|7||Незащищенный дискретный вход/выход |
|
||||
|UNPROT7|26|X35 (RJ45)|8||Незащищенный дискретный вход/выход |
|
||||
|IN0|42|X27 (IDC26)|14|13|Опторазвязанный вход двухпроводный|
|
||||
|IN1|44|X27 (IDC26)|12|11|Опторазвязанный вход двухпроводный|
|
||||
|IN2|46|X27 (IDC26)|10|9|Опторазвязанный вход двухпроводный|
|
||||
|IN3|48|X27 (IDC26)|8|7|Опторазвязанный вход двухпроводный|
|
||||
|IN4|43|X27 (IDC26)|6|1|Опторазвязанный вход|
|
||||
|IN5|45|X27 (IDC26)|5|1|Опторазвязанный вход|
|
||||
|IN6|47|X27 (IDC26)|4|1|Опторазвязанный вход|
|
||||
|IN7|49|X27 (IDC26)|3|1|Опторазвязанный вход|
|
||||
|IN8|34|X27 (IDC26)|22|21|Опторазвязанный вход двухпроводный|
|
||||
|IN9|36|X27 (IDC26)|20|17|Опторазвязанный вход двухпроводный|
|
||||
|IN10|38|X27 (IDC26)|18|19|Опторазвязанный вход двухпроводный|
|
||||
|IN11|40|X27 (IDC26)|16|15|Опторазвязанный вход двухпроводный|
|
||||
|IN12|35|X27 (IDC26)|26|1|Опторазвязанный вход|
|
||||
|IN13|37|X27 (IDC26)|25|1|Опторазвязанный вход|
|
||||
|IN14|39|X27 (IDC26)|24|1|Опторазвязанный вход|
|
||||
|IN15|41|X27 (IDC26)|23|1|Опторазвязанный вход|
|
||||
|+10V|-|X27 (IDC26)|2|1|Опорное напряжение 10В|
|
||||
|
||||
### Варианты подключения к дискретным входам
|
||||
Для гальванической развязки дискретных входов, использованы симметричные оптроны. Симметричные - это значит они открываются либо положительным либо отрицательным потенциалом (3-12В).
|
||||
Это позволяет использовать фактически любые контактные или потенциальные датчики, соединенные как с плюсом питания так и с нулем.
|
||||
|
||||
8 из 16-ти оптронов (IN4-IN7, IN12-IN15) соединены одним общим проводом, который выведен на pin1 разьема Х27
|
||||
Другие 8 оптронов (IN0-IN3, IN8-IN11) выведены обоими контактами на соответствующие выходы разьема X27, согласно таблице выше
|
||||
Последовательно с входом оптрона установлен токоограничивающий резистор
|
||||
|
||||
Опционально, может быть запаян резистор "0 ом" с нижней стороны платы, который соединит Pin1 с общим проводом контроллера, но в стандартной поставке это не делается для сохранения универсальности.
|
||||
|
||||
Соответственно:
|
||||
|
||||
* Pin1 нужно самостоятельно подключить к общему нулю системы вовне контроллера - тогда входы (IN4-IN7, IN12-IN15) будут активироваться подачей напряжения 3-12В на соответствующие контакты X27 (например, на контакт 6 для активации входа IN4)
|
||||
|
||||
* Либо Pin1 можно подключить к источнику опорного напряжения 10В (Pin2) а соответствующий вход активировать соединением его с нулем. (Внимание, сначала при помощи омметра убедитесь что не впаян опциональный резистор, соединяющий Pin0 с нулем контроллера)
|
||||
|
||||
Для работы со входами (IN0-IN3, IN8-IN11) обратный контакт этих входов надо, также, подключить либо к нулю либо к опорному напряжению (X27 Pin 13, 11, 9, 7, 21, 17, 19, 15) по аналогии с Pin1
|
||||
Это можно сделать как при помощи перемычек на клеммнике, так и запаивая специально выведенные джамперы на верхней стороне платы (возле оптронов)
|
||||
Запаивание джампера подключает обратный вход соответствующего оптрона к Pin1, обьединяя его с общей группой входов
|
||||
|
||||
Возможность полностью гальванически изолировать контролируемый сигнал от контура LightHub бывает очень важна для обеспечения безопасности или помехозащищенности. Например, вы контролируете цепи, гальванически связанные с электросетью или удаленные обьекты, обьединение нулевых проводов которых с нулем контроллера крайне нежелательно (концевики ворот, например)
|
||||
|
||||
В этом случае, используйте входы (IN0-IN3, IN8-IN11) не подключая обратный контакт входа к цепям контроллера. Используйте два выделенных провода, чтобы подключить вход к контролируемому устройству.
|
||||
|
||||
|
||||
## Версия платы 2.0 (устаревшая)
|
||||
|
||||
### Разьемы и джамперы
|
||||
|
||||
(см. иллюстрацию на [wiki-странице](https://www.lazyhome.ru/dokuwiki/doku.php?id=входы_выходы) — `lighthub2pinout.jpeg`)
|
||||
|
||||
В этой таблице приведено соответствие физических PIN-ов Arduino Mega/DUE и входов/выходов платы LightHub 2.0
|
||||
**В конфигурации контроллера пока можно использовать только цифровое значение из столбца MPU PIN**
|
||||
|
||||
Выберете по таблице интересующий вход или выход, найдите в таблице номер MPU PIN, его используйте в конфиге
|
||||
Также, таблица пригодится чтобы преобразовать названия аналоговых каналов в цифровой номер PIN
|
||||
|
||||
#### Таблица контактов
|
||||
|
||||
| Mnemonic | MPU PIN # | Plug | Plug PIN | Gnd | Comment |
|
||||
|---|---|---|---|---|---|
|
||||
|A0|54|X36 (IDC)|1|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A1|55|X36 (IDC)|2|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A2|56|X36 (IDC)|3|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A3|57|X36 (IDC)|4|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A4|58|X36 (IDC)|5|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A5|59|X36 (IDC)|6|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A6|60|X36 (IDC)|7|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A7|61|X36 (IDC)|8|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A8|62|X36 (IDC)|19|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A9|63|X36 (IDC)|20|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A10|64|X36 (IDC)|21|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|A11|65|X36 (IDC)|22|13,14,15,16|Аналоговый защищенный вход (слаботочный выход)|
|
||||
|DA12|66|X36 (IDC)|23|13,14,15,16|Дискретный защищенный вход (слаботочный выход)|
|
||||
|DA13|67|X36 (IDC)|24|13,14,15,16|Дискретный защищенный вход (слаботочный выход)|
|
||||
|DA14|68|X36 (IDC)|25|13,14,15,16|Дискретный защищенный вход (слаботочный выход)|
|
||||
|DA15|69|X36 (IDC)|26|13,14,15,16|Дискретный защищенный вход (выход)|
|
||||
|POUT0|22|X15||X14|Мощный дискретный выход|
|
||||
|POUT1|23|X16|||Мощный дискретный выход|
|
||||
|POUT2|24|X17|||Мощный дискретный выход|
|
||||
|POUT3|25|X18|||Мощный дискретный выход|
|
||||
|POUT4|9|X19|||Мощный PWM выход. Продублирован слаботочным на X11|
|
||||
|POUT5|8|X20|||Мощный PWM выход. Продублирован слаботочным на X10|
|
||||
|POUT6|11|X21|||Мощный PWM выход. Продублирован слаботочным на X12|
|
||||
|POUT7|12|X22|||Мощный PWM выход. Продублирован слаботочным на X13|
|
||||
|PWM0|4|X7|||Незащищенный PWM вход/выход |
|
||||
|PWM1|5|X6|||Незащищенный PWM вход/выход |
|
||||
|PWM2|6|X8|||Незащищенный PWM вход/выход |
|
||||
|PWM3|7|X9|||Незащищенный PWM вход/выход |
|
||||
|UNPROT0|33|X35 (RJ45)|1|Shield|Незащищенный дискретный вход/выход|
|
||||
|UNPROT1|31|X35 (RJ45)|2||Незащищенный дискретный вход/выход |
|
||||
|UNPROT2|32|X35 (RJ45)|3||Незащищенный дискретный вход/выход |
|
||||
|UNPROT3|30|X35 (RJ45)|4||Незащищенный дискретный вход/выход |
|
||||
|UNPROT4|29|X35 (RJ45)|5||Незащищенный дискретный вход/выход |
|
||||
|UNPROT5|28|X35 (RJ45)|6||Незащищенный дискретный вход/выход |
|
||||
|UNPROT6|27|X35 (RJ45)|7||Незащищенный дискретный вход/выход |
|
||||
|UNPROT7|26|X35 (RJ45)|8||Незащищенный дискретный вход/выход |
|
||||
|IN0|42|X27 (IDC26)|12|11|Опторазвязанный вход двухпроводный|
|
||||
|IN1|44|X27 (IDC26)|10|9|Опторазвязанный вход двухпроводный|
|
||||
|IN2|46|X27 (IDC26)|8|7|Опторазвязанный вход двухпроводный|
|
||||
|IN3|49|X27 (IDC26)|6|5|Опторазвязанный вход двухпроводный|
|
||||
|IN4|43|X27 (IDC26)|4|25,26|Опторазвязанный вход|
|
||||
|IN5|45|X27 (IDC26)|3|25,26|Опторазвязанный вход|
|
||||
|IN6|47|X27 (IDC26)|2|25,26|Опторазвязанный вход|
|
||||
|IN7|48|X27 (IDC26)|1|25,26|Опторазвязанный вход|
|
||||
|IN8|34|X27 (IDC26)|20|19|Опторазвязанный вход двухпроводный|
|
||||
|IN9|36|X27 (IDC26)|18|15|Опторазвязанный вход двухпроводный|
|
||||
|IN10|38|X27 (IDC26)|16|17|Опторазвязанный вход двухпроводный|
|
||||
|IN11|40|X27 (IDC26)|14|13|Опторазвязанный вход двухпроводный|
|
||||
|IN12|35|X27 (IDC26)|24|25,26|Опторазвязанный вход|
|
||||
|IN13|37|X27 (IDC26)|23|25,26|Опторазвязанный вход|
|
||||
|IN14|39|X27 (IDC26)|22|25,26|Опторазвязанный вход|
|
||||
|IN15|41|X27 (IDC26)|21|25,26|Опторазвязанный вход|
|
||||
|
||||
---
|
||||
|
||||
## Сверка с кодом (2026-10-02)
|
||||
|
||||
**Поиск variant.cpp / ldscripts (платформа DUE):**
|
||||
- В репозитории **нет собственного** `lighthub/variant.cpp`. Для DUE используется вариант из пакета PlatformIO `.platformio/packages/framework-arduinosam/variants/arduino_due_x/variant.cpp` (см. [flashing.md](flashing.md) — нужно добавить в него `void USART0_Handler(void) __attribute__((weak));`).
|
||||
- В каталоге `ldscripts/` есть только лд-скрипты STM32 (`stm32f103rb.ld` и т.п.); **DUE-лд-скриптов в репозитории нет**.
|
||||
- В исходном коде пины каналов **не заданы фиксированной таблицей** — конфиг ссылается на номера пинов напрямую (цифровое значение столбца «MPU PIN»), поэтому автоматической сверки «wiki ↔ код» по конкретным пинам не проводится. Таблица wiki является эталонной картой пинов платы.
|
||||
|
||||
**Соответствие номеров пинов стандартной распиновке DUE:**
|
||||
- Аналоговые входы `A0`–`A11` → пины **54–65** — **совпадает** со стандартной нумерацией аналоговых пинов Arduino DUE (A0=54 … A15=69). Расхождений нет.
|
||||
- Остальные пины (POUT 8–25, PWM 4–10, UNPROT 26–33, IN 34–49) — все в диапазоне цифровых пинов DUE (0–53), соответствуют стандартной нумерации.
|
||||
|
||||
**Различия между ревизиями платы (2.2 и 2.0):**
|
||||
- Столбец **MPU PIN # идентичен** в обеих таблицах — номера пинов MCU не менялись между ревизиями.
|
||||
- Различается столбец **Plug PIN** (физические контакты разъемов X36/X27/X35) — например, в rev 2.2 для `A0`–`A7` это контакты 3–10 X36, а в rev 2.0 — 1–8; раскладка опто-входов IN в X27 тоже отличается. Это изменение именно **реvisions платы**, а не программных пинов — при работе в конфиге всегда используйте столбец **MPU PIN #** (он одинаков).
|
||||
- В rev 2.2 добавлены контакты CAN H/L (X36 пины 17/18, начиная с V3.0) и вход PWM10 (X414, пин 10), которых нет в rev 2.0.
|
||||
Reference in New Issue
Block a user