Инструменты пользователя

Инструменты сайта


personal_blog:diy:not-only-clock:last-version:upload-firmware

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
personal_blog:diy:not-only-clock:last-version:upload-firmware [2024/10/21 05:17] ironmeshpersonal_blog:diy:not-only-clock:last-version:upload-firmware [2024/12/11 07:46] (текущий) ironmesh
Строка 1: Строка 1:
 ====== Сборка прошивки и загрузка ====== ====== Сборка прошивки и загрузка ======
  
-Если вы читаете данную статью, то вы либо уже собрали устройство, либо находитесь на завершающей стадии сборки. Так или иначе, я предлагаю на выбор 2 способа загрузки прошивки: сборка прошивки из исходников с помощью **Arduino IDE 2** или загрузить бинарный файл сборки с помощью специальной утилиты.+Если вы читаете данную статью, то вы либо уже собрали устройство, либо находитесь на завершающей стадии сборки. Так или иначе, я предлагаю на выбор 2 способа загрузки: собрать прошивку из исходников с помощью **Arduino IDE 2** или загрузить бинарный файл сборки с помощью специальной утилиты.
  
 ===== Сборка прошивки из исходников ===== ===== Сборка прошивки из исходников =====
  
-В данной процедуре нет совершенно ничего сложного, я попытаюсь построить свое объяснение  таким образом, чтобы было ясно даже для тех, кто никогда до этого не работал с платформой Arduino, в любом случае в интернете есть много материалов, которые помогут разобраться в этой теме.+В данной процедуре нет совершенно ничего сложного, я попытаюсь построить свое объяснение таким образом, чтобы было ясно даже для тех, кто никогда до этого не работал с платформой Arduino, в любом случае в интернете есть много материалов, которые помогут разобраться в этой теме.
  
