Arduino Weather Station Using Oled #arduino #oled #arduinoprojects

by rayankiwan63 in Circuits > Arduino

1125 Views, 2 Favorites, 0 Comments

Arduino Weather Station Using Oled #arduino #oled #arduinoprojects

FSLFCQMKTYDNPDC.jpeg

Using a display to view the temperature and humidity of your environment can be possible using the DHT11 sensor with the easy to use Arduino. For this project, we will be using the Oled I2C SSD1306 display module to display the temperature and humidity readings gathered from the environment using the DHT11 temperature and humidity sensor

Supplies

weatherstation_schematic_6p6OZNIxEf.jpg

components needed

Components Needed

weatherstation_schematic_6p6OZNIxEf.jpg
  • Arduino uno
  • oled ssd1306
  • jumpers
  • breadboard
  • Dht11 temperature and humidity sensor

Code

#include "DHT.h" #define DHT11Pin 2 #define DHTType DHT11 //OLED #include #include #include DHT HT(DHT11Pin,DHTType); float humi; float tempC; float tempF; //OLED define #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) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); void setup() { Serial.begin(9600); //For DHT11 HT.begin(); //For OLED I2C if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64 Serial.println(F("SSD1306 allocation failed")); for(;;); } display.display(); //Display logo delay(1000); display.clearDisplay(); } void loop() { delay(1000); humi = HT.readHumidity(); tempC = HT.readTemperature(); tempF = HT.readTemperature(true); Serial.print("Humidity:"); Serial.print(humi,0); Serial.print("%"); Serial.print(" Temperature:"); Serial.print(tempC,1); Serial.print("C ~ "); Serial.print(tempF,1); Serial.println("F"); display.clearDisplay(); oledDisplayHeader(); oledDisplay(3,5,28,humi,"%"); oledDisplay(2,70,16,tempC,"C"); oledDisplay(2,70,44,tempF,"F"); display.display(); } void oledDisplayHeader(){ display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 0); display.print("Humidity"); display.setCursor(60, 0); display.print("Temperature"); } void oledDisplay(int size, int x,int y, float value, String unit){ int charLen=12; int xo=x+charLen*3.2; int xunit=x+charLen*3.6; int xval = x; display.setTextSize(size); display.setTextColor(WHITE); if (unit=="%"){ display.setCursor(x, y); display.print(value,0); display.print(unit); } else { if (value>99){ xval=x; } else { xval=x+charLen; } display.setCursor(xval, y); display.print(value,0); display.drawCircle(xo, y+2, 2, WHITE); // print degree symbols ( ) display.setCursor(xunit, y); display.print(unit); } }

Video