Не получается подружить nrf24l01 и esp8266
- Войдите на сайт для отправки комментариев
Пт, 06/05/2022 - 20:52
Привет, пытаюсь подключить nrf24l01 и esp8266, мне нужна именно есп, поэтому варианта с ардуино нету. Скачал библиотеку гавера, но ее не получается даже загрузить вот код :
/* В данном скетче с передающей части (ТХ) отправляется значение переменной counter, переменная эта с каждым шагом увеличивается на единицу. Приёмник (RX) принимает сигнал, и отправляет обратно то, что получил, используя функцию radio.writeAckPayload То есть наш приёмник на одно мгновение становится передатчиком! Если наш передатчик (TX) принимает ответный сигнал, он выдаёт то, что принял, и пишет посчитанное вермя между отправкой и приёмом сигнала в микросекундах. Данный скетч можно использовать для теста модулей на качество связи, а также для понимания работы функции radio.writeAckPayload by AlexGyver 2016 */ #include <SPI.h> #include "nRF24L01.h" #include "RF24.h" RF24 radio(D1,D3); // "создать" модуль на пинах 9 и 10 Для Уно //RF24 radio(9,53); // для Меги byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб byte counter; void setup() { Serial.begin(9600); // открываем порт для связи с ПК radio.begin(); // активировать модуль radio.setAutoAck(1); // режим подтверждения приёма, 1 вкл 0 выкл radio.setRetries(0, 15); // (время между попыткой достучаться, число попыток) radio.enableAckPayload(); // разрешить отсылку данных в ответ на входящий сигнал radio.setPayloadSize(32); // размер пакета, в байтах radio.openWritingPipe(address[0]); // мы - труба 0, открываем канал для передачи данных radio.setChannel(0x60); // выбираем канал (в котором нет шумов!) radio.setPALevel (RF24_PA_MAX); // уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX radio.setDataRate (RF24_1MBPS); // скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS // должна быть одинакова на приёмнике и передатчике! // при самой низкой скорости имеем самую высокую чувствительность и дальность!! // ВНИМАНИЕ!!! enableAckPayload НЕ РАБОТАЕТ НА СКОРОСТИ 250 kbps! radio.powerUp(); // начать работу radio.stopListening(); // не слушаем радиоэфир, мы передатчик } void loop(void) { byte gotByte; Serial.print("Sending... "); Serial.println(counter); // запоминаем время отправки uint32_t last_time = micros(); if (radio.write(&counter, 1) ) { // отправляем значение counter if (!radio.available()) { // если получаем пустой ответ Serial.print("Empty, "); Serial.print(" Time: "); Serial.print(micros() - last_time); Serial.println(" microseconds"); Serial.println(); } else { while (radio.available() ) { // если в ответе что-то есть radio.read( &gotByte, 1 ); // читаем Serial.print("Anser: "); Serial.print(gotByte); Serial.print(" Time: "); Serial.print(micros() - last_time); Serial.println(" microseconds"); Serial.println(); counter++; } } } else { Serial.println("Fail"); } delay(1000); }
,вот ошибка :
Arduino: 1.8.15 (Windows 10), Плата:"NodeMCU 1.0 (ESP-12E Module), 160 MHz, Flash, Disabled (new aborts on oom), Disabled, All SSL ciphers (most compatible), 32KB cache + 32KB IRAM (balanced), Use pgm_read macros for IRAM/PROGMEM, 4MB (FS:1MB OTA:~1019KB), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200" C:\Users\user\Desktop\nRF24L01 tests\время передачи\TX_time\TX_time.ino: In function 'void setup()': TX_time:32:34: error: invalid conversion from 'byte*' {aka 'unsigned char*'} to 'uint64_t' {aka 'long long unsigned int'} [-fpermissive] In file included from C:\Users\user\Desktop\nRF24L01 tests\время передачи\TX_time\TX_time.ino:13: C:\Users\user\Documents\Arduino\libraries\RF24-master/RF24.h:324:33: note: initializing argument 1 of 'void RF24::openWritingPipe(uint64_t)' 324 | void openWritingPipe(uint64_t address); | ~~~~~~~~~^~~~~~~ exit status 1 invalid conversion from 'byte*' {aka 'unsigned char*'} to 'uint64_t' {aka 'long long unsigned int'} [-fpermissive] Возникла ошибка при загрузке http://arduino.esp8266.com/versions/2.3.0/package_esp8266com_index.json Этот отчёт будет иметь больше информации с включенной опцией Файл -> Настройки -> "Показать подробный вывод во время компиляции"
в интернете почти ничего не смог найти, подскажите в чем дело и как исправить?
uint64_t address