HC 05 Bluetooth Modul ohne USB Kabel am Arduino Mega betreiben

Moin,
Ich bin im Moment dabei einen Barbot zu bauen, den ich per Bluetooth von meinem Handy aus steuern möchte.
Für die Verbindung wird am Arduino Mega ein HC 05 Bluetooth Modul benutzt.
Angeschlossen ist das Bluetooth Modul an RX1 und TX1 am Arduino Mega.
Solange der Arduino nun mit dem PC verbunden ist, funktioniert das ganze auch wie es soll, allerdings lässt sich das ganze nicht mehr verwenden, sobald ich das USB Kabel vom Arduino abziehe.

Ich hoffe mir kann jemand dabei behilflich sein

Hi

Dann lasse doch das Kabel einfach dran?

Ok, DAS wolltest Du nicht hören - wie sollen wir Dir helfen, wenn Du uns nicht zeigst, was Du hast?
Mega und BT HC-05 - zumindest wurde die Hardware schon Mal grob umrissen.
Wie sieht die Software aus?
Welche Libs hast Du benutzt? (gerne mit Link dahin)

MfG

Ich versteh das Problem nicht so wirklich, außer dass deine Schaltung ohne Energieversorgung nicht läuft. Wenn du Hilfe haben willst, erkläre mal genau wo das Problem liegt und bitte die Hinweise von postmaster-ino berücksichtigen.

So, da ich den ersten Post per Handy geschrieben habe, hatte ich leider den Quellcode nicht zur Hand, von daher ist er hiermit nachgereicht.
Für das Bluetooth Modul habe ich keine extra Bibliothek benutzt.
Arduino ist dieser hier: Funduino Mega R3
Bluetooth Modul ist dieses: HC 05 Bluetooth Modul
Tutorial für das ansteuern des Moduls stammt von hier: Funduino HC 05 Tutorial

Nun zum Problem:
Mein Arduino bekommt seine Spannung per externem 5V Netzteil. Solange das USB Kabel vom PC zum Arduino angeschlossen ist, funktioniert die Steuerung per Bluetooth perfekt. Sobald ich nun aber das USB Kabel abziehe, da der Barbot ja in Zukunft auch ohne Angeklemmten PC funktionieren soll, reagiert das Bluetooth Modul allerdings garnicht mehr auf Kopplungs- sowie Eingabeversuche.

Ich hoffe das diese Informationen jetzt jemandem weiterhelfen können.

Gruß green_lion

/****************************************************************** 
 * Anschlüsse: 
 * Arduino Mega  ->  Bluetooth Module 
 * Pin 18 (Tx1)  ->  Rx
 * Pin 19 (Rx1)  ->  Tx
 * Gnd           ->  GND
 * 3,3V            ->  5V
 * 
 * Pin 13 -> LED+  
 * Gnd    -> LED-
 * Serielle Kommunikation mit PC (Tx0 and Rx0)
 *****************************************************************/
#include <Wire.h> // Wire Bibliothek einbinden
#include <Stepper.h> //Bibliothek für Schrittmotoren laden
const int stepsPerRevolution = 200;
Stepper Schlitten (stepsPerRevolution, 8, 9, 10, 11);
Stepper Dosierer (stepsPerRevolution, 4, 5, 6, 7);

#include <LiquidCrystal_I2C.h> // Vorher hinzugefügte LiquidCrystal_I2C Bibliothek einbinden (Von MaxtechTV)
LiquidCrystal_I2C lcd(0x27, 20, 4); //HEX-Adresse und Zeichen sowie Zeilenanzahl des Displays

//Ports deklarieren:
int enas = 12;
int enbs = 13;
int enad = 2;
int enbd = 3;
int LED = 13;

//Schrittwerte für Getränke angeben:
const int Cola = 4025;
const int Sprite = 3270;
const int Fanta = 2515;
const int Korn = 1760;
const int Whisky = 1005;
const int Mariacron = 250;
const int Ausguss = 628;

void befuellen_25()
{
  digitalWrite(enad,HIGH);
  digitalWrite(enbd,HIGH);
  Dosierer.step(Ausguss);
  digitalWrite(enad,LOW);
  digitalWrite(enbd,LOW);
  delay(1250);
  digitalWrite(enad,HIGH);
  digitalWrite(enbd,HIGH);
  Dosierer.step(-Ausguss);
  digitalWrite(enad,LOW);
  digitalWrite(enbd,LOW);
}

void befuellen_50()
{
  digitalWrite(enad,HIGH);
  digitalWrite(enbd,HIGH);
  Dosierer.step(Ausguss);
  digitalWrite(enad,LOW);
  digitalWrite(enbd,LOW);
  delay(2500);
  digitalWrite(enad,HIGH);
  digitalWrite(enbd,HIGH);
  Dosierer.step(-Ausguss);
  digitalWrite(enad,LOW);
  digitalWrite(enbd,LOW);
}

void befuellen_75()
{
  digitalWrite(enad,HIGH);
  digitalWrite(enbd,HIGH);
  Dosierer.step(Ausguss);
  digitalWrite(enad,LOW);
  digitalWrite(enbd,LOW);
  delay(2500);
  digitalWrite(enad,HIGH);
  digitalWrite(enbd,HIGH);
  Dosierer.step(-Ausguss);
  delay(500);
  Dosierer.step(Ausguss);
  digitalWrite(enad,LOW);
  digitalWrite(enbd,LOW);
  delay(1250);
  digitalWrite(enad,HIGH);
  digitalWrite(enbd,HIGH);
  Dosierer.step(-Ausguss);
  digitalWrite(enad,LOW);
  digitalWrite(enbd,LOW);
}

void befuellen_100()
{
  digitalWrite(enad,HIGH);
  digitalWrite(enbd,HIGH);
  Dosierer.step(Ausguss);
  digitalWrite(enad,LOW);
  digitalWrite(enbd,LOW);
  delay(2500);
  digitalWrite(enad,HIGH);
  digitalWrite(enbd,HIGH);
  Dosierer.step(-Ausguss);
  delay(500);
  Dosierer.step(Ausguss);
  digitalWrite(enad,LOW);
  digitalWrite(enbd,LOW);
  delay(2500);
  digitalWrite(enad,HIGH);
  digitalWrite(enbd,HIGH);
  Dosierer.step(-Ausguss);
  digitalWrite(enad,LOW);
  digitalWrite(enbd,LOW);
}

void setup() {
  //Serial.begin(9600);   //Tx0 and Rx0  //Serielle Schnittstelle für PC Starten
  Serial1.begin(9600);  //Tx1 and Rx1  //Serielle Schnittstelle 1 für Bluetooth starten
  //Serial2;            //Tx2 und Rx2 (Nicht benötigt)
  //Serial3;            //Tx3 und Rx3 (Nicht benötigt)

  lcd.begin(); //Im Setup wird der LCD gestartet 
  lcd.backlight(); //Hintergrundbeleuchtung einschalten (lcd.noBacklight(); schaltet die Beleuchtung aus). 
  
  //Pinarten festlegen:
  pinMode(LED, OUTPUT);
  pinMode(enas,OUTPUT);
  pinMode(enbs,OUTPUT);
  pinMode(enad,OUTPUT);
  pinMode(enbd,OUTPUT);

  //Geschwindigkeiten der Motoren einstellen:
  Schlitten.setSpeed(200);
  Dosierer.setSpeed(200);
  
  Serial1.println("Stellen sie ein Glas mit einem Eiswürfel unter die Maschine!"); //Für Bluetooth
  Serial1.println("Wählen sie ein Getränk aus!");
}

void loop() {
  
  if(Serial1.available ()>0)
  {
    int buffer_value = Serial1.read();
    if(buffer_value == 'a' || buffer_value == 'A') //Cola Korn 60:40
    {
      digitalWrite(LED, HIGH);    //Schalte LED ein
      Serial.println("Cola-Korn wird zubereitet!");  //Arduino Terminal auf PC 
      Serial1.println("Cola-Korn wird zubereitet!"); //Bluetooth Terminal auf Handy
      digitalWrite(enas,HIGH);
      digitalWrite(enbs,HIGH);
      Schlitten.step(Korn);
      digitalWrite(enas,LOW);
      digitalWrite(enbs,LOW);
      delay(100);
      Serial.println("Korn wird eingefüllt!");  //Arduino Terminal auf PC 
      Serial1.println("Korn wird eingefüllt!"); //Bluetooth Terminal auf Handy
      befuellen_75();
      digitalWrite(enas,HIGH);
      digitalWrite(enbs,HIGH);
      Schlitten.step(Cola - Korn);
      digitalWrite(enas,LOW);
      digitalWrite(enbs,LOW);
      delay(100);     
      Serial.println("Cola wird eingefüllt!");  //Arduino Terminal auf PC 
      Serial1.println("Cola wird eingefüllt!"); //Bluetooth Terminal auf Handy
      befuellen_100();
      digitalWrite(enas,HIGH);
      digitalWrite(enbs,HIGH);
      Schlitten.step(- Cola);
      digitalWrite(enas,LOW);
      digitalWrite(enbs,LOW);
      digitalWrite(LED, LOW); //Schalte LED aus
      Serial.println("Ihre Mischung ist Fertig!");  //Arduino Terminal auf PC 
      Serial1.println("Ihre Mischung ist Fertig!"); //Bluetooth Terminal auf Handy
     }
   }
}

