WindWiz

En GSM-uppkopplad vindmätare

Månadsarkiv: februari 2011

Februaristatus

Inleder med en liten filmsnutt för alla som ogillar att läsa långa och tråkiga inlägg. Mycket nöje!

Det har blivit en del vindmätarmeck den senaste veckan. Jag lyckats förstöra en av två Seeduino-brädor, upptäckt att det nyinköpta batteriet inte passar och lagt tid på att flytta runt funktionalitet i koden för att pinbudget skall gå ihop. Ni förstår, inte världens mest flashiga arbete, men gruntwork (och insikter) som måste göras förr eller senare!

Aningen bitter var jag när jag insåg att jag bränt ”fusebitarna” på min sprillans nya Seeduino-bräda. Till mitt försvar var det denna gång inte (helt) självvållat, som sist.
Avrdude, verktyget för att ladda upp ny mjukvara till vindmätaren, har för vana att efter varje skrivning läsa tillbaks datat (och annan information) för att säkerställa sig om att allt gick rätt till. Men vad händer om utläsningen felar? Det fick jag lära mig i förra veckan, den hårda vägen!

”FUSEDÖDEN, så återupprepar du felet” i ett par korta steg:

  1. Lastar din Seeduinos matningsspänning måtttligt, t.ex. genom att koppla på ett strömhungrig GSM-modem.
  2. Använd en underdimensionerad strömkälla, t.ex. en USB-port som inte klarar av strömspikar från ditt strömhungriga GSM-modem.
  3. Programmera Seeduinobrädan tills Avrdude gnäller om att fusebitarna ändrats, TROTS att du bara ville uppdatera flashminnet.
  4. När Avrdude frågar om du vill återställa fusebitarna (som du inte ville ändra från första början), tryck Ja.
  5. Beskåda din numera trasiga Seeduino-bräda. Den är i princip oanvändbar och duger knappt som underlägg till bärsen.

Min teori är att AVR-processorn, i ett svagt ögonblick, hamnat i ett odefinierat tillstånd under programmeringen pga matningsproblem. I detta tillstånd gav den Avrdude felaktiga uppgifter vid dess ”säkerhetsutläsning”, vilket i sin tur triggade en uppdatering av fusebitarna, även detta i ”odefinierat tillstånd”. Ja, som ni märker har jag egentligen ingen aning alls om vad som gick snett, men det här lät ialla fall troligt i mina öron.

Givetvis blev jag orolig att även mitt andra kort skulle sluta med samma öde och utvecklingsarbetet fick ett abrupt slut. När paniken lagt sig började jag fundera på olika sätt att göra flashningsmomenten mer säkert. Dessutom har jag haft en idé om att sköta programmering via USB-porten, och på så vis slippa använda en separat programmerare**.

Magboot (Magnus Bootloader, fyndigt va?!) är en bootladdare som skall lösa båda dessa problem. Två flugor i en smäll! Flashningsmomenten blir säkrare pga att bootladdaren är såpass trivial. Den vet inte ens hur man ändrar på något annat än flashminnet. Filosofin är alltså att bootladdaren är för dum för att skada vindmätaren ”beyond repairs”. Magboot är just nu under utveckling, men kommer snart dyka upp i ett GitHub-källkodsförråd nära dig!

Får ibland känslan av att jag trampar lite vatten, med alla motgångar jag stött på i projektet hittills. Men inbyggda system är pilligt och komplext, man får helt enkelt räkna med att allt tar tre gånger så lång tid som ursprungsplanen.
Samtidigt känner jag att det inte spelar nån roll, min investering i detta projektet har gett massiv utdelning i en slags hands-on-kunskap som är omöjlig att få på annat sätt än att gång på gång behöva tänka om.

Flukso

I helgen var det FOSDEM 2011 i Bryssel och jag var på en intressant föreläsning om ”Flukso – Community metering”. Flukso är ett projekt som grundades av Bart Van Der Meerssche efter att han tröttnat på att det inte fanns något sätt att kontrollera det lokala elbolagets elmätningar. Han började experimentera med en hemmabyggd elmätare, baserad på Arduino och några off-the-shelf strömklämmor. Tanken var att hacka ihop ett system för att monitorera effektförbrukning i realtid för hela eller utvalda delar av hushållet. Om man sedan plottar förbrukningen är det ganska enkelt att göra små förändringar i sina vanor och snabbt se resultat. Nedan är en plot som visar när Bart bytte sitt kylskåp och kunde ganska snabbt se dess genomslag på elförbrukningen.

Effektförbrukning nytt vs gammalt kylskåp

Ganska coolt och användbart! Men elmätaren i sig är inte vad som intresserar mig. Det finns redan flertalet kommerciella lösningar som gör samma sak. Nä, Flukso är intressant för det har så många likheter med mitt vindmätarbygge. Snacka om déjà vu när Bart började snacka om hans Arduino-prototyp. WHAT! Det har jag ju också utgått ifrån. Han berättade om hur han utvärderat olika plattformar, vissa som jag också kikat på. Han bygger förvisso en elmätare, men att mäta el och att mäta vind är i princip samma sak. Realtidsdatan plottas via javascript, och dess API är baserat på JSON. EXAKT samma teknik som jag experimenterade med senast i förra veckan. Vi delar mycket teknologi, även om de båda implementationerna inte på något sätt ersätter den andra.

Flukso är nu över 2 år gammalt och har sen start hunnit designa om elmätaren flera gånger. Numera är det ett komplett Linux-system som drar den tunga lasten och Arduino-bitarna har blivit reducerade till ett nerbantat dotterkort. Idag driver Bart ett företag ihop med ett annat gäng som bygger produkter för hem-automation där elmätarens plattform passar bra. Det är fortfarande en öppen plattform, något som de vunnit mycket på eftersom de fått hjälp från andra entusiaster. Några nyckelpunkter bakom Fluksos framgång:

  • Öppen plattform, inbjuder till andra applikationer och utökningar än ursprungsplanen. Vem som helst kan ändra, labba och mixtra!
  • Bred målgrupp, i och med samarbetet med hemautomationsgruppen blev plattformen genast mer attraktiv för en större målgrupp.
  • Tidig prototypning i verklig miljö. Jag känner att WindWiz snart MÅSTE ut på fältet.

Det är kul att se fler och fler öppna projekt lyckas. FOSDEM är ett event för likasinnade projekt, som tror på öppen mjukvara. Förhoppningsvis kommer WindWiz bli ett av dem 😉

 

Nya leksaker från Kina

Idag var brevlådan full av elektronik när jag kom hem från jobbet. Nu har jag alla prylar för att fortsätta bygga på vindmätaren!

Seeduino v2.21

Arduino-klon som kommer ersätta det gamla hemmabygget. I ett tidigare inlägg nämnde jag Seeduino Mega med en fetare processor och mer minne (8 KB RAM), detta är en kompromiss med 2KB RAM. Kanske kommer jag ångra att jag valde bort Megan, men då är det å andra sidan ingen jätteinsats att byta. Dessutom har jag ett tredje alternativ att tillgå (se nedan). Det låg två av dessa i brevlådan, jag tänkte att det är bäst att passa på när leveranstiden är lång och frakten är dyr 😉

 

Maple board

Ännu en Arduino-klon, denna är dock ej baserad på Atmels AVR CPU, utan bygger på ARM. I den sitter en (betydligt!) kraftfullare 70+ MHz Cortex M3 processor och djävulskt mycket minne (20 KB RAM!). Mest inköpt som en leksak och kommer förmodligen aldrig användas i detta projekt, såvida jag inte lackar ur helt på AVR-brädorna. Den har även ett dedikerat ladd-chip för Lithium vilket kan bli intressant om det visar sig att GSM-modemets laddfunktion inte lever upp till dess förväntningar.

 

Open Logic Sniffer

Egentligen inte en del till vindmätaren, men ack så viktig ändå. Detta är en logikanalysator, ett värdefullt verktyg när man felsöker digitala signaler. Flera gånger när jag suttit och hackat på sistone har jag känt behov av bättre insyn på signalnivå, och när jag såg denna lilla pryl med 16-kanaler och en samplehastighet på 100 MHz för ynka $50 kunde jag inte motstå. Nu kommer förhoppningsvis inte serieportsfelsökning och implementation av 1-wire-protokollet blir så knöligt, mjukvaran innehåller nämligen avkodare för både UART, I2C, 1-Wire och fler protokoll, med fler på gång.

 

GSM Playground

Det nya GSM-modemet är på plats. Min förhoppning är att modem-bitarna kommer bli mycket enklare då denna modul har bättre dokumentation, mer kontrollmöjligheter (utdragna pinnar) och framför allt: inga showstopper-buggar i sin firmware. En annan rolig detalj med detta modem är att dess interna CPU tillåter körning av Python-skript. Det vore intressant att utforska möjligheterna att hantera viss strängmanipulering och kanske sköta viss SMS-konfiguration via detta system istället. Spar både minne och utvecklingstid då strängar och C-programmering rimmar rätt illa 🙂

 

GSM Antenn

Med extra lång sladd! Även om den gamla modulen antenn verkar passa så tror jag en extern antenn blir nödvändig när utomhushölje och annat är på plats.

 

 

 

LiPo-batteripack, 3Ah

Eftersom GSM-modulen har en färdig JST-kontakt för anslutning av batteri och dessutom har laddfunktionalitet fanns det ingen anledning till att INTE köpa ett batteripack för test. Detta är det näst största som fanns i butik, 3Ah borde räcka för ett par dygns körning utan sol. Skulle det visas sig på tok för lite finns 6Ah paket att köpa. Med en maximal laddström på 200 mA från GSM modulens laddkrets tar det lååång tid att ladda dessa.

Jämfört med en bly-ack är dessa oerhört små. Detta trippel-pack (3 st 1 Ah ihoptejpat på hög) är inte mycket större än en tändsticksask. Otroligt!

Avslutningvis, en liten teaser för det nya modemet. Precis som med det gamla har jag provkört lite standardkommandon över serieporten.