This is an old revision of the document!
Software Setup You should do the following things before the class:
Install Arduino IDE if you don't already have it, and upgrade to something recent if you're below version 1.7 - http://arduino.cc
- In Boards Manager, add ESP8266 Board support
Set up a Cayenne account - https://cayenne.mydevices.com
Install the following libraries:
- Cayenne MQTT Library - https://github.com/myDevicesIoT/Cayenne-MQTT-Arduino
- Adafruit Sensor Library
- Adafruit BME280 library
- Arduino SimpleTimer library https://github.com/marcelloromani/Arduino-SimpleTimer
Modify BME280 library
- on OS X, navigate using the finder or otherwise cd ~/Documents/Arduino/libraries/Adafruit_BME280_Library-master/
- On Windows & Linux the files will be somewhere similar.
- edit Adafruit_BME280.h using your favorite editor- change #define BME280_ADDRESS from 0x77 to 0x76
- more advanced C programmers may do something like:
#define BME280_ADDRESS 0x77 #ifdef CLASS_BME280 #define BME280_ADDRESS 0x76 #endif
and then add #define CLASS_BME280 at the beginning of your program, so that way if you get an Adafruit BME280 board in the future, it will continue to work right…
Hardware Construction
- On the programming board, wire an SPST or SPDT switch between GPIO and GND
- If you plan on re-using the boards for something else in the future, solder in header pins on the other boards. If you're building this as a
If you want to re-use the component boards for other projects
Software Programming
#define CAYENNE_PRINT Serial // Comment this out to disable prints and save space
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <CayenneMQTTESP8266.h>
#include <SimpleTimer.h>
// Your network name and password.
char ssid[] = "your_mobile_phone_tether_ssid"; // your network SSID (name)
char pass[] = "your_mobile_phone_password"; // your network password
// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
char username[] = "xxxxxxxxxxxxxxxxxxxxxxx5c2";
char mqtt_password[] = "xxxxxxxxxxxxxxxxxxxxxxxxx190";
char client_id[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
// Virtual Pins of the BME280 widget.
#define TEMPERATURE_PIN V0
#define BAROMETER_PIN V1
#define HUMIDITY_PIN V2
#define ALTITUDE_PIN V3
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme; // I2C
unsigned long delayTime;
void setup()
{
Serial.begin(9600);
Cayenne.begin(username, mqtt_password, client_id, ssid, pass);
Wire.begin(0, 2); // SDA, SDL
bme.begin();
}
void loop()
{
Cayenne.loop();
}
// These functions are called when the Cayenne widget requests data for the Virtual Pin.
CAYENNE_OUT(V0)
{
// Send the Temperature value to Cayenne
Cayenne.virtualWrite(V0, bme.readTemperature());
}
CAYENNE_OUT(V1)
{
// Send the Pressure value to Cayenne
Cayenne.virtualWrite(V1, bme.readPressure());
}
CAYENNE_OUT(V2)
{
// Send the Humidity value to Cayenne
Cayenne.virtualWrite(V2, bme.readHumidity());
}
CAYENNE_OUT(V3)
{
// Send the Altitude value to Cayenne
Cayenne.virtualWrite(V3, bme.readAltitude(SEALEVELPRESSURE_HPA));
}
Power considerations The kit does not come with a power source. The regulator board requires at least 4.5V (and at most 15V!) to adequately supply 3.3V to the ESP8266 and BME280 boards. A 9V battery or 6V AA case should work