Pagina 2 di 2

Re: RF trasmitter and receiver

Inviato: 12 dic 2012, 10:20
da alez
Digli di stare attento a non farli cadere nel sugo :lol:

Re: RF trasmitter and receiver

Inviato: 06 feb 2013, 11:34
da alez
Finalmente sono riuscito a mettere le mani sugli insettini, ho iniziato da quelli economici (quelli che fanno solo TX -> RX ad 1 canale).

Per prima cosa vi dico che questo sito va bene come esempio e per cultura generale sui moduli ma contiene una libreria VirtualWire obsoleta, ci ho sbattuto un po la testa ma non sono riuscito a compilare con successo ne con IDE Arduino 1.0 ne con 0.23:

http://www.pjrc.com/teensy/td_libs_VirtualWire.html

Dopo un po di ricerche finalmente sono riuscito a trovare questo sito, stesso autore ma librerie aggiornate:

http://www.open.com.au/mikem/arduino/VirtualWire/

Un po di foto:

shield barbona millefori TX 433mhz, DATA collegato al PIN 12 di Arduino, +5V, GND

Immagine

shield barbona millefori RX 433mhz, +5V, DATA collegato al PIN 2 di Arduino, GND

Immagine

test TX-RX via_filo (praticamente la libreria VirtualWire ma con un REAL wire :lol: :lol: :lol: ), pin GND in comune e DATA in comune

Immagine

se col filo funziona, test TX-RX via_radio

Immagine

vi riporto anche la lunghezza delle antenne che ho messo io:

8,5 cm sul TX
15 cm sul RX

Immagine


Ho provato ad allonanarmi di una ventina di passi e continua a funzionare correttamente sulla console seriale di Arduino:

Immagine

non fate caso al 46 iniziale invece del 68, ho cambiato lo sketch per prova da "Hello" a "Fello"

Ecco anche gli sketch che ho usato per i test, leggermente modificati rispetto a quelli trovati negli Examples

Transmitter:

Codice: Seleziona tutto

// transmitter.pde
//
// Simple example of how to use VirtualWire to transmit messages
// Implements a simplex (one-way) transmitter with an TX-C1 module
//
// See VirtualWire.h for detailed API docs
// Author: Mike McCauley (mikem@open.com.au)
// Copyright (C) 2008 Mike McCauley
// $Id: transmitter.pde,v 1.3 2009/03/30 00:07:24 mikem Exp $

#include <VirtualWire.h>
const int transmit_pin = 12; // DATA del trasmettitore sul PIN 12 di Arduino

void setup()
{
    Serial.begin(9600);	  // Debugging only
    Serial.println("setup");

    vw_set_tx_pin(transmit_pin);  
    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000);	 // Bits per sec
}

void loop()
{
    const char *msg = "hello";

    digitalWrite(13, true); // Flash a light to show transmitting
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(13, false);
    delay(200);
}
Rispetto allo sketch originale, ho aggiunto le righe

Codice: Seleziona tutto


...
const int transmit_pin = 12; // DATA del trasmettitore sul PIN 12 di Arduino
...
vw_set_tx_pin(transmit_pin); 





Receiver:

Codice: Seleziona tutto

// receiver.pde
//
// Simple example of how to use VirtualWire to receive messages
// Implements a simplex (one-way) receiver with an Rx-B1 module
//
// See VirtualWire.h for detailed API docs
// Author: Mike McCauley (mikem@open.com.au)
// Copyright (C) 2008 Mike McCauley
// $Id: receiver.pde,v 1.3 2009/03/30 00:07:24 mikem Exp $

#include <VirtualWire.h>
const int receive_pin = 2; // DATA del ricevitore sul PIN 2 di Arduino

void setup()
{
    Serial.begin(9600);	// Debugging only
    Serial.println("setup");

    vw_set_rx_pin(receive_pin);
    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000);	 // Bits per sec

    vw_rx_start();       // Start the receiver PLL running
}

void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Non-blocking
    {
	int i;

        digitalWrite(13, true); // Flash a light to show received good message
	// Message with a good checksum received, dump it.
	Serial.print("Got: ");
	
	for (i = 0; i < buflen; i++)
	{
	    Serial.print(buf[i], HEX);
	    Serial.print(" ");
	}
	Serial.println("");
        digitalWrite(13, false);
    }
}
Rispetto allo sketch originale, ho aggiunto le righe

Codice: Seleziona tutto

...
const int receive_pin = 2; // DATA del ricevitore sul PIN 2 di Arduino
...
    vw_set_rx_pin(receive_pin);


Lo sketch TX funzionava anche senza la definizione del tx pin, mentre l'rx non funzionava correttamente.

Buon smanettamento!

P.s.: quello di sinistra (TX) è un Arduino Duemilanove mentre quello di destra (RX) è un Uno, il tutto compilato con IDE Arduino 1.0.

Re: RF trasmitter and receiver

Inviato: 06 feb 2013, 13:53
da ragno
Ah, che figata le librerie, con 4 righe di codice sei in etere. :lol: :lol: :lol:
Stiamo parlando dei moduli piu' "cicciosi" non di quelli NRF?


ciao

Re: RF trasmitter and receiver

Inviato: 06 feb 2013, 15:02
da alez
Moduli più bavosi, quelli solo TX e solo RX separati, guarda la foto delle antenne

Re: RF trasmitter and receiver

Inviato: 15 feb 2013, 11:28
da alez
Altra scoperta che potrebbe eviatare di farvi impazzire con la libreria VirtualWire:

i PIN 11 e 10 NON VANNO usati, servono per le funzioni interne di TIMER 1 dell'atMega, avevo dei led collegati a quei pin e sembrava un'albero di natale, meno male che sapevo che lo sketch funzionava, ho fatto tutto il resto e poi ho incluso la libreria VirtualWire nel mio sketch.


Forse crea problemi anche il PIN 9 ma non ho testato, altre info qui:

http://arduino.cc/forum/index.php?topic=49177.0

Re: RF trasmitter and receiver

Inviato: 15 feb 2013, 15:32
da alez
Altro hint: la libreria VirtualWire a quanto pare parla stringese, quindi se si vuole trasmettere int come serve a me, è necessario convertire gli int in stringa all'atto della trasmissione e le stringhe in int all'atto della ricezione, è spiegato abbastanza bene in questo esempio che usa le funzioni

itoa()

e

atoi()

http://genericnerd.blogspot.it/2012/07/ ... -with.html

Presto pubblico il codice che le usa, ho quasi terminato il trasmettitore...

Re: RF trasmitter and receiver

Inviato: 18 apr 2013, 12:35
da alez
Altro test positivo: ho provato a piazzare il trasmettitore nel garage dei miei genitori ed il ricevitore collegato ad un portatile per monitorare il segnale.

Nel vano scale, mentre salivo, non funzionava ma posizionando il ricevitore in camera da letto (dove poi andrà sistemato definitivamente) il segnale arriva :D

Praticamente gli insettini riescono ad attraversare 2 piani, non male per essere oggetti così a basso costo e bassa potenza! (prima o poi devo decidermi a misurarne l'assorbimento)

Ho terminato i prototipi hardware su millefori, ora penso che userò due XINO per realizzare il trasmettitore e ricevitore definitivi, sfruttando la parte millefori dovrei riuscirci senza aggiungere uno shield sopra, cosa molto comoda!

Re: RF trasmitter and receiver

Inviato: 30 nov 2013, 23:37
da alez
Siori e siore sono arrivate le antenne barbone, cercate sulla baya

"10pcs 433MHz Helical antenna"

e sarete serviti :lol: