Programmieren von Arduino über Bluetooth-Modul Problem


7

Ich folgte einem Tutorial zum Einrichten von Arduino und Bluetooth, damit es ohne USB-Kabel programmiert werden kann. Ich habe keine Kondensatoren oder Widerstände verwendet, da sie anscheinend nicht benötigt werden. Ich habe den seriellen Ausgang auf der seriellen Arduino-Konsole über Bluetooth (kein USB-Kabel angeschlossen). Da es sich um eine funktionierende Verbindung handelt, bedeutet dies, dass sie bis zu einem gewissen Punkt funktioniert. Beim Hochladen wird jedoch der Fehler "avrdude: stk500_getsync (): nicht synchron: resp = 0x4c" angezeigt.

Ich habe Pin 32 von hc-05 noch nicht mit Arduino Reset Pin verbunden. Könnte das das Problem sein? Ich brauche eigentlich kein Arduino, um zurückgesetzt zu werden, da ich die Stromversorgung zumindest vorerst nur manuell beenden kann. Ich habe auch 9600 als Baudrate anstelle von 115200 wie im Tutorial verwendet, weil mein Arduino-Code 9600 verwendet hat, aber vielleicht habe ich das falsch verstanden und es muss tatsächlich 115200 sein, unabhängig davon oder meine Baudrate im Arduino-Code?

Was könnte die Ursache sein?

Bearbeiten 1:

Von der Antwort von @sachleen habe ich die Baudrate gemäß dem Tutorial geändert und Pin 32 des hc-05-Moduls auf den ersten Pin von Arduino gelötet.

Nach dem Ändern der Baudrate gibt das Öffnen der seriellen Arduino-Konsole nichts mehr aus. Warum ist das passiert? Ich habe schon einmal eine serielle Ausgabe erhalten, als die Baudrate von hc-05 9600 betrug.

Nach dem Löten scheint der erste Pin Arduino auch nach dem Öffnen der seriellen Konsole zurückgesetzt zu werden. Ich habe den Kondensator nicht hinzugefügt, ist er erforderlich und wenn ja, warum? Ich habe auch Widerstände ausgeschlossen, da sie anscheinend nur zur Spannungsreduzierung von 5 V auf 3 V dienen (mein Arduino ist eine 3,3 V-Version).


Hast du es repariert?
Emj365

@ emj365 Ich habe aber leider ist es so lange her, dass ich mich einfach nicht erinnere. Ich hätte die Antwort hinzufügen sollen, bevor ich es vergessen habe, aber ich habe es auch vergessen :) Wird die Antwort hinzufügen, wenn ich erneut auf dieses Problem stoße. Ich erinnere mich, dass es ein einfaches Problem war.
DominicM

@ emj365 Ich erinnere mich immer noch nicht sicher. Welches Arduino-Modell verwenden Sie und welche Baudrate?
DominicM

Danke, dass du es versucht hast. Ich habe ein gefälschtes Uno verwendet und die ESP8266-Baudrate (neu und sehr billig) auf 115200 geändert.
emj365

@ emj365 Nun, ich habe ein Bluetooth-Modul verwendet, so dass es möglicherweise ein anderes Problem ist, aber andererseits kann es genau dasselbe Problem sein. Versuchen Sie es mit 57600 Baudrate, wie ich es in meiner alten Arduino-Skizze habe. Wie hoch ist auch die Baudrate für das ESP8266-Modul?
DominicM

Antworten:


3

Ich habe das Tutorial geschrieben, dem Sie gefolgt sind, damit ich vielleicht helfen kann. Als ich die Schaltung anfangs baute, habe ich einige der anderen Tutorials zur Arduino Bluetooth-Programmierung verwendet, die nicht viele zusätzliche Widerstände und Kondensatoren enthalten. Ich konnte jedoch keine davon dazu bringen, zuverlässig zu arbeiten. Mit einem Schaltungssimulator und einigen Versuchen und Irrtümern kam ich zu der im Tutorial gezeigten Schaltung, die für mich funktionierte.

Während einige der zusätzlichen Passive "nicht benötigt werden", wenn Ihre Schaltung ohne sie nicht funktioniert, besteht vielleicht doch ein Bedarf für sie? ;-) Nun habe ich von anderen Leuten gehört, dass sie bestimmte Teile weglassen konnten, so dass es scheint, dass es eine gewisse Variabilität in der Hardware gibt. Wir sprechen jedoch von vier Passiven, um einen zuverlässigen Betrieb zu gewährleisten. Warum sollten Sie sie also weglassen?

