Введение

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

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

Эта книга задумана как продолжение бестселлера «Programming Arduino: Getting Started with Sketches»[1]. Несмотря на то что эта книга включает краткое повторение основ из книги «Programming Arduino», она познакомит читателя с более продвинутыми аспектами программирования плат Arduino. В частности, эта книга расскажет, как:

• обеспечить эффективную работу при минимальном объеме доступной памяти;

• решать сразу несколько задач без помощи механизмов многопоточного выполнения;

• упаковывать код в библиотеки, чтобы им могли пользоваться другие;

• использовать аппаратные прерывания и прерывания от таймера;

• добиться максимальной производительности;

• уменьшить потребление электроэнергии;

• взаимодействовать с последовательными шинами разных типов (I2C, 1-Wire, SPI и последовательный порт);

• взаимодействовать с портом USB;

• взаимодействовать с сетью;

• выполнять цифровую обработку сигналов (Digital Signal Processing, DSP).


Загружаемые примеры

Книга включает 75 примеров скетчей, которые распространяются в открытом виде и доступны на веб-сайте автора www.simonmonk.org. Перейдя по ссылке на страницу этой книги, вы сможете загрузить исходный код примеров, а также самый актуальный список ошибок и опечаток, найденных в книге.


Что необходимо для чтения книги

Данная книга в первую очередь посвящена вопросам программирования. Поэтому для опробования большинства примеров будет достаточно платы Arduino, светодиода и мультиметра. Если у вас имеются дополнительные платы расширения Arduino, они тоже пригодятся. Для рассмотрения примеров из главы 12 вам понадобится плата Ethernet или Wi-Fi. На протяжении всей книги мы будем использовать разные модули для демонстрации разных интерфейсов.

В центре внимания находится Arduino Uno — наиболее широко используемая плата Arduino, но в главах, посвященных программированию порта USB и цифровой обработке сигналов, рассматриваются некоторые особенности других плат Arduino, таких как Leonardo и Arduino Due.

В приложении в конце книги вы найдете список поставщиков, у которых сможете приобрести все эти компоненты.


Как работать с этой книгой

Каждая глава посвящена отдельной теме, связанной с программированием Arduino. Главы книги, кроме главы 1, где приводится краткий обзор основ Arduino, можно читать в любом порядке. Если вы опытный разработчик, начните с главы 14, чтобы вникнуть в некоторые особенности программирования Arduino.

Далее следует краткое описание глав.

Глава 1 «Программирование Arduino». Эта глава содержит сводную информацию о программировании Arduino. Это учебник для тех, кому требуется быстро ознакомиться с основами Arduino.

Глава 2 «Под капотом». В этой главе мы заглянем под капот и посмотрим, как работают программы для Arduino и откуда они берутся.

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

Глава 4 «Ускорение Arduino». Платы Arduino оснащены маломощными процессорами с невысоким быстродействием, поэтому иногда требуется выжать из них все, что только можно. Например, встроенная функция digitalWrite надежна и проста в использовании, но неэффективна, что особенно заметно, когда требуется одновременно включить несколько выходов. В этой главе вы узнаете, как увеличить ее производительность, а также познакомитесь с другими приемами создания быстродействующих скетчей.

Глава 5 «Снижение потребления электроэнергии». Когда для питания платы Arduino используются аккумуляторы или солнечные батареи, желательно уменьшить потребление электроэнергии. Этого можно добиться не только оптимизацией конструкции устройства, но и применением особых приемов программирования.

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

Глава 7 «Интерфейс I2C». Интерфейс I2C на плате Arduino может существенно упростить взаимодействие с модулями и компонентами и позволит обойтись меньшим числом контактов на плате. Эта глава описывает, как действует интерфейс I2C и как им пользоваться.

Глава 8 «Взаимодействие с устройствами 1-Wire». В этой главе рассказывается о шине 1-Wire для связи с устройствами, такими как датчики температуры компании Dallas Semiconductor, которые часто применяются с платами Arduino. Здесь вы узнаете, как действует эта шина и как ею пользоваться.

Глава 9 «Взаимодействие с устройствами SPI». SPI — еще один стандартный интерфейс, поддерживаемый платами Arduino. В этой главе описывается, как он действует и как им пользоваться.

Глава 10 «Программирование последовательного интерфейса». Поддержка передачи данных через последовательный порт, порт USB или контакты Rx и Tx на плате Arduino — отличный способ организовать обмен данными с периферийными устройствами и другими платами Arduino. В этой главе вы узнаете, как пользоваться последовательным портом.

Глава 11 «Программирование интерфейса USB». В этой главе рассматриваются разные аспекты использования порта USB на плате Arduino. Вы познакомитесь с возможностью эмуляции клавиатуры и мыши, поддерживаемой платой Arduino Leonardo, а также узнаете, как подключить клавиатуру или мышь к соответственно оборудованной плате Arduino.

Глава 12 «Программирование сетевых взаимодействий». Плата Arduino давно стала обычным компонентом «Интернета вещей». В этой главе вы узнаете, как программировать Arduino для работы в Интернете. В число обсуждаемых здесь тем входит описание плат расширения Wi-Fi и Ethernet, использования веб-служб и применения Arduino в качестве маленького веб-сервера.

Глава 13 «Цифровая обработка сигналов». Плата Arduino способна выполнять простую обработку сигналов. В этой главе обсуждаются разные способы такой обработки, от фильтрации сигнала, поступающего на аналоговый вход, с применением программного обеспечения вместо внешних электронных устройств до вычисления относительной величины различных частотных сигналов с применением быстрого преобразования Фурье.

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

Глава 15 «Создание библиотек». Рано или поздно вы создадите нечто замечательное, что, по вашему мнению, могли бы использовать другие. Это будет самый подходящий момент оформить свой код в виде библиотеки и выпустить ее в свет. Эта глава покажет вам, как это сделать.


Ресурсы

В поддержку этой книги на веб-сайте автора (www.simonmonk.org) создана страница. Перейдя по ссылке на страницу этой книги, вы найдете исходный код примеров, а также другие ресурсы.


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

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

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

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


Загрузка...