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
mini stacja meteo
-
- Młodszy majsterkowicz
- Posty: 2
- Rejestracja: 1 paź 2017, 18:27
Re: mini stacja meteo
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,
-
- Młodszy majsterkowicz
- Posty: 2
- Rejestracja: 1 paź 2017, 18:27
Re: mini stacja meteo
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ł :)
Re: mini stacja meteo
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.
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);
}