Προς το περιεχόμενο

USB δέκτης υπερύθρων συμβατός με το LIRC.


firewalker

Προτεινόμενες αναρτήσεις

Πρόσφατα (πριν ένα χρόνο και βάλε) είπα να φτιάξω ένα σύστημα τηλεχειρισμού του υπολογιστή που θα ήταν συμβατό με το LIRC . Αρχικά επέλεξα την πολύ απλή λύση της χρήσης της σειριακής θήρας με το πολύ απλό κύκλωμα που βλέπετε παρακάτω.

 

schematics-small.png

 

Στην συνέχεια όμως χρειαζόμουν την σειριακή θύρα για το modem μου. Έτσι έψαξα και βρήκα την παρακάτω λύση που χρησιμοποιεί μία θήρα usb. Πρόκειται για το USBtiny του Dick Streefland που χρησιμοποιεί τον μικροελεγκτή ATtiny2313 της Atmel για την υλοποίηση του πρωτοκόλλου usb και την λήψη υπέρυθρων με την βοήθεια ενός δέκτη, του TSOP1738 (εγώ χρησιμοποίησα το TMFS5360 από μια παλιά τηλεόραση που είχα και δουλεύει εξίσου καλά).

 

 

Η κατασκευή είναι πολύ απλή σαν κύκλωμα. Το μόνο δύσκολο σημείο είναι ο προγραμματισμός του ATtiny2313 και αυτό μόνο για όσους δεν διαθέτουν κάποιον προγραμματιστή. Και πάλι όμως υπάρχουν πολύ απλά κυκλώματα μόνο παθητικών στοιχείων που με την βοήθεια της σειριακής ή της παράλληλης θήρας μπορούμε να προγραμματίσουμε τον μικροελεγκτή μας. Εγώ είχα στην διάθεση μου τον παρακάτω.

 

http://www.tuxgraphic.org/electronics/200510/article05101.shtml

http://www.insomnia.gr/forum/showthread.php?t=230564

 

Στο δικό μου κύκλωμα παρέλειψα την οθόνη υγρών κρυστάλλων που δεν είναι και απαραίτητη.

 

iriq8.th.gif

 

Ο κώδικας υπάρχει εδώ. Στον φάκελο ir υπάρχει το αρχείο main.hex και το οποίο μπορούμε να φορτώσουμε όπως είναι στον μικροελεγκτή. Εγώ επέλεξα να αφαιρέσω εντελώς το τμήμα του κώδικα που αναφέρονταν στην οθόνη υγρών κρυστάλλων για να γίνει ο κώδικας ελαφρώς ποιο γρήγορος. Ο κώδικας είναι γραμμένος για gcc-avr 3.4.0, μπορεί να γίνει compile και με gcc-avr 4.1.0 αφού αφαιρέσουμε τον κώδικα για την οθόνη (αν δεν το κάνουμε ο κώδικας που παράγετε δεν θα χωράει στον attiny2313). Εγώ δοκίμασα με την έκδοση gcc-avr 4.3.0 και το compile δεν γινόταν λόγω κάποιον αλλαγών στο gcc. Άλλαξα (με την βοήθεια και άλλων από το http://www.avrfreaks.net) ελαφρώς τον κώδικα για να μην υπάρχει πρόβλημα. Για όποιον ενδιαφέρεται παραθέτω και το σχετικό patch.

 

>
--- main-original.c	2008-01-16 23:50:50.000000000 +0200
+++ ./ir/main.c	2008-05-18 15:00:28.000000000 +0300
// ----------------------------------------------------------------------
// Handler for timer1 input capture interrupt: edge on IR input
// ----------------------------------------------------------------------
-__attribute__((signal,naked))			// interrupts are DISABLED
-extern	void	SIG_INPUT_CAPTURE1 ( void )
+
+// interrupts are DISABLED
+
+ISR(TIMER1_CAPT_vect, ISR_NAKED)
{
	static	uint_t	prev;
	uint_t		stamp;
@@ -236,8 +238,10 @@
// ----------------------------------------------------------------------
// Handler for timer1 output compare A interrupt: IR transmission timeout
// ----------------------------------------------------------------------
-__attribute__((signal))				// interrupts are DISABLED
-extern	void	SIG_OUTPUT_COMPARE1A ( void )
+
+// interrupts are DISABLED
+
+ISR(TIMER1_COMPA_vect)
{
	TIMSK = 0;				// disable both IR interrupts
	sei();					// allow USB interrupt
@@ -448,8 +452,9 @@
// ----------------------------------------------------------------------
// Main
// ----------------------------------------------------------------------
-__attribute__((naked))		// suppress redundant SP initialization
-extern	int	main ( void )
+
+__attribute__((OS_main))		// suppress redundant SP initialization
+int	main ( void )
{
	PORTD |= _BV(PULLUP);
	DDRD  |= _BV(PULLUP);	// enable pullup on D-

 

Η συσκευή χρειάζεται το module lirc_igorplugusb που περιέχεται στο πακέτο του lirc. Καλύτερα να έχουμε την τελευταία έκδοση (που είναι η 0.8.3 προς το παρόν) του lirc που περιέχει ένα patch του Dick Streefland που κάνει την συσκευή να συμπεριφέρεται καλύτερα.

 

Για την κατασκευή του χρησιμοποίησα μια διάτρητη πλακέτα και ένα κουτάκι από κάποιο παλιό κόσμημα για να την φιλοξενήσει.

 

Μερικές εικόνες.

 

dsc01998kz7.th.jpg

 

dsc01999lr9.th.jpg

 

dsc02000ti0.th.jpg

 

dsc02001kn3.th.jpg

 

dsc02002rm0.th.jpg

 

 

dsc02003dh3.th.jpg

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τρελό respect!!!! Έχω μείνει κόκκαλο...

 

Ευχαριστώ πολύ. Αλλά το πραγματικό respect πρέπει να πάει αρχικά στον Igor Cesko που κατάφερε (για πρώτη φορά) αρχικά να συνδέσει έναν avr (τον AT90S2313) με μια θήρα usb. Και στον Dick Streefland για την βελτίωση και εισαγωγή του project στον κόσμο του gnu linux.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μπράβο firewalker για τους πειραματισμούς σου! Είχα φτιάξει και γω πριν από χρόνια (5, 6;) έναν serial δέκτη από μια παλιά φωτοδίοδο τηλεόρασης με έναν hex inverter/buffer, ο οποίος με υπηρετεί ακόμα πιστά :-). Το LIRC είναι ένα εξαιρετικά χρήσιμο πρόγραμμα, και ειδικά όσοι έχουν laptop με IrDA μπορούν να το στήσουν πανεύκολα.

 

Τώρα μου έδωσες τροφή για σκέψη όμως: να φτιάξω έναν IR δέκτη για έναν παλιό (αλλά καλό) ραδιοφωνικό δέκτη Rotel που έχω, ο οποίος δυστυχώς δεν έχει τηλεχειρισμό.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μπράβο firewalker για τους πειραματισμούς σου! Είχα φτιάξει και γω πριν από χρόνια (5, 6;) έναν serial δέκτη από μια παλιά φωτοδίοδο τηλεόρασης με έναν hex inverter/buffer, ο οποίος με υπηρετεί ακόμα πιστά :-). Το LIRC είναι ένα εξαιρετικά χρήσιμο πρόγραμμα, και ειδικά όσοι έχουν laptop με IrDA μπορούν να το στήσουν πανεύκολα.

 

Τώρα μου έδωσες τροφή για σκέψη όμως: να φτιάξω έναν IR δέκτη για έναν παλιό (αλλά καλό) ραδιοφωνικό δέκτη Rotel που έχω, ο οποίος δυστυχώς δεν έχει τηλεχειρισμό.

 

Ευχαριστώ :-).

 

Νομίζω ότι το LIRC δεν παίζει με το πρωτόκολλο IrDa πρέπει τα laptops να έχουν δέκτη IR που είναι εντελώς διαφορετικό.

 

Ο ραδιοφωνικός δέκτη που έχεις για pc είναι; Αν είναι σαν αυτόνομο μηχάνημα και δεν έχει τηλεχειρισμό έχεις μπόλικη δουλίτσα να κάνεις :-) :-) :-).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Νομίζω ότι το LIRC δεν παίζει με το πρωτόκολλο IrDa πρέπει τα laptops να έχουν δέκτη IR που είναι εντελώς διαφορετικό.

 

