Изучаем Arduino. 65 проектов своими руками. 2-е издание - Джон Бокселл - E-Book

Изучаем Arduino. 65 проектов своими руками. 2-е издание E-Book

Джон Бокселл

0,0

Beschreibung

Что такое Arduino? За этим словом прячется легкое и простое устройство, которое способно превратить кучу проводов и плат в робота, управлять умным домом и многое другое. Разнообразие устройств ввода/вывода — датчиков, индикаторов, дисплеев и электромоторов — позволяет создавать самые невероятные проекты. Второе издание этой книги было полностью переработано, ведь технологии не стоят на месте. Познакомившись с основами Arduino, вы сможете экспериментировать с сенсорными экранами и жидкокристаллическими дисплеями, займетесь робототехникой, освоите работу с датчиками и беспроводной передачей данных и научитесь дистанционно управлять устройствами с помощью телефона. В мире продано уже более 35000 экземпляров этой книги.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 361

Veröffentlichungsjahr: 2023

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Джон Бокселл
Изучаем Arduino. 65 проектов своими руками. 2-е издание

Перевод А. Киселев

Научный редактор А. Трондина

Литературный редактор Т. Сажина

Джон Бокселл

Изучаем Arduino. 65 проектов своими руками. 2-е издание. — СПб.: Питер, 2022.

ISBN 978-5-4461-1918-9

© ООО Издательство "Питер", 2022

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

Оглавление

Об авторе
О научном редакторе
От издательства
Благодарности
1. Введение
Возможности безграничны
Сила в массовости
Компоненты и аксессуары
Необходимое программное обеспечение
Безопасность
Что дальше?
2. Знакомство с платой Arduino и IDE
Плата Arduino
Обзор среды разработки
Создание первого скетча в IDE
Что дальше?
3. Первые шаги
Планирование проектов
Об электричестве
Электронные компоненты
Переменные
Изменение яркости светодиода с помощью широтно-импульсной модуляции
Дополнительные электронные компоненты
Высоковольтные схемы
Что дальше?
4. Строительные блоки
Принципиальные схемы
Конденсатор
Цифровые входы
Логические переменные
Аналоговые и цифровые сигналы
Выполнение арифметических операций в Arduino
Увеличение точности измерения аналоговых сигналов с помощью источника опорного напряжения
Переменный резистор
Пьезоэлектрические зуммеры
Что дальше?
5. Функции
Функция, возвращающая значения
Отображение данных из Arduino на мониторе последовательного порта
Принятие решений с помощью инструкций while
Передача данных из монитора порта в Arduino
Переменные типа long
Что дальше?
6. Числа, переменные и арифметика
Случайные числа
Краткое введение в двоичную систему счисления
Увеличение числа цифровых выходов с применением сдвигового регистра
Массивы
Семисегментные светодиодные индикаторы
Что дальше?
7. Расширение Arduino
Платы расширения
Макетные платы ProtoShield
Расширение возможностей скетчей с помощью библиотек
Карты памяти microSD
Хронометраж с применением millis() и micros()
Прерывания
Что дальше?
8. Светодиодные цифровые табло и матрицы
Светодиодные цифровые табло
Установка библиотеки
Что дальше?
9. Жидкокристаллические индикаторы
Символьные жидкокристаллические индикаторы
Графические жидкокристаллические индикаторы
Что дальше?
10. Создание своих библиотек для Arduino
Создание первой библиотеки для Arduino
Устройство библиотеки для Arduino
Установка новой библиотеки
Создание библиотеки, принимающей значения для выполнения функции
Создание библиотеки, обрабатывающей и отображающей прочитанные с датчиков значения
Что дальше?
11. Цифровые клавиатуры
Цифровая клавиатура
Принятие решений с помощью switch-case
Что дальше?
12. Сенсорные экраны
Сенсорные экраны
Функция map()
Что дальше?
13. Семейство плат Arduino
Обширное семейство плат Arduino и их заменителей
Что дальше?
14. Электродвигатели и движение
Реализация небольших перемещений с помощью сервомоторов
Электродвигатели
Шаговые моторы
Подключение дополнительного оборудования к роботу
Определение столкновений
Инфракрасный датчик расстояния
Ультразвуковой датчик расстояния
Что дальше?
15. Arduino и GPS
Что такое GPS
Тестирование платы расширения GPS
Что дальше?
16. Беспроводная передача информации
Применение недорогих модулей беспроводной связи
Использование модулей LoRa для быстрой беспроводной передачи данных на большие расстояния
Что дальше?
17. Инфракрасный пульт дистанционного управления
Что такое инфракрасный пульт дистанционного управления
Подготовка к приему ИК-сигналов
Что дальше?
18. Чтение радиомаркеров RFID
Внутреннее устройство радиомаркеров
Проверка оборудования
Сохранение данных во встроенном EEPROM
Что дальше?
19. Шины данных
Шина I2C
Шина SPI
Что дальше?
20. Часы реального времени
Подключение модуля RTC
Что дальше?
21. Интернет
Оборудование
Управление платой Arduino через интернет
Что дальше?
22. Сети сотовой связи
Оборудование
Настройка и проверка оборудования
Что дальше?
Рекомендуем прочитать

Об авторе

Джон Бокселл (John Boxall) более 26 лет занимается разработкой, распространением и продажей электроники. Последние годы в свободное время он пишет учебные пособия, проекты и делает обзоры об Arduino.

О научном редакторе

Ксандер Солдаат (Xander Soldaat) — бывший партнер по связям с сообществом Mindstorms в LEGO MINDSTORMS. Прежде чем стать штатным разработчиком программного обеспечения в Robomatter, а потом в VEX Robotics, 18 лет был архитектором и инженером ИТ-инфраструктуры. Сейчас трудится инженером-исследователем в сфере разработки встроенных решений Wi-Fi. В свободное время Ксандер любит возиться с роботами и домашними ретрокомпьютерами, увлекается 3D-печатью.

От издательства

Благодарим Владимира Трондина за помощь в подготовке издания.

Владимир окончил Иркутский университет по специальности «Радиофизика и электроника» в 1984 году. В 2002–2004 годах работал инженером-разработчиком программного обеспечения для встроенных процессоров (Embedded Software Engineer) в Polar Electro OY. C 2004 года инженер по применению (Applications Engineer) в National Semiconductor Finland OY и Texas Instrument Finland OY после приобретения National Texas в 2011 году.

Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.

Благодарности

Прежде всего я хотел бы выразить огромную благодарность коллективу разработчиков Arduino: Массимо Банци (Massimo Banzi), Дэвиду Куартиллье (David Cuartielles), Тому Иго (Tom Igoe), Джанлуке Мартино (Gianluca Martino) и Дэвиду Меллису (David Mellis). Без вашей прозорливости, идей и упорного труда не было бы этого проекта.

Благодарю всех читателей первого издания за их отзывы и конструктивную критику.

Огромное спасибо моему научному редактору Ксандеру Солдаату (Xander Soldaat) за его вклад в этот большой проект и настойчивость в доведении книги до логического конца.

Хочу выразить глубокую признательность за понимание и поддержку следующим компаниям: Adafruit, Keysight Technologies, Freetronics, PMD Way, Seeed Studio, Sharp Corporation, SparkFun и Tronixlabs.

Кроме того, мне хочется отдельно поблагодарить Freetronics PMD Way за предоставление великолепных электронных компонентов. Спасибо всем тем, кто потратил свое время на создание библиотек для Arduino, которые упрощают работу многим разработчикам.

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

Спасибо всем, кто вдохновлял и поддерживал меня: Элизабет Прайс (Elizabeth Pryce), Джонатану Оксеру (Jonathan Oxer), Филипу Линдси (Philip Lindsay), Кену Ширрифу (Ken Shirriff), Натану Кеннеди (Nathan Kennedy) и Дэвиду Джонсу (David Jones).

И наконец, хочу сказать спасибо всем сотрудникам издательства No Starch Press за их труд над этим обновленным изданием: Патрику Диджусто (Patrick DiJusto) за редакторский вклад, Дапиндеру Досанжу (Dapinder Dosanjh) и Натану Хайдельбергеру (Nathan Heidelberger) за их бесконечное терпение, Рэйчел Монаган (Rachel Monaghan) за управление всем процессом издания книги, Пауле Флеминг (Paula Fleming) за литературную правку, Рэйчел Хед (Rachel Head) за корректуру, Джоанне Бурек (JoAnne Burek) за создание предметного указателя. Отдельная благодарность Биллу Поллоку (Bill Pollock) за поддержку, советы и способность убедить, что иногда авторское объяснение темы — это не лучшее и не единственно верное решение.

1. Введение

Приходилось ли вам, разглядывая какое-нибудь устройство, задумываться над тем, как оно работает в действительности? Возможно, это был катер на дистанционном управлении, лифт, автомат с напитками или электронная игрушка? А может быть, вам хотелось самому создать робота или придумать электронное управление для модели железной дороги? Или, возможно, вы бы хотели в течение длительного времени собирать данные о погоде и анализировать их? Как и с чего вы могли бы начать свой проект?

Плата Arduino (рис. 1.1) поможет на практике раскрыть некоторые секреты электроники. Arduino, созданная Массимо Банци и Дэвидом Куартиллье, предлагает бюджетный способ создания интерактивных проектов и таких объектов, как дистанционно управляемые роботы, GPS-трекеры и электронные игры.

Рис. 1.1. Плата Arduino

Проект Arduino рос экспоненциально с момента рождения в 2005 году. Теперь это процветающая индустрия, поддерживаемая множеством людей, объединенных общим стремлением к поиску нового. Здесь вы найдете и отдельных энтузиастов, и целые группы, от небольших клубов и местных кружков по интересам до объединений специалистов и образовательных учреждений, заинтересованных в использовании этой платформы.

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

Возможности безграничны

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

Взгляните на Wi-Fi-метеостанцию, сконструированную Бекки Стерн (Becky Stern). На рис. 1.2 вы можете увидеть разные примеры вывода информации на ней. Это устройство работает на Arduino-совместимой плате с интерфейсом Wi-Fi. Оно показывает цифры максимальной дневной температуры и отображает прогноз погоды на день с помощью треугольников, меняющих цвета.

Рис. 1.2. Разные примеры отображения прогноза погоды на табло устройства1

Благодаря простоте получения различной информации в интернете вы можете с помощью этого устройства отображать не только прогноз погоды, но и другие данные. Подробнее об этом вы можете узнать по ссылке https://www.instructab-les.com/id/WiFi-Weather-Display-With-ESP8266/.

Не хотите ли сделать собственный классический компьютер из прошлого? Благодаря возможностям процессора Arduino можно эмулировать подобные устройства. На рис. 1.3 показан один из примеров — устройство KIM Uno Оскара Вермёлена (Oscar Vermeulen), имитирующее компьютер KIM-1 1976 года. Больше информации вы найдете на странице https://en.wikipedia.org/wiki/KIM-1.

Рис. 1.3. Эмулятор компьютера KIM-1 на Arduino

Поработав над этим проектом, можно понять принцип функционирования первых процессоров и получить базовые знания, необходимые для понимания современных компьютеров. Вы сможете воспроизвести Kim Uno, потратив меньше 50 долларов. Благодаря такой низкой цене подобными проектами можно поделиться с другими энтузиастами. Дополнительную информацию вы найдете на странице https://obsolescence.wixsite.com/obsolescence/kim-uno-summary-c1uuh/.

А вот еще один пример: Михалис Василакис (Michalis Vasilakis) обожает вручную создавать недорогие инструменты. Отличный пример — его мини-плоттер с ЧПУ на основе Arduino (рис. 1.4). В этом проекте используются плата Arduino, механизмы от старых приводов компакт-дисков и другие недорогие детали для создания устройства с числовым программным управлением (ЧПУ), которое может рисовать с высокой точностью на плоской поверхности. Больше информации вы найдете на странице http://www.ardumotive.com/new-cnc-plotter.html.

Рис. 1.4. Мини-плоттер с ЧПУ на основе Arduino

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

Сила в массовости

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

ПРИМЕЧАНИЕ

На веб-странице https://nostarch.com/arduino-workshop-2nd-edition/ вы сможете загрузить файлы скетчей и найти дополнения и обновления к тексту книги.

Компоненты и аксессуары

Как и любые электронные устройства, плату Arduino можно приобрести в розницу, а продавцы предложат вам широкий выбор компонентов и аксессуаров. Я рекомендую во время покупок выбирать оригинальные версии Arduino или качественные копии, иначе вы рискуете купить неисправный товар. Не рискуйте, приобретая плату неизвестного производителя. Это увеличит как финансовые, так и физические и временные затраты на реализацию проекта. Список авторизованных распространителей Arduino можно найти по адресу http://arduino.cc/en/Main/Buy/.

Ниже приводится список поставщиков (в алфавитном порядке), к которым я рекомендую обращаться, если нужно купить компоненты и аксессуары для создания проектов на основе Arduino:

• Adafruit Industries (http://www.adafruit.com/);

• Arduino Store USA (https://store.arduino.cc/usa/);

• PMD Way (https://pmdway.com/);

• SparkFun Electronics (http://www.sparkfun.com/).

Список компонентов из этой книги, обновления и дополнения к тексту можно найти на сайте https://nostarch.com/arduino-workshop-2nd-edition/. Но пока отложите поход в магазин и ознакомьтесь с первыми главами, чтобы понять, что же потребуется в первую очередь, и не тратить деньги на ненужное.

Необходимое программное обеспечение

Итак, программировать платы Arduino можно почти на любом компьютере, но важно иметь программное обеспечение (ПО), которое называют интегрированной средой разработки (Integrated Development Environment, IDE). Чтобы запустить это программное обеспечение, нужен компьютер, подключенный к интернету, с установленной на нем одной из следующих операционных систем:

• Mac OS X или выше;

• Windows 10 Home 32- или 64-разрядной или выше;

• Linux 32- или 64-разрядной (Ubuntu или подобной ей).

Разработка IDE ведется с 2005 года, и к настоящему времени широко используются версии 2.x (точное число x в номере версии у всех может быть разным, но сами инструкции из этой книги остаются актуальными). По сравнению с версией 1.x, у версии 2.x есть некоторые функции, упрощающие разработку скетчей, включая интерактивное автодополнение, улучшенную навигацию и более удобные средства управления платами и библиотеками. Кроме того, для некоторых плат отладчик позволяет запускать и останавливать выполнение скетча в интерактивном режиме. Но если вы новичок в мире Arduino, вам об этом беспокоиться не нужно. Просто помните, что команда Arduino всегда работает над улучшением инструментария.

А сейчас самое время загрузить и установить IDE. Для этого перейдите к разделу с названием вашей операционной системы и следуйте инструкциям по установке. Не забудьте вместе с платой Arduino купить подходящий кабель USB. Даже если у вас еще нет этой платы, все равно загрузите IDE и займитесь ее исследованием.

macOS

В этом разделе вы найдете инструкции по загрузке и настройке Arduino IDE в macOS.

1. Откройте страницу загрузки (https://www.arduino.cc/en/software/) и загрузите последнюю доступную версию IDE для вашей операционной системы.

2. Дважды щелкните на файле .dmg в папке Downloads (Загрузки). Когда откроется окно установки, перетащите значок Arduino в папку Applications (Приложения).

3. Откройте IDE (рис. 1.5).

Рис. 1.5. Окно IDE в macOS

4. Теперь нужно настроить IDE для использования платы Arduino Uno. Щелк-ните на верхнем значке на левой боковой панели окна IDE, чтобы открыть Boards Manager (Менеджер плат). Найдите вариант с названием платы Arduino Uno и нажмите кнопку Install (Установить).

5. Разверните список в верхней части окна IDE, где виден текст no board selected (плата не выбрана), и выберите пункт Select Other Board & Port (Выбрать другую плату и порт). Затем выберите Arduino Uno из предложенного списка плат.

Вам может быть предложено установить пакет инструментов командной строки для разработчика (Command Line Developer tools) — установите его.

Теперь аппаратное и программное обеспечение готовы к работе, и можно перейти к разделу «Безопасность».

Windows 10

Здесь вы найдете инструкции по загрузке и настройке Arduino IDE в Windows.

1. Откройте страницу загрузки (http://arduino.cc/en/software/) и загрузите последнюю доступную версию IDE для вашей операционной системы.

2. Браузер может предложить выбор между сохранением и запуском загруженного файла. Выберите Run (Запустить), чтобы установка началась автоматически по завершении загрузки. Если этого не произошло, после окончания загрузки отыщите файл Arduino.exe в папке Downloads (Загрузки) и запустите его для установки IDE. После завершения установки запустите IDE.

3. Теперь нужно настроить IDE на использование платы Arduino Uno. Щелкните на верхнем значке на боковой панели слева в окне IDE, чтобы открыть Boards Manager (Менеджер плат). Отыщите вариант с названием платы Arduino Uno и нажмите кнопку Install (Установить).

4. Разверните список в верхней части окна IDE, где виден текст no board selected (плата не выбрана), и выберите пункт Select Other Board & Port (Выбрать другую плату и порт). Затем выберите Arduino Uno из предложенного списка плат.

Теперь аппаратное и программное обеспечение готовы к работе, и можно перейти к разделу «Безопасность».

Ubuntu Linux

Если вы пользуетесь Ubuntu Linux, ниже вы найдете инструкции по загрузке и настройке Arduino IDE в этой среде.

Для установки IDE следуйте указаниям ниже.

1. Откройте страницу загрузки (https://www.arduino.cc/en/software/) и загрузите последнюю доступную версию IDE для вашей операционной системы.

2. В диалоге выберите вариант Save File (Сохранить файл) и нажмите OK.

3. По завершении загрузки найдите файл .zip в папке Downloads (Загрузки), откройте его в Archive Manager (Диспетчер архивов) и извлеките содержимое на рабочий стол.

4. Перейдите в папку с извлеченным программным обеспечением и в окне терминала введите команду ./arduino-ide для запуска IDE.

5. Теперь нужно настроить IDE. Для этого подключите плату Arduino к компьютеру с помощью кабеля USB.

6. Выберите пункт меню ToolsPort (ИнструментыПорт) и затем порт /dev/ttyACMx в подменю, где x — цифра (для выбора должен быть доступен только один порт с подобным именем2).

Теперь аппаратное и программное обеспечение готовы к работе.

Безопасность

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

Что дальше?

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

1 Температура в градусах Фаренгейта. — Примеч. пер.

2 Для некоторых клонов порт будет выглядеть как dev/ttyUSBx. — Примеч. науч. ред.

2. Знакомство с платой Arduino и IDE

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

Плата Arduino

Что такое Arduino? Согласно определению на сайте Arduino (http://www.arduino.cc/), это открытая аппаратная платформа для макетирования электронных устройств, основанная на гибком и простом в использовании аппаратном и программном обеспечении. Она предназначена для всех, кто интересуется созданием интерактивных устройств.

Проще говоря, Arduino — это маленький компьютер, который можно запрограммировать для взаимодействия с разными физическими объектами с помощью разных входных и выходных сигналов. Основная модель Arduino, Uno, небольшая и может легко поместиться на ладони, как можно видеть на рис. 2.1.

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

Рис. 2.1. Небольшая плата Arduino Uno

Теперь подробнее исследуем аппаратную часть Arduino Uno (ее физическое устройство). Если вы не поймете что-то в этой главе, не расстраивайтесь, потому что все, о чем будет рассказываться, мы детально разберем в следующих.

Осмотрите плату Uno со всех сторон. Поверните ее к себе стороной с разъемами, как показано на рис. 2.2.

Рис. 2.2. Разъем USB и разъем подключения питания

Слева находится разъем подключения универсальной последовательной шины (Universal Serial Bus, USB). С его помощью плата подключается к компьютеру, он выполняет такие три функции, как питание устройства, загрузка ваших скетчей с инструкциями и обмен данными с компьютером. Справа находится разъем подключения блока питания. С его помощью можно подключить плату к стандартному блоку питания (понижающему напряжение до 5 В)3.

В центре, чуть ниже середины, находится микроконтроллер (рис. 2.3).

Рис. 2.3. Микроконтроллер

Микроконтроллер — это «мозг» Arduino, маленький выполняющий инструкции компьютер с микропроцессором, имеющий несколько видов памяти для хранения данных и инструкций и имеющий различные входы и выходы для вывода или ввода данных. Чуть ниже микроконтроллера есть две группы контактов, как показано на рис. 2.4.

Рис. 2.4. Контакты питания и аналоговые входы

Слева находятся контакты питания и контакты для подключения внешней кнопки сброса. Группа справа — шесть контактов аналоговых входов. Они используются для измерения уровней напряжения электрических сигналов. Контакты A4 и A5 могут использоваться для обмена данными с другими устройствами.

Вдоль верхнего края платы располагаются еще две группы разъемов, как показано на рис. 2.5.

Рис. 2.5. Контакты цифровых входов/выходов

Контакты с номерами от 0 до 13 — это цифровые входы/выходы. С их помощью можно определять наличие или отсутствие входных электрических сигналов или генерировать выходные. Контакты с номерами 0 и 1 известны как последовательный порт и могут использоваться для обмена данными с другими устройствами, например с компьютером через преобразователь последовательного интерфейса — USB (UART-USB). Разъемы со знаком тильды (~) могут генерировать электрический сигнал переменного напряжения (который на экране осциллографа выглядит как морские волны, именно поэтому и выбран волнообразный знак тильды). Эти контакты можно использовать, к примеру, для создания световых эффектов или управления электродвигателями.

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

Светодиоды с подписями RX и TX зажигаются во время обмена данными между платой Arduino и подключенными устройствами через последовательный порт и USB. Светодиод L предназначен для нужд пользователя (он подключен к контакту цифрового входа/выхода с номером 13). Небольшой черный квадрат слева от светодиодов — это микроконтроллер, управляющий интерфейсом USB. Именно он позволяет Arduino обмениваться данными с компьютером, но вам едва ли придется иметь с ним дело.

И наконец, на рис. 2.7 показана кнопка RESET (Сброс).

Как это иногда случается с компьютерами, в плате Arduino тоже может что-то пойти не так. Когда все ваши попытки «привести ее в чувство» не возымеют успеха, останется только нажать кнопку сброса и перезапустить Arduino. Простая кнопка RESET (Сброс) на плате предназначена для перезапуска Arduino и решения проблем, неустранимых другими способами.

Рис. 2.6. Светодиоды на плате

Рис. 2.7. Кнопка RESET (Сброс)

Одна из замечательных особенностей системы Arduino — простота ее расширения. К ней легко добавляются новые аппаратные функции. Два ряда контактов вдоль каждой стороны позволяют подключить плату расширения (shield в терминах Arduino) — другую плату с контактами, которые подключаются в разъемы на Arduino. На рис. 2.8 показана плата расширения с интерфейсом Ethernet, с помощью которой Arduino может обмениваться данными через сети и интернет.

Рис. 2.8. Плата расширения Ethernet для Arduino

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

Помните, что во избежание «конфликтов» вы должны знать назначение контактов платы расширения. В продаже есть макетные платы, на которых можно собирать свои схемы. Об этой возможности мы поговорим в главе 7.

Рис. 2.9. Плата с цифровыми индикаторами и датчиком температуры

Аппаратную часть Arduino дополняет программная — набор инструкций, сообщающих аппаратной части, что и как делать.

В главе 1 вы уже установили ПО IDE на свой компьютер и настроили для работы с платой Arduino. Теперь мы поближе познакомимся с IDE и напишем первую простую программу (или скетч) для Arduino.

Обзор среды разработки

Из рис. 2.10 мы видим, что среда разработки Arduino IDE напоминает простой текстовый процессор. Окно IDE делится на три основные области: управление, ввод текста и вывод сообщений.

Область управления

Область управления (см. рис. 2.10, вверху) содержит заголовок окна, меню и панель инструментов. В заголовке окна отображается имя файла скетча (например, Blink) и версия IDE (например, Arduino 2.0.0-beta.4). Ниже находится полоса меню (File (Файл), Edit (Правка), Sketch (Скетч), Tools (Инструменты) и Help (Помощь)) и панель инструментов с пиктограммами.

Рис. 2.10. Среда разработки Arduino IDE

Меню

Как и в другом текстовом процессоре или редакторе щелчком на любом элементе меню выводится список соответствующих команд:

• File (Файл) — команды для сохранения, загрузки и печати скетчей; богатый набор примеров скетчей, которые можно открыть; подменю Preferences (Настройки);

• Edit (Правка) — команды копирования, вставки и поиска, обычные для любого текстового процессора;

• Sketch (Скетч) — команда для проверки и компиляции скетча перед загрузкой в плату, команда доступа к папке со скетчем и команда импортирования;

• Tools (Инструменты) — много разных команд и команды для выбора типа платы Arduino и порта USB;

• Help (Помощь) — ссылки на разные темы и версию IDE.

Панель инструментов

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

• Verify (Проверить) запускает проверку скетча на корректность и отсутствие программных ошибок;

• Upload (Загрузить) запускает проверку скетча и последующую его загрузку в плату Arduino;

• New (Новый) открывает новый пустой скетч в новом окне;

• Open (Открыть) открывает ранее сохраненный скетч;

• Save (Сохранить) сохраняет открытый скетч. Если у него еще нет названия, вам будет предложено ввести его;

• SerialMonitor (Монитор порта) открывает новое окно для обмена данными между платой Arduino и IDE.

Область ввода текста

Область ввода текста (см. рис. 2.10, в центре) служит для ввода исходного кода скетчей. Имя текущего скетча отображается на вкладке вверху слева (по умолчанию скетчу присваивается имя с текущей датой). Здесь вводится исходный код скетча, как в обычном текстовом редакторе.

Область вывода сообщений

Область вывода сообщений (см. рис. 2.10, внизу) — черная прямоугольная область в нижней части окна IDE. В ней будут выводиться самые разные сообщения, включая результаты проверки скетчей, успешность загрузки в плату и др.

Справа внизу под областью вывода сообщений отображается тип вашей платы Arduino и порт USB, к которому она подключена, — в данном случае Arduino Uno on COM6.

Создание первого скетча в IDE

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

Рис. 2.11. Светодиод с меткой L на плате Arduino

ПРИМЕЧАНИЕ

Не стремитесь досконально разобраться в командах в скетче, представленном здесь. Его цель — показать, насколько просто заставить Arduino работать по заданной вами программе. Поэтому, встретив что-то непонятное, не останавливайтесь и продолжайте читать.

Для начала подключите плату Arduino к компьютеру с помощью кабеля USB. Затем запустите IDE и в раскрывающемся списке выберите вашу плату (Arduino Uno) и тип порта USB, как показано на рис. 2.12. Это позволит убедиться, что плата правильно подключена.

Рис. 2.12. Выбор платы Arduino Uno

Комментарии

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

Чтобы добавить однострочный комментарий, введите два символа слеша и текст комментария, например:

// Скетч мигает светодиодом. Автор: Мэри Смит, создан 07/01/21

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

Чтобы написать комментарий из нескольких строк, введите символы /* в строке перед ним и символы */ в строке после него:

/*

Скетч мигает светодиодом

Автор: Мэри Смит, создан 07/01/21

*/

Комбинации символов /* и */ сообщают среде разработки, что она должна игнорировать текст между ними.

Оставьте комментарий одним из этих способов и сохраните скетч, выбрав пункт меню FileSaveAs (ФайлСохранить как). Введите короткое имя скетча (например, blinky) и нажмите OK.

По умолчанию среда разработки сохраняет скетчи в файлах с расширением .ino и добавляет его автоматически. В данном случае скетч должен сохраниться в файле с именем blinky.ino и появиться в папке с вашими скетчами.

Функция setup()

Следующий этап в создании любого скетча — добавление функции voidsetup(). Она содержит инструкции, которые плата Arduino выполняет только один раз после каждого сброса или включения питания. Чтобы создать функцию setup(), добавьте после комментария следующие строки:

void setup()

{

}

Управление аппаратными компонентами

Наша программа должна включать и выключать светодиод L на плате Arduino. Этот светодиод подключен к контакту цифрового входа/выхода с номером 13. Цифровые входы/выходы либо определяют наличие электрического сигнала, либо генерируют сигнал по команде. В этом проекте мы будем генерировать сигнал, включающий светодиод.

Введите следующую строку между фигурными скобками ({ и }):

pinMode(13, OUTPUT); // настроить контакт 13 как цифровой выход

Число 13 в листинге определяет нужный нам контакт. Он настраивается на работу в режиме OUTPUT, то есть он будет генерировать (выводить — output) электрический сигнал. Если нужно определять наличие входящего электрического сигнала, следует указать режим INPUT. Обратите внимание, что вызов функции pinMode() завершается точкой с запятой (;). Каждая строка с инструкциями в скетчах Arduino должна завершаться именно так.

В конце сохраните скетч еще раз, чтобы случайно не потерять результаты своих трудов.

Функция loop()

Как вы помните, наша цель — заставить светодиод включаться и выключаться снова и снова. Для этого создадим функцию loop(), которую плата Arduino будет выполнять, пока кто-то не выключит питание или не нажмет кнопку RESET (Сброс).

Введите код, выделенный полужирным шрифтом в следующем листинге, чтобы создать пустую функцию loop(). Не забудьте завершить новый раздел закрывающей фигурной скобкой (}) и затем снова сохраните скетч.

/*

Скетч мигает светодиодом

Автор: Мэри Смит, создан 07/01/21

*/

void setup()

{

  pinMode(13, OUTPUT); // Настроить контакт 13 как цифровой выход

}

void loop()

{

  // Поместите сюда код, который должен выполняться в цикле

}

ВНИМАНИЕ

Среда разработки Arduino IDE не поддерживает автоматическое сохранение скетчей, поэтому старайтесь почаще сохранять свою работу!

Теперь поместите в тело voidloop() вызовы функций, которые будет выполнять Arduino.

Введите следующий код между фигурными скобками, ограничивающими тело функции loop(), а после щелкните на пиктограмме Verify (Проверить), чтобы убедиться, что при вводе не было допущено ошибок:

digitalWrite(13, HIGH); // Включить напряжение на выходе 13

delay(1000);            // Пауза в одну секунду

digitalWrite(13, LOW);  // Выключить напряжение на выходе 13

delay(1000);            // Пауза в одну секунду

Давайте поближе познакомимся с этими командами. Функция digitalWrite() управляет напряжением, которое подается на цифровой выход — в нашем случае на контакт 13, к которому подключен светодиод L. Второй параметр в вызове этой функции (HIGH) указывает, что она должна установить «высокий» (high) уровень напряжения. В результате через контакт и светодиод L потечет электрический ток и светодиод включится.

Функция delay() приостанавливает работу скетча на указанный период времени — в данном случае после включения светодиода. delay(1000) гарантирует, что он останется включенным следующие 1000 миллисекунд (одну секунду).

Затем мы снимаем напряжение со светодиода вызовом digitalWrite(13,LOW);. Течение электрического тока останавливается, и светодиод гаснет. В конце вызовом delay(1000); выполняется еще одна пауза в одну секунду, в течение которой светодиод остается выключенным.

Ниже приводится полный исходный код скетча:

/*

Скетч мигает светодиодом

Автор: Мэри Смит, создан 07/01/21

*/

void setup()

{

  pinMode(13, OUTPUT); // Настроить контакт 13 как цифровой выход

}

void loop()

{

  digitalWrite(13, HIGH); // Включить напряжение на выходе 13

  delay(1000);            // Пауза в одну секунду

  digitalWrite(13, LOW);  // Выключить напряжение на выходе 13

  delay(1000);            // Пауза в одну секунду

}

Прежде чем продолжить, сохраните скетч!

Проверка скетча

Проверка скетча позволяет убедиться, что в нем нет ошибок и он понятен Arduino. Для проверки скетча щелкните на пиктограмме Verify (Проверить) в IDE и немного подождите. Когда проверка скетча закончится, в области вывода сообщений должен появиться текст, как показано на рис. 2.13.

Рис. 2.13. Скетч успешно проверен

Сообщение Done compiling (Компиляция завершена) говорит о том, что скетч проверен и готов к загрузке в плату Arduino. Здесь показано, какой объем памяти будет использован (в данном случае 924 байта) из имеющихся 32 256 байт.

А что, если проверка не увенчалась успехом? Допустим, вы забыли добавить точку с запятой после второго вызова функции delay(1000). Если во время проверки в скетче найдутся ошибки, в области вывода сообщений должно появиться сообщение об ошибке, как показано на рис. 2.14.

Рис. 2.14. Информация об ошибке в области вывода сообщений

IDE выводит текст с описанием ошибки (expected';'before'}'token — «отсутствует точка с запятой перед }») и выделяет в исходном коде строку с ошибкой или строку, следующую за ней. Это помогает быстро найти ошибку и устранить ее.

Загрузка и запуск скетча

Убедившись, что скетч был введен верно, сохраните его, проверьте подключение платы Arduino и щелкните на пиктограмме Upload (Загрузить) на панели инструментов IDE. Среда разработки проверит скетч еще раз и потом загрузит его в плату. В процессе загрузки мигание светодиодов TX/RX на плате (рис. 2.6) подтвердит, что идет обмен информацией между Arduino и компьютером.

После этого наступит момент истины: плата Arduino начнет выполнять ваш скетч. Если все было сделано правильно, светодиод L начнет мигать с секундными интервалами!

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

Изменение скетча

После запуска скетча у вас может возникнуть желание поменять его поведение, например изменить длительность интервала времени включения/выключения светодиода. IDE во многом похож на текстовый редактор, поэтому вы можете открыть сохраненный скетч, изменить необходимые значения, сохранить его и загрузить в плату. Чтобы увеличить частоту мигания, уменьшите параметры в обоих вызовах функции delay до одной четверти секунды (до 250 миллисекунд), как показано ниже:

delay(250); // Пауза в одну четвертую секунды

Затем снова загрузите скетч. После этого светодиод начнет мигать чаще, с интервалами в одну четверть секунды.

Что дальше?

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

3 Согласно спецификации рекомендованное напряжение должно находиться в диапазоне 7–12 В. — Примеч. науч. ред.