Arduino Nano stürzt ab ohne Serial Monitor

Gast #3628267
Lesenswert?
• ▲
▼
Hallo,

ich habe ein Problem mit meinem Projekt:

An einem Arduino Nano habe ich den DHT22 Sensor und versende die Werte 
über die RF24Networking lib.

Beides funktioniert an sich, aber ich habe folgendes seltsames 
Verhalten: wenn kein Serial Monitor aus der Arduino GUI an ist, stürzt 
das Programm auf dem Arduino scheinbar ab - ich kann es an einem Zähler 
nachverfolgen, der zurückgesetzt wird.

Ist der Serial Monitor an, funktioniert alles tadellos. Womit könnte das 
zusammenhängen?

Danke
#3628294
Lesenswert?
• ▲
▼
filth schrieb:
> Wäre es dann nicht genau andersrum: mit Serial Monitor instabil und ohne
> stabil? Bei mir ist es ja so, dass ohne Serial Monitor der Sketch
> abstürzt (nach einigen Durchläufen)
Nicht wenn dein Arduino eine Rückmeldung vom Monitor erwartet. Dann wird 
er vielleicht sauer, wenn er sie nicht bekommt und geht mit einem 
Timeout in Reset oder bleibt irgendwo hängen. Kann man das nicht 
abschalten?

mfg.
Gast #3628295
Lesenswert?
• ▲
▼
Vom sketch her erwartet er eigentlich nichts vom Serial:
1
#include <RF24Network.h>
2
#include <RF24.h>
3
#include <SPI.h>
4
#include <dht.h>
5
#include "MyTypes.h"
6
#include <Narcoleptic.h>
7

8
#define DHTPIN 3     // what pin we're connected to
9
#define DHTTYPE DHT22   // DHT 22  (AM2302)
10

11
DHT dht(DHTPIN, DHTTYPE);
12

13
// nRF24L01(+) radio attached 
14
RF24 radio(9,10);
15

16
// Network uses that radio
17
RF24Network network(radio);
18

19
// Address of our node
20
const uint16_t this_node = 1;
21

22
// Address of the other node (by default send it to the base)
23
const uint16_t other_node = 0;
24

25
// How often to send 'hello world to the other unit
26
unsigned long interval = 5000; //ms
27

28
// When did we last send?
29
unsigned long last_sent;
30

31
// How many have we sent already
32
unsigned long packets_sent;
33

34
payload_t myData;
35

36
// Number of packets we've failed to send since we last sent one
37
// successfully
38
uint16_t lost_packets = 0;
39

40
void setup(void)
41
{
42
  Serial.begin(57600);
43
  Serial.println("RF24Network/examples/helloworld_tx/");
44
 
45
  SPI.begin();
46
  radio.begin();
47
  network.begin(/*channel*/ 90, /*node address*/ this_node);
48
  dht.begin();
49
      
50
  RF24NetworkHeader header(network.parent(), 'k');
51
  Serial.print("APP Sending type: k to node:");
52
  Serial.println(header.to_node);
53
  if ( ! network.write(header, NULL, 0) )
54
     Serial.println("failed.");
55
   
56
}
57

58
void loop(void)
59
{
60
  delay(1000);
61
  
62
  // Pump the network regularly
63
  network.update();
64
  
65
   // If so, grab it and print it out
66
  //  RF24NetworkHeader header;
67
  //  network.peek(header);
68
     
69
  
70
  if ( this_node > 0 )
71
  {        
72
    
73
    float h = dht.readHumidity();
74
    float t = dht.readTemperature();
75
    if (isnan(h) || isnan(t)) {
76
      Serial.println("Failed to read from DHT");
77
    } 
78
    else{
79
       myData.value = h;
80
       myData.unity[0] = '%';
81
       myData.lost_packets = lost_packets;
82
        
83
       sendData(&myData);      
84
     
85
       delay(1000);    
86
     
87
       myData.value = t;
88
       myData.unity[0] = 'C';
89
       myData.lost_packets = lost_packets;
90
        
91
       sendData(&myData);   
92
    }  
93

94
    
95
    //radio.powerDown();
96
    
97
    //radio.powerDown();    
98
  
99
  }            
100
}
101

102
boolean sendData(payload_t* data) {
103
  unsigned long now = millis();
104
  if ( now - last_sent >= interval  )
105
  {
106
    Serial.println("Sending...");
107
    last_sent = now;
108
    
109
    boolean ok = false;
110
  
111
    RF24NetworkHeader header(other_node, 'S');
112
    ok = network.write(header, &myData, sizeof(myData));
113
    if (!ok) {
114
      ++lost_packets;
115
      Serial.println("failed.");      
116
    }
117
  
118
    return ok;
119
  }
120
  
121
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.