nRF24L01 + DS18B20. Конфликт?
- Войдите на сайт для отправки комментариев
Чт, 22/10/2015 - 16:13
Пытаюсь передать данные с датчика DS18B20 по воздуху.
Есть вот такой скетч:
#include <SPI.h> #include <nRF24L01.h> #include <RF24.h> #include <OneWire.h> #include <DallasTemperature.h> OneWire oneWire(2); DallasTemperature sensors(&oneWire); DeviceAddress Thermometer; const uint64_t pipe = 0xF0F1F2F3F4LL; RF24 radio(9, 10); // CE, CSN void setup(){ Serial.begin(9600); radio.begin(); delay(2); radio.setChannel(9); radio.setDataRate(RF24_1MBPS); radio.setPALevel(RF24_PA_HIGH); radio.openWritingPipe(pipe); sensors.begin(); sensors.getAddress(Thermometer, 0); sensors.setResolution(Thermometer, 9); } void loop() { sensors.requestTemperatures(); int data = analogRead(0); radio.write(&data, sizeof(data)); Serial.print("data: "); Serial.println(data); }
Ничего не передает nRF24L01.
Стоит закомментировать строку "sensors.requestTemperatures();" - nRF24L01 передает данные отлично.
Куда копать?
А где получение температуры в лупе после замера?
Я специально убрал все лишнее из кода.
Вот эта строка: "sensors.requestTemperatures();" уже "отключает" модуль NRF.
Причем в Serial идут данные.
А приёмник есть? write() возвращает FALSE, если эфир никто не слушает. ну и попробуй скорость снизить до минимальной.
Ну и исходный скетч покажи, а то гадать в конце дня жутко лень.
Ну и исходный скетч покажи, а то гадать в конце дня жутко лень.
Там ничего такого нет. Получение температуры и отпрака ее по радио.
Я вот что заметил: Любой delay больше 10 в скетче вешает польностью модуль NRF.
А приёмник есть? write() возвращает FALSE, если эфир никто не слушает. ну и попробуй скорость снизить до минимальной.
Возвращает true, если delay нет в коде, и false если есть delay.
Скорее всего delay есть в <RF24.h>.
Вот такой код:
Результат выдает в порт.
В этом случае первый раз ОК потом всегда FALSE.
Если delay закомментировать, то всегда OK.
Вот специально написал "пингер" для двух модулей.
printf.h
Вывод:
Ищи сопли в схеме.
Вангую, что проблема либо в принимающей стороне либо в питании. Ну или еще что не так с соединениями.
Ну и, как Вам уже советовали, попробуйте уменьшить скорость работы приемника - должно положительно сказаться на стабильности.