Arduino Nano funktioniert nicht ohne Verbindung zum Computer

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);
}  

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Hallo und willkommen.
Sobald etwas auf dem Board heiß wird, kann es bedeuten, daß da zuviel Strom fließt. Vermutlich wird der Onboard Spannungsregler überlastet.
Der Regler muß ja auch die zusätzlichen Boards versorgen. Das ist zu viel.

Nimm statt der 12 Volt lieber ein 9Volt oder besser ein 7Volt Netzteil.
Das sollte dann klappen.

Besteht der Fehler weiterhin, wenn du diese 3 Zeilen auskomentierst?

Es wird auf eine Serielle Verbindung gewartet, die ja ohne den USB Anschluss nicht mehr besteht.

Bei einem Arduino Nano ist bool(Serial) immer true!

Was für GSM Modul ist das?
Wen das Modul bekommt Strom will sich erstmal in Netz einbuchen, und je nach Provider kann das bis 4 oder mehr Sek dauern, in der Zeit, je nach Entfernung zu Sendemast darf das Modul mit 2Wat senden das sind bei 5V 0,4A.
Dazu kommt noch wen dein Nano ist ein nachbau Model passiert das der Regler Schaft das nicht , er schaltet ab und an. dazu kommt was schon @HotSystems schreibt die Eingangsspannung ist zu hoch für den, die soll mit 1,5V mehr als die geregelte Spannung sein also 6,5V bei voller Belastung.
Ja in der Beschreibung steht bis 12V, nur dann darf nix angeschossen werden

Einer von meinen Nanos ist so einer :neutral_face: bei dem tue ich 5V vom USB Netzteil direkt auf +5V und GND, hat den Nachteil das bei Verbindung mit PC muss man das abklemmen, sonst kann die Passieren das der PC sich verabschiedet mit Bluescreen oder der COM Port im bestem Falle abschaltet.

Zeige mal eine Schaltplan. Was macht der DC DC Wandler?

Sollte aber problemlos gehen. Dazu gibt es Dioden

Was ist das? Kenne nicht.
Für die genaue Beschreibung brauch man keine Zeichnung

Das nennt sich Tippfehler

Wenn die Diode da ist und nicht 0R Widerstand :wink:
Habe auch schon erlebt, deshalb besser vorsichtig sein, und kein Fremden PC auf Gewiesen , dazu die Maßnahme kostet nix und ist schnell erledigt wen wie der TO mit Jumperkabel arbeitet

OK dachte das soll AC sein, was mich noch mehr gewundert hätte :wink:

Und selbstverständlich benötigt dein GSM-Board (welches, bitte Link posten) eine eigene Spannungsversorgung. Nicht über den Nano !

Edit:
Warum wird nicht mehr richtig zum vorherigen Beitrag verlinkt, obwohl auf "Antworten" geklickt wurde ?

Das wundert und irritiert mich auch, und den Drüber vermutlich auch.

Stimmt genau.....ach heute ist ja Sonntag, daher. :wink:

Nu ist mir auch klar, warum der TO sich nicht meldet.
@alf318 bekommt das nicht mit....oder ist er wieder weg. :wink:

Ist schon einige Tage so.
Normale weise sollte bei dem eine Email eintrudeln

Dazu muss man die abholen und auch lesen. :wink:

Danke erstmal an alle für die Tipps :smiley: !

Ich habe @Plumps Vorschlag ausprobiert, der Fehler besteht allerdings weiterhin. Bei dem Versuch ist mir der Nano leider endgültig durchgebrannt und funktioniert nicht mehr, ich werde mir einen neuen bestellen.

@HotSystems Danke, das klingt sinnvoll und erklärt warum das Board heiß wird aber daraus erschließt sich mir noch nicht wieso das Relais so schnell schaltet und die "RX_LED" so schnell blinkt.

Werner(man kann wohl nur 2 Nutzer hier markieren): Das 12V Netzteil versorgt den Arduino direkt, parallel zum Arduino ist der DC-DC-Wandler geschaltet, dieser versorgt das GSM-Modul. Ohne den Wandler ist das GSM Modul beim SMS Versand ausgegangen, da der Strom vom Netzteil nicht ausreichend hoch war (DC-DC verfügt über Kondensatoren die die 2A für den SMS Versand liefern können). Der Arduino selbst versorgt nur den HX711 und das Relais mit Strom. (Das Relais ist dazu da, dass das GSM Modul nur einmal am Tag eingeschaltet wird, wenn die SMS versendet werden soll, um Strom zu sparen bei Akku betrieb).
Einen Schaltplan habe ich nicht erstellt.

Ich werde wenn der neue Arduino da ist ein kleineres Netzteil ausprobieren, auch wenn ich bezweifle, dass der Fehler dadurch behoben ist. Was mich so wundert ist, dass die Schaltung perfekt funktioniert hat wenn ich sie am Computer angeschlossen hatte aber nicht mehr, sobald ich die Verbindung trenne. Oder gibt es irgendeine Einstellung die man machen muss um den Arduino "autark" zu betreiben?

PS: Bei dem GSM-Modul handelt es sich um: https://www.amazon.de/Antenne-SIM800L-Ersatz-SIM900A-Netzwerk-Transceiver/dp/B0C9DZPSFM?source=ps-sl-shoppingads-lpcontext&ref_=fplfs&psc=1&smid=A119AWRA5YL9T1

Da gehört aber nicht viel Fantasie dazu.
Weil der Spannungsregler zu macht, also kurz weniger oder keine Spannung liefert. Damit resettet der Nano.

Den Grund habe ich dir geschrieben.

Könnte auch an einer fehlenden GND-Verbindung liegen.