Не получается подружить 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