Inhaltsverzeichnis:

Eigenständiges Arduino 3,3 V mit externem 8-MHz-Takt, der von Arduino Uno über ICSP / ISP programmiert wird (mit serieller Überwachung!): - Gunook
Eigenständiges Arduino 3,3 V mit externem 8-MHz-Takt, der von Arduino Uno über ICSP / ISP programmiert wird (mit serieller Überwachung!): - Gunook

Video: Eigenständiges Arduino 3,3 V mit externem 8-MHz-Takt, der von Arduino Uno über ICSP / ISP programmiert wird (mit serieller Überwachung!): - Gunook

Video: Eigenständiges Arduino 3,3 V mit externem 8-MHz-Takt, der von Arduino Uno über ICSP / ISP programmiert wird (mit serieller Überwachung!): - Gunook
Video: Good bye Arduino? Welcome ATtiny 1-Series!! UPDI --geil!! 2024, Dezember
Anonim
Eigenständiger Arduino 3,3 V mit externem 8-MHz-Takt, der von Arduino Uno über ICSP / ISP programmiert wird (mit serieller Überwachung!)
Eigenständiger Arduino 3,3 V mit externem 8-MHz-Takt, der von Arduino Uno über ICSP / ISP programmiert wird (mit serieller Überwachung!)
Eigenständiger Arduino 3,3 V mit externem 8-MHz-Takt, der von Arduino Uno über ICSP / ISP programmiert wird (mit serieller Überwachung!)
Eigenständiger Arduino 3,3 V mit externem 8-MHz-Takt, der von Arduino Uno über ICSP / ISP programmiert wird (mit serieller Überwachung!)

Ziele:

  • Um ein eigenständiges Arduino zu bauen, das mit 3,3 V von einem externen 8-MHz-Takt betrieben wird.
  • Um es über ISP (auch bekannt als ICSP, In-Circuit Serial Programming) von einem Arduino Uno (mit 5V) zu programmieren

    So bearbeiten Sie die Bootloader-Datei und brennen den Bootloader (über ISP)

  • Um serielle Informationen vom eigenständigen Arduino über FTDI-Kabel lesen zu können

    Um serielle Informationen vom Standlaone-Arduino ohne das FTDI-Kabel lesen zu können

Präambel:

Ich habe versucht, mein eigenständiges Projekt zu erstellen, habe aber keine umfassenden Anleitungen zum Ausführen, Programmieren und Überwachen eines eigenständigen Arduino gesehen - insbesondere eines, das mit einem externen 8-MHz-Takt und 3,3 V läuft und von einem Arduino UNO programmiert wird. Ich habe eine Reihe separater Leitfäden zusammengestellt und versucht, darauf hinzuweisen, woher ich die Informationen habe, um Anerkennung zu geben, wo Anerkennung gebührt. Dieser Leitfaden ist das Ergebnis vieler Tage, in denen ich nach Lösungen gesucht und Teile davon gefunden habe, während ich mein eigenes Projekt erstellt habe. Außerdem habe ich mehrere nützliche Produkte verlinkt, die nicht in Frage kommen, weil ich mit einem von ihnen verbunden bin die Unternehmen, sondern weil es relevant ist, die spezifischen Punkte, auf die ich mich beziehe, aufzunehmen.

Häufige Fragen, bevor wir beginnen:

Warum müssen Sie es mit ISP programmieren und über FTDI überwachen? Warum kann man es nicht einfach über FTDI programmieren?

Wir müssen die Sicherungseinstellungen ändern, indem wir einen neuen Bootloader einbrennen, und das ist nicht über die serielle Kommunikation möglich. Sie müssen den Bootloader über ISP brennen. Dies ist auch für diejenigen nützlich, die keinen vorgeladenen ATMEGA328-Chip haben.

Warum verwende ich nicht einfach ein ISP-Kabel mit serieller Überwachung wie dieses?

Vielleicht haben Sie, wie ich, einfach keines und anstatt darauf zu warten, dass eines versendet wird, möchten Sie das verwenden, was Sie haben! Ich habe zufällig ein FTDI-Kabel (obwohl Sie feststellen werden, dass Sie es letztendlich nicht einmal brauchen: es macht Ihr Leben nur einfacher).

Brauche ich keinen Logikpegelumsetzer vom Uno zum eigenständigen Arduino?

Ja, das tust du, aber ich zeige dir, wie du selbst einen machst. Wie das ISP-Kabel habe ich zufällig keins.

Ich möchte es mit externer Stromversorgung betreiben. Wie mache ich das?

Es gibt viele Anleitungen, die zeigen, wie man ein eigenständiges Arduino ohne Batteriebetrieb betreibt. Ich werde schreiben, wie ich es gemacht habe und es hier verlinken [wird später einfügen].

DER FÜHRER

Schritt 1: Aufbau des eigenständigen Arduino

Aufbau des eigenständigen Arduino
Aufbau des eigenständigen Arduino
Aufbau des eigenständigen Arduino
Aufbau des eigenständigen Arduino

1) Erstellen Sie das eigenständige Arduino von diesem Link. Der einzige Teil des Leitfadens, den Sie benötigen, sind die "ATMEGA8/168/328 Basics".

  • Sie können das eigenständige Arduino über die 3,3 V des Arduino Uno mit Strom versorgen. (Sie können den ersten Abschnitt des Tutorials mit dem Titel "Schaltung für ein Netzteil hinzufügen" überspringen.
  • Ersetzen Sie den 16-MHz-Takt durch einen 8-MHz-Takt.
  • Fügen Sie 0,1 uF Kappen hinzu zwischen: VCC und Gnd (beide Seiten) VRef und Gnd.

    • Ich habe diese nicht im Bild enthalten, aber ich habe sie in meinen Projekten!
    • Ich weiß, dass es ein 16-MHz-Oszillator auf dem Foto ist. Ich habe das Foto gemacht, bevor ich alles herausgefunden habe, was ich in der Anleitung gemacht habe!

ATMEGA328p Pinbelegung Bildquelle hier.

Allgemeine Tipps zur Fehlerbehebung

  • Stellen Sie sicher, dass Sie über einen 10k-Widerstand von VCC auf Pin 1 des ATMEGA zurückgesetzt haben. Wenn der Pin geerdet oder potenzialfrei ist, funktioniert er nicht.
  • Überprüfen Sie, ob Sie Drähte und den Oszillator richtig eingefügt haben.
  • Stellen Sie sicher, dass Sie 22pF-Kondensatoren für den 8-MHz-Oszillator verwenden. Es wird nicht anders funktionieren.
  • Stellen Sie sicher, dass das Gerät mit Strom versorgt wird.

Schritt 2: Die ISP-Verkabelung

Die ISP-Verkabelung
Die ISP-Verkabelung
Die ISP-Verkabelung
Die ISP-Verkabelung

2) Erstellen Sie den ISP-Teil

Sie werden dieser Anleitung hier mit einem kleinen, aber sehr wichtigen Schritt folgen.

Der Grund, warum Sie der Anleitung nicht einfach folgen können, liegt darin, dass Ihnen ein entscheidender Teil fehlt: Sie können ein 3,3-V-Gerät nicht direkt über die 5-V-Anschlüsse programmieren. (Zumindest konnte ich nicht: es würde nicht funktionieren, bis ich dies tat). Sie müssen einen Logikpegelumsetzer einfügen, der die 5-V-Signale vom UNO zum 3.3V-Standalone-Arduino verschiebt.

Wenn Sie keine Logikpegel-Shifter-Platine haben, können Sie eine mit Widerständen herstellen. Alles, was ein Logikpegelumsetzer wirklich ist (solange Sie nach unten verschieben), ist ein Spannungsteiler. Sie benötigen 6 gleiche Widerstände, nichts zu hoch oder zu niedrig. Ich habe 220-Ohm-Widerstände verwendet, aber ich bin mir sicher, dass sogar 10k-Widerstände funktionieren würden.

