WindWiz

En GSM-uppkopplad vindmätare

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.

2 svar till “Februaristatus

  1. Ping:First impression Android « WindWiz

  2. Ping:Kändis « WindWiz

Lämna en kommentar