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.
|
Foto del collaudo del funzionamento dei moduli transceiver
|
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
|
|||||||||||||||||||||||||||
|
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)
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
/* 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 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 |