WindWiz

En GSM-uppkopplad vindmätare

jQuery Mobile

Det är ett ganska dåligt betyg för ett API när man som utvecklare sitter framför datorn och mumlar frusterat för sig själv.

”Fan vad bökigt detta blev då! Kunde det inte varit såhär istället?”

.. Särskilt när det är ett API man uppfunnit själv, som var tänkt att vara enkelt att använda och att förstå. Jag tycker det vore synd om hela Mars månad fick passera med endast ett ynka blogginlägg, så idag är det dags för en kort uppdatering.

Sedan jag blivit med smartphone har jag känt ett större sug efter en bättre lösning för handhållna enheter. Egentligen borde mobilanvändare prioriteras över vanliga surfbesökare eftersom behovet av realtidsdata från vindmätarna i någon mån ökar när man är ute på fält, antingen på hanget eller på väg till hanget.

Mobila appar är hett, men för den här typen av presentation tror jag en mobilanpassad webbsida duger lika fint. Jag ser dessutom fördelar i att inte behöver underhålla n stycken olika appar för n stycken olika plattformar när samtliga system inkluderar kraftfulla webbläsare. Därför har jag under Mars ägnat tid åt att kika på diverse mobilanpassningar av ”Web 2.0”-ramverk och kommit fram till att jQuery Mobile är en god utgångspunkt för en mobilversion av vindhemsidan. Målet med detta ramverk är att skapa en sida som efterliknar de vanliga mobilgränssnitt som finns i t.ex iPhone, Android, Blackberry mfl. Här finns ett litet demo som visar vad för slags gränssnitt jag pratar om (pröva gärna att klicka runt).

Under ytan sköter ramverket alla specialtricks som krävs för olika enheter och ser till att presentationen blir likformig oavsett telefonmodell. Ramverket kan också lyssna efter särskilda mobilorienterade händelser, t.ex när man sveper med fingret över touchskärmen eller ”nyper” skärmen. Med alla dessa verktyg borde det gå att få till en webbsida som fungerar på alla moderna telefoner.

För ett par veckor sen satt jag omborde SJs tåg mot Göteborg och hackade loss på en sådan sajt. Det var ungefär då jag insåg att mitt applikations API hade en hel del brister, som nu är tillrättade i v3. Det gamla (v2) API finns fortfarande kvar och uppdateras aktivt, men för all slags nyutveckling rekommenderar jag version 3.

Nyheter i version 3:

  1. All statisk information är flyttad till stationsindex (index.json/xml). Tidigare var filosofin att hålla filstorleken på index låg och låta klienter polla den för att upptäcka nya uppdateringar i flera stationer parallellt. I version 3 är filosofin istället att klienten pollar den station som klienten är intresserad av, eftersom man troligtvis bara tittar på en enskilt station åt gången ändå. Detta medför att den information som tidigare fanns i info.json/xml för varje station numera är inbäddad i stationsindex. Detta underlättar en implementation eftersom man inte behöver hämta flera filer under initieringsfasen.
  2. API:t är numera UTF-8 kodat för att på ett korrekt sätt bevara svenska tecken m.m.
  3. Det finns nummera ett nytt ”description”-fält för varje station (lagras i index.json/xml) där man kan fylla i matnyttig information om varje station.
  4. Data finns nu även tillgängligt via formatet ”Padded JSON” (JSONP), en teknik som ofta används för att kringgå webbläsares ”same origin”-policy.

Jag hade kommit en god bit på vägen med den nya sajten när min laptop plötsligt bestämde sig för att delar av filträdet på min disk var korrupt. En del arbete gick åt helvete, men de viktigaste designbeslutet finns förhoppningsvis kvar i mitt huvud någonstans.

Annonser

First impression Android

I förra veckan började min gamla ”dumbphone” krångla och jag gav vika för Android-hypen. Hittills är jag inte jätteimponerad och lite oroad över hur sjukligt insyltad Google är i hela telefonen. Det går knappt att använda en enda funktion utan att man i samma vända godkänner att Google får insyn i någon del av mitt liv. Nåväl, den har en fin skärm, är full av runda glänsiga kanter och goda surfmöjligheter. Jag prövade att surfa till vindsajten.

Sjuukligt smått! Det är därför vi behöver bättre mobilappar, som är bättre anpassade för småskärmar! Nu när jag har en egen telefon att labba med lär jag snickra ihop någon slags Android-historia inom relativt snar framtid. iPhone appen är fortfarande under utveckling och vid det senaste ”demot” fick jag se att den numera även kan plotta historik, inte helt olikt hemsidan. Coolt! Förhoppningsvis kommer en betaversion snart dyka upp i Apples appstore så CPS medlemmar kan börja testköra lite.

Annars då? Jo, jag har gjort en del strukturella förändringar på GitHub. Istället för att samla alla källkodsförråd under min användare ligger de nu under en s k ”Organization” på GitHub. Organisationen har jag passande döpt till WindWiz och innehåller alla källkodsförråd som för tillfället är under konstruktion. En fördel med att bilda en organisation är att flera utvecklare kan ansluta och hjälpa till, något som ett par personer hittills visat intresse för.

Magboot, bootladdaren som jag nämnde kort i föregående inlägg, fungerar! Igår täppte jag till en sista (I wish!) störande bugg och nu kan jag flashladda min Seeduino utan risk att fusebitarna förändras. Det känns tryggt! Ta en titt i dess källkodsförråd vettja!

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.

Applikations API v2

I veckan har jag jobbat en del med att förbättra applikations gränssnittet mot tredjepartsprogram, t.ex. mobilappar. Det gamla JSON-gränsnittet som beskriv under Rådata-fliken på vindsajten kommer inom kort ersättas av det nya, men kommer tills vidare samköras. Tanken är att även vindsajten skall byta till detta gränssnitt, för att underlätta en eventuell flytt av vindsajt till annan server (databas och webbsida behöver ej ligga på samma server).
Än så länge finns inte mycket dokumentation för det nya API, men grundfilosofin är densamma som för det gamla. Nytt är bl a att all data numera även finns tillgängligt via XML, ett alternativ till JSON. Numera kan man även hämta gammal vinddata, t.ex. för plottning eller annan behandling. Just nu exporteras de senaste 40 mätpunkterna för varje station.

Crashcourse till API v2:

  1. Alla datafiler finns att plocka på http://vind.minimum.se/api/. Välj mellan index.json eller index.xml beroende på vilket format du föredrar.
  2. Index-filen innehåller en lista över alla aktiva stationer. Just nu finns Hammar-station Svetlana, plus en teststation. Varje station har ett id (tänk kortare namn) samt ett friendlyname, som är ett fullständigt namn (bör användas när stationen presenteras för användare).
  3. Mha stationsid kan man begära mer information genom http://vind.minimum.se/stationsid/. T.ex. kan man begära mer info om Svetlana via http://vind.minimum.se/api/Svetlana
  4. För varje station finns den senaste mätpunkten i latest.json (eller latest.xml).
  5. För varje station finns de 40 senaste mätpunkterna i history.json (eller history.json)
  6. För varje station finns mer information (ev. gps-koordinat, önskad uppdateringsfrekvens osv) i info.json (eller info.xml)
  7. T.ex når man senaste mätpunkten för Svetlana via http://vind.minimum.se/api/Svetlana/latest.json

Några detaljer att tänka på:

  • Vissa stationer kommer ha NULL-fält. T.ex. har Test-stationen ingen temperatur eller luftfuktighet, då är dessa satta till NULL. Om GPS-koordinat saknas kommer även dessa fält (lat, lon) vara NULL. Jag kommer beskriva vilka fält som kan tänkas vara NULL mer utförligt senare, men för tillfället är det bäst att alltid kolla efter NULL.
  • Använd varje stations pollrate-fält för att avgöra hur ofta din applikation skall koppla upp för att hämta ny data. Denna finns i varje stations info.json (info.xml) fil och beskriver antalet sekunder mellan varje uppdatering för given station.
  • Alla tidsstämplar (first_sample, last_sample, lastupdate) etc är UNIX timestamps. Dvs, antal sekunder sen 1970.
  • Test-stationen uppdateras ej aktivt och innehåller konstgjorda mätpunkter som är daterade till Augusti 2010. Detta är inget fel, använd för testning! 😉

Jag har även laddat upp winddb, applikationen som genererar alla dessa filer på GitHub. I dess README-fil kan man hitta ytterligare information, eller om man vill kika på koden för detaljer kring API (tills fullständig dokumentation kommer).

PS. Vindmätarbygget har också sett framgångar. Nytt GSM-modem ligger och vilar på skrivbordet i väntan på resten av leveransen. Förhoppningsvis anländer de nya delarna i nästa vecka och då kan jag återuppta arbetet. Tills dess kommer jag fortsätta arbeta med förbättringar av webbsidan. DS.
PS2. Note to self: Beställ inte grejer från Kina i närheten av Spring Festival. De verkar stänga ner hela landet i flera dagar, inkl posten. Min beställning registrerades 17:e Januari och trots att Spring festival inte infaller förrän 3:e Februari i år så har mitt paket precis kommit iväg, 12 DAGAR senare! DS.

Arduino – The Documentary

För den som är nyfiken på elektronik och mikrokontrollers så är Arduino en utmärkt utgångspunkt. Jag har nämnt Arduino-plattformen flera gånger i bloggen men det kanske inte är helt uppenbart vad det är eller vad den kan användas till. Jag hittade en dokumentär om Arduino som ger en ganska varsam introduktion till konceptet och dessutom bjuder på en del intressanta detaljer. Visste du t.ex. att K3 i Malmö (Konst, Kultur & Kommunikation på Malmö Högskola) var med och supportade projektet redan bland de 200 första prototyperna? Sånt gillar vi, när Skåne visar framfötterna.

GSM Playground

2011 är här och det börjar bli lite brådis att få ihop vindmätaren om den skall vara användbar lagom till högsäsongen för skärmflyget. December har varit en rätt ineffektiv månad för vindmätaren, dock har det hunnits med en hel del julpyssel, ljuseldning och intag av kopiösa mängder kött. Men några nyheter har jag, några goda och några mindre goda.

Goda nyheter

  • Efter att ha löddat om hela designen på en labbplatta och med en ny spänningsregulator har jag hittills inte stött på några spontana omstarter som mätaren led av förra månaden. Troligtvis var det en kombination av dåligt bufferkondensatorval och en sönderkörd regulator. (SBS)
  • Man kan numera driva vindmätaren direkt från ett vägguttag med en vanlig 12V väggvårta, vilket underlättar utvecklingen eftersom jag inte är bunden till att sitta i mitt trista musiklösa labb 😉
  • Temperatursensor är på plats, modell DS18S20 från Texas Instruments. Än så länge finns ingen kod i programvaran för att läsa ut temperatur, men hårdvaran är på plats och lödad!

WindWiz på labbplatta (klicka för full storlek). Troligtvis inget tullen hade släppt igenom!

 

Mindre goda nyheter

GSM-modulen krånglar fortfarande och AT-kommandon blir då och då korrupta och misstolkade (se föregående inlägg). Allt tyder på ett timing-problem i någon riktning (eller båda). Jag är dessutom inte längre övertygad om att denna GSM-modul är användbar för detta projekt. Den är utformad på så vis att viss viktig funktionalitet ej går att utnyttja. Indiska Rhydolabz har valt att göra vissa pinnar otillgänliga via stiftlisten för enkelhetens skull. Detta medför dock att det är omöjligt att t.ex. aktivera energisparfunktioner, få indikationer på inkommande samtal och/eller sms m.m.

Jag har dessutom upptäckt att mjukvaran som kör inuti GSM-modulen är gammal. När man luskar i forum-trådar på the Internets upptäcker man snart att många har bekymmer med GPRS-funktionaliteten. Mjukvaran går att uppdatera men bara via pinnar som Rhydolabz valt att inte dra ut till stiftlisten och därför blir ohyggligt svåråtkomliga. För att uppgradera modulen krävs det därför att man löder loss hela GSM-chippet, vilket jag inte har de nödvändiga verktygen för här hemma.Manualen specar dessutom att modulen bara klarar reflow-processen en gång.

En annan funktion som är Rhydolabz reducerat bort (igen, för att minska komplexitet) är GSM-modulens inbyggda batteriladdare. Det skulle spara mycket komponenter (pengar) och designtid om man slipper konstruera en egen laddare.

På grund av ovan brister kommer jag med stor sannolikhet byta ut modulen mot en Telit GE-863 QUAD-modul. Denna verkar mer vältestad av communityn, är bättre dokumenterad och supportad och vad jag kan se, skeppar moduler idag med ”relativt” buggfri mjukvara. Som en extra bonus tillför den nya modulen även några förbättringar: Quad-band (vilket iofs är meningslöst i Europa..), DTFM-dekoder (avkodning av toner från knapp-tryck under samtal) och inbyggd temperatursensor. Det enda negativa med den nya modulen är egentligen priset, som är €93, jämfört med Rhydolabz €50. Småpotatis i relation till hur mycket tid man får lägga på workarounds i buggig hårdvara.

Länkar:

Jag har än så länge bara fingrat på ”köp”-knappen, då jag inväntar e-mail från tillverkaren med svar på en del kompatibilitetsfrågor. I och med att GSM Playground är utformad som en Arduino shield kan jag även bli tvingad till att återgå till Arduino, TROTS de begränsningar som fick mig att välja bort den i ett tidigare skede. Som en kompromiss har jag hittat en Arduino-klon, Seeeduino, som addresserar en del av de listade bristerna (fetare säkring, korrekt headerpin spacing via extra stiftlist etc). När jag ändå är igång och byter kanske jag till och med byter upp mig till en aningen fetare AVR modell också, t.ex. Seeduino Mega, som åttadubblar både primärminnes- och programminnes-mängd (8 KB RAM! HÅLL I HATTEN!). Tänk vad bortskämd man är i PC-världen, när var och varannan laptop är utrustad med flera gigabyte minne. Slöseri tycker ni? Well, dessa nya modeller har förvånadsvärt likvärdig effektförbrukning (med aktivt strömsparläge) och när priset skiljer nån hundralapp är det bara att tuta och köra. Att slippa vända på varje byte minne för att få plats är guld värt. Det är lite som att köra 4×4 jeep i stan, man behöver oftast inte kraften, men det är jävligt gött när snön kommer. Bensin kostar skjortan oavsett!

Vi får se vart detta slutar! I vilket fall som helst lär bytet innebära en del förseningar. Min tidigare Februari-prediktion känns inte lika realistisk längre.

Tjing!

Betongväggen

Happ. Det hade ju varit roligt om jag kunde berätta att GSM-modulen och vindmätaren kommer överens som två glada tanter på ett virkkafé eller att jag gjort stora framsteg med batteridrift. Att jag jobbat hårt och effektivt hade ju varit en utmärkt anledning till den totala avsaknaden av inlägg här på bloggen. Men tyvärr har jag ingenting roligt att berätta idag. GSM-modulen och vindmätaren kommer överens ungefär lika bra som jag och en fransk hotellreceptionist över en sprakig telefonlina till Belgien.

– ”Is the room equipped with wirelesss internet access?”

– ”Yes sir, the package includes our breakfast buffet.”

…. Ja, ni förstår. Det sprakar, kommunikationen brister och alla inblandade blir förvirrade, inte minst jag! Som om problemen med GSM-kommunikationen inte är nog har mjukvaran numera börjat ägna sig åt spontana omstarter, lite då och då. Helt utan provokation! Jag är övertygad om att felet ligger i den analoga elektroniken eftersom den mjukvara som fungerade för några veckor sen lider numera av samma symptom. Tack gode gud för versionshantering! Ibland önskar jag att jag var bättre på att dokumentera mina förändringar i kretsschemat också.. Analog elektronik är varken en favorit eller något jag är särskilt duktig på.

Jag har undersökt allt från watchdog timers, brown-out detection (BOD) och flytande I/O-pinnar (t.ex. RESET). Dessvärre inga större framgångar 😦 Mitt huvudspår är för tillfället att kika på spänningsregulatorn och särskilt på om mitt val av  kondensatorer eventuellt kan skapa svängningar i spänningsmatningen, vilket skulle kunna vara en orsak till stabilitetsproblemen.

Idag avslutar jag med ett litet kopplingsschema som jag är barnsligt stolt över. Tills nu har jag förlitat mig på papper och penna, mest för att undvika inlärningskurvan för ännu ett program, men nu när jag måste ge mig ut på nätet och söka hjälp duger det inte med handritade scheman i MS Paint när man försöker beskriva problemet. Det kostade några timmar men nu har jag digitaliserat det viktigaste. (Mitt hat mot icke-intuitiva gränssnitt har dock mångdubblats).

Kretsschema: Vindmätare, exklusive gränssnitt mot vindgivare och GSM-modul.

Piff

Idag har jag ”första-adventspiffat” lite på vind-webbsidan och adderat en ny flik med information om hur man utvinner rådata från databasen. Det är tänkt att denna funktion skall användas av tredjepartsapplikationer för att visa vindstatistik. Användningsområdena är många, men mobilapplikationer ligger närmast på horisonten. En kollega har visat intresse för projektet och börjat fila på en Iphone app som visar kompassrosen, live från Hammars backar! Än så länge är appen i alpha-stadie, men den existerar i allra högsta grad. Jag fick en liten demo på jobbet i Fredags. Mycket fräsigt!

En androidapp är inte helt osannolik heller, särskilt eftersom man inte behöver punga ut slantar för en developer-licens på $100 som Apple kräver. Startsträckan blir så mycket kortare om man slipper betala för att utföra ett arbete 😉 Själv äger jag ingen smartphone och får nöja mig med att hämta ut textversionen av kompassrosen men det finns sätt att provköra Android-applikationer under utveckling direkt i datorn. Smidigt! Skall bli intressant att pröva på mobilutveckling igen, senast jag ägnade tid åt det var när J2ME var ”inne” och smartphones hade en batteritid på 1 dag. (App! Vänta lite nu.. det har de ju fortfarande!)

På vindmätarbygget har det inte heller stått stilla. Nästan all tid har gått åt till programmering och bara för att det inte skall vara tomma ord när jag säger att koden går framåt har jag nu även laddat upp de flesta kodändringarna i källkodsförrådet på GitHub. För den nyfikne finns nu lite godis att utforska:

  • SWUART – Mjukvaruserieport (8N1)
  • UART – Hårdvaruserieport, interruptbaserad med reglerbar buffertstorlek.
  • Ringbuf – En enkel med naggande god ringbuffert. Används av både SWUART och UART för bufferhantering.

Det finns även ett startskott för A/D-omvandling, power-management för vindgivarna och lite inställningslogik (spara i EEPROM-minne för att överleva omstarter etc).