WindWiz

En GSM-uppkopplad vindmätare

Vår&sommar 2012

Jag har slarvat med blogguppdateringar och det straffar sig när man väl tar sig tid att skriva. Arbetet sen i November har varit något ofokuserat och det är svårt att sammanfatta allt i samma inlägg. Det eviga bekymret med spänningsdippar kvarstår, vilket resulterat i att jag tappat förtroendet för min nuvarande plattform. Jag har gjort nya försök att designa ett eget kretskort, men behöver hjälp med caddning. Min plan är att försöka värva någon för detta, men det är svårt att hitta kompetent folk som kan tänka sig ställa upp till en rimlig peng. Allra helst hade man velat hitta en skärmflygande elektronikingenjör som arbetar med cad till vardag, som råkar ha alldeles för mycket fritid över. Men det är nog tyvärr önsketänk.

Det kort jag designat är tänkt att vara ett prototypkort för att testa min design med det nya SIM900-modemet. För att slippa kladda med t.ex. antenn-matchning så har jag för detta kort valt att plocka in en färdig GSM-modul, som monteras mha stiftlister på mitt prototypkort. GSM-modulen jag valt är Propox MMsmartGSM. Kortet drivs på 4V som går rakt in i GSM-modulen. GSM-modulen har sedan en egen regulator som tar ner spänningen till 2.8V, som används för att driva AVR-processorn. Eftersom AVR-processorn kör på 2.8V, vilket också råkar vara GSM-modulens I/O-spänning, så krävs ingen omvandling. Nästan som om någon tänkt till här ;-)

För reglering av input-spänning har jag använt en färdig modul, KIS-3R33S. Den ger egentligen ut 3.3V, men kan öppnas och modiferas för andra spänningar. Inuti sitter ett MP2307-chip och gör allt arbete, och fixar önskar utspänning (4V) upp till 3A med en inspänning mellan 4.75-23V. Med det stora input-spannet borde man kunna koppla på nästan vad som helst!

För inkoppling av sensorer finns en stiftlist (CONN1) som drar ut I2C-pinnarna från AVR-processorn, ett antal GPIO, ADC m.m.

Prototypkort

Propox MMsmartGSM

Kodbasen är för tillfället en enda stor röra då jag i våras tog beslutet att separera kärnan från den applikationsspecifika koden. Detta medför att man kan använda mjukvaran till annat än en vindmätare, som jag hoppas kunna göra i framtiden. Även hårdvaran är sådan att den skall fungera som en plattform för GSM-uppkopplade sensorer.  Min inspiration har till stor del varit linuxkärnan när jag designat mitt ”operativsystem”, då jag arbetat mycket med detta tidigare. Jag har försökt porta de delar som jag finner fiffiga, medans jag förenklat andra koncept som känns onödigt komplicerade.

T.ex. har jag inget behov av en äkta schemaläggare, men vill gärna ha förmågan att strukturera min kod i olika processer. Därför har jag valt att plocka in Protothreads, en portabel trådningsmekanism. Biblioteket arbetar att skutta omkring i kod via macro-inkapslade switch-block och tricks med goto, istället för att göra äkta kontextbyten. Detta medför låg overhead och god portabilitet. Fördelen är att kod kan struktureras som om kod kör i separata processer, medans det under ytan fortfarande fungerar som ett gäng tillståndsmaskiner. Vi får se hur bra det fungerar, jag misstänker att detta approach kan försvåra debugging något.

Jag har också lagt till ett abstraktionslager för hårdvaran, en s k ”HAL”. Detta gör att jag lättare kan byta plattform i framtiden, något jag gjort ett par gånger redan ;-) Ett HAL-lager underlättar också om man vill testköra kod på sin vanliga arbetsstation, som är mycket enklare att felsöka. I ett tidigare inlägg skrev jag om hur jag gjort en abstraktion för GSM-modem, och detta blir en förlängning som sträcker sig över andra periferienheter, t.ex. timers, sockets, lagring (t.ex. på fil eller flash) osv.

I sin första utgåva kommer det finnas ett HAL för Linux, och ett för Atmegan. Det innebär att man kan köra vindmätarmjukvaran på antingen en linuxmaskin, eller på den ”riktiga” hårdvaran. Givetvis skulle linuxmaskinen också kunna vara en relativt liten sak, som t.ex. en Raspberry Pi.

På tal om Raspberry Pi så får jag direkt erkänna att jag äger en och att jag redan avfärdat den som en lämplig vindmätarplattform. Åtminstone för den typ av vindmätare som skall fungera fristående. Strömförbrukningen är många gånger högre än min nuvarande plattform, och skulle kräva stora batteri och gigantiska solpaneler. För ett olastat Linux-system på Raspberry Pi drar ca 200 mA, medans en AVR endast drar 1 mA (eller ännu mindre i sömnläge). På detta tillkommer GSM-modem i båda fall. För vindmätare med fast ström är en RPi mycket intressant, men med det nya HAL-lagret har jag flexibilitet att byta vid ett senare skede om behovet finns.

Avslutningvis tänkte jag skriva några ord om andra relaterade projekt som progressat under sommaren. Jag har varit i kontakt med Onsalas rymdobservatorium för att höra om det finns möjlighet att få ut data från deras vindmätare på Onsala. Det visade sig gå alldeles utmärkt och de matar numera ut mätdata på webben varje minut. För tillfället håller jag på att bygga om winddb, den komponent i vindwebben som samlar in data från olika typer vindmätare och slår dem samma till ett enhetligt format, så den skall stödja även denna typ av mätare. När allt är klart kommer man kunna avnjuta live-data från Onsala, utifall att nån våghalsig flygare får för sig att ta en svängom på Torkelstorpsberget.

About these ads

Ett svar till “Vår&sommar 2012

  1. Karl-Petter Åkesson (@kallep) 2012/09/06 kl. 19:48

    Hej!
    känner igen det där med att vara dålig att blogga men i mitt fall har det mer berott på att det gått bra framåt! Min mätare har nu stått och kört helt fristående driven av solen i en månad på lördag!! Det kommer dock bli spännande att se när under hösten den kommer lägga av. Vet att jag inte har tillräckligt stor solcell och batteri för att klara december här men ligger på gränsen för november och januari…

    Intressant att du valt SIM900 med:) Jag körde på samma spår som tidigare, färdig komponent. Valde den Arduino shield som kinesiska Seeedstudio tillverkar http://www.seeedstudio.com/depot/wifi-shield-p-1220.html?cPath=139_141

    Intressant att läsa att du fått data av Onsala observatoriet. Har också liknande tankar att samla vinddata från massa olika givare, har redan tillgång till vägverkets givare. Skall vi inte försöka att samköra datan eller ta fram ett gemensamt API eller liknande?

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s

Följ

Få meddelanden om nya inlägg via e-post.

%d bloggare gillar detta: