Οδηγός καλής κατασκευής και συνδεσμολογίας του Sampling Rate Indicator Ver.1.0

lemon

Supreme Member
3 March 2009
4,041
Δημήτρη μην παιδεύεσαι...λειτουργεί και με εξωτερική, μόλις σύνδεσα το εργαστηριακό τροφοδοτικό και δούλεψε, μάλιστα με σύνδεση μόνο του U1 μέγιστο 40mA ρεύμα και με την οθόνη 1.3 επάνω.
Για κάποιο λόγο έχει θέμα με το μικρό τροφοδοτικό που έφτιαξα, που ενώ λαμβάνει τάση 4,96V ανάβει το κόκκινο L, να δίνει ρεύμα κάτω από τα 40mA το βλέπω πολύ χλωμό!

Τουλάχιστον, ασχέτως ότι με παίδεψε δίχως αιτία δική του, λειτουργεί στην πρώτη δοκιμή μας και αυτό είναι καλό για όλους.
Πάμε τώρα για το δεύτερο μέρος του U3...
 
Μόλις τελείωσα και τις δικές μου δοκιμές, όντως μια χαρά δουλεύει με εξωτερική τροφοδοσία..

Περίεργο αυτό που λες με το δικό σου τροφοδοτικό. Σίγουρα το συνδέεις στην είσοδο των 5V, έτσι;
Έχεις πρόχειρο το σχηματικό να το δούμε;
 

lemon

Supreme Member
3 March 2009
4,041
Είχα βγάλει το μικρό βόλτα και μόλις γύρισα.
Δεν ήταν θέμα συνδεσμολογίας Δημήτρη, λειτούργησε και με εργαστηριακό τροφοδοτικό στην ίδια φίσα συνδεσμολογίας που έχουμε φτιάξει, η πλάκα είναι ότι λειτούργησε και με το δεύτερο μικρό τροφοδοτικό που έχω φτιάξει για το Νικόλα (έφτιαξα δύο ίδια παίρνοντας Μ/Τ μικρούς από παλιά κινητά), τι στο καλό συμβαίνει με το δικό μου θα το ψάξω γιατί είναι παντελώς κουλό!

Μην χάνεις χρόνο και τα τρία που έφτιαξα για την παρέα λειτουργούν κανονικά είτε με εξωτερική είτε με usb τροφοδοσία...το πρότζεκτ θεωρείται επιτυχές και ο κώδικας άψογος.
Μένουν τώρα δύο επιπλέον δοκιμές, η μία με τοποθέτηση U2 το Si8045AA και τέλος η ενσωμάτωση του IR σε συνδιασμό με το 8642ΒΑ και φυσικά κάθε άλλη πιθανή προσαρμογή σε μελλοντικές εφαρμογές.
 
Last edited:

lemon

Supreme Member
3 March 2009
4,041
Πολύ γέλιο, έλαβε τέλος και το προβληματικό τροφοδοτικάκι.
Μάλλον θα του βάλω επάνω ένα λογότυπο "όταν τα μάτια σε προδίδουν λόγω ηλικίας".
Τι είχα κάνει, αντί να βάλω 100uF στον πρώτο πυκνωτή εισόδου (που βάζω ως συνήθως στα 7805) είχα βάλει 10uF, αυτό ήταν και το αίτιο της μη λειτουργίας. Μια χαρά λοιπόν και αυτό το τροφοδοτικάκι!
 
Ίσως θυμάστε ότι κατά τη φάση της σχεδίασης της πλακέτας είχαμε πει "στο παραπέντε" να βάλουμε και ένα header για τη σύνδεση δέκτη IR, με σκοπό να δώσουμε και δυνατότητα τηλεχειρισμού.

Αυτό το header συνέδεε το πιν που μεταφέρει το σήμα από το IR decoder σε ένα από τα λίγα διαθέσιμα pins του Arduino, το A7. Το "Α" υποδηλώνει αναλογικό pin, δηλαδή pin το οποίο μπορεί να διαχειριστεί αναλογικά σήματα, δηλαδή ουσιαστικά "καταλαβαίνει" πολλά επίπεδα τάσης και όχι απλά το logic 0 ή 1.

Σύμφωνα με την τεκμηρίωση του Arduino, τα εν λόγω pins μπορούν να χρησιμοποιηθούν χωρίς πρόβλημα και ως ψηφιακά (λογικό.. αν μπορείς να μετρήσεις αναλογικές τάσεις προφανώς μπορείς και να καταλάβεις ένα logic low ή ένα logic high).
Στην πράξη όμως τα πράγματα είναι λίγο διαφορετικά, καθότι υπάρχει ένα function το οποίο δεν υποστηρίζει αναλογικές πόρτες αλλά είναι απαραίτητο για την λειτουργία του κώδικα IR. Αυτό κάνει την χρήση του Α7 πιν αδύνατη.

Αλλά επειδή είμαστε ντιούηδες σιγά μην κολλήσουμε σε κάτι τέτοιο..

Τα μόνα ψηφιακά πινς που δεν συνδέονται στα isolators είναι τα D12 και D13, τα οποία τα είχαμε προορίσει για οδήγηση ρελέδων (μέσω των τρανσίστορς). Δεν είναι δύσκολο να "επιστρατευθεί" το ένα από αυτά για τον δέκτη IR.

Η πιο λογική επιλογή είναι το D12.

Για να γίνει αυτό κάνουμε τα παρακάτω:

1) Δεν κολλάμε (ή αν τα έχουμε κολλήσει τα αφαιρούμε) τα R3 και Q2.
2) Στο κάτω μέρος της πλακέτας κάνουμε μια τομή στο trace που φαίνεται με κίτρινο στην παρακάτω φωτό.
3) Επίσης στο κάτω μέρος της πλακέτας κολλάμε ένα καλωδιάκι από το D12 στο πιν 1 του JP1_IR(DA) (βλέπε ροζ γραμμή στο παρακάτω σχήμα).

pcb_IR_hack.jpg

Έτσι έχουμε ανακατευθύνει το κατάλληλο πιν του JP1_IR(DA) ώστε να οδηγείται από το D12.

Τα υπόλοιπα τα αναλαμβάνει ο κώδικας..

(συνεχίζεται..)
 

lemon

Supreme Member
3 March 2009
4,041
Εάν δεν θέλετε να κόψετε τη διαδρομή από το pin1 (JP1) στο A7, μπορείτε απλά να μην ενώσετε το πιν του IR δέκτη στο Pin1 και απλά να συνδεθούν στον αέρα παρακάμτοντας το pin1.
Για τις δοκιμές μου σύνδεσα ένα καλωδιάκι από το αντίστοιχο πόδι του IR δέκτη κατευθείαν στο D12 και έκανα τη δουλειά μου.
Μπορώ να πω ότι μετά από κάποια απαραίτητη επικοινωνία που χρειάστηκε να κάνω με το Δημήτρη για τον κώδικα και για κάποιες αλλαγές και συστάσεις που μου έδωσε όλα λειτούργησαν κανονικά.

Το παρακάτω πρόχειρο βίντεο λειτουργίας (τραβηγμένο από το 10χρονο μικρό μου) δείχνει την εφαρμογή σε mambo2, το οποίο λειτούργησε υποδειγματικά.




 
Last edited:

lemon

Supreme Member
3 March 2009
4,041
Ο Δημήτρης έχει σκεφτεί να απλοποιήσει τη διαδικασία εξεύρεσης κωδικών των πλήκτρων του πληκτρολογίου για εύκολη ενσωμάτωση οποιαδήποτε τηλεχειριστηρίου κατάλληλης συμβατότητας.
Μην τον τρελάνουμε με πιέσεις, μέχρι να το ολοκληρώσει έτσι όπως το έχει φανταστεί, ως ντιούηδες, μπορούμε να βάλουμε λίγο χρόνο παραπάνω και να το κάνουμε με το χεράκι μας.

Θα γράψω μερικές αράδες για το πως παραμετροποιήθηκε το Sampling Rate Indicator στην περίπτωση του Mambo2.

Θα αναφέρω τις αλλαγές που έγιναν στον κώδικα και το λόγο έτσι ώστε να έχουμε μια πιο ολοκληρωμένη εικόνα.
Στην περίπτωση λοιπόν του Mambo2 έχουμε:
1) Si8065AA στη θέση του U1 και στη φίσα Η4 είσοδος όλων των Fx δειγματοληψίας και dsd (το σχήμα το έχει ανεβάσει ο Δημήτρης ήδη). Τροφοδοσία στη φίσα Η4 από ένα μικρό γραμμικό τροφοδοτικό 5V.

2) Si8642ΒΑ στη θέση του U2 και στη φίσα Η5, στα Pin1(Vcc), Pin6(gnd) δόθηκε τροφοδοσία 5V από την τροφοδοσία του ίδιου του μάμπο (πρέπει η τροφοδοσία dc να είναι 5V και όχι κάποια άλλη), ενώ είτε στο Pin4 είτε στο Pin5 θα ενώσετε το μεσαίο Pin του τριπλού τζάμπερ που αλλάζει το μάμπο είσοδο. Εάν θυμάστε εκεί βάζουμε ένα τζάμπερ είτε από τη μια μεριά (JP1-2) είτε από την άλλη (JP2-3) για εναλλαγή των εισόδων (αρκετοί έχουν διακόπτη στο σημείο αυτό). Εμάς μας ενδιαφέρει μόνο το μεσαίο pin το οποίο ενώνεται με το S του πολυπλέκτη. Αυτό λοιπόν το pin θα πέρνει είτε Hi τιμή δηλ. 5V και θα παίζει την i2s είσοδο είτε Lo δηλ. 0V και θα παίζει η s/pdif - τόσο απλά!

3) στη θέση του JP1_IR μπήκε ένα Vishay IR Receiver (TSOP34838), στο JP1_IR με φορά από κάτω προς τα πάνω ενώθηκαν, Vcc, gnd, Signal. To Signal προσωπικά δεν το ένωσα αλλά ένωσα το αντίστοιχο ποδαράκι του receiver απευθείας με το D12 του nano.

Στον κώδικα έγιναν οι εξής αλλαγές:

1) ενεργοποίηση του Amanero, γιατί απλά έχω amanero
#define Amanero
// #define DIYINHK_XMOS
// #define JLSounds
// #define WaveIO[/CODE]

2) ενεργοποίηση του TWOOUTPUTS επειδή χρησιμοποιώ στη θέση U2 to Si8642ΒΑ
//#define ALLINPUTS
#define TWOOUTPUTS

3) ενεργοποίηση του IRCONTROL εφόσον έχω βάλει το IR Receiver
#define IRCONTROL

4) ενεργοποίηση του U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK) επειδή έχω βάλει 1.3" oled οθόνη με SH1106, αντί του SSD1306 που έχουν οι 0,96"
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // 0.96" OLED Display using I2C which does not send ACK
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK

5) εισαγωγή του κατάλληλου κωδικού για αντιστοίχιση του τηλεχειριστηρίου μου - ΠΡΟΣΟΧΗ = ότι έχω υπογραμμίσει είναι οι κωδικοί που αντιστοιχούν στο on/off της οθόνης, στο πλήκτρο για spdif (source 1) και στο πλήκτρο για usb (source 2), το 0x υποχρεωτικά μπροστά.
#define POWER_CODE 0xA10CA00F // Code for power on/off
#define SOURCE1_CODE 0xA10C140B // Code for source 1
#define SOURCE2_CODE 0xA10C940B // Code for source 2

6) εισαγωγή του Pin που ενώνεται το signal του IR Receiver, στην περίπτωσή μας του D12 θα συμπληρώσετε την τιμή 12.
int RECV_PIN = 12; // IR Receiver input pin.

7) αλλαγή του 32 -> 0 εκεί που περιγράφει ο Δημήτρης ποιες δειγματοληψίες θα δείχνει η οθόνη. Έτσι ώστε να μην έχω ένδειξη 32KHz όταν δεν υπάρχει σήμα στην είσοδο usb, προτίμησα να γράφει 0
οπότε αντί του :
if (digitalRead(I1) == false && digitalRead(I2) == false && digitalRead(I3) == false && digitalRead(I4) == false)
{
SR = 32;
να γραφεί SR = 0


Πως βρίσκουμε τον κωδικό σε κάθε πλήκτρο του τηλεχειριστηρίου μας που θέλουμε να βάλουμε για power on/off της οθόνης και για την εναλλαγή των εισόδων μας (spdif<->usb)
Έχουμε ανοίξει το τελευταίο fw του Δημήτρη και στη κονσόλα του Arduino πάμε Tools->Serial Monitor.
Μας ανοίγει ένα παράθυρο, όπου κάθε φορά που πατάμε το πλήκτρο που μας ενδιαφέρει στο τηλεχειριστήριο μας, αυτό μας εμφανίζει τον 16δικό κωδικό που αντιστοιχεί στο στιγμιαίο πάτημα
Π.χ A10C140B
Θα παρατηρήσουμε ότι εάν πατήσουμε συνεχόμενα το ίδιο πλήκτρο θα εμφανίσει μια αλληλουχία 16δικών ψηφίων, εμάς πάντως μας ενδιαφέρει πάντα το πρώτο.
Καταγράφουμε αυτούς τους κωδικούς για τα 3 ενδιαφερόμενα πλήκτρα και τα εισαγάγουμε στα αντίσχτοιχα πεδία του Κώδικα πάντα με 0x μπροστά (βλέπε παραπάνω παράδειγμα 5 στον κώδικα).

Ίσως η διαδικασία σας φαίνεται βουνό, αλλά θα δείτε ότι είναι παιχνιδάκι μόλις την κατανοήσετε

Σημ.1 = μη ξεχνάτε ότι το σημείο τσεκαρίσματος πάνω αριστερά στην κονσόλα του Arduino, κάνει έλεγχο της σωστής εισαγωγής των εντολών στον κώδικα
Σημ.2 = μη ξεχνάτε ότι το βελάκι που δείχνει δεξιά, φορτώνει τον κώδικα που έχετε φορτώσει στην κονσόλα στο nano με την προυπόθεση ότι το έχετε συνδέσει σωστά στον υπολογιστή σας.
 
Last edited:

sokmav

AVClub Fanatic
5 February 2012
14,227
Παρέλαβα κι εδώ και σύνδεσα.
Η πλακέτα κόσμημα,έχουν δίκιο οι φίλοι που την είδαν.

Απροβλημάτιστη λειτουργία με τη μία (φυσικά μου το έστειλε έτοιμο ο Μανόλο τον οποίο και υπερευχαριστώ ).
Δημήτρη και Μανόλη υποκλίνομαι,απλώς ζωγραφίσατε.
 
Re: Απάντηση: Οδηγός καλής κατασκευής και συνδεσμολογίας του Sampling Rate Indicator

Ο Δημήτρης έχει σκεφτεί να απλοποιήσει τη διαδικασία εξεύρεσης κωδικών των πλήκτρων του πληκτρολογίου για εύκολη ενσωμάτωση οποιαδήποτε τηλεχειριστηρίου κατάλληλης συμβατότητας.
Μην τον τρελάνουμε με πιέσεις, μέχρι να το ολοκληρώσει έτσι όπως το έχει φανταστεί, ως ντιούηδες, μπορούμε να βάλουμε λίγο χρόνο παραπάνω και να το κάνουμε με το χεράκι μας.

Θα γράψω μερικές αράδες για το πως παραμετροποιήθηκε το Sampling Rate Indicator στην περίπτωση του Mambo2.

.
.
.

Σημ.1 = μη ξεχνάτε ότι το σημείο τσεκαρίσματος πάνω αριστερά στην κονσόλα του Arduino, κάνει έλεγχο της σωστής εισαγωγής των εντολών στον κώδικα
Σημ.2 = μη ξεχνάτε ότι το βελάκι που δείχνει δεξιά, φορτώνει τον κώδικα που έχετε φορτώσει στην κονσόλα στο nano με την προυπόθεση ότι το έχετε συνδέσει σωστά στον υπολογιστή σας.

Πολύ σωστή περιγραφή Μανόλη, δεν θα μπορούσα να τα γράψω καλύτερα!

Μια μικρή διευκρίνηση μόνο. Εδώ που λες:

Έχουμε ανοίξει το τελευταίο fw του Δημήτρη και στη κονσόλα του Arduino πάμε Tools->Serial Monitor.

πρέπει να έχουμε συνδεδεμένη την πλακέτα στον υπολογιστή μέσω USB για να λειτουργήσει. ΟΚ, κάπως αυτονόητο για τους περισσότερους, αλλά το λέω για καλό και για κακό.

--- Αυτόματη συγχώνευση μηνύματος ---

Παρέλαβα κι εδώ και σύνδεσα.
Η πλακέτα κόσμημα,έχουν δίκιο οι φίλοι που την είδαν.

Απροβλημάτιστη λειτουργία με τη μία (φυσικά μου το έστειλε έτοιμο ο Μανόλο τον οποίο και υπερευχαριστώ ).
Δημήτρη και Μανόλη υποκλίνομαι,απλώς ζωγραφίσατε.

Αυτά είναι τα καλά της συλλογικής εργασίας.. Ποιοτικό αποτέλεσμα και open hardware & software.
 

sokmav

AVClub Fanatic
5 February 2012
14,227
Να ρωτήσω κι εγω ενα κουλό που μου κάνει;
Οταν το ανάβω βγάζει μια λευκή οθόνη. Με το που πατάω ενα απο τα πλήκτρα στο τηλεκοντρόλ (οποιοδήποτε απο τα τρία ) στρώνει και ειναι μια χαρα.
Καμία ιδέα;
 
Όλα λευκά ή απλά random αναμμένα pixels?

Αν είναι το δεύτερο, το είχα παρατηρήσει και εγώ κάποια στιγμή με οθόνη 1.3", αλλά δεν ήξερα αν το έκαναν όλες.. Μετά μου είπε και ο Μανώλης ότι το έκανε και η δικιά του, αλλά μετά ξέχασα να το ψάξω..
 

lemon

Supreme Member
3 March 2009
4,041
Θέλεις να αλλάξεις μια εντολή από false σε true.
Έτσι το έλυσα το θέμα.
Υπομονή σε μερικές ώρες θα είμαι σπίτι και θα σου δώσω τη γραμμή της εντολής που πρέπει να αλλάξεις.

--- Αυτόματη συγχώνευση μηνύματος ---

Έλα το είχα στο email που ανταλλάξαμε με το Δημήτρη, τυχερός είσαι...

Ψάξε και άλλαξε το παρακάτω.

αντί του poweron = false; θέλει poweron = true;

δηλ. θέλει έτσι
#ifdef IRCONTROL
irrecv.enableIRIn(); // Start the IR receiver
//Serial.println("IR on");
poweron = true; // εδώ ήταν false
#endif IRCONTROL
 

sokmav

AVClub Fanatic
5 February 2012
14,227
Οκ Μανόλο,αφου βρήκες άκρη ολα οκ!
(Εχουμε support,οχι αστεία. )

--- Αυτόματη συγχώνευση μηνύματος ---

Το έκανα κιόλας,άψογος!
 

lemon

Supreme Member
3 March 2009
4,041
Ωραίος!
Το ίδιο πρόβλημα μου εμφανίστηκε σε έναν άλλο ελεγκτή που μπήκε ο κώδικας του Δημήτρη, όπου η μικρή 1,3" oled που έχουμε μου έβγαζε ακριβώς το ίδιο με σένα.

Έφαγα μία ολόκληρη βδομάδα για να βρω ότι συνερχόταν με pwr on/off του τηλεχειριστηρίου...κατόπιν ψάχνοντας και μαθαίνοντας είδα ότι ήθελε αλλαγή αυτή η εντολή.
(Εν τω μεταξύ το Δημήτρη τον είχα ζαλίσει...με πέντε χιλιάδες πράγματα!!!)