Hi,

danke für die Vervollständigung!

Was mir auffällt, wobei ich nicht weiß ob es ein Problem ist, im setup() kommentierst du Serial.begin() aus und im loop() sprichst du es mehrmals mit Serial.println() an. Wenn das nicht das Problem sein sollte, was passiert denn, wenn du den Mega nach dem Abziehen vom PC resetest oder kurz vom Netzteil trennst?

An der von dir angesprochenen Sache liegt es nicht, auf dem Programm welches momentan auf dem Arduino drauf ist, hab ich alle Serial.println schon auskommentiert. Funktioniert leider trotzdem nicht.
Herangehensweise beim Hochladen ist bei mit üblicherweise Programm hochladen per USB Kabel, dann das USB Kabel vom Arduino trennen und erst dann Spannung per Netzteil anschalten. Dadurch müsste dann ja dein Vorschlag hinfällig sein, richtig?

Mess mal bitte was am 3V3 Pin mit USB und mit Netzteil rauskommt. Vielleicht kriegt das Bluetooth-Modul zu wenig Spannung wenn 5V am Modul über den 3V3 Pin versorgt wird?

  • 3,3V -> 5V

green_lion123:
Herangehensweise beim Hochladen ist bei mit üblicherweise Programm hochladen per USB Kabel, dann das USB Kabel vom Arduino trennen und erst dann Spannung per Netzteil anschalten. Dadurch müsste dann ja dein Vorschlag hinfällig sein, richtig?

Ja, ist dann hinfällig.

Hab heute Nachmittag schon getestet das Bluetooth Modul an den 5V Pin des Arduinos anzuschließen... Hat allerdings auch keine Veränderung gebracht... Ich kann morgen aber trotzdem den 3,3V Pin durchmessen

Wo speist Du den Mega mit dem 5V Netzteil ein?

An der runden Buchse für die Stromversorgung, keine Ahnung wie der Fachbegriff dafür lautet.

An der schwarzen Netzteilbuchse sind 5V viel zu wenig.
Da mußt Du mindestens 7V einspeisen.

Du kannst 5V über das 5V pin einspeisen. Da mußt Du aber 2 Dinge beachten:
Nicht verpolen.
Nicht gleichzeitig USB und 5V am 5V Pin.

Grüße Uwe

Also soll ich jetzt 7V auf die Netzteilbuchse geben? Und dann nochmal durchmessen?
Bzw Funktioniert das mit den 5V einspeisen über die 5V Buchse ansonsten genauso wie mit der Netzteilbuchse? Sprich 5V auf den 5V Pin am Arduino und Minus auf den GND Pin am Arduino?
Theoretisch müssten dann aber selbst bei nur 5V über die Netzteilbuchse dann zumindest 3,3V auf dem 5V Port vom Arduino ankommen, so dass das dann hätte klappen müssen als ich das Bluetoth Modul am 5V Pin vom Arduino angeschlossen hatte, oder?

green_lion123:
Sprich 5V auf den 5V Pin am Arduino und Minus auf den GND Pin am Arduino?

Ja, nur nicht gleichzeitig 5 Volt über USB einspeisen. Das ist dann nur eine entweder/oder Geschichte. Entweder 5 Volt auf 5 Volt Pin. rein, oder 5 Volt über den USB rein.

Franz

Gut, dann versuche ich als erstes mal die Einspeisung zu ändern.

Trotzdem hätte ich dazu noch diese Frage:

green_lion123:
Theoretisch müssten dann aber selbst bei nur 5V über die Netzteilbuchse dann zumindest 3,3V auf dem 5V Port vom Arduino ankommen, so dass das dann hätte klappen müssen als ich das Bluetoth Modul am 5V Pin vom Arduino angeschlossen hatte, oder?

