Найти тему
Электроника и жизнь

ATtiny85 и монитор порта в Arduino IDE

Всем привет! В этом статье продолжим знакомство с микроконтроллерами семейства ATtiny. В прошлой статье мы собирали удобный модуль для программирования ATtiny.

Сейчас на примере ATtiny85 я расскажу, как данный микроконтроллер может обмениваться информацией с другими устройствами, в частности с Arduino UNO, и как выводить эту информацию в монитор порта Arduino IDE.

Обмен данными между ATtiny и Arduino IDE
Обмен данными между ATtiny и Arduino IDE

Для отладки различных процессов, получения основных или промежуточных результатов работы различных функций, а так же получения информации с разных датчиков, в среде разработки Arduino IDE очень удобно использовать монитор порта. Но как быть с микроконтроллерами семейства ATtiny?

Если мы возьмем скетч Blink, проведем инициализацию серийного порта и добавим 2 функции, первая из которых будет выводить "led on", когда светодиод загорается, а вторая "led off", когда светодиод гаснет, то загрузив данный скетч в Arduino UNO и открыв монитор порта, мы увидим соответствующий результат.

Выводим запись о состоянии светодиода в монитор порта Arduino UNO
Выводим запись о состоянии светодиода в монитор порта Arduino UNO

Но, если мы переводим Arduino UNO в режим программатора, прошиваем нашу ATtiny (если она еще не прошита), и попробуем загрузить тот же скетч Blink в ATtiny, то еще на этапе компиляции, появится ошибка. Дело в том, что ATtiny, в отличие от Arduino UNO, не имеет аппаратного UART (UART - протокол приёма и передачи данных между устройствами по двум проводам). И нам придется реализовывать работу с ним программно, через стандартную для Arduino IDE библиотеку SoftwareSerial.

Ошибка при попытке загрузки скетча в ATtiny85
Ошибка при попытке загрузки скетча в ATtiny85

Обмен данными с Arduino UNO мы будем реализовывать через порты RX-TX. Это нулевой и первый пин Arduino UNO.

Добавляем к нашему скетчу Blink библиотеку SoftwareSerial.

Определяем 3 пин как RX, а 4-й пин как TX. Если смотреть даташит на ATtiny – физически, это второй и третий пины соответственно.

Распиновка ATtiny25/45/85
Распиновка ATtiny25/45/85

В функции Setup(), определяем режим работы RX на вход, а TX на выход.

И далее, проводим инициализацию нашего программного серийного порта, на той же скорости что и аппаратный в Arduino UNO, т.е. 9600.

А в теле функции loop() меняем обращение к аппаратному порту, на обращение к программному порту.

[решетка]include <SoftwareSerial.h>

[решетка]define LED_BUILTIN 0

[решетка]define rx 3

[решетка]define tx 4

SoftwareSerial softSerial(rx,tx);

// the setup function runs once when you press reset or power the board

void setup() {

pinMode(LED_BUILTIN, OUTPUT);

pinMode(rx, INPUT);

pinMode(tx, OUTPUT);

softSerial.begin (9600);

}

// the loop function runs over and over again forever

void loop() {

digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)

softSerial.println("led on");

delay(1000); // wait for a second

digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW

softSerial.println("led off");

delay(1000); // wait for a second

}

Загружаем скетч в ATtiny. Светодиод, как и положено, мигает раз в секунду. Кстати, обратите внимание, что наш скетч занимает более 2 КБ flash-памяти ATtiny.

Сколько места занимает скетч в памяти ATtiny85
Сколько места занимает скетч в памяти ATtiny85

Это всё из-за подключения библиотеки SoftwareSerial. Т.е. в данном случае, использовать ATtiny13 не получится, просто не хватит памяти. Поэтому я и использую ATtiny85. Еще можно использовать ATtiny45. У него 4 КБ flash-памяти. Вполне достаточно для размещения этого скетча.

Теперь отсоединяем нашу плату от Arduino UNO.

Если Вы собирали программатор на макетной плате, как я своей первой статье о ATtiny - ATtiny13 и ATtiny85. Обзор и программирование с помощью Arduino, то нужно не забыть удалить конденсатор.

Выводим Ардуино UNO из режима программатора, выбрав в примерах и загрузив пустой скетч.

Выбор и загрузка пустого скетча в Arduino UNO
Выбор и загрузка пустого скетча в Arduino UNO

Далее соединяем второй пин ATtiny с нулевым пином Ардуино (rx), а третий пин ATtiny с первым пином Ардуино (tx). Важный момент, при соединении двух устройств по данной схеме, т.е. с использованием rx-tx портов, нужно запитать оба устройства от одного источника питания. Т.е. у нас не получится отдельно запитать Ардуино через USB-порт компьютера, а ATtiny через usb-порт нашего самодельного программатора. Придется отключить наш светодиод и соединить соответствующие пины ATtiny, а именно четвертый и восьмой, с пинами GND и 5В Ардуино, соответственно.

Схема соединения ATtiny и Arduino UNO для обмена данных
Схема соединения ATtiny и Arduino UNO для обмена данных

Возвращаемся к скетчу Blink, открываем монитор порта и видим появляющиеся раз в секунду записи о включении и выключении светодиода.

Вывод информации отправляемой ATtiny85 в монитор порта Arduino UNO
Вывод информации отправляемой ATtiny85 в монитор порта Arduino UNO

Чтобы у нас еще и синхронно мигал светодиод, соединим его ножку с припаянным резистором на 220 ом со свободным пином GND Ардуино. А другую ножку с 5 пином ATtiny.

Светодиод мигает и выводится информация о его состоянии в монитор порта.

Светодиод и монитор порта с выводом информации о состоянии светодиода
Светодиод и монитор порта с выводом информации о состоянии светодиода

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

Ниже размещено видео по материалам данной статьи.

_________________________________________________________

Спасибо, что дочитали до конца! Если статья понравилась, нажмите, пожалуйста, соответствующую кнопку. Если интересна тематика электроники и различных электронных самоделок, подписывайтесь на канал. До встречи в новых статьях!

Другие публикации по теме:

  • ATtiny13 и ATtiny85. Обзор и программирование с помощью Arduino.
  • Что такое фоторезистор? Подключение фоторезистора к ATtiny13 и управление светодиодом.
  • Создаем удобный модуль для программирования микроконтроллеров ATtiny.
  • Регулируемое фотореле на ATtiny13 для уличного освещения своими руками.