Ένα ιστολόγιο για όσους αγαπούν τις ηλεκτρονικές κατασκευές...

Πέμπτη 24 Ιανουαρίου 2019

DIY Arduino για να μην ξοδεύετε πολλά....

To arduino είναι μια εξαιρετικά πετυχημένη πλατφόρμα για πάμπολλες εφαρμογές που κάνουμε. Κάθε φορά όμως που τελειώνουμε μια κατασκευή μας, σκλαβώνουμε μια πλακέτα arduino, είτε είναι uno είτε nano είτε pro mini. Επιπλέον οι κατασκευές που γίνονται με καλώδια με ακροδέκτες που ενώνουμε στις εξόδους ενός arduino είναι ευάλωτες σε κουνήματα και δεν κάνουν καλή επαφή, με αποτέλεσμα να μην λειτουργεί σωστά η κατασκευή μας ή να κάνει reset.

Μπορούμε να αποφύγουμε τα προβλήματα αυτά και να κερδίσουμε χρήματα μεταφέροντας την εφαρμογή μας από το arduino σε ένα απλό atmega328P chip. O atmega328P χρειάζεται μόνο ένα κρύσταλλο μαζί με δύο πυκνωτές 22pF για να λειτουργήσει. Έτσι μπορούμε να χρησιμοποιήσουμε το προσφιλές μας arduino IDE για να γράψουμε το πρόγραμμα που θέλουμε και μετά να το ανεβάσουμε στον atmega328P με τη βοήθεια του arduino uno. Επιπλέον η κατασκευή μας δείχνει πιο όμορφη έχοντας ενσωματωμένο τον επεξεργαστή στην πλακέτα και όχι σε ξεχωριστή πλακέτα.




Διαδικασία εγγραφής.

Μπορούμε να αγοράσουμε τον Atmega328P (από  ebay) είτε με γραμμένο τον bootloader είτε χωρίς. Ακόμη και αν στο ebay λέει ότι είναι με τον bootloader γραμμένο υπάρχει μεγάλη πιθανότητα να μην είναι (μου έχει τύχει). Εγώ προτιμάω να τα παίρνω κενά συνήθως, σε καλύτερη τιμή, και να γράφω τον bootloader στα chip που πήρα και να τα έχω έτοιμα για κατασκευές.

Χρειαζόμαστε ένα arduino σαν προγραμματιστή για να "κάψουμε" τον bootloader στο chip.
Ακολουθήστε τα παρακάτω βήματα:
  1. Ανεβάστε το sketch ArduinoISP στο Arduino σας.
  2. Κάνετε τις συνδέσεις που φαίνονται στο σκίτσο.
  3. Επιλέξτε "Arduino Duemilanove or Nano w/ ATmega328" από το Εργαλεία > πλακέτα.
  4.  Επιλέξτε "Arduino as ISP" από το Εργαλεία >  Προγραμματιστής
  5. Επιλέξτε Εργαλεία > Γράψιμο bootloader.
Μετά από αυτό ο επεξεργαστής μας είναι έτοιμος για χρήση. Η εγγραφή του προγράμματος μπορεί να γίνει με την χρήση του arduino uno. Αφαιρούμε το chip από το arduino uno και βάζουμε τον επεξεργαστή που μόλις φορτώσαμε τον bootloader. Κάνουμε το ανέβασμα του προγράμματός μας και αλλάζουμε πάλι τα chip στο arduino uno. Τώρα ο επεξεργαστής μας είναι γραμμένος με το πρόγραμμα μας και έτοιμος για λειτουργία.

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

UPDATE: 16-1-2020
Μετά από προσπάθεια να γράψω τον bootloader σε ένα ATMEGA328P ενός φίλου το arduino IDE παρουσιάστηκε ένα πρόβλημα με το arduino as ISP να μην αναγνωρίζει τον μικροελεγκτή
με μήνυμα στο arduino IDE avrdude: stk500_disable(): unknown response=0x12.
Το πρόβλημα λύθηκε με την προσθήκη ενός ηλεκτρολυτικού πυκνωτή 10μF στο reset του arduino σε θέση προγραμματιστή (όχι στο reset του μικροελεγκτή που γράφουμε τον bootloader).


9 σχόλια:

  1. Ηθελα να σε ρωτησω το 328 που θα βαλω στο πλακετακι του arduino θα ειναι καινουργιο η' αυτο που ειχε μαζι του οταν το πηρα

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Καλημέρα και καλή χρονιά!
      Υποθέτω ότι έχεις ήδη αγοράσει ένα arduino uno με το τσιπ με τα 28 πόδια σε δύο σειρές. Αγοράζεις ένα ATMEGA328 με ή χωρίς bootloader. Αν έχει ήδη γραμμένο τον bootloader το βάζεις απλά στην πλακέτα του arduino, γράφεις το πρόγραμμα της εφαρμογής σου και στη συνέχεια το βάζεις πάνω στην πλακέτα της εφαρμογής. Αν δεν έχει bootloader κάνεις πρώτα την σύνδεση που φαίνεται στο σχέδιο και ακολουθείς τα βήματα για να κάνεις την εγγραφή του bootloader. Στην συνέχεια βάζεις το τσιπ πάνω στο arduino για να κάνεις εγγραφή του προγράμματος της εφαρμογής.

      Διαγραφή
  2. σε ευχαριστω για την αμεση απαντηση σου και σου ευχομαι καλη χρονια ,,αλλα κατι δεν καταλαβαινω ..και οι δυο πλακετες πρεπει να εχουν απο ενα 328 καινουριους (εννοειται οτι κανενας δε εχει bootloader)Σε ευχαριστω και παλι

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Όπως γράφω και στην προηγούμενη απάντηση πρέπει να έχεις μια πλακέτα adruino uno με τον δικό της ATMEGA328 όπως έρχεται έτοιμη με τον bootloader. Αυτή την πλακέτα την χρησιμοποιείς για να γράψεις τον bootloader σε ένα καινούριο ATMEGA328 τσιπ που δεν έχει ήδη τον bootloader (πωλούνται στο e-bay και έτοιμα με τον bootloader ήδη γρααμμένο αλλά είναι πιο ακριβά).
      Αφού γράψεις τον bootloader στο καινούριο τσιπ βγάζεις από το arduino uno το αρχικό τσιπ και βάζεις το καινούριο. Το προγραμματίζεις κανονικά από το IDE του arduino με το πρόγραμμα της εφαρμογής σου και στη συνέχεια το αφαιρείς και το τοποθετείς στην πλακέτα της εφαρμογής σου.
      Στο arduino τοποθετείς πάλι το αρχικό τσιπ για να είναι έτοιμο για χρήση σε νέο project.

      Διαγραφή
  3. οκ.. τωρα το καταλαβα σε ευχαριστω και παλι

    ΑπάντησηΔιαγραφή
  4. Φίλε μου καλησπέρα ο πυκνωτής θα βοηθήσει στο πρόβλημα που έχω; που είναι το εξής έχω κάνει το bootloader και δεν φορτώνει πάντα το πρόγραμμα, μετά από κάποιες αλλαγές που κάνω σε κάτι χρόνους πρέπει να κλείσω και να το ξανάνοιξω 2-3 φορές και που ακριβώς συνδέουμε τον πυκνωτή σε ευχαριστώ καλό βραδυ

    ΑπάντησηΔιαγραφή
  5. Πιστεύω θα σε βοηθήσει. Ο πυκνωτής κάνει την εντολή reset λίγο πιο μακράς διάρκειας. Το "δεν φορτώνει πάντα" σημαίνει ότι λειτουργεί αλλά κάποιες φορές δεν προλαβαίνει να κάνει reset. Στην περίπτωση που αναφέρω έλυσε το πρόβλημα σίγουρα. Ακόμη και να μην λειτουργήσει δεν χάνεις τίποτε να κάνεις μια δοκιμή.

    ΑπάντησηΔιαγραφή
  6. basika to bootloader einai oti pio easy uparxei kai anevazoun ti timi panw apo to diplasio dn nomizw oti uparxei kapoios pou tha to agorasei me bootloader tsampa lefta

    ΑπάντησηΔιαγραφή
  7. pantos sto sxedio tha bohthouse polu na grafeis pio podaraki einai to kathe ena sto 328

    ΑπάντησηΔιαγραφή

Count down timer - χρονικό αντίστροφης μέτρησης

Μια απλή κατασκευή χρονομέτρου με αντίστροφη μέτρηση. Μπορεί να μετρήσει μέχρι 100 λεπτά με βήμα του ενός δευτερολέπτου. Είναι ιδανικό για ...