-Итак для начала нам потребуется скачать и установить программу **Arduino IDE 2**, для этого качайте ее с [[https://www.arduino.cc/en/software|официального сайта]] и устанавливайте на свой компьютер. Cкачайте файлы исходников (они находятся на [[main|главной странице проекта]]). Затем откройте скетч //desktop_stopwatch.ino.// Далее для сборки нам потребуется установить несколько сторонних библиотек, весь список приведен в таблице, на всякий случай я оставил номера версий, которые были использованы и являются совместимыми с исходным кодом, а то вдруг может оказаться, что коды библиотек окажутся несовместимыми после обновления их авторами, так что, если вдруг возникнут какие-то проблемы, то скачайте указанные версии. На момент прочтения некоторые библиотеки могут уже быть обновлены, и как принято в программистском сообществе: если первая цифра в номере версии та же, то код должен оставаться совместимым, но всегда нужно иметь в виду, что никто не обязан следовать данному принципу, он может даже не знать о нем.+Итакдля начала нам потребуется скачать и установить программу **Arduino IDE 2**, для этого качайте ее с [[https://www.arduino.cc/en/software|официального сайта]] и устанавливайте на свой компьютер. Cкачайте файлы исходников (они находятся на [[main|главной странице проекта]]). Затем откройте скетч //desktop_stopwatch.ino.// Далее для сборки нам потребуется установить несколько сторонних библиотек, весь список приведен в таблице, на всякий случай я оставил номера версий, которые были использованы и являются совместимыми с исходным кодом, а то вдруг может выясниться, что коды библиотек окажутся несовместимыми после обновления их авторами, так что, если вдруг возникнут какие-то проблемы, то скачайте указанные версии. На момент прочтения некоторые библиотеки могут уже быть обновлены, и как принято в программистском сообществе: если первая цифра в номере версии та же, то код должен оставаться совместимым, но всегда нужно иметь в виду, что никто не обязан следовать данному принципу, он может даже не знать о нем.
  
 ^ Имя библиотеки ^ Автор ^ Версия ^ Ссылка на репозиторий ^ ^ Имя библиотеки ^ Автор ^ Версия ^ Ссылка на репозиторий ^
-| EncButton | AlexGyver | 3.6.| [[https://github.com/GyverLibs/EncButton]] |+| EncButton | AlexGyver | 3.6.| [[https://github.com/GyverLibs/EncButton]] |
 | max7219 | Jonathan Evans | 1.0.0 | [[https://github.com/JemRF/max7219]] | | max7219 | Jonathan Evans | 1.0.0 | [[https://github.com/JemRF/max7219]] |
 | TimerMs | AlexGyver | 1.2 | [[https://github.com/GyverLibs/TimerMs]] | | TimerMs | AlexGyver | 1.2 | [[https://github.com/GyverLibs/TimerMs]] |
Строка 17: Строка 17:
 | RTC | Manjunath CV | 1.8.0 | [[https://github.com/cvmanjoo/RTC]] | | RTC | Manjunath CV | 1.8.0 | [[https://github.com/cvmanjoo/RTC]] |
  
-Хорошо, IDE (среду разработки) загрузили, а скетч открыли, теперь, нажмите на боковой панели на кнопку, которая похожа на стопку книг или нажмите сочетание клавиш **Ctrl + Shift + I**, затем в поле// Filter your search //введите имя библиотеки (1), проверьте автора (2), затем нажмите на кнопку **Install**, дождитесь конца процесса загрузки и установки, затем проделайте те же действия для остальных библиотек.+Хорошо, IDE (интегрированную среду разработки) запустили, а скетч открыли, теперь, нажмите на боковой панели на кнопку, которая похожа на стопку книг или нажмите сочетание клавиш **Ctrl + Shift + I**, затем в поле// Filter your search //введите имя библиотеки (1), проверьте автора (2), затем нажмите на кнопку **Install**, дождитесь конца процесса загрузки и установки, затем проделайте те же действия для остальных библиотек.
  
 {{ :personal_blog:diy:desktop_stopwatch:instasll_library.jpg?400&direct |поиск библиотеки Arduino}}Далее модифицируйте код в соответствии со своими потребностями. {{ :personal_blog:diy:desktop_stopwatch:instasll_library.jpg?400&direct |поиск библиотеки Arduino}}Далее модифицируйте код в соответствии со своими потребностями.
  
-В строчке кода //#define DISPLAY_INVERTED <значение параметра>// установите  значение параметра:1 - если порядок подключения общих катодов дисплеев к MAX7219 обратный, в текущей схеме устройства он такой, поэтому, если вы подключите обычный модуль, то можете  обнаружить, что чередование символов инвертированное; 0 - если не нужно инвертировать порядок символов, установите это значение, если используете заводской дисплейный модуль.+В строчке кода //#define DISPLAY_INVERTED <значение параметра>// установите  значение параметра:1 - если порядок подключения общих катодов индикаторов к MAX7219 обратный, в текущей схеме устройства он такой, но, если вы подключите обычный модуль, то можете  обнаружить, что чередование символов инвертированное; 0 - если не нужно инвертировать порядок символов, установите это значение, если используете заводской дисплейный модуль.
  
 В строчке кода //#define USE_RTC_MODULE <значение параметра>// установите значение параметра:1 - если установлен модуль DS3231 и необходимо его задействовать (в предыдущих статьях я писал, что есть нюансы при использовании данного модуля совместно с датчиком BME280); 0 - в противном случае. В строчке кода //#define USE_RTC_MODULE <значение параметра>// установите значение параметра:1 - если установлен модуль DS3231 и необходимо его задействовать (в предыдущих статьях я писал, что есть нюансы при использовании данного модуля совместно с датчиком BME280); 0 - в противном случае.
Строка 27: Строка 27:
 Следующие параметры рекомендуется редактировать только опытным пользователям: Следующие параметры рекомендуется редактировать только опытным пользователям:
  
-  * //DISPLAY_BLINK_PERIOD //- период переключения состояния дисплея включен/выключены (мигание) в миллисекундах+  * //DISPLAY_BLINK_PERIOD //- период переключения состояния дисплея включен/выключен (мигание) в миллисекундах
   * //BUZZER_PIN //- номер цифрового пина, к которому подключен пьезоизлучатель   * //BUZZER_PIN //- номер цифрового пина, к которому подключен пьезоизлучатель
-  * //BUZZER_FREQ //- частота звукового сигнала, который подается на пьезоизлучатель +  * //BUZZER_FREQ //- частота сигнала, который подается на пьезоизлучатель 
   * //BUZZER_DURATION //- продолжительность подачи сигнала в миллисекундах   * //BUZZER_DURATION //- продолжительность подачи сигнала в миллисекундах
   * //BUZZER_DELAY//- задержка между звуковыми сигналами в миллисекундах   * //BUZZER_DELAY//- задержка между звуковыми сигналами в миллисекундах
  
-После того как все параметры установлены, подключите плату ардуино к компьютеру, в моем случае я использовал неофициальную плату ардуино, которая использует для связи с компьютером микросхему **CH340**, поэтому потребуется установить драйвер на ПК ([[https://wiki.amperka.ru/_media/articles:driver-ch340:ch340ser-windows.zip|ссылка на драйвер для Windows]]). В остальном случае обратитесь к документации для своей платы.После выберите подключенную плату и порт в //Tool -> Board:<....> -> Arduino AVR Board -> (выберите совместимую плату)//. Повторю, что я в данном проекте использована плата Arduino Nano с микроконтроллером Atmega328p, но вы можете использовать другую плату на микроконтроллере AVR, с характеристиками аналогичными или более высокими.+После того как все параметры установлены, подключите плату ардуино к компьютеру, в моем случае я использовал неофициальную плату ардуино, которая использует для связи с компьютером микросхему **CH340**, поэтому потребуется установить драйвер на ПК ([[https://wiki.amperka.ru/_media/articles:driver-ch340:ch340ser-windows.zip|ссылка на драйвер для Windows]]). В остальном случае обратитесь к документации для своей платы. После выберите подключенную плату и порт в //Tool -> Board:<....> -> Arduino AVR Board -> (выберите совместимую плату)//. Повторю, что я в данном проекте использована плата Arduino Nano с микроконтроллером Atmega328p, но вы можете использовать другую плату на микроконтроллере AVR, с характеристиками аналогичными или более высокими.
  
-{{ :personal_blog:diy:desktop_stopwatch:select_board.jpg?600&direct |выбор платы Arduino}}Если плата окажется не совместимой, то код скорее всего не пройдет компиляцию, также после компиляции будет выведена информация, сколько процентов постоянной и оперативной памяти будет необходимо. Чтобы запустить сборку нажмите на верхней панели кнопку с галочкой(Verify) или сочетание клавиш **Ctrl+R**, если сборка прошла успешно, то будет выведено сообщение вроде этого+{{ :personal_blog:diy:desktop_stopwatch:select_board.jpg?600&direct |выбор платы Arduino}}Если плата окажется не совместимой, то код скорее всего не пройдет компиляцию, также после удачной компиляции будет выведена информация о том, сколько процентов постоянной и оперативной памяти будет использовано. Чтобы запустить сборку нажмите на верхней панели на кнопку с галочкой(Verify) или сочетание клавиш **Ctrl+R**, если сборка прошла успешно, то будет выведено сообщение вроде этого
  
 {{ :personal_blog:diy:desktop_stopwatch:build_success.jpg?nolink |успешная компиляция}}Как я ранее говорил, будет выведена информация с требованиями к памяти, для платы Arduino Nano необходимо 70% ПЗУ и 35% оперативной памяти. Если кроме этого выводятся сообщения об ошибках, то проверьте все проделанные ранее действия. Если все собирается без проблем, то нажмите кнопку с изображением стрелки (Upload) или **Ctrl+U**, начнется процесс загрузки, после его завершения устройство будет готово к работе. Как пользоваться устройством читайте в материале [[user-manual]]. {{ :personal_blog:diy:desktop_stopwatch:build_success.jpg?nolink |успешная компиляция}}Как я ранее говорил, будет выведена информация с требованиями к памяти, для платы Arduino Nano необходимо 70% ПЗУ и 35% оперативной памяти. Если кроме этого выводятся сообщения об ошибках, то проверьте все проделанные ранее действия. Если все собирается без проблем, то нажмите кнопку с изображением стрелки (Upload) или **Ctrl+U**, начнется процесс загрузки, после его завершения устройство будет готово к работе. Как пользоваться устройством читайте в материале [[user-manual]].
Строка 41: Строка 41:
 ===== Загрузка готовой сборки ===== ===== Загрузка готовой сборки =====
  
-В архиве //project_files.zip// в папке **builds** находятся бинарные файлы с расширение HEX,  всего присутствует 2 варианта: с применение модуля часов реального времени DS3221 (имя файла имеет суффикс "//_rtc//") и без него. На моем оборудовании были проблемы при наличии в модуле часов батарейки устройство зависало при запуске, может в вашем случае все будет в порядке, в любом случае решайте сами.+В архиве //Builds.zip// находятся бинарные файлы с расширение HEX,  всего присутствует 2 варианта: с применение модуля часов реального времени DS3221 (имя файла имеет суффикс "//_rtc//") и без него. На моем оборудовании были проблемы при наличии в модуле часов батарейкиустройство зависало при запуске, может в вашем случае все будет иначе, в любом случае решайте сами.
  
-Данный способ я не использовал на практике, поэтому не могу однозначно сказать как производится загрузка прошивки в микроконтроллер. Один из вариантов загрузки с помощью утилиты [[https://github.com/binaryupdates/xLoader|XLoader]], руководство по использованию вы можете узнать в [[https://jarduino.ru/2019/12/23/arduino-hex-upload/|этой статье]], также с материале описаны другие способы загрузки.+Данный способ я не использовал на практике, поэтому не могу с уверенностью сказать как производится загрузка прошивки в микроконтроллер. Один из вариантов загрузкис помощью утилиты [[https://github.com/binaryupdates/xLoader|XLoader]], с инструкцией по использованию вы можете ознакомиться в [[https://jarduino.ru/2019/12/23/arduino-hex-upload/|этой статье]], также в материале описаны другие способы загрузки.
  
 ===== Другие варианты схемы ===== ===== Другие варианты схемы =====
  
-Данное устройство имеет очень простую схему и для минимальной комплектации достаточно всего трех компонентов: плата ардуино, модуль дисплея на микросхеме MAX7219 и 3 кнопки, на изображении ниже показано устройство, которое собрано на брэдборде(breadboard)+Данное устройство имеет очень простую схему и для минимальной комплектации достаточно всего трех компонентов: плата ардуино, модуль дисплея на микросхеме MAX7219 и 3 кнопки, на изображении ниже показано устройство, которое я собрал на брэдборде(breadboard)
  
-{{ :personal_blog:diy:desktop_stopwatch:breadboard_stopwatch.jpg?600&direct |NotOnlyClock собранный на брэдборде с применение микроконтроллера LGT8F328P}}Также в показанной схеме использован аналог МК AVR, а конкретно **LGT8F328P**, устройство работает, но есть один нюанс, пользовательские настройки не сохранятся в постоянной памяти, так как данный МК не имеет EEPROM. Но, при желании можно использовать и его, просто необходимые настройки можно задать непосредственно в коде прошивки.+{{ :personal_blog:diy:desktop_stopwatch:breadboard_stopwatch.jpg?600&direct |NotOnlyClock собранный на брэдборде с применение микроконтроллера LGT8F328P}}Также в показанной схеме использован аналог МК AVR, а конкретно **LGT8F328P**, устройство работает, но есть один нюанс, пользовательские настройки не сохраняются в постоянной памяти, так как данный МК не имеет EEPROM. Но, при желании можно использовать и его, просто необходимые настройки можно задать непосредственно в коде прошивки.
  
-Пользовательские настройки хранятся в структуре //struct SetttingsData{...}//, все параметры имеют приставку схожую с той, что указана в [[user-manual]], p1, p2 и т.д., после знака //"="// введите необходимые значения параметров, затем скомпилируйте и загрузите прошивку. Изменить параметры и опробовать их можно в режиме установки пользовательских настроек, только учтите, что при повторное загрузке контроллера будут установлены начальные значения. Также для других вариантов конструкций может захотеться поместить все в подходящий корпус.+Пользовательские настройки хранятся в структуре //struct SetttingsData{...}//, все параметры имеют приставку схожую с той, что указана в [[user-manual]], p1, p2 и т.д., после знака //"="// введите необходимые значения параметров, затем скомпилируйте и загрузите прошивку. Изменить параметры и опробовать их можно в режиме установки пользовательских настроек, только учтите, что при повторное загрузке контроллера будут установлены начальные значения. Для других вариантов конструкции может возникнуть желание и необходимость поместить компоненты устройства в подходящий корпус, этот вопрос вы уже решаете сами, можете переделать предложенный мной вариант корпуса на свое усмотрение.
  
-При должном умении вы можете изменить прошивку, а также добавить дополнительную периферию, для этого я оставил несколько свободных цифровых пинов, например, у меня была идея вывести разъем на заднюю стенку для подключения реле, чтобы включать звонок при срабатывания будильника, также поступали предложения добавить светочувствительный элемент, чтобы яркость дисплея подстраивалась под освещение. На самом деле вариантов апгрейда можно придумать бесчисленное количество, все определяется потребностями и материальными возможностями.+При должном умении вы можете изменить прошивку, а также добавить дополнительную периферию, для этого я оставил несколько свободных цифровых пинов, например, у меня была идея вывести разъем на заднюю стенку для подключения реле, чтобы включать звонок при срабатывания будильника, также поступали предложения добавить светочувствительный элемент, чтобы яркость дисплея подстраивалась в зависимости от освещения. На самом деле вариантов апгрейда можно придумать бесчисленное количество, все определяется потребностями и материальными возможностями.
  
 ===== Вместо заключения ===== ===== Вместо заключения =====
  
-Спасибо всем, кто уделил время прочтению данных материалов, надеюсь моя разработка окажется полезной не только для меня и вы соберете свой экземпляр устройства, а лучше соберите и для себя, и в подарок для хорошего человека. Вы можете принять участие в усовершенствовании проекта, для этого в конце статьи будет указан адрес, куда вы можете присылать свои замечания и предложения, а чтобы не пропустить новые обновления подписывайтесь на [[https://t.me/ironmesh_studio_rus|Телеграм канал]]. Также я подумываю открыть Discord сервер для обсуждения, но в том случае, если будет соответствующий запрос.+Спасибо всем, кто уделил время прочтению данных материалов, надеюсь моя разработка окажется полезной не только для меня и вы соберете свой экземпляр устройства, а лучше соберите и для себя, и в подарок для хорошего человека. Вы можете принять участие в усовершенствовании проекта, для этого в конце статьи будет указан адрес, на который вы можете присылать свои замечания и предложения, а чтобы не пропустить новые обновления подписывайтесь на [[https://t.me/ironmesh_studio_rus|Телеграм канал]]. Также я подумываю открыть Discord сервер для ведения обсуждений, но в случае, если будет соответствующий запрос от вас.
  
 ---- ----
  
-{{page>serv:includes:software_feedback_proporsal & noheader }}+{{page>..:article-footer & noheader }}
  
  
personal_blog/diy/not-only-clock/last-version/upload-firmware.1729477060.txt.gz · Последнее изменение: ironmesh