INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino Datenlogger für Imker und Bienenhalter
29.08.2016, 22:18 (Dieser Beitrag wurde zuletzt bearbeitet: 29.08.2016 22:18 von hotsystems.)
Beitrag #9
RE: Arduino Datenlogger für Imker und Bienenhalter
(29.08.2016 21:48)leovz schrieb:  Danke für die Hilfe,
Hallo,

Du solltest schon beischreiben, welches Programm du kompilieren möchtest und welche Hardware (Arduino und Module) du verwendest.

Dann ist eine komplette Fehlermeldung nötig.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.08.2016, 22:34
Beitrag #10
RE: Arduino Datenlogger für Imker und Bienenhalter
Dank fur deine antwort,

Alle unterteile sind "up to date"

Da's board ist ein Arduino Nano.

Die Fehlermeldung:

Code:
Arduino: 1.6.11 (Windows 10), Board:"Arduino Nano, ATmega328"

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp: In member function 'void RobotMotorBoard::begin()':

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:14:2: error: 'Serial1' was not declared in this scope

  Serial1.begin(9600);

  ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:19:21: error: 'MUXA' was not declared in this scope

  uint8_t MuxPins[]={MUXA,MUXB,MUXC};

                     ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:19:26: error: 'MUXB' was not declared in this scope

  uint8_t MuxPins[]={MUXA,MUXB,MUXC};

                          ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:19:31: error: 'MUXC' was not declared in this scope

  uint8_t MuxPins[]={MUXA,MUXB,MUXC};

                               ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:20:26: error: 'MUX_IN' was not declared in this scope

  this->IRs.begin(MuxPins,MUX_IN,3);

                          ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:21:10: error: 'MUXI' was not declared in this scope

  pinMode(MUXI,INPUT);

          ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp: In member function 'uint8_t RobotMotorBoard::parseCodename(uint8_t)':

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:118:11: error: 'TK1' was not declared in this scope

    return TK1;

           ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:120:11: error: 'TK2' was not declared in this scope

    return TK2;

           ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:122:11: error: 'TK3' was not declared in this scope

    return TK3;

           ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:124:11: error: 'TK4' was not declared in this scope

    return TK4;

           ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp: In member function 'uint8_t RobotMotorBoard::codenameToAPin(uint8_t)':

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:136:11: error: 'A11' was not declared in this scope

    return A11;

           ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp: In member function 'void RobotMotorBoard::motorsWrite(int, int)':

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:174:15: error: 'IN_A1' was not declared in this scope

   analogWrite(IN_A1,speedR);

               ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:175:15: error: 'IN_A2' was not declared in this scope

   analogWrite(IN_A2,0);

               ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:177:15: error: 'IN_A1' was not declared in this scope

   analogWrite(IN_A1,0);

               ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:178:15: error: 'IN_A2' was not declared in this scope

   analogWrite(IN_A2,-speedR);

               ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:182:15: error: 'IN_B1' was not declared in this scope

   analogWrite(IN_B1,speedL);

               ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:183:15: error: 'IN_B2' was not declared in this scope

   analogWrite(IN_B2,0);

               ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:185:15: error: 'IN_B1' was not declared in this scope

   analogWrite(IN_B1,0);

               ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:186:15: error: 'IN_B2' was not declared in this scope

   analogWrite(IN_B2,-speedL);

               ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp: In member function 'virtual void RobotMotorBoard::motorsStop()':

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:194:14: error: 'IN_A1' was not declared in this scope

  analogWrite(IN_A1,255);

              ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:195:14: error: 'IN_A2' was not declared in this scope

  analogWrite(IN_A2,255);

              ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:197:14: error: 'IN_B1' was not declared in this scope

  analogWrite(IN_B1,255);

              ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:198:14: error: 'IN_B2' was not declared in this scope

  analogWrite(IN_B2,255);

              ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp: In member function 'void RobotMotorBoard::_readTrim()':

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:253:23: error: 'TRIM' was not declared in this scope

  int value=analogRead(TRIM);

                       ^

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp: In member function 'void RobotMotorBoard::_refreshMotorAdjustment()':

