Приём-передача 433 МГц
- Войдите на сайт для отправки комментариев
Доброго времени суток!
Создаю небольшой приборчик, отображающий температуру в удалённом месте (расстояние 8 метров, провод не пустить).
В прототипе всё работает:
Передатчик + приемник XY-MK-5V 433Mhz.
Передатчик подключён к Digispark (плюс на Digispark висит датчик DS20B18).
Датчик температуры висит на D2, передатчик радиосигнала на D4.
Код:
#include <OneWire.h>
#include <DS18B20.h>
#include <RCSwitch.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DS18B20 sensor(&oneWire);
RCSwitch mySwitch = RCSwitch();
void setup() {
sensor.begin();
//pinMode(1, OUTPUT);
mySwitch.enableTransmit(4);
}
int tC;
void loop() {
sensor.requestTemperatures();
while (!sensor.isConversionComplete());
tC = sensor.getTempC();
mySwitch.send(tC, 24);
delay(1000);
}
Приёмник подключён к Arduino UNO, к D2 (прерывание 0). Тут тоже всё просто, код из примера:
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(9600);
mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2
}
void loop() {
if (mySwitch.available()) {
Serial.print("Received ");
Serial.print( mySwitch.getReceivedValue() );
Serial.print(" / ");
Serial.print( mySwitch.getReceivedBitlength() );
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.println( mySwitch.getReceivedProtocol() );
mySwitch.resetAvailable();
}
}
Данные приходят!
Received 8 / 24bit Protocol: 1 Received 8 / 24bit Protocol: 1 Received 8 / 24bit Protocol: 1 Received 8 / 24bit Protocol: 1 Received 8 / 24bit Protocol: 1 Received 8 / 24bit Protocol: 1 Received 8 / 24bit Protocol: 1
Теперь пытаюсь привести модуль приёма в компактный вид:
Подключаю приёмник 433 МГц к Arduino Pro mini (5V, atmega168, 16 МГц) - не работает.
Подключаю приёмник 433 МГц к Arduino Pro mini (5V, atmega328, 16 МГц) - не работает.
Подключаю приёмник 433 МГц к Arduino Nano (5V, atmega328, 16 МГц) - не работает.
Однако если выводить digitalRead(2) в монитор порта - скачут "нолики и единички" - т.е. что-то на D2 таки приходит.
Код тот же. Подключение пинов - тоже.
Припаивал антенну к приёмнику - не влияет на результат (на передатчике она есть).
Уже вторые сутки мучаюсь, очень много гуглил - результата нет.
Пожалуйста, выручайте ))
Для проверки добавил функцию attachInterrupt().
void setup() { Serial.begin(9600); mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2 attachInterrupt(digitalPinToInterrupt(2), LaWopa, CHANGE); } void loop() { // if (mySwitch.available()) { // Serial.print("Received "); // Serial.print( mySwitch.getReceivedValue() ); // Serial.print(" / "); // Serial.print( mySwitch.getReceivedBitlength() ); // Serial.print("bit "); // Serial.print("Protocol: "); // Serial.println( mySwitch.getReceivedProtocol() ); // mySwitch.resetAvailable(); //} } void LaJopa() { //if (mySwitch.available()) { Serial.print("Received "); Serial.print( mySwitch.getReceivedValue() ); Serial.print(" / "); Serial.print( mySwitch.getReceivedBitlength() ); Serial.print("bit "); Serial.print("Protocol: "); Serial.println( mySwitch.getReceivedProtocol() ); //mySwitch.resetAvailable(); // } }Соответственно контроллер видит, что на D2 есть изменения HIGH/LOW, т.к. выполняется функция LaWopa. Однако протокол не распознаётся (как я понимаю):
в передатчик напряжение повыше, до 12 Вольт, антенны в оба устройства 300000/433/4=173 мм. И все эти советы есть в сети, если не йух сосать, а гуглем пользоваться.
И да, я лично это проверял. И да у меня в столе есть пара таких модулей и я смогу снять пруф-видео, что так - работает.
Ленивые новички уже порядком задолбали!!!
//плюс на Digispark висит датчик DS20B18
А либка для ds18b20. Нужно что-то менять.
Вы похоже решили что если две либки по отдельности работают, то и вместе будут.
Попринимайте чего от наивности, таблетки какие попить или травку для ингаляции ;)
в передатчик напряжение повыше, до 12 Вольт, антенны в оба устройства 300000/433/4=173 мм. И все эти советы есть в сети, если не йух сосать, а гуглем пользоваться.
И да, я лично это проверял. И да у меня в столе есть пара таких модулей и я смогу снять пруф-видео, что так - работает.
Ленивые новички уже порядком задолбали!!!
Антенны есть. 12 вольт попробую. Хорошо. Отчего тогда на 5 вольтах на Uno всё отлично работает?
//плюс на Digispark висит датчик DS20B18
А либка для ds18b20. Нужно что-то менять.
Вы похоже решили что если две либки по отдельности работают, то и вместе будут.
Попринимайте чего от наивности, таблетки какие попить или травку для ингаляции ;)
Причём тут "либка" для ds18b20??? Написал же:
"Датчик температуры висит на D2, передатчик радиосигнала на D4.
Приёмник подключён к Arduino UNO, к D2 (прерывание 0).
Данные приходят!"
расечатать?
1Received 8 / 24bit Protocol: 12Received 8 / 24bit Protocol: 13Received 8 / 24bit Protocol: 14Received 8 / 24bit Protocol: 15Received 8 / 24bit Protocol: 16Received 8 / 24bit Protocol: 17Received 8 / 24bit Protocol: 1- с датчиком в связке с передатчиком всё нормально. Тут проблемы нету.
Вы сюда поспорить пришли?
Вы даташит модуля читали. 5В его минимальное напряжение, 12В - нормальное. На минимально иногда работает нормально (зависит от миллиона факторов)