Verwenden Sie für SCK (digitaler Pin 13) und MOSI (digitaler Pin 11) einen Spannungsteiler, um die Spannung um ein Drittel zu reduzieren. Im Wesentlichen haben Sie einen Uno SCK und MOSI, dann einen Widerstand (220 Ohm), dann SCK und MOSI, die mit dem eigenständigen Arduino und 2 Widerständen (insgesamt 440 Ohm) mit Masse verbunden sind.

Lesen Sie also die am Anfang dieses Abschnitts verlinkte Anleitung, aber schließen Sie Spannungsteiler zwischen SCK und MOSI ein. Denken Sie daran, SCK, MISO, MOSI und RESET sind die Pins 13, 12, 11 und 10 auf dem Uno, aber die Pins 19, 18, 17 und 1 auf dem eigenständigen Arduino!

Allgemeine Tipps zur Fehlerbehebung

  • ÜBERPRÜFEN SIE DIE VERKABELUNG

    • Wenn Sie beim Versuch, ein Programm zu schreiben, eine Gerätesignatur aller Nullen erhalten, ist Ihre Verkabelung mit ziemlicher Sicherheit ausgeschaltet oder das eigenständige Arduino erhält keinen Strom.
    • Stellen Sie außerdem sicher, dass Sie das Reset-Kabel von 10 auf dem Uno auf 1 auf dem eigenständigen Arduino haben
  • ÜBERPRÜFEN SIE DIE SPANNUNGSTEILER

    Stellen Sie sicher, dass Sie Spannungsteiler mit einem Verhältnis von 1:2 (High Side: Low Side) für die Widerstände für SCK und MOSI haben. Z. B. ein 220-Widerstand auf der +5-V-Seite und dann 2 220-Ohm-Widerstände (insgesamt 440 Ohm) gegen Masse mit dem Signal zum eigenständigen Arduino in der Mitte

Schritt 3: Bearbeiten Sie die Bootloader-Datei, brennen Sie den Bootloader und laden Sie Ihre Skizze hoch

Bearbeiten Sie die Bootloader-Datei, brennen Sie den Bootloader und laden Sie Ihre Skizze hoch
Bearbeiten Sie die Bootloader-Datei, brennen Sie den Bootloader und laden Sie Ihre Skizze hoch
Bearbeiten Sie die Bootloader-Datei, brennen Sie den Bootloader und laden Sie Ihre Skizze hoch
Bearbeiten Sie die Bootloader-Datei, brennen Sie den Bootloader und laden Sie Ihre Skizze hoch

3) Bearbeiten Sie die Bootloader-Datei (boards.txt) und brennen Sie den Bootloader auf das eigenständige Arduino. Laden Sie Ihre Skizze hoch

Bearbeiten der Bootloader-Datei

Um das eigenständige Arduino zum Laufen zu bringen, müssen Sie die Brownout-Fuse-Einstellungen des Bootloaders bearbeiten. Andernfalls können Sie einen Bootloader darauf brennen, aber keine Skizzen ausführen.

Sie können die Brownout-Erkennung vollständig entfernen, aber ich würde es nicht empfehlen. Stattdessen werden wir es von 2,7 V (was standardmäßig auf meinem Chip war) senken und durch 1,8 V ersetzen. Letztendlich können Sie jedoch mit dem Sicherungsrechner hier auswählen, welche Brownout-Einstellungen Sie möchten.

Meine Boards-Datei befand sich an folgendem Speicherort:

C:\Programme (x86)\Arduino\hardware\arduino\avr

Möglicherweise haben Sie jedoch außer /arudino/ mehr als eine Datei "boards.txt" in Ihrem Hardware-Ordner. Sie werden die Datei "boards.txt" im Speicherort /arduino/ bearbeiten, da Sie den Abschnitt ATMEGA328p (3,3 V, 8 MHz) ändern werden.

Sie können die bearbeitete Datei board.txt verlieren, wenn Sie die Arduino IDE neu installieren oder aktualisieren (gemäß diesem Beitrag). Dies bedeutet, dass Sie beim Aktualisieren der Arduino IDE diese Einstellungen erneut ändern müssen, wenn Sie ein weiteres eigenständiges Arduino erstellen möchten.

Scrollen Sie in der Datei "boards.txt" nach unten oder suchen Sie nach "Pro Mini". Der Abschnitt trägt den Titel "pro.name=Arduino Pro oder Pro Mini". Scrollen Sie nach unten zum Unterabschnitt "pro.menu.cpu.8MHzatmega328=ATmega328P (3.3V, 8 MHz)".

Suchen Sie nach der Zeile "pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses=_"

Ändern Sie die Einstellungen in xFE. (pro.menu.cpu.8MHzatmega328.bootloader.extended_fuses=0xFE).

Speichern und schließen.

Brennen des Bootloaders

Sobald Sie dies getan haben, können Sie dem Abschnitt "Anleitung" im ISP-Handbuch von den Schritten 1 bis 5 folgen.

Einige Dinge zu klären:

  • Wenn Sie die Skizze "Arduino als ISP" hochladen, müssen Sie sicherstellen, dass Sie den richtigen COM-Port und den richtigen Prozessor ausgewählt haben.

    In diesem Fall bedeutet dies, dass Sie den COM-Port Ihres Arduino in Tools->Port: COM X (Arduino Uno) ausgewählt haben und das Board Arduio Uno ist

  • Wählen Sie den richtigen Programmierer aus: unter Tools->Programmer->Arduino als ISP.

    NICHT ArduinoISP oder ArduinoISP.org

  • Bevor Sie den Bootloder brennen, ändern Sie das Board "Pro oder Pro Mini" und den Prozessor auf "ATMEGA328p (3.3V, 8 MHz)".

    Der Prozessorabschnitt wird erst angezeigt, wenn Sie den richtigen Board-Typ ausgewählt haben

Brennen Sie den Bootloader auf das eigenständige Arduino, BEVOR Sie versuchen, Skizzen darauf zu schreiben.

Hochladen der Skizze

Dies ist sehr wichtig. Sie können jetzt entweder Arduino programmieren: den Uno und den Standalone. Wenn Sie nicht auf das richtige Gerät hochladen, müssen Sie den obigen Abschnitt wiederholen und Arduino als ISP-Programm auf dem Uno neu schreiben.

Wenn Sie Ihre Skizze hochladen, stellen Sie sicher, dass Sie auf Extras -> Hochladen mit Programmierer klicken ODER auf Strg + Umschalt + U klicken. Sie können auch die Umschalttaste gedrückt halten und auf das Pfeilsymbol klicken, aber nicht auf das Pfeilsymbol klicken, ohne die Umschalttaste gedrückt zu halten.

Allgemeine Tipps zur Fehlerbehebung

  • Aktivieren Sie die ausführliche Ausgabe zur Fehlerbehebung.
  • "Die Gerätesignatur ist nur Nullen!" [Dieser wird sehr wahrscheinlich auftreten.]

    • siehe Abschnitt ISP-Verkabelung. Entweder haben Sie das eigenständige Arduino falsch verkabelt oder es wird nicht eingeschaltet.
    • Stellen Sie sicher, dass Sie den richtigen COM-Port und das richtige Board / den richtigen Prozessor ausgewählt haben. Wenn Sie den Bootloader brennen, MÜSSEN Sie sicherstellen, dass Sie den Pro Mini 3.3V 8 MHz Bootloader darauf brennen, sonst werden die Sicherungen nicht richtig eingestellt.
  • "Ich habe die Datei "boards.txt" bearbeitet, sehe aber die Änderungen nicht"

    Stellen Sie sicher, dass Sie die richtige Datei "boards.txt" bearbeitet haben. Versuchen Sie, die Arduino IDE zu aktualisieren, wenn die Bearbeitungen nicht funktionieren, oder entfernen Sie vorübergehend andere Ordner in Ihrem /hardware/-Ordner

  • "Ich kann den Pro-Mini-Bereich von board.txt nicht finden!"

    Sie suchen nicht in der richtigen Datei "boards.txt". Überprüfen Sie den Ordner Arduino//hardware/arduino/

Schritt 4: Serielle Kommunikation

4) Überwachen Sie das Standalone-Gerät über die serielle Kommunikation

Sie können dies wirklich über 2 Methoden tun. Wenn Sie also nicht einmal ein FTDI-Kabel / Breakout-Board haben, ist dies nicht das Ende der Welt. Und denken Sie daran, die Skizze, die Sie auf das eigenständige Arduino hochgeladen haben, muss Serial.print-Anweisungen enthalten, damit Sie sie lesen können: Wenn Sie sie nicht in das Programm geschrieben haben, sehen Sie nichts!

Wenn Sie kein FTDI-Kabel haben

Nachdem Sie den Bootloader gebrannt und das gewünschte Programm geschrieben haben, können Sie (sehr sorgfältig und unter Berücksichtigung der Ausrichtung, in die es zurückgeht) den ATMEGA328 DIP-Chip vom Arduino Uno entfernen. Ich empfehle dafür einen Flachkopf zu verwenden.

Sie können den RX des StandaloneArduino mit dem RX von Uno und den TX mit TX verbinden. Ja, normalerweise ist das Gegenteil der Fall, aber Sie können sich das Uno als "Weiterleiten" der Informationen an den seriellen Monitor der IDE vorstellen. Deshalb verbinden Sie in diesem Fall RX nicht mit TX und TX ro RX. Wenn Sie Ihr Programm ausführen, stellen Sie sicher, dass Sie den COM-Port des Arduino Uno ausgewählt haben und öffnen Sie den seriellen Monitor. Sie können die serielle Ausgabe des Standaone-Arduinos sehen.

(Diese Lösung wird hier Robin2 gutgeschrieben.)

Wenn Sie ein FTDI-Kabel / -Board haben

(Ich verwende die FTDI-Platine von Sparkfun, die ich mit dem Lötpad auf der Rückseite auf 3,3 V umgewandelt habe)

Verbinden Sie einfach die GND des Breakout-Boards mit der Masse des eigenständigen Arduino und verbinden Sie den RX des Breakoutboards mit dem TX des Arduino und TX mit RX. (Wenn Sie NUR eine serielle Überwachung durchführen und nichts zurückschreiben, können Sie einfach den RX des Steckbretts an Arduino TX anschließen).

Denken Sie daran, dass Sie an dieser Stelle die Möglichkeit haben, das eigenständige Arduino über das Uno ODER das FTDI-Kabel mit Strom zu versorgen. Schließen Sie nicht beide Stromquellen gleichzeitig an! Beachten Sie, dass Sie den COM-Port ändern müssen, da er sich vom Arduino Uno COM-Port unterscheidet.

Allgemeine Tipps zur Fehlerbehebung

  • "Ich sehe nichts!"

    • Überprüfen Sie, ob Sie den richtigen COM-Port aktiviert haben.
    • Überprüfen Sie, ob Sie über die neuesten FTDI-Treiber verfügen.
    • STELLEN SIE SICHER, DASS DIE ERDUNG ANGESCHLOSSEN IST.
  • "Alles was ich sehe ist Müllausgabe im seriellen Monitor!"

    • Sie bekommen etwas, was ein gutes Zeichen ist.
    • Überprüfen Sie jedoch die Spannung der FTDI-Platine.
    • Das eigenständige Arduino gibt 3,3 V an seinem TX aus und das FTDI-Board nimmt es möglicherweise nicht auf, wenn es 5 V erwartet.
    • Überprüfen Sie die Baudrate.
    • Stellen Sie sicher, dass Sie geerdet und nur eine Stromquelle angeschlossen haben! (D.h. das eigenständige Arduino nicht vom Uno UND Ihrem FTDI-Board mit Strom versorgen.

Empfohlen: