Witaj na Forum Linuxiarzy
Zanim zalogujesz się, by pisać na naszym forum, zapoznaj się z kilkoma zasadami savoir-vivre'u w dziale Administracja.
Wiadomości z problemami zamieszczone w wątku "Przywitaj się" oraz wszelkie reklamy na naszym forum będą usuwane.

Miernik wiatru

Zaczęty przez KubaK, Luty 05, 2017, 04:15:41 PM

Poprzedni wątek - Następny wątek

KubaK

Witam! Jako że mieszkam blisko dużego jeziora i równocześnie jestem windsurferem :) wpadłem na pomysł aby zrobić mini stację pogodową na raspberry pi 3, której wyniki działania będą umieszczane na stronie www. Na początku chciałbym mierzyć samą siłę wiatru. Wpadłem na pomysł: prosty program, który sczytuje prędkość wiatru zapisuje go do pliku, następnie poprzez cron co np. 1 sekundę wywołuje skrypt bash, który wgrywa ten plik na serwer www przez ftp. Strona będzie pobierała informację z tego pliku i wyświetlała ją.

Program w języku C:

#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>

#define pinWiatr 17

int main() {
FILE *fp;
int licznik = 0;
int obroty = 0;
float wiatr = 0;
wiringPiSetupGpio();
pinMode(pinWiatr, INPUT);


for (;;) {
licznik++;

if (digitalRead(pinWiatr) == LOW) {
delay(2);
while (digitalRead(pinWiatr) == LOW);
obroty++;

}
if (licznik == 100) {
fp = fopen("wiatr.txt", "w");
wiatr = (obroty*2.40114)*0.5399569444;
fprintf(fp, "%0.2lf", wiatr);
fclose(fp);
system("/bin/bash -c ./ftp.sh &");
printf("%0.2lf\n", wiatr);
//printf("%lf\n", wiatr);

licznik = 0;
obroty = 0;
}
delay(8);

}
return 0;
}

Nie testowałem go jeszcze, ponieważ nie mam jeszcze czujnik wiatru :P

Jak myślicie, ma to sens? Czy aktualizacja pliku poprzez ftp co sekundę to mało "ekonomiczny" pomysł?
Czekam na wasze sugestie :)

lesio

Nie do końca rozumiem działanie programu. Plik jest otwierany przed pętlą, a następnie wielokrotnie zamykany w pętli. Związek zmiennej "wiatr" z wskazaniami czujnika niejasny. Myślę, że najpierw warto przetrenować skuteczny odczyt z czujnika i zapis do pliku.
Warto się zastanowić, czy należy odnotowywać  co jakiś czas wartość chwilową, czy też uśrednioną za okres między odczytami?
Transfer pliku jest oczywiście prawidłowym sposobem przekazywania informacji między komputerami. A może warto wziąć pod uwagę udostępnianie katalogu z plikiem np. po NFS?

KubaK

#2
Przyszedł mi czujnik prędkości wiatru. Poprawiłem program (Już chyba działa prawidłowo :) )
Miałem problem z cronem. Teraz wywołuję tylko ten program i on całą resztę wykonuje.



lesio

Jeśli wszystko działa, to gratuluję. Współpraca komputera z nietypowymi urządzeniami zewnętrznymi to zawsze ciekawe wyzwanie.

Zobacz najnowsze wiadomości na forum