Hallo zusammen, ich bin relativ neu in der Arduino-Welt und verzweifele momentan an einem Problem.
Meine Schaltung besteht aus einem Arduino Nano, einem RTC Modul, einer Wägezelle mit HX711, GSM Modul, Relais und DC-DC Wandler. Mit der Schaltung wird zwei mal am Tag das Gewicht über die Wägezelle gemessen und dann zu einer eingestellten Uhrzeit eine SMS mit der Gewichtsdifferenz über das GSM Modul an mein Handy geschickt.
Schaltung und Programm funktionieren auch soweit problemlos, bis zu dem Punkt, wo ich die USB-Verbindung zwischen meinem Arduino und dem Computer trenne. Dann wird der Nano über Vin und GND Pin mit Strom versorgt (über ein Netzteil mit 12V). Sobald ich das Netzteil anschalte blinkt die "RX_LED" auf dem Nano in einer sehr hohen Frequenz und das Relais schaltet in einer ähnlichen Geschwindigkeit und die Schaltung hat keine Funktion mehr. Die Jumper Pins auf dem Arduino werden sehr heiß. Sobald ich den Arduino wieder über Kabel mit dem Computer verbinde funktioniert die Schaltung wieder einwandfrei.
Wenn mir jemand weiterhelfen könnte oder eine Idee hat woran der Fehler liegen könnte wäre ich sehr dankbar!
#include <SoftwareSerial.h>
#include "HX711.h"
#include "RTClib.h"
SoftwareSerial sim(11, 10);
int _timeout;
String _buffer;
String number = "+"Nummer""; // Zielnummer hier eingeben
const int LOADCELL_DOUT_PIN = 5; //Waage Pin
const int LOADCELL_SCK_PIN = 4; //Waage Pin
long reading; //Waage
long funfzehn; //Gewicht 15 Uhr
long sechzehn; //Gewicht 16 Uhr
long Diff1; //Differenz 15 / 16 Uhr
HX711 scale; //Waage
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup() {
pinMode(12, OUTPUT);
digitalWrite(12, HIGH);
Serial.begin(57600);
sim.begin(57600);
_buffer.reserve(50);
Serial.println("System startet . . .");
delay(1000);
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN); //Pins Waage
//Serial.println("Gebe s ein um eine SMS zu senden!");
// Jetzt folgt Uhr Code
#ifndef ESP8266
while (!Serial); // wait for serial port to connect. Needed for native USB
#endif
digitalWrite(12, LOW);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
while (1) delay(10);
}
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running, let's set the time!");
// When time needs to be set on a new device, or after a power loss, the
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
//digitalWrite(12, LOW);
}
}
void loop() {
//Jetzt folgt der Uhr Code
digitalWrite(12, LOW);
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.println();
delay(10000);
//Ende Uhr Code
if (now.hour() == 14 & now.minute() == 54)
{
reading = ((scale.read()*0.01)-3633)/11.3;
Serial.print("HX711 reading: ");
Serial.println(reading);
funfzehn = reading;
delay(60000);
}
if (now.hour() == 14 & now.minute() == 55)
{
reading = ((scale.read()*0.01)-3633)/11.3;
Serial.print("HX711 reading: ");
Serial.println(reading);
sechzehn = reading;
delay(60000);
}
if (now.hour() == 14 & now.minute() == 56)
{
digitalWrite(12, HIGH);
Diff1 = sechzehn - funfzehn;
if (scale.is_ready()) {
reading = ((scale.read()*0.01)-3633)/11.3;
Serial.print("HX711 reading: ");
Serial.println(reading);
Serial.print("Gewicht um 15 Uhr:");
Serial.println(funfzehn);
Serial.print("Gewicht um 16 Uhr:");
Serial.println(sechzehn);
Serial.print("Gewichtsdifferenz zwischen 12 und 17 Uhr:");
Serial.println(Diff1);
SendMessage();
delay(10000);
}
else
{
Serial.println("HX711 not found.");
}
/*if (Serial.available() > 0)
switch (Serial.read())
{
case 's':
if (scale.is_ready()) {
reading = ((scale.read()*0.01)-3633)/11.3;
Serial.print("HX711 reading: ");
Serial.println(reading);
SendMessage();
}
else {
Serial.println("HX711 not found.");
}
*/
// SendMessage();
//break;
}
if (sim.available() > 0)
delay(5000);
Serial.write(sim.read());
}
void SendMessage()
{
delay(30000); //zeit bis gsm im netz
Serial.println ("Sending Message");
sim.println("AT+CMGF=1"); //GSM Modul in Textmode
delay(200);
//Serial.println ("Set SMS Number");
sim.println("AT+CMGS=\"" + number + "\"\r"); //Ziel Nummer für SMS
delay(200);
String SMS = "Die BOX hat folgende Gewichtsdifferenz zwischen 12 und 17 Uhr festgestellt: " + String(Diff1,DEC) + " Gramm.";
sim.println(SMS);
delay(100);
sim.println((char)26);// ASCII code für CTRL+Z
delay(200);
_buffer = _readSerial();
}
String _readSerial() {
_timeout = 0;
while (!sim.available() && _timeout < 12000 )
{
delay(13);
_timeout++;
}
if (sim.available()) {
return sim.readString();
}
//digitalWrite(12, LOW);
}
