Давно уже обзавелся я этими модулями, да все никак руки до них не доходили попробовать. В общих чертах, это радиомодули, работающие на частоте 2.4 ГГц с подключением к микроконтроллеру по SPI-интерфейсу. Для работы требуется напряжение в диапазоне от 1,8 до 3,6 вольт, входы/выходы толерантны к 5 вольтам, поэтому при подключении к пяти вольтовым устройствам дополнительные согласующие цепи ставить нет необходимости.
Для подключения радиомодуля выведена гребенка контактов, распиновка приведена ниже:
Так как на плате модуля предусмотрен разъем для подключения, для удобства собрал небольшую платку. На этой отладочной плате стоит микроконтроллер Atmega8A с обвязкой из внешнего кварца, кнопки сброса и пары светодиодов, ответный разъем под модуль и разъем для подключения программатора.
Схема всего этого дела выглядит следующим образом:
Для подключения радиомодуля использованы ножки аппаратного SPI микроконтроллера, поэтому разъемы подключения модуля и подключения программатор дублируют друг друга. Это сделано, чтобы удобней было прошивать микроконтроллер на отладночной платке, например, если использовать программатор который подает на схему 5 вольт, а для NRF24L01 это слишком большое напряжение. Чтобы перепрошить управляющий микроконтроллер, достаточно выдернуть трансивер с платы, перепрошить и всунуть его обратно — без лишней возни с перепайкой.
Горит зеленый светодиод (D1) — приемник готов к работе. При приеме данных загорается красный светодиод (D2)
Вторую схему — для передатчика — собрал на макетке по той же схеме. Разъем на трансивере оказался не подходящим для того чтобы вставлять плату в макетку и поэтому соединил все проводами.
Скорость для соединения приемника с терминалом выставляется 19200 бод. При старте приемник напечатает «RX_device» а дальше — то, что получит с передатчика. В примере передаются постоянные данные «AA+BB+CC+11+#посылки»
На скрине ниже видно, что номера посылки прыгают, это из-за того что я включал/выключал передатчик пока бродил по двору (максимальное удаление метров 30-40). А видимо проверка CRC в приемнике не пропускала некоторые посылки от передатчика из-за ошибок передачи.
На мое удивление, когда искал примеры использования этих трансиверов с Bascom-AVR, ничего кроме вышеозвученного апнота #151 не находилось. Хотя в среде ардуинщиков эти трансиверы весьма распространены и под них написано уже куча кода и библиотек. Надо исправлять ситуацию 🙂 Особенно радует цена на них — мне мои достались по 5$ за пару http://www.ebay.com/).
Сначала у меня возникли проблемы с зависанием модуля при передаче данных, но спасибо товарищу Valera18 который протестировал эти модули и указал на существующие ошибки в коде. Теперь работает как надо!
Ниже доступны для скачивания материалы статьи:
исходники и прошивки
Оптимизированный код от пользователя Valera18
Внимание!!! прошивка только для «ПЕРЕДАТЧИКА» Atmega8, специально оптимизирована, занимает 9% в памяти.
Внимание!!! прошивка только для «ПРИЁМНИКА» Atmega8, специально оптимизирована, занимает 11% в памяти.
Теперь для проектов свободного места в памяти «много».
avrproject.ru
Многие из вас наверняка слышали про дистанционное управление, когда все управляется на большом расстоянии парой простых нажатий. Нажал кнопочку на пульте – и включился свет или прильнул к вашим ногам ваш любимый робот. А самое интересное здесь то, что для управления выстроенной системой не нужны километровые провода.
Дистанционное управление можно разделить на множество подвидов: управление по Bluetooth, через Wi-Fi, по радиосвязи и многие другие. Большинство из этих видов коммуникации можно связать с Arduino и затем создавать на этой основе собственные проекты.
В этой статье речь пойдет о радиомодуле NRF24L01, который способен обмениваться данными с Ардуино на частоте 2,4ГГц.
Примеры компоновки этих модулей вы можете сейчас видеть на картинке ниже:
Этот модуль представляет собой приемник и передатчик одновременно. Он достаточно миниатюрный и компактный в размерах. Для работы с модулем важно будет знать следующие его характеристики:
Так что же еще может NRF24L01 помимо беспроводного управления? Ранее уже было сказано, что модуль позволяет, как передавать данные на плату Ардуино, так и принимать их с нее. Это позволяет собрать устройство, используемое для мониторинга и сбора данных. Например, для сбора информации о климате и состоянии воздуха в доме/квартире/помещении и т. д, и отправке этих данных на ваш телефон или другое средство контроля.
Для реализации проекта из этой статьи нам потребуются следующие компоненты:
Основная цель данной операции – это соединить два микроконтроллера нашим радиомодулем, чтобы добиться обмена данными между ними.
Подключается модуль посредством интерфейса SPI.
Для подключения придется задействовать на плате 7 контактов, два из которых отвечают за питание:
Наглядная схема подключения изображена на рисунке ниже:
Для написания кода и проверки работоспособности NRF24L01, нам понадобятся две библиотеки. Их нужно скачать и переместить в раздел Library в той папке, где у вас установлена Arduino IDE.
Это библиотеки RF24и SerialFlow.
В данной статье приведем несколько простых скетчей для работы с модулем. Например, приведенный ниже программный код служит для проверки работоспособности и передает текущее значение таймера с одного устройства на другое.
voltiq.ru
Начали всплывать проблемы:
— на этот раз в Proteus не оказалось такой микрухи, так что лафа кончилась, паять и отлаживать придется в железе, но благо чип уже сам на плате и со всеми нужными выведенными контактами
— отлаживать придется 2 шт одновременно, одна передает, другая принимает, вероятность неработоспособности связки равна произведению вероятностей неработоспособности каждой из двух микросхем
Для начала можно пообщаться с самим чипом по SPI и например почитать его внутренние регистры. Для этого достаточно при инициализации МК не забыть задрать линию CSN к питанию, это дежурный режим; чтобы начать сеанс — прижимаем CSN к земле, чип понимает это как начало передачи данных по SPI и готовится выдать на MISO свой статус-регистр. Чип делает это всегда при начале общения по SPI. Если мы хотим что то писать в регистры чипа или читать из них, для начала мы должны дать соответствующую инструкцию (1 байт), и пока мы ее пишем на линию MOSI, чип выдает на MISO свой статус-регистр, тоже 1 байт.
Пожалуй отладку можно начать с чтения и записи регистров nRF и выдачи этих данных например на терминал.
Байт инструкции передается начиная со старшего бита.
Далее, не отпуская линии CSN, дергаем SCK и читаем ответ чипа. Сколько байт читать зависит от того, какой регистр читаем, это нужно задавать в коде программы. Никакого признака «окончания передачи» тут нет. Регистры в основном имеют длину 1 байт, исключение составляют регистры TX_ADDR и RX_ADDR_P*. Как видно из иллюстрации, байты ответа также приходят «вперед ногами», т.е. сначала старший бит (7).
К примеру, чтение регистра EN_RXADDR (адрес 02h) будет проходить так:
1. CSN — к земле, начинаем передавать байт 02h (0b 0000 0010) с наложенной маской инструкции R_REGISTER (00h)
2. вывели бит 7, дернули SCK вверх-вниз, сдвинули байт логически влево, и так 8 раз для передачи всего байта инструкции
3. далее еще 8 раз дергаем SCK, читая уровни на линии MISO в байт ответа
4. поднимаем линию CSN, обмен завершен
Для записи байта в регистр EN_RXADDR последовательность такая же, только в п.1 маска будет W_REGISTER (20h) и байт инструкции получится уже 02h OR 20h = 22h. а в п.3 вместо чтения в байт из MISO напротив, пишем из байта на линию MOSI, опять же сначала бит 7, потом 6 и т.д.
Q. как настроить в рабочий режим и подготовить чип к передаче?
A. перед началом работы в обязательном порядке нужно выставить бит PWR_UP в регистре CONFIG. При подаче питания на чип этот бит по-умолчанию равен 0. Впрочем это не означает, что чип выключен и не подает признаков жизни. По SPI он общается всегда. Также выставляем бит PRIM_RX того же регистра в 1 для режима приема и в 0 для режима передачи. По-умолчанию бит равен нулю, т.е. чип настроен на передачу. Также стоит отметить, что при старте включены все прерывания. Для приема данных обязательно надо настроить размер пакета, т.е. записать число больше нуля в RX_PW_P0. На принимающей стороне настройка длины пакета должна быть такой, чтобы умещались передаваемые данные!
Q. Как работать с прерываниями?
A. При генерации прерывания (низкий уровень на пин IRQ), читаем STATUS регистр, определяем событие. Например установлен бит RX_DR (Data Ready): пришел новый пакет. Читаем пакет, обязательно пишем 1 (не 0, а 1, ага) на место этого бита, чтобы сбросить флаг прерывания. Не забываем записать получившийся байт обратно в STATUS регистр.
Q. Ну и как уже что то передать в эфир?
A. Если дерево падает в глухом лесу, производит ли оно грохот? А если пакет передать в никуда? Попробуем.
На рисунке обозначено:
— Antenna — интервалы активности в эфире, т.е. собственно отправка и прием пакетов
— PTX и PRX Mode — режимы, в которых находятся передатчик (PTX) и приемник (PRX)
Из диаграммы становится ясно (и это описано в ДШ), что передача начинается нифига не по заднему фронту на линии CE, а через 130мкс (128+2 на рисунке) после переднего фронта. А значит с отпусканием CE можно не спешить. Также показано, что CE поднимается аккурат перед генерацией прерывания TX_DS, по какому событию — неизвестно, как неизвестно и зачем вообще ее поднимать, если мы в режиме передатчика.
Итак, перед процедурой передачи необходимо убедиться, что CE прижато к земле. Отправляем инструкцию W_TX_PAYLOAD (A0h) (это передача по SPI, соответственно про CSN тоже не забываем), а следом 3 байта данных, которые хотим передать пришельцам. Это будут 3 буквы. Я еще не решил какие. После того, как передали наши 3 буквы по SPI и подняли CSN, нужно дать понять чипу, что пора передавать данные в эфир. Это делается дерганием линии CE: ее нужно поднять как минимум на 10мкс, как показано на рисунке, затем снова придавить к земле на все время передачи. По окончании передачи будет сгенерировано прерывание: либо TX_DS (если данные переданы), либо MAX_RT (если не удалось передать в пределах заданного числа попыток). В любом случае линию CE пора поднимать (зачем), а бит прерывания очистить в регистре записью в него единицы. А вот зачем поднимать линию CE:
nRF24 goes into standby-I mode if CE is low. Otherwise next payload in TX FIFO is transmitted. If TX FIFO is empty and CE still high, nRF24 enters standby-II mode
Отсюда следует, что имеет смысл поднимать линию, если в очереди на передачу еще что-то есть, иначе можно оставлять линию у земли и девайс перейдет в режим энергосбережения.
Q. как переходить из режима RX в TX и обратно?
A. записью бита PRIM_RX = 1 в регистр CONFIG мы переводим чип в режим приемника. по-умолчанию при подаче питания чип в режиме передачи (PRIM_RX = 0). Разобраться как при этом управлять линией CE… А вот как: переводя бит PRIM_RX и 1 или 0 меняем режим чипа, но чтобы его собственно активировать — надо поднять линию CE, иначе чип будет как бы в режиме готовности, но неактивен. Для PRX это означает, что слушать эфир начнем, как только поднимем линию CE. Для PTX это значит что передавать данные из TX FIFO начнем как только поднимем линию CE. Опускание линии CE означает переход в режим энергосбережения.
Q. где настраивается сколько байт можно пихать в TX FIFO для передачи?
A. «The width of TX-payload is counted from number of bytes written to the TX FIFO from the MCU». По-русски говоря, чип имеет счетчик байт, и к моменту начала SPI обмена с целью положить в TX FIFO данные, этот счетчик сбрасывается и начинает считать, сколько байт мы ложим в TX FIFO. Положить можно вроде как от 1 до 32 байт. Сколько положили — все передаст. R_RX_PAYLOAD тоже выдает от 1 до 32 байт.
Q. как происходит адресация и распределение пакетов по пайпам?
A. адреса пайпов задаются в регистрах RX_ADDR_P*. Нужно внимательно следить, чтобы не оказалось 2 одинаковых адресов в регистрах RX_* одного чипа. НО адреса отправителя и получателя должны совпадать! Т.е. регистры TX_ADDR и RX_ADDR_P0 обоих чипов должны быть равны между собой (итого 4 одинаковых значения). Чтобы получить пакет на одном nRF, нужно сначала его RX_ADDR_P0 сконфигурировать известным адресом, затем с другого nRF посылать по этому адресу пакеты (адрес вводится на передатчике в регистр TX_ADDR).
On the PTX the TX_ADDR must be the same as the RX_ADDR_P0 and as the pipe address for the designated pipe.эта фигня гласит, что на передатчике (PTX) адрес для отправки должен совпадать с собственным RX_ADDR_P0 адресом (чтобы автоматом разруливать ACK), а также с RX_ADDR_P* пайпа приемника (PRX) (чтобы вообще пакет дошел до назначения).
Q. Надо ли задавать RX_PW_P0 для работы авто-ACK.
A. На передатчике RX_PW_P0 задавать необязательно
Q. как просканировать передатчики в округе?
A. Регистр CD содержит 1, если мы в RX режиме видим несущую (кто-то передает). вот походу и все, promisc-mode? кажется нету.
1. не хочет отвечать по SPI
как оказалось перепутал линии IRQ и MISO, а еще думаю, чего оно мне на IRQ какие то 6 импульсов выдает, так то были 6 байт ответа при обмене по SPI. Осциллограф, великая вещь.
2. потери пакетов на PTX. Переключаемся в режим PRX, детектим несущую (CD), если есть — значит коллизия на канале (более одного передатчика одновременно), меняем канал, пробуем передавать снова.
3. не срабатывает ни одно из прерываний при отправке тестового пакета в пустоту (ожидалось MAX_RT). перепутал W_TX_PAYLOAD с R_RX_PAYLOAD. затем оказалось, что RX_PW_P0 сбрасывается после вызова процедуры отправки в эфир (W_TX_PAYLOAD). цикличный мониторинг регистра STATUS не давал результатов, биты прерываний всегда сброшены. далее стало ясно, что сбрасывается вообще все, и конфиг и RX_PW*. происходит это после 10us-строба на линии CE. Не хватало питания. Сброс чипа.Таки добился стабильной передачи.
Настройка передатчика сводится к установке PWR_UP в регистре CONFIG и прижатию линии CE к земле.
Настройка приемника — установка PWR_UP и PRIM_RX в CONFIG, RX_PW_P0 > 0 и подтягивании CE к питанию.
Далее мониторим линии IRQ, читаем биты прерываний из регистра STATUS и не забываем их сбрасывать, читаем полученные данные из pipe 0.
blog.sci-smart.ru
После покупки гаража возникла проблема подсветки ворот. Немного поясню: гараж находится в многоэтажном гаражном кооперативе, внутри которого длинные коридоры; освещение в коридорах есть, но оно чисто формальное. Плюс ко всему, днём для экономии электроэнергии часть ламп в коридорах выключают (обычно через одну). То есть вроде коридор освещён, а в потёмках найти с первого разу замочную скважину на темных воротах не всегда удаётся.
Кому интересно, как я ликвидировал данную проблему, прошу под кат (много текста).
Кстати, это мой сотый обзор на данном сайте.
Сначала очень долго пытался выработать идею.
Выбирал варианты из следующего списка (некоторые варианты частично опробовал):
1) Использовать фонарик
2) Использовать розетку с радиоканалом
3) Использовать RFID карточки
4) Попытаться построить что-нибудь с радиоканалом на Arduino
5) Комбинация вышеперечисленных вариантов
Немного пробегусь по вариантам
От использования фонарика я отказался. Большой таскать не хотелось, а маленький много не освещал. Если маленький вешать на ключи, то со временем он становиться потрёпанным. Плюс ко всему, если таскать на ключах, то его во время открытия гаража приходиться отстёгивать, иначе затея с фонариком теряет смысл. Короче, фонарик у меня не прижился. Хотя это универсальный и достаточно дешёвый способ.
Второй идеей было использовать розетку с радиоканалом. В принципе мысль нормальная, только таскать с собой пульт не хотелось. Я почему-то не стал рассматривать этот вариант шире, хотя думаю, что зря. У меня дома есть подобный пульт и мне он показался большим. Хотя думаю, что если бы поискал на Китайских сайтах, то возможно нашёл бы пульт с размером, как от автомобильной сигнализации. Ещё меня останавливало то, что во время подъезда машины к гаражу мне пришлось бы доставать пульт, включать свет и, что самое главное, не забыть его выключить. То есть я хотел полной автоматизации – моя машина подъехала, свет включился, машину загнал в гараж, свет выключился. Сразу предвижу вопрос, почему не освещать фарами ворота? Дело в том, что я обычно проезжаю дальше своего гаража по коридору, не глуша двигатель иду открывать ворота и потом задним ходом заезжаю в гараж.
По поводу использования RFID технологии отказался сразу. Не хотел, чтобы мне изуродовали какое-либо устройство, которое висит снаружи. Плюс ко всему, мне пришлось бы в темноте искать устройство, прикладывать к нему чип (карточку или метку), а потом открывать гараж. В этом плане радиоуправляемый пульт лучше подходит, так как нет внешних электронных компонентов у гаража.
С идеей автоматизации я ходил долго, все обдумывал. Осталось выбрать компоненты и начать воплощать в жизнь.
Начал смотреть в интернете, на чем можно реализовать радиоканал. Сначала мне попались радиомодули с частотой 433.9 МГц. У них приёмник и передатчик выполнены раздельно. Модули небольшие, относительно дешёвые (около 2,5$), но отказался я от них по следующим причинам:
— для организации более-менее нормального протокола мне на каждую сторону нужен и передатчик и приёмник.
— нормальной библиотеки под Arduino я не нашёл. Есть VirtualWire, но там, чтобы организовать полностью структуру сетевого протокола, нужно очень много кодить.
Потом мне попались радиомодули на чипе nRF24L01+ (есть ещё версия без плюса в конце, но они хуже по параметрам). Все, что на прошлых модулях было минусом, в этих модулях было плюсом. Приёмник и передатчик был в одном корпусе, есть много разных библиотек с нормально реализованным сетевым протоколом, цена меньше доллара за штуку. В итоге, дальше искать не стал и заказал лот из 4 штук.
Модули приехали и провалялись несколько месяцев в столе на работе (работы было много и до реализации своего проекта все никак руки не доходили).
Настал момент, когда я собрал на двух макетках (Arduino Uno и Arduino mini) клиентскую и серверную часть.
Клиентская часть
Серверную часть отдельно сфотографировать не успел (дальше будут фотографии).
Залил в макетки программы сервера и клиента из библиотеки Mirf и стал смотреть, что приходит в терминал. Это был первый облом :-). В терминале было пусто. Что я только ни делал. Перепроверил все подключения, менял местами сервер и клиент. Потом плюнул на все и упростил клиентскую и серверную часть до минимальной программы (заодно изучил работу библиотеки Mirf). Как ни странно, но все равно не заработало. Точнее работало, только если в Arduino mini была залита клиентская часть, и она после Reset-a отправляла только один пакет. Стал шерстить интернет и на одном из форумов увидел совет — повесить по питанию 3,3 В, которые идут на питание модуля nRF24L01+, конденсатор ёмкостью несколько десятков микрофарад. Немного поясню: так как nRF24L01+ питается от 3,3 В, а на Arduino mini такого напряжения нет, то пришлось использовать линейный стабилизатор LM1117-3,3. В связи с тем, что я напряжение по 5В считал нормальным, то и конденсаторы на выходе LM1117-3,3 вешать не стал.
После того как поставил конденсатор по питанию 3,3В, сразу все заработало.
Быстренько написал код для двух модулей и пошёл в гараж на испытания.
Первые испытания прошли не очень удачно. Я вывел информацию приёма пакета на один светодиод. В итоге, больше половины пакетов терялось (или я просто не видел, как приходит пакет). Пришлось модернизировать программу, делать задержки, добавил ещё один светодиод, который отвечает за выходной канал. Новые испытания в гараже показали, что хоть пакеты и теряются, выходной канал все равно срабатывает через раз.Шеф, всё пропало, все пропало! Гипс снимают, клиент уезжает… Если серьёзно, то на тот момент я попал в тупик. Купил модули, собрал макет, осталось только все разместить в приглядном виде, а тут такой облом. На работе начали советовать вместо штатной антенны на модуле припаять медный кусок провода длиной 31 мм (четверть длины волны), но до этого не дошло. Поначалу я забросил проект из-за большого количества дел на работе перед отпуском, а потом, просматривая электронные компоненты у проверенного продавца на eBay, я наткнулся на модуль nRF24L01+ с усилителем и нормальной антенной. Радиус действия, в описании у данного модуля, был в 10 раз больше, чем у обычного (1000 м). Самое главное, цоколевка разъёма была такая же, так что переделывать ничего не пришлось. Заказал.
Пришло все в индивидуальных антистатических пакетах. В заказе было много чего другого :-).
Модуль поближе
Здесь видно, что некоторые элементы криво припаяны, но на работу это не влияет. Как ни странно, я заказывал два модуля, и на обоих подобный брак.
Модуль вместе с антенной
Быстро прицепив модуль к старой макетке, пошёл в гараж. Приём пакетов уверенный, даже слишком. Пробивает бетонную и кирпичную стены и железные ворота.
Пока ждал модуль, решил разработать полностью схему и вытравить плату. Не знаю почему, но я был уверен, что модуль с усилением будет работать, как надо.
Схема довольно простая:
Разработал плату
Если честно, то схема у меня была в голове, а плату я разрабатывал с учётом всех особенностей выводов Arduino. Так в данном случае лучше оптимизировать соединения. А уж потом когда плата разведена, я рисовал схему.
Собранная плата:
Изначально блок питания на 12 В должен был прикручен по другому, но у меня просто под рукой не было нужного куска текстолита. Использовал то, что было, а блок питания развернул.
На фотографии видно, что я для тестов использовал модуль без усиления.
Собирать гаражную часть решил в пластиковом щитке. Заодно я там решил поместить реле напряжения и автоматы (они мне нужны были для других нужд).
Вот так это выглядит в сборе
В качестве лампы я решил использовать светодиод на 10Вт. Разместить светодиод решил в корпусе от светильника (у нас такие корпуса используются в коридоре в гаражном кооперативе)
Внутренности (патрон и крепление) у светильника я демонтировал, а на освободившееся место прикрутил радиатор от старого процессора Pentium II Slot1. На данный радиатор поместил светодиод, предварительно намазав его термопастой.
Потом собрал светильник и повесил перед гаражом
Серверную часть, которая должна находится в машине, я на тот момент переделывать не стал. Она у меня была собрана из макетки, на которую припаивались разъем для питания, линейный стабилизатор LM1117-3,3, конденсатор и колодки. В колодки вставлялись Arduino и модуль nRF24L01+.
На столе все подключил (светодиоды, кнопку, провода питания и светильник) и проверил. Дома все работало замечательно.
В гараже прикрепил щиток
Провёл к нему провода в кабелеканалах и включил в сеть.
Попробовал подавать питание на серверную часть (та, что должна стоять в машине), светильник перед гаражом загорался. На тот момент я уже обдумывал, как мне переделать серверную часть, чтобы она была поменьше, и установить её в машине. Как-то, занимаясь делами в гараже, случайно услышал, что щёлкнуло реле. Вышел за ворота — свет горит, на щитке зелёный светодиод, который дублирует включение реле. При этом у меня серверная часть была отключена. Пока обдумывал ситуацию, свет погас. Через некоторое время я увидел, как вспыхнул красный светодиод (показывает присутствие сигнала), а потом зажегся зелёный светодиод вместе с щелчком реле, которое включило свет в коридоре. Явно происходило что-то странное в работе моего устройства (ещё один облом). Я сначала подумал, что помеха по питанию включает релюшку. Дело было под вечер, поэтому я отключил свой щиток от сети и пошёл домой обдумывать сложившеюся ситуацию. Дома открыв схему устройства и код программы, ещё раз обдумал все и пришёл к выводу, что аппаратно все сделано правильно и никакая помеха не может включить сразу два канала одновременно на Arduino (у меня сработало реле на выходе D3 и светодиод на выходе D10).
Чтобы представлять логику программы попытаюсь описать её как можно проще.
Клиентская часть в гараже постоянно излучает в эфир некое число (пусть будет Х) и ждёт определённое время ответ. Серверная часть в машине находится в спящем режиме (работает по прерыванию). Как только она получает сигнал, она проверяет, совпадает ли присланное число с Х. Если совпадает, то серверная часть отсылает некое число (пусть будет Y) и засыпает.Проанализировав программу и почитав ещё про модули nRF24L01+, выяснил, что подобные чипы устанавливаются в большинство беспроводных клавиатур и мышей. Адрес сервера и клиента я задал по умолчанию, как в примерах на этот модуль. Вероятнее всего, поблизости (а может и неочень) находилось беспроводное устройство (клавиатура или мышь), которое тоже по дефолту имело сетевое имя. В определённый момент мой клиент поймал ответ с числом Y и принял этот пакет за ответ от серверной части. Если учесть, что последний байт адреса передатчика может иметь любое значение, то полное совпадение пяти байт в адресе передатчика может и не соблюдаться.
Клиентская часть, получив ответ, проверяет правильность числа Y и, если верификация пройдена, то включается свет и зажигается дублирующий зелёный светодиод на 10 секунд. Красный светодиод (признак присутствия правильного сигнала) загорается на секунду.
Если в эти 10 секунд происходит ещё один обмен пакетами, то эти 10 секунд начинают отсчитываться от последнего обмена пакетами.
Кнопка нужна, чтобы принудительно включить свет перед гаражом на 30 секунд. Этого времени достаточно, чтобы закрыть ворота на ключ.
Вот в принципе и все…
Чуть не забыл написать, как я внедрил серверную часть в машину.
Тут все просто. Моим вторым обзором на MySku в далёком 2011 году был обзор преобразователя на 5В.
Этот преобразователь я использовал в прошлой машине для запитывания регистратора и сейчас он у меня стоит в новой машине и также питает регистратор.
Подключал я его по такой схеме:
Здесь блок DRL подключает фары через 5 секунд после пуска двигателя.
Так вот параллельно регистратору я подключил серверную часть. Токи потребления там небольшие (20-30 мА). При токе потребления регистратора 600-700мА, токи в 30 мА выглядят мизерными. При глушении двигателя питание с блока DRL снимается и, естественно, преобразователь обесточивается.
Чтобы уменьшить размеры серверной части, пришлось и здесь сделать плату, в которую жёстко впаял Arduino. Это позволило уменьшить все устройство по высоте примерно на 1 см (величина колодки).
Мне как раз перед переделкой пришла специальная бумага для ЛУТ, вот её как раз решил и испытать.
как я делал плату серверной части
Специально этот кусок обзора спрятал, так как технология ЛУТ описывалась неоднократно (даже на этом ресурсе).Теперь небольшие размышления/выводы.
Частично я реализовал то, что хотел. Почему частично? Да потому что остаётся открытым вопрос, как включать свет, когда приходишь в гараж рано утром. Я думал сделать пульт на основе чипа Atmega и модуля nRF24L01+, но все упирается в питание устройства и корпус. Сейчас пока обдумываю разные варианты.
mysku.ru
Адаптер NRF24L01 специально разработан для модулей NRF24L01+ и NRF24L01+PA+LNA, в котором установлен стабилизатор напряжения на 3.3В (AMS1117), а так-же выведен разъем для подключения к микроконтроллерам и платам Arduino
► Напряжение питания: 4.8В … 12В
► Выходное напряжение: 3.3В
► Максимальный рабочий ток: до 800 мА
► Рабочая температура: -40 … 125 °C
► Габариты: 27 х 19 х 12 мм
На адаптере расположено два основных разъема с подписантами выводами: двухрядный устанавливают радио модуль и однорядный для соединения с платами arduino. Как говорилось ранее, адаптер оснащен стабилизатором напряжения на 3.3В (чип AMS1117).
Первая группа:
► CE: Выбор ведомого
► CSN: Режим работы (прием или передача)
► SCK: Тактирование
► MOSI: Прием данных
► MISO: Передача данных
► IRO: Выход прерывания
Вторая группа:
► GND: Питание модуля NRF (GND)
► VCC: Питание модуля NRF (3.3В)
► CE: Выбор ведомого
► CSN: Режим работы (прием или передача)
► SCK: Тактирование
► MOSI: Прием данных
► MISO: Передача данных
► IRO: Выход прерывания
Третья группа:
► VCC: Питание 5В
► GND: Земля
Принципиальную схему адаптера NRF24L01 можно посмотреть ниже.
Необходимые детали:
► Arduino UNO R3 x 2 шт.
► Провод DuPont, 2,54 мм, 20 см x 2 шт.
► Кабель USB 2.0 A-B x 2 шт.
► Радиомодуль nRF24L01+ x 2 шт.
► Адаптер для NRF24L01+ x 2 шт.
Подключение:
Устанавливаем радиомодуль NRF24L01+ в адаптер через двухрядный разъем (как показано на рисунке). Затем с помощью проводов DuPont подключаем адаптер NRF24L01+ к Arduino (MISO-12, MOSI-11, SCK-13), выводы CE (ChipEnable) и CSN (ChipSelectNot) подключаем к D10 и D9, далее необходимо подключить питание, вывод VCC к Arduino (+5V), а вывод GND к Arduino (GND), скетч для двух Arduino можно посмотреть в этой статье.
Купить на Aliexpress
Контроллер Arduino UNO R3
Комплект проводов DuPont, 2,54 мм, 20 см
Радио модуля NRF24L01+
Радио модуля NRF24L01+PA+LNA
Адаптер для NRF24L01+
Купить в Самаре и области
Купить контроллер Arduino UNO R3
Купить комплект проводов DuPont, 2,54 мм, 20 см
Купить радио модуля NRF24L01+
Купить радио модуля NRF24L01+PA+LNA
Купить адаптер для NRF24L01+
robotchip.ru
Под заказ Под заказ | ||
|
Радиомодуль RKP-NRF24L01-Mini для Arduino – это миниатюрный модуль приемопередатчика на частоте 2.4 ГГц.
Модуль имеет размер всего 18 x 12 мм и может быть использован для поверхностного SMD монтажа. В остальном же, обладает такими же характеристиками как и другие модули на одноименной микросхеме от Nordic Semiconductor — NRF24L01.
Связь происходит в диапазоне частот 2,4–2,4835 ГГц. Частота, на которой будут работать модули, определяется номером канала. Они имеют шаг 1 МГц. Каналу 0 соответствует частота 2,4 ГГц, каналу 76 частота 2,476 Ггц.
Распиновка модуля Mini NRF24L01
Обозначение выводов RKP-NRF24L01+
+3.3V – питание 3,3 В
GND – общий провод
CE – включение радиотракта микросхемы высоким уровнем
CSN – Chip Select Not активный низкий уровень. Если установлен низкий уровень, то модуль отвечает на SPI команды. Это более важный сигнал выбора МС чем сигнал CE
SCK – тактирование шины SPI, до 10 МГц
MOSI – используется для передачи данных от микроконтроллера к устройству
MISO – для передачи данных из устройства в микроконтроллер
IRQ – выход сигнала для запроса прерывания при отправке и получении пакета
Принципиальная схема
Lля правильной работы модуля рекомендуется использовать стабилизированное напряжение 3.3 В.
Радиомодуль nRF24L01 подключается к Ардуино при помощи SPI интерфейса. Существует несколько библиотек Arduino для работы с радиомодулями nRF24L01. От выбранной библиотеки может зависеть способ подключения модуля к Ардуино. Наиболее популярные библиотеки — RF24 и Mirf.
Товар был добавлен в наш каталог Понедельник, 02 Октября 2017
robot-kit.ru
Под заказ Под заказ | ||
|
Радиомодуль RKP-NRF24L01+PA+LNA с внешней антенной для Arduino – это модуль приемопередатчика на частоте 2.4 ГГц.
Связь происходит в диапазоне частот 2,4–2.527 ГГц. Частота, на которой будут работать модули, определяется номером канала. Они имеют шаг 1 МГц. Каналу 0 соответствует частота 2,4 ГГц, каналу 76 частота 2,476 Ггц.
Соответственно есть возможность задать номер канала, мощность и скорость передачи сигнала.
Распиновка модуля RKP-NRF24L01+PA+LNA
Обозначение выводов RKP-NRF24L01+
GND – общий провод
VCC – питание 3,3 В
CE – включение радиотракта микросхемы высоким уровнем
CSN – Chip Select Not активный низкий уровень. Если установлен низкий уровень, то модуль отвечает на SPI команды. Это более важный сигнал выбора МС чем сигнал CE
SCK – тактирование шины SPI, до 10 МГц
MOSI – используется для передачи данных от микроконтроллера к устройству
MISO – для передачи данных из устройства в микроконтроллер
IRQ – выход сигнала для запроса прерывания при отправке и получении пакета
Принципиальная схема
Подключение к Arduino
Радиомодуль нельзя подключать к источнику питания 5В без адаптера, оптимальное напряжение питания составляет от 3.3В до 3.6В.
Радиомодуль RKP-NRF24L01+PA+LNA подключается к Ардуино при помощи SPI интерфейса. Существует несколько библиотек Arduino для работы с радиомодулями nRF24L01. От выбранной библиотеки может зависеть способ подключения модуля к Ардуино. Наиболее популярные библиотеки — RF24 и Mirf.
Товар был добавлен в наш каталог Понедельник, 02 Октября 2017
robot-kit.ru