Full Arduino Mini LoraWAN below 1uA Sleep Mode

(Nox1989) #81


Can someone explain what this is for and do I need for the board to work? Can’t see any component that would fit there in the BOM list.
And also what dose 24AA02E64T do ? It’s something to to with I2C right? Do I really need that? Doesn’t the the arduino handels the I2C signals ?

  • I didn’t see the blue circle so I thought that you asked about the PCB :sunglasses:

(Nox1989) #83

If it so obvious what its for why don’t you just tell me then? Anyway downloaded the .brd file and to try to figure out what’s for. Is it a jumper for power and ground for the I2C module?


It’s so you can switch the power and ground in the i2c header as some boards have them the other way round. Cut the trace between the existing pads if you need it.

The other component is for a unique device ID. You could either fit it or alternatively program it direct into the code or store it in eeprom on the Arduino


Thanks for the board file Charles - I hadn’t quite got the fuse and serial settings right!

(Nox1989) #86

Thank you, that was the response I wanted!


@tkerby won a beer, that is exactly this, to reverse if needed VCC and GND of I2C header :wink:

(Under5hadow) #88

Does anyone have successfully compile the LMIC Library ? I have this error "\IBM_LMIC_framework\lmic\aes.c.o (symbol from plugin): In function os_aes': (.text+0x0): multiple definition ofos_aes’ "

I can’t figure out what’s wrong :confused:

(Sven016) #89

Hello, i tryed my first steps with LoRa and find this project.
It was a lot help to build the first test node, but without Cayenne LPP.
Where i can donwload this project files?

Thanks for answer. Is there no download, please answer too… :slight_smile:


What do you mean by that ?

(Sven016) #91

hello, i mean the arduino sketch.

In the git for this, only the board schematics, no code to drive the the pcb.

The other git, works but no LPP kompatible.

Or i dont find the korrekt git, or i cant use correct cayenne…

thanks for help…


Ah check, indeed correct. LoRaWAN_TTN_Env_Node isn’t LPP compatible.

When you use the code from the LoRaWAN_TTN_Env_Node, this is what you need to do :

Include CayenneLPP.h with :

#include <CayenneLPP.h>

Init the CayenneLPP buffer with :

CayenneLPP lpp(51);   // create a buffer of 51 bytes to store the payload

Then replace :

    int t = (int)((temp + 40.0) * 10.0);  
    int p = (int)(pressure);  
    int h = (int)(humidity);

    unsigned char mydata[6];
    mydata[0] = batvalue;      
    mydata[1] = h & 0xFF; 
    mydata[2] = t >> 8;
    mydata[3] = t & 0xFF;
    mydata[4] = p >> 8;
    mydata[5] = p & 0xFF; 
    LMIC_setTxData2(1, mydata, sizeof(mydata), 0);

With :

    lpp.reset();                            // clear the buffer
    lpp.addTemperature(1, temp);            // on channel 1, add temperature 
    lpp.addBarometricPressure(2, pressure); // channel 2, pressure
    lpp.addRelativeHumidity(3, humidity);   // channel 3, pressure

    LMIC_setTxData2(1, lpp.getBuffer(),  lpp.getSize(), 0); 

Then it should be LPP compatible.

let me know if it works for you.

(Sven016) #94

Hello… perfekt… thats the way :slight_smile:
One little question.
the variable “batvalue” in the old sketch block, can i send like?

many thanks


Good point there.

You could send it like


 uint8_t addAnalogInput(uint8_t channel, float value);

You need to add :

 float fbatt = batt / 10.0;
 lpp.addAnalogInput(4, fbatt);

(Sven016) #96

Hello, thanks.
It works all.
i understand more and more…

Good work… :+1:


Anyone using the minilora boards may be interested in taking a look at my code here: https://github.com/tkerby/minilora-test

I’ve been testing a few features including

  • Low power sleep of arbitrary length in seconds
  • Restoration of millis() counter allowing sleep to be considered within the duty cycle limits for LMIC
  • OTAA with full datarate checking
  • Adaptive timing based on the current spreading factor - a node that ends up on higher SF values will automatically send less often. Ideal with ADR

All these features are very new so I’d love some others to test and provide feedback. It’s really difficult to test in Edinburgh now we have good gateway coverage!

Big thanks to Charles, Matthijs and Arjan for getting me this far!

Note there is a keys.h file needed containing your three keys - see comments in the code


great tnx … will try that this weekend :sunglasses:


Hi Charles,

Referring to your first post:

Any chance we will see this as your 65’th repository on Github soon? :slight_smile:

(Peter Katana) #100

Hi Charles,
sorry for my stupid question: trying to get the node example up and running:

LoRaWAN_TTN_Env_Node/LoRaWAN_TTN_Env_Node.ino: In function ‘void updateEnvParameters()’:
LoRaWAN_TTN_Env_Node:185: error: no matching function for call to ‘BME280I2C::temp(bool)’
temp = bme.temp(true);
I used the right BME 280 library “BME280-master” and not the Arduino IDE lib. Any ideas whats wrong ?
Btw: Many thanks for you and all the contributors for this exciting Lora node.

Br Peter


Hello Peter, which software did you use ?

This one ? https://github.com/ph2lb/LoRaWAN_TTN_Env_Node That project has the BME280 library source in the project tree. So you don’t need to add the BME280 libary to the Arduino library pool.

But when use the new BME280 library, please check the function call. THe function ::temp() now has different parameters.

Taken from : https://github.com/finitespace/BME280/blob/master/src/BME280.h

float BME280::temp
TempUnit unit

Where TempUnit is defined like :

enum TempUnit {

So you’re correct call should be :

// OLD CODE temp = bme.temp(true);
temp = bme.temp(TempUnit.TempUnit_Celsius);

Please also check the functions for pressure.

// OLD CODE pressure = bme.pres(1); // 1 = hPa (milliBar)
pressure = bme.pres(PresUnit.PresUnit_hPa);

Hope the above helps.