Πίνακας περιεχομένων:
Βίντεο: Προγραμματισμός των ATTiny85, ATTiny84 και ATMega328P: Arduino ως ISP: 9 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:38
Πρόλογος
Πρόσφατα ανέπτυξα μερικά έργα IoT βασισμένα σε ESP8266 και διαπίστωσα ότι ο βασικός επεξεργαστής δυσκολευόταν να εκτελέσει όλες τις εργασίες που χρειαζόμουν για τη διαχείρισή του, έτσι αποφάσισα να διανείμω μερικές από τις λιγότερο σημαντικές δραστηριότητες σε διαφορετικούς μικροελεγκτές με αυτόν τον τρόπο απελευθερώνοντας το ESP8266 για να συνεχίσει τη δουλειά του να είναι συσκευή IoT.
Δεδομένου ότι ήθελα να δημοσιεύσω το έργο μου σε όσο το δυνατόν μεγαλύτερο κοινό, επέλεξα να χρησιμοποιήσω το Arduino IDE ως πλατφόρμα επιλογής ανάπτυξης, καθώς έχει μια τόσο ευρέως υποστηριζόμενη κοινότητα.
Περιορισμοί σχεδιασμού
Προκειμένου να παράσχω μια εύλογη διάδοση συσκευών στόχου που θα επιτρέπουν την επιλογή του κατάλληλου μικροελεγκτή για την εφαρμογή που έχω, αποφάσισα τα ακόλουθα μέρη Atmel. ATMega328P, ATTiny84 και ATTiny85. Για να περιορίσω την πολυπλοκότητα του απαραίτητου προγραμματιστή, περιόρισα την επιλογή του ρολογιού σε εσωτερικό για όλες τις συσκευές και 16MHz εξωτερικό μόνο για τα ATMega328P και ATTiny84.
Αυτό που ακολουθεί είναι μια συλλογή σημειώσεων σχετικά με τον προγραμματισμό με το Arduino και μια περιγραφή του τρόπου με τον οποίο δημιούργησα έναν απλό προγραμματιστή με βάση το Arduino Uno για αυτές τις συσκευές (φωτογραφίες παραπάνω).
Τι μέρη χρειάζομαι;
Για να δημιουργήσετε τον προγραμματιστή θα χρειαστείτε τα ακόλουθα μέρη
- 1 έκπτωση στο Arduino Uno
- 2 πρίζες DIP 28 ZIN Insertion Force (ZIF) (για χωρητικότητα ATMega328P, ATTiny85, ATTiny84)
- 1 έκπτωση πρωτότυπο ασπίδα Arduino (πήρα το δικό μου εδώ;
- 2 LED 5mm 5mm
- 2 off 1K αντιστάσεις
- 1 αντίσταση 10Κ
- 4 εκτός κεραμικών πυκνωτών 22pF
- 2 κρυστάλλους 16MHz
- 3 από κεραμικούς πυκνωτές 0.1uF
- 1 έκπτωση ηλεκτρολυτικός πυκνωτής 47uF
- 1 έκαστος ηλεκτρολυτικός πυκνωτής 10uF
- Σύρμα περιτύλιξης σύρματος διαφόρων μηκών.
Τι λογισμικό χρειάζομαι;
Arduino IDE 1.6.9
Τι δεξιότητες χρειάζομαι;
- Γνώση Arduino IDE
- Κάποιες γνώσεις σχετικά με τα ηλεκτρονικά και τον τρόπο συγκόλλησης
- Μεγάλη χειροτεχνική επιδεξιότητα
- Ένα φορτίο υπομονής και καλής όρασης
Θέματα που καλύπτονται
- Γενική Εισαγωγή στον προγραμματισμό μικροελεγκτών Atmel
- ISP ή Bootloader: Όλα είναι λίγο μπερδεμένα
- Επισκόπηση κυκλώματος
- Ρύθμιση του προγραμματιστή σας
- Χρησιμοποιώντας τον προγραμματιστή ISP Arduino
- Ανάπτυξη κώδικα στο σύστημα -στόχο σας
- Gotchas
- συμπέρασμα
- Χρησιμοποιήθηκαν αναφορές
Αποποίηση ευθυνών
Όπως πάντα, χρησιμοποιείτε αυτές τις οδηγίες με δική σας ευθύνη και αυτές δεν υποστηρίζονται
Βήμα 1: Γενική Εισαγωγή στον Προγραμματισμό Μικροελεγκτών Atmel
Υπάρχουν δύο διαθέσιμες μέθοδοι για τον προγραμματισμό μικροελεγκτών Atmel.
- Στον προγραμματισμό συστήματος (ISP),
- Αυτοπρογραμματισμός (μέσω ενός bootloader).
Η προηγούμενη μέθοδος (1) προγραμματίζει απευθείας τον μικροελεγκτή μέσω της διασύνδεσης SPI αφού πρώτα θέσει τη συσκευή σε επαναφορά. Εκτός εάν έχει δοθεί διαφορετική εντολή, ένα μεταγλωττισμένο εκτελέσιμο πρόγραμμα πηγής γράφεται στη συσκευή σταδιακά στη μνήμη κώδικα από όπου εκτελείται κατά την εκκίνηση. Υπάρχουν πολλές συσκευές παροχής Internet που μπορούν να προγραμματίσουν συσκευές Atmel, μερικές από τις οποίες είναι (εικόνα 1). AVRISPmkII, Atmel-ICE, Olimex AVR-ISP-MK2, Olimex AVR-ISP500. Η εικόνα 2 δείχνει πώς συνδέεται η συσκευή ISP με το ATMega328P (με παράξενη ένδειξη ICSP) στον πίνακα Arduino Uno R3 (η εικόνα 3 δίνει την ακίδα ISP έξω). Είναι επίσης δυνατό να προγραμματίσετε έναν μικροελεγκτή Atmel μέσω της διεπαφής του SPI χρησιμοποιώντας ένα Arduino Uno ως ISP (εικόνα 4), εδώ το Uno χρησιμοποιείται για τον προγραμματισμό ενός ATMega328P.
Η τελευταία μέθοδος (2) χρησιμοποιεί ένα μικρό στέλεχος κώδικα γνωστό ως «bootloader» που βρίσκεται μόνιμα σε εκτελέσιμη μνήμη κώδικα (συνήθως κλειδωμένο για να αποφευχθεί τυχαία αντικατάσταση της εικόνας 5). Αυτός ο κώδικας εκτελείται πρώτα με την ενεργοποίηση ή την επαναφορά της συσκευής και επιτρέπει στον μικροελεγκτή να προγραμματίσει ξανά τον εαυτό του με νέο κώδικα που λαμβάνεται μέσω μιας από τις διεπαφές του από εξωτερική πηγή. Η μέθοδος εκκίνησης χρησιμοποιείται από το Arduino IDE για τον επαναπρογραμματισμό του Arduinos που έχει χαρτογραφηθεί ως θύρα κοινής χρήσης USB στον υπολογιστή (Or MAC, Linux box κ.λπ., εικόνα 6) και στην περίπτωση του Arduino Uno επικοινωνεί με τη συσκευή Atmel μέσω του σειριακή διεπαφή στις ακίδες IC 2 και 3 του ATMega328P. Επίσης το Arduino Uno (με τον μικροελεγκτή ATMega328P αφαιρεμένο) μπορεί να χρησιμοποιηθεί για τον προγραμματισμό ενός ATMega328P μέσω της μεθόδου εκκίνησης που λειτουργεί αποτελεσματικά ως συσκευή προσαρμογέα USB σε σειριακή (εικόνα 7).
Τι είναι ο σειριακός προσαρμογέας USB σε;
Ο προσαρμογέας USB σε σειριακό είναι ένα υλικό που συνδέεται στη θύρα USB των υπολογιστών σας και μοιάζει με σειριακή θύρα com (παλαιού τύπου από παλαιότερες εποχές όταν οι υπολογιστές χρησιμοποιούσαν πρότυπο σειριακής επικοινωνίας γνωστό ως EIA-232, V24 ή RS232) που σας επιτρέπει να αποστολή και λήψη σειριακών δεδομένων στα ίδια ηλεκτρικά επίπεδα του μικροελεγκτή. Όταν επιλέγετε Εργαλεία -> Θύρα -> COMx από το Arduino IDE συνδέετε/διασυνδέετε τον υπολογιστή σας με το Arduino σας.
Μια τέτοια συσκευή αναφέρεται μερικές φορές ως FTDI (εικόνα 8, η οποία είναι στην πραγματικότητα ένα εμπορικό σήμα) ή CH340G κ.λπ. Η σειρά USB στο Arduino uno επιτυγχάνεται μέσω ενός ATMega16U2-MU (R) IC ZU4 όπως στο Arduino Schematic παρακάτω.
Για λόγους σαφήνειας, η εικόνα 9 προσδιορίζει τις δύο συσκευές Atmel και τις αντίστοιχες υποδοχές ISP τους στο Arduino Uno R3.
Σημείωση 1: Εάν επιλέξετε να ακολουθήσετε τη διαδρομή της συσκευής FTDI, βεβαιωθείτε ότι αγοράζετε από έναν αξιόπιστο πωλητή, καθώς στην αγορά υπήρχαν πολλές φτηνές πλαστές συσκευές που απέτυχαν μετά την εφαρμογή μιας ενημέρωσης των Windows.
Συνιστάται:
Φτιάξτε έναν EASY Infinity Mirror Cube - ΟΧΙ Τρισδιάστατη εκτύπωση και ΟΧΙ προγραμματισμός: 15 βήματα (με εικόνες)
Φτιάξτε έναν EASY Infinity Mirror Cube | ΟΧΙ Τρισδιάστατη εκτύπωση και ΟΧΙ προγραμματισμός: Σε όλους αρέσει ένας καλός κύβος απείρου, αλλά μοιάζουν σαν να είναι δύσκολο να φτιαχτούν. Ο στόχος μου για αυτό το Instructable είναι να σας δείξω βήμα-βήμα πώς να το φτιάξετε. Όχι μόνο αυτό, αλλά με τις οδηγίες που σας δίνω, θα μπορείτε να κάνετε μία
Ρολόι LED με χρήση 555 και 4017 (δεν απαιτείται προγραμματισμός): 8 βήματα (με εικόνες)
Ρολόι LED με χρήση 555 και 4017 (Δεν απαιτείται προγραμματισμός): Εδώ θα παρουσιάσω ένα έργο που σχεδίασα και έκανα πριν από περίπου 7 χρόνια. Η ιδέα του έργου είναι να χρησιμοποιήσω μετρητές IC όπως το 4017 για τη δημιουργία σημάτων που ελέγχουν την αναλαμπή των LED που είναι διατεταγμένα ως δείκτες αναλογικού ρολογιού
Απομακρυσμένος/ασύρματος προγραμματισμός Arduino και Power Bank Homemade: 12 βήματα (με εικόνες)
Απομακρυσμένος/ασύρματος προγραμματισμός Arduino και Power Bank Homemade: Το πρόβλημα. Αναπτύσσω ένα σκίτσο κοντά στον υπολογιστή και χρησιμοποιώ το usb και το serial για την " εντοπισμός σφαλμάτων " Σε αυτήν την περίπτωση δημιουργώ το lib για το DHT12, παραδίδω μια έκδοση στο github της βιβλιοθήκης. Αλλά φτάνει ένα ζήτημα: " όταν η θερμοκρασία πέσει κάτω από το 0, η τιμή που διαβάζεται είναι wro
Ακόμα ένα οδηγό για τη χρήση των DIYMall RFID-RC522 και Nokia LCD5110 με Arduino: 8 βήματα (με εικόνες)
Ακόμα ένα άλλο οδηγό για τη χρήση των DIYMall RFID-RC522 και Nokia LCD5110 με ένα Arduino: Γιατί ένιωσα την ανάγκη να δημιουργήσω ένα άλλο εκπαιδευτικό για το DIYMall RFID-RC522 και το Nokia LCD5110; Λοιπόν, για να σας πω την αλήθεια δούλευα σε μια απόδειξη της έννοιας κάποια στιγμή πέρυσι χρησιμοποιώντας και τις δύο αυτές συσκευές και κατά κάποιο τρόπο "άστοχη"
Αποδώστε τρισδιάστατες εικόνες των PCB σας χρησιμοποιώντας Eagle3D και POV-Ray: 5 βήματα (με εικόνες)
Αποδώστε τρισδιάστατες εικόνες των PCB σας χρησιμοποιώντας Eagle3D και POV-Ray: Χρησιμοποιώντας Eagle3D και POV-Ray, μπορείτε να δημιουργήσετε ρεαλιστικές τρισδιάστατες αποδόσεις των PCB σας. Το Eagle3D είναι ένα σενάριο για EAGLE Layout Editor. Αυτό θα δημιουργήσει ένα αρχείο ανίχνευσης ακτίνων, το οποίο θα σταλεί στο POV-Ray, το οποίο με τη σειρά του θα βγει τελικά από το τελικό im