Перейти к содержанию

Работа nrf24l01+


DrobyshevAlex

Рекомендуемые сообщения

Здравствуйте! Решил собрать простейший передатчик и приемник, мне нужно сделать что то вроде пульта управления для нескольких нагрузок.

Взял данные девайсы, взял атмегу8, набросал на макетной плате подключение.

Запитал nrf24l01+ от 3.3 вольта, мк от 5 вольт. Убил два дня на то что бы заставить не зависать на отправке/чтении по SPI.

Оказалось что я взял на управление CSE nrf24l01 ножку SS мк, но как только я на ножке ставлю высокий выход, спи намертво виснет, то есть  висит в цикле ожидания флага SPIF.

Перекинул на другую ному, вроде виснуть перестало, хотя это наводит на мысли что все же что то не то, так как на этом же мк на этой же ножке прекрасно работает rfid читалка по SPI.

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

Пробовал менять каналы, адреса - результат тот же самый.

Решил переписать либу, открыл описание, набросал свою либу, но результат вышел тот же самый.

У меня 4 передатчика етсь, пробовал все 4, результат то же самый :)

Убил уже дня 4, не могу понять, то ли он ловит все вайфай, частота же та же самая. То ли платы испорчены. То ли я совсем глупый)

 

Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, DrobyshevAlex сказал:

То ли я совсем глупый)

 

Однозначно!

Не можешь-научим! Не хочешь-не надо!P.S. А достанешь-заБАНят!

Решительный шаг вперёд-как правило результат хорошего пинка сзади.

Не тратьте силы, возьмите молоток побольше!

Ссылка на комментарий
Поделиться на другие сайты

Более того, я вытащил плату передатчика, а все равно прошивка получает статус как будто чип подключен и есть данные)

То есть SPI порт пустой а как будто отвечает. То есть выходит что плата nrf24 не работает вообще...

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Пины верно прописаны? Когда я подключал этот приемопередатчик к freeduino mega, оказалось, что прописывать надо не пины SPI, а два другие. Всего для подключения используется 7 из 8, но слышал, что 8й тоже может быть полезен.

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Я не прописывал только пин прерываний и не подключал его, так как мне бы для начала просто запустить устройство, хотя бы понять что оно работает.

Питание 3.1 вольта примерно пишет мультиметр. через АМС1117 3.3V запитан передатчик.

MISO, MOSI, SCK соединены на мк и передатчике между собой.

SCE(SS) - передатчика, как я писал выше, подключал вначале к SS мк, но потом перенес на соседний контакт, ибо МК переходил в режим слейв видимо, хотя из даташита я понял что он перейдет в слейв только если нога настроена на вход, но она была на выход.

Теперь я перенес SCE на ногу PB1 Atmega8 а CE на PB0.

Между выводами питания платы передатчика я добавил конденсатор на 100 мкф (электролит) и на 100 нф керамику, так как читал что у них беда с питанием, но я так понял это касается только ардуино плат, но я сделал на всякий случай.

Вообщем пока я хочу понять работу SPI, не пойму где беда) Почему не подключая передатчика в выводам мк, мк все арвно по спи как будто принимает данные, при чем такие же как и с подключенным передатчиком) То есть почти всегда это байт 0x70.

Я думал SPIF должен ставится когда ответный байт от слейв устройства принят. Но если я в цикле что то шлю, то байт выставляется всегда.

Изначально я сделал с выключенными прерываниями, на момент передачи/приема по SPI в мк я зажигаю светодиод, так вот он горит примерно раз в секунду, а если я включаю spi() + устанавливаю бит SPIE, тогда светодиод горит постоянно, то есть цикл на ожидании SPIF вообще не висит, ну я так понимаю это и правильно.

Вообщем имхо не должен SPI мк никуда не подключенный выдавать мне байты)

Я подозреваю что это может быть от наводок,, напряжение скачет на ножках (хотя интересно почему тогда один и тот же байт прилетает на спи, в 95+% случаев срабатывания) но, когда я подключаю передатчик, по идее передатчик же должен держать питание на ногах МК, но тогда выходит все мои 4 передатчика не рабочие?) Я измерял сколько потребление идет, примерно 5мА. На одном 0. Возможно он не рабочий, но остальные что тогда...

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

вот разводка, может я что не так делаю, это вид снизу, модуль вставляется с обратной стороны

Второй сверху справа, под массой, это CE, выбор приемник/передатчик, он на PB1 в прошивку установлен на вывод.

