Ciao a tutti!
questo progetto è nato dal bisogno di un telecomando per cambiare le slide ai miei corsi di Arduino,
so che ce ne sono in vendita di diversi tipi,
ma perchè comprare una cosa quando è possibile farsela da soli in modo molto più divertente..
Inoltre il costo totale dovrebbe aggirarsi sui 10 euro o poco più, quindi molto meno di quelli in commercio!
Quello che ho fatto è un semplice sistema di trasmissione basato su moduli rf e chip Attiny85,
il ricevitore comunica con il pc tramite un Arduino Pro Micro (cercalo su eBay, costa pochi euro).
Il concetto è semplice: sul trasmettitori ci sono 2 tasti, alla pressione si un tasto o dell'altro vengono inviati 2 differenti valori al ricevitore
Ecco un video che illustra il comportamento del progetto:
Questi sono i 2 circuiti da realizzare, ecco il trasmettitore:
Ed ecco quello del ricevitore:
Gli sketch in questo caso sono 3,
uno da caricare nell'Attiny85 del trasmettitore, uno in quello del ricevitore e uno nell'Arduino Pro Micro.
Gli sketch che andranno caricati nell'attiny85 devono essere caricati con un programmatore apposito,
se non lo avete potete utilizzare un Arduino Uno come programmatore come mostrato qui:
Per caricare gli sketch di trasmettitore e ricevitore ho utilizzato la libreria "manchester".
Inoltre il creatore della libreria consiglia di utilizzare l'IDE di Arduino in versione 0022 che trovate in questa lista.
Ora che siamo pronti possiamo cominciare!
Partiamo dallo sketch del trasmettitore:
Ecco invece quello del ricevitore:
Ed infine ecco quello da caricare nell'Arduino Pro Micro:
Se avete un Arduino Leonardo, anzichè il Pro Micro, va bene lo stesso.
L'Arduino Uno invece non è compatibile con questo progetto, perchè non dispone la possibilità di emulare la tastiera del pc (infatti sfrutto questa funzione per simulare la pressione delle frecce destra e sinistra per cambiare le slide).
Finito! questo è tutto,
se avete domande come al solito scrivete qui sotto, ciao!
Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!
questo progetto è nato dal bisogno di un telecomando per cambiare le slide ai miei corsi di Arduino,
so che ce ne sono in vendita di diversi tipi,
ma perchè comprare una cosa quando è possibile farsela da soli in modo molto più divertente..
Inoltre il costo totale dovrebbe aggirarsi sui 10 euro o poco più, quindi molto meno di quelli in commercio!
Massimo Banzi, il creatore di Arduino |
Quello che ho fatto è un semplice sistema di trasmissione basato su moduli rf e chip Attiny85,
il ricevitore comunica con il pc tramite un Arduino Pro Micro (cercalo su eBay, costa pochi euro).
Il concetto è semplice: sul trasmettitori ci sono 2 tasti, alla pressione si un tasto o dell'altro vengono inviati 2 differenti valori al ricevitore
Ecco un video che illustra il comportamento del progetto:
Questi sono i 2 circuiti da realizzare, ecco il trasmettitore:
Ed ecco quello del ricevitore:
Gli sketch in questo caso sono 3,
uno da caricare nell'Attiny85 del trasmettitore, uno in quello del ricevitore e uno nell'Arduino Pro Micro.
Gli sketch che andranno caricati nell'attiny85 devono essere caricati con un programmatore apposito,
se non lo avete potete utilizzare un Arduino Uno come programmatore come mostrato qui:
Per caricare gli sketch di trasmettitore e ricevitore ho utilizzato la libreria "manchester".
Inoltre il creatore della libreria consiglia di utilizzare l'IDE di Arduino in versione 0022 che trovate in questa lista.
Ora che siamo pronti possiamo cominciare!
Partiamo dallo sketch del trasmettitore:
- #include <Manchester.h>
- /*
- Manchester Transmitter example
- In this example transmitter will send one 16 bit number per transmittion
- try different speeds using this constants, your maximum possible speed will
- depend on various factors like transmitter type, distance, microcontroller speed, ...
- MAN_300 0
- MAN_600 1
- MAN_1200 2
- MAN_2400 3
- MAN_4800 4
- MAN_9600 5
- MAN_19200 6
- MAN_38400 7
- */
- #define BUTTON2_PIN 3
- #define BUTTON1_PIN 2
- #define TX_PIN 1
- #define LED_PIN 0
- int transmit_data1 = 1;
- int transmit_data2 = 2;
- void setup() {
- pinMode(BUTTON1_PIN , INPUT_PULLUP);
- pinMode(BUTTON2_PIN , INPUT_PULLUP);
- pinMode(LED_PIN, OUTPUT);
- //man.workAround1MhzTinyCore(); //add this in order for transmitter to work with 1Mhz Attiny85/84
- man.setupTransmit(TX_PIN, MAN_1200);
- }
- void loop() {
- int BUTTON1_STATE = digitalRead (BUTTON1_PIN);
- if (BUTTON1_STATE == LOW)
- {
- man.transmit(transmit_data1);
- digitalWrite (LED_PIN, HIGH);
- }
- else
- {
- digitalWrite (LED_PIN, LOW);
- }
- int BUTTON2_STATE = digitalRead (BUTTON2_PIN);
- if (BUTTON2_STATE == LOW)
- {
- man.transmit(transmit_data2);
- digitalWrite (LED_PIN, HIGH);
- }
- else
- {
- digitalWrite (LED_PIN, LOW);
- }
- }
Ecco invece quello del ricevitore:
- #include <Manchester.h>
- /*
- Manchester Receiver example
- In this example receiver will receive one 16 bit number per transmittion
- try different speeds using this constants, your maximum possible speed will
- depend on various factors like transmitter type, distance, microcontroller speed, ...
- MAN_300 0
- MAN_600 1
- MAN_1200 2
- MAN_2400 3
- MAN_4800 4
- MAN_9600 5
- MAN_19200 6
- MAN_38400 7
- */
- #define RX_PIN 1
- #define LED_PIN1 0
- #define LED_PIN2 2
- int m;
- void setup() {
- pinMode(LED_PIN1, OUTPUT);
- pinMode(LED_PIN2, OUTPUT);
- man.setupReceive(RX_PIN, MAN_1200);
- man.beginReceive();
- }
- void loop() {
- if (man.receiveComplete()) {
- m = man.getMessage();
- man.beginReceive(); //start listening for next message right after you retrieve the message
- }
- if (m == 1)
- {
- digitalWrite (LED_PIN1, HIGH);
- delay(100);
- digitalWrite (LED_PIN1, LOW);
- m=0;
- }
- else
- {
- digitalWrite (LED_PIN1, LOW);
- }
- if (m == 2)
- {
- digitalWrite (LED_PIN2, HIGH);
- delay(100);
- digitalWrite (LED_PIN2, LOW);
- m=0;
- }
- else
- {
- digitalWrite (LED_PIN2, LOW);
- }
- }
- int leftButton = 2;
- int rightButton = 3;
- void setup()
- {
- pinMode(leftButton, INPUT_PULLUP);
- pinMode(rightButton, INPUT_PULLUP);
- Keyboard.begin();
- }
- void loop()
- {
- int rightState = digitalRead(rightButton);
- int leftState= digitalRead(leftButton);
- if (rightState == HIGH){
- Keyboard.write (KEY_RIGHT_ARROW);
- delay(500);
- }
Se avete un Arduino Leonardo, anzichè il Pro Micro, va bene lo stesso.
L'Arduino Uno invece non è compatibile con questo progetto, perchè non dispone la possibilità di emulare la tastiera del pc (infatti sfrutto questa funzione per simulare la pressione delle frecce destra e sinistra per cambiare le slide).
Finito! questo è tutto,
se avete domande come al solito scrivete qui sotto, ciao!
Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!
Ottima guida! E' sempre bello trovare un progetto ben commentato come questo da cui trarre spunto per nuove invenzioni.
RispondiEliminaNoi siamo una startup appena nata (ci siamo presentati in occasione della Maker Faire Rome) con l'obiettivo di avvicinare quanta più gente possibile al mondo dell'automazione DIY tramite guide come queste. Se ti può far piacere avere un altro canale su cui condividere i tuoi progetti prova a dare un'occhiata al nostro sito www.umake.it - the makers marketplace! E' una sorta di marketplace dedicato ai makers, quindi speriamo ti piacerà!
Buon making e ancora complimenti per il tuo blog!
Questo commento è stato eliminato dall'autore.
RispondiEliminaCiao, bellina l'idea e lo spunto eventualmente per altro (la simulazione della tastiera mi ha ha fatto sorridere davanti al monitor...)...
EliminaDomandina sul ricevitore: come mai hai unsato un Attiny85 + Arduino Pro Micro , non si riesce a scaricare tutto sul Arduino Pro Micro ?
grazie
Ciao
Roberto
Ciao, alla fine il mio obiettivo è quello, cercare di proporre cose abbastanza generiche in modo da essere utili a più persone possibili.
EliminaPer il secondo attiny il motivo è che non sono riuscito a far comunicare l'attiny con il micro, probabilmente a causa delle diverse librerie.
Ciao io avrei intensione di fare una cosa del genere, ovvero collegare un ricevitore ir ad arduino e poi con il telecomando posso comandare un pc (ad esempio i classici pulsanti di avanzamento quando si guarda un film) secondo te è possibile farlo?
RispondiEliminaciao, devi cercare di capire quali sono i tasti che ti servono, se sono la freccia dx e sx lo sketch é identico a questo.
EliminaCiao Daniele, sto provando a costruire un apri porta con telecomando con gli stessi moduli che hai usato tu. Solo che la distanza tra ricevitore ed emettitore non supera i 10 metri, ho usato antenne in rame elicoidale acquistate da ebay. Cosa posso fare per aumentare il raggio d'azione?
RispondiEliminaCiao, purtroppo il raggio di questi moduli non è un granchè, ti consiglio questi che tirano decisamente di più.
Eliminahttp://www.danielealberti.it/2016/01/ricetrasmettitore-rf-per-arduino.html
ciao!
Ciao progetto interessante e mi sarebbe comodo per la mia tesina. Io vorrei sviluppare questo telecomando che mi aiuti a cambiare le slide della mia tesina power point che non a caso parla delle trasmissioni e della televisione, avrò difficoltà a farlo ? Dove posso trovare tutti i componenti che mi servono ?
RispondiElimina