Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
projekte:grossprojekte:lorawan:12_temp-feuchte [2020/03/18 19:19] – fablab_wiki | projekte:grossprojekte:lorawan:12_temp-feuchte [2022/12/14 12:48] (aktuell) – michael | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ===== 12 Temperatur - Luftfeuchte ===== | + | ===== 12. Temperatur - Luftfeuchte ===== |
\\ | \\ | ||
\\ | \\ | ||
Zeile 76: | Zeile 76: | ||
====Sketch==== | ====Sketch==== | ||
Was wäre eine Node ohne Programm (Sketch)? ([[projekte: | Was wäre eine Node ohne Programm (Sketch)? ([[projekte: | ||
- | Zur Verwendung kommt der LoRa-Universalsketch mit Erweiterungen zum Auslesen des Sensors DHT22. | + | Zur Verwendung kommt der LoRa-Universalsketch |
- | Zum ersten Test wurden einige Serial.print-Anweisungen verwendet, sobald | + | Zum ersten Test wurden einige |
- | Nartürlich muss der Sensor | + | Nartürlich muss die Node vorher wieder im TTN-Netzwerk in seiner zugehörigen Applikation |
(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 " | + | Der Sketch wurde mit der Bibliothek " |
\\ | \\ | ||
- | <code JavaScript [enable_line_numbers=" | + | <code JavaScript [enable_line_numbers=" |
/ | / | ||
| | ||
Zeile 124: | Zeile 124: | ||
// | // | ||
// eigene Defintitionen | // eigene Defintitionen | ||
- | int t, tt, h, hh; | ||
- | // | ||
//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; |
// | // | ||
// | // | ||
// Application EUI Reihenfolge LSB MSB | // Application EUI Reihenfolge LSB MSB | ||
- | static const u1_t PROGMEM APPEUI[8] = { 0x37, 0x41, 0x02, 0xD0, 0x7E, 0xD5, 0xB3, 0x70 }; | + | static const u1_t PROGMEM APPEUI[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; |
void os_getArtEui (u1_t* buf) { | void os_getArtEui (u1_t* buf) { | ||
memcpy_P(buf, | memcpy_P(buf, | ||
Zeile 140: | Zeile 138: | ||
//Device EUI Reihenfolge LSB MSB | //Device EUI Reihenfolge LSB MSB | ||
- | static const u1_t PROGMEM DEVEUI[8] = { 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02 }; | + | static const u1_t PROGMEM DEVEUI[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; |
void os_getDevEui (u1_t* buf) { | void os_getDevEui (u1_t* buf) { | ||
memcpy_P(buf, | memcpy_P(buf, | ||
Zeile 146: | Zeile 144: | ||
// Application Key Achtung: Reihenfolge MSB LSB | // Application Key Achtung: Reihenfolge MSB LSB | ||
- | static const u1_t PROGMEM APPKEY[16] = { 0x7F, 0xC3, 0xCB, 0x17, 0xA8, 0x14, 0x0F, 0x11, 0xC7, 0x61, 0xCC, 0xCC, 0xEE, 0x1D, 0x8D, 0xC0 }; | + | static const u1_t PROGMEM APPKEY[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; |
void os_getDevKey (u1_t* buf) { | void os_getDevKey (u1_t* buf) { | ||
memcpy_P(buf, | memcpy_P(buf, | ||
Zeile 195: | Zeile 193: | ||
} else { | } else { | ||
// Eigene Sensoren | // Eigene Sensoren | ||
- | | + | temperature = 0; |
- | | + | humidity = 0; |
int err = SimpleDHTErrSuccess; | int err = SimpleDHTErrSuccess; | ||
if ((err = dht22.read(& | if ((err = dht22.read(& | ||
Zeile 206: | Zeile 204: | ||
} | } | ||
// | // | ||
- | // | + | // |
- | // | + | // |
//DHT22 sampling rate is 0.5HZ. | //DHT22 sampling rate is 0.5HZ. | ||
delay(2500); | delay(2500); | ||
Zeile 213: | Zeile 211: | ||
// 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. | ||
Zeile 228: | Zeile 226: | ||
// Ende eigenes Setup | // Ende eigenes Setup | ||
// | // | ||
- | #ifdef VCC_ENABLE | + | |
- | // For Pinoccio Scout boards | + | |
- | pinMode(VCC_ENABLE, | + | |
- | digitalWrite(VCC_ENABLE, | + | |
- | delay(1000); | + | |
- | #endif | + | |
// LMIC init | // LMIC init | ||
Zeile 239: | 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, | ||
- | LMIC_setupChannel(1, | ||
- | LMIC_setupChannel(2, | ||
- | LMIC_setupChannel(3, | ||
- | LMIC_setupChannel(4, | ||
- | LMIC_setupChannel(5, | ||
- | LMIC_setupChannel(6, | ||
- | LMIC_setupChannel(7, | ||
- | LMIC_setupChannel(8, | ||
- | |||
- | LMIC_setLinkCheckMode(0); | ||
- | LMIC.dn2Dr = SF9; | ||
- | LMIC_setDrTxpow(DR_SF7, | ||
// Start job (sending automatically starts OTAA too) | // Start job (sending automatically starts OTAA too) | ||
do_send(& | do_send(& | ||
Zeile 264: | Zeile 243: | ||
Was kommt hinzu: (Zeilenangaben in Klammern)\\ | Was kommt hinzu: (Zeilenangaben in Klammern)\\ | ||
\\ | \\ | ||
- | * (38) Bibliothek für den DHT22 (ist eine Einfachbibliothek, | + | * (39) Bibliothek für den DHT22 |
- | * (44-47) Datenpin, Initialisierung, | + | * (43-46) Datenpin |
- | * (69) Vorbelegung payload Variablen auf zwei Byte (wird später mit den Daten überschrieben) | + | * (110-131) Auslesen des Sensors mit Fehlerbehandlung, |
- | * (76) Sendeintervall in Sekunden | + | |
- | * (120-137) Auslesen des Sensors mit Fehlerbehandlung, | + | |
- | * (147-148) Ausgabe auf den seriellen Monitor - damit man weiß, dass es los geht | + | |
\\ | \\ | ||
\\ | \\ | ||
- | Stand: | + | Stand: |