User Tools

Site Tools


introduction_to_the_internet_of_things

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
introduction_to_the_internet_of_things [2018/07/10 23:02] sdh7introduction_to_the_internet_of_things [2018/08/01 03:32] sdh7
Line 1: Line 1:
 +====THINGS TO DO BEFORE THE CLASS====
 **Software Setup** **Software Setup**
 You should do the following things before the class: You should do the following things before the class:
  
-Install Arduino IDE if you don't already have it - http://arduino.cc +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. 
-  * Unordered List ItemIn Boards Manager, add ESP8266 Board support+ 
 +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 
 +  * FIXME: This is missing steps
  
 Set up a Cayenne account - https://cayenne.mydevices.com Set up a Cayenne account - https://cayenne.mydevices.com
 +  * FIXME: document getting MQTT connect info
  
 Install the following libraries: Install the following libraries:
   * Cayenne MQTT Library - https://github.com/myDevicesIoT/Cayenne-MQTT-Arduino   * Cayenne MQTT Library - https://github.com/myDevicesIoT/Cayenne-MQTT-Arduino
-  * Adafruit Sensor Library +  * Adafruit Sensor Library - FIXME: URL 
-  * Adafruit BME280 library+  * Adafruit BME280 library - FIXME: URL
   * Arduino SimpleTimer library https://github.com/marcelloromani/Arduino-SimpleTimer   * Arduino SimpleTimer library https://github.com/marcelloromani/Arduino-SimpleTimer
  
 Modify BME280 library Modify BME280 library
   * on OS X, navigate using the finder or otherwise cd ~/Documents/Arduino/libraries/Adafruit_BME280_Library-master/   * on OS X, navigate using the finder or otherwise cd ~/Documents/Arduino/libraries/Adafruit_BME280_Library-master/
-  * edit Adafruit_BME280.h using your favorite editorchange #define BME280_ADDRESS from 0x77 to 0x76 +    * On Windows & Linux the files will be somewhere similar. 
-  * more advanced C programmers may do something like:+  * edit Adafruit_BME280.h using your favorite editor, and change #define BME280_ADDRESS from 0x77 to 0x76 
 + 
 +===If Using Your Phone to Tether=== 
 +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: 
 +  * [[https://www.androidcentral.com/how-set-wi-fi-hotspot-android-phone|Android setup]] 
 +  * [[https://support.apple.com/en-il/HT204023|iOS setup]] 
 + 
 +====THINGS WE WILL DO AT THE CLASS==== 
 +Your kit should consist of a number of boards: 
 +  * ESP8266 Wifi-enabled microcontroller 
 +  * BME280 sensor array 
 +  * AMS1117 voltage regulator 
 +  * CH34x-based programmer for the ESP8266 
 + 
 +==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 fixed-in-place design, you'll want to just solder wires to the boards. Theoretically, the person that designed this de-solders the pins from the ESP8266 board, but that seems foolhardy to me (makes it MUCH more difficult to reprogram...) 
 +  * wiring: 
 +    * ESP8266->BME280: GND->GND, IO2->SCL, IO0->SDA,3V3->VCC 
 +    * AMS1117->ESP8266: GND->GND, VOUT->3V3 
 +    * Note that the 3.3V & GND connections are going to multiple places.   
 + 
 +==Software Programming== 
 +This is the stock program for the class, with some minor edits to account for our BME280 header hack above. 
 + 
 +<code> 
 +#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;
  
-#define BME280_ADDRESS 0x77+void setup()   
 +
 +  Serial.begin(9600); 
 +  Cayenne.begin(username, mqtt_password, client_id, ssid, pass); 
 +  Wire.begin(0, 2); // SDA, SDL 
 +  bme.begin();
  
-#ifdef CLASS_BME280 +}
  
-#define BME280_ADDRESS 0x76+void loop()   
 +
 +  Cayenne.loop(); 
 +}
  
-#endif+// 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()); 
 +}
  
-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...+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());
 +}
  
-**Hardware Construction** +CAYENNE_OUT(V3)   
- - On the programming boardwire an SPST or SPDT switch between GPIO+
 +  // Send the Altitude value to Cayenne 
 +  Cayenne.virtualWrite(V3bme.readAltitude(SEALEVELPRESSURE_HPA)); 
 +
 +</code>
  
 **Power considerations** **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. +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.
  
  
introduction_to_the_internet_of_things.txt · Last modified: 2018/08/22 15:09 by sdh7

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki