Arduino. Η γνωστή και αγαπημένη σε πολλούς συσκευή έχει γίνει τόσο δημοφιλής που ακόμα και μικρά παιδιά προσπαθούν ήδη να γράψουν ένα σκίτσο πριν γεννηθούν. Υ.Γ., αυτό είναι κοροϊδία... Εν ολίγοις, δεν θέλω να μείνω πίσω, και σε αυτό το άρθρο θα σας πω πώς να μετατρέψετε μια πλακέτα επέκτασης ATmega8A σε arduino. Όποιος δεν ξέρει τι είναι αυτό το τέλος, μπορεί να το διαβάσει. Ναι, καταλαβαίνω, θα πουν πολλοί, αλλά πού είναι σπιτικό. Και σπιτικό είναι ότι για το Arduino χρειάζεστε μόνο λίγα πράγματα. Το πρώτο είναι ο μικροελεγκτής. Για φθηνότητα πηγαίνετε στο ATmega8. Ο δεύτερος είναι χαλαζίας στα 16 MHz. Τρίτο - δύο κεραμικοί αγωγοί για 22 pf. Και ο τέταρτος είναι ένας μετατροπέας USB TTL, οποιοσδήποτε. Για τη συναρμολόγηση, πρέπει να συνδέσετε χαλαζία στα πόδια των MK XTAL1 και XTAL2. Στερεώστε δύο κοντέρ στο ίδιο πόδι, και τα άλλα πόδια του κοντέρ στο έδαφος και τέλος.

Τώρα ας προχωρήσουμε σε πρακτικές ενέργειες. Θα μετατρέψουμε έναν πίνακα εντοπισμού σφαλμάτων σε Arduino, αλλά όλες οι ενέργειες ισχύουν για ένα απλό MK, quartz και ένα ζευγάρι conders. Και έτσι, πάμε.
Στην πλακέτα επέκτασης, ο χαλαζίας έχει οριστεί στα 7,3728 MHz από προεπιλογή. Δεν θα λειτουργήσει για το Arduino. Παίρνουμε λοιπόν και το αλλάζουμε στα 16 MHz.

Στη συνέχεια, πρέπει να ανεβάσουμε το bootloader στον πίνακα μας. Για να το κάνετε αυτό, πάρτε οποιαδήποτε πλακέτα Arduino. Έχω ένα Arduino UNO στο χέρι. Εάν δεν έχετε ακόμα Arduino, ήρθε η ώρα να αποκτήσετε ένα. Μπορείτε να το αγοράσετε στο κατάστημα Chip Resistor. Και έτσι, έχουμε ένα Arduino UNO. Βάζουμε το Arduino UNO μπροστά μας στα δεξιά στο τραπέζι και την πλακέτα επέκτασης ATmega8A στα αριστερά. Στη δεξιά πλευρά, αυτές οι πλακέτες διαθέτουν υποδοχή ISP με το κλασικό pinout της Atmel.

Μη διστάσετε να πάρετε την καλωδίωση και να συνδέσετε αυτά τα βύσματα ένα προς ένα με εξαίρεση τον πείρο 5.


Τώρα παίρνουμε τα καλώδια και εισάγουμε το ένα άκρο στον 5ο πείρο της πλακέτας επέκτασης ATmega8A και το άλλο άκρο στον ακροδέκτη Arduino UNO Digital 10. Θα πρέπει να γίνει έτσι.

Ως αποτέλεσμα, μετά από όλους τους χειρισμούς, να έχουμε αυτό το βλέμμα.

Εάν όλα είναι καλά, τότε συνδεθείτε στο USB υπολογιστή. Στο σωστή σύνδεσηΟι λυχνίες LED στο Arduino UNO και το κόκκινο LED στην πλακέτα επέκτασης ATmega8A θα πρέπει να ανάψουν. (Δυστυχώς στη φωτογραφία τα καλώδια μπλοκάρουν το LED, αλλά πιστέψτε με είναι αναμμένο)

Απευθυνόμαστε στις διαδικασίες λογισμικού. Και εδώ όλοι οι λάτρεις του ATmega8 MK περιμένουν ένα μεγάλο set-up από τους κατασκευαστές Arduino. Επί του παρόντος, η έκδοση 1.6.3 του IDE δεν υποστηρίζει αυτούς τους μικροελεγκτές. Ακριβέστερα αρχεία ρυθμίσεωνΚαι υπάρχει ένας bootloader, αλλά δεν μπορείτε να τον γεμίσετε. Το γεγονός είναι ότι το Arduino άλλαξε στο ελάχιστο ATmega328P MK και αυτή η μόλυνση έχει Extended Byte Fuse. Αλλά το κακό οκτώ δεν είναι. Εξαιτίας αυτών των σκουπιδιών, ο bootloader δεν πλημμυρίζει, αλλά ορκίζεται στην απουσία αυτών των κομματιών. Επομένως, πρέπει να γεμίσετε το bootloader παλιά εκδοχή IDE. Αν δεν το έχετε, μπορείτε να το κατεβάσετε από εμένα. Αυτή είναι η έκδοση 1.0.3 και δεν χρειάζεται να εγκατασταθεί. Απλώς αποσυμπιέστε κάπου και αυτό είναι όλο. Στη συνέχεια, απλώς εκτελέστε το πρόγραμμα από αυτόν τον φάκελο. Και τώρα ας ρυθμίσουμε το πρόγραμμα για την πλήρωση του MK μας. Αρχικά, επιλέξτε έναν προγραμματιστή από τα παραδείγματα ArduinoISPκαι ανεβάστε το στο Arduino UNO ή οτιδήποτε άλλο χρησιμοποιείτε αυτήν τη στιγμή.

Μετά την έκχυση, πρέπει να αντικαταστήσετε την πλακέτα Arduino UNO ή ποια φοράτε Arduino NG ή παλαιότερο με ATmega8.

Ολα. Μπορεί να συμπληρωθεί. Κάντε κλικ Εργαλεία -> Εγγραφή bootloaderκαι περιμένετε να τελειώσει η ηχογράφηση.

Ετοιμος. Ο Arduino γεννήθηκε. Αποσυνδέουμε όλα τα καλώδια και κρεμάμε την πλακέτα επέκτασης στην πλακέτα εντοπισμού σφαλμάτων GSMBOARD 1.1. Στη συνέχεια, παίρνουμε την πλακέτα επέκτασης USB-TTL και τη συνδέουμε με καλώδια GND - GND, RXD - TXD, TXD - RXD και εφαρμόζουμε ρεύμα. Το πράσινο LED πρέπει να ανάψει.

Εάν όλα λειτουργούσαν, απενεργοποιήστε το παλιό πρόγραμμα και εκτελέστε το αρσενικό τελευταία έκδοση. Σήμερα είναι 1.6.3 και γράφουμε αυτόν τον κώδικα. void setup() ( pinMode(2, OUTPUT); ) void loop() ( digitalWrite(2, HIGH); delay(2000); digitalWrite(2, LOW); while(1); )Ακριβώς αυτό που συμβαίνει εδώ. Αρχικά, αρχικοποιούμε τον ακροδέκτη 2 στην έξοδο. Στη συνέχεια, εμφανίζουμε μια μονάδα σε αυτήν, περιμένουμε δύο δευτερόλεπτα και την πατάμε στο μηδέν. Μετά πέφτουμε σε έναν ατελείωτο βρόχο. Για να γίνει σαφές, εδώ είναι μια εικόνα του σε τι έχει μετατραπεί ο πίνακας εντοπισμού σφαλμάτων.

Όπως μπορείτε να δείτε, η δεύτερη ακίδα είναι απλώς υπεύθυνη για την ενεργοποίηση και απενεργοποίηση της μονάδας. Τώρα ήρθε η ώρα να ανεβάσουμε το σκίτσο μας στο φρεσκοψημένο Arduino. Για να το κάνετε αυτό, ρυθμίστε ξανά το IDE επιλέγοντας τα στοιχεία όπως στην παρακάτω εικόνα. Και μην ξεχάσετε να αλλάξετε τη θύρα σε USB-TTL.

Όλα στημένα. Κάντε κλικ στη μεταφόρτωση σκίτσου. Όλα θα ήταν καλά, αλλά το σφάλμα εξαφανίστηκε. Ε. Να τι τσουγκράνα zavolyalas. Το Arduino χρησιμοποιεί μια εικονική θύρα COM για τη λήψη προγραμμάτων. Δουλεύει κάπως έτσι. Πρώτα, το IDE μεταγλωττίζει το έργο, μετά τραβάει το κουμπί επαναφοράς MK και αφού ξεκινά πρώτα ο bootloader, το IDE, βλέποντάς το, αρχίζει να ρίχνει το πρόγραμμα σε flash. Και αν, μετά τη μεταγλώττιση, δεν επαναφέρετε το MK, τότε το IDE του bootloader δεν θα περιμένει και θα πετάξει ένα σφάλμα. Για να τραντάξουμε την επαναφορά, όλα τα Arduino έχουν ένα πόδι Θύρα COM DTR. Η πλακέτα επέκτασης USB-TTL δεν έχει αυτό το σκέλος, οπότε όταν το IDE μεταγλωττίζει το έργο και γράφει Φόρτωση.

Πατήστε και αφήστε μανιωδώς το κουμπί επαναφοράς στην πλακέτα επέκτασης ATmega8A. Το IDE θα πάρει το bootloader και θα αναβοσβήσει το πρόγραμμα. Όλα, το πρόγραμμα θα πέσει λίγο και θα ενεργοποιήσει τη μονάδα GSM. Εάν όλα γίνονται σωστά, θα πρέπει να είναι όπως στην εικόνα.

Για ευτυχισμένους κατόχους προσαρμογέων USB-RS232, μπορείτε να βγάλετε τον ακροδέκτη DTR από τη θύρα (φυσικά, μέσω του τσιπ MAX3232) στην επαναφορά MK. Αυτή είναι η ακίδα 5 στην κεφαλίδα του ISP μέσω ενός πυκνωτή 100nF. Δηλαδή DTR - πυκνωτής - ΑΠΕ. Και τότε το ίδιο το IDE θα κάνει την επαναφορά. Σε κάθε περίπτωση, αυτή πρέπει να είναι η εικόνα. Το πρόγραμμα λειτούργησε και ενεργοποίησε τη μονάδα.

Τώρα μπορείτε να πειράζετε τη μονάδα GSM. Εάν έχετε οποιεσδήποτε ερωτήσεις, γράψτε. Ας προσπαθήσουμε να το καταλάβουμε. ,

ΑΝΩΝΥΜΟΣ 02.02.16 22:32

Ευχαριστώ για το άρθρο. Τώρα μπορώ να χρησιμοποιήσω το mega 8 στο arduino uno μου.

niko19 25.12.16 23:03

Γιατί στο διάολο να τα κάνεις όλα αυτά με μια πλακέτα επέκτασης και να πάρεις ένα Arduino αν υπάρχει ήδη ένα έτοιμο Arduino στο τραπέζι; Το ερώτημα είναι πώς να φτιάξω ένα σπιτικό Arduino, ας πούμε σε ένα breadboard, από Mega8 και χαλαζία ξαπλωμένο. Τι πρέπει να χύνεται στο Mega, κυριολεκτικά σημείο προς σημείο ή ακόμα καλύτερα, έτοιμο αρχείο firmware, για παράδειγμα, έχω έναν παράλληλο προγραμματιστή, ωστόσο, υπάρχει και σειριακός, αλλά δεν υπάρχει τελειωμένο Arduino ...

Alexey 25.12.16 23:40

Το Arduino είναι ένας μικροελεγκτής Atmel με φορτωμένο bootloader για εργασία με arduino IDE. Το μόνο που χρειάζεστε είναι να ρυθμίσετε τις ασφάλειες για το bootloader, να επιλέξετε από το φάκελο υλικολογισμικού για το MK σας και να το συμπληρώσετε. Αν με λίγα λόγια.

Το EGYDuino είναι ένας κλώνος Arduino που μπορείτε να φτιάξετε μόνοι σας σε μονή όψη πλακέτα τυπωμένου κυκλώματος. Αυτή είναι μια απλή και φθηνή λύση που μπορείτε να φτιάξετε στο σπίτι και είναι 100% συμβατή με το Arduino.

Περιγραφή

Ο μικροελεγκτής ATmega8 είναι υπεύθυνος για τη σειριακή σύνδεση USB. Μπορεί να προγραμματιστεί με . Το AVR-CDC δημιουργεί μια εικονική θύρα COM στον υπολογιστή μετά τη σύνδεση της συσκευής και εγκαθιστά το κατάλληλο πρόγραμμα οδήγησης. Ο μικροελεγκτής ATmega 8.168 θα πρέπει να προγραμματιστεί χρησιμοποιώντας τον φορτωτή σκάφους ArduinoNG. Αυτή η λειτουργία μπορεί να πραγματοποιηθεί χρησιμοποιώντας άλλη πλακέτες arduino(επιλέξτε προγραμματιστή ISP) και το Arduino IDE ή έναν ξεχωριστό προγραμματιστή (USB, σειριακό ή παράλληλο) όπως USBasp με το κατάλληλο λογισμικό. Μπορείτε επίσης να χρησιμοποιήσετε φορτωτή Arduinoduemilanoveγια ATmega 168 ή 328.

Ο πίνακας έχει τα ακόλουθα χαρακτηριστικά:

Χρησιμοποιεί τον μικροελεγκτή ATmega8 ως IC διασύνδεσης
- Σύνδεση USB με υπολογιστή
- Τυπικό κουμπίΕΠΑΝΑΦΟΡΑ
- 100% pin συμβατή με Arduino
- Ρυθμιστής 5V
- Έξοδος 3,3V
- Συμβατό μέγεθος και σχεδιασμός
- Όλα τα εξαρτήματα εισάγονται στις διαμπερείς οπές στερέωσης της πλακέτας
- Διακόπτης τροφοδοσίας USB ή DC
- LED για έξοδο PIN13 με βραχυκυκλωτήρα
- LED ισχύος
- Υποδοχή ICSP
- Εύκολο στην κατασκευή
- ATmega8,168,328 μικροελεγκτές που χρησιμοποιούν arduinoNG bootloader
- Τυπική πρίζα DC

Η πλακέτα EGYDuino μπορεί να τροφοδοτηθεί μέσω μιας υποδοχής USB ή ενός ρυθμιστή τάσης από έναν εξωτερικό προσαρμογέα.

Σχέδιο

Το πλήρες διάγραμμα της συσκευής φαίνεται παρακάτω.

Πλακέτα τυπωμένου κυκλώματος

Λίστα ραδιοφωνικών στοιχείων

Ονομασία Τύπος Ονομασία Ποσότητα ΣημείωσηΚατάστημαΤο σημειωματάριό μου
IC1 μικροελεγκτήATmega8-P1 Στο σημειωματάριο
IC2 MK AVR 8-bit

ATmega328

1 Στο σημειωματάριο
IC3 Γραμμικός ρυθμιστής

LM7805

1 Στο σημειωματάριο
Δ1 ανορθωτική δίοδος

1N4001

1 Στο σημειωματάριο
Δ2, Δ3 Δίοδος Ζένερ3,6V2 Στο σημειωματάριο
C1, C2, C5, C6 Πυκνωτής22 pF4 Στο σημειωματάριο
C3 Πυκνωτής1000 pF1 Στο σημειωματάριο
C4, C7, C10 Πυκνωτής0,1 uF3 Στο σημειωματάριο
C8, C9 ηλεκτρολυτικό πυκνωτή100uF2 Στο σημειωματάριο
R1, R2 Αντίσταση

68 ωμ

2 Στο σημειωματάριο
R3 Αντίσταση

1,5 kOhm

1 Στο σημειωματάριο
R4, R6 Αντίσταση

10 kOhm

2 Στο σημειωματάριο
R5 Αντίσταση

1 kOhm

1 Στο σημειωματάριο
R7 Αντίσταση

470 ωμ

1 Στο σημειωματάριο
Q1, Q2 Αντηχείο χαλαζία16 MHz2 Στο σημειωματάριο
LED1 Δίοδος εκπομπής φωτόςτο κόκκινο1

Πρέπει να παραδεχτώ αμέσως ότι ο τίτλος έχει σκοπό να προσελκύσει την προσοχή - φυσικά, δεν μπορείτε να συναρμολογήσετε μια πλήρη πλακέτα Arduino για 3 $, αλλά μια ελάχιστη λύση είναι αρκετά δυνατή.

σανίδες Έργο Arduinoιδανικό για breadboarding και πρωτότυπα, και για έτοιμες συσκευές, ήθελα να βρω κάτι φθηνότερο και πιο προσιτό. Αυτή η ανάρτηση θα περιγράψει την ελάχιστη σχεδίαση συμβατή με Arduino.

Οπως και αφετηρίαχρησιμοποιημένα άρθρα Minimal Arduino με ATmega8 (προειδοποίηση: αυτό το άρθρο έχει σφάλμα, οι τιμές bit ασφαλειών είναι λανθασμένες) και τη σελίδα ArduinoISP από το επίσημο wiki. Δυστυχώς, κανένα από αυτά τα άρθρα δεν απάντησε ταυτόχρονα σε όλες τις ερωτήσεις μου, επιπλέον, υπήρχε η επιθυμία να "στριμώξουμε" λίγο τον τυπικό bootloader, αλλά περισσότερα για αυτό παρακάτω.

Υποστήριξη για νέους πίνακες και IDE
(προσθήκη με ημερομηνία 05/01/2012, διορθώθηκαν αρχεία 27/05/2012)

Τα βήματα σε αυτό το άρθρο έχουν δοκιμαστεί Arduino IDE 0023και κλώνος Arduino Duemilanove. Από τότε που γράφτηκε αυτό το άρθρο, έχουν κυκλοφορήσει νέοι πίνακες και το περιβάλλον έχει ενημερωθεί. Κρίνοντας από τα σχόλια των χρηστών σε αυτήν την καταχώρηση, όλα λειτουργούσαν αν χρησιμοποιήθηκε η πλακέτα προγραμματιστή Arduino Uno Και Arduino Mega 2560. Για τη νέα έκδοση του περιβάλλοντος Arduino IDE 1.0.1Ετοίμασα ένα ενημερωμένο αρχείο (διαθέσιμο στο τέλος του άρθρου), η ενημέρωση είναι απαραίτητη λόγω μικρών αλλαγών στη μορφή αρχείου πίνακες.txt

Ελάχιστη κατασκευή Arduino για 3,5 $
(προσθήκη 02.05.2012)

Αυτή η μέθοδος είναι μια εναλλακτική σε αυτήν που περιγράφεται στο παρακάτω άρθρο!
Περιλαμβάνεται Arduino IDE 1.0παρέχεται ένας νέος φορτωτής εκκίνησης Optiboot, ο οποίος παίρνει μόνο 512 byte (ο φορτωτής εκκίνησης που περιγράφεται σε αυτό το άρθρο είναι διπλάσιος - 1 KB) και εκτελείται σε υψηλή εγρήγορση - 115200 (στο παρακάτω άρθρο - 38400). Για τη λειτουργία αυτού του bootloader, εκτός από τα εξαρτήματα που περιγράφονται στο άρθρο, χρειάζεστε έναν εξωτερικό χαλαζία 16 MHz και δύο πυκνωτές 22 pF για τη σύνδεσή του (αυτό εξηγεί την αύξηση του κόστους κατά 0,5 $ :)). Το Arduino IDE 1.0 συνοδεύεται από μια μεταγλωττισμένη έκδοση για το ATmega8, απλά πρέπει να το προσθέσετε στο πίνακες.txtΕΠΟΜΕΝΟ και αναβοσβήσε το bootloader:
########################################################## atmega8optiboot.name=ATmega8 (optiboot, 16Mhz atmega. tiboot.upload.maximum_ size=7680 atmega8optiboot.upload.speed=115200 atmega8optiboot.bootloader.low_fuses=0xBF atmega8optiboot.bootloader.high_fuses=0xCC atmega8optiboot.booptiboot. tiboot_atmega8.hex atmega8optiboot.boot loader.unlock_bits=0x3F atmega8optiboot.bootloader.lock_bits=0x0F atmega8optiboot.build.mcu=atmega8 atmega8optiboot.build.f_cpu0corega8optiboot.build.f_cpu0corega8optiboot=060L atmega8optiboot.build.variant=arduino:standard Στην έκδοση των αρχείων για το άρθρο με ημερομηνία 14 Ιουλίου 2012, οι ρυθμίσεις για αυτήν τη μέθοδο προστέθηκαν στο αρχείο οπότε επεξεργαστείτε το κύριο πίνακες.txtδεν είναι πια απαραίτητο.



Τι θα χρειαστεί:
  • Συμβατή πλακέτα Arduino(Χρησιμοποίησα έναν κινέζικο κλώνο του Arduino Duemilanove, τη στιγμή που γράφω το νέο Arduino Uno δεν υποστηρίζεται από το σκίτσο του ArduinoISP. Ενημέρωση: Οι χρήστες του ArduinoISP από το Arduino 023 υποστηρίζουν σύμφωνα με πληροφορίες το Arduino Uno). Η πλακέτα θα χρησιμοποιηθεί ως προγραμματιστής για το υλικολογισμικό του bootloader και στο μέλλον ως μετατροπέας USB-TTL.
  • Arduino IDEέκδοση 0022 (η πιο πρόσφατη τη στιγμή της σύνταξης).
  • μικροελεγκτήσε πακέτο DIP-28 ATmega8 ή ATmega8A ( , η έκδοση "A" έχει χαμηλότερη κατανάλωση ενέργειας). Για χρονομέτρηση, θα χρησιμοποιηθεί ένας εσωτερικός ταλαντωτής RC με μέγιστη συχνότητα 8Mhz.
  • σύρματαγια να συνδέσετε όλα αυτά κατά τη διάρκεια του bootloader "ένα υλικολογισμικό (χρησιμοποίησα ένα breadboard χωρίς συγκόλληση και ένα σύνολο απογυμνωμένων καλωδίων σε αυτό)
Προαιρετικά εξαρτήματα:
  • 1 LED και αντίσταση περιορισμού ρεύματος 220-500 ohm (συνδεδεμένη με τον ακροδέκτη #19 (PB5), αυτή είναι η ίδια έξοδος Digital pin 13 που συνδέεται με το LED στις περισσότερες πλακέτες συμβατές με Arduino μεγάλο);
  • 1 αντίσταση ανά 10 kOhm (συνδεδεμένη από RESET "ένας μικροελεγκτής στα + 5V για την αποφυγή αυθαίρετης επαναφοράς).
  • 1 πυκνωτής 100 nF (συνδεδεμένος μεταξύ του συν και του πλην του τροφοδοτικού για να φιλτράρει τις παρεμβολές).

Η επιλογή του ATmega8(A) εξηγείται πολύ απλά: στα τοπικά καταστήματα ραδιοφώνου δεν υπήρχαν άλλοι ελεγκτές που να υποστηρίζονταν από το περιβάλλον Arduino. Από τη μία, αυτό με περιόρισε πολύ στον αριθμό του κώδικα, από την άλλη, λόγω του γεγονότος ότι ο κώδικας του έργου μου Arduino δεν χωρούσε στη μνήμη του ελεγκτή, αναγκάστηκα να ασχοληθώ με το WinAVR και να ξαναγράψω το έργο στο πλαίσιο του AVR-GCC. Χρειάστηκε πολύς χρόνος για να θυμηθώ το C και να διαβάσω φύλλα δεδομένων, αλλά ο κώδικας αποδείχθηκε πέντε φορές πιο συμπαγής και, ίσως, δύσκολα θα επιστρέψω στον προγραμματισμό στο περιβάλλον Arduino :).

Προετοιμασία του IDE

Κατεβάστε το αρχείο με τις ρυθμίσεις και το bootloader και αποσυμπιέστε το στο φάκελο Sketchbook (μπορείτε να δείτε τη διαδρομή στο στοιχείο μενού Αρχείο -> Προτιμήσεις Arduino IDE). Μετά την επανεκκίνηση του Arduino IDE, θα πρέπει να εμφανιστεί ένα νέο στοιχείο στο μενού Εργαλεία -> Πίνακας.


Το αρχείο περιέχει τα εξής:
  • Τροποποιημένος bootloader για ATmega8 από το έργο Arduino. Πρωτότυπο πηγήμπορεί να βρεθεί στο φάκελο hardware\arduino\bootloaders\atmega8. Αυτός ο bootloader καταλαμβάνει μόνο 1KB (512 λέξεις) μνήμης ελεγκτή, σε αντίθεση με το νεότερο hardware\arduino\bootloaders\atmega, το οποίο χρησιμοποιείται για πλακέτες με βάση ATmega168 και ATmega328. Οι διαφορές από την αρχική έκδοση είναι οι εξής: ο χρόνος αναμονής του σκίτσου μειώθηκε κατά την επαναφορά του μικροελεγκτή, η ταχύτητα λήψης αυξήθηκε στα 38400.
  • Το αρχείο boards.txt, το οποίο περιγράφει τη διαμόρφωση του νέου τύπου πλακέτας (με περισσότερα υψηλή ταχύτηταφορτίο και bit ασφαλειών για λειτουργία από τον εσωτερικό ταλαντωτή RC σε συχνότητα 8Mhz).
Μετατροπή μιας πλακέτας συμβατής με Arduino σε προγραμματιστή

Στο Arduino, πρέπει να ανεβάσετε το σκίτσο ArduinoISP ( Αρχείο -> Παραδείγματα -> ArduinoISP), μετά από αυτό το Arduino μπορεί να παίξει το ρόλο του προγραμματιστή ISP για σχεδόν όλα τα τσιπ AVR (δοκίμασα σε ATmega8 και ATtiny45).


Σύνδεση του "προγραμματιστή" με τον ελεγκτή


Το κύκλωμα αντιγράφεται στο κείμενο του σκίτσου ArduinoISP:

// αυτό το σκίτσο μετατρέπει το Arduino σε AVRISP // χρησιμοποιώντας τις ακόλουθες ακίδες: // 10: slave reset // 11: MOSI // 12: MISO // 13: SCK
Ενημέρωση από 30/10/2011:Για το Arduino Mega, η εκχώρηση pin είναι διαφορετική:

// 50 (MISO) // 51 (MOSI) // 52 (SCK) // 53 (επαναφορά υποτελών)
Επιπλέον, μπορείτε να συνδέσετε LED που θα αναβοσβήνουν κατά τη διάρκεια του υλικολογισμικού (η παρουσία ή η απουσία τους δεν επηρεάζει τη λειτουργικότητα):

// Βάλτε μια λυχνία LED (με αντίσταση) στις ακόλουθες ακίδες: // 9: Heartbeat - δείχνει ότι ο προγραμματιστής λειτουργεί // 8: Σφάλμα - Ανάβει εάν κάτι πάει στραβά (χρησιμοποιήστε κόκκινο αν αυτό έχει νόημα) // 7: Προγραμματισμός - Σε επικοινωνία με τον slave
Έλεγχος συνδεσιμότητας

Το Arduino χρησιμοποιεί για τη σύνταξη σκίτσων avr-gcc, το τυπικό βοηθητικό πρόγραμμα υλικολογισμικού στο οποίο βρίσκεται το πρόγραμμα avrdude (βρίσκεται σε αυτόν τον φάκελο: \hardware\tools\avr\bin\ ). Πριν κάνουμε οτιδήποτε περαιτέρω, πρέπει να ελέγξουμε εάν έχουμε συνδέσει σωστά τον ελεγκτή χρησιμοποιώντας την ακόλουθη εντολή:


avrdude -v -patmega8 -cstk500v1 -PCOM10 -b19200
Εκχώρηση παραμέτρων:
  • -v - εμφάνιση περισσότερων πληροφοριών
  • -patmega8 — τύπος ελεγκτή (για το ATmega8A πρέπει ακόμα να καθορίσετε το atmega8)
  • -cstk500v1 - τύπος προγραμματιστή (Το ArduinoISP εξομοιώνει το STK500)
  • -PCOM10 - Αριθμός θύρας COM (μπορεί να προβληθεί στο μενού Εργαλεία -> Σειριακή θύρα στο Arduino IDE)
  • -b19200 - ρυθμός baud, το σκίτσο ArduinoISP λειτουργεί με αυτόν τον ρυθμό baud
Εάν όλα είναι συνδεδεμένα σωστά, ο ελεγκτής θα πρέπει να απαντήσει ευχαρίστως κάτι σαν αυτό:

Η συσκευή AVR προετοιμάστηκε και είναι έτοιμη να δεχτεί οδηγίες Ανάγνωση | ################################################################################################################################################## | 100% 0,05s avrdude: Υπογραφή συσκευής = 0x1e9307 avrdude: safemode: fuse διαβάζεται ως E1 avrdude: safemode: hfuse διαβάζεται ως D9 avrdude: safemode: fuse διαβάζεται ως E1 avrdude: safemode: hfuse διαβάζεται ως E1 avrdude. ευχαριστώ.

Σπουδαίος! Εάν όλα είναι συνδεδεμένα σωστά, αλλά και πάλι δεν λειτουργούν, το πρόβλημα μπορεί να βρίσκεται στην έκδοση του avrdude. Σε έναν από τους πίνακες δοκιμών μου, προέκυψε η ακόλουθη κατάσταση: το avrdude από το ArduinoIDE δεν βλέπει την πλακέτα "προγραμματιστή" με το ArduinoISP, αλλά το avrdude από το WinAVR λειτουργεί καλά. Η λύση σε αυτό το ακατανόητο σφάλμα είναι αρκετά απλή - κατά τη διάρκεια του bootloader "ένα υλικολογισμικό, αντικαταστήστε το αρχείο \hardware\tools\avr\bin\avrdude.exeγια περισσότερα νέα έκδοσηαπό το WinAVR. Ο Bootloader μπορεί να αναβοσβήσει όχι από την πρώτη φορά, αλλά από τη δεύτερη - υπάρχουν επίσης αρκετά παράπονα για αυτήν τη συμπεριφορά στα φόρουμ. Αφού αναβοσβήσετε το bootloader, μπορείτε να επαναφέρετε την αρχική έκδοση του avrdude.

Φορτωτής εκκίνησης υλικολογισμικού "α

Το πιο εύκολο κομμάτι. Πρέπει να ξεκινήσετε το Arduino IDE, επιλέξτε τον ακόλουθο πίνακα στο στοιχείο μενού Εργαλεία -> Πίνακας: ATmega8(A) (8MHz int. RC osc, μικρή καθυστέρηση φόρτωσης εκκίνησης, ρυθμός baud 38400). Αυτή είναι η πλακέτα προορισμού, επομένως πρέπει να επιλέξετε αυτό το στοιχείο και όχι το μοντέλο της συμβατής με Arduino πλακέτας που λειτουργεί ως προγραμματιστής ISP.

Μετά από αυτό, πρέπει να ξεκινήσετε τη διαδικασία υλικολογισμικού του bootloader "και με την εντολή Tools -> Burn Bootloader -> w/ Arduino ως ISP. Η διαδικασία υλικολογισμικού διαρκεί 1-2 λεπτά.


Τι έγινε στο τέλος

Αφού αναβοσβήνει ο φορτωτής εκκίνησης και εγκατασταθούν τα bit ασφαλειών, το νέο ATmega8A θα λειτουργεί από τον ενσωματωμένο ταλαντωτή RC σε συχνότητα 8 Mhz. Δεν υπάρχει ακόμη πρόγραμμα στη μνήμη flash του ελεγκτή, οπότε ο φορτωτής εκκίνησης θα ξεκινήσει ξανά και ξανά, όπως αποδεικνύεται από το συνεχές αναβοσβήσιμο του L LED.


Ο Bootloader περιμένει για εντολές UART για περίπου μισό δευτερόλεπτο μετά την επαναφορά του μικροελεγκτή. Για να ανεβάσετε το υλικολογισμικό στον ελεγκτή, μπορείτε να χρησιμοποιήσετε:

  • Μετατροπέας USB-TTL (μπορείτε να τον κατασκευάσετε ή να τον αγοράσετε).
  • Πλακέτα συμβατή με Arduino με αφαίρεση του ελεγκτή.
Γιατί χρειάζομαι ένα bootloader εάν υπάρχει ArduinoISP;
  • Η χρήση του bootloader "a παρέχει συμβατότητα τόσο με το Arduino IDE όσο και με το AVR Studio.
  • λιγότερα καλώδια για σύνδεση (μόνο UART αντί για γραμμές ISP). Ταυτόχρονα, το UART χρησιμοποιείται συχνά για εντοπισμό σφαλμάτων, επομένως πρέπει να το συνδέσετε.
Κατεβάστε

Αυτή τη φορά θα σας πω πώς να φτιάξετε ένα Arduino με τα χέρια σας και μάλιστα χωρίς κολλητήρι. Το κύκλωμα αυτού του απλού κλώνου Arduino ονομάζεται Γαρίδες. Το σπιτικό Shrimp είναι πλήρως συμβατό με το Arduino IDE, ώστε να μπορείτε εύκολα να εκτελέσετε οποιοδήποτε σκίτσο σε αυτό. Θα πρέπει να σημειωθεί αμέσως ότι για να δημιουργήσετε το Shrimp από την αρχή, θα χρειαστείτε μια πλακέτα εργασίας Arduino. Είναι απαραίτητο να εγκαταστήσετε το bootloader σε έναν άδειο μικροελεγκτή. Εάν δεν υπάρχει Arduino στο χέρι, τότε μπορείτε να αγοράσετε έναν ήδη αναβοσβήσιμο μικροελεγκτή και να μεταβείτε αμέσως στην ενότητα 2. Για να δημιουργήσουμε το Shrimp, χρειαζόμαστε:

  • μικροελεγκτής ATMEGA328P-PU;
  • αντίσταση 10 kΩ;
  • πυκνωτής 10-100 uF, ηλεκτρολυτικός;
  • πυκνωτής 22 pF, κεραμικό - 2 τεμ.
  • πυκνωτής 100 nF, κεραμικό - 4 τεμ.
  • κουμπί ρολογιού?
  • χαλαζίας 16 MHz;
  • σανίδα ψωμιού?
  • ένα σετ άλτες για το breadboard.
  • Μετατροπέας USB σε UART που βασίζεται σε FT232R, CP2102 ή CH340.

1. Αντιγραφή του bootloader σε έναν κενό μικροελεγκτή

Συνήθως, για να γράψετε ένα πρόγραμμα σε έναν μικροελεγκτή, πρέπει να χρησιμοποιήσετε μια ξεχωριστή συσκευή - έναν προγραμματιστή. Το Arduino είναι καλό γιατί δεν χρειάζεται προγραμματιστή. Αντίθετα, χρησιμοποιείται ένα ειδικό υλικολογισμικό που ονομάζεται bootloader. Αυτός ο bootloader μπορεί να λάβει προγράμματα από έξω και να τα γράψει στη μνήμη flash του μικροελεγκτή. Έτσι, ο bootloader γράφεται στον μικροελεγκτή στο εργοστάσιο. Και για να λειτουργήσει η Γαρίδα μας, πρέπει να επαναλάβουμε αυτή τη διαδικασία. Εδώ χρειαζόμαστε μια άλλη πλακέτα Arduino, η οποία αναφέρθηκε στην αρχή. Η διαδικασία εγκατάστασης του bootloader αποτελείται από τρία βήματα. Βήμα 1. Εγκατάσταση στην πλακέτα εργασίας Arduino ειδικό πρόγραμμα— OptiLoaderΑνοίξτε το πρόγραμμα OptiLoaderσας επιτρέπει να αναβοσβήσετε το optiboot bootloader στον μικροελεγκτή του Shrimp μας. Κατά τη στιγμή της γραφής, το OptiLoader υποστηρίζει μικροελεγκτές: ATmega8, ATmega168, ATmega168P, ATmega168PB, ATmega328, ATmega328P, ATmega328PB. Κατεβάστε το αρχείο από έναν από τους συνδέσμους:
  • από το επίσημο αποθετήριο: https://github.com/WestfW/OptiLoader
  • από το site μας:
Αποσυσκευάστε το αρχείο και ανοίξτε το σκίτσο στο Arduino IDE. Μεταφόρτωση του σκίτσου στον πίνακα Arduino. Αποσυνδέστε το Arduino από την τροφοδοσία USB. Σημείωση.Εάν κάνετε λήψη του προγράμματος από το github, θα χρειαστεί να μετονομάσετε τον φάκελο "optiLoader-master" σε "optiLoader" Βήμα 2. Σύνδεση καθαρού μικροελεγκτήΣυνδέουμε την πλακέτα εργασίας Arduino με έναν καθαρό μικροελεγκτή σύμφωνα με το παραπάνω διάγραμμα. Όλα είναι πολύ απλά εδώ. Κοιτάζουμε προσεκτικά την εικόνα, εισάγουμε τα καλώδια, ελέγχουμε επτά φορές. διάγραμμα κυκλώματος Εμφάνιση διάταξης
Βήμα 3. Πρόγραμμα εκκίνησης υλικολογισμικού (bootloader)Τώρα συνδέστε το Arduino σε τροφοδοσία USB. Αμέσως μετά την ενεργοποίηση, το πρόγραμμα θα ξεκινήσει την αντιγραφή του bootloader σε έναν καθαρό μικροελεγκτή. Αυτό θα κάνει τα LED RX και TX να αναβοσβήνουν ενεργά. Μόλις σταματήσουν να αναβοσβήνουν τα LED, η αντιγραφή έχει ολοκληρωθεί. Εάν κάτι πήγε στραβά και τα LED δεν αναβοσβήνουν, μπορείτε να ανοίξετε την οθόνη COM. Το OptiLoader εμφανίζει ολόκληρη τη διαδικασία αντιγραφής του προγράμματος φόρτωσης. Εάν είναι επιτυχής, η αναφορά διαδικασίας θα μοιάζει με αυτό.

2. Ανέβασμα προγραμμάτων στο Shrimp

Λοιπόν, τώρα έχουμε ένα σπιτικό Arduino με flashed bootloader. Για να ανεβάσουμε κάποιο σκίτσο σε αυτό, πρέπει να αποσυναρμολογήσουμε μερικώς το προηγούμενο κύκλωμα και να το συμπληρώσουμε με νέα στοιχεία.Πιο συγκεκριμένα, προστίθεται ένα κουμπί επαναφοράς και προστατευτικά κυκλώματα ισχύος.

Πλακέτα ανάπτυξης ATMEGA8 anti-arduino-odurino

Ένα από τα πιο καταστροφικά πράγματα που επηρέασαν τη διάδοση της ραδιοερασιτεχνικής ηλεκτρονικής ήταν η μαζική διανομή του Arduino (odurino). Αυτή είναι μια ολοκληρωμένη πλακέτα με συγκολλημένο μικροελεγκτή και ελάχιστη καλωδίωση. Θα σας φαίνεται βολικό και χρήσιμο πράγμα; Μην βιαστείτε να καταλήξετε σε ένα τέτοιο συμπέρασμα.

Ένα άτομο που δεν είναι εξοικειωμένο με τα ραδιοηλεκτρονικά, λαμβάνοντας κάτι τέτοιο, αρχίζει να το χρησιμοποιεί. Αυτό είναι ένα από τα πρώτα και πιο σημαντικά μειονεκτήματα: ένα άτομο δεν κατανοεί τα βασικά και δεν μαθαίνει καν να κολλάει.

Όλες οι συνδέσεις για το arduino γίνονται με καλώδια με ωτίδες. Αυτό είναι βολικό, αλλά υπάρχει επίσης ένα σημαντικό μειονέκτημα: τα κυκλώματα, να το πούμε έτσι, με τη χρήση arduino φαίνονται άσχημα - με τη μορφή μιας δέσμης χρωματιστών γραμμών. Αυτό είναι το δεύτερο σημαντικό μείον: ένα άτομο δεν μαθαίνει κυκλικό αλφαβητισμό.


Το Arduino έχει το δικό του περιβάλλον ανάπτυξης με μια πρωτόγονη γλώσσα στην οποία οι ερασιτέχνες έγραψαν ένα σωρό αντιεπαγγελματικά, όπως τα αποκαλούσαν, σκίτσα - έτοιμες λύσεις για τις περισσότερες εφαρμογές. Χρησιμοποιώντας τους, προκύπτει ένα τρίτο μειονέκτημα: ένα άτομο δεν μαθαίνει προγραμματισμό, δεν βελτιώνει ποιοτικά τις γνώσεις και δεν ακονίζει τις δεξιότητες προγραμματισμού, όντας κλειδωμένο στο σφιχτό πλαίσιο ενός πρωτόγονου αναπτυξιακού περιβάλλοντος.

Στην πραγματικότητα, τα μειονεκτήματα του arduino είναι πολύ περισσότερα και δεν έχει νόημα να τα απαριθμήσουμε όλα. Έχει να κάνει με το τι πρέπει να κάνετε για να έχετε τα οφέλη.

Όλα είναι πολύ απλά. Αν θέλετε να κάνετε ραδιοηλεκτρονικά, μάθετε πώς να συγκολλάτε: συναρμολογήστε τη δική σας πλακέτα ανάπτυξης με ένα ελάχιστο αλλά επαρκές κιτ αμαξώματος. Εκμεταλλευτείτε τα πλεονεκτήματα του arduino και μην πάρετε τα μειονεκτήματα. Χρησιμοποιήστε καλώδια με ωτίδες για να συνδέσετε περιφερειακά και μην χρησιμοποιείτε arduino ide.

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

Έτσι, ο πίνακας ανάπτυξής μας περιλαμβάνει:

  • μικροελεγκτής ATMEGA8
  • υποδοχές για ενδείξεις γραφικών και χαρακτήρων σε δημοφιλείς ελεγκτές SED1520 και HD44780 αντίστοιχα
  • Κάθε έξοδος του μικροελεγκτή αντιγράφεται με τρεις ακίδες
  • υπάρχει μια υποδοχή προγραμματισμού εντός κυκλώματος για το δημοφιλές ICSP (ISP) USBASP
  • Οι γραμμές +5 volt και η γείωση εξάγονται σε πολλούς ακροδέκτες διαφορετικούς τόπουςαμοιβές
  • τρία πολύχρωμα LED και ένα κουμπί, καθώς και ένα κουμπί RESET
  • Βύσμα 7,5-20 volt και σταθεροποιητής LDO
  • για γραφική οθόνη υπάρχει πρόγραμμα οδήγησης αρνητικής τάσης με ρύθμιση στο ICL7660
  • Τα κυκλώματα ADC τροφοδοτούνται μέσω ενός φίλτρου
  • υπάρχει αντηχείο χαλαζία, αλλά η χρήση του δεν είναι απαραίτητη
Όπως μπορείτε να δείτε, το σύνολο είναι κάτι παραπάνω από μίνιμαλ. Το μέγεθος της σανίδας είναι 10*10 εκ. Είναι πιο βολικό να εργάζεστε σε μεγάλη περιοχή. Παρεμπιπτόντως, μπορείτε να αναδιαμορφώσετε όλα όσα θέλετε για να ταιριάζουν στις ανάγκες σας. Δεδομένου ότι το έργο δεν έχει ακόμη ολοκληρωθεί, θα συνεχίσει να αναπτύσσεται. Επομένως, μπορείτε να εκφράσετε τα σχόλια και τις προτάσεις σας για βελτίωση.

Τα προγράμματα μπορούν να γραφτούν σε οποιαδήποτε γλώσσα.

Σχέδιο v1.0b:


Κάντε κλικ για μεγέθυνση
Κουμπί S1 - RESET, σχεδιασμένο για επαναφορά του μικροελεγκτή. Το S2, εάν χρειάζεται, συνδέεται με οποιοδήποτε pin. Στην πλακέτα έκδοσης 1.0b, συνδέεται από την κάτω πλευρά της πλακέτας με δύο καλώδια στις γραμμές VCC και GND. Ο βραχυκυκλωτήρας JP6 CONTR πρέπει να είναι κλειστός εάν η εμφάνιση χαρακτήρων απαιτεί ρύθμιση αντίθεσης. μεταβλητή αντίσταση R6. Εάν η αντίθεση είναι ήδη ρυθμισμένη στην ίδια την οθόνη με συγκολλημένες αντιστάσεις, τότε ο βραχυκυκλωτήρας ανοίγει. Το Jumper JP5 PROG πρέπει να είναι κλειστό κατά τη λειτουργία. Κατά τον προγραμματισμό, ανοίγει, ενώ τροφοδοτείται μόνο στο MK και μόνο από την υποδοχή ICSP. Η αντίθεση της οθόνης γραφικών ρυθμίζεται από μια μεταβλητή αντίσταση R7.

PCB v1.0b.