Bouw een Simpele Weerstation met Arduino UNO, BMP280 Sensor en LCD
Onderdelen en Benodigdheden
| Arduino UNO | × | 1 |
| Adafruit Standard LCD - 16x2 Wit op Blauw | × | 1 |
| GY-BM E/P 280 (BMP280 Sensor) | × | 1 |
| Weerstand 221 ohm | × | 1 |
| Draadjes (generisch) | × | 17 |
| UTSOURCE Elektronische Onderdelen (leverancier) | × | 1 |
Apps en Online Diensten
- Arduino IDE - Voor het programmeren van de Arduino
Over dit Project
Dit is de eerste versie van een heel simpel weerstation gemaakt met een Arduino UNO, een BMP280 sensor en een LCD-scherm. De BMP280 meet temperatuur en luchtdruk met hoge precisie.
Sponsor: Utsource.net - een betrouwbare website voor het bestellen van elektronische componenten voor je projecten!
Ik werk al aan versie 2.0 (die draadloos zal zijn), dus blijf me volgen voor updates! ;)
Code
Arduino Code (C/C++)
Met deze code kun je de sensordata naar het LCD scherm sturen. De code initialiseert de sensor en het LCD, leest temperatuur en druk uit, past een kleine correctie toe en toont de waarden op het scherm.
#include <LiquidCrystal.h> // Bibliotheek voor het LCD scherm
#include <BMP280.h> // Bibliotheek voor de BMP280 sensor
BMP280 bmp; // Initialiseer je sensor
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Initialiseer je LCD, check de wiring
#define P0 1013.25 // Standaard atmosferische druk
#define contrast 9 // Pinnen voor contrast en helderheid regeling
#define brightness 10
double T = 0; // Startwaarde temperatuur
double P = 0; // Startwaarde druk
char measure = 0;
void collectData() {
measure = bmp.startMeasurment();
if(measure != 0) {
delay(measure);
measure = bmp.getTemperatureAndPressure(T, P);
if(measure != 0) {
P = P + 17; // '+17' is een correctie voor sensorfout
T = T - 0.8; // Zie boven
lcd.clear();
lcd.print("T: ");
lcd.print(T);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("P: ");
lcd.print(P);
lcd.print(" hPa");
} else {
lcd.print("Fout.");
}
} else {
lcd.print("Fout.");
}
}
void setup() {
lcd.begin(16, 2);
pinMode(contrast, OUTPUT);
pinMode(brightness, OUTPUT);
analogWrite(contrast, 100); // '100' en '255' zijn de contrast en helderheid waarden die ik voorstel
analogWrite(brightness, 255);
if(!bmp.begin()) {
delay(1000);
lcd.print("Init. mislukt.");
lcd.setCursor(0, 1);
delay(1000);
lcd.print("Check wiring.");
while(1);
} else {
lcd.print("Init. OK.");
}
bmp.setOversampling(4);
delay(2000);
collectData();
}
void loop() {
collectData();
delay(2000);
}
Schema's
Met deze wiring zou je geen problemen moeten ondervinden:
Productieproces
- Een buitenweerstation bouwen met Raspberry Pi 2 en ADS-WS1
- Een Raspberry Pi-weerstation bouwen dat dagelijkse weergegevens e-mailt
- Geavanceerd Weerstation v2.0: Real-time Temperatuur, Druk, Vochtigheid & Hoogte Monitoring
- Arduino-gestuurde 6-Shooter Drank Mixstation – Bouw je eigen Cocktail Automaat
- Arduino Digitale Dobbelsteen: Bouw Je Eigen LCD-willekeurige Getalgenerator
- DIY Arduino USB Gaming Controller – Bouw Je Eigen High-Performance Gamepad
- Pixel Chaser: Interactieve één-tik LED-spel met Arduino Nano
- High-Performance Arduino Weerballon Datalogger
- Bouw een $10 Draagbare Arduino Weerstation (AWS) – Eenvoudige DIY met Nano, DHT22, BMP180 & LCD
- eDOT: Precieze Arduino-klok & weerstation met ingebouwde IR-remote
- NeoPixel Matrix Pong op Arduino Nano: Bouw je eigen neon Pong-spel