Это старая версия документа!
Содержание
Сборка прошивки и загрузка
Если вы читаете данную статью, то вы либо уже собрали устройство, либо находитесь на завершающей стадии сборки. Так или иначе, я предлагаю на выбор 2 способа загрузки прошивки: сборка прошивки из исходников с помощью Arduino IDE 2 или загрузить бинарный файл сборки с помощью специальной утилиты.
Сборка прошивки из исходников
В данной процедуре нет совершенно ничего сложного, я попытаюсь построить свое объяснение таким образом, чтобы было ясно даже для тех, кто никогда до этого не работал с платформой Arduino, в любом случае в интернете есть много материалов, которые помогут разобраться в этой теме.
Итак для начала нам потребуется скачать и установить программу Arduino IDE 2, для этого качайте ее с официального сайта и устанавливайте на свой компьютер. Cкачайте файлы исходников (они находятся на главной странице проекта). Затем откройте скетч desktop_stopwatch.ino. Далее для сборки нам потребуется установить несколько сторонних библиотек, весь список приведен в таблице, на всякий случай я оставил номера версий, которые были использованы и являются совместимыми с исходным кодом, а то вдруг может оказаться, что коды библиотек окажутся несовместимыми после обновления их авторами, так что, если вдруг возникнут какие-то проблемы, то скачайте указанные версии. На момент прочтения некоторые библиотеки могут уже быть обновлены, и как принято в программистском сообществе: если первая цифра в номере версии та же, то код должен оставаться совместимым, но всегда нужно иметь в виду, что никто не обязан следовать данному принципу, он может даже не знать о нем.
| Имя библиотеки | Автор | Версия | Ссылка на репозиторий |
|---|---|---|---|
| EncButton | AlexGyver | 3.6.2 | 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, дождитесь конца процесса загрузки и установки, затем проделайте те же действия для остальных библиотек.
Далее модифицируйте код в соответствии со своими потребностями.
В строчке кода #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, с характеристиками аналогичными или более высокими.
Если плата окажется не совместимой, то код скорее всего не пройдет компиляцию, также после компиляции будет выведена информация, сколько процентов постоянной и оперативной памяти будет необходимо. Чтобы запустить сборку нажмите на верхней панели кнопку с галочкой(Verify) или сочетание клавиш Ctrl+R, если сборка прошла успешно, то будет выведено сообщение вроде этого
Как я ранее говорил, будет выведена информация с требованиями к памяти, для платы Arduino Nano необходимо 70% ПЗУ и 35% оперативной памяти. Если кроме этого выводятся сообщения об ошибках, то проверьте все проделанные ранее действия. Если все собирается без проблем, то нажмите кнопку с изображением стрелки (Upload) или Ctrl+U, начнется процесс загрузки, после его завершения устройство будет готово к работе. Как пользоваться устройством читайте в материале Инструкция по эксплуатации.
Загрузка готовой сборки
В архиве project_files.zip в папке builds находятся бинарные файлы с расширение HEX, всего присутствует 2 варианта: с применение модуля часов реального времени DS3221 (имя файла имеет суффикс «_rtc») и без него. На моем оборудовании были проблемы при наличии в модуле часов батарейки - устройство зависало при запуске, может в вашем случае все будет в порядке, в любом случае решайте сами.
Данный способ я не использовал на практике, поэтому не могу однозначно сказать как производится загрузка прошивки в микроконтроллер. Один из вариантов загрузки с помощью утилиты XLoader, руководство по использованию вы можете узнать в этой статье, также с материале описаны другие способы загрузки.
Другие варианты схемы и альтернативные микроконтроллеры
Данное устройство имеет очень простую схему и для минимальной комплектации достаточно всего трех компонентов: плата ардуино, модуль дисплея на микросхеме MAX7219 и 3 кнопки, на изображении ниже показано устройство, которое собрано на брэдборде(breadboard)
Также в показанной схеме использован аналог МК AVR, а конкретно LGT8F328P, устройство работает, но есть один нюанс, пользовательские настройки не сохранятся в постоянной памяти, так как данный МК не имеет EEPROM. Но, при желании можно использовать и его, просто необходимые настройки можно задать непосредственно в коде прошивки.
Пользовательские настройки хранятся в структуре struct SetttingsData{…}, все параметры имеют приставку схожую с той, что указана в Инструкция по эксплуатации, p1, p2 и т.д., после знака «=» введите необходимые значения параметров, затем скомпилируйте и загрузите прошивку. Изменить параметры и опробовать их можно в режиме установки пользовательских настроек, только учтите, что при повторное загрузке контроллера будут установлены начальные значения. Также для других вариантов конструкций может захотеться поместить все в подходящий корпус.
При должном умении вы можете изменить прошивку, а также добавить дополнительную периферию, для этого я оставил несколько свободных цифровых пинов, например, у меня была идея вывести разъем на заднюю стенку для подключения реле, чтобы включать звонок при срабатывания будильника, также поступали предложения добавить светочувствительный элемент, чтобы яркость дисплея подстраивалась под освещение. На самом деле вариантов апгрейда можно придумать бесчисленное количество, все определяется потребностями и материальными возможностями.
Вместо заключения
Спасибо всем, кто уделил время прочтению данных материалов, надеюсь моя разработка окажется полезной не только для меня и вы соберете свой экземпляр устройства, а лучше соберите и для себя, и в подарок для хорошего человека. Вы можете принять участие в усовершенствовании проекта, для этого в конце статьи будет указан адрес, куда вы можете присылать свои замечания и предложения, а чтобы не пропустить новые обновления подписывайтесь на Телеграм канал. Также я подумываю открыть Discord сервер для обсуждения, но в том случае, если будет соответствующий запрос.
[📧Отправить письмо] Нашли ошибку в программе, схеме устройства или в сопроводительных материалах, или у вас есть какие-либо предложения? Не стесняйтесь сообщить об этом мне.
[👍Поддержать автора] Надеюсь вы остались довольны проектом, на его создание я затратил значительное количество личного времени и средств. Разработка продуктов, а также написание сопроводительных материалов для них, поддержка сайта, все это требует значительных временных и финансовых затрат.
[📢Подписывайтесь на социальные сети] Будьте в курсе свежих обновлений. Не забудьте ознакомиться с другими проектами на этом или на моем основном сайте.