Sunday, December 11, 2011

Arduino Mega 1280/2560 help & tips


Το Arduino mega έχει κάποιες διαφορές με τα προηγούμενα και είναι πρόβλημα γιατί τα περισσότερα tutorial αναφέρονται στο Uno ή στο Duemilanove. Επίσης υπάρχει και ένα πρόβλημα με τα shields που απευθύνονται για αυτές τις υλοποιήσεις.

Pinout:
Αρχικά, τα πινς του mega είναι διαφορετικά από των υπόλοιπων. Καλό είναι να έχετε κατά νου την αντιστοιχία που υπάρχει. Βασικό είναι το γεγονός ότι τα πινς SPI που χρειάζονται για προγραμματισμό και για shields όπως το Ethernet δεν είναι τα ίδια. Ενώ λοιπόν το shield κουμπώνει πάνω στο mega στις μπροστά υποδοχές, δεν δουλεύει.
Από εδώ με την αντιστοιχία των πινς έχουμε ότι:
  • MISO - 50 (και όχι το αντίστοιχο 12 για uno,duemilanove)
  • MOSI - 51 (αντί για 11)
  • SCK - 52 (αντί για 13)
  • SS - 53 (αντί για 10)
Άρα εάν στον κώδικά μας δεν περιέχεται η βιβλιοθήκη ' pins_arduino.h ' που φροντίζει να κάνει τις αλλαγές για το mega, πρέπει να βρούμε στο κώδικα τις αντίστοιχες καταχωρήσεις και να τις αλλάξουμε. Είναι της μορφής ' #define MISO 12 ' και να κάνουμε τις αντίστοιχες αλλαγές. Μπορεί να χρειαστεί πέρα από τον αυτό καθαυτό κώδικα να αλλάξουμε και βιβλιοθήκες που χρησιμοποιεί το πρόγραμμά μας και δεν περιέχουν το ' #include "pins_arduino.h" '.




Autoreset:
Για να αποτρέψουμε το autoreset στο mega πρέπει να συνδέσουμε έναν πυκνωτή 100nF και πάνω μεταξύ RESET και +5V.

Χρήση shield για Uno/Duemilanove:
Τα shileds αυτά είναι πιο μικρά αλλά μπαίνουν μια χαρά στις μπροστινές υποδοχές. Εάν δεν δουλέυουν τότε το πιο πιθανό είναι ότι χρησιμοποιούν τα SPI pins και πρέπει να τα συνδέσουμε με τα αντίστοιχα του mega. Για να το κανουμε αυτό, λυγίζουμε προς τα έξω τα 4 αντίστοιχα πινς του shield (10-13) και συνδέουμε με καλώδια τα αντίστοιχα όπως έγραψα πιο πάνω.

Tuesday, November 29, 2011

Στήνοντας ένα λειτουργικό τερματικό (Μέρος ΙΙ, messenger + music)

Λοιπόν, συνεχίζοντας επιτέλους τα ποστ που αφορούν το τερματικό θα περιγράψω παρακάτω μερικά προγράμματα που τα θεωρώ αρκετά χρήσιμα.

Monday, November 14, 2011

Εισαγωγή στο Arduino, serial communication

Λοιπόν συνεχίζοντας από το προηγούμενο παράδειγμα, όπου είδαμε εισαγωγικά μια πολύ απλή εφαρμογή, τώρα θα βάλουμε τον υπολογιστή να επικοινωνήσει με το Arduino. Ο υπολογιστής είναι συνδεδεμένος μέσω USB με το Arduino. Εκμεταλλευόμενοι αυτό θα χρησιμοποιήσουμε την σειριακή σύνδεση που υπάρχει μεταξύ τους και θα μεταδώσουμε "ερεθίσματα" στο interface του Arduino.

Ξεκινάμε από το πολύ απλό παράδειγμα που υπάρχει στο site του Arduino, arduino.cc για να δοκιμάσουμε απλοϊκά την σειριακή σύνδεση.

