Hardware components | ||||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
Software apps and online services | ||||||
![]() |
|
This project is all about the introduction to the Internet of Things class. It is a very condensed version and just a small portion of what is taught in the class. I participated in it through the CNM Stem Core program that I had the privilege and opportunity to participate in. It uses the programming code C++ and I learned how to program a light to turn on randomly and to have a rainbow light bar. We learned how to check the temperature of our hot room and tell us exactly how hot the room was while we are inside it. It works by putting code into Visual Studio Code and give the inputs to tell the Particle Argon what to do. It is a very interesting class and taught me things that I did not know about and how it expanded my knowledge while making me excited at the new things that I am learning.
/*
* Project NEO
* Description:
* Author:
* Date:
*/
#include "neopixel.h"
#include "colors.h"
#include "math.h"
#define PIXEL_PIN A2
#define PIXEL_COUNT 16
#define PIXEL_TYPE WS2812B
Adafruit_NeoPixel pixel(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);
int i, pixelNum, color;
bool buttonState;
float bright, t, freq;
SYSTEM_MODE(SEMI_AUTOMATIC);
SYSTEM_THREAD(ENABLED);
// setup() runs once, when the device is first turned on.
void setup() {
// Put initialization like pinMode and begin functions here.
pinMode(D10,INPUT);
freq = 1/3.0;
pixel.begin();
pixel.setPixelColor(10,green);
pixel.show();
i=0;
}
// loop() runs over and over again, as quickly as it can execute.
void loop() {
// The core of your code will likely live here.
buttonState = digitalRead(D10);
while(buttonState == true) {
t = millis() / 1000.0;
bright = 127.5 * sin(2 * M_PI * freq * t) + 127.5;
pixel.setBrightness(bright);
i++;
pixelNum = i % 14;
color = i % 6;
pixel.setPixelColor(pixelNum,rainbow[color]);
pixel.show();
delay(50);
buttonState = digitalRead(D10);
}
}
/*
* Project Motion
* Description: Learn to use accelerometer
* Author:
* Date:
*/
#include <ADXL345.h>
#include "math.h"
int x, y, z;
float ax, ay, az;
float pitch, roll;
ADXL345 adxl;
SYSTEM_MODE(SEMI_AUTOMATIC);
SYSTEM_THREAD(ENABLED);
void setup() {
Serial.begin(9600);
adxl.powerOn();
}
void loop() {
//read the accelerometer values and store them in variables x,y,z
adxl.readXYZ(&x, &y, &z);
//Serial.printf("values of X = %i, Y = %i, Z = %i\n",x,y,z);
// Get acceleration in g's
double xyz[3];
adxl.getAcceleration(xyz);
ax = xyz[0];
ay = xyz[1];
az = xyz[2];
pitch = asin(ax)*(360/(2*M_PI));
roll = atan2(ay,az)*(360/(2*M_PI));
Serial.printf("values of X = %0.2f, Y = %0.2f, Z = %0.2f, pitch = %0.2f, roll = %0.2f\n",ax,ay,az, pitch, roll);
delay(500);
}
/*
* Project TheCloud
* Description: Starter Code for Adafruit.io
* Author: Brian Rashap
* Date: 6-Aug-2020
*/
// Need to install library Adafruit_MQTT
#include <Adafruit_MQTT.h>
#include "Adafruit_MQTT/Adafruit_MQTT.h"
#include "Adafruit_MQTT/Adafruit_MQTT_SPARK.h"
// We will create credentials.h using the below
#include "credentials.h"
# include <Grove_Temperature_And_Humidity_Sensor.h>
/************ Global State (you don't need to change this!) *** ***************/
TCPClient TheClient;
// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.
Adafruit_MQTT_SPARK mqtt(&TheClient,AIO_SERVER,AIO_SERVERPORT,AIO_USERNAME,AIO_KEY);
/****************************** Feeds ***************************************/
// Setup Feeds to publish or subscribe
// Notice MQTT paths for AIO follow the form: <username>/feeds/<feedname>
Adafruit_MQTT_Publish mqttTemp = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/TempF");
Adafruit_MQTT_Publish mqttHum = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/Humidity");
Adafruit_MQTT_Publish mqttLight = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/LightLevel");
Adafruit_MQTT_Subscribe mqttLED = Adafruit_MQTT_Subscribe(&mqtt, AIO_USERNAME "/feeds/LED");
/************Declare Variables*************/
unsigned long last, lastTime;
#define DHTPIN D2 //set pin
DHT dht (DHTPIN);
float h,t,f;
int light;
int ledOn;
SYSTEM_MODE(SEMI_AUTOMATIC);
void setup() {
Serial.begin(9600);
Serial.printf("DHT11 Begin!!!\n");
dht.begin();
pinMode(A0,INPUT);
pinMode(D4,OUTPUT);
waitFor(Serial.isConnected, 15000); //wait for Serial Monitor to startup
//Connect to WiFi without going to Particle Cloud
WiFi.connect();
while(WiFi.connecting()) {
Serial.printf(".");
}
// Setup MQTT subscription for onoff feed.
mqtt.subscribe(&mqttLED);
}
void loop() {
// Validate connected to MQTT Broker
// Waut a few seconds between measurements.
//The sensor reads data slowly.
delay(5000);
MQTT_connect();
// Ping MQTT Broker every 2 minutes to keep connection alive
if ((millis()-last)>120000) {
Serial.printf("Pinging MQTT \n");
if(! mqtt.ping()) {
Serial.printf("Disconnecting \n");
mqtt.disconnect();
}
last = millis();
}
// publish to cloud every 10 seconds
f = dht.getTempFarenheit();
h = dht.getHumidity();
t = dht.getTempCelcius();
light = analogRead(A0);
if((millis()-lastTime > 10000)) {
if(mqtt.Update()) {
mqttTemp.publish(f);
mqttHum.publish(h);
mqttLight.publish(light);
Serial.printf("Publishing %0.2f \n",f);
}
lastTime = millis();
//Check if any reads failed and abort loop
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.printf("Failed to read from DHT11 sensor!\n");
return;
}
Serial.printf("Temp(C): %0.2f, Temp(F): %0.2f, Humid: %0.2f\n",t,f,h);
}
// this is our 'wait for incoming subscription packets' busy subloop
Adafruit_MQTT_Subscribe *subscription;
while ((subscription = mqtt.readSubscription(1000))) {
if (subscription == &mqttLED) {
ledOn = atoi((char *)mqttLED.lastread);
analogWrite(D4,ledOn);
Serial.printf("Received %i from Adafruit.io feed LED \n",ledOn);
}
}
}
// Function to connect and reconnect as necessary to the MQTT server.
void MQTT_connect() {
int8_t ret;
// Stop if already connected.
if (mqtt.connected()) {
return;
}
Serial.print("Connecting to MQTT... ");
while ((ret = mqtt.connect()) != 0) { // connect will return 0 for connected
Serial.printf("%s\n",(char *)mqtt.connectErrorString(ret));
Serial.printf("Retrying MQTT connection in 5 seconds..\n");
mqtt.disconnect();
delay(5000); // wait 5 seconds
}
Serial.printf("MQTT Connected!\n");
}
Comments