Google+

Κυριακή 25 Σεπτεμβρίου 2011

Open Source Hardware (OSHW) Definition 1.0 Greek Translation

Πριν λίγες μέρες ξεκίνησα μια προσπάθεια για τη μετάφραση, στα Ελληνικά, του Ορισμού για το Ανοικτό Υλικό (Open Source Hardware Definition 1.0), όπως αυτός έχει δημιουργηθεί και συνεχώς εμπλουτίζεται από εθελοντές του Open Source από όλο τον κόσμο. Η μετάφραση αυτή έχει ανέβει στον αντίστοιχο σύνδεσμο του FreedomDefined.org και είναι είναι σίγουρο ότι απαιτούνται αλλαγές και διορθώσεις. Παρολαυτά είναι μια αρχή.

Η κοινότητα του Ανοικτού Υλικού που μεγαλώνει πολύ γρήγορα, έδωσε βροντερό παρόν και στο Open Hardware Summit 2011 που διεξήχθει στην Νέα Υόρκη, αλλά και στην έκθεση Makerfaire.

Μερικά βίντεο από τις παραπάνω εκδηλώσεις :



Πέμπτη 21 Ιουλίου 2011

Multi-factor Authentication System

Στα πλαίσια του workshop θα ήθελα να καταγράψω, σε βήματα, κάποια βασικά σχετικά με τη σχεδίαση και την κατασκευή του hw αλλά και του sw.

Καταρχήν, να αναφέρουμε ότι για true MFA χρειάζεται να υλοποιούμε περισσότερες από 2 μεθόδους αυθεντικοποίησης (πχ κωδικός+rfid+αποτύπωμα, κωδικός+μαγ. κάρτα+φωνή κοκ). Στην κατασκευή μας επιλέξαμε τις εξής 3 μεθόδους :

Βήμα 1: επιλογή μεθόδων αυθεντικοποίησης:

1. Κωδικός
2. Κάρτα RFID
3. Φωνή

Αφού διαλέξαμε τις μεθόδους, τώρα θα πρέπει να σκεφτούμε με ποιον τρόπο θα τις εφαρμόσουμε πάνω σε Arduino.

Βήμα 2: επιλογή κατάλληλων arduino shields/modules

1. Keypad module (πληκτρολόγιο σε 4x3 διάταξη)
2. RFID sensor + breakout w/ usb reader (ο αισθ. RFID συνδέεται μέσω ενός breakout το οποίο εκτός του ότι παρέχει τη σύνδεση του αισθ. με το arduino rx/gnd/vcc, παρέχει επίσης και δυνατότητα σύνδεσης μέσω usb απευθείας σε η/υ γιατί περιλαμβάνει κι ένα ftdi chip)
3. Voice Module (αυτό είναι αρκετά δοκιμασμένο module με δυνατότητες voice recognition on-chip με δικό του πρωτόκολλο σειριακής επικοινωνίας με τον atmel)

Ειδικότερα για τις συνδεσμολογίες Arduino <-> shields

Βήμα 3: συνδεσμολογία

i. Keypad


7 arduino digital pins input only


ii. RFID

1 arduino digital pin input only (+2 power vcc/gnd)

iii. Voice

2 arduino digital pins rx/tx (+2 vcc/gnd , +2 mic)


Αρχικά, δε χρειάζεται να συνδεθούν όλα μαζί με το arduino. Μπορούμε να τα συνδέουμε και να τα δοκιμάζουμε ένα-ένα τη φορά και στο τέλος όλα μαζί. Σε αυτό μας βοηθάει και η ίδια μοντελοποίηση της βασικής λειτουργίας του συστήματος που γίνεται με χρήση FSM (Finite States Machine).

Βήμα 4: μοντελοποίηση

Κάθε μέθοδος αυθεντικοποίησης, αποτελεί State μέσα στον κώδικα. Συνολικά υπάρχουν 3 States τα οποία το καθένα σε βρόχο υλοποιεί την αυθεντικοποίηση, υπάρχει μέθοδος μετάβασης, όταν προκύπτει επιτυχής αυθεντικοποίηση, από ένα State στο επόμενο. Όταν ολοκληρωθούν 3 επιτυχή State τότε υπάρχει έξοδος από το FSM σε μια "εξουσιοδοτημένη λειτουργία" εν προκειμένω κάνουμε HIGH το Led_pin ;) Η παρακάτω απεικόνιση βοηθάσει καλύτερα στην κατανόηση του FSM :


Στα προαπαιτούμενα για την υλοποίηση περιλαμβάνονται και οι απαραίτητες βιβλιοθήκες για την χρήση/επικοινωνία των shields.

Βήμα 5: βιβλιοθήκες

i. keypad.h -> Περιέχει αντιστοιχήσεις μεταξύ input voltage levels <-> πλήκτρα
ii. vrobot_protocol.h -> περιέχει την υλοποίηση των εντολών που ανταλλάσει το arduino με το voice module μέσω μιας custom κωδικοποίησης
iii. pitches.h -> Περιέχει αντιστοιχήσεις μεταξύ pwm levels <-> νότες
iv. NewSoftSerial.h -> Serial επικοινωνία σε χρήση για το RFID sensor
v. FiniteStateMachine.h -> Υλοποίηση των function state(), transitionTo(), update() που αναφέρονται στον ορισμό και τη μετάβαση των State αντίστοιχα

Βήμα 6: Δημιουργία, για το κάθε State, ενός ή περισσοτέρων string που θα ελέγχονται ανάλογα πχ. για το keypad ένα string με τον κωδικό, για το RFID ένα string με το επιτρεπτό tag και για το Voice module το command επιβεβαίωσης του σωστού.

Βήμα 7: έλεγχος του σωστού/λάθους και αντίστοιχη ηχητική ειδοποίηση προς τον χρήστη

Βήμα 8: υλοποίηση επί μέρους συναρτήσεων (βλ. git repository)

Μερικά σημεία που πρέπει να προσέξουμε:

Βήμα 9: προγραμματισμός voice module

Ειδικότερα για το voice module υπάρχει η διαδικασία προγραμματισμού του, κατά την οποία μέσω μιας εφαρμογής, μας δίνεται η δυνατότητα εγγραφής των ηχητικών μυνημάτων-εντολών (στην embedded flash) που θα αποτελούν τις εξουσιοδοτημένες τιμές πρόσβασης όταν γίνεται ο έλεγχος στο FSM στο arduino. Το voice module, σύμφωνα με το spec. datasheet, έχει 2 mode (normal, programming) όταν βραχυκυκλώνουμε 2 ποδαράκια στο arduino το voice module αλλάζει mode (σύμφωνα με τη library).

Βήμα 10: enter code and then press # on keypad

Κατά την είσοδου του κωδικού λαμβάνουμε υπόψιν την πληκτρολόγηση του # για να σηματοδητήσουμε την εκκίνηση του ελέγχου του κωδικού.

Βήμα 11: RFID buffer clear

Παρατηρήθηκε, επίσης, ότι θα πρέπει να γίνεται καθαρισμός του buffer της σειριακής στο RFID γιατί όταν βρισκόμαστε σε κάποιο State πέρα του RFID, δλδ Keypad ή Voice και καταλάθος "περάσουμε" ένα rfid tag στο sensor, ο κωδικός του tag που αναγνώριζεται, παραμένει στον buffer και όταν το FSM μπει στο RFID State τότε, ελέγχει τον κωδικό που υπάρχει ήδη στο buffer πριν εισάγει το δικό του rfid tag ο χρήστης.

Βήμα 12: δοκιμή συστήματος


Βήμα 13: Future enhancements/ideas ?

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


Δευτέρα 20 Ιουνίου 2011

TheHackerspace (Thessaloniki’s Hackerspace) starting event!

Το TheHackerspace (Thessaloniki’s Hackerspace) είναι πλέον γεγονός!

Σας ανακοινώνουμε ότι στις 30/6 ημέρα Πέμπτη και ώρα 19.00 διοργανώνουμε ένα εναρκτήριο event για την παρουσίαση του TheHackerspace στο Art Cafe “κόκκινη κλωστή δεμένη” που αποτελεί και το μόνιμο σημείο συναντήσεών μας και βρίσκεται στη διεύθυνση Λευκωσίας 32, Καλαμαριά Θεσσαλονίκης (χάρτης). Ελάτε να γνωριστούμε, να τα πούμε από κοντά και να ανταλλάξουμε ιδέες!

Το TheHackerspace είναι ένα ανοικτό εργαστήριο έρευνας, συνεργασίας, δημιουργίας και μάθησης. Μα πάνω από όλα, είναι μια ζωντανή κοινότητα ανθρώπων με ιδέες και αντιλήψεις που πηγάζουν από τη φιλοσοφία του Ελεύθερου Λογισμικού / Υλικού. Η ιδέα για τη δημιουργία του ξεκίνησε πριν λίγους μήνες από άτομα που αγαπούν το Hacking τόσο του software όσο και του hardware και σύντομα έγινε πράξη με πολύ μεράκι και θέληση για συνεισφορά στην κοινότητα.

Η ιστοσελίδα του TheHackerspace είναι στη διεύθυνση `the-hackerspace.org‘. Σε αυτήν θα βρείτε γενικές πληροφορίες, φωτογραφίες του εργαστηρίου μας (TheHacker’s Lab), κ.α. Επίσης, μπορείτε να επικοινωνήσετε μαζί μας στη διεύθυνση `info@the-hackerspace.org‘.

Το moto μας είναι “Love to hack embedded & operating systems!“.

Happy Hacking,

TheHackerspace's Founding Team

Πέμπτη 19 Μαΐου 2011

Arduino Flash communication

Αν θέλεις να βάλεις λίγο χρώμα στο project σου, πέρα από το να χρησιμοποιείς πολύχρωμα
μια καλή ιδέα είναι, να επικοινωνήσεις με το Arduino μέσω Flash+ActionScript. Αυτό που θα χρειαστεί είναι ένας SerialProxy για να μετατρέψει τα δεδομένα από τη serial/usb πόρτα του Arduino στα XML socket data που χρησιμοποιεί για επικοινωνία το Flash/AS, μέσω ενός network data socket.

Η λογική επικοινωνίας είναι η εξής :

Arduino USB/Serial <---> Com (port,baud) <---> SerialProxy <---> localhost:port<---> Flash/AS

Για μια δοκιμή επικοινωνίας μεταξύ Arduino<->Flash επέλεξα την AS3Glue Library που περιλαμβάνει ένα demo monitor πρόγραμμα για το Arduino και πηγαίο κώδικα για ανάπτυξη.

Ας δούμε λοιπόν, αναλυτικά τα βήματα :

1. Φόρτωση από το Arduino IDE του example code(StandardFirmata) από τη firmata library:

























2. Ανάκτηση της σειριακής θύρας σύνδεσης του Arduino με το pc:

















3. Το SerialProxy το κατεβάζετε από εδώ και το μόνο που χρειάζεται είναι στο serproxy.cfg να δηλωθεί η com (port,baud) με την οποία συνδέεται το arduino με το pc και η πόρτα (net_port=5331) που θα χρησιμοποιηθεί από την flash:

# Comm ports used
comm_ports=2

# Default settings
comm_baud=9600
comm_databits=8
comm_stopbits=1
comm_parity=none

# Port 2 settings (ttyS1)
net_port2=5331

4. Εκτέλεση του serialproxy:






5. Εκτέλεση arduino flash monitor που περιέχεται στην AS3Glue library (as3glue_standalone_monitor.swf). Το default παίζει στη net_port=5331 αν θέλετε διαφορετική πόρτα θα πρέπει να κάνετε edit και recompile τον κώδικα flash(.fla)+actionscript(.as) που υπάρχουν μέσα στο source φάκελο της library:
















Αν όλα πήγαν καλά ΣΥΓΧΑΡΗΤΗΡΙΑ!!! θα βλέπετε την παραπάνω εικόνα και θα μπορείτε να διαχειριστείτε το Arduino (digital i/o port status/on/off, analog port status).

Να κι ένα βίντεο από το demo.

Τέλος, άφθονο υλικό για τους...καλλιτέχνες εδώ

Παρασκευή 13 Μαΐου 2011

Google Launches Android Open Accessory Development Kit Based On Arduino

Στο φετινό Google IO 2011 έγινε η παρουσίαση της δημιουργίας του Android Open Accessory Development Kit (ADK) το οποίο παρέχει την δυνατότητα σύνδεσης, μέσω USB προς το παρόν, μιας συσκευής με λειτουργικό Android κι ενός Android USB Accessory που είναι βασισμένο στην Ανοικτή πλατφόρμα ανάπτυξης του Arduino και ουσιαστικά περιλαμβάνει :
  • τα hw design schematics
  • τον κώδικα που υλοποιεί το firmware του Accessory
  • και την εφαρμογή για το Android που "αλληλεπιδρά" με τo accessory
Το accessory είναι βασισμένο στο Arduino MEGA2560 και Circuits@Home USB Host Shield και περιλαμβάνει και ένα shield με αισθητήρες όπως φαίνεται φωτογραφία παραπάνω και είναι διαθέσιμο για παραγγελία, προς το παρόν, μόνο από Ιαπωνία.

Υπάρχει και επίσημο video από το session της παρουσίασης του ADK στο Google IO.

πηγή[arduino.cc]

Σάββατο 16 Απριλίου 2011

Using Optoisolator w/ arduino to control other circuits

Μόλις δοκίμασα ένα optoisolator (ή αλλιώς optocoupler) για να ανοίγω/κλείνω (ως διακόπτης) ένα άλλο κύκλωμα με το Arduino. Η αρχή λειτουργίας του optoisolator είναι πολύ απλή, με 2 κυκλώματα οπτικά-απομονωμένα, το πρώτο να αποτελείται από 1 LED και το δεύτερο από 1 phototransistor σε ένα πακέτο DIP. Μόλις ανάψει το LED, το phototransistor διοχετεύει με ρεύμα τον collector/emitter του.

Σχηματική λειτουργία :


Στο παράδειγμα χρησιμοποιώ το 4N25 και "οδηγώ" το digital pin 13 του Arduino για να ανοίγω/κλείνω το LED του optoisolator και κατ' επέκταση, το διακόπτη του εξωτερικού κυκλώματος.

Υλικά HW:
1. 4N25 optoisolator
2. αντίσταση R=220Ω (οτιδήποτε από 220Ω-550Ω είναι οκ)
3. εξωτερικό κύκλωμα με push button (δείτε στο βίντεο τι κύκλωμα χρησιμοποίησα)

Συνδεσμολογία:
1. Arduino Pin13 -> R -> A(4N25)
2. Arduino GND -> B(4N25)
3. C(4N25) -> Vcc switch of ext. circuit (βλ. φώτο)
4. D(4N25) -> GND switch of ext. circuit (βλ. φώτο)

Φώτο κυκλώματος:


sketch code:

// 4N25 test sketch

#define INTERVAL_TM 4000 //time interval
#define EXPOSURE_TM 1000 //pin 13 HIGH duration
#define LED_PIN 13 //use LED pin as output

void setup() {
pinMode(LED_PIN, OUTPUT); //set pin13 as output
}

void loop() {
digitalWrite(LED_PIN, HIGH);
delay(EXPOSURE_TM);
digitalWrite(LED_PIN, LOW);
delay(INTERVAL_TM);
}

Βίντεο δοκιμής.

Θεωρία για optoisolator εδώ, εδώ κι εδώ ;)

Τέλος, για την ίδια δουλειά υπάρχουν relay (τα ρελέ είναι συνήθως πιο "αργά" από optoisolator) και H-bridge(ικανά να "οδηγούν" μεγαλύτερα ρεύματα πχ dc/stepper/servo motors κτλ)

Παρασκευή 8 Απριλίου 2011

Open Hardware Logo Selected


Η δημόσια και ανοικτή σε όλους ψηφορία για την επιλογή Logo ολοκληρώθηκε επιτυχώς! Το Open Hardware Summit συγχαίρει και ευχαριστεί όλους όσους ψήφισαν.

Αν θέλετε να υποστηρίξετε το OSHW Definition 1.0, διαδώστε το! Τοποθετείστε κι εσείς LOGO & OSHW Definition στα έργα, στα κυκλώματά και τις κατασκευές σας. Εισάγετε το παρακάτω κομμάτι κώδικα στο website σας.




I support the Open Source Hardware Definition v1.0



Άλλη μια μεγάλη μέρα για το Open Hardware!