// LED Display Libs #include "SPI.h" #include "Wire.h" #include "stdio.h" #include "Adafruit_GFX.h" #include "Fonts/FreeSans9pt7b.h" #include "Adafruit_SSD1306.h" #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) #define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin) #define OLED_ADDER 0x3C Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT); // Gas Sensor & LED Alert Pins #define gasSensor 34 #define alertLED 23 #define button 32 #define test 33 int alertValue = 0; // Wifi and IoT Libs and Values // * Hidden for security reasons #include "WiFi.h" #include "WiFiClientSecure.h" #define WIFI_SSID "NETGEAR50" #define WIFI_PASS "aquaticpanda498" #define API_KEY "dkmxnPR2PPNL6Spb1sNZxP" #define SERVER "maker.ifttt.com" #define PORT 443 void setup() { int i = 10; Serial.begin(9600); display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDER); pinMode(alertLED, OUTPUT); pinMode(button, INPUT_PULLUP); // Starts the Wifi WiFi.begin(WIFI_SSID, WIFI_PASS); // If the Wifi cannot connect to the modem while(WiFi.status() != WL_CONNECTED && i >=0) { delay(1000); Serial.print(i); Serial.print(", "); i--; } } void loop() { int gasLevel = analogRead(gasSensor); // Reads sensor value gasLevel = gasLevel - 1600; Serial.println(gasLevel); // Displays on I2C LED Display display.clearDisplay(); // Has to clear the display display.setTextSize(1); display.setTextColor(WHITE); display.setFont(&FreeSans9pt7b); display.setCursor(20,12); display.println("CO Level: "); display.setTextSize(2); display.setFont(&FreeSans9pt7b); display.setTextColor(WHITE); display.setCursor(30,45); display.println(gasLevel); display.display(); while(alertValue == 1 && digitalRead(button) != 0){ triggerAlarm(gasLevel); } if (digitalRead(test) == 0){ // Alert System alertValue = 1; triggerAlarm(gasLevel); } else{ alertValue = 0; delay(1000); digitalWrite(alertLED, LOW); } } void triggerAlarm(int gasLevel){ sendAlert(gasLevel); for (int x = 0;x<5;x++){ digitalWrite(alertLED, HIGH); delay(100); digitalWrite(alertLED, LOW); delay(100); } } void sendAlert(int gasLevel) { // Creates a WiFi client WiFiClientSecure client; if (!client.connect(SERVER, PORT)) { Serial.println("Connection failed"); return; } // URL for the trigger String event = "smokeAlert"; String url = "/trigger/"; url += event; url += "/with/key/"; url += API_KEY; url += "?value1="; url += String(gasLevel); Serial.print("Requesting URL: "); Serial.println(url); // Sends a request client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + SERVER + "\r\n" + "Connection: close\r\n\r\n"); // Client ends client.stop(); }