Пришло время избавиться от платы ардуино. Не всегда удобно использовать громоздкую плату ардуино в схемах, особенно когда в корпусе нет места для данной платы. Поэтому я решил поэкспериментировать с микроконтроллером (МК) ATMEGA 328, при этом использовать штатное ПО «Ардуино» для написания программы и программирования микроконтроллера.
За основу я взял раннюю разработку «Автомат для осушителя воздуха на Arduino». С этого проекта взял прошивку контроллера, а схему подключения ардуино нано переработал в единую схему (на одной плате) на микроконтроллере Atmega 328. Для обновления прошивки решил использовать UART-интерфейс.
Схема Устройства изображена на рисунке.
Архивы с файлами, рассмотренные выше можно скачать с яндекс диска.
Напишите отзыв.
К разъёму «Экран» подключается экран ST7789 240х240 (кстати, если экран будет некорректно отображать информацию – необходимо добавить резисторы 2.2кОм в разрыв линий DC, RES, SDA, SCL, для избежание перегрузки портов драйвера экрана). Разъём «Прогр» нечто иное как разъём подключения к интерфейсу UART. Разъём «Датч» - подключение датчика влажности и температуры DHT11. Через разъём «Кн свет» подключены – кнопка «Пуск» и светодиоды зелёный и жёлтый (напряжения на светодиодах используются как управляющие) на блоке управления осушителя, кнопка режим (переключение режимов работы осушителя). Разъём «Пит» для подключения питания устройства.
Ниже на рисунке приведена разводка печатной платы.
Печатная плата крепиться к экрану непосредственно с помощью разъёма «Экран». Схема и разводки платы можно скачать с яндекс диска по кнопке внизу статьи.
В данной схеме есть упущение – на разъёме UART отсутствует вывод «DTR», отсутствие данного вывода можно компенсировать кнопкой «Reset» однако и кнопки такой в схеме нет. Выход из положения - подпаять проводками (на время программирования контроллера) кнопку между корпусом (минусовая шита) и выводом 29 микроконтроллера.
Загрузчик запускается первым после сброса микроконтроллера и опрашивает портов ввода/вывода данных на предмет программирования микроконтроллера, при отсутствии сигналов с программатора загрузчик передаёт управление основной программе. Поэтому кнопку «Reset» нужно нажать перед стартом данных от программатора (здесь понадобиться небольшая сноровка при нажатии :-) ).
Можно также временно подключить вывод «DTR» программатора к выводу 29 микроконтроллера «Reset» через разделительный конденсатор 0,1мкФ (тогда жать кнопку не придётся :-) ).
И ещё один момент – не следует сразу впаивать микроконтроллер в схему. В новом микроконтроллере отсутствуют какие-либо программы, а это означает, что в контроллер необходимо сначала записать загрузчик.
Для записи прошивки загрузчика нам понадобится:
- Программатор USBASP;
- Штатное ПО Ардуино.
В принципе с помощью программатора можно запрограммировать контроллер прямо на плате. Для этого нужно соединить проводами разъём ISP интерфейса программатора с выводами микроконтроллера (МК):
- MISO(1) к выводу МК(16);
- VCC(2) к выводу МК(4);
- SCK(3) к выводу МК(17);
- MOSI(4) к выводу МК(15);
- RST(5) к выводу МК(29);
- GND(6) к выводу МК(5).
Но для моей разработки я создал свой UART программатор. С помощью этого программатора можно проверить работоспособность загрузчика. На программаторе также имеется разъём ISP к нему подключается программатор USBASP. На программаторе имеется панелька для установки переходника TQFP32 QFP32-DIP32.
Схема программатора приведена на рисунке ниже.
Схема состоит из USB – UART (IC1) преобразователя, стабилизатора питания (5В), панельки зажима 3М (ZX1), кварцевого резонатора 16МГц (для работы МК).
Разъём ISP подключён через панельку – переходник к вышеописанным выводам МК.
Разъём UART позволяет программировать внешние устройства через UART интерфейс (для этого необходимо извлечь МК из панельки).
Светодиоды отображают - питание 5В, RX и TX передачи данных, сигнал синхронизации SCK.
Разводка печатной платы изображена на рисунке ниже.
Схема и разводки платы можно скачать с яндекс диска по кнопке внизу статьи.
Драйвер для программатора также можно скачать с яндекс диска.
При подключении программатора в системе он определяется как «USB Serial Port». Если драйвер не определился, то необходимо установить драйвер из архива.
Также возможно конфигурировать микросхему FT232RL с помощью программы FT_Prog (программа также находится в архиве). Пользоваться программой нужно в крайнем случае если будут проблемы с корректной работой программатора.
Приступим непосредственно к программированию микроконтроллера.
В данном режиме программатор UART с установленным контроллером Atmega 328P действует как отладочная плата. К разъёму «ISP» данной платы подключаем USBASP программатор (упомянутый выше). Сам же USBASP программатор подключаем через USB к компьютеру.
Запускаем штатное программное обеспечение Ардуино. Устанавливаем следующие настройки «Инструменты»:
- Плата: “Arduino Nano”;
- Процессор: “ATmega328P (Old Bootloader);
- Программатор: “USBasp”.
Нажимаем «Инструменты» → «Записать Загрузчик».
На отладочной плате мигает светодиод SCK который сигнализирует об передачи данных. После прошивки светодиод начнёт мигать реже, что говорит о работе загрузчика.
Теперь можно проверить работает ли загрузчик штатным образом.
Подключаем «Программатор UART» (здесь устройство работает как программатор) к компьютеру через USB. Устанавливаем следующие настройки «Инструменты»:
- Плата: “Arduino Nano”;
- Процессор: “ATmega328P (Old Bootloader);
- Порт: (какой определился системой);
- Программатор: “AVR ISP”.
Скетч лучше записать подготовленный для данной схемы (в нашем случае скетч «Осушитель»).
Нажимаем стрелку «Загрузка». И отслеживаем загрузку по миганию светодиодов RX и TX.
Если программа Ардуино завершила загрузку без ошибок значит загрузчик работает нормально. Впаиваем микросхему в разрабатываемую плату (Осушителя) и поверяем работоспособность устройства.
Для обновления прошивки на разрабатываемой плате, необходимо объединить разъём UART на программаторе с разъёмом UART на разрабатываемой плате.
В панельке программатора не должно быть микроконтроллера.
Если не желаете использовать кнопку Reset на разрабатываемой плате, то объедините пин 2 разъёма DTR на программаторе с 29 пином МК ATmega328 разрабатываемой платы.
Открываем в программе ардуино новую версию сктча и производим прошивку штатным образом (Нажимаем стрелку «Загрузка» :-) ).
Ну вот на этом всё.