433MHz Rx non decodifico niente

Modulo ricevente 433MHz tipo RXB6 collegato ad Arduino-Uno per decodificare segnale OOK da Tx temperatura esterna. Sulla seriale in uscita non esce niente.

  • Ho provato con altri BXB6
  • Ho alimentato Rx con 5V. e con 3.3V da arduino
  • Ho alimentato Rx da alimentazione esterna
  • Ho caricato sketch esempio Rx da VirtualWire (data su pin 11)
  • Ho caricato sketchs esempio Rx da RCSwitch (data su pin 2)
  • Ho sostituito il 328P
  • Ho controllato la continuità da pin 2 al pin 4 del 328P

In sull'uscita data del'Rx (con oscilloscopio) rilevo il rumore continuo e, ben definito, il treno di impulsi del Tx, ma in uscita dalla seriale, niente!

Al momento non ho un altro Arduino sotto mano.

E' già capitato a qualcuno?
Cosa posso ancora verificare?

Si, succede anche a me, sebbene con alcune differenze.

Io uso degli economici moduli FS1000A da meno di 1 Euro la coppia (in Cina). Sono sempre da 433 MHz, sebbene esistano anche da 300 e qualcosa (non ricordo il valore).

Poiché usare un Arduino per collegare due pin mi sembrava esagerato, stavo eseguendo prove con due Digispark, che sono essenzialmente Attiny85 con una manciata di componenti intorno, perfettamente sostituibili con Attiny85 vergini e alcuni componenti passivi.

Ho provato diverse librerie, ma ho ottenuto risultati solo con l'ultima versione di VirtualWire, la V1.27.

In trasmissione uso un Digispark e uso lo sketch di esempio incluso nella libreria. Ho solo aggiunto un paio di pinMode per dichiarare l'uscita per LED e TX (la seconda, in teoria, non serve, perché la libreria dovrebbe farlo automaticamente, ma prevenire è meglio che dover fare debug in seguito). Inoltre ho dichiarato il pin di uscita (nel mio caso 0) con la funzione vw_set_tx_pin(x);

Inoltre ho cambiato l'istruzione che accende e spenge il LED in digitalWrite(LED_pin, HIGH); e digitalWrite(LED_pin, LOW);. Ovviamente LED_pin è una costante che ho dichiarato io (lo scrivo per i niubbi in programmazione).

In ricezione non sono riuscito a usare un Digispark, perché non rilevava, come nel tuo caso, nulla in ingresso. L'ho imputato al fatto che nel caso del Digispark, questo è configurato per un clock PLL a 16.5 MHz e nel core Tiny di Arduino i timing, ovvero i prescaler dei timer, sono assegnati con i medesimi valori sia a 16, che a 16.5 MHz, e questo ovviamente da luogo a timing errati. Sempre nel mio caso, suppongo sia da provare con clock a 8 MHz, opportunamente dichiarato.

Oppure il problema potrebbe essere di altra natura e potrebbe avere a che vedere con rumore e necessità di mettere una resistenza di pull-up, o pull-down. O qualche condensatore. Devo studiarci un po'.

Comunque, nel mio caso, ho risolto usando come ricevitore un Arduino Uno, che riceve benissimo, sempre con le medesime modifiche allo sketch, ma ovviamente adattate alla ricezione.

Poiché ritengo un Uno totalmente sprecato per questa applicazione, a parte continuare ad eseguire test con Digispark, come ripiego penso di usare un Mini, di dimensioni quasi paragonabili al Digispark, sebbene con la medesima potenza di calcolo dell'Uno. Del resto è la parte ricevente, quella più complessa.

In totale alternativa, potresti sperimentare con protocolli simili a quello usato nei comandi a infrarossi. C'è una buona spiegazione sul sito di Roman Black, esattamente qui:

cheapRFmodules

@ e-person
interessante il Digispark, lo terrò presente.

Anche tu mi confermi che con l'Uno ti funziona. (cosi come in molti altri post).

Faccio qualche altra prova.....

Sei poi venuto a capo del problema? La ricezione dati di sensori a 433 MHz è un argomento che mi interessa...