Tag-arkiv: vejrstation

Projekter med Raspberry Pi og billige ting fra Kina

Jeg har det sidste års tid kastet min elsk på Raspberry Pi og node.js. Det har blandt andet mundet ud i en vejrstation (som du kan se i aktion her og læse om tilblivelsen af regnmåleren her). En af mine favoritbeskæftigelser er også at surfe på Deal Extreme og andre kinesiske websider efter nye dele. Varerne på Deal Extreme er i forvejen latterligt billige, men når fragten er gratis, kommer man nemt til at sidde og fylde mere og mere sære ting i indkøbskurven.

For tiden har jeg en række nye projekter i tankerne:

  • Strømmåler. Min strømmåler er af typen, der blinker, hvor 500 blink svarer til 1 kWh. Jeg kunne tænke mig at montere en lyssensor, som kan opfange disse blink og gemme dem i en database. Data!
  • Måle varmepumpens effektivitet. Jeg har en luft->vand varmepumpe som primær varmekilde. Den fungerer i korte træk sådan, at koldt vand pumpes ud for at blive varmet op og komme tilbage. Jeg forestiller mig at man kunne montere en temperatursensor på de to rør og måle temperaturforskellen med jævne mellemrum. Data!
  • Vindmåler. Vejrstationen er ikke komplet, for den mangler vindmåleren. Den er under construction. I korte træk er den konstrueret sådan, at en mølle driver en sort plade. Pladen har et hul, og på den ene side sidder en lyssensor, og på den anden side sidder en laser. Hver gang sensoren registrerer laseren, har møllen kørt en runde, som kan gemmes i en database. Vi valgte en laser, fordi den giver et kraftigt lys, man ikke kan tage fejl af, og … laser!

For tiden er jeg i gang med et konkret projekt, der handler om at overvåge og delvist automatisere mit drivhus. Udover de åbenbare ting som måling af temperatur, luftfugtighed og jordfugtighed har jeg også planer om at installere en blæser. Den skal kobles til et solcellepanel, og når det bliver tilstrækkelig varmt (ifølge målingerne fra temperatursensoren) skal Pi’en åbne for strømmen mellem solcellerne og blæseren, og det skal forhåbentligt køle drivhuset lidt ned. Det bliver nemlig temmelig varmt.

Derudover har jeg nogle andre dele liggende, som jeg endnu ikke har fået brugt. Blandt andet et magnetometer (som måler hvordan den står i forhold til Jordens magnetfelt), en 433 MHz sender og modtager, og en skærm fra en Nokia 5110.

Jeg foretrækker Raspberry Pi fremfor for eksempel Arduino, fordi den er en hel computer med fuldt operativsystem etc. Det betyder, at jeg blandt andet selv kan vælge programmeringssprog, og der er det sjovt at man kan bruge JavaScript.

Gør det selv regnmåler

Når man bor i regnvåde Bergen, frister det ikke altid at bevæge sig udenfor. Man kan lige så godt prøve at få det bedste ud af det, så hvorfor ikke prøve at måle nedbøren?

Man kan selvfølgelig stille en beholder ud i regnvejret og måle, hvor meget vand der ender i den, men hvor kedeligt er det ikke? Nej, der skal være strøm og internet involveret, før det er noget ved.

Udgangspunktet var at tage en Raspberry Pi og lave en vejrstation. Den skal måle forskellige vejrdata med jævne mellemrum og gemme dem i en database. Ovenpå det skal der være en webside, hvor data kan læses – både her & nu samt historiske data.

Regnmåleren er i bund og grund ret simpel: En tragt leder vandet ned i et af kamrene i en todelt beholder. Beholderen står på en akse og vipper, når det ene kammer er fuldt, så kammeret tømmes mens nyt vand løber ned i det andet kammer. Siden man kender arealet på tragten og hvor mange milliliter vand kamrene kan rumme, kan man beregne hvor mange millimeter regn et vip svarer til. Dette kaldes også en tipping bucket rain gauge.

Når man bygger regnmåleren, bør man være nøje med at kalibrere rigtigt, så begge kamre rummer lige meget vand. Siden det er ret små mængder, vi snakker om, er det en god ide at gå på apoteket og købe den mindste sprøjte, de har. Med den kan man fylde små mængder vand i et kammer ad gangen og på den måde finde ud af, hvor meget vand der skal til, før beholderen tipper.

Vores regnmåler endte med en overflade med en diameter på 9cm, og hvert kammer kan indeholde 5ml vand. Det betyder, at hvert vip svarer til omtrent 0,8mm regn.

Udregningen er 5ml / ((4,5cm2 * π)/10) = 0,78mm.

En opløsning på 0,8mm per vip er lidt i overkanten. Man bør stræbe efter 0,1 – 0,2mm. Vi håber på at lave en version 2.0 med bedre opløsning.

For at aflæse regnmåleren bruger vi en fotoresistor, som lyses op af en diode. Fotoresistoren er koblet til en kondensator, som lades op af strømmen den får. Et lille “flag” på en arm på bægeret vil skiftevis skygge for fotoresistoren eller ikke. Et program vil jævnligt aflæse strømmen fra fotoresistoren ved at måle den tid, det tager at lade kondensatoren op. Tiden siger noget om, om der er lys på fotoresistoren eller ikke, og man kan dermed finde ud af, om armen har bevæget sig siden forrige aflæsning.

Selve aflæsningen kan gøres bedre, og vi kommer forhåbentligvis til at ændre det i version 2.0. I en perfekt verden sendes der et signal til computeren, når flaget bryder lysstrålen – ikke noget med at huske på hvad forrige status var. Siden en Raspberry Pi udelukkende har digitale indgange, kræver det at man laver et smart kredsløb, der kan sende strømmen videre til inputtet kun når lysstrålen brydes.

Pi’en har ikke alverden med diskplads eller CPU-kræfter, så jeg valgte at gemme dataene på en server – i dette tilfælde en EC2 hos Amazon. Der har jeg et lille REST API som tager imod aflæsninger fra Pi’en, og en webside viser aggregerede tal til min store fornøjelse.

Planen er at open source hele molevitten, men jeg vil gerne have modnet og strømlinet koden lidt mere, før jeg viser det frem.