Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekte:grossprojekte:lorawan:12_temp-feuchte

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
projekte:grossprojekte:lorawan:12_temp-feuchte [2020/03/11 23:06] fablab_wikiprojekte:grossprojekte:lorawan:12_temp-feuchte [2020/11/09 21:33] fablab_wiki
Zeile 76: Zeile 76:
 ====Sketch==== ====Sketch====
 Was wäre eine Node ohne Programm (Sketch)? ([[projekte:grossprojekte:lorawan:7_lora_node_scetch|siehe auch]])\\ Was wäre eine Node ohne Programm (Sketch)? ([[projekte:grossprojekte:lorawan:7_lora_node_scetch|siehe auch]])\\
-Zur Verwendung kommt der LoRa-Universalsketch (diesmal mit Serial.print-Anweisungen, um den Ablauf im seriellen Monitor verfolgen zu können) mit Erweiterungen zum Auslesen des Sensors DHT22.\\ +Zur Verwendung kommt der LoRa-Universalsketch (von mir gekürzt und ohne die Serial.print-Anweisungen) mit Erweiterungen zum Auslesen des Sensors DHT22
-Nartürlich muss der Sensor vorher wieder im TTN-Netzwerk in seiner zugehörigen Applikation angemeldet werden. Dadurch erhält man alle nötigen Adress- und Passwortangaben, die im Sketch eingetragen werden müssen.\\+Zum ersten Test wurden einige eigene Serial.print-Anweisungen verwendet. Sobald der Node funktionierte wurden sie deaktiviert.\\ 
 +Nartürlich muss die Node vorher wieder im TTN-Netzwerk in seiner zugehörigen Applikation registriert werden. Dadurch erhält man alle nötigen Adress- und Passwortangaben (APPEUIDEVEUI und APPKEY) die im Sketch eingetragen werden müssen.\\
 (Ich habe diese Daten im nachfolgenden Listing natürlich wieder unkenntlich gemacht)\\ (Ich habe diese Daten im nachfolgenden Listing natürlich wieder unkenntlich gemacht)\\
 +Der Sketch wurde mit der Bibliothek "MCCI_LoRaWAN_LMIC_library" compiliert.\\
 \\ \\
-<code JavaScript [enable_line_numbers="true",highlight_lines_extra="38,44,45,46,47,69,76,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,147,148"]>+<code JavaScript [enable_line_numbers="true",highlight_lines_extra="39,43,44,45,46,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131"]>
 /******************************************************************************* /*******************************************************************************
    Copyright (c) 2015 Thomas Telkamp and Matthijs Kooijman    Copyright (c) 2015 Thomas Telkamp and Matthijs Kooijman
Zeile 117: Zeile 119:
 #include <hal/hal.h> #include <hal/hal.h>
 #include <SPI.h> #include <SPI.h>
 +//
 //eigene Bibliotheken //eigene Bibliotheken
 #include <SimpleDHT.h> #include <SimpleDHT.h>
 // //
 // eigene Defintitionen // eigene Defintitionen
- 
-// 
 //DHT22 //DHT22
 int pinDHT22 = 4; int pinDHT22 = 4;
 SimpleDHT22 dht22(pinDHT22); SimpleDHT22 dht22(pinDHT22);
-byte temperature = 0; +float temperature = 0; 
-byte humidity = 0; +float humidity = 0; 
-   +//
-// Ende eigene Definitionen+
 // //
 // Application EUI Reihenfolge LSB MSB // Application EUI Reihenfolge LSB MSB
-static const u1_t PROGMEM APPEUI[8] = { 0x??0x??0x??0x??0x??0x??0x??0x?? };+static const u1_t PROGMEM APPEUI[8] = { 0x000x000x000x000x000x000x000x00 };
 void os_getArtEui (u1_t* buf) { void os_getArtEui (u1_t* buf) {
   memcpy_P(buf, APPEUI, 8);   memcpy_P(buf, APPEUI, 8);
Zeile 138: Zeile 138:
  
 //Device EUI Reihenfolge LSB MSB //Device EUI Reihenfolge LSB MSB
-static const u1_t PROGMEM DEVEUI[8] = { 0x??0x??0x??0x??0x??0x??0x??0x?? };+static const u1_t PROGMEM DEVEUI[8] = { 0x000x000x000x000x000x000x000x00 };
 void os_getDevEui (u1_t* buf) { void os_getDevEui (u1_t* buf) {
   memcpy_P(buf, DEVEUI, 8);   memcpy_P(buf, DEVEUI, 8);
Zeile 144: Zeile 144:
  
 // Application Key Achtung: Reihenfolge MSB LSB // Application Key Achtung: Reihenfolge MSB LSB
-static const u1_t PROGMEM APPKEY[16] = { 0x??0x??0x??0x??0x??0x??0x??0x??0x??0x??0x??0x??0x??0x??0x??0x?? };+static const u1_t PROGMEM APPKEY[16] = { 0x000x000x000x000x000x000x000x000x000x000x000x000x000x000x000x00 };
 void os_getDevKey (u1_t* buf) { void os_getDevKey (u1_t* buf) {
   memcpy_P(buf, APPKEY, 16);   memcpy_P(buf, APPKEY, 16);
 } }
  
-static uint8_t payload[] = "Hi"; +static uint8_t payload[] = "XY";
-// 2 Bytes werden gesendet +
-//+
 static osjob_t sendjob; static osjob_t sendjob;
  
 // Schedule TX every this many seconds (might become longer due to duty // Schedule TX every this many seconds (might become longer due to duty
 // cycle limitations). // cycle limitations).
-const unsigned TX_INTERVAL = 1800; // 30 Minunten+const unsigned TX_INTERVAL = 1800; //30 Min
  
-// 
 // Pin Mapping für Graduino LoRa Shield for Arduino // Pin Mapping für Graduino LoRa Shield for Arduino
 const lmic_pinmap lmic_pins = { const lmic_pinmap lmic_pins = {
Zeile 193: Zeile 190:
 void do_send(osjob_t* j) { void do_send(osjob_t* j) {
   // Check if there is not a current TX/RX job running   // Check if there is not a current TX/RX job running
-  if (LMIC.opmode & OP_TXRXPEND) +  if (LMIC.opmode & OP_TXRXPEND) { 
-     +  } else {
-  } +
-  else +
-  {+
         // Eigene Sensoren         // Eigene Sensoren
- +        temperature = 0; 
-        byte temperature = 0; +        humidity = 0;
-        byte humidity = 0;+
         int err = SimpleDHTErrSuccess;         int err = SimpleDHTErrSuccess;
         if ((err = dht22.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess)         if ((err = dht22.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess)
           {           {
-            Serial.print("Read DHT22 failed, err="); Serial.println(err); delay(2000); +            //Serial.print("Read DHT22 failed, err="); Serial.println(err); delay(2000); 
-            return;+            //return
 +            temperature=0; 
 +            humidity=0;
           }           }
-          Serial.print("Sample OK: "); +          //Serial.print("Sample OK: "); 
-          Serial.print((byte)temperature); Serial.print(" *C, "); +          //Serial.print(temperature); Serial.print(" *C, "); 
-          Serial.print((byte)humidity); Serial.println(" RH%");+          //Serial.print(humidity); Serial.println(" RH%");
           //DHT22 sampling rate is 0.5HZ.           //DHT22 sampling rate is 0.5HZ.
           delay(2500);           delay(2500);
-          // die integerwerte werden jeweils als 1 Byte übertragen, sie kommen im Hex-Format bei TTN an+          // die Integerwerte werden jeweils als 1 Byte übertragen, sie kommen im Hex-Format bei TTN an
           // d.h. Anzeige TTN 1. Byte 14 (Hex) ist 20 Grad Celsius           // d.h. Anzeige TTN 1. Byte 14 (Hex) ist 20 Grad Celsius
           //                  2. Byte 38 (Hex) ist 56 % Rel H           //                  2. Byte 38 (Hex) ist 56 % Rel H
-          payload[0] = temperature; +          payload[0] = int(temperature)
-          payload[1] = humidity;+          payload[1] = int(humidity);
           // Ende eigene Sensoren           // Ende eigene Sensoren
-   // Prepare upstream data transmission at the next possible time. +    // Prepare upstream data transmission at the next possible time. 
-   LMIC_setTxData2(1, payload, sizeof(payload) - 1, 0);+    LMIC_setTxData2(1, payload, sizeof(payload) - 1, 0);
   }   }
   // Next TX is scheduled after TX_COMPLETE event.   // Next TX is scheduled after TX_COMPLETE event.
Zeile 226: Zeile 221:
  
 void setup() { void setup() {
-  // Eigenes Setup +// Eigenes Setup 
-  Serial.begin(115200); +  //Serial.begin(115200); 
-  Serial.println("DHT22 - Test!");+  //Serial.println("DHT22 - Test!"); 
 +// Ende eigenes Setup 
 +//
  
-  // 
-#ifdef VCC_ENABLE 
-  // For Pinoccio Scout boards 
-  pinMode(VCC_ENABLE, OUTPUT); 
-  digitalWrite(VCC_ENABLE, HIGH); 
-  delay(1000); 
-#endif 
  
   // LMIC init   // LMIC init
Zeile 242: Zeile 232:
   // Reset the MAC state. Session and pending data transfers will be discarded.   // Reset the MAC state. Session and pending data transfers will be discarded.
   LMIC_reset();   LMIC_reset();
-  LMIC_setClockError(MAX_CLOCK_ERROR * 2 / 100); 
-  LMIC_setupChannel(0, 868100000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band 
-  LMIC_setupChannel(1, 868300000, DR_RANGE_MAP(DR_SF12, DR_SF7B), BAND_CENTI);      // g-band 
-  LMIC_setupChannel(2, 868500000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band 
-  LMIC_setupChannel(3, 867100000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band 
-  LMIC_setupChannel(4, 867300000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band 
-  LMIC_setupChannel(5, 867500000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band 
-  LMIC_setupChannel(6, 867700000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band 
-  LMIC_setupChannel(7, 867900000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band 
-  LMIC_setupChannel(8, 868800000, DR_RANGE_MAP(DR_FSK,  DR_FSK),  BAND_MILLI);      // g2-band 
- 
-  LMIC_setLinkCheckMode(0); 
-  LMIC.dn2Dr = SF9; 
-  LMIC_setDrTxpow(DR_SF7, 14); 
   // Start job (sending automatically starts OTAA too)   // Start job (sending automatically starts OTAA too)
   do_send(&sendjob);   do_send(&sendjob);
Zeile 261: Zeile 237:
  
 void loop() { void loop() {
- 
-           
   os_runloop_once();   os_runloop_once();
 } }
Zeile 269: Zeile 243:
 Was kommt hinzu: (Zeilenangaben in Klammern)\\ Was kommt hinzu: (Zeilenangaben in Klammern)\\
 \\ \\
-  * (38) Bibliothek für den DHT22 (ist eine Einfachbibliothek, kann nur ganze Werte auslesen) +  * (39) Bibliothek für den DHT22 
-  * (44-47) Datenpin, Initialisierung, Variablendefinition +  * (43-46) Datenpin (Digitalpin 4), Initialisierung, Variablendefinition 
-  * (69) Vorbelegung payload Variablen auf zwei Byte (wird später mit den Daten überschrieben) +  * (110-131) Auslesen des Sensors mit Fehlerbehandlung, Übergabe der Daten in die Payload
-  * (76) Sendeintervall in Sekunden +
-  * (120-137) Auslesen des Sensors mit Fehlerbehandlung, Übergabe der Daten in die Payload und Ausgabe für den seriellen Monitor +
-  * (147-148) Ausgabe auf den seriellen Monitor - damit man weiß, dass es los geht+
  
  
 \\ \\
 \\ \\
-Stand: 11.03.2020+Stand: 09.11.2020
  
projekte/grossprojekte/lorawan/12_temp-feuchte.txt · Zuletzt geändert: 2022/12/14 12:48 von michael