Google+

Σάββατο, 21 Δεκεμβρίου 2013

Merry Christmas

Το Arduino GR σας εύχεται 
Καλά Χριστούγεννα 
Καλή Πρωτοχρονιά!




Κυριακή, 8 Δεκεμβρίου 2013

RF signal decoding

Οι ποικιλία των RF συσκευών που κυκλοφορούν στην αγορά, μπορεί να μετατρέψει την πιθανή χρήση τους με το Arduino σε μία όχι και τόσο εύκολη υπόθεση. Αν θέλουμε για παράδειγμα, να συνδέσουμε έναν ασύρματο μετεωρολογικό σταθμό, αισθητήρα κ.α. και να λαμβάνουμε τις τιμές του, θα πρέπει να αποκωδικοποιήσουμε το σήμα εκπομπής.

Παρακάτω, μια μέθοδος/διαδικασία για τη λήψη και αποκωδικοποίηση τέτοιων σημάτων.


Λήψη του σήματος RF μέσω του receiver module, και σύνδεση της εξόδου του, στην είσοδο της κάρτας ήχου του υπολογιστή (Line in), όπως φαίνεται στην παρακάτω εικόνα:

έπειτα, ένα αρχείο ήχου (.wav) θα πρέπει να καταγραφεί και να ανοίξει με ένα πρόγραμμα επεξεργασίας ήχου, όπως το Audacity.

Ανοίγοντας το αρχείο εμφανίζεται η κυματομορφή, πρέπει να το επεξεργαστείτε ώστε καταρχήν να γίνει η διάκριση μεταξύ του ωφέλιμου σήματος από το θόρυβο:

Αυτό μπορεί να γίνει εύκολα χρησιμοποιώντας τα εργαλεία ζουμ:
Η ψηφιακή διαμόρφωση σήματος είναι OOK (on-off-keying) παλμοί, δηλαδή τα bit 1, 0 κωδικοποιούνται με άνοιγμα-κλείσιμο του πομπού και φυσικά έχουν διαφορετική διάρκεια το καθένα. Η ακριβής διάρκεια του παλμού για τα bit 0 και 1, υπολογίζεται μετρώντας τα δείγματα (samples) της κυματομορφής με τη βοήθεια του audacity, δηλαδή μετρώντας τις τελείες που εμφανίζονται πάνω από τους παλμούς:
Το σύνολο των δειγμάτων ενός παλμού, προς το ρυθμό δειγματοληψίας που είναι ήδη γνωστός (48000 δείγματα/δευτερόλεπτο) μας δίνει τη διάρκεια του παλμού, πχ:

Το παραπάνω νούμερο χρειάζεται να δηλωθεί στον κώδικα arduino για τον κάθε bit αντίστοχα, ώστε να μπορεί να ολοκληρωθεί η αναγνώριση, αποστολή και λήψη των σημάτων.

Με αυτόν τον τρόπο, η αναγνωρίση bit 0,1 μέσα στην κυματομορφή αποτελεί μια σχετικά απλή διαδικασία.

Εναλλακτικά, υπάρχει η δυνατότητα να γίνει λήψη και εγγραφή του σήματος RF σε αρχείου ήχου, χωρίς τη χρήση της κάρτας ήχου αλλά με χρήση ενός φθηνού SDR usb (RTL2832) και το λογισμικό SDRsharp όπου υπάρχει ενσωματωμένη λειτουργία εγγραφής, ταυτόχρονα με τη λήψη του σήματος RF.


Διαβάστε περισσότερα:
Interfacing with remote power sockets
433 MHz RF - Temperature and humidity sensor decoding
433 MHz projects
Wireless Remote Control for Arduino
Controlling 433Mhz RF power sockets with a RFM12B module
Modulation

Σάββατο, 7 Δεκεμβρίου 2013

RF remote control

Με τη συγκεκριμένη κατασκευή αντικαθιστούμε τα τηλεχειριστήρια RF για τον απομακρυσμένο έλεγχο συσκευών (γκαραζόπορτες, πρίζες, διακόπτες, συναγερμούς) με το arduino και ένα RF module (RX/TX)
Υλικά που απαιτούνται:

1 x RF Link Transmitter (433/315 MHz)
1 x RF Link Receiver (433/315 MHz)



Σύνδεση:

Εγκατάσταση βιβλιοθήκης rc-switch

Η αποκωδικοποίηση του σήματος RF που στέλνει το τηλεχειριστήριο, για την ενεργοποίηση των εκάστοτε συσκευών, είναι και το πιο tricky και χρονοβόρο μέρος στην υλοποίηση και γίνεται με τη βοήθεια του RF Receiver module.

Ευτυχώς, υπάρχει έτοιμος κώδικας στη βιβλιοθήκη που κάνει λήψη και αποκωδικοποίηση των RF μηνυμάτων που στέλνονται πατώντας τα κουμπιά στο τηλεχειριστήριο:


Τα μηνύματα, με τους κωδικούς για κάθε πλήκτρο, εξάγονται στη σειριακή κονσόλα:

Αφου ολοκληρωθεί η αποκωδικοποίηση των μηνυμάτων για κάθε πλήκτρο του τ/χ, οι κωδικοί μπορούν πλέον να τροφοδοτηθούν για αποστολή από το RF Transmitter module χρησιμοποιώντας το παράδειγμα της βιβλιοθήκης SendDemo και να καταφέρετε απομακρυσμένο έλεγχο συσκευών μέσω του Arduino:

Κυριακή, 3 Νοεμβρίου 2013

BE MAKER! KIT campaign supporter!

Το BE MAKER είναι ένα καταπληκτικό Project δημιουργίας ενός συμβατού Arduino Board και έχει ήδη χρηματοδοτηθεί (crowdfunding) σε μια καμπάνια στο Indiegogo. Το BE BOARD λοιπόν είναι το πιο φτηνό συμβατό και υψηλής ποιότητας Arduino, με τιμή 9$ !!!

Λόγω της τεράστιας επιτυχίας της, η καμπάνια χρηματοδότησης επεκτάθηκε στη δημιουργία ενός ολοκληρωμένου Kit εκπαίδευσης με Arduino που περιλαμβάνει κάρτες επέκτασης (shield), πολλαπλά ηλεκτρονικά εξαρτήματα (600 τεμ.), βιβλίο 10 μαθημάτων σε συνδυασμό με 10 βίντεο, όλα μαζί δομημένα σε μια ολοκληρωμένη μορφή εκπαιδευτικού συστήματος, μόνο με 69$!

Μπορείτε κι εσείς να βοηθήσετε τη νέα φάση χρηματοδότησης, με το νέο BE SHIELD, ξεκινώντας από 10$, αγοράζοντας το βιβλίο μαθημάτων, μέχρι την αγορά του πλήρες Kit στα 69$.


Το Arduino GR με το λινκ παρακάτω είναι υποστηρικτής!

Σάββατο, 2 Νοεμβρίου 2013

Gamby: Arduino Retro Gaming Shield

Πριν μερικές ημέρες προμηθεύτηκα το Gamby Kit. Το κατασκευάζει η Logicalzero και το αγόρασα από Tindie μόνο με 25$ (~19€). Είναι ένα shield (κάρτα επέκτασης) για Arduino που το κατασκευάζεις μόνος σου (build-it-yourself) πολύ εύκολα με κατανοητές, βήμα προς βήμα, οδηγίες για τις κολλήσεις (soldering) των υλικών. Το πακέτο περιέχει μια μονόχρωμη LCD 96x64 pixels (με backlight), 4-way D-pad, 4 button, 1 speaker.



Το έργο είναι open source (Github) και διατίθενται τα σχέδια της πλακέτας αλλά και βιβλιοθήκη με παραδείγματα κώδικα έτοιμων παιχνίδιων, με σκοπό να δημιουργήσεις τα δικά σου!


Πραγματικά τα "βγάζει" τα λεφτά του,  αφού μπορεί να χρησιμοποιηθεί και ως ένα διασκεδαστικό παιχνίδι αλλά και ως ένα ευχάριστο εκπαιδευτικό εργαλείο.

Ειδικότερα για τη βιβλιοθήκη, υποστηρίζει 3 mode (graphics, block, text) και εδώ μπορείτε να βρείτε αναλυτική τεκμηρίωση.  Επίσης, υπάρχουν εργαλεία για τo χειρισμό χαρακτήρων/γραφικών/εικόνων στον κώδικα. 

Μια ομάδα προγραμματιστών έχει γράψει ήδη μερικά παιχνίδια για Arduino και Gamby που μπορείτε να τα κατεβάσετε ελεύθερα.

Παρακάτω, μερικά βίντεο:


 


Καλή  διασκέδαση!

Κυριακή, 13 Οκτωβρίου 2013

Intel Galileo

Εισαγωγή

Το GALILEO είναι μια πλατφόρμα μικροελεγκτή που βασίζεται στον επεξεργαστή Intel ® Quark SoC X1000, έναν 32bit Intel Pentium σε SoC (datasheet). Είναι η πρώτη πλακέτα βασισμένη σε αρχιτεκτονική της Intel® η οποία έχει σχεδιαστεί για να είναι συμβατή σε υλικό, λογισμικό και διάταξη pin με τα Arduino shields που έχουν σχεδιαστεί για το Arduino R3 Uno. Ψηφιακά pin 0-13, αναλογικές είσoδοι 0-5, ICSP και UART pin, είναι σε ίδια διάταξη, όμοια με το Arduino Uno R3.

Το Galileo έχει σχεδιαστεί για να υποστηρίξει shields που λειτουργούν είτε σε 3.3V ή 5V. Η τάση λειτουργίας του πυρήνα του Galileo είναι 3.3V. Ωστόσο, μέσω ενός βραχυκυκλωτήρα (jumper) στο board επιτρέπεται η αλλαγή τάσης σε 5V στα I/O pins, παρέχοντας έτσι, υποστήριξη για 5V Uno shields. Με την αλλαγή της θέσης του (jumper), η τάση μπορεί να επιστρέψει 3.3V στα I/O pins. 

Φυσικά, η πλακέτα Galileo είναι επίσης συμβατή με το λογισμικό και με το περιβάλλον ανάπτυξης για Arduino (IDE), γεγονός που καθιστά τη χρηστικότητα και τη μετάβαση στο νέο σύστημα, εύκολη. Εκτός από το υλικό και λογισμικό και τη γενικότερη συμβατότητά του με το Arduino, η πλακέτα Galileo έχει πολλές θύρες και επιπρόσθετες λειτουργίες για την επέκταση χρήσης και δυνατότητες που ξεπερνούν το Arduino. Μια πλήρους μεγέθους mini-PCI Express slot, 100Mb Ethernet θύρα, MicroSD θύρα, RS-232 σειριακή θύρα, θύρα USB Host, USB Client θύρα και 8MByte NOR flash υπάχουν στη στάνταρ έκδοση.

Επισκευθείτε το FAQ για περισσότερα.

Πέμπτη, 5 Σεπτεμβρίου 2013

Arduino Yún’s – Hardware review

-----
 Αναμένοντας την επίσημη 1η κυκλοφορία του Arduino Yun στις 10 Σεπτεμβρίου θα κάνουμε μια μικρή εισαγωγή στις δυνατότητές του.
-----

Το Yun είναι μοναδικό στη μέχρι τώρα σειρά των Arduino, δεδομένου ότι ενσωματώνει μια "ελαφριά" διανομή Linux για να επαυξήσει την παραδοσιακή διεπαφή του μικροελεγκτή. Ενσωματώνει επίσης, WiFi και Ethernet, που του επιτρέπουν να επικοινωνεί με δίκτυα χωρίς την ανάγκη επιπρόσθετων shield. Οι 2 ξεχωριστοί επεξεργαστές του Yun και του Arduino, επικοινωνούν μέσω της βιβλιοθήκης Bridge, επιτρέποντας στον κώδικα του Arduino να στέλνει εντολές στο περιβάλλον γραμμής εντολών του Linux.

Εισαγωγή

Το Arduino Yun έχει το ίδιο φυσικό αποτύπωμα (διαστάσεις) με το Arduino Uno, αλλά συνδυάζει τον ATmega32U4 μικροελεγκτή (ίδιο με το Leonardo) και ένα σύστημα Linux που βασίζεται στο chipset Atheros AR9331. Επιπλέον, υπάρχουν ενσωματωμένες Ethernet και WiFi δυνατότητες. Ο συνδυασμός της κλασικής εμπειρίας προγραμματισμού σε Arduino και οι προηγμένες δυνατότητες του Διαδικτύου που παρέχονται από ένα σύστημα Linux κάνει το Yun ένα ισχυρό εργαλείο για την επικοινωνία με το διαδίκτυο των πραγμάτων (Intenet of Things).

Η διάταξη των I/O pins του
Yun είναι ίδιες με αυτές του Arduino Leonardo συνεπώς το Yun είναι συμβατό με τα περισσότερα shields που έχουν σχεδιαστεί για Arduino.

Επίσης, υπάρχει η δυνατότητα να ανεβάσετε κώδικα ασύρματα στο Yun. Μπορείτε φυσικά να ανεβάσετε κώδικα στο Yun μέσω USB όπως ακριβώς θα κάνατε με το Leonardo.


Συνδεσιμότητα 

Το Yun έχει δύο ξεχωριστές διασυνδέσεις δικτύου:

  • 10/100 Mbit/s Fast Ethernet
  • IEEE 802.11 b/g/n συμβατό πρότυπο 2.4GHz WiFi interface με υποστήριξη WEP, WPA και WPA2 κρυπτογράφηση. 
Το WiFi μπορεί επίσης να λειτουργήσει ως ένα σημείο πρόσβασης (AP). Στη λειτουργία AP οποιαδήποτε συσκευή με δυνατότητα WiFi μπορεί να συνδεθεί άμεσα με το δίκτυο που έχει δημιουργηθεί από το Yun. Το Yun σε αυτή την κατάσταση (AP) δε μπορεί να συνδεθεί με το Διαδίκτυο, θα μπορούσε να λειτουργήσει ως ένα κομβικό σημείο για μια ομάδα ασύρματων (WiFi enabled) αισθητήρων.

Γενικότερα, η διασύνδεση του Arduino με τις υπηρεσίες Web αποτελεί πρόκληση λόγω περιορισμών μνήμης. Το Linux περιβάλλον του Yun απλοποιεί τα μέσα για να έχουν πρόσβαση στις υπηρεσίες διαδικτύου με τη χρήση πολλών, αν όχι των ίδιων εργαλείων που θα χρησιμοποιούσατε στον υπολογιστή σας. Μπορείτε να εκτελέσετε πολλές εφαρμογές τόσο σύνθετες όσο χρειάζεστε, χωρίς να "ζορίζετε" το μικροελεγκτή ATmega.


Για να σας βοηθήσουμε να αναπτύξετε εφαρμογές που μπορούν να συνδεθούν με δημοφιλείς διαδικτυακές υπηρεσίες, έχουμε συνεργαστεί με την Temboo, μια υπηρεσία που απλοποιεί την πρόσβαση σε εκατοντάδες από τα πιο δημοφιλή APIs στο ίντερνετ. Η Temboo βιβλιοθήκη έρχεται με το Yun, γεγονός που καθιστά εύκολο να συνδεθεί με μια μεγάλη ποικιλία από online εργαλεία.


Σύνδεση μεταξύ των δύο επεξεργαστών

Η βιβλιοθήκη Bridge του Yun επιτρέπει την επικοινωνία μεταξύ των δύο επεξεργαστών, που συνδέει το σειριακή θύρα του AR9331 με τη Serial1 στο 32U4 (D pins 0 και 1). Η σειριακή θύρα του AR9331 παρέχει πρόσβαση στην κονσόλα (aka το περιβάλλον γραμμής εντολών ή CLI) Linux για την επικοινωνία με τον 32U4. Η κονσόλα είναι ένα μέσο για τον πυρήνα του Linux για την έξοδο μηνύματων προς το χρήστη αλλά και για να λαμβάνουν είσοδο εντολών από το χρήστη. Είναι επίσης δυνατό να εγκαταστήσετε και να εκτελέσετε τις δικές σας εφαρμογές χρησιμοποιώντας το Bridge.Το ολοκληρωμένο ATmega32U4 μπορεί να προγραμματιστεί από το AR9331 αποστέλλοντας ένα κομμάτι κώδικα (sketch) μέσω του WiFi interface του Yun. Ο κώδικας θα μεταφερθεί στο AR9331, και η διανομή Linux θα προγραμματίσει τον ATmega32U4 μέσω του διαύλου SPI, μιμούμενοι την τεχνική προγραμματισμού AVR ISP. 
Θέματα τροφοσοδίας
Το Yun μπορεί να τροφοδοτηθεί μέσω του microUSB, το pin Vin, ή την προαιρετική Power Over Ethernet (PoE) μονάδα. Κατά την ενεργοποίηση αν το pin Vin, θα πρέπει να παρέχετε τάση 5VDC. Σημαντικό το γεγονός ότι δεν ενσωματώνεται ρυθμιστής τάσης για υψηλότερες τάσεις.

Linux OS

Το Yun "τρέχει" μια έκδοση της διανομής OpenWrt Linux που ονομάζεται Linino. Η ενσωματωμένη μνήμη flash 16MB που περιέχει το Linux έχει μια πλήρη εγκατάσταση της Python και το διαχειριστή πακέτων (package manager) που μπορείτε να χρησιμοποιήσετε για να εγκαταστήσετε πρόσθετο λογισμικό. Το AR9331 έχει 64 MB DDR2 RAM διαθέσιμα, παρέχοντας τα μέσα για να εκτελεί πολύπλοκα καθήκοντα όπως την εκτέλεση ενός web server ή streaming βίντεο από μια κάμερα. Μπορείτε να επεκτείνετε τη μνήμη αποθήκευσης με την προσθήκη μιας microSD κάρτας ή ένα USB flash. Αρκεί να τα αρχεία να συμπεριλαμβάνονται σε εναν κατάλογο με το όνομα "Arduino" στο επίπεδο ρίζας (root) της συσκευής αποθήκευσης, οπότε θα αναγνωρίζονται αυτόματα από τον Yun.

USB Host 

Η Yun έχει μια θύρα υποδοχής USB που συνδέεται με το AR9331. Μπορείτε να συνδέσετε περιφερειακές συσκευές USB, όπως κάμερες, memory sticks ή joypads σε αυτή την είσοδο. Σε γενικές γραμμές, το Linux έχει προγράμματα οδήγησης που περιλαμβάνουν τις πιο κοινές συσκευές όπως μαζικής αποθήκευσης ή ποντίκια και πληκτρολόγια. Για πιο ειδικές συσκευές όπως κάμερες, θα χρειαστεί να αποταθείτε στις προδιαγραφές της συσκευής για να βρείτε το κατάλληλο πρόγραμμα οδήγησης. Δεδομένου ότι η θύρα USB είναι συνδεδεμένη με το Linux επεξεργαστή, δεν είναι άμεσα προσβάσιμο από τον κώδικα στο 32U4.

[ελεύθερη μετάφραση από το Arduino.cc  blog]

Δευτέρα, 2 Σεπτεμβρίου 2013

Google Developers Group Thessaloniki - 78th TIF 7-15 Sept. 2013


Google Developers Group

Μια πύλη στον θαυμαστό κόσμο της Google,
στα εργαλεία και την τεχνολογία της κορυφαίας εταιρείας,
ανοίγει η 78η Διεθνής Έκθεση Θεσσαλονίκης.

Η ΔΕΘ-Helexpo θα φιλοξενήσει για πρώτη φορά στο πλαίσιο του θεματικού αφιερώματος Inno-tech το Google Developers Group Thessaloniki Playground,  όπου θα συμμετάσχει η κοινότητα των προγραμματιστών της Google (Google Developers Group) και εκεί θα έχουν την δυνατότητα να δουν οι επισκέπτες τα τελευταία τεκταινόμενα στον χώρο των νέων τεχνολογιών.

Εφαρμογές όπως τα Google maps, το chrome, εφαρμογές android, το Google drive και όλες οι τελευταίες εξελίξεις στη «βιομηχανία παραγωγής νέων ιδεών» της Google θα παρουσιαστούν στο  εντυπωσιακό αυτό “Playground”.

Στο πλαίσιο αυτό η νότια πύλη του Διεθνούς Εκθεσιακού Κέντρου Θεσσαλονίκης θα μετατραπεί σε Google Developers Gate, «φορώντας» τα χρώματα και τα logos των γνωστότερων εργαλείων του κορυφαίου παίκτη του διαδικτύου.

Πέρα όμως από τα επιτεύγματα της Google, το “Playground” των Google Developers Group θα αποτελέσει σημείο συνάντησης με υποψήφιους συνεργάτες-προμηθευτές από όλη την Ελλάδα και από τους προσκεκλημένους διεθνείς επισκέπτες, που έχουν να προτείνουν τις δικές τους ιδέες στην κοινότητα της Google για περαιτέρω ανάπτυξη και βελτίωση των προϊόντων/υπηρεσιών τους.



Official Hashtags for Thessaloniki
o  #GDGThess 

Official contact email for info
GDG.Thessaloniki@gmail.com 

Κυριακή, 11 Αυγούστου 2013

4D Systems Arduino Display Modules

Πρόσφατα, "έπεσε" στα χέρια μου μία...όχι και τόσο κλασσική, οθόνη LCD που εκτός των άλλων, έχει και δυνατότητα σύνδεσης με Arduino. Πρόκειται για την uLCD-43PT-AR


 από την @4DSystems, μια αυστραλιανή εταιρία που σχεδιάζει και κατασκευάζει κατεξοχήν συστήματα απεικόνισης γραφικών (4D Display Modules) που απευθύνονται σε κατασκευαστές ενσωματωμένων συστημάτων αλλά και χομπίστες, παρέχοντάς τους πολλά μοντέλα με πλειάδα δυνατοτήτων ενσωματωμένες όπως δυνατότητα αφής, αναπαραγωγή αρχείων πολυμέσων, ανάπτυξη κώδικα με ειδικό IDE, σύνδεση με Arduino και Raspberry Pi κ.α.

Το όλο οικοσύστημα των προϊόντων της 4D συμπληρώνεται από το forum, τις βιβλιοθήκες και τα παραδείγματα ανάπτυξης ανοικτού κώδικα, για την επικοινωνία με Arduino/RaspberryPi. Ειδικότερα για αυτούς που θέλουν να αναπτύξουν κώδικα για αυτές τις οθόνες, θα βρούν τα πρότυπα σχεδίασης ανοικτά (specification) όπως (datasheet, IDE, fw, libs, demo code, App Notes).



Το περιβάλλον ανάπτυξης κώδικα Workshop 4 (IDE) βοηθάει στη σχεδίαση εφαρμογών εύκολα και διαισθητικά, τοποθετώντας τα διάφορα στοιχεία διεπαφής (button, keypad, slider, switch), οπτικά, πάνω στην οθόνη, υποστηρίζοντας και σχεδίαση χωρίς τη συγγραφή κώδικα (VisiGenie).

Η βιβλιοθήκη για την επικοινωνία της οθόνης με το Arduino, μέσω σειριακής, βρίσκεται στο github μαζί με άλλα παραδείγματα για τα πρώτα σας βήματα.

Δείτε παρακάτω ένα βίντεο παρουσίασης από τη @Sparkfun:


Δευτέρα, 24 Ιουνίου 2013

Xastir on RaspberryPi

Η συγκεκριμένη παρουσίαση απευθύνεται κυρίως στους ραδιοερασιτέχνες που ασχολούνται με τη μετάδοση APRS.

Ειδικότερα, θα ασχοληθούμε με την εγκατάσταση του Xastir σε ένα RaspberryPi.

Πρώτα απ' όλα μερικά εισαγωγικά, το Automatic Packet Reporting System (APRS) είναι σύστημα μετάδοσης δεδομένων, από ραδιοερασιτέχνες, για την πληροφόρηση χρηστών/πολιτών μια περιοχής με στοιχεία όπως καιρός (WX), σύντομα μηνύματα, στίγμα θέσης (GPS), δεδομένα τηλεμετρίας κ.α. Τα δεδομένα αυτά είναι ανοικτά και ευρέως διαθέσιμα προς το γενικό πληθυσμό και μεταδίδονται στο internet, μέσω ειδικού λογισμικού (πυλών), που ονομάζονται IGate.

Τεχνικά, αυτό επιτυγχάνεται με τη διαμόρφωση ηχητικών σήματων (AFSK), τα οποία μεταδίδονται σε συχνότητες RF, με τη χρήση πομποδεκτών από αδειοδοτημένους ραδιοερασιτέχνες. Η επικοινωνία η/υ με τον εξοπλισμό επικοινωνίας, περιλαμβάνει κυκλώματα-διατάξεις που αναφέρονται με τον όρο Terminal Node Controller (TNC) και περιλαμβάνουν κάρτες ήχου, modem κ.α.

ακούστε ένα ηχητικό δείγμα από ένα σήμα APRS:

Το Xastir αποτελεί μια ανοικτού κώδικα πλατφόρμα IGate για τη λήψη/μετάδοση από και προς το internet, δεδομένων APRS. H εγκατάστασή του σε ένα RaspberryPi είναι αρκετά εύκολη, προσφέροντας πολλαπλά οφέλη όπως η φορητότητα και η εξοικονόμηση ενέργειας. Για την εγκατάσταση σε Occidentalis Linux που είναι βασισμένο στο Raspbian (Debian για το Pi) ακολουθούμε τα εξής βήματα:

1. ενημέρωση συστήματος:
$ sudo apt-get update
$ sudo apt-get upgrade

2. εγκατάσταση xastir:
$ sudo apt-get install xastir

3. εκτέλεση στο γραφικό περιβάλλον από το /usr/bin:

4. παραμετροποίηση:
File->Configure->Station
Map->Map chooser
Interface->Interface Control
Properties


Για να επιβεβαιώσετε την επικοινωνία με τους APRS server μπορείτε να εμφανίσετε τα μηνύματα που ανταλλάσονται:
View->Incoming Data
.

Μια πολύ καλή εφαρμογή για δοκιμές, που εμφανίζει δεδομένα aprs σε Google map είναι το aprs.fi του OH7LZB 


Εναλλακτικά, αντί για το Xastir υπάρχουν και άλλοι APRS server (όχι όλοι για linux) που θα μπορούσαν να δοκιμαστούν, όπως UIView32, javAPRSSrvr κ.α. Περισσότερα για το κομμάτι TNC και η επικοινωνία RF<->IGate θα αναλυθεί σε κάποια επόμενη ανάρτηση.

Καλή επιτυχία & 73 !

Κυριακή, 17 Μαρτίου 2013

Arduino & Processing HCI

Άλλη μια ωραία ιδέα για χρήση του Arduino ως μέσο διάδρασης ανθρώπου και υπολογιστή (HCI), με τη βοήθεια και της processing, είναι αυτή που παρουσιάζει ο LuckyLarry.

Πρόκειται για τη χρήση ενός αισθητήτα ultrasonic sonar όπου μετράται η απόσταση και εξάγεται ως τιμή μέσω της σειριακής. Αυτή η τιμή της απόστασης χρησιμοποιείται ως είσοδος στην processing η οποία αντίστοιχα αναπαράγει μουσική ήχους (συγκεκριμένα νότες πιάνου).

Η συνδεσμολογία του Arduino με τον αισθητήρα απλή:

Έγινε χρήση της βιβλιοθήκης arduino-new-ping που διορθώνει πολλά από τα πρόβληματα που παρουσιάζουν κάποιοι άλλοι μέθοδοι κώδικα όπως πχ η καθυστέρηση (~1s) στην ανάγνωση τιμών.

#include "newping.h"

#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 50 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

//setup
void setup() {  
  Serial.begin(9600);                           // start the serial port
} 

// execute
void loop() {
  delay(250);                      // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
  unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS).
  if ( uS / US_ROUNDTRIP_CM > 0)  // send only values >0
  {
  Serial.println(uS / US_ROUNDTRIP_CM); // Convert ping time to distance and print result (0 = outside set distance range, no ping echo)
  }
}

Στον υπολογιστή, εκτελούμε σε processing τον παρακάτω κώδικα που ουσιαστικά "διαβάζει" τη θύρα serial/usb (που έχει συνδεθεί το Arduino) και μέσω της βιβλιοθήκης minim αναπαράγονται μουσικές νότες (freesound.org) ανάλογα με αυτήν την τιμή:


import processing.serial.*;                // import serial library so we can read the serial port
import ddf.minim.*; 

// define the serial port
Serial myPort;          

// define minim variables:
// here we say that variable A is an audiosample etc...
Minim minim;
AudioSample GSharp;
AudioSample A;
AudioSample Bb;
AudioSample B;
AudioSample C;
AudioSample CSharp;
AudioSample D;
AudioSample Eb;
AudioSample E;
AudioSample F;
AudioSample FSharp;
AudioSample G;

// setup
void setup () {

  // set up the variables, loading in the sound files from your project folder
  // which should be the same place as where you save this sketch
  // details on using minim and audioSample are here: http://code.compartmental.net/tools/minim/manual-audiosample/
  minim = new Minim(this);
  GSharp = minim.loadSample("GSharp.wav", 2048);
  A = minim.loadSample("A.wav", 2048);
  Bb = minim.loadSample("Bb.wav", 2048);
  B = minim.loadSample("B.wav", 2048);
  C = minim.loadSample("C.wav", 2048);
  CSharp = minim.loadSample("CSharp.wav", 2048);
  D = minim.loadSample("D.wav", 2048);
  Eb = minim.loadSample("Eb.wav", 2048);
  E = minim.loadSample("E.wav", 2048);
  F = minim.loadSample("F.wav", 2048);
  FSharp = minim.loadSample("FSharp.wav", 2048);
  G = minim.loadSample("G.wav", 2048);

  // List serial ports, saves us trying to figure out which COM we're using.
  println(Serial.list());
  // Open the active port - providing you've only got one sending serial data (which you should)
  myPort = new Serial(this, Serial.list()[1], 9600);
  // don’t read the serial buffer until we see a new line - this is genius and simple compared with my last efforts
  myPort.bufferUntil('\n');
}

void draw() {
  // we need to declare the draw function even though we're not using it!!
}

void serialEvent (Serial myPort) {
  // get the string from the serial buffer - gets all chars until the next line break...
  String bufferString = myPort.readStringUntil('\n');

  if (bufferString != null) {
    // get rid of any whitespace - sometimes the serial buffer can have blanks etc.. in the string
    bufferString = trim(bufferString);
    // convert the value to an int - we're only sending numbers over the serial port so parsing it to an int shouldn't ever be an issue.
    float inByte = float(bufferString);
    int pulse = int(bufferString);         // declare a variable to hold our value.
    println(pulse);                        // for debug print the value so we can check it.

    // remember that our pulse is in CM so if its less than 5cm then do this etc... else do this... else do this.. for as many sound samples
    if ( pulse < 5 ) {
      GSharp.trigger();
      delay(25);
    }
    else if ( pulse < 8 ) {
      A.trigger();
      delay(25);
    }
    else if ( pulse < 11 ) {
      Bb.trigger();
      delay(25);
    }
    else if ( pulse < 14 ) {
      B.trigger();
      delay(25);
    }
    else if ( pulse < 17 ) {
      C.trigger();
      delay(25);
    }
    else if ( pulse < 20 ) {
      CSharp.trigger();
      delay(25);
    }
    else if ( pulse < 23 )  {
      D.trigger();
      delay(25);
    }
    else if ( pulse < 26 ) {
      Eb.trigger();
      delay(25);
    }
    else if ( pulse < 29 ) {
      E.trigger();
      delay(25);
    }
    else if ( pulse < 32 ) {
      F.trigger();
      delay(25);
    }
    else if ( pulse < 35 ) {
      FSharp.trigger();
      delay(25);
    }
    else if ( pulse < 38 ) {
      G.trigger();
      delay(25);
    }
    else if ( pulse > 50 ) {
      // if the distance is greater than 50cm then play nothing
    }

  } // end if there's a value in the serial bufferstring

}   // end void serialevent()

void stop(){
  minim.stop();
  super.stop();
}

Κατεβάστε τον κώδικα (arduino+processing+sound files) δείτε κι ένα βίντεο:

Καλή επιτυχία!

Πέμπτη, 3 Ιανουαρίου 2013

Water Tank Level Display

Μια ενδιαφέρουσα και συνάμα χρηστική ιδέα για κατασκευή αποτελεί αυτή του @Stelios, ο οποίος θέλοντας να παρακολουθεί ανά πάσα στιγμή τη στάθμη του νερού σε μια κλειστή δεξαμενή, χρησιμοποιήσε έναν αισθητήρα υπερήχων (ultrasonic sonar) HC-SR04 μαζί με ένα Arduino Nano, μια LCD για οπτική ένδειξη και ένα buzzer για την παραγωγή ήχων ειδοποίησης.


Παρακάτω, τα βήματα της κατασκευής:

Συγκέντρωση Υλικών:

HC-SR04 (ultrasonic sensor)
LCD 16x2 (HD44780)
LM35 (temp sensor)
Buzzer (ηχείο)
Διακόπτες (push button)
Συνδετήρας (4 pin connector m+f)
Κουτί (case)  

Αν και για την αρχική ανάπτυξη και δοκιμές, χρησιμοποιήθηκε το Arduino Uno, το τελικό "προϊόν"  περιελάμβανε το Arduino Nano το οποίο παρέχει τις ίδιες δυνατότητες σε πολύ μικρότερο μέγεθος.

 

Για τη σύνδεση της LCD που είναι βασισμένη στο HD44780 ανατρέξτε εδώ.

Ο αισθητήρας ultrasonic sonar HC-SR04 διαθέτει 4 pin (Vcc, Trigger, Echo, GND) εκ των οποίων 2, τα Trigger και Echo, συνδέοονται στα digital pins του Arduino. Στο Vcc pin συνδέουμε +5v από το Arduino. Η αρχή λειτουργίας του είναι απλή, το Trigger pin στέλνει ένα παλμό (HIGH) μικρής διάρκειας (~10μS) και το σήμα ανάκλασης από ένα αντικείμενο που επιστρέφει πίσω, εγείρει το Echo pin (HIGH). Η χρονική διάρκεια από τη μέταδοση μέχρι και τη λήψη του παλμού είναι γνωστή, οπότε η απόσταση υπολογίζεται εύκολα, αφού η ταχύτητας μετάδοσης είναι κι αυτή γνωστή και ισούται με 340m/s (ταχύτητα ήχου).


Επίσης, χρησιμοποιήθηκε το LM35 για τη μέτρηση θερμοκρασίας στο Analog pin 0.

Προσπαθώντας να χωρέσουν όλα αυτά σε ένα μικρό κουτί, υπήρξε αρκετό πριόνισμα και χρήση θερμόκολλας για να καταλήξει σε ικανοποιητικό αποτέλεσμα:

Τα 2 push-button και το buzzer έχουν "υποστηρικτό" ρόλο ως soft reset, mute και full/empty sound αντίστοιχα. Στον κώδικα ενσωματώνεται η βιβλιοθήκη <LiquidCrystal.h> για το χειρισμό της LCD και ο μηχανισμός για τα Trigger & Echo:

pinMode(TRIG, OUTPUT);
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);

pinMode(ECHO, INPUT);
float distance = pulseIn(ECHO, HIGH);
distance=distance / 29.387 / 2;
Serial.println(distance);

Παρακάτω, μια φωτογραφία με το τελικό κύκλωμα στο κουτί του. Στο πλάι διακρίνονται το κουμπί για soft reset, το mini usb για την τροφοδοσία και τον προγραμματισμό και ο 4-pin connector για τη σύνδεση του αισθητήρα sonar.


Ο πλήρης κώδικας είναι διαθέσιμος εδώ.


Δείτε κι ένα βίντεο από τη λειτουργία.