Под ним SCK на ногу PB5(SCK). Настроен на выход.

ниже MISO - PB4(MISO) - на вход

Левый-нижний - IRQ - PD2(INT0) - пока не подключен

Над ним MOSI - PB3(MOSI) - на выход

Выше CSN(SS) - PB0 - настроен на выход

Вот определения

#define F_CPU 8000000 

#define HI 1 
#define LOW 0 

#define SPI_MASTER 1

#define SPI_DDR DDRB
#define SPI_PORT PORTB
#define SPI_PIN PINB
#define SPI_SCK PB5
#define SPI_MISO PB4
#define SPI_MOSI PB3

#define NRF24_SPI_DDR DDRB
#define NRF24_SPI_PORT PORTB
#define NRF24_SPI_SS PB0

#define NRF24_CE_DDR DDRB
#define NRF24_CE_PORT PORTB
#define NRF24_CE PB1

#define NRF24_CH 121
#define NRF24_PAYLOAD 5
#define NRF24_ADDRSIZE 5

#define NRF24_ADDRP0 { 0xE8, 0xE8, 0xF0, 0xF0, 0xE2 }

и инициализация SPI

SPI_DDR = (1«SPI_MOSI)|(1«SPI_SCK);
SPCR = (1«SPE)|(1«MSTR)|(1«SPR0);
SPSR = (1«SPI2X);

и передатчик

SetBit(NRF24_SPI_DDR, NRF24_SPI_SS); 
SetBit(NRF24_CE_DDR, NRF24_CE);

 

Z0YIXZ8-ToA.jpg

Ссылка на комментарий
Поделиться на другие сайты

Вы в какой среде скрещиваете МК и библиотеку? И что за библиотеку нашли? Для Абдурино?

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

29 минут назад, Геннадий сказал:

Вы в какой среде скрещиваете МК и библиотеку?

В Atmel Studio на c++.

Библиотек я находил несколько, для ардуино, но у меня нет ардуино, я нашел не для ардуино, брал пример на сайте easyelectronics так же не помню точно на каком, я их штук 5 скачал. Потом уже на основе двух библиотек, одна под ардуино, вторая типа переписанная, + читая перевод даташита отсюда http://aterlux.ru/article/nrf24l01p я начал кодить свою.

Меня смущает сильно то, что SPI сам с собой разговаривает) Я туда что то пишу а он случайный байт получает даже не подключенный :)

Сегодня в планах взять другой МК, проверить может он битый) Просто я нагрел этот до 320 градусов феном когда припаивал, и он вздулся, но я к нему же подклчюал к жтим е выводам rc522  по спи и все работало...

Вот сейчас подумал опять о том что все таки ножки висят в воздухе как будто, и ловят наводки. А значит ног передатчика не идет питание на пины SPI мк.

Смотрю на настройку SPI, SCK на вывод идет у ведущего устройства, значит ведомое не может само говорить когда оно передало байт, а следовательно это нормлаьно что МК считает что SPI он получил в ответ, то есть это МК дергает ногу SCK принимая биты от слейв устройства.

Вообщем не понимаю,  я сделал простой тест,

включаю светодиод

делей 1000 мс

гашу светодиод

передаю/читаю 1 байт по SPI

зажигаю светодиод

вот 1 модуль из 4х не зажигает светодиод. 

Он и питания потребляет 0 мА.

Вот тут и не понятно, почему спи зависает, откуда он знает что надо висеть и не было ответа если МК заведует таймингами обмена данными.

Изменено пользователем DrobyshevAlex
Ссылка на комментарий
Поделиться на другие сайты

Если у Вас SPI действительно настроен в режиме МАСТЕР, то ему должно быть по-фигу на наводки, пока он не инициирует обмен данными. А чтобы не болеть наводками, подтяните вход MISO хотя бы внутренним резистором. Но и это не избавит Ваш МК от приема байта 0xFF.

Получается, Вы сами "чудите" с кодом.

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, Геннадий сказал:

Но и это не избавит Ваш МК от приема байта 0xFF.

Он принимает 0x40 и 0x0f или 0x07) то есть разные 0xff чаще всех вроде бы, но и другие бывают)

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

 

Ссылка на комментарий
Поделиться на другие сайты

Подскажите, кто то с прерываниями заводил этот передатчик?

Все работает без использования ноги IRQ, а вот с IRQ не могу заставить работать, Вроде бы вообще передатчик не генерирует прерываний, То есть на ноге всегда логическая единица.

Пробовал и устанавливать биты прерываний в регистр конфиг и сбрасывать.

 

Вопрос снят, все отлично.

Изменено пользователем DrobyshevAlex
Ссылка на комментарий
Поделиться на другие сайты

Не могу разобраться до конца с таймингами или работой платы.

Переделал на прерывания. Вроде бы все работало отлично.

Суть примерно следующая.

Есть приемник который просто рвет питание камеры.

И есть передатчик, rfid метки прикладываешь и он включается или выключается.

После включения, по тамеру моргал светодиодом.

Если я вдруг выключу/включу передатчик(пульт), то он уже не знает о состоянии камеры, включена ли она.

Решил переделать, пусть камера расылает импульс раз в секунду, а пульт ловит сигнал и моргает если камера включена. Казалось бы все проще простого.
 

Пульт имеет адрес NRF24_ADDR_MASTER, камера NRF24_ADDR_SLAVE.

Режим передачи пульта rx,tx = NRF24_ADDR_SLAVE
Режим приема пульта rx = NRF24_ADDR_MASTER
Режим передачи камеры rx,tx = NRF24_ADDR_MASTER
Режим приема камер rx = NRF24_ADDR_SLAVE

В режиме передатчика выключаю бит прерывания приема, а в случае приемника выключаю биты по отправке и по превышению максимального числа попыток отправки.

Перед переключением в режим передатчика держу паузу 205 мкс для того что бы пакет подтверждения успел отправиться.

Работа SLAVE устройства (питание камеры)

Скрытый текст

 

1) Подали питание на устройство.

2) Настроили прерывания и таймер.

3) Инициалицация spi и nrf24, nrf переводит в режим слушателя. Имеем два адреса. NRF24_ADDR_MASTER и NRF24_ADDR_SLAVE. В режиме приемника nrf настроет на адрес SLAVE то есть он слушает свой адрес.

4) МК платы приемника перевели в power down.

5) Если пришло прерывание от nrf24, читаем что пришло, пишем в регистр STATUS 1 в бит RX, что бы сбросить флаг прерывания, то включаем таймер и подаем питание на транзистор. Таймер CTC примерно на секунду, не принципиально.

6) Каждую секунду устройство слейв (которое камеру рвет) переводится в передачу, перед переводом ждем 205 мкс, устанавливаем адрес и rx и tx в ADDR_MASTER. Шлем команду. Ждем прерывания о подтверждении или максимальном числе попыток отправить. Сбрасываем бит прерывания, переводим в режим приема.

7) Если получили команду когда устройство включено, то выключаем транзистор, и останавливаем таймер.

 

Работа MASTER устройства (пульта)

Скрытый текст

1-3 пункты те же, за исключением того, что слушаем мы адрес MASTER, то есть адрес свой, пульта

Далее power down я не могу использовать из за того что я так и не разобрался как работать с прерываниями R522.

Просто в цикле читаю RC522(rfid).

Если пришло прерывание от nrf24, читаю команду, если команда ВКЛ, то включаю таймер TIMSK бит устанавливаю и включаю светодиод статуса, когда сработает таймер, просто гашу светодиод. То есть светодиод таким образом просто отображает пришедший сигнал с камеры, когда она включена. Таким образом я избавляюсь от нужды пульта знать состояние что бы моргать светодиодом.

Если я получил сигнал с RFID - перевожу устройсво в режим передатчика. Ставлю адрес rx и tx  ADDR_SLAVE. Шлю команду.

Все очень просто вроде с алгоритмом :) Но не работает. А точнее работает не до конца.

Пульт шлет сигнал, камера включается и выключается.

А вот светодиод не отображает индикацию :)

Меняя порядок сброса битов, и перевод в режим передатчика выходило что светодиод бывало моргал 2-10 раз и посто зависало устройство.

Как дебажить не имею понятия :( Программатор самодельный на ft232rl.

Ссылка на комментарий
Поделиться на другие сайты

Вопрос снят :) Оказалось просто перевел в режим IDLE, ибо изначально прочел, что таймер работает в режиме power down а в даташите написано, что не работает :)

Ссылка на комментарий
Поделиться на другие сайты

Кто нибудь может помочь с RC522 прерываниями? А то приходится в цикле крутить мк все время :(

А так в целом все работает.

 

Изменено пользователем DrobyshevAlex
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...