Κάτι μου λέει ότι έχεις δίκιο, γιατί στο δικό μου δεν κατάφερα με τίποτα να κάνω το LIRC να δουλέψει. Μπράβο για την κατασκευή, κάτι μου λέει ότι όταν βρω λίγο χρόνο θα πάρω το κολλητήρι ;-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ευχαριστώ :-).

 

Νομίζω ότι το LIRC δεν παίζει με το πρωτόκολλο IrDa πρέπει τα laptops να έχουν δέκτη IR που είναι εντελώς διαφορετικό.

Σαφώς και δεν παίζει με IrDA, είχα όμως την εντύπωση ότι μπορείς να χρησιμοποιήσεις έναν SIR δέκτη σε χαμηλό baud rate για να διαβάσεις σήματα από τηλεχειριστήρια, και για την ακρίβεια το είχα κάνει κάποτε με ένα laptop. Όμως φαίνεται ότι γενικά δε δουλεύει, για διάφορους λόγους, οπότε έχεις δίκιο.

 

Ο ραδιοφωνικός δέκτη που έχεις για pc είναι; Αν είναι σαν αυτόνομο μηχάνημα και δεν έχει τηλεχειρισμό έχεις μπόλικη δουλίτσα να κάνεις :-) :-) :-).

Είναι «φέτα», καμία σχέση με pc.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σαφώς και δεν παίζει με IrDA, είχα όμως την εντύπωση ότι μπορείς να χρησιμοποιήσεις έναν SIR δέκτη σε χαμηλό baud rate για να διαβάσεις σήματα από τηλεχειριστήρια

 

Ναι με SIR μπορεί να δουλεύει. Από ότι θυμάμαι όμως δεν λειτουργεί και τόσο καλά αυτή η μέθοδος.

 

Είναι «φέτα», καμία σχέση με pc.

 

Μάλλον θα χρειαστείς κάποιον άλλον mcu όπως τον Atmega8 για να μπορείς να αποθηκεύεις στην eeprom (δεν νομίζω να χωράει στον tiny2313) τον κώδικα του σήματος για κάθε πλήκτρο του remote για να κάνεις την αναγνώριση. Εκτός αν χρησιμοποιήσεις κάποια εξωτερική μνήμη όπως την 24LC32. Υπάρχει κάτι παρόμοιο που αποθηκεύει για ένα πλήκτρο μόνο.

 

http://www.serasidis.gr/circuits/InReCoMe/InReCoMe.htm

 

Γενικά πρέπει να γίνουν πολλά πραγματάκια στην συνέχεια. Για παράδειγμα ο τρόπος που θα αλλάζει ο σταθμός. Αν είναι ψηφιακός ο τρόπος είναι σχετικά εύκολο. Αν είναι αναλογικός θα χρειαστεί και κάποιον κινητήρα κ.τ.λ. Το ίδιο και για τον ήχο.

 

Αν πάντως το επιχειρήσεις κράτα μας ενήμερους. Θα έχει αρκετό ενδιαφέρον ένα τέτοιο project.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι, για ATMega το πήγαινα. Ψηφιακός είναι ο δέκτης, με 20 μνήμες + tuning, οπότε το interface θα είναι σχετικά απλό. Θα σας κρατήσω ενήμερους :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κοίτα να δεις αν κεντρικός DSP ή το tuner που έχει υποστηρίζει i2c. Αν υποστηρίζει και μπορέσεις να βρεις και τις προδιαγραφές του τα πράγματα απλοποιούνται πάρα πολύ.

 

Programmer έχεις επιλέξει; Θέλω full report! :-) :-) :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...