Partnerzy

Astro-Miejsca


URANIA

astroturystyka

100 lat IAU

IAU

Comet

Centrum Nauki Kepler

Planetarium Wenus

ERC

Centrum Nauk Przyrodniczych

Orion,serwis,astronomii,PTA

POLSA

Astronomia Nova

Astronarium

forum astronomiczne

IPCN

Portal AstroNet

Puls Kosmosu

Forum Meteorytowe

kosmosnautaNET

kosmosnautaNET

Nauka w Polsce

astropolis

astromaniak

PTMA

PTR

heweliusz

heweliusz

ESA

Astronomers Without Borders

Hubble ESA

Space.com

Space Place

Instructables

Tu pełno nauki

Konkursy

Olimpiady Astronomiczne
Olimpiada Astronomiczna przebiega w trzech etapach.
Zadania zawodów I stopnia są rozwiązywane w warunkach pracy domowej. Zadania zawodów II i III stopnia mają charakter pracy samodzielnej. Zawody finałowe odbywają się w Planetarium Śląskim. Tematyka olimpiady wiąże ze sobą astronomię, fizykę i astronomiczne aspekty geografii. Olimpiady Astronomiczne


Urania Postępy Astronomii - konkurs dla szkół


astrolabium

Organizatorem konkursu astronomicznego jest Fundacja dla Uniwersytetu Jagiellońskiego a patronat nad akcją sprawuje Obserwatorium Astronomiczne im. Mikołaja Kopernika będące instytutem Wydziału Fizyki, Astronomii i Informatyki Stosowanej Uniwersytetu Jagiellońskiego w Krakowie.
Zobacz szczegóły »

astrolabium

konkurs, astronomiczny

AstroSklepy

Serwis Astro - 30 lat AstroDoświadczenia!

Astro Schopy
 Firma ScopeDome

Planeta Oczu

Astrocentrum

ARDUINO - Stacja pogody

Arduino,DHT22,Stacja Pogody Stacja Pody - LCD z danymi z czujnikaDo wykonania projektu wykorzystana zostanie platforma ARDUINO. Jest prosta, tania i ma duże wsparcie na rynku. Można nabywać gotowe moduły lub wykonywać je samemu. Istota działania tej platformy opiera się na umiejętności dobrego zaprogramowania tego co ma być wykonane przez mikrokontroler. Trzeba więc mieć pomysł na realizację i niestety nauczyć się programowania w C. Niestety ale i stety, bo rozwijając takie umiejętności staje przed tobą czytelniku cały świat.

W pierwszej kolejności zrobiony został termometr. Do platformy ARDUINO podłączony został scalony czujnik temperatury DS1820, a na kontrolerze działał program monitorowania temperatury z wyznaczaniem temperatury minimalnej i maksymalnej w czasie pracy. Temperatura to jednak dopiero początek. Do pełni danych potrzebna jest przynajmniej wilgotność względna. I dlatego rozbudowie uległ system pomiaru.

Arduino,DHT22,Stacja Pogody Czujnik DHT22 - czujnik wilgotności i temperatury w obudowieW nowym rozwiązaniu zastosowano czujnik DHT22. Razem z rezystorem i kondensatorem filtrującym zamontowano go na małej płytce drukowanej. Do podłączenia wykorzystano przewód telefoniczny. Sukces platformy ARDUINO polega na wykorzystaniu dostępnych bibliotek obsługujących poszczególne moduły. Tak samo było i tym razem. Ale … No właśnie jest ale. W czasie testów odbyła się nierówna walka z generowanymi błędami komunikacyjnymi między kontrolerem i czujnikiem. Okazało się, że winne są właśnie biblioteki. Czujnik pracuje z częstotliwością 8Hz a nasze ARDUINO z 16 Hz. Poszukiwania doprowadziły do autora bibliotek z obsługa błędów i filtrowaniem danych (Link - biblioteka DHT22). Co w efekcie zaowocowało … dobrze działającym urządzeniem.

Jak To Jest Zrobione?
Materiały:
  1. ARDUINO UNO z ATMEGA 383 lub inny podobny
  2. Czujnik DHT22
  3. Rezystor 10kR
  4. kondensator 100pF - ceramiczny
  5. Przewód trzy-cztero żyłowy
Arduino,DHT22,Stacja Pogody Czujnik DHT22 na płytce drukowanej z rezystorem i kondensatorem oraz podłączeniem do przewodu transmisji danych i zasialniaCzujnik wymaga odpowiedniego podłączenia. DHT22 musi mieć podłączony rezystor między piny VCC (zasilanie 5V) i DAT (złącze danych). Aby wyciszyć maksymalnie zakłócenia elektryczne, zgodnie z notą katalogową zamontowano także kondensator 100pF między VCC i GND (masa).

Reszta to już tylko oprogramowanie. Dane zostają odczytane z czujnika. Bieżąca temperatura i wilgotność prezentowane są na wyświetlaczu. Do tego w dwóch zmiennych przechowuje się wartość maksimum i minimum z odczytanych temperatur. Co dwie sekundy odczytywane są dane z czujnika, modyfikowane wartości temperatury minimalnej i maksymalnej i wszystkie te dane prezentowane są na wyświetlaczu LCD. W tym rozwiązaniu zastosowano możliwość monitorowania danych przez port szeregowy COM. Po podłączeniu ARDUINO do komputera przez USB uruchamiamy IDE i włączamy monitor portu szeregowego. Na ekranie zobaczymy bieżące odczyty danych.

Arduino,DHT22,Stacja Pogody Stacja pogody - okno programu IDE ARDUINO z kodem programu Arduino,DHT22,Stacja Pogody Okno Danych ze Stacji Pogody - port COM -wilgotność, temperatura w stopniach Celsjusza i Fahrenheita


Wartości min i max temperatury przechowywane są do czasu kolejnego restartu mikro-kontrolera. Z czasem będą przechowywane w pamięci i możliwe do odczytu, aby np. prześledzić zmiany temperatury i wilgotności. Do tego jednak wymagana jest dalsza rozbudowa urządzenia. Możliwe jest też prezentowanie danych na stronie WWW. Więc możliwości zmian są szerokie.

Kod Programu "Stacja Pogody"

=============
//Stacja Pogody
//Autor Jacek Patka
//biblioteka DHT22 - https://github.com/markruys/arduino-DHT
//Pomiar temperatury i wilgotnosci
//wyznaczenie temperatury minimalnej i maksymalnej
//dane na LCD i COM

#include "DHT.h"
#include <LiquidCrystal.h>
DHT dht;
LiquidCrystal lcd(8,9,4,5,6,7); 
float temp, min = 150, max = -150;
void setup()
{
  lcd.begin(16, 2);
  lcd.print("Reading sensor");
  Serial.begin(9600);
  Serial.println();
  Serial.println("Status\tHumidity (%)\tTemperature (C)\t(F)");

  dht.setup(2); // data pin 2
}

void loop()
{
  delay(dht.getMinimumSamplingPeriod());

  float humidity = dht.getHumidity();
  float temperature = dht.getTemperature();

//Wyznaczenie temperatury min i max
  if(temperature < min)
    min = temperature;
  if(temperature > max)
    max = temperature;

 //Dane na LCD
 lcd.clear();

 char tempF[6]; 
 char humF[6];
 dtostrf(temperature, 5, 1, tempF);
 dtostrf(humidity, 2, 0, humF);

 lcd.print("T:"); 
 lcd.print(tempF);
 lcd.print((char)223);
 lcd.print("C ");
 lcd.print("H: ");
 lcd.print(humF);
 lcd.print("%");
 
 char minF[6]; 
 char maxF[6];
 dtostrf(min, 5, 1, minF);
 dtostrf(max, 5, 1, maxF);
 lcd.setCursor(0,1);
 lcd.print("<");
 lcd.print(minF);
 lcd.write((char)223);
// lcd.write('C');
 lcd.setCursor(9,1);
 lcd.print(">");
 lcd.print(maxF);
 lcd.write((char)223);
// lcd.write('C'); 

//Dane na COM 
  Serial.print(dht.getStatusString());
  Serial.print("\t");
  Serial.print(humidity, 1);
  Serial.print("\t\t");
  Serial.print(temperature, 1);
  Serial.print("\t\t");
  Serial.println(dht.toFahrenheit(temperature), 1);
}
=============

Brak komentarzy. Może czas dodać swój?

Dodaj komentarz

Zaloguj się, aby móc dodać komentarz.

Oceny

Tylko zarejestrowani użytkownicy mogą oceniać zawartość strony
Zaloguj się , żeby móc zagłosować.

Brak ocen. Może czas dodać swoją?
31,993,685 unikalne wizyty