Wie auch immer, ein paar Punkte:

  1. Pin 32 am HC-05 wird bei einer Bluetooth-Verbindung aktiv. Wir konfigurieren den Pin so, dass er niedrig aktiv ist, damit wir das Arduino bei serieller Verbindung automatisch zurücksetzen können, um zu emulieren, was mit der normalen USB-Verbindung passiert. Sie können die Verbindung zu Pin 32 nur auslassen, wenn Sie das Arduino manuell zurücksetzen müssen, um es zu programmieren.

  2. Die Baudrate von 115200 ist die Rate für die Programmierung des Arduino und wird vom Arduino-Bootloader festgelegt. Es ist möglich, den Bootloader mit einer anderen Konfiguration neu zu flashen, wenn dies aus irgendeinem Grund erforderlich ist.

    Die Programmierbaudrate ist also im Bootloader festgelegt, aber die Kommunikationsbaudrate kann in der Software mithilfe von konfiguriert werden Serial.begin(). Die Baudrate des HC-05 muss jedoch mit der des Arduino übereinstimmen, sodass Sie sowohl für die Programmierung als auch für die Kommunikation dieselbe Baudrate einhalten müssen (standardmäßig 115200).

  3. Am Reset sind zwei Widerstände beteiligt, R3 und R2. Ich glaube, R2 ist nur notwendig, damit 5V Arduinos mit R3 als Spannungsteiler fungieren. R3 sollte jedoch für jede Spannung Arduino enthalten sein. Siehe diesen Atmel-Konstruktionshinweis - "Die Rücksetzleitung verfügt über einen internen Pull-up-Widerstand. Wenn die Umgebung jedoch verrauscht ist, kann dies unzureichend sein und das Zurücksetzen kann daher sporadisch erfolgen ... Dieser Pull-up-Widerstand stellt sicher, dass der Reset nicht zu niedrig wird unbeabsichtigt." R3 sollte 4,7 k oder mehr sein; Die meisten Designs bleiben bei 10k.

  4. Der Kondensator C1 ist erforderlich, da Pin 32 während der gesamten Bluetooth-Verbindung niedrig bleibt. Wenn Sie RST direkt an Pin 32 anschließen, bleibt der Arduino zurückgesetzt, bis die Bluetooth-Verbindung unterbrochen wird, und nichts funktioniert so, als ob Sie die Reset-Taste gedrückt gehalten und niemals losgelassen hätten.

    Wenn C1 an Ort und Stelle ist, entlädt sich Pin 32 kurzzeitig C1, zieht RST nach unten und setzt den Arduino zurück. C1 beginnt sofort mit dem Aufladen über R3 bis zu VCC, wodurch RST wieder auf Hoch gesetzt wird und der Arduino nicht mehr zurückgesetzt wird. Die Werte von R3 und C1 beeinflussen den Zeitpunkt des Zurücksetzens und müssen entsprechend gewählt werden.

  5. Vergiss R1 nicht. Ich kann mich nicht erinnern, warum es hilfreich ist, aber es hat etwas mit dem Arduino / Atmel UART zu tun. Ich habe die Empfehlung gefunden, sie eines Tages in ein Atmel-Diskussionsforum aufzunehmen, und sie hat viele Male einen nicht funktionierenden Schaltkreis für mich gelöst.

Ich hoffe, das hilft!


Vielen Dank, dass Sie sich die Zeit genommen haben, dies zu erklären, obwohl ich nicht verstehe, warum zumindest einige dieser Informationen nicht im ursprünglichen Tutorial enthalten waren. Es gab dort kaum Text :) Sie liegen auch in einigen Punkten falsch und in anderen viel zu vage. Zuallererst ist die Baudrate von 115200 ein Grund, warum es bei mir nicht funktioniert hat. Arduino Pro Micro verwendet eine Baudrate von 57600. Ich brauchte auch keine Widerstände und ich benutzte einen 450 nf Kondensator und wahrscheinlich hätte fast jeder Wert funktioniert. R1 und R3 mögen nützlich sein, aber ich hatte nie Probleme ohne sie.
DominicM

Es gibt auch eine schwerwiegende Einschränkung, die im Lernprogramm nicht erwähnt wurde, da sie beim Koppeln oder Öffnen der seriellen Konsole zurückgesetzt wird. Es gibt eine Möglichkeit, dies zu beheben, und ich werde es freigeben, wenn es ordnungsgemäß funktioniert.
DominicM

1

Beides wird Probleme verursachen.

Es muss zurückgesetzt werden, wenn eine neue Skizze heruntergeladen wird. Sie können es im richtigen Moment manuell zurücksetzen, aber wenn Sie das Timing nicht richtig einstellen, tritt dieses Problem auf.

Die Baudrate, die Sie in Ihrem Code für die serielle Kommunikation festgelegt haben, spielt beim Laden einer neuen Skizze, die im Bootloader festgelegt ist, keine Rolle mehr. Halten Sie es bei 115200, wie im Tutorial vorgeschlagen.


Ok, ich habe die Baudrate geändert, aber jetzt erhalte ich überhaupt keine Ausgabe von der seriellen Konsole. Warum? Ich werde jetzt versuchen, den Stift mit dem Modul zu verlöten.
DominicM

Ich habe den Arduino-Reset-Pin mit Pin 32 des hc-05-Moduls verbunden, kann ihn aber immer noch nicht programmieren. Es scheint auch den ausführenden Code für eine Weile zurückzusetzen oder zu belegen, wenn die serielle Konsole geöffnet wird, aber immer noch keine Ausgabe erfolgt. Ich habe den ersten Pin direkt angeschlossen. Ich bin mir nicht sicher, was ich aus dem Diagramm mit dem Kondensator und den Widerständen für den ersten Pin machen soll. Mein Arduino ist die 3.3V-Version, daher brauche ich keinen Spannungsteiler.
DominicM

1

Haben Sie den TX vom Bluetooth-Modul erhalten, das mit dem RX-Pin des Arduino verbunden ist?

Wenn Sie haben, müssen Sie es beim Hochladen aushaken. Eine bessere Lösung besteht darin, nicht die TX RX-Pins des Arduino zu verwenden und stattdessen serielle Software zu verwenden.

Hier ist eine einfache Anleitung, die sich jedoch über einige Seiten erstreckt:

http://ianlangelectronic.webeden.co.uk/#/arduino-bluetooth/4583456314

Eine Bluetooth-Baudrate von mehr als 9600 wird nicht empfohlen. Der Arduino kämpft darum, mitzuhalten, wenn es viel schneller ist.


Während Ihr Link möglicherweise die Frage beantwortet, ist es vorzuziehen , die wesentlichen Teile des hier verlinkten Links aufzunehmen und den Link zum Zitieren bereitzustellen. Können Sie bitte Ihre Antwort bearbeiten? Vielen Dank!
Anonymer Pinguin

Ich benutze rx / tx, ja. Warum sollte dies genau Probleme verursachen? Ich habe die Baudrate des BT-Moduls auf 57600 geändert und konnte OTA programmieren. Es muss eine spezifische Baudrate sein, da jedes Arduino seine eigene Baudratenanforderung für die Programmierung hat. Ich werde deinen Link später versuchen.
DominicM

Das Tutorial, mit dem Sie verlinkt haben, ermöglicht nur die serielle Kommunikation, nicht jedoch die Programmierung des Arduino über Bluetooth. 9600 Baud ist eine gute Empfehlung für eine sichere Obergrenze bei Verwendung von SoftwareSerial, gilt jedoch nicht bei Verwendung von UART.
Imjosh

1

Die Baudrate hängt vom verwendeten Arduino-Modell ab. Für Pro-Micro; Pro-Mini und Nano, die ich benutze, mussten auf 57600 Baud umgestellt werden, da die DLL (Downlineloader) diese Baudrate erzwingt:

avrdude: Version 5.11, compiled on Sep  2 2011 at 19:38:36
     Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
     Copyright (c) 2007-2009 Joerg Wunsch

     System wide configuration file is "C:\Program Files (x86)\Arduino\hardware/tools/avr/etc/avrdude.conf"

     Using Port                    : \\.\COM40
     Using Programmer              : arduino
     Overriding Baud Rate          : 57600

Für Mega beträgt die übergeordnete Baudrate 115200.


0

Die einfachste Möglichkeit, Ihr Arduino über Bluetooth (HC-05) zu programmieren, sind die folgenden Schritte

1: Ändern Sie die Baudrate des Bluetooth-Moduls mithilfe von Software-Seriel auf 57600. Dies ist alles, was Sie mit Ihrem Bluetooth tun müssen. Wenn Sie die Software-Seriel-Skizze verwenden, benötigen Sie keinen Ftdi-Konverter ( https://www.youtube.com/watch?v=zoJUAjW3vQ0 )

2: Der nächste Schritt besteht darin, eine sehr einfache und kleine Schaltung für den Reset-Pin Ihres Bluetooth-Moduls wie die in diesem Youtube-Link zu erstellen (die Schaltung, von der ich spreche, ist eine Schaltung aus einem NPN-Transistor, einem 0,01-Kondensator und Bei einem 10-k-Widerstand ist die Schaltung wie ein Signalinverter oder so etwas ( https://www.youtube.com/watch?v=xXUKfTNHkKE ). Sie finden die Schaltung in der Mitte des Videos.

Ich habe es getan und es funktioniert,

Danke, dass du Arman gelesen hast

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.