Главная страница
Навигация по странице:

  • Исходный код и прочие электронные ресурсы Исходный код, видеоуроки и прочие электронные ресурсы для этой главы можно загрузить с веб-страницы https://www.exploringarduino.

  • Примечание

  • ПОДКЛЮЧЕНИЕ ЖКД К ПЛАТЕ ARDUINO

  • Номер контакта Название контакта Назначение контакта

  • Рис. 12.1.

  • Глава 14. Работа с картами памяти SDПрерывания, комбинирование функций и карты SD 13 Список деталей и оборудования для проектов этой главы

  • Глава 13.

  • Глава 14.

  • Список деталей и оборудования для проектов этой главы

  • учебник. Бхв, 2020. Isbn 9781119405375 (англ.) Isbn 9785977567367 (рус.) 2020 by John Wiley & Sons, Inc. Перевод на русский язык, оформление. Ооо бхвпетербург, Ооо бхв, 2020


    Скачать 1.9 Mb.
    НазваниеБхв, 2020. Isbn 9781119405375 (англ.) Isbn 9785977567367 (рус.) 2020 by John Wiley & Sons, Inc. Перевод на русский язык, оформление. Ооо бхвпетербург, Ооо бхв, 2020
    Анкоручебник
    Дата11.12.2022
    Размер1.9 Mb.
    Формат файлаpdf
    Имя файлаB-BHV-6735-part.pdf
    ТипКнига
    #838435
    страница6 из 8
    1   2   3   4   5   6   7   8
    Глава 11. Шина SPI и библиотеки сторонних разработчиков
    272
    обеспечивает более высокую скорость передачи данных. В этой главе мы узнаем, как использовать встроенные аппаратные возможности SPI платы
    Arduino для взаимодействия с цифровым акселерометром. В частности, мы рассмотрим, как находить и устанавливать библиотеки сторонних разра- ботчиков для облегчения сопряжения со сложным оборудованием. Для ил- люстрации полезности этого подхода мы с помощью акселерометра будем управлять яркостью светодиода и выдавать звуковые сигналы, создав своего рода инструмент, реагирующий на движение звуковыми и визуальными эф- фектами.
    Примечание
    В первом издании этой книги для демонстрации принципов работы шины SPI исполь- зовалась микросхема цифрового потенциометра MCP4231, поддерживающая возмож- ности SPI. В последнее время эти микросхемы трудно найти и, кроме того, проекты на их основе не особенно стимулируют умственные способности по сравнению с примене- нием акселерометра. Но если вы хотите узнать, как реализовать сопряжение цифрового потенциометра с платой Arduino, это можно сделать, просмотрев учебный фильм на эту тему по ссылке blum.fyi/spi-digipot-tutorial.
    ОБЩИЕ СВЕДЕНИЯ О ШИНЕ SPI
    Шина SPI была разработана компанией Motorola для реализации полно- дуплексной последовательной связи между ведущим устройством и одним или несколькими ведомыми устройствами. Поскольку для протокола SPI нет формального стандарта, часто можно встретить SPI-устройства, работающие немного по-разному. Например, количество передаваемых битов может быть другим, или линия выбора ведомого устройства может не использоваться.
    В этой главе мы сделаем акцент на сопряжении платы Arduino с устрой- ствами, реализующими наиболее распространенные SPI-интерфейсы. Эти устройства поддерживаются средой разработки Arduino IDE и библиотеками сторонних разработчиков, которые мы будем использовать.
    Внимание!
    Следует иметь в виду, что, как уже упоминалось в тексте, в различных устройствах про- токол SPI может быть реализован по-разному. Поэтому чрезвычайно важно вниматель- но ознакомиться с характеристиками устройства, которое планируется использовать, по его справочному листку.
    Шина SPI может работать в четырех основных режимах, выбор конкрет- ного из которых зависит от требований конкретного устройства. Устройства
    SPI работают в синхронном режиме, т. е. передача данных синхронизиру- ется сигналом тактирования, подаваемым на линию SCLK. Данные могут вводиться в ведомое устройство или по положительному, или по отрица-

    12
    Список деталей и оборудования для проектов этой главы
    Плата Arduino Uno или Adafruit METRO 328 (1 шт.).
    USB-кабель (тип A на B для Arduino Uno, тип A на Micro-B для
    METRO 328) (1 шт.).
    Беспаечная макетная плата половинного или полного размера (1 шт.).
    Набор проволочных перемычек.
    Кнопки (2 шт.).
    Резистор номиналом 220 Ом (1 шт.).
    Резистор номиналом 1 кОм (1 шт.).
    Резистор номиналом 4,7 кОм (2 шт.).
    Резистор номиналом 10 кОм (2 шт.).
    Подстроечный потенциометр номиналом 10 кОм (может входить в состав комплекта жидкокристаллического дисплея) (1 шт.).
    Батарея 9 В (1 шт.).
    Разъем для батареи напряжением 9 В (1 шт.).
    Микросхема L7805CV стабилизатора напряжения 5 В (1 шт.).
    Электролитический конденсатор, 10 мкФ, 50 В (2 шт.).
    Диод 1N4001 (1 шт.).
    Биполярный NPN-транзистор PN2222 (1 шт.).
    Динамик с сопротивлением катушки 8 Ом (1 шт.).
    Датчик температуры TC74A0-5.0VAT (1 шт.).
    Миниатюрный вентилятор с бесщеточным электродвигателем с напряжением питания 5 В (1 шт.).
    Жидкокристаллический дисплей размером 2 строки по 16 символов со штыревыми разъемами (1 шт.).
    Исходный код и прочие электронные ресурсы
    Исходный код, видеоуроки и прочие электронные ресурсы для этой главы можно загрузить с веб-страницы https://www.exploringarduino.
    com/content2/ch12.
    Исходный код для проектов этой главы можно также загрузить на вкладке Downloads веб-страницы издательства Wiley для этой книги:
    https://www.wiley.com/go/exploringarduino2e.
    Взаимодействие с жидкокристал ли- ческими дисплеями

    Глава 12. Взаимодействие с жидкокристал ли ческими дисплеями
    300
    ЧТО ВЫ УЗНАЕТЕ ИЗ ЭТОЙ ГЛАВЫ
    О
    дно из важных преимуществ разработки автономных систем — их воз можность работать независимо от основного компьютера. До на- стоящего времени, если мы хотели выводить из платы Arduino любой тип информации, более сложный, чем мигающий светодиод, нам требовалось подключение к внешнему компьютеру. Оснастив нашу плату Arduino жидко- кристаллическим дисплеем (ЖКД), мы сможем легко отображать сложную информацию (значения показаний датчиков, данные синхронизации, пара- метры настроек, индикаторы хода исполнения и т.п.) непосредственно на са- мом устройстве Arduino, без необходимости связи с программой монитора порта, исполняющейся на основном компьютере.
    В этой главе мы рассмотрим, как подключить ЖКД к плате Arduino и как использовать библиотеку
    LiquidCrystal для отображения текстовых и про- извольных пользовательских символов на ЖКД. После того как вы освоите основные понятия в области жидкокристаллических дисплеев, мы применим некоторые компоненты из предыдущих глав, чтобы создать простой термо- стат, способный получать данные о температуре в помещении, сообщать эти данные нам и управлять вентилятором, чтобы регулировать температуру.
    Информация о значениях температуры будет отображаться на подключен- ном к плате Arduino жидкокристаллическом дисплее, а издаваемый динами- ком звуковой сигнал известит нас о повышенной температуре, реагируя на которую Arduino включит вентилятор, чтобы попытаться снизить ее.
    Примечание
    На веб-странице для этой главы (https://www.exploringarduino.com/content2/ch12) можно просмотреть обучающий видеоклип о том, как подключить жидкокристалличе- ский дисплей к плате Arduino.
    ПОДКЛЮЧЕНИЕ ЖКД К ПЛАТЕ ARDUINO
    Для проектов в этой главе нам потребуется ЖКД с параллельным интер- фейсом. Такие дисплеи широкодоступны любых типов и размеров. Наиболее распространенный ЖКД поддерживает отображение двух строк текста по 16 символов каждая (16×2). Для подключения дисплея и взаимодействия с ним он снабжен разъемом из 16 штыревых контактов (14, если дисплей не осна- щен фоновой подсветкой). В этой главе мы будем использовать один из таких дисплеев 16×2 с 16-контактным штыревым разъемом.
    Если при покупке штыревой разъем вашего дисплея не был впаян в пла- ту, то вам нужно будет припаять его самостоятельно, чтобы дисплей можно было установить на макетную плату. Дисплей с впаянным штыревым разъе- мом должен выглядеть, как показано на рис. 12.1.

    Подключение ЖКД к плате Arduino 301
    Установив ЖКД на макетную плату, нам нужно подключить его к пита- нию и плате Arduino. Все ЖКД с параллельным интерфейсом имеют одина- ковую цоколевку и поддерживают два режима интерфейса: 4-контактный или
    8-контактный. Если все необходимые задачи можно выполнить, обеспечив связь между дисплеем и платой Arduino только по четырем линиям данных, то подключаем только соответствующие четыре контакта. Кроме контактов линий связи нужно также подключить контакты для разрешения дисплея, установки режима команд или отображения, а также выбора режима записи или чтения. В табл. 12.1 приведено краткое описание всех контактов дисплея.
    Таблица 12.1. Назначение контактов дисплея 16×2 с параллельным интерфейсом
    Номер
    контакта
    Название
    контакта
    Назначение контакта
    1
    VSS
    Земля (общий)
    2
    VDD
    Питание +5 В
    3
    V0
    Настройка контраста (на потенциометр)
    4
    RS
    Выбор регистра (режим отображения или команд)
    5
    RW
    Запись/чтение
    6
    EN
    Разрешение
    7
    D0
    Линия данных 0 (не используется в 4-линейном режиме)
    8
    D1
    Линия данных 1 (не используется в 4-линейном режиме)
    9
    D2
    Линия данных 2 (не используется в 4-линейном режиме)
    10
    D3
    Линия данных 3 (не используется в 4-линейном режиме)
    11
    D4
    Линия данных 4 12
    D5
    Линия данных 5 13
    D6
    Линия данных 6 14
    D7
    Линия данных 7 15
    A
    Анод светодиода фоновой подсветки
    16
    K
    Катод светодиода фоновой подсветки
    Рис. 12.1. Жидкокристаллический дисплей 16×2 с впаянным штыревым разъемом

    IV
    Глава 13.
    Прерывания и другие специальные функции
    Глава 14.
    Работа с картами памяти SD
    Прерывания, комбинирование функций и карты SD

    13
    Список деталей и оборудования для проектов этой главы
    Плата Arduino Uno или Adafruit METRO 328 (1 шт.).
    USB-кабель (тип A на B для Arduino Uno, тип A на Micro-B для
    METRO 328) (1 шт.).
    Беспаечная макетная плата половинного или полного размера (1 шт.).
    Набор проволочных перемычек.
    Кнопка (1 шт.).
    Резистор номиналом 100 Ом (1 шт.).
    Резистор номиналом 220 Ом (3 шт.).
    Резистор номиналом 10 кОм (1 шт.).
    Трехцветный (RGB) светодиод с общим анодом диаметром 5 мм (1 шт.).
    Электролитный конденсатор, 10 мкФ, 50 В (1 шт.).
    Пьезоэлектрический зуммер.
    Микросхема 74AHCT14 — шесть инвертирующих буферов на триггере
    Шмитта (1 шт.).
    Исходный код и прочие электронные ресурсы
    Исходный код, видеоуроки и прочие электронные ресурсы для этой главы можно загрузить с веб-страницы https://www.exploringarduino.
    com/content2/ch13.
    Исходный код для проектов этой главы можно также загрузить на вкладке Downloads веб-страницы издательства Wiley для этой книги:
    https://www.wiley.com/go/exploringarduino2e.
    ЧТО ВЫ УЗНАЕТЕ ИЗ ЭТОЙ ГЛАВЫ
    В
    се разрабатываемые нами до сих пор программы для Arduino были син- хронного типа.
    Это обстоятельство вызывает несколько проблем, одна из которых состо- ит в том, что пока исполняется функция delay()
    , не могут выполняться ни- какие другие операции. При этом плата Arduino способна решать несколько задач одновременно, поэтому при простое процессора теряются ценные про- цессорные циклы.
    Прерывания и другие специальные функции

    Глава 13. Прерывания и другие специальные функции
    330
    В этой главе мы рассмотрим, как использовать аппаратные и программные прерывания, чтобы придать скетчам Arduino возможность асинхронного ис- полнения. Прерывания обеспечивают асинхронное исполнение кода, ини- циируя реакцию программы на определенные события, например, истече- ние определенного периода времени, изменение состояния входного сигнала и т.п. Как можно судить по их названию, прерывания позволяют прервать исполнение любой исполняющейся в настоящее время задачи, выполнить какую-либо другую задачу, а затем возвратиться к продолжению исполнения прерванной задачи. Мы рассмотрим, как вызывать прерывания по заплани- рованным событиям или по изменению состояния сигнала на входных кон- тактах. На основе полученных знаний мы создадим систему неблокирующих аппаратных прерываний, а также разработаем программу генератора звуко- вых сигналов по прерываниям таймера.
    АППАРАТНЫЕ ПРЕРЫВАНИЯ
    Аппаратные прерывания активируются изменением состояния контакта ввода-вывода. Прерывания этого типа могут быть особенно полезными в тех случаях, когда нужно изменить значение переменной состояния, не прибегая к постоянному опросу состояния выхода кнопки. В некоторых предыдущих главах при каждой итерации главного цикла loop()
    мы выполняли программ- ную защиту от дребезга и проверяли состояние кнопки. Такой подход рабо- тает удовлетворительно в тех случаях, когда исполнение кода в цикле loop()
    не занимает много времени.
    Но предположим, что нам нужно исполнить в цикле loop()
    довольно дли- тельную процедуру. Например, нам нужно медленно постепенно повышать яркость светодиода или скорость вращения электродвигателя, используя для этого цикл for()
    и несколько операторов задержки delay()
    . Если управ- лять цветом или скоростью повышения яркости посредством кнопки, то мы пропустим нажатия кнопки, происходящие в течение исполнения функции delay()
    . Обычно человеческая реакция достаточно инерционна, что позволяет выполнить большое количество функций в цикле loop()
    программы Arduino, включая опрос кнопки при каждой его итерации, не пропуская нажатий кнопки. Но когда цикл loop() содержит медленно исполняющиеся компонен- ты, существует вероятность пропустить события внешнего ввода.
    Для решения подобных проблем и предназначены прерывания.
    Определенные контакты платы Arduino могут вызывать внешние аппаратные прерывания. Аппаратура микроконтроллера знает состояние этих контактов и может асинхронно предоставлять их значение коду прикладной програм- мы. Таким образом, при обнаружении внешнего аппаратного прерывания исполнение главной программы можно приостановить, чтобы выполнить

    14
    Работа с картами памяти SD
    Список деталей и оборудования для проектов этой главы
    Плата Arduino Uno или Adafruit METRO 328 (1 шт.).
    USB-кабель (тип A на B для Arduino Uno, тип A на Micro-B для
    METRO 328) (1 шт.).
    Набор проволочных перемычек.
    ИК-дальномер GP2Y0A21YK0FIR компании Sharp в комплекте с JST- кабелем (1 шт.).
    Шилд регистрации данных со штыревыми разъемами для Arduino производства Adafruit (1 шт.).
    Таблеточная батарейка CR1220, 3 В, 12 мм (1 шт.).
    Карта памяти SD/MicroSD (рекомендуется карта формата SDHC емко- стью 8 ГБ) (1 шт.).
    Сетевой адаптер, 5 В, 1 А, выходной USB-разъем (1 шт.).
    Компьютер, оснащенный считывателем SD-карт (или считыватель SD- карт с USB-интерфейсом) (1 шт.).
    Малярный скотч и/или полоски 3M Command для крепления картин.
    Исходный код и прочие электронные ресурсы
    Исходный код, видеоуроки и прочие электронные ресурсы для этой главы можно загрузить с веб-страницы https://www.exploringarduino.
    com/content2/ch14.
    Исходный код для проектов этой главы можно также загрузить на вкладке Downloads веб-страницы издательства Wiley для этой книги:
    https://www.wiley.com/go/exploringarduino2e.
    ЧТО ВЫ УЗНАЕТЕ ИЗ ЭТОЙ ГЛАВЫ
    М
    ногочисленные устройства на основе Arduino используются для реги- страции самых разнообразных данных: состояние погоды, атмосфер- ные условия, проход посетителей в здание, электрическая нагрузка на пред- приятиях и в учреждениях и др. Благодаря своим небольшим размерам,

    Глава 14. Работа с картами памяти SD
    352
    минимальному энергопотреблению и легкости сопряжения с громадным ко- личеством датчиков устройства на основе Arduino представляют собой оче- видный выбор для создания регистраторов данных , записывающих и храня- щих информацию в течение определенного периода времени. Регистраторы данных часто применяются в разных условиях для сбора сведений о поль- зователях и окружающей среде, сохраняя их в энергонезависимой памяти какого-либо типа, например, на SD-карте.
    В этой главе мы рассмотрим все, что может понадобиться о взаимодей- ствии платформы Arduino с SD-картами. В частности, выясним, как записы- вать данные на SD-карту и считывать их с нее. Кроме того, мы рассмотрим, как использовать часы реального времени для добавления точных меток вре- мени к собираемым данным. Также мы узнаем, как выводить на экран считы- ваемые данные.
    Примечание
    Видеоклип о регистрации данных с помощью Arduino, а также видеоурок на более сложную тему регистрации данных о местоположении с помощью GPS-приемника мож- но просмотреть на веб-странице для этой главы https://www.exploringarduino.com/
    content2/ch14.
    ПОДГОТОВКА К РЕГИСТРАЦИИ ДАННЫХ
    Системы регистрации данных не представляют собой ничего сложного.
    Они обычно содержат устройство сбора данных какого-либо типа (напри- мер, аналоговые датчики) для получения исходной информации. А для хра- нения больших объемов данных, полученных в течение длительного периода времени, предусмотрено какое-либо устройство накопления информации.
    В этой главе особое внимание уделяется нескольким распространенным способам использования SD-карты памяти совместно с платой Arduino для хранения полезных данных. Для регистрации данных существует мно- го разных применений. Далее приводится небольшой список подходящих проектов.
    Метеостанция для отслеживания условий освещенности, температуры и влажности в течение определенного периода времени.
    GPS-трекер и регистратор для слежения за местоположением.
    Система мониторинга температуры компонентов персонального ком- пьютера.
    Система сбора данных об использовании освещения дома или в офисе.
    Далее в этой главе мы создадим систему регистрации данных с ИК-дат- чиком расстояния для сбора данных о посещаемости комнаты.

    V
    Глава 15.
    Радиосвязь
    Глава 16.
    Беспроводная связь Bluetooth
    Глава 17.
    Wi-Fi и облачные хранилища
    Беспроводная связь

    15
    Радиосвязь
    Список деталей и оборудования для проектов этой главы
    Плата Arduino Uno или Adafruit METRO 328 (1 шт.).
    USB-кабель (тип A на B для Arduino Uno, тип A на Micro-B для
    METRO 328) (1 шт.).
    Беспаечная макетная плата половинного или полного размера (1 шт.).
    Набор проволочных перемычек.
    Резистор номиналом 220 Ом (1 шт.).
    Пьезоэлектрический зуммер (1 шт.).
    Сетевой адаптер, 5 В, 1 А, выходной USB-разъем (1 шт.).
    Радиоприемный модуль с рабочей частотой 315 МГц (или подоб- ный радиомодуль с рабочей частотой, разрешенной в вашей стране)
    (1 шт.).
    Однокнопочный пульт дистанционного управления с радиопередат- чиком на частоте 315 МГц (или подобный пульт управления с рабочей частотой, разрешенной в вашей стране) (1 шт.).
    Модуль управляемого силового реле (реле IoT Power Relay компании
    Digital Loggers, Inc.) (1 шт.).
    Лампочка с сетевым питанием (1 шт.).
    Небольшая отвертка (1 шт.).
    Исходный код и прочие электронные ресурсы
    Исходный код, видеоуроки и прочие электронные ресурсы для этой главы можно загрузить с веб-страницы https://www.exploringarduino.
    com/content2/ch15.
    Исходный код для проектов этой главы можно также загрузить на вкладке Downloads веб-страницы издательства Wiley для этой книги:
    https://www.wiley.com/go/exploringarduino2e
    ЧТО ВЫ УЗНАЕТЕ ИЗ ЭТОЙ ГЛАВЫ
    Д
    ля многих микроконтроллерных проектов часто требуется наличие возможности радиосвязи. Оснастить устройство беспроводной свя- зью можно многими способами, но проще всего использовать радиомодуль.

    1   2   3   4   5   6   7   8


    написать администратору сайта