Diy

Начало работы с Arduino: руководство для начинающих

Начало работы с Arduino: руководство для начинающих

Arduino — это платформа для создания прототипов электроники с открытым исходным кодом, и она является одной из самых популярных в мире — за исключением, возможно, Raspberry Pi Продав более 3 миллионов единиц (и еще больше в виде устройств-клонов сторонних производителей): что делает его таким хорошим и что можно сделать с ним?

Что такое Arduino?

Arduino основан на простом в использовании, гибком, аппаратном и программном обеспечении. Он создан для художников, дизайнеров, инженеров, любителей и всех, кто интересуется программируемой электроникой.

Arduino

Arduino воспринимает окружающую среду, считывая данные с различных кнопок, компонентов и датчиков. Они могут влиять на окружающую среду, управляя светодиодами, двигателями , сервоприводами, реле и многим другим.

Проекты Arduino могут быть автономными или взаимодействовать с программным обеспечением, работающим на компьютере (для этого наиболее популярным является обработка ). Они могут общаться с другими Arduinos, Raspberry Pis, NodeMCU. или почти все остальное. Обязательно прочитайте наше сравнение микроконтроллеров стоимостью 5 для подробного сравнения различий между этими микроконтроллерами.

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

В дополнение к простоте Arduino, это также недорогой, кроссплатформенный и с открытым исходным кодом. Arduino Uno (самая популярная модель) основана на микроконтроллерах Atmel ATMEGA 16U2. Выпускается много разных моделей, которые различаются по размеру, мощности и спецификациям, поэтому взгляните на наше руководство по по покупке приобрести для всех различий.

Планы для плат публикуются под лицензией Creative Commons , поэтому опытные любители и другие производители могут свободно создавать свою собственную версию Arduino, потенциально расширяя ее и улучшая ее (или просто копируя напрямую, что приводит к распространению низкой стоимости). Доски Arduino мы находим сегодня).

Что вы можете сделать с Arduino?

Arduino может сделать ошеломляющее количество вещей. Они являются идеальным выбором для большинства 3D-принтеров Их низкая стоимость и простота использования означают, что тысячи производителей, дизайнеров, хакеров и создателей сделали удивительные проекты. Вот только некоторые из проектов Arduino, которые мы сделали здесь в :

Что внутри Arduino?

Хотя существует много различных типов плат Arduino, это руководство сфокусировано на модели Arduino Uno . Это самая популярная доска Arduino. Так что же делает эту штуку галочкой? Вот технические характеристики:

  • Процессор: 16 МГц ATmega16U2
  • Флэш-память: 32 КБ
  • Рам: 2 КБ
  • Рабочее напряжение: 5 В
  • Входное напряжение: 7-12 В
  • Количество аналоговых входов: 6
  • Количество цифровых входов / выходов: 14 (из них 6 с широтно-импульсной модуляцией — ШИМ )

Спецификации могут показаться мусором по сравнению с вашим настольным компьютером, но помните, что Arduino — это встраиваемое устройство, которое требует гораздо меньше информации для обработки, чем ваш настольный компьютер. Это более чем способно для большинства проектов электроники.

Еще одна замечательная особенность Arduino — это возможность использовать так называемые «щиты» или надстройки. Хотя щиты не будут рассмотрены в данном руководстве, они являются действительно изящным способом расширить возможности и функциональность вашего Arduino .

Что вам нужно для этого руководства

Ниже вы найдете список покупок компонентов, которые понадобятся вам для данного руководства для начинающих. Все эти компоненты должны стоить менее 50 долларов. Этот список должен быть достаточным, чтобы дать вам хорошее понимание основ электроники и иметь достаточно компонентов для создания некоторых довольно интересных проектов с использованием этого или любого другого руководства Arduino. Если вы не хотите выбирать каждый компонент, вы можете подумать о приобретении стартового комплекта в стартовый комплект вместо этого.

Если вы не можете получить конкретное значение резистора, обычно подойдет что-то максимально близкое.

Обзор электрических компонентов

Давайте посмотрим, что именно представляют собой все эти компоненты, что они делают и как они выглядят.

макетировать

Используемые для создания прототипов электронных схем, они предоставляют временные средства соединения компонентов вместе. Макеты представляют собой блоки из пластика с отверстиями, в которые можно вставлять провода. Отверстия расположены рядами по пять человек. Если вы хотите изменить схему цепи, вытащите провод или часть из отверстия и переместите его. Многие макеты содержат две или четыре группы отверстий, проходящих по длине платы вдоль боковых сторон, и все они соединены — обычно они предназначены для распределения энергии и могут быть помечены красной и синей линией.

макетировать

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

светодиоды

LED обозначает светоизлучающий диод . Они являются очень дешевым источником света и могут быть очень яркими, особенно когда они сгруппированы вместе. Они могут быть приобретены в различных цветах, не очень жарко и длятся долго. У вас могут быть светодиоды на телевизоре, приборной панели автомобиля или на лампах Philips Hue .

светодиоды

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

Фото резистор

Фоторезистор ( фотоэлемент или светозависимый резистор ) позволяет вашему Arduino измерять изменения освещенности. Вы можете использовать это, например, для включения компьютера в дневное время.

Фото резисторы

Тактильный переключатель

Тактильный переключатель — это в основном кнопка. Нажатие на него завершит цепь и (обычно) изменится с 0 В до + 5 В. Arduinos может обнаружить это изменение и ответить соответствующим образом. Они часто кратковременны — это означает, что они «нажимаются» только тогда, когда их держит палец. После того, как вы отпустите, они вернутся в состояние по умолчанию («не нажата» или выключена).

Тактильный переключатель

Пьезо-динамик

Пьезо-динамик — это крошечный динамик, который издает звук от электрических сигналов. Они часто резкие и жестяные, и звучат совсем не так, как настоящий оратор. Тем не менее, они очень дешевые, и их легко программировать. Наша игра Buzz Wire использует одну из них, чтобы сыграть тему песни «Летучий цирк» Монти Пайтона .

Piezo

резистор

Резистор ограничивает поток электричества. Это очень дешевые компоненты, а также один из основных компонентов любительских и профессиональных электронных схем. Они почти всегда необходимы для защиты компонентов от перегрузки. Они также необходимы для предотвращения короткого замыкания, если Arduino + 5V подключается прямо к земле. Короче говоря: очень удобно и абсолютно необходимо.

Резисторы

Проволочные перемычки

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

Проволочные перемычки

Настройка вашего Arduino

Перед началом любого проекта вам нужно, чтобы ваш Arduino говорил с вашим компьютером. Это позволяет вам писать и компилировать код для выполнения Arduino, а также дает возможность вашему Arduino работать вместе с вашим компьютером.

Установка программного пакета Arduino в Windows

Перейдите на сайт Arduino и загрузите версию программного обеспечения Arduino, подходящую для вашей версии Windows. После загрузки следуйте инструкциям по установке интегрированной среды разработки Arduino (IDE).

Программа установки Windows

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

  • Подключите свою плату и подождите, пока Windows начнет процесс установки драйвера. Через несколько секунд процесс не удастся, несмотря на все усилия.
  • Нажмите Пуск Меню > Панель управления .
  • Перейдите к Системе и Безопасности > Система . Когда окно системы откроется, откройте диспетчер устройств .
  • В разделе Порты (COM и LPT) вы должны увидеть открытый порт с именем Arduino UNO (COMxx) .
  • Щелкните правой кнопкой мыши Arduino UNO (COMxx) > Обновить программное обеспечение драйвера .
  • Выберите « Просмотреть мой компьютер» для программного обеспечения драйвера .
  • Найдите и выберите файл драйвера Uno с именем ArduinoUNO.inf , расположенный в папке Drivers загрузки программного обеспечения Arduino.

Программа установки Windows

Windows завершит установку драйвера оттуда.

Установка программного пакета Arduino на Mac OS

Загрузите программное обеспечение Arduino для Mac с веб-сайта Arduino . Извлеките содержимое файла .zip и запустите приложение. Вы можете скопировать его в папку с приложениями, но он будет отлично работать с вашего рабочего стола или загружать папки. Вам не нужно устанавливать никаких дополнительных драйверов для Arduino UNO.

Настройка Mac

Установка программного обеспечения Arduino в пакете Ubuntu / Linux

Установите gcc-avr и avr-libc :

sudo apt-get install gcc-avr avr-libc 

Если у вас еще нет openjdk-6-jre, установите и настройте его тоже:

 sudo apt-get install openjdk-6-jre sudo update-alternatives --config java 

Выберите правильный JRE, если у вас установлено более одного.

Перейдите на сайт Arduino и загрузите программное обеспечение Arduino для Linux. Вы можете распаковать и запустить его с помощью следующей команды:

tar xzvf arduino-xxx-linux64.tgz
cd arduino-1.0.1
./arduino

Независимо от того, какую операционную систему вы используете, приведенные выше инструкции предполагают, что у вас есть оригинальная фирменная плата Arduino Uno. Если вы приобрели клон, вам почти наверняка понадобятся драйверы сторонних производителей, прежде чем плата распознается по USB.

Запуск программного обеспечения Arduino

Теперь, когда программное обеспечение установлено и ваш Arduino настроен, давайте проверим, что все работает. Самый простой способ сделать это — использовать пример приложения «Blink».

Откройте программное обеспечение Arduino, дважды щелкнув приложение Arduino ( ./arduino в Linux ). Убедитесь, что плата подключена к вашему компьютеру, и откройте пример эскиза мерцания светодиода : Файл > Примеры > 1.Основы > Мерцание . Вы должны увидеть код для открытого приложения:

Ардуино Блинк

Чтобы загрузить этот код в Arduino, выберите запись в меню « Инструменты» > « Доска» , соответствующую вашей модели — в этом случае Arduino Uno .

Arduino Board

Выберите последовательное устройство вашей платы в меню Инструменты > Последовательный порт . В Windows это может быть COM3 или выше. На Mac или Linux это должно быть что-то с /dev/tty.usbmodem .

Порт Ардуино

Наконец, нажмите кнопку Загрузить в левом верхнем углу вашей среды. Подождите несколько секунд, и вы увидите, что светодиоды RX и TX на Arduino мигают. Если загрузка прошла успешно, в строке состояния появится сообщение «Готово».

Через несколько секунд после завершения загрузки вы увидите, что светодиод на контакте 13 на плате начнет мигать. Поздравляем! У вас есть Arduino и работает.

Стартовые проекты

Теперь, когда вы знаете основы, давайте посмотрим на некоторые проекты для начинающих.

Мигать светодиодом

Ранее вы использовали образец кода Arduino, чтобы мигать встроенным светодиодом. В этом проекте будет мигать внешний светодиод с помощью макета. Вот схема:

Ардуино Блинк

Подключите длинную ветвь светодиода (положительная ветвь, называемая анодом ) к резистору 220 Ом, а затем к цифровому выводу 7 . Подключите короткую ветвь (отрицательную, называемую катодом ) непосредственно к земле (любой из портов Arduino с GND на нем, на ваш выбор). Это простая схема. Arduino может управлять этим выводом цифровым способом. При включении штырька загорится светодиод, а при его выключении светодиод погаснет. Резистор необходим для защиты светодиода от слишком большого тока — без него он сгорит.

Вот код, который вам нужен:

 void setup() { // put your setup code here, to run once: pinMode(7, OUTPUT); // configure the pin as an output } void loop() { // put your main code here, to run repeatedly: digitalWrite(7, HIGH); // turn LED on delay(1000); // wait 1 second digitalWrite(7, LOW); // turn LED off delay(1000); // wait one second } 

Этот код делает несколько вещей:

void setup (): запускается Arduino один раз при каждом запуске. Здесь вы можете настроить переменные и все, что нужно для запуска вашего Arduino.
pinMode (7, OUTPUT): говорит Arduino использовать этот вывод в качестве выхода, без этой строки Arduino не будет знать, что делать с каждым выводом. Это нужно настроить только один раз для каждого контакта, и вам нужно только настроить контакты, которые вы собираетесь использовать.
void loop (): любой код внутри этого цикла многократно запускается снова и снова, пока Arduino не будет выключен. Это может сделать более крупные проекты более сложными, но это прекрасно работает для простых проектов.
digitalWrite (7, HIGH): используется для установки вывода HIGH или LOWON или OFF . Точно так же, как выключатель света, когда штырь ВЫСОКИЙ, светодиод будет включен. Когда штырь НИЗКИЙ, светодиод не горит. Внутри скобок необходимо указать дополнительную информацию для правильной работы. Дополнительная информация называется параметрами или аргументами.

Первый (7) — это номер пина. Например, если вы подключили свой светодиод к другому контакту, вы изменили бы его с семи на другой номер. Второй параметр должен быть HIGH или LOW , который указывает, должен ли светодиод быть включен или выключен.
задержка (1000): Ардуино сообщает, что нужно ждать определенное время в миллисекундах. 1000 миллисекунд равны одной секунде, поэтому Arduino будет ждать одну секунду.

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

Задача: Попробуйте отрегулировать задержку между включением и выключением светодиода. Что вы наблюдаете? Что произойдет, если вы установите задержку очень маленьким числом, например, один или два? Можете ли вы изменить код и схему, чтобы мигать два светодиода?

Добавление кнопки

Теперь, когда у вас работает светодиод, давайте добавим кнопку в вашу схему:

Arduino Button

Подключите кнопку так, чтобы она соединяла канал в центре макета. Подсоедините верхнюю правую ногу к контакту 4 . Подключите нижнюю правую ножку к резистору 10 кОм, а затем к земле . Подключите нижнюю левую ногу к 5V .

Вы можете быть удивлены, зачем простой кнопке нужен резистор. Это служит двум целям. Это понижающий резистор — он связывает контакт с землей. Это гарантирует, что паразитные значения не обнаруживаются, и не позволяет Arduino думать, что вы нажали кнопку, когда вы этого не сделали. Второе назначение этого резистора — ограничение тока. Без него 5V попадет прямо в землю, волшебный дым будет выпущен, и ваш Arduino умрет. Это называется коротким замыканием, поэтому использование резистора предотвращает это.

Когда кнопка не нажата, Arduino обнаруживает землю ( контакт 4 > резистор > земля ). Когда вы нажимаете кнопку, 5V подключается к земле. Контакт 4 Arduino может обнаружить это изменение, так как контакт 4 теперь изменился с земли на 5В;

Вот код:

 boolean buttonOn = false; // store the button state void setup() { // put your setup code here, to run once: pinMode(7, OUTPUT); // configure the LED as an output pinMode(4, INPUT); // configure the button as an input } void loop() { // put your main code here, to run repeatedly: if(digitalRead(4)) { delay(25); if(digitalRead(4)) { // if button was pressed (and was not a spurious signal) if(buttonOn) // toggle button state buttonOn = false; else buttonOn = true; delay(500); // wait 0.5s -- don't run the code multiple times } } if(buttonOn) digitalWrite(7, LOW); // turn LED off else digitalWrite(7, HIGH); // turn LED on } 

Этот код основан на том, что вы узнали в предыдущем разделе. Используемая вами аппаратная кнопка является мгновенным действием. Это означает, что он будет работать только тогда, когда вы удерживаете его. Альтернатива — защелкивающееся действие. Это так же, как ваш выключатель света или розетка, нажмите один раз, чтобы включить, нажмите снова, чтобы выключить. К счастью, поведение блокировки может быть реализовано в коде. Вот что делает дополнительный код:

boolean buttonOn = false: эта переменная используется для хранения состояния кнопки — ON или OFF, HIGH или LOW. По умолчанию используется значение false.
pinMode (4, INPUT): так же, как код, используемый для светодиода, эта строка сообщает Arduino, что вы подключили вход (вашу кнопку) к выводу 4.
if (digitalRead (4)): аналогично digitalWrite () , digitalRead () используется для чтения состояния вывода. Вам нужно предоставить ему пин-код (4, для вашей кнопки).

После того, как вы нажали кнопку, Arduino ждет 25 мс и снова проверяет кнопку. Это известно как программный отказ . Это гарантирует, что то, что думает Arduino, было нажатием кнопки, действительно нажатием кнопки, а не шумом. Вам не нужно этого делать, и в большинстве случаев без него все будет хорошо. Это скорее лучшая практика.

Если Arduino уверен, что вы действительно нажали кнопку, он изменит значение переменной buttonOn . Это переключает состояние:

ButtonOn имеет значение true: установлено значение false.
ButtonOn имеет значение false: установлено в значение true.

Наконец, светодиод выключается в соответствии с состоянием, сохраненным в buttonOn .

Световой датчик

Давайте перейдем к продвинутому проекту. В этом проекте будет использоваться светозависимый резистор (LDR) для измерения количества доступного света. Arduino сообщит вашему компьютеру полезные сообщения о текущем уровне освещенности.

Вот схема:

Arduino LDR

Поскольку LDR являются резистором, не имеет значения, в каком направлении они расположены — они не имеют полярности. Подключите 5V к одной стороне LDR. Подключите другую сторону к земле через резистор 1 кОм. Также подключите эту сторону к аналоговому входу 0 .

Этот резистор действует как резистор понижения напряжения, как и в предыдущих проектах. Необходим аналоговый вывод, так как LDR являются аналоговыми устройствами, и эти выводы содержат специальные схемы для точного считывания аналогового оборудования.

Вот код:

 int light = 0; // store the current light value void setup() { // put your setup code here, to run once: Serial.begin(9600); //configure serial to talk to computer } void loop() { // put your main code here, to run repeatedly: light = analogRead(A0); // read and save value from LDR //tell computer the light level if(light < 100) { Serial.println("It is quite light!"); } else if(light > 100 && light < 400) { Serial.println("It is average light!"); } else { Serial.println("It is pretty dark!"); } delay(500); // don't spam the computer! } 

Этот код делает несколько новых вещей:

Serial.begin (9600): сообщает Arduino, что вы хотите общаться по последовательному порту со скоростью 9600. Arduino подготовит все необходимое для этого. Скорость не так важна, но и ваш Arduino, и компьютер должны использовать один и тот же.
analogRead (A0): используется для чтения значения, поступающего из LDR. Чем ниже значение, тем больше света доступно.
Serial.println (): используется для записи текста в последовательный интерфейс.

Простой оператор if отправляет на ваш компьютер разные строки (текст) в зависимости от доступного освещения.

Загрузите этот код и оставьте USB-кабель подключенным (именно так Arduino будет связываться и откуда поступает питание). Откройте последовательный монитор ( вверху справа > Serial Monitor ). Ваши сообщения должны появляться каждые 0,5 секунды.

Что вы наблюдаете? Что произойдет, если вы накрываете LDR или освещаете его ярким светом? Можете ли вы изменить код для печати значения LDR поверх последовательного?

Сделать шум

В этом проекте для воспроизведения звуков используется динамик Piezo. Вот схема:

Arduino Piezo

Заметили что-нибудь знакомое? Эта схема почти точно так же, как светодиодный проект. Пьезо — это очень простые компоненты — они издают звук при подаче электрического сигнала. Подключите положительный вывод к цифровому выводу 9 через резистор 220 Ом . Соедините отрицательную ногу с землей .

Вот код, это очень просто для этого проекта:

 void setup() { // put your setup code here, to run once: pinMode(9, OUTPUT); // configure piezo as output } void loop() { // put your main code here, to run repeatedly: tone(9, 1000); // make piezo buzz delay(1000); // wait 1s noTone(9); // stop sound delay(1000); // wait 1s } 

Здесь есть только несколько новых функций кода:

тон (9, 1000): это заставляет пьезо генерировать звук. Требуется два аргумента. Первый — это пин-код, а второй — частота тона.
noTone (9): Это прекращает производить любой звук на предоставленном булавке.

Попробуйте изменить этот код, чтобы получить другую частоту. Измените задержку на 1 мс — что вы заметили?

Куда пойти отсюда

Как видите, Arduino — это простой способ освоить электронику и программное обеспечение. Это один из лучших микроконтроллеров для начинающих. Надеюсь, вы видели, что с Arduino легко создавать простые электронные проекты. Вы можете создавать гораздо более сложные проекты, когда понимаете основные из них:

Какой Arduino у вас есть? Есть ли какие-нибудь забавные проекты, которые вы хотели бы сделать? Более подробно, посмотрите, как улучшить кодирование Arduino с помощью VS Code и PlatformIO.

Похожие посты
Diy

Вещи, которые вы должны иметь в виду, прежде чем брать ноутбук или смартфон в службу технической поддержки

Diy

Как использовать Arduino для съемки красивой скоростной фотографии

DiyLinux

Пять великолепных расширений Raspberry Pi, которые делают его еще более полезным

Diy

Первые шаги с Arduino: пристальный взгляд на печатную плату и структуру программы