TheThingsArchive / ttn

The Things Network Stack V2
https://www.thethingsnetwork.org
MIT License
461 stars 276 forks source link

Sending data DHT11 using a LoRa Shield and Arduino Uno doesnt work #747

Closed Philipp1807 closed 5 years ago

Philipp1807 commented 5 years ago

Hello everyone,

I am a little helpless. In my opinion, my code would have to be correct to send the data from the DHT11 sensor to TheThingsNetwork. ABP is used. However, I do not receive any data in the TTN Console. The serial monitor displays: Beginning Humidity: 0 13: 21: 35,474 -> Temperature: 0 13: 21: 35.474 -> 17159: EV_JOINING

For help, I would be grateful. Here is my code:

include

include <hal/hal.h>

include

include

include

define DHTPIN 6 //Der Sensor wird an PIN 0 angeschlossen

define DHTTYPE DHT11 // Es handelt sich um den DHT11 Sensor

DHT dht(DHTPIN, DHTTYPE);

static const u1_t NWKSKEY[16] = { 0x6C, 0xA9, 0x3C, 0x3A, 0xA7, 0x51, 0x25, 0xA7, 0xE0, 0x9A, 0x02, 0x2A, 0x6D, 0x79, 0x82, 0xE9 }; static const u1_t APPSKEY[16] = { 0x7A, 0xB4, 0xD5, 0x57, 0x06, 0x5C, 0x77, 0xD0, 0x33, 0x67, 0x36, 0xD7, 0x0A, 0x0C, 0xAB, 0x30 }; static const u4_t DEVADDR = 0x260116AC;

// These callbacks are only used in over-the-air activation, so they are // left empty here (we cannot leave them out completely unless // DISABLE_JOIN is set in config.h, otherwise the linker will complain). void os_getArtEui (u1_t buf) { } void os_getDevEui (u1_t buf) { } void os_getDevKey (u1_t* buf) { }

static osjob_t sendjob;

// Schedule TX every this many seconds (might become longer due to duty // cycle limitations). const unsigned TX_INTERVAL = 20;

// Pin mapping Dragino Shield const lmic_pinmap lmic_pins = { .nss = 10, .rxtx = LMIC_UNUSED_PIN, .rst = 9, .dio = {2, 6, 7}, };

void onEvent (ev_t ev) { Serial.print(os_getTime()); Serial.print(": "); switch(ev) { case EV_SCAN_TIMEOUT: Serial.println(F("EV_SCAN_TIMEOUT")); break; case EV_BEACON_FOUND: Serial.println(F("EV_BEACON_FOUND")); break; case EV_BEACON_MISSED: Serial.println(F("EV_BEACON_MISSED")); break; case EV_BEACON_TRACKED: Serial.println(F("EV_BEACON_TRACKED")); break; case EV_JOINING: Serial.println(F("EV_JOINING")); break; case EV_JOINED: Serial.println(F("EV_JOINED"));

        // Disable link check validation (automatically enabled
        // during join, but not supported by TTN at this time).
        LMIC_setLinkCheckMode(0);
        break;
    case EV_RFU1:
        Serial.println(F("EV_RFU1"));
        break;
    case EV_JOIN_FAILED:
        Serial.println(F("EV_JOIN_FAILED"));
        break;
    case EV_REJOIN_FAILED:
        Serial.println(F("EV_REJOIN_FAILED"));
        break;
        break;
    case EV_TXCOMPLETE:
        Serial.println(F("EV_TXCOMPLETE (includes waiting for RX windows)"));
        if (LMIC.txrxFlags & TXRX_ACK)
          Serial.println(F("Received ack"));
        if (LMIC.dataLen) {
          Serial.println(F("Received "));
          Serial.println(LMIC.dataLen);
          Serial.println(F(" bytes of payload"));
        }
        // Schedule next transmission
        os_setTimedCallback(&sendjob, os_getTime()+sec2osticks(TX_INTERVAL), do_send);
        break;
    case EV_LOST_TSYNC:
        Serial.println(F("EV_LOST_TSYNC"));
        break;
    case EV_RESET:
        Serial.println(F("EV_RESET"));
        break;
    case EV_RXCOMPLETE:
        // data received in ping slot
        Serial.println(F("EV_RXCOMPLETE"));
        break;
    case EV_LINK_DEAD:
        Serial.println(F("EV_LINK_DEAD"));
        break;
    case EV_LINK_ALIVE:
        Serial.println(F("EV_LINK_ALIVE"));
        break;
     default:
        Serial.println(F("Unknown event"));
        break;
}

}

void do_send(osjob_t j){ // Check if there is not a current TX/RX job running if (LMIC.opmode & OP_TXRXPEND) { Serial.println(F("OP_TXRXPEND, not sending")); } else { // Prepare upstream data transmission at the next possible time. uint32_t humidity = dht.readHumidity(false) 100; uint32_t temperature = dht.readTemperature(false) * 100;

    Serial.println("Humidity: " + String(humidity));
    Serial.println("Temperature: " + String(temperature));

    byte payload[4];
    payload[0] = highByte(humidity);
    payload[1] = lowByte(humidity);
    payload[2] = highByte(temperature);
    payload[3] = lowByte(temperature);

    LMIC_setTxData2(1, (uint8_t*)payload, sizeof(payload), 0);

}
// Next TX is scheduled after TX_COMPLETE event.

}

void setup() { Serial.begin(9600); Serial.println(F("Starting"));

dht.begin();

#ifdef VCC_ENABLE
// For Pinoccio Scout boards
pinMode(VCC_ENABLE, OUTPUT);
digitalWrite(VCC_ENABLE, HIGH);
delay(1000);
#endif

// LMIC init
os_init();
// Reset the MAC state. Session and pending data transfers will be discarded.
LMIC_reset();

// Start job
do_send(&sendjob);

}

void loop() { os_runloop_once(); }

johanstokking commented 5 years ago

Are you sure you're in a coverage area?

This repository is for the V2 backend, not Arduino or LMiC. Please refer to the forum; https://www.thethingsnetwork.org/forum.