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

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

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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.