WindWiz

En GSM-uppkopplad vindmätare

Mjuka serieportar

Under den gångna veckan har jag hittat lite strötid åt att dels testköra den nya GSM-modulen och dels hacka vidare på mjukvaran. För att få igång modulen fick jag utöka vindmätaren med en spänningsregulator, införskaffa ett Telia kontantkort och koppla på ytterligare en serieport. Men den verkar fungera fint! Den knastrar och knorrar likt en mobil nära en högtalare när den startar upp och efter ca 1 sekund börjar status-dioden blinka med 3 Hz, vilket enligt manual innebär att den registrerat sig på GSM-nätverket. Yeah!

Jag har även provat att köra enkla AT-kommandon mot modulen via en serieportskonsol. Förra söndagen lyckades jag bland annat få iväg ett Farsdags SMS till den gamle via en rå AT-terminal. Pretty cool!

AT-kommandon och GSM-modulens svar. I bilden ovan syns utläsning av modulens version, serienummer m.m.

För min test har jag kopplat modulen rakt på min PC, men i skarpt läge skall GSM-modulen kommunicera direkt med vindmätarens processor. Det finns förberedd hårdvara i vindmätarens processorchip som kan sköta denna kommunikationen, men den är redan upptagen för kommunikation med min PC. Även om min PC inte kommer hänga med utomhus när det väl är dags för montering så är det en ovärderlig felsökningshjälp som jag inte kan offra. Det är inte heller helt orimligt att man vill kunna koppla upp en laptop ”på plats” och läsa ut felkoder för en krånglande vindmätare. Så vad gör man? Det behövs 2 serieportar, men atmega168 har bara en!

Efter att ha kikat på chipalternativ kom jag fram till att alla chip som faktiskt har två portar också har betydligt högre energiförbrukning. Och är ganska mycket dyrare, eller kommer i sådan kapsel att det blir bökigt att montera/reparera. Till slut hittade jag en artikel om hur man kan emulera en serieport via generella I/O-pinnarna i Atmega-chippet med hjälp av mjukvara. Perfekt! Detta är dock en ganska plågsam operation och tar en hel del av vindmätarens processorkraft, men det väger helt klart upp nackdelarna eftersom chippet inte behöver bytas ut.

Planen är nu att använda den ”dedikerade” hårdvaruserieporten för GSM-kommunikation, och den långsamma mjukvaruserieporten för PC-kommunikation. Detta på grund av att PC-kopplingen förhoppningsvis kommer bli ett ganska ”exotiskt” användarfall i systemet. Den kommer främst användas i labbmiljö där strömförbrukning inte är ett problem, eller under korta perioder ute på fält när felsökning pågår.

Dramatiska bränder

Det är ju tänkt att hela den här vindmätarhistorian skall drivas på batteri. Jag måste erkänna, jag är ingen batteriexpert och för mig är det magiska prylar som ger ut en spänning X med en viss kapacitet Y. Om man önskar t.ex. 2X spänning kan man seriekoppla två batteri och ifall man önskar mer kapacitet, t.ex. 2Y, kan man parallellkoppla. Hur innanmätet ser ut har hittills inte intresserat mig särskilt, men vi har väl alla nån gång gjort ett potatisbatteri på lekis och fått ett hum om kemin som pågår under ytan.

Dagens batteri har kommit långt sen potatisen. Energidensiteten har ökat, vilket har tillåtit allt mindre batterikapslar och högre kapacitet. Batteriets egenskaper varierar vilt beroende på vilken typ (kemi) som används. Olika batterier har dessutom olika restriktioner och är lämpliga för vissa applikationer men helt olämpliga för andra.

Den där idén om en universell magiska energipryl känns inte längre lika korrekt. Besviken? Jo, jag också!

Generellt är det mer restriktioner på komplexa batterier med hög energitäthet. Moderna batteri som innehåller lithium-jon eller lithium-polymer kemi har restriktioner på hur mycket energi som får tas ur, i vilken takt, hur snabbt de får laddas och hur mycket de får laddas. Kemin i dessa mer avancerade batteri är betydligt mer instabil än gamla hederliga blybatteri och kan vid felhantering explodera eller fatta eld på ett ganska dramatiskt och otrevligt sätt. Kort sagt är detta inget batteri som är lämplig att ansluta direkt på en solpanel som kan variera kraftigt i sin laddström. Man måste dessutom se till att laddningen bryts och övergår till ”kittlingsfasen” när batteriet är mättat. Att kittla ett batteri innebär att man med små strömmar håller batteriet i trim när det är fullladdat.

Olika batterityper, eller rättare sagt kemityper, har olika spänningsnivåer. Lithiumbatterier ligger t.ex. på 3.7V (kan variera upp till 4.2V beroende på katod). Detta blir en slags minsta enhet och kan användas som byggsten vid seriekoppling till högre spänningar i multiplar av 3.7V. När man köper LiPo eller Li-Ion-batteri innehåller de ofta fler av dessa 3.7V celler internt, i RC-världen (radiostyrt) är det inte ovanligt med batteri-ackumulatorer på 7.4V (2x 3.7) eller 11.1V (3x 3.7). Dessa kan även innehålla flera parallellkopplade serier för att öka batterikapacitet. Benämningen som används är xS för x celler i serie och xP för x celler parallellt. T.ex. betyder 2S att två celler kopplats i serie, 3P att man parallellkopplat (och därmed tredubblat kapacitet). Man kan även se kombinationer, t.ex. 4S2P, som innebär totalt 8 st celler, seriekopplat kedjor med 4 celler vardera. Kedjorna är sedan parallellkopplade.

4S2P cellkonfiguration

Låter det knöligt? Lugna sig, det kommer mer! Lithium batterier är som bekant också betydligt mer känsliga för stora strömuttag (risk för explosion, som du kanske minns!). Ett batteri som är specat för 3.7V och 3200 mAh har kapacitet att leverera 3.7V vid 3.2 A (3200 mA) under en timme. Givetvis kan man dra göra större strömuttag på bekostnad av tid, t.ex. skulle man kunna ta ut 6.4A (2x 3.2A) under en halvtimme. Skulle du däremot försöka ta ut säg 100x så mycket ström, 320A, ur detta batteri skulle det troligtvis brinna upp. Så vart går gränsen? När är det risk för dramatisk brand?

Hur långt man kan gå beror på batteriets urladdningskapacitet. Detta är specat för varje batteri och varierar bland olika märke. Det är helt enkelt en egenskap som kostar. Om man surfar på hobbysidor för radiostyrt kan man hitta särskilda ”racing” batterier, med flashig blixtgrafik på förpackningen och med namn som ”MaxxxAmps”, ”Rally XL”, ”Stampede” osv. Dessa är batterier som tillåter aningen högre urladdningsfaktor än de billigare varianterna. Benämningen är zC där z är urladdningsfaktorn. 150C innebär t.ex. att du kan göra ett uttag på 150x kapaciteten. Om ovan 3.7V/3200 mAh hade en urladdningsfaktor på 10C hade man alltså kunnat ta ut 32A utan risk för dramatik.

På samma sätt finns en laddningsfaktor som bestämmer hur snabbt batteriet får laddas, t.ex max 1C. Kortfattat, Ladda för snabbt: Gameover. Ladda ur för mycket: Gameover. Ladda upp för mycket: Gameover. Solpaneler rimmar inte särskilt bra med dessa batterier. Så vad gör man? Man sätter in en slags regulator mellan solpanelen och batteriet som ser till att laddspänningen inte blir för hög trots strålande sol, att laddströmmen inte överstiger laddningsfaktorn och att laddningen upphör när batteriet är fullt. Jättebra!

Eftersom ett byggfel i laddningskretsen kan orsaka dramatiska bränder och potentiellt skogsbränder så är det helst något jag vill köpa in färdigt (läs: vältestat). Nu gäller det bara att hitta en regulator som klarar en inspänning på 20V från solpanel och laddar ett 11.1V LiPo-batteri. Att jag valt 11.1V (3S) beror på att GSM-modulen behöver 9-12V inspänning. Till mikroprocessorn och vindgivarna kommer denna spänning sedan justeras ner ytterligare till 3.3V. Spänningsdomänen kommer alltså att bli:

