Презентация Лекция 7

Arduino представляет собой линейку электронных блоков-плат, которые можно подключать к компьютеру по USB, а в качестве периферии — любые устройства: от светодиодов до механизмов радиоуправляемых моделей и роботов.

Программы для него пишутся на простом и интуитивно понятном C-подобном языке Wiring (с возможностью подключения сторонних библиотек на C/C++, например, для управления LCD-дисплеями или двигателями), компилируются и загружаются в устройство одной кнопкой, после чего вы тут же получаете работающий автономный гаджет.

Никакого ассемблера, никаких лишних проводов и дорогих деталей и программаторов — чистое творчество, включай и работай!

1 Применение

После короткого рассказа друзьям и знакомым про Arduino («это типа электронного конструктора, микро-ЭВМ, в который можно загрузить любую программу и получить любое другое устройство») самый часто задаваемый вопрос: «А зачем это всё?» или «Какая мне от этого выгода?»

Скучные люди, не правда ли? Неужели среди ваших знакомых нет ни одного радиолюбителя, а может, вы и сами радиолюбитель?

Применение Arduino очень простое — не забавы ради, а развития мозга для. Интересно же линуксоидам ковыряться в коде ядра? Какая от этого польза? Почему бы вам не заняться «железным» (в противовес «софтовому») творчеством?

Вот прямо сейчас рядом со мной сидит коллега-дизайнер и разбирается… с нейронными сетями. В общем, что говорить, забыт дух технического творчества, забыты радиокружки и авиамодельные клубы. Все только сидят у своих компьютеров и сделать ничего путного в железе, кроме как воткнуть вилку в розетку, не могут :)

Соберите свой веб-сервер, цветомузыкальную установку или прикольного робота!

Сообщество любителей Arduino уже знает об успешных примерах:

  • GPS-трекер с записью на SD-карту,
  • простой аудиоплеер,
  • Twitter-дисплей,
  • электронные игры с дисплеем и тачскрином...

Попробуйте купить радиодеталей и сделать что-то своё! Есть даже готовый набор для создания четырёхъядерного Arduino-кластера...

2 Какие бывают платы Arduino?

Существует несколько моделей плат Arduino, среди них:

  • Arduino Uno

    Является прародителем всех Arduino, поддерживает множество дополнительных плат (шилдов), которые расширяют возможности устройства.

  • Arduino Nano

    Популярная модель с большим количеством цифровых и аналоговых портов (14 цифровых, 6 из которых имеют поддержку ШИМ, и 8 аналоговых).

  • Arduino Mega

    Одна из самых мощных моделей семейства, базируется на микроконтроллере Atmega2560. Поддерживает до 54 цифровых пинов (12 из которых имеют поддержку ШИМ) и 12 аналоговых.

  • Arduino Due

    Самая мощная модель семейства, базируется на микроконтроллере Atmel SAM3X8E ARM Cortex-M3. Обладает большим количеством постоянной и оперативной памяти (512 и 96 Кб соответственно).

  • Arduino Pro Mini

    Устройство с 14 цифровыми портами (6 из которых могут работать ШИМ-выходами) и 8 аналоговыми.

  • Arduino Leonardo

    Идентична по размерам с Arduino Uno, но использует другой микроконтроллер (Atmega32u4). Имеет больше цифровых и аналоговых портов (20 (7 из которых ШИМ) и 12).

  • Arduino LilyPad

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

3 Микроконтроллер vs Компьютер

1. Основные отличия

ХарактеристикаМикроконтроллер (Arduino)Компьютер (PC, Raspberry Pi)
Операционная системаНетЕсть (Windows, Linux, macOS)
ПроцессорОдноядерный, маломощныйМногоядерный, высокопроизводительный
ОЗУ (RAM)КилобайтыГигабайты
Хранение данныхВстроенная флеш-память (очень мала)HDD, SSD, SD-карта (гигабайты и больше)
Запуск программТолько одна загруженная программаЛюбые приложения (браузеры, игры, редакторы)
Порты ввода-выводаGPIO, I2C, UART, SPI, PWM, аналоговые входыHDMI, USB, Ethernet, Wi-Fi, Bluetooth, GPIO
Интерфейс пользователяНет (управляется кодом)Графический интерфейс, консоль
МногозадачностьНетЕсть
ЭнергопотреблениеОчень низкоеВыше, зависит от нагрузки

2. Как выбрать?

  • Микроконтроллер (Arduino, ESP32, STM32) подходит для:
    • Управления датчиками, моторами, светодиодами.
    • Автоматизации процессов (умный дом, системы контроля).
    • Проектов с низким энергопотреблением.
    • Робототехники и встраиваемых систем.
  • Компьютер (PC, Raspberry Pi) подходит для:
    • Запуска полноценных программ и многозадачности.
    • Работы с сетью, мультимедиа, интернетом.
    • Использования в качестве сервера или рабочей станции.
    • Разработки и тестирования сложных алгоритмов.

Если нужно управлять электроникой, лучше выбрать микроконтроллер. Если требуется запускать программы и работать в ОС, нужен компьютер.

4 Программирование в Ардуино

Arduino – это платформа для создания электронных устройств, основанных на микроконтроллерах. Она позволяет быстро и легко разрабатывать проекты в области автоматизации, робототехники, интернета вещей и других сфер.

Для программирования плат Arduino используется Arduino IDE – удобная среда разработки, которая поддерживает язык Wiring (основанный на C/C++).

5 Arduino IDE

Arduino IDE – программа для написания и загрузки прошивки в плату, скачать можно с официального сайта.

Внимание! Перевод языка страницы в браузере ломает кнопки!

На данный момент классическая версия называется Legacy IDE (1.8.X), так как вышла новая IDE v2. Новичкам рекомендуется начать с версии 1.8.X.

Как скачать? Перед загрузкой вам предложат пожертвовать на развитие проекта. Можно отказаться и нажать JUST DOWNLOAD (только скачать).

Либо сразу перейти по прямой ссылке и скачать версию 1.8.19.

Arduino IDE 1
Arduino IDE 1
Arduino IDE 2
Arduino IDE 2

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

  • Windows 7 или выше
  • Linux / MacOS

Если у вас Windows XP, придётся установить версию 1.6.13, так как более свежие версии:

  • Будут тормозить или не запустятся.
  • Не поддерживают некоторые библиотеки.
  • Не работают с платами ESP8266.

Рекомендуется обновить систему до Windows 7 или выше!

Драйвер

Во время установки Arduino IDE программа попросит разрешения установить драйвера от неизвестного производителя, нужно согласиться на установку всего предложенного.

Arduino IDE 2
Arduino IDE 2

Первое подключение

Перед подключением к компьютеру рекомендуется провести визуальный осмотр платы на предмет дефектов пайки компонентов.

Что можно встретить (в порядке фотографий):

  • Замкнутые пины (часто встречается на дешёвых платах, паяются вручную).
  • Неприпаянная нога компонента – возможен плохой контакт.
  • "Торчащие" компоненты (резисторы, конденсаторы), припаянные только с одной стороны.
  • Смещение компонентов – могут быть проблемы с работой схемы.
  • "Сопля" между ногами компонента – может вызвать короткое замыкание.
Arduino IDE 2
Arduino IDE 2
Arduino IDE 2
Arduino IDE 2

Важно! Плату с обнаруженным дефектом не рекомендуется подключать к компьютеру! Всё можно исправить паяльником, если не умеете сами — попросите того, кто умеет.

6 Реакция на подключение питания

Как понять, что плата работает корректно? Рассмотрим на примере Arduino Nano/Uno:

Нормальное поведение платы при подключении USB:

  1. Загорится светодиод PWR – это означает, что питание подано.
  2. Если плата новая и на ней прошит загрузчик (он обязан быть прошит), однократно мигает светодиод L.

Примечание: Светодиоды могут быть разных цветов, это зависит от производителя.

Прошитая плата (новая) обычно ведёт себя так:

  • Светодиод L продолжает мигать раз в секунду (или дважды в секунду) – это стандартная прошивка "Blink".
  • При нажатии кнопки RESET (единственная кнопка на плате) светодиод L мигает однократно, сигнализируя о завершении работы загрузчика.

Если плата ведёт себя иначе:

  • Для новой платы это может быть заводской брак.
  • Если плата уже использовалась и паялась – возможна ошибка подключения или проблемы с прошивкой.

Драйвер USB контроллера

В своих проектах я использую «Ардуино-совместимые» китайские платы, у которой для подключения по USB используется контроллер CH340/CH341. Чтобы он распознавался компьютером, нужно установить драйвер.

Настройка и прошивка

