===== Заливка уже откомпилированной прошивки =====

В первую очередь необходимо скачать сам проект.
Это можно сделать либо с использованием утилиты git:
<code>
git clone https://github.com/anklimov/lighthub.git
</code>
 
Либо, если у вас она не установлена - открываем  [[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:
<code>
git clone https://github.com/anklimov/lighthub.git
</code>
 
Либо, если у вас она не установлена - открываем  [[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 по пути 
<nowiki>
.platformio/packages/framework-arduinosam/variants/arduino_due_x
</nowiki>
 и вставить в него __последней строкой__ следующую строку 
<code>
void USART0_Handler(void) __attribute__((weak)); 
</code>
сохранить.

(К сожалению, внести это простое изменение в штатный репозиторий arduino не удалось никому из тех, кто создавал Pull request)


Нажимаем кнопку "Build"
Platformio скачивает все нужные библиотеки и компилирует код. Возможно придется несколько раз повторить эту операцию, так как по непонятным причинам, platformio может выдавать ошибки, не скачав какую-то библиотеку.

Если компиляция прошла успешно, можно подключить плату USB кабелем и нажать кнопку Upload



===== Компиляция и заливка с использованием platformio. Вариант командная строка =====

Для того что бы прошить плату в первую очередь необходимо скачать сам проект [[https://github.com/anklimov/lighthub]] и установить Platformio


* Если Вы считатет себя джедаем и не ищете легких путей то работать с платформио можно через командную строку. Для этого нужно:
  -   установить Python 2.7,
  -   установить git.

* Модифицировать PATH. идем: мой компьютер->правой кнопокой мыши вызываем контекстное меню->свойства->в появившемся окне "переменные среды"-> в окне "Системные переменные" выбираем переменную Path ->изменить->добавляем строку 

<code>
;C:\Python27;C:\Python27\Scripts
</code>

* Установить Platformio открываем командную строку (поиск в "Пуске" cmd.exe) вводим команду

<code> pip install -U platformio </code>

Учтите, что Platformio установится по умолчанию в папку пользователя <code> С:\Пользователи\Имя пользователя\.platformio</code> Python 2.7 не поддерживает кириллицу, если имя пользователя написано кириллицей, необходимо скопировать папку Platformio в корень диска C:\ и изменить путь к рабочему каталогу в фале platformio.ini (который находится в ранее скачанной папке lighthub-master), указав после строки [platformio] следующую строку: <code>home_dir = C:\.platformio</code> 

Сохраняем файл.
Открываем папку lighthub-master, в строке отображающей путь вводим cmd и нажимаем enter или же выбираем папку в командной строке любым другим способом.

**Для платформы DUE:** обязательно придется найти фаил variant.cpp по пути 
<nowiki>
.platformio/packages/framework-arduinosam/variants/arduino_due_x
</nowiki>
 и вставить в него __последней строкой__ следующую строку 
<code>
void USART0_Handler(void) __attribute__((weak)); 
</code>
сохранить.

Далее вводим <code>pio run -e <платформа></code> 

Вариант <платформа> выберете в зависимости от используемой аппаратной платформы. 
<code>
; Arduino Mega (without one-wire driver) + Ethernet shield Wiznet 5100
; Компактная сборка для Mega2560
;    mega2560slim-5100

; Arduino Mega + Ethernet shield Wiznet 5100

;    mega2560-5100

; Arduino Mega  + Ethernet shield Wiznet 5500
;    mega2560-5500

; LightHub controller HW revision 2.1 and above (Wiznet 5500 CS on pin 53)
; Если у вас плата LightHub версии 2.1 или более новая + DUE - используйте эту конфигурацию 
;    **lighthub21**

; Arduino DUE  + Ethernet shield Wiznet 5100 or 5200 or 5500
; Предпочтительный вариант для DUE с Ethernet Shield (не для платы LightHub), базированный на универсальном драйвере
;    **due**

; Arduino DUE  + Ethernet shield Wiznet 5100
; вариант для DUE с Ethernet Shield 5100 (старый драйвер, будет убран в следующем релизе)
;    due-5100

; Arduino DUE + Ethernet shield Wiznet 5500
; вариант для DUE с Ethernet Shield 5500 (старый драйвер, будет убран в следующем релизе)
;    due-5500

; ESP 8266   
;    **esp8266-wifi**

; ESP-32 
;    **esp32-wifi**

; M5Stack core (ESP32 based)
;    m5stack

; Controllino
;    controllino

; STM32 board + ENC28j60 network
;    stm32-enc2860

; NRF52 board + Wiznet 5500 network
;    nrf52840-5500

</code>

Пример: "due-5100" - это плата Arduino DUE + Ethernet Shield v1 на чипе Wiznet-5100

**В общем случае, используйте варианты без указания 5100 или 5500 - в этом случае будет использован универсальный драйвер Wiznet**

Если плата LightHub версии 2.1 или выше то используйте опцию "lighthub21"

Проект должен скомпилироваться без ошибок.

**ЧАСТО Platformio выдает ошибки на ровном месте (не находит какие-либо файлы). В этом случае, повторный запуск компиляции часто решает эту проблему**

Если ошибок нет вводим <code>pio run -e <платформа> -t upload</code>
Программа должна залиться в аппаратную платформу.
 
Если возникли ошибки:
Попробовать очистить папку с библиотеками .piolibdeps и .pioenv удалив все их содержимое


===== Использование Arduino IDE для компиляции и заливки прошивки =====
Это достаточно трудоемкий процесс, который требует, чтобы вы вручную установили массу библиотек в IDE. 
platformio - намного более гибкое и профессиональное средство - лучше и проще использовать его.
Если для кого-то будет важно освоить именно этот метод - пишите, мы пополним инструкцию.


Если возникают проблемы - пишите на форуме или в [[https://t.me/lighthub|группу Телеграмм]]

(Вы, также, можете улучшать эту инструкцию)