2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Предисловие
Недавно я разработал несколько проектов IoT на основе ESP8266 и обнаружил, что основной процессор изо всех сил пытается выполнять все задачи, которые мне нужно было решать, поэтому я решил распределить некоторые из менее важных действий на другой микроконтроллер (ы) в таким образом освобождая ESP8266, чтобы он мог выполнять свою работу в качестве устройства IoT.
Учитывая, что я хотел опубликовать свой проект для как можно более широкой аудитории, я решил использовать Arduino IDE в качестве предпочтительной платформы для разработки, так как у нее такое широко поддерживаемое сообщество.
Ограничения проектирования
Чтобы обеспечить разумное количество целевых устройств, позволяющих выбрать подходящий микроконтроллер для конкретного приложения, я остановился на следующих частях Atmel; ATMega328P, ATTiny84 и ATTiny85. Чтобы ограничить сложность необходимого программиста, я ограничил выбор часов внутренними для всех устройств и 16 МГц внешними только для ATMega328P и ATTiny84.
Далее следует сборник заметок по программированию с помощью Arduino и описание того, как я собрал простой программатор на основе Arduino Uno для этих устройств (рисунки выше).
Какие запчасти мне нужны?
Для сборки программатора вам потребуются следующие части
- 1 шт. На Arduino Uno
- 2 28-контактных DIP-разъема с нулевым усилием вставки (ZIF) (для размещения ATMega328P, ATTiny85, ATTiny84)
- 1 от прототипа щита Arduino (мой здесь;
- 2 выключенных светодиода 5 мм
- 2 резистора 1K
- 1 резистор 10 кОм
- Керамические конденсаторы 4 шт., 22 пФ
- 2 кристалла с частотой 16 МГц
- 3 керамических конденсатора по 0,1 мкФ
- 1 электролитический конденсатор емкостью 47 мкФ
- 1 электролитический конденсатор емкостью 10 мкФ
- Проволока разной длины.
Какое программное обеспечение мне нужно?
IDE Arduino 1.6.9
Какие навыки мне нужны?
- Знание Arduino IDE
- Некоторые знания электроники и пайки
- Большая ловкость рук
- Груз терпения и хорошего зрения
Темы охватывали
- Общее введение в программирование микроконтроллеров Atmel
- Интернет-провайдер или загрузчик: все это немного сбивает с толку
- Обзор схемы
- Настройка вашего программиста
- Использование вашего Arduino ISP Programmer
- Разработка кода для вашей целевой системы
- Попался
- Заключение
- Использованные ссылки
Отказ от ответственности
Как всегда, вы используете эти инструкции на свой страх и риск, и они не поддерживаются
Шаг 1. Общее введение в программирование микроконтроллеров Atmel
Доступны два метода программирования микроконтроллеров Atmel;
- В системном программировании (ISP),
- Самостоятельное программирование (через загрузчик).
Первый метод (1) напрямую программирует микроконтроллер через интерфейс SPI после первого сброса устройства. Если не указано иное, скомпилированная исполняемая исходная программа записывается в устройство постепенно в память кода, откуда она выполняется при запуске. Существует множество устройств ISP, способных программировать устройства Atmel, некоторые из которых (рис. 1); AVRISPmkII, Atmel-ICE, Olimex AVR-ISP-MK2, Olimex AVR-ISP500. На рисунке 2 показано, как устройство ISP подключается к ATMega328P (со странным обозначением ICSP) на плате Arduino Uno R3 (на рисунке 3 показан вывод ISP). Если также можно запрограммировать микроконтроллер Atmel через его интерфейс SPI, используя Arduino Uno в качестве ISP (рисунок 4), здесь Uno используется для программирования ATMega328P.
В последнем методе (2) используется небольшая заглушка кода, известная как «загрузчик», постоянно находящаяся в памяти исполняемого кода (обычно заблокированная для предотвращения случайной перезаписи рис. 5). Этот код выполняется первым делом при включении питания или сбросе устройства и позволяет микроконтроллеру перепрограммировать себя с новым кодом, полученным через один из его интерфейсов от внешнего по отношению к нему источника. Метод загрузчика используется IDE Arduino для перепрограммирования Arduinos, отображаемого как порт связи USB на ПК (или MAC, Linux и т. Д., Рис. 6), а в случае Arduino Uno связывается с устройством Atmel через него. последовательный интерфейс на выводах 2 и 3 микросхемы ATMega328P. Также Arduino Uno (с удаленным микроконтроллером ATMega328P) можно использовать для программирования ATMega328P с помощью метода загрузчика, эффективно действующего как устройство USB-последовательного адаптера (рис. 7).
Что такое переходник с USB на последовательный?
Адаптер USB-последовательный порт - это аппаратное обеспечение, которое подключается к USB-порту вашего ПК и выглядит как последовательный COM-порт (наследие с более ранних времен, когда компьютеры использовали стандарт последовательной связи, известный как EIA-232, V24 или RS232), позволяющий вам отправлять и получать последовательные данные на тех же электрических уровнях микроконтроллера. Когда вы выбираете Tools -> Port -> COMx в Arduino IDE, вы подключаете свой компьютер к Arduino.
Такое устройство иногда называют FTDI (рис. 8, что на самом деле является торговой маркой) или CH340G и т. Д. Подключение USB к последовательному порту на Arduino uno достигается через ATMega16U2-MU (R) IC ZU4, как на схеме Arduino. ниже.
Для наглядности на рисунке 9 показаны два устройства Atmel и их соответствующие разъемы ISP на Arduino Uno R3.
Примечание 1. Если вы решите пойти по пути устройства FTDI, убедитесь, что вы покупаете его у надежного продавца, так как на рынке было много дешевых поддельных устройств, которые вышли из строя после применения обновления Windows.