mini stacja meteo

ODPOWIEDZ
IWillBeMeteo
Młodszy majsterkowicz
Posty: 2
Rejestracja: 1 paź 2017, 18:27

mini stacja meteo

Post autor: IWillBeMeteo » 1 paź 2017, 18:34

Cześć wszystkim!
Od jakiegoś czasu chciałem sobie zrobić coś w stylu stacji meteo. Ale niestety jestem zielony w tym temacie.
Ogólnie to na początek chciałem, żeby zrobić kilka czujników temperatury z których mógłbym pobierać dane na PC oraz rysować wykresy. A dokładniej to najlepiej jakby udało się zrobić to na BT lub WiFi aby PC nie musiał być włączony cały czas.
Chyba, że lepiej to rozwiązać na androidzie, sam nie wiem dlatego chciałem się was poradzić jak Wy byście to zrobili. Wszelkie rady mile widziane. Oczywiście na początek piszę tylko o czujnikach temperatury aby dowiedzieć się co i jak a później pomału robić coś dalej
Pozdrawiam

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Awatar użytkownika
macin
Majsterkowicz
Posty: 190
Rejestracja: 1 lip 2012, 11:24
Lokalizacja: Bydgoszcz

Re: mini stacja meteo

Post autor: macin » 1 paź 2017, 19:01

Można wykorzystać esp8266 i czujniki ds18b20 i wrzucać dane do bazy w domu lub na zewnątrz, potem według upodobania tworzyć wykres, wtyczkę do przeglądarki lub co się chce,
IWillBeMeteo
Młodszy majsterkowicz
Posty: 2
Rejestracja: 1 paź 2017, 18:27

Re: mini stacja meteo

Post autor: IWillBeMeteo » 1 paź 2017, 19:09

Ja już jakiś czas temu próbowałem to zrobić na arduino i wlaśnie na ds18b20 i do tego program jakiś tylko nie pamiętam nazwy ale teraz chciałbym to zrobić inaczej. To znaczy napisać program w którym będę miał w okeinku bierzącą tem a klikając na nią bedzie mi sie wyświetlał wykres z ostatniej doby etc. I dlatego prosze was o radę jak się za to zabrać jak zacząć na jakich częściach w jakim języku itd itd. Pracuje za granicą i popołudniami mam dużo czasu a lepiej się czymś zająć żeby czas leciał :)
radek_w
Młodszy majsterkowicz
Posty: 1
Rejestracja: 1 paź 2017, 21:48

Re: mini stacja meteo

Post autor: radek_w » 1 paź 2017, 22:07

Pomiar najlepiej zrobić na układach mających dostęp do sieci WiFi i internetu.
Jako obsługę czujników - polecam ParticlePhoton https://www.particle.io/products/hardwa ... fi-dev-kit lub ESP8266.

Do zbierania i wyświetlenia danych na początek polecam https://thingspeak.com
Można tam łatwo wysyłać dane i używać go jako bazy danych ... lub utworzyć własny widok i potem zobaczyć je na stronie WWW w formie wykresu.
Np tu są moje dane któe kiedyś zbierałem https://thingspeak.com/channels/91016

Zaletą Particle Photon jest fakt, że jest on zgodny na poziomie języka z arduino, edytor i kompilator są w chmurze i aktualizacja oprogramowania układu jest wykonywana przez internet.
Wystarczy że zalogujesz się do "chmury" poprawisz soft, skompilujesz i już.... płytka wykryje że jest nowa wersja i pobierze i uruchomi.

poniżej mój przykładowy kod dla czujnika DHT22.

Kod: Zaznacz cały

#define SERIALDEBUG

// This #include statement was automatically added by the Particle IDE.
#include "Adafruit_DHT.h"

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain
#define DHTPIN 2     // what pin we're connected to

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11		// DHT 11 
#define DHTTYPE DHT22		// DHT 22 (AM2302)
//#define DHTTYPE DHT21		// DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

TCPClient client;
DHT dht(DHTPIN, DHTTYPE);
float h,t;
char httprequest[128];
char httpresponse[128];
char host[] = "api.thingspeak.com";
char apikey[] =  "xxxxxxxxxxxxxxxxxx";

float volt;
int analog;

#define pause 60 // in seconds
unsigned int i;
unsigned long uptime = 0;

void setup() {
    #ifdef SERIALDEBUG
	Serial.begin(9600); 
	Serial.println("DHTxx test!");
    #endif
    RGB.control(true);
    RGB.color(255,255,255);
}

void loop() {
    
    analog = analogRead(0);
    volt = analog * (6.6/4096);
    
    RGB.color(255,0,0);
    dht.begin();    
    // Reading temperature or humidity takes about 250 milliseconds!
    // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
    h = dht.getHumidity();
    t = dht.getTempCelcius(); // Read temperature as Celsius
    RGB.color(0,255,0);
    uptime = millis();
    sprintf(httprequest,"GET /update?key=%s&field1=%.1f&field2=%.1f&field3=%i&field4=%f\r\nHost: %s\r\t\r\t",apikey,t,h,uptime/1000,volt,host);
    Particle.publish("req",httprequest);
    
    if (not client.connected()) {
        if (client.connect(host, 80)) client.print(httprequest);
        delay(100); //wait 100ms for response
    };
    
    //read http response is sent
    if (client.connected()) {
        i=0;
        while(client.available()) httpresponse[i++]=client.read();
    };
    httpresponse[i]=0;
    if (i>0) Particle.publish("response",httpresponse);

    //disconnect socket form serwer
    client.stop();
    
    RGB.color(0,0,0);
    #ifdef SERIALDEBUG
    Serial.println("Sleep");
    #endif
    
    //go deep sleep for pause sec ( reset after wakeup )
    System.sleep(SLEEP_MODE_DEEP,pause);
}
ODPOWIEDZ

Strony partnerskie: