ultimo aggiornamento 1 agosto 2013 


 

Il modulo transceiver è pensato per essere interfacciato con un processore tipo Basic Stamp 2, per collegarlo con il modulo Arduino è possibile realizzare l'interfaccia visibile sotto. Il circuito originale l'ho trovato in rete sul Forum della Parallax.
Il circuito utilizza un circuito
M74HC126 che è un Buffer/driver di linea  di tipo CMOS ad alta velocità, il dispositivo richiede il controllo del pin di controllo che deve essere impostato alto per posizionare l'uscita in alta impedenza. Tutti gli ingressi sono dotati di circuiti di protezione contro le scariche elettrostatiche ed eccesso di tensione transitoria. L'attivazione avviene quando viene attivato il pin T/R del modulo Transceiver Parallax #27982.
Sono anche presenti due diodi led che segnalano la funzione di trasmissione o ricezione.
Per la gestione vedere alla sezione programmi


Schema base del circuito

homotix

PCBA

Foto del collaudo del funzionamento dei moduli transceiver

Stazione trasmittente

Stazione Ricevente

 

La stazione trasmittente è composta da:

- Modulo transreceiver #27982
- Intefaccia transreceive/Arduino
- Modulo Luigino (Compatibile 2009-UNO)
- Modulo LCD Keypad
- Batteria 9V

La stazione ricevente è composta da:

- Modulo transreceiver #27982
- Intefaccia transreceive/Arduino
- Modulo Arduino NANO
- Modulo 1000Pads-Mini 2Relays
- Batteria 9V

 

Modulo transreceiver #27982

Luigino 238

Arduino Nano

Intefaccia transreceive/Arduino

Modulo LCD Keypad

Modulo 1000Pads-Mini 2Relays

Filmato del test

(sono stati utilizzati due programmi Test_27982_rele_TX.ino e Test_27982_rele_RX.ino)

  

Modulo montato

SCHEMA ELETTRICO

Lista componenti:

C1

100 nF multitrato

D1

Led ø3mm

D2

Led ø3mm

IC1

M74HC126

IC2

Transceiver Parallax #27982

R1

10kΏ ¼ W

R2

2kΏ ¼ W

R3

390Ώ ¼ W

R4

390Ώ ¼ W

SV1

Pin-head Femmina 6x1

SV2

Pin-head Femmina 5x1

TR1

Transistor NPN 2N3904 – TO92

M74HC126 quadruple bus buffers with 3-state outputs
    

     
Piedinatura Datasheet Foto dell'integrato

 2N3904 Transistor SMALL SIGNAL NPN TRANSISTOR
  

Piedinatura Datasheet Foto del transistor

Costruzione della scheda

Per la realizzazione della scheda è previsto l’uso di un circuito stampato. Si dovrà scaricare il PDF che riporta la traccia in scala 1:1. Esiste anche la possibilità di scaricare i file per il programma EAGLE con cui ognuno potrà modificare il circuito per i propri utilizzi.
Per la sua realizzazione si utilizzerà una basetta in vetronite (monofaccia) di dimensioni 46x31mm circa, il metodo potrà essere quello della fotoincisione o del trasferimento termico utilizzando i cosiddetti fogli blu (PRESS-N-PELL)


Download
formato Eagle

Download
formato PDF

Una volta inciso il rame, si verificherà in controluce o mediante l’utilizzo di un multimetro, che non vi siano cortocircuiti soprattutto tra le piste più vicine. Si passerà quindi alla foratura della stessa, utilizzando una punta da 0,8mm.  Quindi si posizioneranno e salderanno i componenti come riportato nello schema

Per la saldatura si utilizzerà un piccolo saldatore a punta fine, della potenza di circa 25 – 30 W.  Si inizierà montando le resistenze, lo zoccolo per l’integrato, quindi i diodi led, il condensatore, il transistor terminando con le strip. Concluso il montaggio occorrerà inserire l'integrato IC1 sullo zoccolo controllandone l'orientamento.

Alcune fasi del montaggio del prototipo

Programmi utilizzati per il test

Per il funzionamento dei programmi occorre scaricare la libreria VirtualWire elaborata da Mike McCauley, che consente di utilizzare moduli radio wireless anche molto economici. La versione attualmente disponibile è  la 1.18

http://www.airspayce.com/mikem/arduino/VirtualWire/index.html

http://www.airspayce.com/mikem/arduino/VirtualWire/VirtualWire-1.18.zip

Programma stazione TX Programma stazione RX

Test_27982_rele_TX.ino

Test_27982_rele_RX.ino

 

Test_27982_rele_TX.ino

/*
 Test_27982_rele_TX.ino
 Il programma permette di verificare il funzionamento del
 modulo Parallax #27982 con comando di due relè montati
 sul modulo 1000Pads-Mini 2Relays Board.
 I comando viene dato dalla pressione dei tasti sul modulo
 LCD KEYPAD
 
 Vengono utilizzati i seguenti pin
 Pin +5V         -> Alimentazione
 Pin GND         -> Alimentazione
 Pin Digital 2   -> Selezione TX o RX
 Pin Digital 4   -> Bus D4 dati LCD
 Pin Digital 5   -> Bus D5 dati LCD
 Pin Digital 6   -> Bus D6 dati LCD
 Pin Digital 7   -> Bus D7 dati LCD
 Pin Digital 8   -> terminale RS display LCD
 Pin Digital 9   -> terminale EN display LCD
 Pin Digital 10  -> attivazione retroilluminazione
 Pin Digital 12  -> Trasmissione dati da #27982
 Pin Analogico 0 -> lettura keypad
 
 Creato il 2/4/2012
 da Adriano Gandolfo <https://www.adrirobot.it>
 This example code is in the public domain.
 */

#include <VirtualWire.h>
#include <LiquidCrystal.h>

// Selezione dei pin utilizzati dal display LCD
// Sintassi LiquidCrystal(rs, enable, d4, d5, d6, d7) 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
const int selPin =  2; // Selezione TX o RX

// defininizione dei valori utilizzati da pulsanti
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5
const char *mymessage = "B";
// lettura del pulsante
int read_LCD_buttons()
{
  adc_key_in = analogRead(0);      // lettura del valore 
  if (adc_key_in > 1000) return btnNONE;
  if (adc_key_in < 50)   return btnRIGHT;  
  if (adc_key_in < 195)  return btnUP; 
  if (adc_key_in < 380)  return btnDOWN; 
  if (adc_key_in < 555)  return btnLEFT; 
  if (adc_key_in < 790)  return btnSELECT;   
  return btnNONE;
}

void setup()
{
  //Transmit/Receive Select: LOW/Floating = Receive; HIGH = Transmit    
  pinMode(selPin, OUTPUT); 
  digitalWrite(selPin, HIGH); 

  pinMode(10, OUTPUT); //ricordarsi di attivarlo come uscita
  analogWrite(10, 90);
  lcd.begin(16, 2);            // inizializzazione libreria
  lcd.setCursor(0,0);
  lcd.print("Premi pulsante!"); // Scrittura messaggio

  vw_setup(2000);	 // Numero di Bits trasmessi al secondo
}

void loop()
{  

  lcd.setCursor(0,1);            // spostamento cursore
  lcd_key = read_LCD_buttons();  // Lettura del tasto premuto

  switch (lcd_key)               // in base al valore letto mostra un diverso messaggio  

  {
  case btnLEFT:
    {
      lcd.print("ON rele' 1  ");
      mymessage = "Y";
      break;
    }
  case btnRIGHT:
    {
      lcd.print("OFF rele' 1 ");
      mymessage = "N";
      break;
    }
  case btnUP:
    {
      lcd.print("ON rele' 2  ");
      mymessage = "Z";
      break;
    }
  case btnDOWN:
    {
      lcd.print("OFF rele' 2  ");
      mymessage = "V";
      break;
    }
  }

  digitalWrite(13, true);  // accende il LED per mostrare la trasmissione
  vw_send((uint8_t *)mymessage, strlen(mymessage)); // Trasmette il messaggio
  vw_wait_tx();  // ciclo di attesa per invio del messaggio
  digitalWrite(13, false); //spegne il led per segnalare che il messaggio è stato trasmesso
  delay(200);
}

Test_27982_rele_RX.ino

/*
 Test_27982_rele_RX.ino
 Il programma permette di verificare il funzionamento del
 modulo Parallax #27982 con comando di due relè montati
 sul modulo 1000Pads-Mini 2Relays Board
 
 Vengono utilizzati i seguenti pin
 Pin +5V         -> Alimentazione
 Pin GND         -> Alimentazione
 Pin Digital 2   -> Selezione TX o RX
 Pin Digital 9   -> Pilotaggio relè 1
 Pin Digital 10  -> Pilotaggio relè 2
 Pin Digital 11  -> Ricezione dati da #27982
 
 Creato il 2/4/2012
 da Adriano Gandolfo <https://www.adrirobot.it>
 This example code is in the public domain.
 */

#include <VirtualWire.h> 
const int selPin =  2;   // Selezione TX o RX
const int rele_1 = 9;
const int rele_2 = 10;

char inString[32];
int inCount;

void setup()
{
  //Transmit/Receive Select: LOW/Floating = Receive; HIGH = Transmit    
  pinMode(selPin, OUTPUT);
  digitalWrite(selPin, LOW); 

  pinMode(rele_1, OUTPUT); // Imposta il pin rele_1 come output
  digitalWrite(rele_1, HIGH); // disattiva rele_1
  pinMode(rele_2, OUTPUT); // Imposta il pin rele_2 come output
  digitalWrite(rele_2, HIGH); // disattiva rele_2

  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;
  inCount = 0;

  if (vw_get_message(buf, &buflen)) // Non-blocking
  {
    int i;
    for (i = 0; i < buflen; i++)
    {
      inString[inCount] = buf[i];
      inCount++;
    }

    ////// Verifica con il messaggio in arrivo //////
    if (strcmp(inString, "N") == 0){
      digitalWrite(10, true);// OFF relè 1
    }

    if (strcmp(inString, "Y") == 0){
      digitalWrite(10, false); //ON relè 1
    }

    if (strcmp(inString, "V") == 0){
      digitalWrite(9, true); //OFF relè 2
    }

    if (strcmp(inString, "Z") == 0){
      digitalWrite(9, false); //ON relè 2
    }
  }
}

 

Elenco revisioni
01/08/2013 Inserito programmi di gestione
19/05/2012 Emissione preliminare
Private Policy Cookie Policy