C:\Program Files (x86)\Arduino\libraries\Robot_Motor\src\ArduinoRobotMotorBoard.cpp:260:33: error: 'TRIM' was not declared in this scope

  motorAdjustment=map(analogRead(TRIM),0,1023,-30,30)/100.0;

                                 ^

exit status 1
Fout bij het compileren van board Arduino Nano

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

dass Program:

Code:
#include <ArduinoRobotMotorBoard.h>
#include <EasyTransfer2.h>
#include <LineFollow.h>
#include <Multiplexer.h>

/*
* (C) 2015 Thorsten Gurzan - beelogger.de
*
*  This program is free software: you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation, either version 3 of the License, or
*  (at your option) any later version.
*
*  This program is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

// beelogger.de - DIY Datenlogger für Imker und Bienenfreunde
// Erläuterungen dieses Programmcodes unter http://beelogger.de
// Version 1.0

#include <SPI.h>

//----------------------------------------------------------------
// Allgemeine Konfiguration
//----------------------------------------------------------------
uint32_t SpeicherIntervall = 300; // Speicherintervall / Upload zum Webserver in Sekunden

byte Anzahl_Sensoren_DS18B20 = 0; // Mögliche Werte: '0','1','2'

byte Anzahl_Sensoren_DHT = 0; // Mögliche Werte: '0','1','2'

byte Anzahl_Sensoren_Licht = 0; // Mögliche Werte: '0','1'

byte Anzahl_Sensoren_Gewicht = 1; // Mögliche Werte: '0','1'

byte Anzahl_Sensoren_Bienenzaehler = 0; // Mögliche Werte: '0','1','2','3','4'

byte DHT_Typ = 2; // Mögliche Werte: '1' = DHT21, '2' = DHT22

long Taragewicht = 1-104104;  // Hier ist der Wert aus der Kalibrierung einzutragen
float Skalierung = 3.00;  // Hier ist der Wert aus der Kalibrierung einzutragen

float Kalibriertemperatur = 21;       // Temperatur zum Zeitpunkt der Kalibrierung
float KorrekturwertGrammproGrad = 0; // Korrekturwert zur Temperaturkompensation - '0' für Deaktivierung
//----------------------------------------------------------------


//----------------------------------------------------------------
// Konfiguration Ethernet - Internet
//----------------------------------------------------------------
#include <Ethernet.h>

// Hier muss eine eigene IP-Adresse, Gateway und DNS eingetragen werden,
// wenn die Netzwerkkonfiguration nicht über DHCP bezogen wird
// Sofern nicht mehrere Ethernet-Apdater gleichzeitig verwendet werden,
// braucht die MAC-Adresse nicht geändert werden
// Bitte darauf achten, dass die Adressen im Netzwerk nicht doppelt vergeben sind
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,178,170);
IPAddress gateway(192,168,178,1);
IPAddress dnServer(192,168,178,1);

// IP-Adresse statt Domainname zum Webserver mit beelogger-Skript
// Bei verwendung der IP-adresse ist "static char serverName[]" stattdessen auszukommentieren
// IPAddress server(192,168,0,50);

// Domainname statt IP-Adresse zum Webserver mit beelogger-Skript
static char serverName[] = "www.vanzantvoort.nl";

// Verzeichnis in dem die Webserver-Skripte für den jeweiligen beelogger liegen (mit nachgestelltem "/")
// z.B. const char* pfad[1][1]={"beelogger1/"};
const char* pfad[1][1]={"beelogger/beelogger1/"};

// Passwort vom Webserver-Skript
static char Passwort[] = "!meinPasswort!";

EthernetClient client;
//----------------------------------------------------------------


//----------------------------------------------------------------
// Konfiguration DS18B20 - Temperatur
//----------------------------------------------------------------
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 3
#define Sensor_Aufloesung 12
DeviceAddress Sensor_Adressen;

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
//----------------------------------------------------------------


//----------------------------------------------------------------
// Konfiguration DHT21 / DHT22 - Temperatur und Luftfeuchte
//----------------------------------------------------------------
#include <dht.h>
dht DHT;

byte DHT_Sensor_Pin[2] = {5,6};
//----------------------------------------------------------------


//----------------------------------------------------------------
// Konfiguration Beleuchtungsstärke
//----------------------------------------------------------------
#include <Wire.h>
#include <AS_BH1750.h>

AS_BH1750 sensor;
//----------------------------------------------------------------


//----------------------------------------------------------------
// Konfiguration Gewicht
//----------------------------------------------------------------
#include <HX711.h>                        
HX711 scale(A1, A0);
//----------------------------------------------------------------


//----------------------------------------------------------------
//Konfiguration Bienenzähler
//----------------------------------------------------------------

//----------------------------------------------------------------


//----------------------------------------------------------------
// Variablen
//----------------------------------------------------------------
float TempIn = 999.99;
float TempOut = 999.99;
float FeuchteIn = 999.99;
float FeuchteOut = 999.99;
float Licht = -1;
long Gewicht = 999999;
long LetztesGewicht = 0;
long BienenIn = -1;
long BienenOut = -1;

long Check = 0;

float Temperatur[2] = {999.99,999.99};
float Luftfeuchte[2] = {999.99,999.99};

uint32_t LetztesIntervall = 0;
uint32_t LogDelayZeit;
//----------------------------------------------------------------



void setup() {

//----------------------------------------------------------------
// Setup Ethernet - Internet
//----------------------------------------------------------------
pinMode(4,OUTPUT);  // Pin 4 wird fuer die Aktivierung bzw. Deaktivierung der SD-karte genutzt,
digitalWrite(4,HIGH);  // falls ein entsprechendesStandard-Shield verwendet wird

Ethernet.begin(mac); // Für Verwendung der Konfiguration über DHCP

// Ethernet.begin(mac, ip, dnServer, gateway);  // Für Verwendung der Werte der allgemeinen Konfiguration    
    
delay(1000);
//----------------------------------------------------------------


//----------------------------------------------------------------
// Setup DS18B20 - Temperatur
//----------------------------------------------------------------  
if ((Anzahl_Sensoren_DS18B20 > 0) and (Anzahl_Sensoren_DS18B20 < 3)) {
  sensors.begin();

  for(byte i=0 ;i < sensors.getDeviceCount(); i++) {
    if(sensors.getAddress(Sensor_Adressen, i)) {
      sensors.setResolution(Sensor_Adressen, Sensor_Aufloesung);
    }
  }
}
//----------------------------------------------------------------


//----------------------------------------------------------------
// Setup DHT21 / DHT22 - Temperatur und Luftfeuchte
//----------------------------------------------------------------

//----------------------------------------------------------------


//----------------------------------------------------------------
// Setup Beleuchtungsstärke
//----------------------------------------------------------------
if (Anzahl_Sensoren_Licht == 1) {
  sensor.begin();
}
//----------------------------------------------------------------


//----------------------------------------------------------------
// Setup Gewicht
//----------------------------------------------------------------
if (Anzahl_Sensoren_Gewicht == 1) {
  scale.set_offset(Taragewicht);  
  scale.set_scale(Skalierung);
}
//----------------------------------------------------------------


//----------------------------------------------------------------
// Setup Bienenzähler
//----------------------------------------------------------------

//----------------------------------------------------------------
  
}


void loop() {
  Sensor_Bienen();
  if ((millis() - LetztesIntervall) >= (SpeicherIntervall*1000)) {
    Sensor_DS18B20();
    Sensor_Bienen();
    Sensor_DHT();
    Sensor_Bienen();
    Sensor_Licht();
    Sensor_Bienen();
    Sensor_Gewicht();
    Sensor_Bienen();
    Speicher_Internet();  
    LetztesIntervall = millis();
  }
}


//----------------------------------------------------------------
// Funktion Ethernet - Internet
//----------------------------------------------------------------
void Speicher_Internet() {
  Check = round(TempIn+TempOut+FeuchteIn+FeuchteOut+Licht+Gewicht+BienenIn+BienenOut);
  
  for (byte i = 0; i < 5; i++) { // Anzahl der Wiederholungen bei Verbindungsproblemen
                                 // oder korrupten Daten, die vom Webserver empfangen werden
  
    if (client.connect(serverName, 80)){
      
      client.print("GET /");
      client.print(pfad[0][0]);                    
      client.print("beelogger_log.php?TempIn=");
      client.print (TempIn);
      
      client.print ("&TempOut=");
      client.print (TempOut);
      
      client.print ("&FeuchteIn=");
      client.print (FeuchteIn);  
      
      client.print ("&FeuchteOut=");
      client.print (FeuchteOut);  
  
      client.print ("&Licht=");
      client.print (Licht);
      
      client.print ("&Gewicht=");
      client.print (Gewicht);
      
      client.print ("&BienenIn=");
      client.print (BienenIn);  
      
      client.print ("&BienenOut=");
      client.print (BienenOut);
      
      client.print ("&Check=");
      client.print (Check);
      
      client.print ("&Passwort=");
      client.print (Passwort);
        
      client.println (" HTTP/1.1");
      client.print("Host:");
      client.println(serverName);
      client.println("Connection: close");
      client.println();  
      
      LogDelay(1000);    
    }
  
    unsigned long start = millis();
    char  c;
    while ((millis() - start < 2000) and (client.connected() )) {
      c = client.read();  
      if (c=='*') {
        i=10;
      }
    }
    Sensor_Bienen();
          
    client.stop();      
    client.flush();

    LogDelay(1000);    
  }
  if (Anzahl_Sensoren_Bienenzaehler != 0) {
    BienenIn = 0;
    BienenOut = 0;
  }
}
//----------------------------------------------------------------


//----------------------------------------------------------------
// Funktion DS18B20 - Temperatur
//----------------------------------------------------------------
void Sensor_DS18B20() {
  if ((Anzahl_Sensoren_DS18B20 > 0) and (Anzahl_Sensoren_DS18B20 < 3)) {
    sensors.requestTemperatures();
  
    for(byte i=0 ;i < Anzahl_Sensoren_DS18B20; i++) {
      if (i < sensors.getDeviceCount()) {
        for(byte j=0 ;j < 3; j++) {
          if (j > 0 ) Sensor_Bienen();
          Temperatur[i] = sensors.getTempCByIndex(i);
          if ((Temperatur[i] < 60) and (Temperatur[i] > -40)) j=10; // Werte für Fehlererkennung
          else {
            Temperatur[i] = 999.99;
            LogDelay(1000);
          }
        }
      }
    }  
    TempIn = Temperatur[0];                                     // Hier kann die Zuordnung der Sensoren geändert werden
    if (Anzahl_Sensoren_DS18B20 == 2) TempOut = Temperatur[1];  // Hier kann die Zuordnung der Sensoren geändert werden
  }
}
//----------------------------------------------------------------


//----------------------------------------------------------------
// Funktion DHT21 / DHT22 - Temperatur und Luftfeuchte
//----------------------------------------------------------------
void Sensor_DHT() {
  if ((Anzahl_Sensoren_DHT > 0) and (Anzahl_Sensoren_DHT < 3)) {
    for(byte i=0 ;i < Anzahl_Sensoren_DHT; i++) {
      int check;
      
      for(byte j=0 ;j < 3; j++) {
        if (j > 0) LogDelay(2000);
        
        if (DHT_Typ == 1) check = DHT.read21(DHT_Sensor_Pin[i]);
        else check = DHT.read22(DHT_Sensor_Pin[i]);
        
        Temperatur[i] = 999.99;
        Luftfeuchte[i] = 999.99;
        
        switch (check) {
          case DHTLIB_OK:
            Luftfeuchte[i] = DHT.humidity;
            Temperatur[i] = DHT.temperature;
            j=10;
          break;
        }  
      }
      TempOut = Temperatur[0];         // Hier kann die Zuordnung der Sensoren geändert werden
      FeuchteOut = Luftfeuchte[0];     // Hier kann die Zuordnung der Sensoren geändert werden
      if (Anzahl_Sensoren_DHT == 2) {
        TempIn = Temperatur[1];        // Hier kann die Zuordnung der Sensoren geändert werden
        FeuchteIn = Luftfeuchte[1];    // Hier kann die Zuordnung der Sensoren geändert werden
      }
    }
  }
}  
//----------------------------------------------------------------


//----------------------------------------------------------------
// Funktion Beleuchtungsstärke
//----------------------------------------------------------------
void Sensor_Licht() {
  if (Anzahl_Sensoren_Licht == 1) {
    for(byte j=0 ;j < 3; j++) {  
      Licht = sensor.readLightLevel();
      if (Licht >= 0) j=10;
      else LogDelay(1000);
    }
  }  
}  
//----------------------------------------------------------------


//----------------------------------------------------------------
// Funktion Gewicht
//----------------------------------------------------------------
void Sensor_Gewicht() {
  if (Anzahl_Sensoren_Gewicht == 1) {
    delay(100);
    for(byte j=0 ;j < 3; j++) { // Anzahl der Widerholungen, wenn Abweichung zum letzten Gewicht zu hoch
      Gewicht= scale.get_units(10);
      if ((Gewicht-LetztesGewicht < 500) and (Gewicht-LetztesGewicht > -500)) j=10; // Abweichung für Fehlererkennung
      if (j < 3) {
        LogDelay(3000);  // Wartezeit zwischen Wiederholungen      
      }
    }
    // Temperaturkompensation
    if ((TempOut != 999.99)){
      if (TempOut > Kalibriertemperatur) Gewicht = Gewicht-(fabs(TempOut-Kalibriertemperatur)*KorrekturwertGrammproGrad);
      if (TempOut < Kalibriertemperatur) Gewicht = Gewicht+(fabs(TempOut-Kalibriertemperatur)*KorrekturwertGrammproGrad);
    }  
    
    LetztesGewicht = Gewicht;
  }
}
//----------------------------------------------------------------


//----------------------------------------------------------------
// Funktion Bienenzähler
//----------------------------------------------------------------
void Sensor_Bienen() {
  
}  
//----------------------------------------------------------------


//----------------------------------------------------------------
// Funktion LogDelay
//----------------------------------------------------------------
void LogDelay(long Zeit) {
  LogDelayZeit = millis();
  
  while ((millis() - LogDelayZeit) < (Zeit)) {
    Sensor_Bienen();
  }
}  
//----------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.08.2016, 22:51
Beitrag #11
RE: Arduino Datenlogger für Imker und Bienenhalter
Wo kommen diese "Library-Verbindungen" her ?

Code:
#include <ArduinoRobotMotorBoard.h>
#include <EasyTransfer2.h>
#include <LineFollow.h>
#include <Multiplexer.h>

Die sind im Original-Sketch nicht vorhanden.

Die verursachen auch den Fehler.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.08.2016, 10:54
Beitrag #12
RE: Arduino Datenlogger für Imker und Bienenhalter
Hallo Hotsystems,

Ein Kobold! Das war es! Ich hab keine Ahnung wie die dahin kommen!

Die Sketch Lauft: beelogger_leo

Danke für die Hilfe!

Gruße Leo.

(29.08.2016 22:51)hotsystems schrieb:  Wo kommen diese "Library-Verbindungen" her ?

Code:
#include <ArduinoRobotMotorBoard.h>
#include <EasyTransfer2.h>
#include <LineFollow.h>
#include <Multiplexer.h>

Die sind im Original-Sketch nicht vorhanden.

Die verursachen auch den Fehler.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.08.2016, 11:38
Beitrag #13
RE: Arduino Datenlogger für Imker und Bienenhalter
(30.08.2016 10:54)leovz schrieb:  Hallo Hotsystems,

Ein Kobold! Das war es! Ich hab keine Ahnung wie die dahin kommen!

Die Sketch Lauft: beelogger_leo

Danke für die Hilfe!

Gruße Leo.

Gerne und prima, dass es funktioniert.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.09.2016, 19:57 (Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2016 20:11 von itsy.)
Beitrag #14
beelogger-Sloar Problem Sleep-Modus
Hallo zusammen,

aktuell optimiere ich den Prototypen des beelogger-Solar, um ein möglichst energieeffizientes System zu entwickeln.

Leider hat sich bei weiteren Tests ein Problem ergeben, welches ist bisher noch nicht lösen konnte:

Hardware beelogger-Solar:
ATmega 328P AU
DS3231
SPV1040 (Solar-Laderegler mit Step-Up-Konverter)
TPS62260 (Step-Down-Konverter) für Step-Down der LiPo-Spannung auf 3,3V Betriebsspannung
Aktuell bereits fest eingelötet: HX711

Bootloader: Arduino mini Pro 3,3V 8MHz

Beim folgenden, minimalen Code deaktiviere ich nur den Alarm der DS3231 und schicke den fest eingelöteten HX711 schlafen. Die Stromversorgung der DS3231 wird zum Programmieren über PIn 9 vorgenommen - im Sleep-Mode wird die RTC über eine separate Batterie versorgt.

Code:
#include <HX711.h>
#include <Wire.h>
#include <DS3231.h>
#include <SPI.h>
#include <LowPower.h>

HX711 scale(A1, A0);
DS3231 RTC;

void setup() {  
  //SPI.begin();
  
  pinMode(9, OUTPUT);
  pinMode(2, INPUT_PULLUP);
  
  Wire.begin();  
  scale.power_down();
}


void loop() {  
  delay(4000);
  SleepNow();
}


void WakeUp() {

}


void SleepNow() {
  digitalWrite(9, HIGH);
  delay(20);
  
  RTC.turnOffAlarm(1);
  RTC.checkIfAlarm(1);

  RTC.turnOffAlarm(2);
  RTC.checkIfAlarm(2);
  
  delay(20);  
  digitalWrite(9, LOW);
  
  digitalWrite (A4, LOW);    
  digitalWrite (A5, LOW);    

  attachInterrupt(0,WakeUp,LOW);
  
  TWCR &= ~(bit(TWEN) | bit(TWIE) | bit(TWEA));
  
  LowPower.powerDown(SLEEP_FOREVER,ADC_OFF, BOD_OFF);

  detachInterrupt(0);
}

Hiermit komme ich auf einen Stromverbrauch im Sleep-Mode von rund 31uA

Aktiviere ich nun die SPI-Schnittstelle (einfach die Auskommentierung von SPI.begin() raus nehmen) komme ich im Sleep-Mode auf 37mA.

Bei einigen meiner Versuche hatte ich dieses Problem nicht. Bei den weiter über 100 Test-Sketchen habe ich allerdings den Überblick verloren ;-) Vielleicht habe ich auch irgendwas im ATmega gekillt?

Würde mich freuen, wenn Ihr eine Lösung habt.

Vielen Dank
Thorsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Rennsport-Datenlogger Eustar 5 1.543 11.04.2016 07:33
Letzter Beitrag: Eustar
  OBD Datenlogger Projekt 16 13 4.110 30.11.2015 18:23
Letzter Beitrag: Scherheinz
  GPS Datenlogger fschneider 9 3.108 02.07.2015 15:12
Letzter Beitrag: fschneider
  Datenlogger zur Auswertung Eines Ladeluftkühlers Vinreeb 18 3.911 20.04.2015 18:48
Letzter Beitrag: MaHa1976
  Arduino Neuling: Zugeklappten Laptop mit Arduino aufwecken + Kiste aufklappen? Ikearegal 2 2.512 02.02.2014 07:59
Letzter Beitrag: Ikearegal
Music Datenlogger mit Xively (Pachube) peterunterhofer 0 2.197 20.06.2013 06:04
Letzter Beitrag: peterunterhofer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste