Поиск по сайту

Результаты поиска по тегам 'NRF24l01 '.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Категории и разделы

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
  • Радиоэлектроника для профессионалов
    • Световые эффекты и LED
    • Роботы и модели на ДУ-управлении
    • Автоматика
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Автомобильная электроника
    • Системы охраны и наблюдения. Личная безопасность
    • Питание
    • Электрика
    • Промышленная электроника
    • Ремонт
    • Металлоискатели
    • Измерительная техника
    • Мастерская радиолюбителя
    • Сотовая связь
    • Спутниковое ТВ
    • КВ и УКВ радиосвязь
    • Жучки
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
    • МК для начинающих
    • AVR
    • PIC
    • STM32
    • Arduino и Raspberry Pi
    • ПЛИС
    • Другие микроконтроллеры и семейства
    • Алгоритмы
    • Программаторы и отладочные модули
    • Периферия и внешние устройства
    • Разное
  • Товары и услуги
    • Коммерческие предложения
    • Продам-Отдам, Услуги
    • Куплю
    • Уголок потребителя
    • Вакансии и разовая работа
    • Наши обзоры и тесты
  • Разное
    • Конкурсы сайта с призами
    • Сайт Паяльник и форум
    • Курилка
    • Технический английский (English)
    • Наши проекты для Android и Web
    • FAQ (Архив)
    • Личные блоги
    • Корзина
    • Вопросы с VK
  • ATX->ЛБП Переделки
  • Юмор в youtube Киловольты юмора
  • Надежность и группы продавцов Радиолюбительская доска объявлений exDIY
  • разные темы Переделки

Блоги

Нет результатов для отображения.

Нет результатов для отображения.

Местоположения

  • Пользователи форума

Группа


ICQ


Skype


Интересы


Город


Сфера радиоэлектроники


Оборудование

Найдено 4 результата

  1. проблема с nrf24l01

    Здравствуйте! Уже неделю пытаюсь запустить данный радиомодуль, но пока безуспешно. Для начала решил проверить работает ли SPI. Контроллер атмега8. Проблема заключается в том, что я не могу записать регистр в нрф, то есть я записываю туда какое - то значение, в пределах допустимого, например в регистр RF_CH записываю 25, затем считываю этот регистр и если там хранится 25, то должен загореться светодиод, но фиг там.. Пробовал тоже самое с регистром STATUS, та же беда... В чем может быть проблема? Запись и чтение реализовано с помощью функций write_register и read_register соответственно. Светодиод висит на PB1 #define F_CPU 1000000UL #include <avr/io.h> #include <util/delay.h> #define CE PC0 #define IRQ PC2 #define MOSI PB3 #define MISO PB4 #define SCK PB5 #define SS PB2 #define R_REGISTER 0x00 // + n Прочитать регистр n #define W_REGISTER 0x20 // + n Записать регистр n #define R_RX_PAYLOAD 0x61 // Принять данные данные из верхнего слота очереди приёмника. После чтения, данные из очереди удаляются #define W_TX_PAYLOAD 0xA0 // Записать в очередь передатчика данные для отправки #define FLUSH_TX 0xE1 // Сбросить очередь передатчика #define FLUSH_RX 0xE2 // Сбросить очередь приёмника #define REUSE_TX_PL 0xE3 // Использовать повторно последний переданный пакет #define R_RX_PL_WID 0x60 // Прочитать размер данных принятого пакета в начале очереди приёмника. Значение больше 32, означает ошибку приёма, пакет должен быть удалён командой FLUSH_RX #define W_ACK_PAYLOAD 0xA8 // + p Записать данные для отправки с пакетом подтверждения по каналу p. При этом бит EN_ACK_PAY в регистре FEATURE должен быть установлен #define W_TX_PAYLOAD_NOACK 0xB0 // Записать в очередь передатчика данные для отправки, для которых не требуется подтверждение приёма. #define NOP 0xFF // Нет операции. Может быть использовано для чтения регистра статуса /* Регистры */ #define CONFIG 0x00 // Регистр настроек #define EN_AA 0x01 // Выбор автоподтверждения #define EN_RXADDR 0x02 // Выбор каналов приёмника #define SETUP_AW 0x03 // Настройка размера адреса #define SETUP_RETR 0x04 // Настройка повторной отправки #define RF_CH 0x05 // Номер радиоканала, на котором осуществляется работа. От 0 до 125. Несущая частота равна 2400 + номер_канала МГц #define RF_SETUP 0x06 // Настройка радиоканала #define STATUS 0x07 // Регистр статуса. Значение регистра статуса также передаётся к МК по SPI, одновременно с передачей от МК байта команды #define OBSERVE_TX 0x08 // Количество повторов передачи и потерянных пакетов #define RPD 0x09 // Мощность принимаемого сигнала. Если младший бит = 1, то уровень сигнала более -64dBm #define RX_ADDR_P0 0x0A // 3-5 байт (начиная с младшего байта). Адрес канала 0 приёмника. При использовании в режиме передатчика, этот адрес должен быть равен TX_ADDR, для использования автоподтверждения приёма #define RX_ADDR_P1 0x0B // 3-5 байт (начиная с младшего байта). Адрес канала 1 приёмника, одновременно задаёт старшие байты адресов каналов 2 - 5. #define RX_ADDR_P2 0x0C // Младший байт адреса канала 2 приёмника. Старшие байты соответствуют значению старших байт в регистре RX_ADDR_P1 #define RX_ADDR_P3 0x0D // Младший байт адреса канала 3 приёмника. Старшие байты соответствуют значению старших байт в регистре RX_ADDR_P1 #define RX_ADDR_P4 0x0E // Младший байт адреса канала 4 приёмника. Старшие байты соответствуют значению старших байт в регистре RX_ADDR_P1 #define RX_ADDR_P5 0x0F // Младший байт адреса канала 5 приёмника. Старшие байты соответствуют значению старших байт в регистре RX_ADDR_P1 #define TX_ADDR 0x10 // 3-5 байт (начиная с младшего байта). Адрес устройства, которому осуществляется передача #define RX_PW_P0 0x11 // Размер данных при приёме по каналу 0: от 1 до 32. 0 - канал не используется. #define RX_PW_P1 0x12 // Размер данных при приёме по каналу 1: от 1 до 32. 0 - канал не используется. #define RX_PW_P2 0x13 // Размер данных при приёме по каналу 2: от 1 до 32. 0 - канал не используется. #define RX_PW_P3 0x14 // Размер данных при приёме по каналу 3: от 1 до 32. 0 - канал не используется. #define RX_PW_P4 0x15 // Размер данных при приёме по каналу 4: от 1 до 32. 0 - канал не используется. #define RX_PW_P5 0x16 // Размер данных при приёме по каналу 5: от 1 до 32. 0 - канал не используется. #define FIFO_STATUS 0x17 // Состояние очередей FIFO приёмника и передатчика #define DYNPD 0x1C // Выбор каналов приёмника для которых используется режим произвольной длины пакетов. #define FEATURE 0x1D // Регистр опций /* Биты регистров */ // CONFIG #define MASK_RX_DR 6 // Запрещает прерывание по RX_DR (получение пакета) #define MASK_TX_DS 5 // Запрещает прерывание по TX_DS (завершение отправки пакета) #define MASK_MAX_RT 4 // Запрещает прерывание по MAX_RT (превышение числа повторных попыток отправки) #define EN_CRC 3 // Включает CRC #define CRCO 2 // Размер поля CRC: 0 - 1 байт; 1 - 2 байта #define PWR_UP 1 // Включение питания #define PRIM_RX 0 // Выбор режима: 0 - PTX (передатчик) 1 - PRX (приёмник) // EN_AA #define ENAA_P5 5 // Включает автоподтверждение данных, полученных по каналу 5 #define ENAA_P4 4 // Включает автоподтверждение данных, полученных по каналу 4 #define ENAA_P3 3 // Включает автоподтверждение данных, полученных по каналу 3 #define ENAA_P2 2 // Включает автоподтверждение данных, полученных по каналу 2 #define ENAA_P1 1 // Включает автоподтверждение данных, полученных по каналу 1 #define ENAA_P0 0 // Включает автоподтверждение данных, полученных по каналу 0 // EN_RXADDR #define ERX_P5 5 // Включает канал 5 приёмника #define ERX_P4 4 // Включает канал 4 приёмника #define ERX_P3 3 // Включает канал 3 приёмника #define ERX_P2 2 // Включает канал 2 приёмника #define ERX_P1 1 // Включает канал 1 приёмника #define ERX_P0 0 // Включает канал 0 приёмника // SETUP_AW #define AW 0 // Два бита, Выбирает ширину поля адреса: 1 - 3 байта; 2 - 4 байта; 3 - 5 байт. 0 - недопустимое значение #define SETUP_AW_3BYTES_ADDRESS (1 << AW) #define SETUP_AW_4BYTES_ADDRESS (2 << AW) #define SETUP_AW_5BYTES_ADDRESS (3 << AW) // SETUP_RETR #define ARD 4 // 4 бита. Задаёт значение задержки перед повторной отправкой пакета, 0 - 250мкс, 1 - 500мкс, 2 - 750мкс, ..., 15 - 4000мкс #define ARC 0 // 4 битай. Количество повторных попыток отправки. 0 - отключено, 1 - до 1 попытки, ..., 15 - до 15 попыток #define SETUP_RETR_DELAY_250MKS (0 << ARD) #define SETUP_RETR_DELAY_500MKS (1 << ARD) #define SETUP_RETR_DELAY_750MKS (2 << ARD) #define SETUP_RETR_DELAY_1000MKS (3 << ARD) #define SETUP_RETR_DELAY_1250MKS (4 << ARD) #define SETUP_RETR_DELAY_1500MKS (5 << ARD) #define SETUP_RETR_DELAY_1750MKS (6 << ARD) #define SETUP_RETR_DELAY_2000MKS (7 << ARD) #define SETUP_RETR_DELAY_2250MKS (8 << ARD) #define SETUP_RETR_DELAY_2500MKS (9 << ARD) #define SETUP_RETR_DELAY_2750MKS (10 << ARD) #define SETUP_RETR_DELAY_3000MKS (11 << ARD) #define SETUP_RETR_DELAY_3250MKS (12 << ARD) #define SETUP_RETR_DELAY_3500MKS (13 << ARD) #define SETUP_RETR_DELAY_3750MKS (14 << ARD) #define SETUP_RETR_DELAY_4000MKS (15 << ARD) #define SETUP_RETR_NO_RETRANSMIT (0 << ARC) #define SETUP_RETR_UP_TO_1_RETRANSMIT (1 << ARC) #define SETUP_RETR_UP_TO_2_RETRANSMIT (2 << ARC) #define SETUP_RETR_UP_TO_3_RETRANSMIT (3 << ARC) #define SETUP_RETR_UP_TO_4_RETRANSMIT (4 << ARC) #define SETUP_RETR_UP_TO_5_RETRANSMIT (5 << ARC) #define SETUP_RETR_UP_TO_6_RETRANSMIT (6 << ARC) #define SETUP_RETR_UP_TO_7_RETRANSMIT (7 << ARC) #define SETUP_RETR_UP_TO_8_RETRANSMIT (8 << ARC) #define SETUP_RETR_UP_TO_9_RETRANSMIT (9 << ARC) #define SETUP_RETR_UP_TO_10_RETRANSMIT (10 << ARC) #define SETUP_RETR_UP_TO_11_RETRANSMIT (11 << ARC) #define SETUP_RETR_UP_TO_12_RETRANSMIT (12 << ARC) #define SETUP_RETR_UP_TO_13_RETRANSMIT (13 << ARC) #define SETUP_RETR_UP_TO_14_RETRANSMIT (14 << ARC) #define SETUP_RETR_UP_TO_15_RETRANSMIT (15 << ARC) // RF_SETUP #define CONT_WAVE 7 // (Только для nRF24L01+) Непрерывная передача несущей (для тестов) #define RF_DR_LOW 5 // (Только для nRF24L01+) Включает низкую скорость передачи 250кбит/с. При этом бит RF_DR_HIGH должен быть 0 #define PLL_LOCK 4 // Для тестов #define RF_DR_HIGH 3 // Выбор скорости обмена (при значении бита RF_DR_LOW = 0): 0 - 1Мбит/с; 1 - 2Мбит/с #define RF_PWR 1 // 2бита. Выбирает мощность передатчика: 0 - -18dBm; 1 - -16dBm; 2 - -6dBm; 3 - 0dBm #define RF_SETUP_MINUS18DBM (0 << RF_PWR) #define RF_SETUP_MINUS12DBM (1 << RF_PWR) #define RF_SETUP_MINUS6DBM (2 << RF_PWR) #define RF_SETUP_0DBM (3 << RF_PWR) #define RF_SETUP_1MBPS (0 << RF_DR_HIGH) #define RF_SETUP_2MBPS (1 << RF_DR_HIGH) #define RF_SETUP_250KBPS (1 << RF_DR_LOW) // этот режим не должен использоваться с автоматическим контролем отправки // STATUS #define RX_DR 6 // Флаг получения новых данных в FIFO приёмника. Для сброса флага нужно записать регистр со значением этого бита 1 #define TX_DS 5 // Флаг завершения передачи. Для сброса флага нужно записать регистр со значением этого бита 1 #define MAX_RT 4 // Флаг превышения установленного числа повторов. Без сброса этого флага дальнейший радиообмен не возможен. Для сброса флага нужно записать регистр со значением этого бита 1. Передаваемые данные остаются в очереди, их можно удалить командой FLUSH_TX #define RX_P_NO 1 // 3 бита. Номер канала, данные для которого доступны в FIFO приёмника: 0 - канал 0, ..., 5 - канал 5, 7 - FIFO приёмника пусто. #define TX_FULL_STATUS 0 // Признак заполнения FIFO передатчика: 1 - FIFO передатчика заполнено; 0 - есть доступные слоты (переименовано из TX_FULL во избежание путаницы с одноимённым битом из регистра FIFO_STATUS) // OBSERVE_TX #define PLOS_CNT 4 // 4 бита. Общее количество пакетов без подтверждения. Не меняется после достижения 15. Сбрасывается записью регистра RF_CH #define ARC_CNT 0 // 4 бита. Количество предпринятых повторов при последней отправке. Сбрасывается при начале отправки следующего пакета // FIFO_STATUS #define TX_REUSE 6 // Признак готовности последнего пакета для повтрной отправке. Устанавливается командой REUSE_TX_PL #define TX_FULL_FIFO 5 // Флаг переполнения FIFO очереди передатчика: 0 - есть свободное место в очереди; 1 - очередь переполнена (переименовано из TX_FULL во избежание путаницы с одноимённым битом из регистра STATUS) #define TX_EMPTY 4 // Флаг освобождения FIFO очереди передатчика: 0 - в очереди есть данные; 1 - очередь пуста #define RX_FULL 1 // Флаг переполнения FIFO очереди приёмника: 0 - есть свободное место в очереди; 1 - очередь переполнена #define RX_EMPTY 0 // Флаг освобождения FIFO очереди приёмника: 0 - в очереди есть данные; 1 - очередь пуста // DYNDP #define DPL_P5 5 // Включает приём пакетов произвольной длины по каналу 5 (должы быть установлены биты EN_DPL в регистры FEATURE и ENAA_P5 в регистре EN_AA) #define DPL_P4 4 // Включает приём пакетов произвольной длины по каналу 4 (должы быть установлены биты EN_DPL в регистры FEATURE и ENAA_P4 в регистре EN_AA) #define DPL_P3 3 // Включает приём пакетов произвольной длины по каналу 3 (должы быть установлены биты EN_DPL в регистры FEATURE и ENAA_P3 в регистре EN_AA) #define DPL_P2 2 // Включает приём пакетов произвольной длины по каналу 2 (должы быть установлены биты EN_DPL в регистры FEATURE и ENAA_P2 в регистре EN_AA) #define DPL_P1 1 // Включает приём пакетов произвольной длины по каналу 1 (должы быть установлены биты EN_DPL в регистры FEATURE и ENAA_P1 в регистре EN_AA) #define DPL_P0 0 // Включает приём пакетов произвольной длины по каналу 0 (должы быть установлены биты EN_DPL в регистры FEATURE и ENAA_P0 в регистре EN_AA) // FEATURE #define EN_DPL 2 // Включает поддержку приёма и передачи пакетов произвольной длины #define EN_ACK_PAY 1 // Разрешает передачу данных с пакетами подтверждения приёма #define EN_DYN_ACK 0 // Разрешает использование W_TX_PAYLOAD_NOACK ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //uint8_t mas[5]; //uint8_t dataOnTheModule[5] = { 254, 254, 254, 254, 254}; uint8_t read_register(uint8_t address) //чтение байта из оз, address -адрес байта { address = address | R_REGISTER; PORTB &=~(1 << SS); //Прижимаем вывод CSN к земле, тем самым сообщаем о начале обмена данных. SPDR = address; while (SPSR & (1 << SPIF));//ожидаем когда освободится SPI для последующей записи байта if (!(address == STATUS)) { SPDR = NOP; while (SPSR & (1 << SPIF)); } PORTB |= (1 << SS);//Вывод CSN(SS) МК к питанию, обмен данных завершен. return SPDR; } void write_register(uint8_t address, uint8_t data) //адрес регистра,что пишем в регистр. { address = address | W_REGISTER; //накладываем маску PORTB &=~(1 << SS); SPDR = address; while (SPSR & (1 << SPIF)); SPDR = data; while (SPSR & (1 << SPIF)); address = SPDR; //это для сброса флага SPIF PORTB |= (1 << SS); } //void read_several_registers(uint8_t address, uint8_t *buff, uint8_t size_reg) //чтение мнoгобайтового регистра, address - адрес байта { address = address | W_REGISTER; PORTB &=~(1 << SS); //Прижимаем вывод CSN к земле, тем самым сообщаем о начале обмена данных. SPDR = address; while (SPSR & (1 << SPIF));//ожидаем когда освободится SPI для последующей записи байта while(size_reg--) { SPDR = NOP; while (SPSR & (1 << SPIF)); *buff = SPDR; *buff++; } address = SPDR; //для сброса флага SPIF PORTB |= (1 << SS);//Вывод CSN(SS) МК к питанию, обмен данных завершен. } //void write_several_registers(uint8_t address, uint8_t *data, uint8_t size_reg)//адрес регистра, что пишем в регистр, размер регистра в байтах { address = address | W_REGISTER; //накладываем маску и отправляем адрес, в который хотим записать PORTB &=~(1 << SS); SPDR = address; while (SPSR & (1 << SPIF)); while(size_reg--) { SPDR = *data; while (SPSR & (1 << SPIF)); *data++; } address = SPDR; //это для сброса флага SPIF PORTB |= (1 << SS); } //char writebyte(unsigned char cData) { SPDR = cData; while(!(SPSR & (1<<SPIF))); return SPDR; } //uint8_t readreg (uint8_t reg) { _delay_us(10); PORTB &=~(1 << SS); _delay_us(10); writebyte(R_REGISTER+reg); _delay_us(10); reg = writebyte(NOP); _delay_us(10); PORTB |= (1 << SS); return reg; } int main(void) { SPCR = (1 << SPE) | (1 << MSTR); // режим 0, мастер, частота 1/4 от частоты ЦП DDRC |= (1<<CE); DDRC &=~(1<<IRQ); DDRB |= (1<<SCK)|(1<<MOSI)|(1<<SS)|(1<<PB1); DDRB &=~(1<<MISO); PORTB |= (1<<SS); write_register(RF_CH, 25); if(read_register(RF_CH) == 25) { PORTB |= (1<<PB1); } while(1) { } }
  2. Уважаемые форумчане, помогите люди добрые! Нужна помощь в написании прошивки для arduino. Цель в следующем: сделать своеобразный head trecker без пульта. План такой - Одна ардуино pro mini подключена к сервомашинкам она получает беспроводной сигнал с другой ардуино pro mini к которой подключен MPU-6050, за беспроводной прием и передачу отвечает nRF24L01. Помогите прописать алгоритм работы для каждой ардуинки в доглу не останусь!!! ПОЖАЛУЙСТА!! https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcRpZwwTRAmpCMPJgEQcvNefantmqY3x4zLKR8iTrESwGSjR6i5oxw Пример того, что хочу сделать ССЫЛКА на видео 1 ССЫЛКА на видео 2 тут осбо хочу выделить момент, когда нажимается кнопка, что бы положение гироскопа можно было поменять, но при этом серво машинки запоминают момент до нажатия кнопки.
  3. Отзовитесь люди кто создавал промышленную сеть на протоколе modbus или делал девайсы с использованием радиомодуля nRF23l01 нужен ваш код с комментами мне бедному студенту обьяснить че как почему и откуда естественно не за спасибо . могу даже заехать к вам со всем что потребуется (ноут макетка и все остальные детали) если вы проживаете в Москве.
  4. Здарова мужики!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! что есть? (дальше больше будет)--> радиомодуль nrf24l01(выбор пал на этот модуль т.к. он с хорошим запасом дальности) mega16(можно и другую мегу) типа кнопки типа диоды типа tft экран (вчера его запилил в мегу ...прикольнее чем 16х2 ...правд жрет много) все в достотачном количестве основная суть то че я хочу сделать вот на этой картинке грубо говоря пахари либо стучат , либо делают че нить полезное батек общается со всеми пахарями (!подчеркиваю их много)через modbus(насколько я понял кто то тут ведомый а кто то ведущий) modbus реализуется не по проводам а по воздуху с помощью nrf24l01 батька крышует opc server ,а общаются они через uart max232 usb ну и если конеш останется время opc server сотрудничает с ментами из scada все это добро будет присоеденено к кому то процессу (может быть) который я тоже выложу со временем в этом топике будет по ходу дела реализоваться вся [криминальная xD ] цепочка сюда будет выкладываться все что я сделал со скринами исходниками и прочее хотел бы повстречать на своем боевом крещении людей которые прошли достаточное количество подводных камней с modbusом uartom usb и тд и тп вообщем все что дальше левой половины пахаря xD и готовые уделить мне немного времени с моими иногда глупыми а ингодна не глупыми воспросами хочу сказать спасибо этому мужику который два года тому назад чему то меня научил в этом топике http://forum.cxem.ne...howtopic=116831 hd44780 спасибо мужик!! ,а это идея с мигающим двоеточием меня вообще убила и я как ее вижу вспоминаю вас gl & hf !