Коммутатор сигналов на ардуино
Вывод COM подключается к аналоговому выводу микроконтроллера. Значения на цифровых входах A, B, C определяют какой из каналов будет соединен с выводом COM. Соединение возможно только при наличии разрешающего сигнала (низкого уровня) на входе INH.
Технические характеристики микросхемы CD4051 вы можете найти в Даташите.
Теперь о применении микросхемы. С ее помощью можно, например, управлять 8 светодиодами или считывать значения 8 потенциометров. Можно увеличить количество пьезоизлучателей, подключаемых к Ардуино для создания MIDI барабанной установки. Я для примера покажу, как можно подключить 8 фоторезисторов к Ардуино.
Схема подключения 8 фоторезисторов к Ардуино с использованием аналогового коммутатора CD4051 |
После прошивки данного скетча в Ардуино откройте монитор порта, в нем будут отображаться значения, считанные с фоторезисторов. Я же для демонстрации добавил в схему блютуз модуль и вывел полученные значения на смартфон с установленным на нем приложением RemoteXY:
Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.
Последние посетители 0 пользователей онлайн
На днях приснилось, что поймал на удочку "Маяк-203". Рыбалкой никогда не увлекался и аппарат этот последний раз видел в школьные годы
Вся проблема в том, что это барахло не умеет заряжать литий. Во-первых, убьете АКБ, во-вторых, рискуете получить пожар. Плата защиты тоже не умеет заряжать АКБ. Так что не страдайте фигней и купите нормальное ЗУ. Тот же imax стоит всего в районе 1500р.
Наступать каждый раз ногой в одно и то же место ничуть не проще и не "автоматичней", чем нажимать рукой кнопку. Не знаю, кто как, а я совершенно не задумываюсь о том, где стоят мои ноги, когда я открываю дверь.
Интересно,даже заводские усилки делают со стрелками на жк дисплеях как вариант отображения.Плата управления с жк -альтернатива механике+без заморочек с балансировкой+можно прикрутить полное управление /селектор/пульт/дежурка/ и даже защиту настроить программно. На видео сильно мельтешит,нужно как-то регулировать в режимах скорость.. Делают киты с выходом вга , я что-то не понял,платку к любому монитору можно подключить.
Ну вот. наконец-то. Можно считать, что ковид побеждён. И всё опять, благодаря отечественным разработкам, которых ни у кого нету. Примерно так же, как и с новыми вооружениями. Короче. Вадим Макаров изобретёл офигенную молекулу, побеждающую ковид. Она присоединяется к клетке, в которой находится её хозяин, прикрепляясь к гетеросифозному глюкану. Молекула называется ПЕДРСТР. или что-то в этом роде. В общем. еще немного и заживём. Где-то ближе к весне, наверное.
Аккумулятор 6F22 (Крона) Li-Ion с USB-зарядкой и индикатором заряда
Их можно купить в интернете менее чем за два доллара за пару, что делает их одним из самых недорогих вариантов передачи данных, которые вы можете получить. И что самое приятное, эти модули очень крошечные, что позволяет использовать беспроводной интерфейс практически в любом проекте.
Обзор оборудования
Давайте подробнее рассмотрим модули передатчика и приемника 433 МГц.
Этот маленький модуль является передатчиком. Сердцем модуля является резонатор SAW, настроенный на работу в диапазоне 433.xx МГц. Есть переключающий транзистор и несколько пассивных компонентов, вот и все.
Когда на вход DATA поступает логическая 1, генератор начинает работать, генерируя постоянную РЧ несущую волну на частоте 433.xx МГц, а когда на входе DATA устанавливается логический 0, генератор останавливается. Этот метод известен как Amplitude Shift Keying, о котором мы вскоре поговорим подробнее.
Это приемный модуль. Хотя все выглядит сложным, но он так же просто, как модуль передатчика. Он состоит из радиочастотной схемы и пары операционных усилителей для усиления принимаемой несущей от передатчика. Усиленный сигнал подается на ФАПЧ (фазовая автоподстройка частоты), которая позволяет декодеру «выделить» поток цифровых битов, что обеспечивает лучшее декодирование и помехоустойчивость.
Как обсуждалось выше, для отправки цифровых данных по радиоканалу, эти модули используют технику, называемую Amplitude Shift Keying или ASK (амплитудная модуляция). Это когда амплитуда (то есть уровень) несущей волны (в нашем случае это сигнал 433 МГц) изменяется в ответ на входящий сигнал данных.
Это очень похоже на аналоговую технику амплитудной модуляции, с которой вы, возможно, знакомы, если вы собирали AM-радио. Иногда это называется двоичной амплитудной манипуляцией, потому что нам необходимо только два уровня. Вы можете представить это как переключатель ВКЛ / ВЫКЛ.
Амплитудная модуляция имеет преимущество в том, что она очень проста в реализации. На ее основе довольно просто спроектировать схему декодера. Также для ASK требуется меньшая полоса пропускания, чем другим методам модуляции, таким как FSK (частотная модуляция). Это одна из причин того дешевизны модулей.
Однако недостатком является то, что амплитудная модуляция подвержена помехам от других радиоустройств и фоновому шуму. Но пока вы обеспечиваете передачу данных на относительно медленной скорости, она может надежно работать в большинстве сред.
Распиновка передатчика и приемника 433 МГц
Давайте посмотрим на распиновку модулей передатчика и приемника RF 433 МГц.
Схема подключения передатчика и приемника 433 МГц к Arduino UNO
Теперь, когда мы знаем все о модулях, пришло время использовать их!
Поскольку мы будем передавать данные между двумя платами Arduino, нам, конечно, понадобятся две платы Arduino, две макетные платы и пара соединительных проводов.
Схема для передатчика довольно проста. У него всего три соединения. Подключите контакт VCC к контакту 5 В и минус к Arduino. Контакт Data-In должен быть подключен к цифровому контакту Arduino № 12. Вы должны использовать контакт 12, так как по умолчанию библиотека, которую мы будем использовать в нашем скетче, использует этот контакт для ввода данных.
На следующем рисунке показана схема соединения.
После подключения передатчика вы можете перейти к приемнику. Подключение приемника так же просто, как и передатчика.
Так же нужно сделать только три соединения. Подключите контакт VCC к контакту 5 В и минус на Arduino. Любой из двух средних выводов Data-Out должен быть подключен к цифровому выводу № 11 на Arduino.
Вот так должна выглядеть схема соединения для приемника.
Прежде чем мы начнем программировать, установим библиотеку RadioHead в Arduino IDE.
Библиотека RadioHead собирает наши данные, инкапсулирует их в пакет данных, который включает в себя CRC (проверку циклически избыточного кода), а затем отправляет его с необходимой преамбулой и заголовком на другую Arduino. Если данные получены правильно, принимающая плата Arduino проинформирует о наличии доступных данных и приступит к их декодированию и выполнению.
Пакет RadioHead формируется следующим образом: 36-битный поток из пар «1» и «0», называемый «обучающей преамбулой», отправляется в начале каждой передачи. Эти биты необходимы приемнику для регулировки его усиления до получения фактических данных. Затем следует 12-битный «Начальный символ», а затем фактические данные (полезная нагрузка).
Последовательность проверки или CRC добавляется в конец пакета, который пересчитывается RadioHead на стороне приемника, и если проверка CRC верна, приемное устройство получает предупреждение. Если проверка CRC не пройдена, пакет отбрасывается.
Весь пакет выглядит примерно так:
Скетч Arduino для радиочастотного передатчика 433 МГц
Вот скетч, который мы будем использовать для нашего передатчика:
Это довольно короткий набросок, но это все, что вам нужно для передачи сигнала.
Код начинается с подключения библиотеки RadioHead ASK. Мы также должны подключить библиотеку SPI Arduino, так как от нее зависит библиотека RadioHead.
Далее нам нужно создать объект ASK, чтобы получить доступ к специальным функциям, связанным с библиотекой RadioHead ASK.
В функции setup() нам нужно инициализировать объект ASK.
Скетч Arduino для радиочастотного приемника 433 МГц
Подключите приемник Arduino к компьютеру и загрузите следующий код:
Как и код передатчика, код приемника начинается с подключения библиотек RadioHead и SPI и создания объекта ASK.
Затем мы возвращаемся к началу цикла и делаем все заново.
Увеличение дальности радиочастотных модулей 433 МГц
Антенна, которую вы используете как для передатчика, так и для приемника, может реально повлиять на дальность передачи, которую вы сможете получить с помощью этих радиочастотных модулей. На самом деле без антенны вы сможете общаться на расстоянии не более метра.
При правильной конструкции антенны вы сможете общаться на расстоянии до 50 метров. Конечно, это на открытом пространстве. Ваш диапазон в помещении, особенно через стены, будет слегка ослаблен.
Антенна не должна быть сложной. Простой кусок одножильного провода может послужить отличной антеной для передатчика и приемника. Диаметр антенны вряд ли имеет какое-либо значение, если длина антенны правильная.
Самая эффективная антенна имеет ту же длину, что и длина волны, для которой она используется. Для практических целей достаточно половины или четверти этой длины.
Длина волны частоты рассчитывается как:
Длина волны = скорость распространения (v) / частота (f)
В воздухе скорость передачи равна скорости света, которая, если быть точным, составляет 299 792 458 м/с. Итак, для частоты 433 МГц длина волны равна:
Длина волны = 299 792 458 м/с / 433 000 000 Гц = 0,6924 м
Полноволновая антенна длиной 69,24 см довольно длинная, ее использование не очень удобно. Вот почему мы выберем четвертьволновую антенну, длина которой составляет 17,3 см.
На всякий случай, если вы экспериментируете с другими радиопередатчиками, которые используют разные частоты, вы можете использовать ту же формулу для расчета необходимой длины антенны. Довольно просто, верно?
Даже 17,3 см антенна может показаться неудобной в вашем крошечном проекте Arduino. Но НЕ соблазняйтесь наматывать антенну, чтобы сделать ее более компактной, так как это серьезно повлияет на дальность действия. Прямая антенна всегда лучше!
Следующие несколько уроков будут посвящены организации сети Ethernet. В этом уроке я изложу минимум информации, необходимой для практической работы с сетью. Немного расскажу об Ethernet модуле ENC28J60 и приведу схему подключения его к плате Ардуино.
Локальная сеть Ethernet.
Ethernet – самый распространенный в мире сетевой интерфейс. Когда говорят об объединении компьютеров в локальную сеть, как правило, имеют в виду именно его. Ethernet контроллер стал штатным устройством для каждого компьютера.
Первый вариант стандарта Ethernet появился еще в 70х годах. Первоначально средой передачи был коаксиальный кабель, топология сети – шина, скорость передачи 10 мегабит/сек. Со временем появилось множество разновидностей Ethernet со скоростью передачи до 100 гигабит/сек, изменилась архитектура сети, стала другой среда передачи. Об этом существует много подробной информации: протоколы, форматы данных, алгоритмы обмена и т.п. Я буду рассказывать о сети Ethernet чисто с практической стороны.
Нам интересны стандарты Ethernet (10 Мбит/сек) и Fast Ethernet (100 Мбит/сек). Они совместимы и отличаются только скоростью передачи данных. Для подключения к сети плат Ардуино мы будем использовать контроллеры первого стандарта (10 Мбит/сек), а штатные сетевые контроллеры компьютеров поддерживают второй стандарт (100 Мбит/сек). Но это не помешает подключить компьютер к той же сети. Стандарты обозначаются соответственно 10BASE-T и 100BASE-TX.
Топология сети.
Два Ethernet устройства могут быть соединены между собой непосредственно. Никакие дополнительные блоки не требуются, достаточно одного кабеля.
Если используется более двух устройств, то соединение происходит по радиальной топологии с помощью хабов (HUB).
Хаб или сетевой концентратор - это электронный прибор для соединения нескольких сетевых устройств в один сегмент сети. Он содержит несколько портов ввода/вывода.
По сути это повторитель. Все сигналы, которые подаются на один из его портов, повторяются на остальных. Несмотря на то, что физически топология сети выглядит как радиальная, логически с использованием хабов она превращается в “общую шину”. Любые пакеты данных в сети попадают на все сетевые устройства, в том числе и на устройства, которым они не предназначены. Благодаря этому возможны конфликты данных, увеличивается нагрузка на сеть. В настоящее время хабы практически вытеснены более совершенными устройствами - сетевыми коммутаторами.
Хабы можно соединять между собой, но только в древовидные структуры.
При этом недостатки, связанные с логической топологией ”общая шина” усугубляются за счет увеличения количества сетевых устройств.
Гораздо больше возможностей имеет сеть, созданная на базе коммутаторов (switch).
Топология сети выглядит, так же, как и сеть, созданная с помощью хабов. Но в отличие от последней, топология сети остается радиальной не только на физическом, но и на логическом уровне.
Коммутатор это прибор для соединения нескольких устройств сети в пределах одного или нескольких сегментов.
Подобно хабу коммутатор имеет несколько портов ввода/вывода. Но в отличие от хаба коммутатор передает пакеты данных не всем подключенным к нему устройствам, а только непосредственно получателю. Благодаря этому увеличивается производительность сети, повышается надежность.
- Хаб - это “тупой” аппаратный повторитель сигналов.
- Коммутатор – интеллектуальное устройство, которое анализирует заголовки пакетов и передает данные только на нужные порты.
Обычно сетевой коммутатор поддерживает различные скорости передачи данных одновременно.
К портам коммутаторов могут быть подключены другие коммутаторы или хабы. Это позволяет почти бесконечно расширять сеть.
Роутер или маршрутизатор – это сетевой шлюз, устройство для передачи пакетов между различными сетями. Как правило, используется для подключения к глобальной сети Интернет.
Большинство роутеров также выполняют функции сетевых коммутаторов. В этом случае можно обойтись без сетевого коммутатора.
Среда передачи данных Ethernet (кабель).
В качестве среды передачи нужные нам стандарты требуют применения кабеля категории 3 или категории 5. Используются только две неэкранированные витые пары (4 провода).
Одна витая пара предназначена для передачи данных, другая для приема.
Кабель обозначается UTP - Unshielded twisted pair (неэкранированная витая пара). Часто на нем написано ”ETHERNET LAN CABLE”.
Стандартный кабель содержит 4 витые пары.
Мы будем использовать только две из них.
Для подключения к портам Ethernet используются 8 контактные разъемы RJ-45.
Есть два варианта распиновки разъемов: T568A и T568B. Часто просто называются варианты A и B.
Номер контакта | Назначение сигнала |
1 | TX+ |
2 | TX- |
3 | RX+ |
6 | RX- |
Понятно, что выходные сигналы одного устройства должны подключаться к входам другого, и наоборот. Поэтому существует 2 варианта кабелей: прямой и перекрестный. Прямой используется для соединения между устройствами с разъемами типов A и B, а перекрестный – для соединения портов с одинаковой распиновкой.
Для нас это означает:
- если мы будем подключать плату Ардуино к материнской плате компьютера или другой плате Ардуино, то необходимо использовать перекрестный кабель;
- если плата Ардуино подключается к коммутатору или роутеру – кабель должен быть прямым.
Прямой кабель предполагает, что соединяются контакты с одинаковыми номерами. Соответствие сигналов вход – выходу обеспечивается распиновкой разъемов сетевых портов.
В перекрестном кабеле провода соединяются таким образом, чтобы у связанных кабелем портов входные сигналы были подключены к выходам, а выходные к входам.
На рисунках показаны общепринятые цвета жил кабеля. Лучше их придерживаться.
В сетевом интерфейсе Ethernet существует полная гальваническая развязка каждого устройства от среды передачи (кабеля). Развязка осуществляется за счет применения импульсных трансформаторов.
Это значительно повышает помехозащищенность сети и обеспечивает электрическую безопасность сетевых устройств.
Модуль ENC28J60.
Платы Ардуино будем подключать к сети Ethernet с помощью модуля ENC28J60. Физически он представляет собой плату размерами 51 x 18 мм.
Это самый дешевый сетевой Ethernet контроллер. По моей партнерской ссылке на момент написания статья его цена составляет всего 250 руб.
Моя цель не сделать обзор возможностей и технических характеристик модуля. Возможно, я напишу отдельную статью о нем в рубрике ”Электронные компоненты”. А сейчас я приведу информацию необходимую для работы модуля совместно с платами Ардуино.
Модуль выполнен на базе микросхемы ENC28J60 фирмы Microchip. Практически это микросхема ENC28J60 в стандартном включении.
Техническую информацию фирмы-производителя можно посмотреть по этой ссылке ENC28J60.pdf.
Вот принципиальная схема модуля.
Основные характеристики модуля ENC28J60.
- Совместимость с Ethernet сетями 10/100/1000 Base-T. Скорость передачи данных 10 мбит/сек, реализация TCP/IP стека.
- Интерфейс связи с микроконтроллером – SPI, частота до 20 мГц.
- Напряжение питания 3,1 – 3,6 В. Типовое 3,3 В.
- Интерфейсные входы модуля позволяют непосредственное подключение к сигналам с 5 вольтовыми уровнями. Максимально-допустимое напряжение на входах интерфейса SPI - 6 В. В половине статей о подключении ENC28J60 к Ардуино написано, что необходимо подключать входные сигналы через согласующие резисторные делители. Это не так. Сомневающееся могут посмотреть документацию на микросхему ENC28J60.
- Ток потребления от источника питания 3,3 В:
- в момент передачи может достигать 180 мА;
- в активном состоянии, но без передачи 120 мА;
- в режиме ожидания (сигнал CS в неактивном уровне) не более 2 мА.
Это характеристики, которые я решил выделить. Главное:
- для питания модуля необходимо использовать источник напряжением 3,3 В и выходным током до 180 мА;
- выводы интерфейса модуля допускается подключать к 5 вольтовым сигналам.
Интерфейс связи с микроконтроллером.
К микроконтроллеру модуль подключается через 10 контактный разъем типа PLHD, расположенный на печатной плате устройства.
Назначение контактов (распиновка) модуля ENC28J60.
Контакт Обозначение Направление Назначение 1 CLK выход Выход тактового сигнала 2 INT выход Сигнал прерывания 3 WOL - Зарезервирован 4 SO выход Сигнал SO интерфейса SPI 5 SI вход Сигнал SI интерфейса SPI 6 SCK вход Сигнал SCK интерфейса SPI 7 CS вход Сигнал CS интерфейса SPI (выбор контроллера) 8 RST вход Сброс 9 VCC - Питание модуля 3,3 В 180 мА 10 GND - Общий вывод Подключение модуля ENC28J60 к плате Ардуино.
Для питания модуля необходим источник напряжения 3,3 В. Такое напряжение есть на плате Arduino UNO. Поэтому я решил подключить модуль к ней. Для других плат пришлось бы добавлять стабилизатор напряжения 3,3 В.
В характеристиках на плату Arduino UNO указано, что ток потребления на выводе 3,3 В должен быть не более 50 мА. А нам необходимо 180 мА. Но на моей плате Arduino UNO в качестве стабилизатора 3,3 В используется микросхема XC6206P332MR. На плате это корпус SOT-23 с обозначением 662K. Допустимый выходной ток для этого стабилизатора 200 мА (технические характеристики можно посмотреть по ссылке XC6206.pdf). Т.е. модуль можно смело запитывать от Arduino UNO.
Для управления модулем мы будем использовать аппаратный интерфейс SPI микроконтроллера. Поэтому выбора выводов платы Ардуино для подключения модуля у нас нет.
Таблица соединения выводов платы Arduino UNO и модуля ENC28J60 выглядит так.
Плата Arduino UNO Модуль ENC28J60 Вывод № вывода Обозначение 12 4 SO 11 5 SI 13 6 SCK 10 7 CS RES 8 RST 3.3 V 9 VCC GND 10 GND Кому-то удобнее будет работать со схемой.
У меня все это выглядит так.
К роутеру я подключил модуль прямым кабелем.
В следующем уроке изучим библиотеку для управления модулем ENC28J60, научимся писать программы для передачи данных через сеть Ethernet.
Читайте также: