AQEV2 LoRa conversion

Hello -

I am looking for a schematic or pin map indicating the AQEV2 sensor shield to Wildfire connections (CC3000 based version). Is this available?

I “restored” an AQE V1 using a TTN Uno for LoRaWAN access, I am now attempting to do the same on a V2 egg. Why? Much of my sensor network is LoRa, but yea… could have upgraded the Wildfire too.

Please and thanks! (And if not - no worries, seems clear enough from the FW and visual inspection to give it a go.)


That’s awesome, love it. If you go to you can get to the older version with the cc3000. You will end up here:

From there, search for WildFire Pinout and click the link appropriate for the version of the board you have. You should find schematics in the same place. That should get you where you want to be, just ask if you have more question.

I hope the next version of Air Quality Egg hardware will have LoRaWAN capability built in, when I get some time to get back to it!

Thanks for the fast response! The “TTN Uno” arrived, and I have the AQEv2 working over LoRaWAN. I found the schematic for the Wildfire, but I still have questions on the AQEv2 shield.

The Wildfire v3 has analog pins A6 and A7. The TTN Uno (a Leonardo in reality) does not. It appears the shield uses A6 for the LCD, and A7 is unused? I just left them hanging for now.

A second question on the shield is about the dust sensor. I have a SENSIRION dust sensor that I would like to add. I suspect the 4 pads are SPI or I2C, could you confirm?

The CO/NO2 readings are still not correct. I used the calibration factors from the donor AQEV2/Wildfire. The readings are negative which probably goes to the offset. Do these values seem correct? (egg serial # egg0080217e80080150)

#define NO2_SENSITIVITY 36.149997711
#define NO2_CAL_SLOPE 79035.773437500
#define NO2_CAL_OFFSET -0.829424476

#define CO_SENSITIVITY 6.900000095
#define CO_CAL_SLOPE 414.078674316
#define CO_CAL_OFFSET -1.995584487

With the zero check disabled, the moving averages yield:

NO2(ppb): -29.290802
CO(ppm): -2.511319
NO2(raw): -0.829155
CO(raw): -1.993324

I sample every 20s over 2 minutes for each reported measurement. A bit of “noise” is present on the NO2/CO readings so I believe the ADC’s are working. NO2 can be variable, CO is fairly constant. Temp and Humidity are correct.

To squeeze the code into a Leonardo took a fair bit of surgery. The utilization is pretty high, 87% flash and 72% for sram (if I understand the Arduino IDE correctly). I could have munged something important as well.

Thanks again for any insights.

Happy to help in any way I can. What is the version number printed on the AQEv2 Interface Shield? From what I can tell, A6 is the LCD backlight control signal. Depending on the shield version, it’s not unreasonable to believe A7 is not connected. In the most current version of the shield, A7 is used as the SoftwareSerial RX pin for our particulate sensors.

The four pads you are referring to (below the LCD contrast potentiometer and above the LCD connector) is labelled G, 5V, ck, dt. That’s a (5V) I2C header, and the they are, left-to-right, GND, 5V, SCK, and SDA.

The voltage values you are getting are in the ballpark of what I expect from those sensor types. For the conversion of the voltage to a concentration, it is pretty important to include the characterized response to temperature to get an accurate reading (ref1, ref2). So it’s not just as simple as concentration = voltage * slope + offset (I wish!). We’ve come a long way in sophistication since that Egg was built.

The code on github has temperature baseline compensation, but unfortunately it’s not going to do you much good unless you have the means put the unit through a temperature profile and then program in the results. Failing that, yes, you can adjust the CAL_OFFSET values to bring the readings into the positive. Just use your favorite calculator / excel to determine what the offset needs to be to get you a positive result. You can basically ignore the sensitivity as it’s just used to determine the slope.

AQEv2 Interface Shield v1.3. Thanks for the notes on the I2C/dust sensor. Hopefully I can squeeze in the code to run it…

I retained the temperature compensation code in the firmware as-is. (I tried to leave anything related to the sensor value untouched.)

The links on temp compensation will be a great help. (no doubt lessons learned the hard way). I will map out the response and see where it leads. I was doing the conversion for the challenge, more than the science, if that makes any sense. But somewhat accurate measurements would be icing on the cake.

Thanks again.

Sorry, for the time lapse, dug these up though: