Files
2026-10-11 01:27:15 +03:00

216 lines
15 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Заливка прошивки
> Источник: 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`.