1) 20V solpanel

2) Regulator 20V till 11.1V

3) Regulator 11.1V till 3.3V

4) GSM-modul drivs på 11.1V källan (regleras internt ner till 3.7V)

Verkar det bra? Jag hoppas det. Ett bekymmer med alltför många spänningsomvandlingar är att detta kostar. En bra s k ”switchad” regulator har en verkningsgrad på kanske 90% medans de linjära ligger på ca 70-80%. Idealiskt hade man velat ha ett system som helt och hållet drivs på 3.7V. GSM-modulen i sig innehåller ytterligare en regulator som tar ner sin inkälla på 9-12V till just 3.7V. Det är lätt att vara efterklok! I nästa revision lär det bli en 3.7V GSM-modul, ett antal parallella LiPO-celler.

Avslutar med en bild från solpanelsmätningarna. UPPDATERING: I den första upplagan av detta inlägg fanns ett beräkningsfel i solpanelsmätningarna som gjorde att strömmen var en faktor 100x för lite. Duh 🙂 Nu har jag korrigerat och det ser genast bättre ut. 400 mA under peak-hours på en höstdag är helt okej!

Laddström från solpanel, 13 Nov, SV-läge delvis växelvis mulet/svag sol

Sverige – Solpanelens värsta fiende

Vilket kanonväder vi har! Grått, mulet och dystert. Soluppgång vid 8-snåret och ner igen vid 16-tiden. Det slog mig att detta måste vara nära ”värstafallsförhållanden” för solpaneler i Sverige, så jag har riggat upp en liten testpanel som skall placeras på min balkong för att förse med lite väderfull mätdata. Förhoppningsvis kan detta långtidstest (ett par dygn) svara på den vitkiga frågan: Hur mycket energi genererar en 20V/10W panel i praktiken under svenska vinterförhållanden?

Jag har kopplat ett motstånd över panelen som jag sedan läser av med en ”specialdesignad” multimeter, som tillåter att jag kan logga alla mätvärden på fil i min dator. Dessa skall sedan skalas om, plottas och analyseras. Denna information kan hjälpa mycket i dimensioneringsarbetet för  vindmätarelektronikens strömförbrukning och batterikapacitet. Som Tisdagsgodis bjuder jag på en film med min (som vanligt provisoriska) mätannordning:

PS. GSM-modulen har anlänt idag, än så länge har jag bara hunnit packa upp den och konstaterat att den var väldigt liten och behändig. DS.

Utelåst!

En regnig kväll upptäckte jag funktionen som gör att man inte längre kan programmera sin processor med ny programvara. Av misstag. Tydligen är det något som folk i säkerhetsbranschen vill kunna göra för att folk inte skall kunna mixtra med mjukvaran.

Dessvärre klassas inte mitt vindmätarbygge som en säkerhetslösning och man kan tycka att det borde vara svårare att aktivera denna utestängar-funktion av misstag. Men jag lyckades ändå! Lite stolt är jag.

Den gamla nerlåsta processorn är numera prydnad på hyllan och i labbet ligger en sprillans ny. Det är nu man är rätt nöjd att man valt en väldigt billig processor!

Det ”lilla misstaget” kostade drygt 4 dagar inkl frakt från svenska Lawicel shop, men sen dess har det hänt grejer:

  1. Programkoden börjar få lite fason. Den har lämnat det förskräckliga prototypstadiet och har gått in i ett mindre förskräckligt prototypstadie.
  2. Jag har bestämt mig för att lämna Arduino efter att jag upptäckt flera störande begränsningar: pin-headerspacing till påbyggnadskorten är ICKE-standard (troligtvis cad-fel som är för sent att rätta till då alla påbyggnadskort anpassat sig efter felet), och dels för att de flesta Arduino-brädor (inkl kloner) innehåller störande säkringar till strömkällan som tyvärr  är dimensionerade så att de kan slå till när man kopplar en tyngre last som ett GSM-modulen.
  3. Jag har försökt bilda mig en uppfattning om strömförbrukning med nuvarande prototyp, så jag kopplade multimetern i serie med vindmätaren samtidigt som den kontinuerligt samplade både riktning och hastighet och skrev ut resultatet på serieport i en oändlig loop. 1.5 mA på 3.3V, alltså ca 4.5 mW. När jag ryckte ur ”power”-lysdioden sjönk förbrukningen till ca 0.5 mA (1.6 mW). Rätt sjukt att lysdioden drar mer ström än alla andra komponenter i systemet just nu 🙂
  4. GSM-modul är beställd! Efter mycket velande föll valet tillslut på Indiska Rhydolabz GSM-modul. Främst för att den är den enda modul som enligt spec klarar ner till -20 grader celcius, men också för att den inte är bunden till Arduino-plattformen. Förhoppningsvis anländer modulen nästa vecka.
  5. Rhydolabz har även en GSM-modul i schysst ruggad låda med serieportskontakt, redo för inkoppling i PC. Denna skulle passa perfekt som ”telefongateway” mot vindmätarna. Släng i ett SIM-kort, koppla på en PC-server med internetanslutning och låt den svara ivriga CPS:are med uppläst vinddata från alla aktiva vindmätare. För 60 EUR + frakt är det nästan gratis!

Waspmote

Idag har jag fått prisuppgifter från Libelium ang. deras Waspmote-plattform:

  • 5x Waspmote plattformar, 495 EUR
  • Waspmote Gateway, 55 EUR
  • 6 st antenner, 30 EUR
  • 5 st 1150 mAh-batterier, 95 EUR
  • 5 st GPRS moduler, 395 EUR
  • 5 st ”Agriculture boards” (interface-kort för vindmätare), 1750 EUR
  • 5 st Vindmätarsensor (riktning+hastighet), 625 EUR
  • 5 st Termometrar, 17 EUR
  • 5 st Luftfuktighetssensorer, 90 EUR
  • 5 st Solpaneler, 150 EUR

Totalt 3702 EUR. Detta är för fem vindmätare, dvs ca 740 EUR per mätare. Det finns en hel del prylar som vi inte behöver i ovan lista, men som Libelium vägrar plocka ur paketet. De är inte heller villiga att sälja enstaka kort för testning, minimumbeställning är 5-pack. Jag är helt övertygad om att det går att bygga något exakt lika bra till ett lägre pris utan att behöva göra en riskfylld initialinvestering. Libelium går bort.

RJ11-adapter

Före

Efter

Man kan nästa tro att det är tv-shop! Den nya RJ11-adaptern med tillhörande pull-down motstånd är på plats efter lite söndagslödning. Förhoppningsvis skall detta fungera bättre än den provisoriska lösningen som jag gång på gång tvingats lappa ihop med krokodilklämmor.

Note to self: Det KAN vara så att spänningsspikarna i vindriktningsgivaren inte alls är brus utan två brytare som är öppna samtidigt. Detta skulle resultera i att närliggande motstånd parallellkopplas och därmed sjunker totalmotståndet vilket leder till en ökning i spänning över mätmotståndet. Att ”spiken” är kortvarig beror troligtvis på att tiden då båda brytarna är öppen är kort i förhållande till tiden då en brytare är öppen. Detta innebär att upplösningen på vindriktningen är 16 diskreta steg! Denna insikt kommer främst från Waspmotes manual (se sid. 28) för deras ”Agriculture board” som tillför vindmätarfunktioner till Waspmote-brädan.

Great success!

A/D-omvandlingen fungerar äntligen! Det visade sig bero på lite skit bakom spakarna 🙂 De åtta spänningstrappstegen som svarar mot olika vindriktningar syns nu betydligt tydligare i plotten. Great success!

Det finns fortfarande tweaks att ta till för att höja precisionen, men frågan är hur hög upplösningen behöver vara att skilja på riktningarna? Jag är lite konfunderad över valet av motstånd i mätaren, de verkar använda nån logaritmisk skala. Vore det inte enklare att välja motstånd med ett linjärt avstånd, så att höjden på varje trappsteg blir samma? .. De verkar ha en annan filosofi på andra sidan jordklotet.

Jag är också lite bekymrad över spänningsspikarna som uppträder vid övergången till en ny brytare. De kan i värsta fall misstolkas av mjukvaran som en felaktig riktning. Förhoppningsvis går det att korrigera med ett ”utsmetar”-filter, i antingen mjukvara eller med lite analog elektronik.

 

Spänningstrappsteg

Batterikapacitet

Igår var jag iväg på en exkursion i Ålabodarna och omnejd. Det var en underbart solig dag men dessvärre syntes inte några skärmflygare inte till då det var vindstilla. Jag följde havsleden bort från hamnen och funderade över varför det pratas så lite om Ålabodarna i CPS Facebook-grupp, för det var verkligen Hammar-klass på kustlinjerna (enligt ett otränat hang-öga …)! Hittills har man mest hört om Ravlunda, Höganäs och Hammar. Varför har CPS sin näst bästa vindmätare på ett hang som ingen verkar utnyttja? 🙂

På vägen tillbaks tog jag en sväng förbi småbåtshamnen och inspekterade vindmätaren som står på den stora sandbunkern nere vid vattnet. Något som slog mig var hur himla stor och klumpig den är. Solpanelen känns även den väldigt tilltagen. Batteri är förvisso stora (tänk bilbatteri), men det känns brutalt överestimerat att driva små system som vindmätare på en sådan kraftig strömkälla. Visserligen bor vi i ett land där det inte är strålande sol varje dag, men tumregeln för en modern solpanel är att den kan leverera (i snitt) halva sin specade effekt oavsett årstid.

I en vindmätare är GSM-modemet utan tvekan den mest energikrävande komponenten. Det är inte ovanligt med strömspikar på 2A  under sändning i ett område med dålig GSM-täckning. Säg t.ex. att modulen drivs med 12V, att vi sänder hela tiden och att vi befinner oss i ett område med urusel täckning. Detta ger en förbrukning på 24W. Ett typiskt 12V bilbatteri kan leverera ca 50 Ah, dvs tillräckligt för att hålla systemet vid liv i ca 25 timmar under värstafallsförhållanden. Men i praktiken ringer inte CPS medlemmar oavbrutet, dygnet runt. Inte heller står mätarna placerade i särskilt dålig täckning, tack vare det välutbyggda svenska mobilnätet. Boven är långa samtal. Min gissning är att man valt ett större batteri för att skapa en ordentligt marginal, för mulna dagar, eller dagar då folk ringer ner mätaren.

Kravet att mätaren skall gå att avlyssna via telefon ställer stora krav på mätarens batterikapacitet, solpaneler och även mjukvaran som sköter syntetiseringen. Om man väljer att rationalisera bort avlyssningsfunktionen får man en mycket mer deterministisk förbrukning: strömförbrukning för komponenter + strömförbrukning för utsändning av vinddata via GPRS var 10:e minut. Systemet blir inte längre beroende av hur många skärmflygare som vill åt vinddatan och det finns ingen anledning att höfta fram marginaler eller använbda överestimerade strömkällor. Det hade varit väldigt intressant att veta hur många av CPS medlemmar som nöjer sig med att kolla vindmätaren via internet-anslutning? Det känns som varenda människa glider omkring med en högteknologisk smartphone idag.

I ett tidigare inlägg listar jag fördelarna med att flytta telefonavlyssningsfunktionen till ett separat system. Här kommer en uppdaterad version:

  1. Lägre byggkostnad.
  2. Mer deterministisk strömförbrukning, ej beroende av antal ”datakonsumenter”.
  3. Potentiellt bättre ljudkvalité då man ej behöver ta arbeta på ett inbyggt system med begränsade resurser.
  4. Ett telenummer för att nå samtliga vindmätare.

Nackdelar:

  1. Fler inblandade komponenter: ”Single point of failure” kan inträffa. En särskilt sårbar komponent är kopplingen mellan vinddatabas och avlyssningssystemet. Dock är det svårt att avgöra vilket som är mest troligt: Vindmätarproblem, eller driftsavbrott hos en godtycklig bredbandsleverantör.

Alternativ till Arduino

