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)

