Bluetooth Verbindung bricht ab

Hallo Zusammen,
ich bin an meinem ersten Arduino Projekt und bin auf eines für mich unlösbares Problem mit der Bluetooth-Anbindung gestossen.
Kurbeschrieb Projekt:
Ich möchte eine Lampe über einen Arduino mittels Funk steuern. Sie soll bei Sonnenuntergang einschalten und danach zu einer gewissen Uhrzeit wieder ausschalten. Es sind drei Modus vorhanden: Manuell (Ein und Aus), Schaltung gemäss Uhrzeit, Schaltung gemäss Helligkeit. Der Wechsel der Modi und die manuelle Steuerung soll mittels Bluetooth Verbindung und einem Smartphone App bewerkstelligt werden.
Nun zu meinem Problem:
Die Verbindung zu meinem Smartphone und dem App mittels einem HC-05 Modul bricht mir immer wieder ab. Ich kann den Arduino mit dem Smartphone verbinden. Das Modul schaltet vom stetigen blinken auf den Empfang. Ich kann dann auch die Lampe manuell Schalten (Ein/Aus). Ich sehe im SerialMonitor die Empfangenen Zahlen für die Steuerung. Nach ca. 30 sek ist dann jedoch Schluss. Es werden keine weiteren Daten empfangen. Das Bluetooth Modul blinkt weiterhin normal, als würde es verbunden sein, es kommen aber keine weiteren Daten beim Arduino an (gemäss Serial Monitor).
Wenn ich das Bluetooth-Modul vom Strom trenne und wieder einschalte, lässt es sich wieder verbinden und die Verbindung steht wieder!?
Ein Austausch des Moduls hat keinen Erfolg gebracht – liegt also nicht am Bluetooth Modul.
Weiss jemand wo der Fehler liegen könnte, oder hat einen Workaround?

Anbei noch mein Sketch und der Aufbau.
Vielen Dank schonmal für euere Hilfe!

#include <virtuabotixRTC.h> 
#include <Dusk2Dawn.h>
#include <RCSwitch.h>

RCSwitch sender = RCSwitch();

virtuabotixRTC myRTC(6, 7, 8);

char Incoming_value = 0;

const int sensorPin = A1;
int value = 0;
int sensorPinValue = 0;

void setup()
{
    Serial.begin(9600);
    sender.enableTransmit(3);
    sender.setProtocol(1);
    sender.setPulseLength(417);


}
void loop()
{
    if (Serial.available() > 0) 
    {
        Incoming_value = Serial.read();
        if (Incoming_value == '1') 
        {
            sender.send("000101010001010101010101"); 
        }
        else if (Incoming_value == '0') 
        {
            sender.send("000101010001010101010100");
        }
        else if (Incoming_value == '2') 
        {
            myRTC.updateTime();
            Dusk2Dawn oberwil(47.512152, 7.559374, 2);
            int laSunset = oberwil.sunset(myRTC.year, myRTC.month, myRTC.dayofmonth, false);            
            char time[6];
            int rtc_time = myRTC.hours * 60 + myRTC.minutes;
            if (rtc_time == laSunset)
                sender.send("000101010001010101010101");
            else if (rtc_time == 1380) 
                sender.send("000101010001010101010100");
            delay(1000);
        }
        else if (Incoming_value == '3')
        {
            myRTC.updateTime();
            int rtc_time = myRTC.hours * 60 + myRTC.minutes;

            sensorPinValue = analogRead(sensorPin);

            if (sensorPinValue < 400 && sensorPinValue > 380 && rtc_time > 720 && rtc_time < 1380)
                sender.send("000101010001010101010101");
            else if (rtc_time == 1380)
                sender.send("000101010001010101010100");

            delay(1000);
        }
    }

}

Programmcode.txt (1.82 KB)

Ich vermute mal, der Strom deiner 3,3V-Versorgung reicht für das BT-Modul nicht aus.
Dann solltest du auf eine extra 3,3V-Versorgung mittels Stepdown-Regler umsteigen.

Hallo Dieter,
danke für deine schnelle Antwort!
Ich habe meinen Arduino an einen 12V / 1.5 A Adapter angeschlossen. Ist da wirklich zu wenig Power da? Ich kann das Bluetooth Modul auch an den 5V Strom des Arduino anschliessen und er verhält sich gleich wie beim 3.3V -> 30 sek funktioniert es, danach ist Schluss :frowning:
Mir kommt es vor, wie wenn ein Buffer gefüllt wird, oder das Modul sich aufhängt.

Das hat nichts mit der Netzteil-Power zu tun.

Der 3Volt-Pin liefert dir nur einige mA.
Das wiederum hängt vom USB-Adapter-IC ab.

Und 5Volt ist kein Strom, sondern Spannung.

Leider muss ich jetzt passen, da ich selbst nicht mit BT arbeite.

lu-ke:
Die Verbindung zu meinem Smartphone und dem App mittels einem HC-05 Modul bricht mir immer wieder ab. Ich kann den Arduino mit dem Smartphone verbinden. Das Modul schaltet vom stetigen blinken auf den Empfang. Ich kann dann auch die Lampe manuell Schalten (Ein/Aus). Ich sehe im SerialMonitor die Empfangenen Zahlen für die Steuerung. Nach ca. 30 sek ist dann jedoch Schluss. Es werden keine weiteren Daten empfangen. Das Bluetooth Modul blinkt weiterhin normal, als würde es verbunden sein, es kommen aber keine weiteren Daten beim Arduino an (gemäss Serial Monitor).
Wenn ich das Bluetooth-Modul vom Strom trenne und wieder einschalte, lässt es sich wieder verbinden und die Verbindung steht wieder!?

Anbei noch mein Sketch und der Aufbau.

Bitte ändere Deinen Ausgangspost.
Mit der rechten Maustatse mal auf den Link zu Deinem fritzing und kopiere den.
Dann unten rechts auf "modify" und am Ende Deines Posts postierst Du den Cursor und klickst oben auf "insert image"
Hab ich jetzt hier mal gemacht:

Dann den Code bitte in Codetags in den Post einfügen.
Geht mit dem </> Zeichen.
Grund ist, das viele User hier (auch) mit mobilen Geräten lesen oder Text-Anhänge nicht angezeigt bekommen und erst runterladen müssen.

Zu Deinem Bild:
Es sind nur blaue Linien. Da sieht kein Mensch ohne mehrfaches nachverfolgen, welche Leitungen da was machen.
Wenn Du kannst, ändere die Farben. blau/rot wäre gut für die Versorgung, und jeder Pin eine andere Farbe, damit man schnell sieht, was da wohin geht.

Zu Deinem Sketch: Mich würde nicht wundern, wenn Dir der SerialMonitor in Deine Kommunikation mit dem BT-Modul reinpatscht.
Was passiert, wenn Du nur mit Netzteil ohne USB-Kabel dern Arduino versorgst?

Hi,

Die Pins 0 und 1 sind bereits für die Kommunikation via USB vorbelegt.
Entweder auf Serial Monitor verzichten, dann geht Dein BT-Modul vermutlich, oder via Softwareserial eine 2. serielle Schnittstelle benutzen.

Gruß André

Hallo Zusammen,
danke für eure Tipps.
Leider weiss ich nicht genau was ihr unter "Serial Monitor verzichten versteht" - ich habe mal die beiden Zeilen aus meinem Code gelöscht:

Serial.print(Incoming_value);
Serial.print("\n");

Leider hat dies keine Verbesserung gebracht - nach ca. 30 sek und ein paar Schaltungen (an/aus) ist Schluss. Dies ist beim Betreiben über USB und Netzteil so.

Oder muss ich die Pins für den Bluetooth Empfang wechseln? Ich stecke das Bluetooth Modul immer erst nach dem Laden des Programms ein - so dass es nicht mit dem USB Transfer in die Quere kommt. Wie würde man den Empfang der Bluetooth Signale von anderen Pins in das Programm integrieren? Muss ich da die Daten hier anpassen:
Serial.available() > 0)
Incoming_value = Serial.read();

Danke und Gruss Lukas