Διαδικασία:
Συνδέουμε το Arduino στον υπολογιστή και ανοίγουμε το interface του. Μετά αφού επιλέξουμε το board μας και την θύρα που είναι συνδεδεμένο, φορτώνουμε το αντίστοιχο πρόγραμμα.

Ψηφιακή Είσοδος:

Επιλέγουμε λοιπόν: File -> Examples -> Basics -> DigitalReadSerial .

Sunday, November 13, 2011

Arduino ISP programmer, ή αλλιώς προγραμματίζοντας με το Arduino

-->
Μπορεί να μην έχω αναλύσει και πολλά για το Arduino που να αφορούν και πιο νέους στο "κόλπο" αλλά αυτό νομίζω πως πρέπει να το γράψω. Με τον παρακάτω "απλό" τρόπο μπορούμε να μετατρέψουμε το Arduino board που διαθέτουμε σε avr isp programmer και να προγραμματίσουμε πληθώρα από chips τα οποία είναι πιο μικρά και πιο φθηνά ώστε απ' τη μια να κάνουν τη δουλειά μας και απ' την άλλη να την κάνουν οικονομικά.


Προαπαιτούμενα:

Θα χρειαστούμε ένα Arduino, είτε το Duemilanove (ή Diecimila) ή το Mega αναλόγως τι έχουμε και φυσικά το interface του Arduino. Ακόμη, χρειαζόμαστε ένα ράστερ (breadboard) και μερικά υλικά ακόμα που αλλάζουν ανάλογα με την περίσταση.

Tuesday, November 8, 2011

Στήνοντας ένα λειτουργικό τερματικό (Μέρος Ι)

Στο αμέσως προηγούμενο ποστ είχα αναφερθεί στη λειτουργία και στη χρησιμότητα του screen, αν επιλέξουμε να κάνουμε κάποια πράγματα από την κονσόλα για να βελτιώσουμε τη και ακόμη και να επιταχύνουμε κάποιες εργασίες στο pc. Τώρα θα παραθέσω κάποια προγράμματα που εκτελούν κάποιες απλές εργασίες οι οποίες μπορούν να γίνουν άνετα και από την κονσόλα, γλιτώνοντας πόρους και μνήμη.

Έχουμε και λέμε:


  • vim: Ένα πολύ καλό πρόγραμμα για επεξεργασία κειμένου, με πληθώρα plugins. Αν μάθετε να το χρησιμοποιείται δεν θα απογοητευτείτε. Ξεκινήστε με το vim-tutor.
  • rtorrent: Πρόγραμμα για κατέβασμα torrent. Απλό λιτό και απέριττο.
  • mpg123: Πρόγραμμα αναπαραγωγής mp3. Απλά φορτώστε μια λίστα και αφήστε το από πίσω να παίζει.
  • wget: Κατεβάζει τα πάντα και συμφέρει. Το μόνο που του λείπει είναι το GUI.
  • finch: Το pidgin xωρίς GUI. Όλα τα πρωτόκολλα επικοινωνίας στην γραμμή εντολών.
  • lynx: Περιήγηση στο Internet. Βασικά δεν βολεύει για κλασσικές δουλειές, κυρίως για αυτοματισμούς.
  • w3m: Αντίστοιχο του lynx.
  • mutt: Ε-mail client, αρκετά βολικός μετά από λίγο στήσιμο κυρίως για λίστες που δεν έχουν mutlimedia περιεχόμενο.
  • 0verkill: Ένα online 2d deathmatch game γιατί και στην κονσόλα μπορείς να "σκοτώνεις" κόσμο http://artax.karlin.mff.cuni.cz/~brain/0verkill/.
Αυτά προς το παρόν, σύντομα θα δούμε την πραγματική αξία που έχουν αυτές οι εφαρμογές και πως μπορούν πραγματικά να κάνουν διαφορά στην καθημερινή επαφή με τον υπολογιστή.

Saturday, November 5, 2011

Fritzing-Πλακέτες γρήγορα και εύκολα

Στον προηγούμενο οδηγό όπου περιέγραφα τη διαδικασία δημιουργίας μιας πλακέτας ενώ γνωρίζουμε το κύκλωμα και το έχουμε υλοποιήσει σε breadboard για να βεβαιωθούμε ότι δουλεύει, είχα παρουσιάσει σύντομα το πρόγραμμα fritzing το οποίο μας επέτρεπε να μεταβούμε γρήγορα στην πλακέτα. Εδώ θα ψάξουμε λίγο παραπάνω το πρόγραμμα για να δούμε τι άλλες δυνατότητες έχει και μέχρι που φτάνει.
Καλό είναι να ανατρέξετε εδώ για να δείτε πάνω κάτω πως λειτουργεί για αρχή.
Download link

αρχική οθόνη (2)

Friday, November 4, 2011

Τερματικό, ένας σύντομος οδηγός για το screen

Ξεκινώντας, η κονσόλα στα Linux ή αλλιώς το τερματικό είναι πολύ χρήσιμο ακόμη και για καθημερινή χρήση απ' τη στιγμή που θα εξοικειωθεί κανείς έστω και λίγο μαζί του. Ορισμένα πράγματα που χειροκίνητα μπορεί να είναι πάρα μα πάρα πολύ βαρετά με τη βοήθεια της κονσόλας γίνονται στο πι και φι!

Πρώτα απ' όλα, έχουμε το screen. Το screen μας προσφέρει τη δυνατότητα να τρέχουμε πολλές εφαρμογές από το τερματικό, είναι κάτι όπως ο window manager. Φανταστείτε πόσο άβολα νιώθουμε όταν το pc φορτώνει στην κονσόλα και προσπαθούμε απεγνωσμένα να σηκώσουμε το GUI (startx και τέτοια...) γιατί είναι σχεδόν άχρηστο το pc όταν έχεις στο μυαλό σου ότι μπορεί να τρέξει μόνο ένα πρόγραμμα. Ε λοιπόν το screen μας λύνει τα χέρια.

Αλλά για να περνάμε απευθείας στο ψητό, δώστε στην κονσόλα, screen. Δεν φαίνεται να έγινε τίποτα, κι όμως μόλις δημιουργήσαμε το πρώτο στιγμιότυπο του screen, ένα bash shell (συνήθως).
Επειδή το screen τρέχει πίσω από κάθε εντολή στην κονσόλα, για να δώσουμε εντολές στο screen πρέπει πριν, να πατήσουμε [ Ctrl + a ]. Άρα για όλες τις εντολές που ακολουθούν παρακάτω πρέπει πρώτα να δώσουμε τον παραπάνω συνδυασμό και μετά να προχωρήσουμε, εκτός κι αν περιγράφεται αλλιώς.

Βασικές εντολές για το screen:


Thursday, November 3, 2011

Φτιάξτε τα δικά σας skins για το LoL

Συνεχίζοντας τα πειράματα με το LoL, βρήκα έναν οδηγό στο forum της riot για το πως να φτιάξεις skins μόνος σου. Δεν το περίμενα τόσο απλό είναι η αλήθεια. Η διαδικασία είναι απλή, το μόνο που χρειάζεται είναι φαντασία για μια ωραία ιδέα και υπομονή για πάρετε το επιθυμητό αποτέλεσμα.

Λοιπόν και για να μην καθυστερούμε, να τι θα χρησιμοποιήσουμε:

  1. Πρώτα απ' όλα κατεβάζουμε το RAF-Manager που είναι το ίδιο πρόγραμμα με το οποίο κάνουμε εγκατάσταση τα skins. Με τη βοήθειά του θα πάρουμε τα αρχεία που πρέπει για να κάνουμε τις τροποποιήσεις. http://www.itzwarty.com/raf/
  2. Το προγραμματάκι που μετατρέπει το 3d μοντέλο του ήρωα σε εύχρηστη μορφή (skn->obj). Το βρήκα στο leugecraft: http://forum.leaguecraft.com/index.php?/topic/27642-riotskin2obj, και εδώ: http://www.mediafire.com/?61bnfs80o9kxh6f. Προτείνω να το κατεβάσετε από το forum, αφού εκεί θα βρίσκεται η τελευταία έκδοση.
  3. Ένα πρόγραμμα που να υποστηρίζει .dds αρχεία τα οποία είναι αυτά που θα επεξεργαστούμε.Τέτοια είναι:
    • Paint.net με ενσωματωμένη υποστήριξη .dds
  4. Ένα πρόγραμμα για να βλέπουμε τι κάνουμε, δηλαδή να μπορεί να ανοίγει το 3d μοντέλο του ήρωα και τα textures που θα αλλάζουμε. Στο tutorial προτείνει το UVMapper Pro, το οποίο το βρίσκω πολύ εύχρηστο. Είναι αυτό ακριβώς που χρειάζεται για να κάνουμε τη δουλειά μας. Κατεβάστε το demo, αρκεί: http://www.uvmapper.com/downloads.html

Tuesday, November 1, 2011

Chatting στο LoL χωρίς να τρέχει το παιχνίδι


Το παρακάτω ποστ δεν ταιριάζει με τα προηγούμενα τόσο πολύ αλλά απ' τη στιγμή που το blog αναφέρεται και στην ευρύτερα στα pc, γιατί όχι να μην ασχοληθούμε και με ένα game.
Σαν παιδί λοιπόν κι εγώ παίζω πού και πού κανένα game στο LoL για να περνάει η ώρα, αφού είναι απλό και έχει γρήγορο match making. Πρόσφατα ανακάλυψα έναν τρόπο για chat με άλλους παίκτες χωρίς να τρέχει το παιχνίδι, πράγμα αρκετά βολικό.

Το μόνο που χρειάζεται είναι να έχετε ένα πρόγραμμα για chat που να υποστηρίζει το πρωτόκολλο XMPP/Jabber για παράδειγμα: Trillian, Miranda και Pidgin. Προσωπικά προτιμώ το pidgin αφού το έχω συνηθίσει από τα Ubuntu.


Sunday, October 16, 2011

Από το Breadboard στο PCB (Μέρος 2 - εκτύπωση πλακέτας)

-->
PCB και η μάσκα του (1)
Στο πρώτο μέρος είδαμε πως, από τη σχεδίαση στο breadboard γρήγορα και εύκολα μπορούμε να πάρουμε τη μάσκα για να συνεχίσουμε με την δημιουργία της πλακέτας.
Τώρα θα φτιάξουμε την πλακέτα με τη μέθοδο που βασίζεται στις φωτοευαίσθητες πλακέτες χαλκού.

Η πλακέτες αυτές: αποτελούνται από 3 επίπεδα ή "στρώσεις". Το πρώτο, είναι το πλαστικό αυτό το κιτρινοπράσινο που φαίνεται στην δίπλα φωτογραφία. Μετά έχουμε τη στρώση του χαλκού όπως και οι κοινές πλακέτες και τέλος είναι το φωτοευαίσθητο στρώμα το οποίο κάνει τη ζωή μας ευκολότερη.
Πώς λειτουργεί: Το φωτοευαίσθητο στρώμα είναι ανθεκτικό στο μείγμα που θα χρησιμοποιήσουμε για να αφαιρέσουμε το χαλκό. Άρα αυτό που πρέπει να κάνουμε είναι να αφαιρέσουμε όλο το υπόλοιπο στρώμα ώστε να φύγει ο χαλκός εκτός από τις διαδρομές και τα σημεία που θέλουμε. Επομένως, καίμε το φωτοευαίσθητο στρώμα που δεν θέλουμε χρησιμοποιώντας τη μάσκα που βγάλαμε από το fritzing και εκθέτοντας την πλακέτα σε υπεριώδη ακτινοβολία. Έτσι κατά την αποχάλκωση μένει αυτό που θέλουμε :)


Tuesday, October 11, 2011

Από το Breadboard στο PCB (Μέρος Ι)

Κατά την ενασχόληση με το arduino κατέληξα σε ένα πολύ καλό πρόγραμμα που λύνει πραγματικά τα χέρια όσον αφορά την δημιουργία απλών κυκλωμάτων. Το πρόγραμμα αυτό λέγεται fritzing και κάνει παιχνιδάκι την μεταφορά ενός κυκλώματος από το breadboard σε pcb, αν έκανε και τις κολλήσεις δεν θα του έλειπε τίποτα. Σε αυτό το κομμάτι θα κάνουμε τη δουλειά μας με το fritzing ενώ το επόμενο θα αφορά την εκτύπωση της πλακέτας.

 Συνοπτικά: Εγκαθιστούμε το fritzing, σχεδιάζουμε το κύκλωμα ή μεταφέρουμε κάποιο ήδη υπάρχων, παίρνουμε το σχέδιο για εκτύπωση και το κυκλωματικό σχέδιο, βγάζουμε την πλακέτα ή και αναλύουμε το κύκλωμα.

αρχική (2)
Το fritzing βρίσκεται εδώ. Το τρέχουμε και εμφανίζεται ένα άδειο breadboard (εικ. 2) έτοιμο να γεμίσει με καλούδια :)
Το μόνο που έχουμε να κάνουμε είναι να στήσουμε το breadboard και τα άλλα γίνονται αυτόματα!

Στα δεξιά πάνω φαίνεται η λίστα με τα εξαρτήματα που μπορούμε να τοποθετήσουμε, για αρχή είναι ικανοποιητικά, ενώ μπορούμε να προσθέσουμε και άλλα έπειτα (επιφυλάσομαι για το μέλλον).




Saturday, October 8, 2011

Εισαγωγή στο Arduino

arduino (1)
Αν δεν διαβάσατε τον εικονογραφημένο οδηγό που είχα βρει στα αγγλικά τότε ίσως πρέπει να γράψω δυο λόγια παραπάνω για το arduino. Αποτελείται από έναν μικροεπεξεργαστή (της atmel) ο οποίος μπορεί να προγραμματιστεί από τον υπολογιστή εύκολα και διαθέτει μια σειρά από εξόδους και εισόδους. Για παράδειγμα μπορούμε να βάλουμε στην έξοδο 12 ένα LED και να προγραμματίσουμε το arduino να το αναβοσβήνει ανά 5 δευτερόλεπτα.

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

 Ξεκινάμε από δύο πολύ απλά παραδείγματα που βρίσκονται στο arduino.cc
για να καταλάβει κανείς ευκολότερα τη μπορεί να κάνει.

Τα βασικά πράγματα που χρειάζεται κανείς για να δουλέψει με ένα arduino είναι προφανώς το ίδιο το arduino που πωλείται από 20ε κα πάνω και ένα breadboard (εικ. 2).

breadboard (2)
Δηλαδή μια πλακέτα με σειρές από τρύπες-επαφές όπου φτιάχνεις ένα κύκλωμα συνδέοντας τα στοιχεία με καλώδια, χωρίς κολλητήρια και λοιπά.
Επίσης πρέπει να κατεβάσετε το πρόγραμμα για τον υπολογιστή μέσω του οποίου θα προγραμματίσουμε το arduino, από εδώ.



Παράδειγμα 1: LED που αναβοσβήνει

Υλικά: 1 LED, 1 αντίσταση 10Κ, καλώδια

κύκλωμα (3)
Συνδεσμολογία:

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

Στην εικόνα 4 φαίνεται η συνδεσμολογία πάνω στο breadboard.


κύκλωμα στο breadboard (4)
Πρόγραμμα:

 Ανοίγουμε το πρόγραμμα γιατο arduino και το συνδέουμε στο pc. Κάνουμε Copy+Paste τον κώδικα παρακάτω και μετά αφού βεβαιοθούμε ότι δεν έχει συντακτικά λάθη κάνοντας Verify (το κουμπάκι play εικ. 5). Φορτώνουμε τον κώδικα στο arduino με το Upload (κουμπάκι προς τα δεξιά εικ.6 ).

verify (5)
upload (6)

Κώδικας:

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */

void setup() {                
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);     
}

void loop() {
  digitalWrite(13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(1000);              // wait for a second
}

  • Παρατηρούμε ότι το πρόγραμμα αρχίζει με σχόλια, σχόλια είναι ότι περιέχεται μεταξύ των  " /* "  " */ " .
  • Μετά έχουμε τη βασική συνάρτηση void setup() με την οποία μπαίνουμε στον γενικό βρόχο.
  • Επίσης παρατηρούμε σχόλια της μίας γραμμής τα οποία ορίζονται με " // ".
  • Στη συνέχεια ορίζουμε εάν το 13 θα είναι για είσοδο (INPUT) ή για έξοδο (OUTPUT) με την εντολή pinMode( 'αριθμός επαφής' , 'κατάσταση').
  • Η συνάρτηση void loop() βάζει το πρόγραμμα σε έναν βρόχο (κύκλο) όπου εκτελεί ότι βρίσκεται μέσα στα άγκιστρα { } μέχρι να ικανοποιηθεί μία συνθήκη. Στην περίπτωσή μας είναι ατέρμων, δηλαδή δεν θα βγει ποτέ από το βρόχο :) απλά θα το αποσυνδέσουμε ή θα το επαναπρογραμματίσουμε.
  •  Μέσα στα άγκιστρα έχουμε δύο διαφορετικές εντολές, την digitalWrite( 'αριθμός υποδοχής' , 'κατάσταση') όπου ορίζουμε σε ποιά κατάσταση θα βρίσκεται η συγκεκριμένη υποδοχή-pin. Οι καταστάσεις είναι δύο, δηλαδή είτε LOW που στην περίπτωσή μας σημαίνει ότι δεν περνάει ρεύμα, είτε HIGH που σημαίνει ότι περνάει.
  • Η άλλη εντολή είναι η delay( 'χρόνος σε χιλιοστά του δευτερολέπτου') όπου καθυστερεί την  συνέχεια του προγράμματος για ορισμένο χρόνο.
Άρα συνοπτικά αυτό που κάνουμε είναι να ορίσουμε το pin 13 σαν έξοδο, επειδή έχουμε συνδέσει το LED το οποίο αποτελεί φωτεινή ένδειξη. Και μετά ανά 1 δευτερόλεπτο το ανοιγοκλείνουμε.

Αυτά προς το παρόν, θα συνεχίσω με αρκετά παραδείγματα για το arduino άμεσα.

PS: Νομίζω οι οδηγίες είναι πάρα πολύ απλές, ελπίζω να φανούν σε κάποιον χρήσιμες, γιατί μάλλον θα είναι πολύ αναλυτικές για κάποιον που το έχει ψάξει.

                                                                                                                      Επόμενο παράδειγμα >>                                                        


Friday, October 7, 2011

USB tester για βραχυκυκλώματα

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

Πέρνουμε ένα απλό λαμπάκι για 5V, το συγκεκριμένο είναι από τα χριστουγεννιάτικα :)

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

πηγή: http://diyelectronica.blogspot.com/2011/09/usb-short-circuit-checker.html

Οδηγός adruino σε comic!

Κάποιος είχε την ιδέα να φτιάξει έναν μικρό οδηγό για το arduino σε κόμικ, έξυπνο δε λέω, αλλά το πόσο χρηστικό είναι θα φανεί. Αν δεν ξέρετε τι είναι το arduino, τότε διαβάστε αμέσως τον οδηγό.