Und alles andere klappt ja trotz der 5V über die Netzteilbuchse, heißt beide Schrittmotoren funktionieren.

green_lion123:
Gut, dann versuche ich als erstes mal die Einspeisung zu ändern.

Trotzdem hätte ich dazu noch diese Frage:
Und alles andere klappt ja trotz der 5V über die Netzteilbuchse, heißt beide Schrittmotoren funktionieren.

Wenn du mit "Netzteilbuchse" die 7-12 Volt Input Buchse meinst, Dann weg mit den 5 Volt von dieser Buchse. Die 5 Volt vom Netztteil über den 5 Volt Pin zum Arduino und die 5 Volt vom Netzteil parallel für die Schrittmotoren wenn diese nur 5 Volt brauchen. Sonst keine andere Einspeisung.

Da habe ich mich wohl etwas ungünstig ausgedrückt, die beiden Schrittmotoren sind jeweils an ein 12V Netzteil angeschlossen, der Arduino an ein 5V Netzteil.
Aus deinem letzten Post habe ich jetzt aber verstanden, dass die Eingangsbuchse des Arduino auf bis zu 12V ausgelegt ist, richtig? Dann könnte ich ja den Arduino mit auf das 12V Netzteil legen.

green_lion123:
Da habe ich mich wohl etwas ungünstig ausgedrückt, die beiden Schrittmotoren sind jeweils an ein 12V Netzteil angeschlossen, der Arduino an ein 5V Netzteil.
Aus deinem letzten Post habe ich jetzt aber verstanden, dass die Eingangsbuchse des Arduino auf bis zu 12V ausgelegt ist, richtig? Dann könnte ich ja den Arduino mit auf das 12V Netzteil legen.

Nein!
Diese 7-12 Volt Buchse nur versorgen wenn du den 5 Volt Pin. nicht versorgt hast. Aus den 7-12 Volt werden auf der Arduino Platine5 Volt für den Arduino gemacht und damit dann der 5 Volt Pin. versorgt. Wenn der 5 Volt Pin direkt mit 5 Volt versorgt ist, ist das die beste Anschlussart, weil dann der Spannungsregler auf der Arduinoplatinie nicht belastet wird.
Gib also dem Arduino seine 5 Volt über den 5 Volt Pin, den Motoren ihre 12 Volt und verbinde die GND´s der Netzteile und des Arduino´s miteinander. Also minus 5 Volt minus 12 Volt und GND Arduino verbinden.

Franz

Franz54:
Diese 7-12 Volt Buchse nur versorgen wenn du den 5 Volt Pin. nicht versorgt hast.

Das ist logisch, ich meinte jetzt auch wenn ich keine Spannung auf den 5V Pin gebe.
Dann versuche ich jetzt aber trotzdem erstmal 5V direkt auf den 5V Pin zu geben ohne die Netzteilbuchse mit Strom zu versorgen.

So,
Ich melde mich hier jetzt auch mal wieder :slight_smile:
Das Bluetooth Modul läuft, lag also anscheinend doch an zu wenig Spannung am Arduino :slight_smile: Aus diesem Grund jetzt also erst einmal danke an alle, die mir hier im Forum Tipps gegeben haben, da wäre ich sonst nie im Leben drauf gekommen.

Nun aber zum nächsten Problem:
Ich möchte in der selben Anlage jetzt eine RFID Karte auslesen, um darüber zusätzlich noch hinterlegte Bestellungen abzufahren. Nun habe ich folgenden RFID Sensor mit dem folgenden Programm auf den noch mit den anderen Anschlüssen belegten Arduino geladen um den Sensor mal auszuprobieren:
RFID Tutorial - Funduino (Das dritte Programm)
RFID Kit - Funduino
Hier tritt nun ein ähnliches Problem auf, wie vorher mit dem Bluetooth Modul, solange nur das USB Kabel angeschlossen ist, kann der RFID Chip ausgelesen werden, sobald aber zusätzlich über die runde Spannungsbuchse am Arduino Spannung zugeführt wird, lässt sich der RFID Chip nicht mehr auslesen.

Ich hoffe, ihr könnt mir auch hier helfen :slight_smile:

Gruß Julian

Edit: Falls es für die Fehlerbehebung Hilfreich ist, am Arduino sind unter anderem eine Relaiskarte, ein I2C Display und das HC05 Bluetooth Modul angeschlossen