Привет, Хаброжители! Что такое Arduino? За этим словом прячется легкое и простое устройство, которое способно превратить кучу проводов и плат в робота, управлять умным домом и многое другое. Разнообразие устройств ввода/вывода — датчиков, индикаторов, дисплеев и электромоторов — позволяет создавать самые невероятные проекты. Второе издание этой книги было полностью переработано, ведь технологии не стоят на месте. Познакомившись с основами Arduino, вы сможете экспериментировать с сенсорными экранами и жидкокристаллическими дисплеями, займетесь робототехникой, освоите работу с датчиками и беспроводной передачей данных и научитесь дистанционно управлять устройствами с помощью телефона. В мире продано уже более 35000 экземпляров этой книги.
Текстовую информацию в одном направлении легко можно передать с помощью беспроводного канала, связывающего две системы на основе Arduino с недорогими модулями, работающими в радиочастотном диапазоне, такими как радиопередатчик и приемник на рис. 16.1. Обычно эти модули продаются парами, и их часто называют модулями или наборами RF Link (радиосвязи). Прекрасные примеры — модуль 44910433 компании PMD Way или модули WRL-10534 и WRL-10532 компании SparkFun. В наших проектах мы будем использовать самые популярные типы модулей, работающие в радиодиапазоне 433 МГц.
Выводы в нижней части модуля передатчика на рис. 16.2 имеют следующие назначения (слева направо): вход данных, питание 5 В и «земля». Контакт для подключения внешней антенны находится в правом верхнем углу платы. Антенной может служить кусок провода. Но обойтись можно и без нее, если передача происходит на короткие расстояния (конструкция разных моделей может немного отличаться. Обязательно загляните в документацию, чтобы определить назначение выводов модуля, прежде чем выполнять его подключение).
Подключается приемник просто: контакты V+ и V− подключите к контактам 5 V и GND, а контакт DATA приемника — к контакту для приема данных на плате Arduino.
Маркировка этих контактов обычно наносится с обратной стороны модуля. Если с прочтением маркировки возникли трудности, поищите описание модуля в интернете или обратитесь к продавцу.
До начала работы с модулями загрузите и установите последнюю версию библиотеки VirtualWire, как описывалось в главе 7. Вместе с библиотекой в архиве с примерами для этой книги есть и скетч. Архив доступен по адресу nostarch.com/arduino-workshop-2nd-edition. После установки можно переходить к следующему разделу.
В этом проекте мы реализуем дистанционное управление двумя цифровыми выходами. Вы будете нажимать кнопки, подключенные к одной плате Arduino, и с их помощью управлять соответствующими цифровыми выходами на другой, расположенной неподалеку. Этот проект наглядно покажет, как пользоваться модулями радиосвязи и как определить максимальное расстояние, на котором еще возможно дистанционное управление с применением модулей. Дальше вы уже сможете использовать их для решения более сложных задач (на открытом воздухе максимальное расстояние — примерно 100 м, но в закрытых помещениях оно будет меньше из-за поглощения радиоволн препятствиями между модулями).
Для сборки передатчика нужно следующее оборудование:
На схеме передатчика есть две кнопки без фиксации с фильтром против дребезга контактов, подключенные к цифровым контактам 2 и 3, и модуль передатчика, подключенный, как описывалось выше (рис. 16.4).
Оборудование для приемника
Для сборки приемника нужно следующее оборудование:
Схема приемника содержит два светодиода, подключенных к цифровым контактам 6 и 7. Контакт DATA модуля приемника подключен к цифровому контакту 8, как на рис. 16.5.
Вы можете заменить макетную плату, светодиоды, резисторы и модуль приемника экраном приемника Freetronics 433 МГц от компании Freetronics (рис. 16.6).
Теперь рассмотрим скетч передатчика. Введите и загрузите следующий скетч в плату Arduino с подключенным модулем передатчика:
Работа с модулями радиосвязи в скетчах осуществляется функциями 3 из библио-
теки VirtualWire 1. В 4 выбирается цифровой вывод 8, который будет использоваться для обмена данными между Arduino и модулем передатчика, и устанавливается скорость передачи (вы можете использовать любой другой цифровой вывод, кроме 0 и 1, которые соединены с последовательным портом).
Скетч передатчика читает состояния двух кнопок, подключенных к цифровым контактам 2 и 3, и посылает в модуль радиосвязи один текстовый символ, соответствующий этим состояниям. Например, когда нажимается кнопка, подключенная к цифровому контакту 2, на нем устанавливается уровень HIGH и Arduino посылает символ a, а когда кнопка отпускается — b. Когда нажимается кнопка, подключенная к цифровому контакту 3, на нем устанавливается уровень HIGH и Arduino посылает символ c, а когда кнопка отпускается — d. Все четыре возможных состояния определяются начиная со строки 2.
Передача символа выполняется в одной из четырех инструкций if, начиная с 5. К примеру, в инструкции if-then 6. Переменная для передачи используется дважды — например, on2, как показано ниже:
Функция vw_send посылает содержимое переменной on2, но ей нужно знать размер этого содержимого в символах. Он определяется вызовом функции strlen().
Теперь добавим скетч приемника. Введите и загрузите следующий скетч в Arduino с подключенным модулем приемника:
Как и в скетче передатчика, здесь используются функции из библиотеки VirtualWire для настройки модуля приемника 1 и установки скорости приема данных. В 2 настраивается цифровой вывод на плате Arduino, через который будут приниматься входящие данные (контакт 8).
Во время работы скетча модуль приемника принимает символы от передатчика и посылает в Arduino. Вызовом функции vw_get_message() 3 скетч извлекает символы, полученные платой, и интерпретирует их с помощью инструкции switch-case 4. Например, нажатие кнопки S1 на передатчике вызовет отправку символа a. После получения символа приемник установит уровень HIGH на цифровом выходе 6 и включит светодиод.
Эту пару простых устройств можно использовать для более сложного алгоритма дистанционного управления системами на основе Arduino, посылающего коды в виде простых символов, которые будут интерпретироваться на стороне приемника.
Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок
По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Для Хаброжителей скидка 30% по купону — Arduino
Об авторе
Джон Бокселл (John Boxall) более 26 лет занимается разработкой, распространением и продажей электроники. Последние годы в свободное время он пишет учебные пособия, проекты и делает обзоры об Arduino.
Беспроводная передача информации
Применение недорогих модулей беспроводной связи
Текстовую информацию в одном направлении легко можно передать с помощью беспроводного канала, связывающего две системы на основе Arduino с недорогими модулями, работающими в радиочастотном диапазоне, такими как радиопередатчик и приемник на рис. 16.1. Обычно эти модули продаются парами, и их часто называют модулями или наборами RF Link (радиосвязи). Прекрасные примеры — модуль 44910433 компании PMD Way или модули WRL-10534 и WRL-10532 компании SparkFun. В наших проектах мы будем использовать самые популярные типы модулей, работающие в радиодиапазоне 433 МГц.
Выводы в нижней части модуля передатчика на рис. 16.2 имеют следующие назначения (слева направо): вход данных, питание 5 В и «земля». Контакт для подключения внешней антенны находится в правом верхнем углу платы. Антенной может служить кусок провода. Но обойтись можно и без нее, если передача происходит на короткие расстояния (конструкция разных моделей может немного отличаться. Обязательно загляните в документацию, чтобы определить назначение выводов модуля, прежде чем выполнять его подключение).
Подключается приемник просто: контакты V+ и V− подключите к контактам 5 V и GND, а контакт DATA приемника — к контакту для приема данных на плате Arduino.
Маркировка этих контактов обычно наносится с обратной стороны модуля. Если с прочтением маркировки возникли трудности, поищите описание модуля в интернете или обратитесь к продавцу.
До начала работы с модулями загрузите и установите последнюю версию библиотеки VirtualWire, как описывалось в главе 7. Вместе с библиотекой в архиве с примерами для этой книги есть и скетч. Архив доступен по адресу nostarch.com/arduino-workshop-2nd-edition. После установки можно переходить к следующему разделу.
Модули радиосвязи бюджетны и просты в использовании, но в них нет средств проверки и исправления ошибок, которые гарантировали бы достоверность принимаемых данных. Поэтому лучше использовать их только для решения простых задач (например, для несложного дистанционного управления). Если вам нужна высокая надежность передачи данных, используйте модули LoRa и подобные им. О них рассказывается дальше.
Проект 46: пульт дистанционного управления
В этом проекте мы реализуем дистанционное управление двумя цифровыми выходами. Вы будете нажимать кнопки, подключенные к одной плате Arduino, и с их помощью управлять соответствующими цифровыми выходами на другой, расположенной неподалеку. Этот проект наглядно покажет, как пользоваться модулями радиосвязи и как определить максимальное расстояние, на котором еще возможно дистанционное управление с применением модулей. Дальше вы уже сможете использовать их для решения более сложных задач (на открытом воздухе максимальное расстояние — примерно 100 м, но в закрытых помещениях оно будет меньше из-за поглощения радиоволн препятствиями между модулями).
Оборудование для передатчика
Для сборки передатчика нужно следующее оборудование:
- плата Arduino и кабель USB;
- контейнер для батарей AA и кабель с разъемом (использовались в главе 14);
- один модуль передатчика, работающий в радиодиапазоне 433 МГц;
- два резистора номиналом 10 кОм (R1 и R2);
- два конденсатора емкостью 100 нФ (C1 и C2);
- две кнопки без фиксации;
- одна макетная плата.
Схема передатчика
На схеме передатчика есть две кнопки без фиксации с фильтром против дребезга контактов, подключенные к цифровым контактам 2 и 3, и модуль передатчика, подключенный, как описывалось выше (рис. 16.4).
Оборудование для приемника
Для сборки приемника нужно следующее оборудование:
- плата Arduino и кабель USB;
- контейнер для батарей AA и кабель с разъемом (использовались в главе 14);
- один модуль приемника, работающий в радиодиапазоне 433 МГц;
- одна макетная плата;
- два светодиода по вашему выбору;
- два резистора номиналом 560 Ом (R1 и R2).
Схема приемника
Схема приемника содержит два светодиода, подключенных к цифровым контактам 6 и 7. Контакт DATA модуля приемника подключен к цифровому контакту 8, как на рис. 16.5.
Вы можете заменить макетную плату, светодиоды, резисторы и модуль приемника экраном приемника Freetronics 433 МГц от компании Freetronics (рис. 16.6).
Скетч передатчика
Теперь рассмотрим скетч передатчика. Введите и загрузите следующий скетч в плату Arduino с подключенным модулем передатчика:
Работа с модулями радиосвязи в скетчах осуществляется функциями 3 из библио-
теки VirtualWire 1. В 4 выбирается цифровой вывод 8, который будет использоваться для обмена данными между Arduino и модулем передатчика, и устанавливается скорость передачи (вы можете использовать любой другой цифровой вывод, кроме 0 и 1, которые соединены с последовательным портом).
Скетч передатчика читает состояния двух кнопок, подключенных к цифровым контактам 2 и 3, и посылает в модуль радиосвязи один текстовый символ, соответствующий этим состояниям. Например, когда нажимается кнопка, подключенная к цифровому контакту 2, на нем устанавливается уровень HIGH и Arduino посылает символ a, а когда кнопка отпускается — b. Когда нажимается кнопка, подключенная к цифровому контакту 3, на нем устанавливается уровень HIGH и Arduino посылает символ c, а когда кнопка отпускается — d. Все четыре возможных состояния определяются начиная со строки 2.
Передача символа выполняется в одной из четырех инструкций if, начиная с 5. К примеру, в инструкции if-then 6. Переменная для передачи используется дважды — например, on2, как показано ниже:
vw_send((uint8_t *)on2, strlen(on2));
Функция vw_send посылает содержимое переменной on2, но ей нужно знать размер этого содержимого в символах. Он определяется вызовом функции strlen().
Скетч приемника
Теперь добавим скетч приемника. Введите и загрузите следующий скетч в Arduino с подключенным модулем приемника:
Как и в скетче передатчика, здесь используются функции из библиотеки VirtualWire для настройки модуля приемника 1 и установки скорости приема данных. В 2 настраивается цифровой вывод на плате Arduino, через который будут приниматься входящие данные (контакт 8).
Во время работы скетча модуль приемника принимает символы от передатчика и посылает в Arduino. Вызовом функции vw_get_message() 3 скетч извлекает символы, полученные платой, и интерпретирует их с помощью инструкции switch-case 4. Например, нажатие кнопки S1 на передатчике вызовет отправку символа a. После получения символа приемник установит уровень HIGH на цифровом выходе 6 и включит светодиод.
Эту пару простых устройств можно использовать для более сложного алгоритма дистанционного управления системами на основе Arduino, посылающего коды в виде простых символов, которые будут интерпретироваться на стороне приемника.
Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок
По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Для Хаброжителей скидка 30% по купону — Arduino