Как отправить данные датчика с Arduino через NRF24L01 на Raspberry Pi

Я могу отправлять текст с Arduino по беспроводной сети на RPi. Теперь я пытаюсь отправить данные датчика, которые я измеряю, на Pi. Вот что у меня ниже:

int moisture = A0;
int temp = 3;

//Пропуская настройку и чтение значений

radio.write(&moisture);
radio.write(&temp);

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

, 👍0


4 ответа


Лучший ответ:

1

Поскольку вы не указали и не показали, какую библиотеку NRF24L01 вы используете, нельзя точно сказать, в чем проблема, но в некоторых реализациях NRF24 метод write() принимает ( или требует) второй параметр, len, задающий количество отправляемых байтов. Если используемая вами библиотека не требует этого параметра, возможно, она использует какое-то значение по умолчанию или обрабатывает буфер как строку, завершающуюся нулевым байтом.

В любом из этих случаев результаты могут быть ошибочными.

Вместо того, чтобы опускать второй параметр, укажите его. Например:

radio.write(&moisture, 2);
radio.write(&temp, 2);
,

0

Рекомендую выбрать платформу для общения. Вам не нужно иметь дело с низкоуровневым общением. Я предлагаю вам попробовать https://www.mysensors.org/ Это помогает подключить ваши датчики, дает вам примеры кодов для выбранных датчики для передачи данных в сторону вашего Pi. Существует хорошо документированный API, на котором вы можете построить свое приложение. На Pi вы можете использовать последовательный шлюз и/или установленный контроллер. Эти контроллеры написаны для связи с вашими датчиками и другими узлами. Они предоставляют графический веб-интерфейс для визуализации ваших данных и их истории. Для контроллера я рекомендую начать с https://www.domoticz.com/ или Openhab. Я думаю, что Domoticz - лучший выбор для начала. с на Пи.

,

0

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

,

0

Я предлагаю вам указать действительный размер данных с функцией записи, например, для radio.write(&moisture,sizeof(moisture)). надеюсь, что это будет работать для дальнейшего объяснения этого метода www.robofever.in

,