Software Setup You should do the following things before the class:
If you are using a Macintosh, install these drivers for the serial board - https://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver. I find the CH34x serial chip support on OS X to be spotty at best. Follow the instructions carefully. YOU MUST DELETE ANY OLD VERSIONS OF THE DRIVERS, or kernel panics WILL happen! Linux and Windows machines should just work, but if not look for the current CH34x drivers.
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
Set up a Cayenne account - https://cayenne.mydevices.com
Install the following libraries:
For each of these four libraries, click on the “Clone or download” button, and download the ZIP file (more complicated things can be done if you're Git savvy, but plain old zip download is fine here…) From there, you should be able to install the libraries using Sketch→Include Library→ Add .ZIP Library (you may need to strip the -master from the .zip files filename)
Modify BME280 library:
I have not tested phone tethering- the prototype worked directly with our in-space WiFi. However, if you wish to try it, there are some instructions to be found here:
Your kit should consist of a number of boards:
This is the stock program for the class, with some minor edits to account for our BME280 header hack above.
#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. You should be able to power via USB with the serial board as well- just run wires from 3.3v & ground to the appropriate ESP8266 pins and leave out the AMS1117.