Плата подключается к компьютеру по USB, после чего должны замигать светодиоды. Если этого не произошло, возможны следующие причины:

  • Неисправен USB-кабель – попробуйте другой.
  • Неисправен USB-порт компьютера – подключите к другому порту.
  • Неисправен USB-порт Arduino – попробуйте другую плату.
  • Попробуйте другой компьютер, чтобы исключить часть проблем.
  • Попробуйте другую плату (желательно новую).
  • Сгорел входной диод по линии USB (из-за короткого замыкания при сборке).
  • Плата полностью вышла из строя (из-за неправильного подключения питания или замыкания).

После подключения компьютер издаст характерный сигнал обнаружения нового устройства. Если это первое подключение, появится окно “Установка нового оборудования”.

Если этого не произошло:

  • Проверьте предыдущий список неисправностей.
  • Кабель должен быть data-кабелем, а не “зарядным”.
  • Кабель лучше подключать напрямую в компьютер, а не через USB-хаб.
  • Не установлены драйверы Arduino – установите их через Arduino IDE или вручную.

В списке портов (Arduino IDE → Инструменты → Порт) должен появиться новый COM-порт (обычно COM3). Если его нет, возможны следующие причины:

  • См. предыдущий список неисправностей.
  • Некорректно установлен драйвер USB-контроллера Arduino.
  • Проверка модели чипа USB-контроллера:
    • Переверните плату и найдите «узкую» микросхему.
    • Если на ней написано CH341 – установите драйвер по инструкции.
    • Если FT232R – также установите соответствующий драйвер.
    • Если надпись отсутствует – откройте Диспетчер устройств, найдите “Другие устройства”.
    • Если при подключении платы появляется FT232R USB UART, установите драйвер.

Если список портов вообще неактивен:

  • Драйвер Arduino установлен некорректно – повторите установку.
  • Возникла системная ошибка – обратитесь к знакомому компьютерщику (или экзорцисту 😄).

Выбор и настройка платы (Arduino NANO)

Выбираем соответствующую плату в Инструменты → Плата. Большинство проектов выполняются на Arduino Nano.

Если у вас Nano:

  • Китайские платы используют "старый" загрузчик, поэтому выбираем:

    Инструменты → Процессор → ATmega328p (Old Bootloader).

  • Если пришла плата с новым загрузчиком, прошивка не загрузится (будет минутная загрузка и ошибка).
    • В этом случае попробуйте сменить пункт Процессор → ATmega328p.

Теперь выбираем порт, к которому подключена плата. COM1 – системный порт, его не выбираем. Должен появиться ещё один порт (обычно COM3).

Arduino IDE 2
Arduino IDE 2

Загрузка прошивки

Процесс загрузки прошивки состоит из двух этапов:

  1. Компиляция – проверка кода на ошибки.
    • Запускается нажатием кнопки с галочкой в верхнем меню.
    • Можно компилировать код даже без подключения платы.
  2. Загрузка в микроконтроллер.
    • Запускается кнопкой со стрелочкой.
    • Происходит компиляция, затем загрузка кода в плату.

Проверка работы платы

Вставьте следующий код в Arduino IDE, полностью заменив содержимое файла:

constexpr int LED_PIN = 5;
 
void setup() {
  // Настраиваем пин со светодиодом в режим выхода
  pinMode(LED_PIN, OUTPUT);
}
 
void loop() {
  // Зажигаем светодиод
  digitalWrite(LED_PIN, HIGH);
  // Ждём 500 мс
  delay(500);
  // Гасим светодиод
  digitalWrite(LED_PIN, LOW);
  // Ждём 500 мс
  delay(500);
}

7 Об особеностях программ

В языке C++ программы обычно начинаются с main(). Однако в Arduino компилятор автоматически создаёт эту функцию.

Программист работает с двумя обязательными функциями:

main(){
    void setup(){
    }
    void loop(){
    }
}

Важно заметить, что обязательную в С++ функцию main() процессор Arduino создаёт сам. И результатом того, что видит программист есть:

void setup(){
}
void loop(){
}

setup()

  • Выполняется один раз при старте микроконтроллера.
  • Используется для начальных настроек:
    • Инициализация портов.
    • Подключение модулей.
    • Настройка параметров работы.

loop()

  • Выполняется постоянно в бесконечном цикле.
  • Здесь прописываются основные действия программы, которые микроконтроллер должен выполнять на протяжении всей работы.

8 Что такое пин?

Пин (Pin) – это физический контакт (вывод) на плате Arduino, к которому можно подключать различные устройства:

  • Светодиоды
  • Датчики
  • Кнопки
  • Двигатели и т. д.

Типы пинов в Arduino

  1. Цифровые (Digital Pins)
    • Обозначены как D0, D1, D2 … D13.
    • Могут находиться в двух состояниях:
    • HIGH (1) – подаётся напряжение 5V (или 3.3V для некоторых моделей).
    • LOW (0) – напряжение 0V.
    • Используются для работы с кнопками, реле, светодиодами и другими устройствами.
  2. Аналоговые (Analog Pins)
    • Обозначены как A0, A1, A2 … A5.
    • Считывают аналоговые значения (напряжение от 0V до 5V).
    • Используются для работы с датчиками, потенциометрами и другими аналоговыми устройствами.
  3. Пины питания (Power Pins)
    • GND (Ground) – общий провод, ноль.
    • 5V, 3.3V – питание для подключаемых модулей.
    • VIN – питание платы при использовании внешнего источника.
  4. Специальные пины
    • PWM (ШИМ) – ~ – работают как цифровые, но могут генерировать аналогоподобный сигнал.
    • TX/RX – используются для обмена данными через Serial (UART).
    • SCL/SDA – предназначены для подключения I²C-устройств.

Пример с кнопочкой

После подключения схемы, давайте разберёмся с самой программой. После подключения схемы, давайте разберёмся с самой программой. В этом примере мы будем управлять светодиодом на 5 пине.

int Led = 5; 
int Button = 2; // номер пина, подключенного к кнопке
void setup(){
    pinMode(Led, OUTPUT); 
        pinMode(Button, INPUT);
}
void loop(){
        if(digitalRead(Button) == HIGH){ // если кнопка нажата
                digitalWrite(Led, HIGH); // светодиод горит
        }
        else{ // если не нажата (иначе)
                digitalWrite(Led, LOW); // светодиод не горит
        }   
}

Этот пример достаточно хороший. Но, а если нам надо выполнять действие не по удержанию, а по нажатию. Тогда мы немного изменим наш код. Мы добавим ещё две переменных, некие флаги, которые будут следить за некоторыми процессами. И код выглядит уже так:

bool But = true; // проверка на кнопку
bool Light = false; // проверка на свет
int Led = 5; 
int Button = 2; // номер пина, подключенного к кнопке
void setup(){
    pinMode(Led, OUTPUT); 
        pinMode(Button, INPUT);
}
void loop(){
        bool Now = digitalRead(Button); // состояние кнопки прямо сейчас
        if(But && !Now)
        {
                delay(10); // небольшая задержка
                Now = digitalRead(Button);
                if(!Now)
                {
                        Light = !Light;
                        digitalWrite(Led, Light);
                }
        }
        But = Now;
}

В этом коде Вы могли заметить Light = !Light. Сейчас объясню. Мы считываем была ли кнопка опущена. Далее небольшой задержкой определяем не было ли это ошибкой и если кнопка действительно была нажата инвертируем сигнал светодиода. То есть если светодиод горел – он перестанет гореть. И наоборот.

Дребезг контактов

Очень хорошо, когда всё идеально. Но к сожалению всё на так и идеально. И с кнопками та же проблема. Механические контакты кнопки не могут замыкаться/размыкаться мгновенно. Это называется «дребезг контактов». Как это понять. На вход микроконтроллера поступают импульсы. Но вместо того чтоб просто получить 1 или 0 из-за данного явления на вход поступает целая кучка импульсов. Это может создать ложные сигналы. И именно поэтому мы делаем небольшую задержку в нашей программе. На скорость это особо не повлияет, но обеспечит нас от ошибки.

Arduino IDE 2
Arduino IDE 2

9 Настройка зловещего глаза

Рерурс для настройки глаза

Тренажёр · Редактор LED-матрицы 8×8

Те же кадры «зловещего глаза», что и в задании: клик по ячейке включает или выключает светодиод, ниже — шестнадцатеричный код кадра для прошивки. Кнопка «Пуск» проигрывает анимацию.

10 Источники

  1. Начало работы с Iskra Nano
  2. Arduino для начинающих. Часть 2
  3. Гайд для новичков Arduino
Навигация
Содержание