Idag har jag hittat en ganska intressant plattform som kanske kan bli aktuell för vindmätarbygget. Libelium är ett spanskt företag som tar fram s k ”Machine-to-Machine”-lösningar (M2M), med typiska applikationer i sensornätverk och distribuerade system. ”Waspmote” är deras senaste sensornodsplattform som kan bestyckas med valfri kommunikationsmodul — Blåtand, ZigBee och givetvis GPRS. Tanken är att dessa noder skall placeras ut tillsammans bilda en intelligent nätverkstopolgi, t.ex. i formen av ett träd eller ett rutnät (mesh). Det finns en demo här.Vore det inte lite coolt att bygga ett vindmätarnät över hela Skåne som kommunicerar djungeltrumma-style? 🙂

Trots att det inte finns några sådana ambitioner i detta bygget (ännu) så har plattformen flera intressanta attribut:

  1. Färdigbyggd, vältestad plattform baserad på Atmels 8-bitars familj AVR (samma som Arduino Uno)
  2. SD-kortsläsare, som skulle kunna användas för att lagra ljudklipp till telefonavlyssningsfunktion ELLER som en nödlösning för lagring av vinddata om GPRS-länken går ner.
  3. Kontakt för solpanel och batteri, dvs spänningsstabilistering och logik för laddning finns på plats.
  4. RTC, realtidsklocka inkl reservbatteri.
  5. Färdigt påbyggnadskort för GPRS.

Men den absolut bästa fördelen med WaspMote är ändå att de har ett färdigt påbyggnadskort för vindmätning! Detta innebär att de har ALL hårdvara vi behöver för att slutföra bygget. Att starta ett projekt med färdig, vältestad och fungerande hårdvara är oändligt mycket enklare. Så var är köpknappen?! Det undrar jag också. Jag har skickat en prisförfrågan via deras webbshopp då de inte listar priser online. En nackdel är dock att man enbart kan beställa dessa plattformar i paket om 5 enheter + diverse tillbehör (då de främst är tänkt att fungera i intelligenta nät). De inkluderar även Blåtandsmoduler i sitt baspaket, som vi inte är intresserade av, men som givetvis ökar inköpskostnaden. På Google hittade jag en diskussion där någon nämnde ett prisförslag på ca 1000 Euro för 5 enheter. Då ingår dock inte solpanel, batterier eller påbyggnadskort för vindmätning och GPRS-kommunikation.

 

GitHub källkodsförråd

Den första kodsnutten finns nu incheckad i ‘källkodsförrådet’. Än sålänge innehåller det inte mer än lite prototypkod och ett byggskript, men det gör det inte mindre signifikant. Den första  spiken är på plats i mjukvaran till vindmätarnoden! För den nyfikne finns all kod för allmän beskådan på adressen http://github.com/blastur/WindWiz.

Det trasslar fortfarande  med A/D-omvandlingen (se föregående inlägg), upplösningen är för låg och det tar alldeles för lång tid för A/D-omvandlaren att stabilisera sig (flera sekunder!). Jag väntar med att beställa hem GSM-modulen tills jag fått igång A/D-omvandlingen och LCD-display till mätaren. Jag jobbar enligt metodiken Baby steps — Sakta men säkert! 😉

Nyheter från CPS vindgrupp: Vindgruppen har undersökt möjligheterna att koppla upp Åla-Nisse-mätaren till Internet på samma sätt som gjorts med mätaren på Hammar (Svetlana). Trots att båda mätarna kommer från samma leverantör (Italienska  DPS Promatic)  har det tyvärr visat sig att Åla-Nisse har den förra generationens hårdvara, och är inköpt på den tiden då GPRS-funktioner inte ingick i baspaketet.

Vi har varit i konntakt med DPS för en eventuell uppgradering av  Åla-Nisse-modemet, men dessvärre har modellen gått ur sortiment och är inte längre supportad. De lagerför inte längre reservdelar till denna modell men har lovat att höra av sig om det skulle dyka upp något ”gammalt skrot” vi kan ta vara på. Ni förstår, det ser ganska mörkt ut.

Dock ännu större anledning att fortsätta med vindmätarbygget!