Πίνακας περιεχομένων:

Αυτόνομο Arduino 3.3V W / Εξωτερικό ρολόι 8 MHz που προγραμματίζεται από το Arduino Uno μέσω ICSP / ISP (με σειριακή παρακολούθηση!): 4 βήματα
Αυτόνομο Arduino 3.3V W / Εξωτερικό ρολόι 8 MHz που προγραμματίζεται από το Arduino Uno μέσω ICSP / ISP (με σειριακή παρακολούθηση!): 4 βήματα

Βίντεο: Αυτόνομο Arduino 3.3V W / Εξωτερικό ρολόι 8 MHz που προγραμματίζεται από το Arduino Uno μέσω ICSP / ISP (με σειριακή παρακολούθηση!): 4 βήματα

Βίντεο: Αυτόνομο Arduino 3.3V W / Εξωτερικό ρολόι 8 MHz που προγραμματίζεται από το Arduino Uno μέσω ICSP / ISP (με σειριακή παρακολούθηση!): 4 βήματα
Βίντεο: How to get 5V from 18650 Lithium Battery Powering Arduino ESP32 ESP8266 or charge your phone 2024, Νοέμβριος
Anonim
Αυτόνομο Arduino 3.3V W / Εξωτερικό ρολόι 8 MHz που προγραμματίζεται από το Arduino Uno μέσω ICSP / ISP (με σειριακή παρακολούθηση!)
Αυτόνομο Arduino 3.3V W / Εξωτερικό ρολόι 8 MHz που προγραμματίζεται από το Arduino Uno μέσω ICSP / ISP (με σειριακή παρακολούθηση!)
Αυτόνομο Arduino 3.3V W / Εξωτερικό ρολόι 8 MHz που προγραμματίζεται από το Arduino Uno μέσω ICSP / ISP (με σειριακή παρακολούθηση!)
Αυτόνομο Arduino 3.3V W / Εξωτερικό ρολόι 8 MHz που προγραμματίζεται από το Arduino Uno μέσω ICSP / ISP (με σειριακή παρακολούθηση!)

Στόχοι:

  • Για να δημιουργήσετε ένα αυτόνομο Arduino που λειτουργεί με 3,3V από εξωτερικό ρολόι 8 MHz.
  • Για να το προγραμματίσετε μέσω ISP (επίσης γνωστό ως ICSP, σειριακός προγραμματισμός σε κύκλωμα) από ένα Arduino Uno (λειτουργεί σε 5V)

    Για επεξεργασία του αρχείου bootloader και εγγραφή του bootloader (μέσω ISP)

  • Για να μπορείτε να διαβάζετε σειριακές πληροφορίες από το αυτόνομο Arduino μέσω καλωδίου FTDI

    Για να μπορείτε να διαβάζετε σειριακές πληροφορίες από το αυτόνομο Arduino χωρίς το καλώδιο FTDI

Προοίμιο:

Προσπαθούσα να φτιάξω το αυτόνομο έργο μου, αλλά δεν είδα κανέναν ολοκληρωμένο οδηγό για το τρέξιμο, τον προγραμματισμό και την παρακολούθηση ενός αυτόνομου Arduino - ιδιαίτερα ενός που λειτουργεί με εξωτερικό ρολόι 8Mhz και 3.3V και προγραμματίζεται από Arduino UNO. Έχω συγκεντρώσει έναν αριθμό ξεχωριστών οδηγών και προσπάθησα να αναφέρω από πού πήρα τις πληροφορίες για να δώσω πίστωση όπου οφείλεται η πίστωση. Αυτός ο οδηγός είναι το αποτέλεσμα πολλών ημερών που ψάχνω λύσεις και βρίσκω μέρη του τη στιγμή που έχτιζα το δικό μου έργο. Επίσης, έχω συνδέσει πολλά χρήσιμα προϊόντα που θα έρθουν στο χέρι όχι επειδή συνδέομαι με κάποιο από αυτά τις εταιρείες, αλλά επειδή είναι σχετικό να συμπεριληφθούν τα συγκεκριμένα στοιχεία στα οποία αναφέρομαι.

Συχνές ερωτήσεις πριν ξεκινήσουμε:

Γιατί πρέπει να το προγραμματίσετε με ISP και να παρακολουθείτε μέσω FTDI; Γιατί δεν μπορείτε απλά να το προγραμματίσετε μέσω FTDI;

Θα πρέπει να αλλάξουμε τις ρυθμίσεις της ασφάλειας κάνοντας ένα νέο bootloader και δεν μπορείτε να το κάνετε αυτό μέσω σειριακής επικοινωνίας. Πρέπει να κάψετε το bootloader μέσω ISP. Αυτό είναι επίσης χρήσιμο για όσους δεν έχουν προ-φορτωμένο τσιπ ATMEGA328.

Γιατί δεν χρησιμοποιώ απλώς ένα καλώδιο ISP με σειριακή παρακολούθηση, όπως αυτό;

Perhapsσως, όπως εγώ, τυχαίνει να μην έχετε ένα και αντί να περιμένετε να αποσταλεί ένα, σας αρέσει να χρησιμοποιείτε αυτό που έχετε! Τυχαίνει να έχω ένα καλώδιο FTDI (αν και τελικά θα διαπιστώσετε ότι δεν το χρειάζεστε καν: απλώς κάνει τη ζωή σας πιο εύκολη).

Δεν χρειάζομαι μια αλλαγή επιπέδου λογικής από το Uno στο αυτόνομο Arduino;

Ναι, το κάνετε, αλλά θα σας δείξω πώς να το φτιάξετε μόνοι σας. Όπως και το καλώδιο ISP, τυχαίνει να μην έχω.

Θέλω να το εξαντλήσω από εξωτερική ισχύ. Πως το κάνω αυτό?

Υπάρχουν πολλοί οδηγοί που δείχνουν πώς να τρέξετε ένα αυτόνομο Arduino χωρίς μπαταρία. Θα γράψω πώς το έκανα και θα το συνδέσω εδώ [θα εισαχθεί αργότερα].

Ο ΟΔΗΓΟΣ

Βήμα 1: Δημιουργία του αυτόνομου Arduino

Χτίζοντας το αυτόνομο Arduino
Χτίζοντας το αυτόνομο Arduino
Χτίζοντας το αυτόνομο Arduino
Χτίζοντας το αυτόνομο Arduino

1) Δημιουργήστε το αυτόνομο Arduino από αυτόν τον σύνδεσμο. Το μόνο μέρος του οδηγού που χρειάζεστε είναι το "ATMEGA8/168/328 Basics".

  • μπορείτε να τροφοδοτήσετε το αυτόνομο Arduino από τα 3.3V από το Arduino Uno. (Μπορείτε να παραλείψετε την πρώτη ενότητα του σεμιναρίου με τίτλο "Προσθήκη κυκλικότητας για ένα τροφοδοτικό".
  • Αντικαταστήστε το ρολόι 16 MHz με ένα ρολόι 8 Mhz.
  • Προσθέστε καλύμματα 0,1 uF μεταξύ: VCC και Gnd (και στις δύο πλευρές) VRef και Gnd.

    • Δεν τα έχω συμπεριληφμένα στην εικόνα αλλά τα έχω στα έργα μου!
    • Ξέρω ότι είναι ένας ταλαντωτής 16 MHz στη φωτογραφία. Τράβηξα τη φωτογραφία πριν καταλάβω όλα όσα έκανα στον οδηγό!

Πηγή εικόνας pinout ATMEGA328p εδώ.

Συνήθεις συμβουλές αντιμετώπισης προβλημάτων

  • Βεβαιωθείτε ότι έχετε επαναφέρει τη ρύθμιση υψηλή μέσω αντίστασης 10k από το VCC στο pin 1 του ATMEGA. Εάν ο πείρος είναι γειωμένος ή επιπλέει δεν θα λειτουργήσει.
  • Ελέγξτε ξανά ότι έχετε τοποθετήσει σωστά τα καλώδια και τον ταλαντωτή.
  • Βεβαιωθείτε ότι χρησιμοποιείτε πυκνωτές 22pF για τον ταλαντωτή 8 MHz. Δεν θα λειτουργήσει διαφορετικά.
  • Βεβαιωθείτε ότι η συσκευή τροφοδοτείται.

Βήμα 2: Η καλωδίωση ISP

Η καλωδίωση ISP
Η καλωδίωση ISP
Η καλωδίωση ISP
Η καλωδίωση ISP

2) Δημιουργήστε το τμήμα ISP

Θα ακολουθήσετε αυτόν τον οδηγό εδώ με ένα μικρό αλλά πολύ σημαντικό βήμα.

Ο λόγος που δεν μπορείτε απλά να ακολουθήσετε τον οδηγό είναι επειδή σας λείπει ένα κρίσιμο τμήμα: δεν μπορείτε να προγραμματίσετε μια συσκευή 3.3V απευθείας από τις συνδέσεις 5V. (Τουλάχιστον, δεν μπορούσα: δεν θα λειτουργούσε μέχρι να το κάνω αυτό). Πρέπει να εισαγάγετε έναν μετατροπέα λογικής στάθμης που μετατοπίζει τα σήματα 5V από το UNO στο 3.3V Standalone Arduino.

Εάν δεν έχετε πλακέτα αλλαγής ταχυτήτων σε επίπεδο λογικής, μπορείτε να το φτιάξετε χρησιμοποιώντας αντιστάσεις. Όλη η μετατόπιση λογικού επιπέδου είναι πραγματικά (εφόσον αλλάζετε προς τα κάτω) είναι διαχωριστής τάσης. Θα χρειαστείτε 6 από τις ίδιες αντιστάσεις, τίποτα πολύ υψηλό ή πολύ χαμηλό. Χρησιμοποίησα αντιστάσεις 220 ohm, αλλά είμαι σίγουρος ότι ακόμη και 10k αντιστάσεις θα λειτουργούσαν.

Για SCK (ψηφιακή ακίδα 13) και MOSI (ψηφιακή ακίδα 11), χρησιμοποιήστε ένα διαχωριστή τάσης για να μειώσετε την τάση κατά το ένα τρίτο. Στην ουσία θα έχετε ένα Uno SCK και MOSI, στη συνέχεια μια αντίσταση (220 ohm), στη συνέχεια SCK και MOSI που συνδέονται με το αυτόνομο Arduino και 2 αντιστάσεις (συνολικά 440 ohm) στη γείωση.

Έτσι, διαβάστε τον οδηγό που συνδέεται στην αρχή αυτής της ενότητας, αλλά συμπεριλάβετε τα διαχωριστικά τάσης μεταξύ SCK και MOSI. Θυμηθείτε, τα SCK, MISO, MOSI και RESET είναι οι ακίδες 13, 12, 11 και 10 στο Uno αλλά είναι οι ακίδες 19, 18, 17 και 1 στο αυτόνομο Arduino!

Συνήθεις συμβουλές αντιμετώπισης προβλημάτων

  • ΕΛΕΓΧΕΤΕ ΤΟ ΚΑΛΩΔΙΟ

    • Εάν λαμβάνετε μια υπογραφή συσκευής όλων των 0 όταν προσπαθείτε να γράψετε πρόγραμμα, τότε η καλωδίωσή σας είναι σχεδόν σίγουρα απενεργοποιημένη ή το αυτόνομο Arduino δεν παίρνει ρεύμα.
    • Επίσης, βεβαιωθείτε ότι έχετε πάρει το καλώδιο επαναφοράς από 10 στο Uno έως 1 στο αυτόνομο Arduino
  • ΕΛΕΓΧΕΤΕ ΤΟΥΣ ΔΙΑΦΟΡΕΣ ΤΑΣΗΣ

    Βεβαιωθείτε ότι έχετε διαχωριστές τάσης με αναλογία 1: 2 (υψηλή πλευρά: χαμηλή πλευρά) για τις αντιστάσεις τόσο για SCK όσο και για MOSI. Π.χ. μια αντίσταση 220 στην πλευρά +5v και στη συνέχεια 2 αντιστάσεις 220 ohm (συνολικά 440 ohm) προς τη γείωση με το σήμα προς το αυτόνομο Arduino στη μέση

Βήμα 3: Επεξεργαστείτε το αρχείο εκκίνησης, κάψτε το πρόγραμμα εκκίνησης και ανεβάστε το σκίτσο σας

Επεξεργαστείτε το αρχείο εκκίνησης, κάψτε το πρόγραμμα εκκίνησης και ανεβάστε το σκίτσο σας
Επεξεργαστείτε το αρχείο εκκίνησης, κάψτε το πρόγραμμα εκκίνησης και ανεβάστε το σκίτσο σας
Επεξεργαστείτε το αρχείο εκκίνησης, κάψτε το πρόγραμμα εκκίνησης και ανεβάστε το σκίτσο σας
Επεξεργαστείτε το αρχείο εκκίνησης, κάψτε το πρόγραμμα εκκίνησης και ανεβάστε το σκίτσο σας

3) Επεξεργαστείτε το αρχείο bootloader (boards.txt) και γράψτε το bootloader στο αυτόνομο Arduino. Ανεβάστε το σκίτσο σας

Επεξεργασία του αρχείου bootloader

Για να λειτουργήσει το αυτόνομο Arduino, θα πρέπει να επεξεργαστείτε τις ρυθμίσεις ασφάλειας brownout του bootloader. Διαφορετικά, θα μπορείτε να κάψετε έναν bootloader σε αυτό, αλλά δεν θα μπορείτε να εκτελέσετε κανένα σκίτσο.

Μπορείτε να αφαιρέσετε εντελώς τον εντοπισμό καφετί, αλλά δεν θα το συνιστούσα. Αντ 'αυτού, θα το χαμηλώσουμε από τα 2.7V (αυτό που ήρθε στο τσιπ μου ως προεπιλογή) και θα το αντικαταστήσουμε με 1.8V. Τελικά, ωστόσο, μπορείτε να επιλέξετε ποιες ρυθμίσεις brownout θέλετε χρησιμοποιώντας την αριθμομηχανή ασφάλειας εδώ.

Το αρχείο των πινάκων μου ήταν στην ακόλουθη τοποθεσία:

C: / Program Files (x86) Arduino / hardware / arduino / avr

Ωστόσο, ενδέχεται να έχετε περισσότερα από ένα αρχεία boards.txt στο φάκελο υλικού σας εκτός από /arudino /. Θα επεξεργαστείτε το αρχείο boards.txt στο / arduino / location επειδή πρόκειται να τροποποιήσετε την ενότητα ATMEGA328p (3.3V, 8 MHz).

Ενδέχεται να χάσετε το επεξεργασμένο αρχείο boards.txt εάν επανεγκαταστήσετε ή ενημερώσετε το Arduino IDE (σύμφωνα με αυτήν την ανάρτηση). Αυτό σημαίνει ότι εάν ενημερώσετε το Arduino IDE, θα πρέπει να αλλάξετε ξανά αυτές τις ρυθμίσεις εάν θέλετε να δημιουργήσετε ένα άλλο από το ίδιο αυτόνομο Arduino.

Στο αρχείο boards.txt, κάντε κύλιση προς τα κάτω ή αναζητήστε το "Pro Mini". Η ενότητα έχει τίτλο "pro.name = Arduino Pro ή Pro Mini". Κάντε κύλιση προς τα κάτω στην υποενότητα "pro.menu.cpu.8MHzatmega328 = ATmega328P (3.3V, 8 MHz)".

Αναζητήστε τη γραμμή που λέει "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = _"

Αλλάξτε τις ρυθμίσεις σε xFE. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses = 0xFE).

Αποθήκευση και έξοδος.

Κάψιμο του Bootloader

Αφού το κάνετε αυτό, μπορείτε να ακολουθήσετε την ενότητα "Οδηγίες" στον οδηγό ISP από τα βήματα 1 έως 5.

Μερικά πράγματα προς διευκρίνιση:

  • Όταν ανεβάζετε το σκίτσο "Arduino ως ISP", πρέπει να βεβαιωθείτε ότι έχετε επιλέξει τη σωστή θύρα COM και επεξεργαστή.

    Σε αυτήν την περίπτωση, σημαίνει ότι έχετε επιλέξει τη θύρα COM του Arduino σας στο Tools-> Port: COM X (Arduino Uno) και ο πίνακας είναι Arduio Uno

  • Επιλέξτε τον σωστό προγραμματιστή: στην περιοχή Εργαλεία-> Προγραμματιστής-> Arduino ως ISP.

    ΟΧΙ ArduinoISP ή ArduinoISP.org

  • Πριν κάψετε το bootloder, αλλάξτε την πλακέτα "Pro ή Pro Mini" και τον επεξεργαστή σε "ATMEGA328p (3.3V, 8 MHz)".

    Δεν θα δείτε την ενότητα επεξεργαστή μέχρι να επιλέξετε τον σωστό τύπο πλακέτας

Κάψτε το bootloader στο αυτόνομο Arduino ΠΡΙΝ επιχειρήσετε να γράψετε σκίτσα σε αυτό.

Μεταφόρτωση του σκίτσου

Αυτό είναι πολύ σημαντικό. Τώρα μπορείτε να προγραμματίσετε είτε το Arduino: το Uno και το αυτόνομο. Εάν δεν κάνετε μεταφόρτωση στη σωστή συσκευή, πρέπει να επαναλάβετε την παραπάνω ενότητα και να ξαναγράψετε το Arduino ως πρόγραμμα ISP στο Uno.

Όταν ανεβάζετε το σκίτσο σας, βεβαιωθείτε ότι κάνετε κλικ στην επιλογή Εργαλεία -> Μεταφόρτωση χρησιμοποιώντας προγραμματιστή ή κάντε κλικ στο Ctrl+Shift+U. Μπορείτε επίσης να κρατήσετε πατημένο το shift και να κάνετε κλικ στο εικονίδιο με το βέλος, αλλά μην κάνετε κλικ στο εικονίδιο με το βέλος χωρίς να κρατήσετε πατημένο το shift.

Συνήθεις συμβουλές αντιμετώπισης προβλημάτων

  • Ενεργοποιήστε τη λεπτομερή έξοδο για την αντιμετώπιση προβλημάτων.
  • "Η συσκευή που υπέγραψε είναι όλα τα 0!" [Αυτό είναι πολύ πιθανό να συμβεί.]

    • ανατρέξτε στην ενότητα Καλωδίωση ISP. Είτε έχετε συνδέσει εσφαλμένα το αυτόνομο Arduino είτε δεν είναι ενεργοποιημένο.
    • Βεβαιωθείτε ότι έχετε επιλέξει τη σωστή θύρα COM και πίνακα / επεξεργαστή. Όταν καίτε τον φορτωτή εκκίνησης, ΠΡΕΠΕΙ να βεβαιωθείτε ότι καίτε τον εκκινητή εκκίνησης Pro Mini 3.3V 8 MHz ή ότι οι ασφάλειες δεν θα ρυθμιστούν σωστά.
  • "Έχω επεξεργαστεί το αρχείο boards.txt αλλά δεν βλέπω τις αλλαγές"

    Βεβαιωθείτε ότι έχετε επεξεργαστεί το σωστό αρχείο boards.txt. Δοκιμάστε να ενημερώσετε το Arduino IDE εάν οι αλλαγές δεν λειτουργούν ή αφαιρέστε προσωρινά άλλους φακέλους στο / hardware / φάκελό σας

  • "Δεν μπορώ να βρω το επαγγελματικό μίνι τμήμα του boards.txt!"

    Δεν ψάχνετε στο σωστό αρχείο boards.txt. Ελέγξτε το φάκελο Arduino // hardware/arduino/

Βήμα 4: Σειριακή επικοινωνία

4) Παρακολουθήστε την αυτόνομη συσκευή μέσω σειριακής επικοινωνίας

Μπορείτε πραγματικά να το κάνετε αυτό με 2 μεθόδους, οπότε αν δεν έχετε καν καλώδιο FTDI / σανίδα διακοπής δεν είναι το τέλος του κόσμου. Και θυμηθείτε, το σκίτσο που ανεβάσατε στο αυτόνομο Arduino πρέπει να έχει δηλώσεις Serial.print για να διαβάσετε: αν δεν το γράψατε στο πρόγραμμα, δεν θα δείτε τίποτα!

Εάν δεν έχετε καλώδιο FTDI

Αφού κάψετε το bootloader και γράψετε το πρόγραμμα που θέλετε, μπορείτε (πολύ προσεκτικά και να θυμάστε σε ποιον προσανατολισμό επιστρέφει) να αφαιρέσετε το τσιπ ATMEGA328 DIP από το Arduino Uno. Προτείνω να χρησιμοποιήσετε flathead για αυτό.

Μπορείτε να συνδέσετε το αυτόνομο RX του Arduino στο Uno's RX και το TX στο TX. Ναι, είναι συνήθως το αντίθετο, αλλά μπορείτε να σκεφτείτε ότι το Uno «προωθεί» τις πληροφορίες στη σειριακή οθόνη του IDE. Αυτός είναι ο λόγος για τον οποίο δεν συνδέετε το RX με το TX και το TX ro RX σε αυτήν την περίπτωση. Όταν εκτελείτε το πρόγραμμά σας, βεβαιωθείτε ότι έχετε επιλέξει τη θύρα COM του Arduino Uno και ανοίξτε σειριακό μόνιτορ. Θα μπορείτε να δείτε τη σειριακή έξοδο του αυτόνομου Arduino.

(Αυτή η λύση πιστώνεται στον Robin2 εδώ.)

Εάν έχετε καλώδιο / πλακέτα FTDI

(Χρησιμοποιώ τον πίνακα FTDI του Sparkfun τον οποίο έχω μετατρέψει σε 3.3V χρησιμοποιώντας το μαξιλάρι συγκόλλησης στο πίσω μέρος)

Απλώς συνδέστε το GND του πίνακα ανάρτησης με το αυτόνομο έδαφος του Arduino και συνδέστε το RX του breakoutboard με το TX του Arduino και το TX με το RX. (Εάν παρακολουθείτε μόνο σειριακή παρακολούθηση και δεν γράφετε τίποτα πίσω, μπορείτε απλώς να συνδέσετε το RX του breadoutboard στο Arduino TX).

Έχετε υπόψη σας σε αυτό το σημείο ότι έχετε την επιλογή να τροφοδοτήσετε το αυτόνομο Arduino μέσω του καλωδίου Uno OR του FTDI. Μην συνδέετε και τις δύο πηγές τροφοδοσίας ταυτόχρονα! Σημειώστε ότι θα πρέπει να αλλάξετε τη θύρα COM, δεδομένου ότι θα είναι διαφορετική από τη θύρα Arduino Uno COM.

Συνήθεις συμβουλές αντιμετώπισης προβλημάτων

  • «Δεν βλέπω τίποτα!»

    • Ελέγξτε αν έχετε ενεργοποιήσει τη σωστή θύρα COM.
    • Ελέγξτε αν έχετε τα πιο πρόσφατα προγράμματα οδήγησης FTDI.
    • Βεβαιωθείτε ότι το έδαφος είναι συνδεδεμένο.
  • "Το μόνο που βλέπω είναι η παραγωγή σκουπιδιών στη σειριακή οθόνη!"

    • Παίρνετε κάτι που είναι καλό σημάδι.
    • Ωστόσο, ελέγξτε την τάση της πλακέτας FTDI.
    • Το αυτόνομο Arduino βγάζει 3,3V στο TX του και η πλακέτα FTDI μπορεί να μην το σηκώσει αν περιμένει 5v.
    • Ελέγξτε το ρυθμό baud.
    • Βεβαιωθείτε ότι έχετε συνδέσει τη γείωση και έχετε συνδέσει μόνο μία πηγή ενέργειας! (Δηλαδή, μην τροφοδοτείτε το αυτόνομο Arduino από την πλακέτα Uno AND FTDI.

Συνιστάται: