В этом уроке мы создадим простую метеостанцию на Arduino, очень простой проект, который дает информацию о погоде.
Комплектующие
Начинаем по традиции с комплектующих для погодной станции Ардуино.
- Arduino UNO (Genuino UNO) × 1
- Adafruit стандартный LCD дисплей 16x2 × 1
- GY-BM E/P 280 × 1
- Резистор 221 ом × 1
- Провода (на выбор)
Дополнительно нам понадобится Arduino IDE.
Схема соединения
Итак, это первая версия очень простой метеостанции, созданной с помощью Arduino UNO, датчика BMP280 и ЖК-дисплея.
Версия v 2.0 (которая будет беспроводной) выйдет уже совсем скоро, так что добавляйте наш сайт в избранное и следите за новостями.
Следуйте схеме выше для соединения всех комплектующих.
Код
Вы можете скопировать или скачать код погодной станции Ардуино ниже.
Использованные библиотеки:
#include //Library for the LCD screen #include // Library for the BMP280 sensor BMP280 bmp; //Initialize your sensor LiquidCrystal lcd(12, 11, 5, 4, 3, 2); /*Initialize your LCD, make sure you wired it correctly */ #define P0 1013.25 //Standard atmospheric pressure #define contrast 9 //9 and 10 are the pins where you wire the matching LCD pins #define brightness 10 //for contrast and brightness regulation double T = 0; //Starting temperature value double P = 0; //Starting pressure value 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 a correction for the sensor error T = T - 0.8; // like said above 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("Error."); } else lcd.print("Error."); } void setup() { lcd.begin(16, 2); pinMode(contrast, OUTPUT); pinMode(brightness, OUTPUT); analogWrite(contrast, 100); // '100' and '255' are the contrast and brightness analogWrite(brightness, 255); // values I suggest, but you can change them as if(!bmp.begin()) { // you prefer delay(1000); lcd.print("Init. failed."); 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); }
Итоговый результат
В итоге у Вас должно получиться что-то вроде этого.
Отдельно можно сделать корпус для метеостанции и использовать PCB вместо макетной платы. Тогда у вас будет очень интересное и законченное устройство.
27 февраля 2021 в 10:57
круто!