Skocz do zawartości

Budowa stacji meteo na arduino


kemustek

Pomocna odpowiedź

Witam wszystkich,

chciałbym zbudować stację meteo na podstawie tego schematu 

termometr_schem.jpg?x31322

Nie wiem czy mogę podać adres do konkurencyjnej strony gdzie jest cały opis, jesli tak to go dodam.

 

Moje pytanie dotyczy czujnika BME280, w schemacie ma on wyprowadzenie na 6 pinów, a w rzeczywistości są tylko 4.

Jak mam to podpiąć?

 

Pewnie będę miał później więcej pytań odnośnie samego programowania Arduino, bo kod podany na stronie poradnika i lekko zmodyfikowany przeze mnie nie chce się zgrać na adruino.

Dzięki za pomoc.

  • Lubię! 1
Link do komentarza
Share on other sites

1 minutę temu, AntekBezak napisał:

Jak są opisane piny na twoim czujniku?

Mam dokładnie taki czujnik z oznaczeniami jak w załączniku. Screenshot_2024-01-23-19-37-59-381_com.android.chrome.thumb.jpg.9bfac7ebd0e4c3ab4bfa226437539fd7.jpg

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

(edytowany)

@kemustek Na twoim miejscu podłączył to SCL i SDA z czujnika do A5 i A4 z arduino (bo tam jest SCL i SDA z arduino )Arduino-Pinout.png

potem w kodzie się dostosuje.

Edytowano przez AntekBezak
Link do komentarza
Share on other sites

24 minuty temu, keram167 napisał:

@kemustek  tu masz wersję 6-cio pinową. Zwróć uwagę, że ta wersja pracuje z napięciem 3,3V. Podana przez Ciebie pracuje z napięciem 5V.

Myślę że z napięciem nie będzie problemy bo mogę puścić przecież z arduino 5v.

24 minuty temu, AntekBezak napisał:

@kemustek Na twoim miejscu podłączył to SCL i SDA z czujnika do A5 i A4 z arduino (bo tam jest SCL i SDA z arduino )Arduino-Pinout.png

potem w kodzie się dostosuje.

Dzięki, jutro będę próbował. 

Link do komentarza
Share on other sites

(edytowany)
17 godzin temu, AntekBezak napisał:

@kemustek Na twoim miejscu podłączył to SCL i SDA z czujnika do A5 i A4 z arduino (bo tam jest SCL i SDA z arduino )Arduino-Pinout.png

potem w kodzie się dostosuje.

Czy możesz mi powiedzieć jak teraz dostosować ten kod?

mój wygląda tak

//uzyte biblioteki
#include <DHT.h>
#include <LiquidCrystal.h>
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
//definicja pinu i typu czujnika DHT
#define DHTPIN 8
#define DHTTYPE DHT22
//definicja pinow magistrali SPI
#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10
//definicja pinow LCD
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
//definicja DHT
DHT dht(DHTPIN, DHTTYPE);
//uzyte zmienne
float Tzew;
float Wilg;
float temperatura;
float cisnienie;
float wilgotnosc;
#define SEALEVELPRESSURE_HPA (1013.25) //cisnienie na poziomie morza
#define ALTITUDE 100.0 // wysokosc wzgledna w metrach dla miejsca pomiaru – u mnie 160 m npm
Adafruit_BME280 bme(BME_CS); // inicjalizacja czujnika BME w trybie hardware SPI
void setup() {
Serial.begin(9600);
Serial.println(F(“Start Testu”));
lcd.begin(16, 2); //start LCD 16×2
bool status;
status = bme.begin();
if (!status) {
Serial.println(“Brak sensora BME 280  sprawdz polaczenie”);
while (1);
}
Serial.println(“OK”);
}
void loop() {
temperatura = bme.readTemperature(); //odczyt temperatury z czujnika BME
cisnienie = bme.readPressure(); //odczyt cisnienia z czujnika BME
cisnienie = bme.seaLevelForAltitude(ALTITUDE,cisnienie); //przeliczenie cisnienia dla danej wysokosci npm
wilgotnosc = bme.readHumidity(); //wilgotnosc z czujnika BME
Tzew = dht.readTemperature(); //temperatura z czujnika DHT
Wilg = dht.readHumidity(); //wilogotnosc z czujnika DHT
lcd.setCursor(0,0);
lcd.print(“Tz: “);
lcd.print(Tzew);
lcd.print(” Tw: “);
lcd.print(temperatura);
lcd.setCursor(0,1);
lcd.print(“C: “);
lcd.print(cisnienie/100);
lcd.print(” W: “);
lcd.print(Wilg);
delay(1000);
}

Rozumiem że zmienić trzeba coś na początku w tym miejscu?

//definicja pinow magistrali SPI
#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10

Tylko jak byś mógł wyjaśnić co. Bo to mój pierwszy raz jak patrzę w te kody 🙂

Edytowano przez kemustek
Link do komentarza
Share on other sites

Spojrzyj na to:
https://blog.elektroweb.pl/bme280-czujnik-wilgotnosci-cisnienia-i-temperatury-podpiecie-do-arduino/

Zwróć uwagę, na inicjalizację obiektu, a także na inny kod sprawdzający podłączenie czujnika, który tutaj odpytuje konkretny adres na magistrali I2C.
Jeżeli nie używasz SPI, definicje te nie są Ci potrzebne.

Musisz się zapoznać z komunikacją I2C. 🙂
W przykładach masz program, którym możesz przeskanować magistralę I2C i poznać adresy podłączonych peryferiów: Plik -> Przykłady -> Wire -> i2c_scanner 

Link do komentarza
Share on other sites

43 minuty temu, Danyeru napisał:

Spojrzyj na to:
https://blog.elektroweb.pl/bme280-czujnik-wilgotnosci-cisnienia-i-temperatury-podpiecie-do-arduino/

Zwróć uwagę, na inicjalizację obiektu, a także na inny kod sprawdzający podłączenie czujnika, który tutaj odpytuje konkretny adres na magistrali I2C.
Jeżeli nie używasz SPI, definicje te nie są Ci potrzebne.

Musisz się zapoznać z komunikacją I2C. 🙂
W przykładach masz program, którym możesz przeskanować magistralę I2C i poznać adresy podłączonych peryferiów: Plik -> Przykłady -> Wire -> i2c_scanner 

Dziękuje, według Twoich wytycznych i poradnika zmodyfikowałem kod który teraz wygląda tak:

//uzyte biblioteki
#include <DHT.h>
#include <LiquidCrystal.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
//definicja pinu i typu czujnika DHT
#define DHTPIN 8
#define DHTTYPE DHT22

//definicja pinow LCD
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
//definicja DHT
DHT dht(DHTPIN, DHTTYPE);
//uzyte zmienne
float Tzew;
float Wilg;
float temperatura;
float cisnienie;
float wilgotnosc;
#define SEALEVELPRESSURE_HPA (1013.25) //cisnienie na poziomie morza
#define ALTITUDE 100.0 // wysokosc wzgledna w metrach dla miejsca pomiaru – u mnie 160 m npm

Adafruit_BME280 bme;
void setup() {
Serial.begin(9600);
Serial.println(F(“Start Testu”));
lcd.begin(16, 2); //start LCD 16×2
bool status;
status = bme.begin();
if (!bme.begin(0x76)) {
        Serial.println("Sprawdź połączenie nie znajduje modułu");
        while (1);
Serial.println(“OK”);
}
void loop() {
temperatura = bme.readTemperature(); //odczyt temperatury z czujnika BME
cisnienie = bme.readPressure(); //odczyt cisnienia z czujnika BME
cisnienie = bme.seaLevelForAltitude(ALTITUDE,cisnienie); //przeliczenie cisnienia dla danej wysokosci npm
wilgotnosc = bme.readHumidity(); //wilgotnosc z czujnika BME
Tzew = dht.readTemperature(); //temperatura z czujnika DHT
Wilg = dht.readHumidity(); //wilogotnosc z czujnika DHT
lcd.setCursor(0,0);
lcd.print(“Tz: “);
lcd.print(Tzew);
lcd.print(” Tw: “);
lcd.print(temperatura);
lcd.setCursor(0,1);
lcd.print(“C: “);
lcd.print(cisnienie/100);
lcd.print(” W: “);
lcd.print(Wilg);
delay(1000);
}

Czy wygląda to ok?

Dziękuje za pomoc.

Link do komentarza
Share on other sites

Z doświadczenia własnego, przy DHT22 wydłużyłbym czas (który tutaj masz delayem) do 2 sekund. 😉

Link do komentarza
Share on other sites

1 minutę temu, Danyeru napisał:

Z doświadczenia własnego, przy DHT22 wydłużyłbym czas (który tutaj masz delayem) do 2 sekund. 😉

Jestem totalnie zielony więc zgaduje że chodzi ci o delay(1000) zmieniłbyś na 2000?

 

Przy próbie wgrania do arduino niestety wywala błędy przy próbie wyświetlenia na wyświetlaczu. Znając życie mam go źle podpięte. 

Mam wyświetlacz JHD 162A który ma z boku jakieś dodatkowe zasilanie. Czy to musi też być podpięte?

IMG_20240124_160456.jpg

Link do komentarza
Share on other sites

3 minuty temu, keram167 napisał:

@kemustek to powinno Ci trochę pomóc.

Dzięki wedlug tego jest ok. 

powiedzcie mi jeszcze czy na arduino nano wystarczy zasilanie z USB czy muszę podpiąć się dodatkowo zasilaczem pod vin i gnd?

Link do komentarza
Share on other sites

Przed chwilą, ethanak napisał:

Powinno wystarczyć. Ale pytanie - z czego docelowo chcesz to zasilać? Bo przecież nie z usb z kompa...

docelowo myślałem o zasilaczu 5v taki jak do telefonu, powiedzmy 2A.

pytam bo po podłączeniu do kompa wykrywa płytkę ale wyświetlacz się nie podświetla.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.