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

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


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

Сборка прошивки и загрузка

Если вы читаете данную статью, то вы либо уже собрали устройство, либо находитесь на завершающей стадии сборки. Так или иначе, я предлагаю на выбор 2 способа загрузки: собрать прошивку из исходников с помощью Arduino IDE 2 или загрузить бинарный файл сборки с помощью специальной утилиты.

Сборка прошивки из исходников

В данной процедуре нет совершенно ничего сложного, я попытаюсь построить свое объяснение таким образом, чтобы было ясно даже для тех, кто никогда до этого не работал с платформой Arduino, в любом случае в интернете есть много материалов, которые помогут разобраться в этой теме.

Итак, для начала нам потребуется скачать и установить программу Arduino IDE 2, для этого качайте ее с официального сайта и устанавливайте на свой компьютер. Cкачайте файлы исходников (они находятся на главной странице проекта). Затем откройте скетч desktop_stopwatch.ino. Далее для сборки нам потребуется установить несколько сторонних библиотек, весь список приведен в таблице, на всякий случай я оставил номера версий, которые были использованы и являются совместимыми с исходным кодом, а то вдруг может выясниться, что коды библиотек окажутся несовместимыми после обновления их авторами, так что, если вдруг возникнут какие-то проблемы, то скачайте указанные версии. На момент прочтения некоторые библиотеки могут уже быть обновлены, и как принято в программистском сообществе: если первая цифра в номере версии та же, то код должен оставаться совместимым, но всегда нужно иметь в виду, что никто не обязан следовать данному принципу, он может даже не знать о нем.

Имя библиотеки Автор Версия Ссылка на репозиторий
EncButton AlexGyver 3.6.3 https://github.com/GyverLibs/EncButton
max7219 Jonathan Evans 1.0.0 https://github.com/JemRF/max7219
TimerMs AlexGyver 1.2 https://github.com/GyverLibs/TimerMs
GyverTimers AlexGyver 1.10 https://github.com/GyverLibs/GyverTimers
BME280 Tyler Glenn 3.0.0 https://github.com/finitespace/BME280
RTC Manjunath CV 1.8.0 https://github.com/cvmanjoo/RTC

Хорошо, IDE (интегрированную среду разработки) запустили, а скетч открыли, теперь, нажмите на боковой панели на кнопку, которая похожа на стопку книг или нажмите сочетание клавиш Ctrl + Shift + I, затем в поле Filter your search введите имя библиотеки (1), проверьте автора (2), затем нажмите на кнопку Install, дождитесь конца процесса загрузки и установки, затем проделайте те же действия для остальных библиотек.

поиск библиотеки ArduinoДалее модифицируйте код в соответствии со своими потребностями.

В строчке кода #define DISPLAY_INVERTED <значение параметра> установите значение параметра:1 - если порядок подключения общих катодов индикаторов к MAX7219 обратный, в текущей схеме устройства он такой, но, если вы подключите обычный модуль, то можете обнаружить, что чередование символов инвертированное; 0 - если не нужно инвертировать порядок символов, установите это значение, если используете заводской дисплейный модуль.

В строчке кода #define USE_RTC_MODULE <значение параметра> установите значение параметра:1 - если установлен модуль DS3231 и необходимо его задействовать (в предыдущих статьях я писал, что есть нюансы при использовании данного модуля совместно с датчиком BME280); 0 - в противном случае.

Следующие параметры рекомендуется редактировать только опытным пользователям:

  • DISPLAY_BLINK_PERIOD - период переключения состояния дисплея включен/выключен (мигание) в миллисекундах
  • BUZZER_PIN - номер цифрового пина, к которому подключен пьезоизлучатель
  • BUZZER_FREQ - частота сигнала, который подается на пьезоизлучатель
  • BUZZER_DURATION - продолжительность подачи сигнала в миллисекундах
  • BUZZER_DELAY- задержка между звуковыми сигналами в миллисекундах

После того как все параметры установлены, подключите плату ардуино к компьютеру, в моем случае я использовал неофициальную плату ардуино, которая использует для связи с компьютером микросхему CH340, поэтому потребуется установить драйвер на ПК (ссылка на драйвер для Windows). В остальном случае обратитесь к документации для своей платы. После выберите подключенную плату и порт в Tool → Board:<….> → Arduino AVR Board → (выберите совместимую плату). Повторю, что я в данном проекте использована плата Arduino Nano с микроконтроллером Atmega328p, но вы можете использовать другую плату на микроконтроллере AVR, с характеристиками аналогичными или более высокими.

выбор платы ArduinoЕсли плата окажется не совместимой, то код скорее всего не пройдет компиляцию, также после удачной компиляции будет выведена информация о том, сколько процентов постоянной и оперативной памяти будет использовано. Чтобы запустить сборку нажмите на верхней панели на кнопку с галочкой(Verify) или сочетание клавиш Ctrl+R, если сборка прошла успешно, то будет выведено сообщение вроде этого

успешная компиляцияКак я ранее говорил, будет выведена информация с требованиями к памяти, для платы Arduino Nano необходимо 70% ПЗУ и 35% оперативной памяти. Если кроме этого выводятся сообщения об ошибках, то проверьте все проделанные ранее действия. Если все собирается без проблем, то нажмите кнопку с изображением стрелки (Upload) или Ctrl+U, начнется процесс загрузки, после его завершения устройство будет готово к работе. Как пользоваться устройством читайте в материале Инструкция по эксплуатации.

Загрузка готовой сборки

В архиве Builds.zip находятся бинарные файлы с расширение HEX, всего присутствует 2 варианта: с применение модуля часов реального времени DS3221 (имя файла имеет суффикс «_rtc») и без него. На моем оборудовании были проблемы при наличии в модуле часов батарейки, устройство зависало при запуске, может в вашем случае все будет иначе, в любом случае решайте сами.

Данный способ я не использовал на практике, поэтому не могу с уверенностью сказать как производится загрузка прошивки в микроконтроллер. Один из вариантов загрузки: с помощью утилиты XLoader, с инструкцией по использованию вы можете ознакомиться в этой статье, также в материале описаны другие способы загрузки.

Другие варианты схемы

Данное устройство имеет очень простую схему и для минимальной комплектации достаточно всего трех компонентов: плата ардуино, модуль дисплея на микросхеме MAX7219 и 3 кнопки, на изображении ниже показано устройство, которое я собрал на брэдборде(breadboard)

NotOnlyClock собранный на брэдборде с применение микроконтроллера LGT8F328PТакже в показанной схеме использован аналог МК AVR, а конкретно LGT8F328P, устройство работает, но есть один нюанс, пользовательские настройки не сохраняются в постоянной памяти, так как данный МК не имеет EEPROM. Но, при желании можно использовать и его, просто необходимые настройки можно задать непосредственно в коде прошивки.

Пользовательские настройки хранятся в структуре struct SetttingsData{…}, все параметры имеют приставку схожую с той, что указана в Инструкция по эксплуатации, p1, p2 и т.д., после знака «=» введите необходимые значения параметров, затем скомпилируйте и загрузите прошивку. Изменить параметры и опробовать их можно в режиме установки пользовательских настроек, только учтите, что при повторное загрузке контроллера будут установлены начальные значения. Для других вариантов конструкции может возникнуть желание и необходимость поместить компоненты устройства в подходящий корпус, этот вопрос вы уже решаете сами, можете переделать предложенный мной вариант корпуса на свое усмотрение.

При должном умении вы можете изменить прошивку, а также добавить дополнительную периферию, для этого я оставил несколько свободных цифровых пинов, например, у меня была идея вывести разъем на заднюю стенку для подключения реле, чтобы включать звонок при срабатывания будильника, также поступали предложения добавить светочувствительный элемент, чтобы яркость дисплея подстраивалась в зависимости от освещения. На самом деле вариантов апгрейда можно придумать бесчисленное количество, все определяется потребностями и материальными возможностями.

Вместо заключения

Спасибо всем, кто уделил время прочтению данных материалов, надеюсь моя разработка окажется полезной не только для меня и вы соберете свой экземпляр устройства, а лучше соберите и для себя, и в подарок для хорошего человека. Вы можете принять участие в усовершенствовании проекта, для этого в конце статьи будет указан адрес, на который вы можете присылать свои замечания и предложения, а чтобы не пропустить новые обновления подписывайтесь на Телеграм канал. Также я подумываю открыть Discord сервер для ведения обсуждений, но в случае, если будет соответствующий запрос от вас.


[💬Форум] Есть вопросы, предложения? Тогда переходите на наш форум.

[📧Отправить письмо] Нашли ошибку в программе, схеме устройства или в сопроводительных материалах, или у вас есть какие-либо предложения? Не стесняйтесь сообщить об этом мне.

[👍Поддержать автора] Надеюсь вы остались довольны проектом, на его создание я затратил значительное количество личного времени и средств. Разработка продуктов, а также написание сопроводительных материалов для них, поддержка сайта, все это требует значительных временных и финансовых затрат.

[📢Подписывайтесь на социальные сети] Будьте в курсе свежих обновлений. Не забудьте ознакомиться с другими проектами на этом или на моем основном сайте.

personal_blog/diy/not-only-clock/last-version/upload-firmware.txt · Последнее изменение: ironmesh