Arduino GPRS väderstation - del 1 (1 / 23 steg)
Steg 1: Projektet utmaningar
Efter att min nuvarande väderstation för ca 5 år, insåg jag att den overiding begränsningen av systemet var hur data var skickas och bearbetas i stället för den faktiska sensorer och annan hårdvara. Det är inte normalt en massa is där jag bor, så utarbeta uppvärmd vind sensorer inte behövs, men när jag försökte positionsgivare mitt i ett fält för att få de bästa vind avläsningarna, insåg jag att standard radioöverföring och wifi inte var klarar jobbet. En möjlighet var att ha kablar nedgrävda i marken, men jag valde till slut GPRS data hantering i det lokala nätverket 2G mobiltelefon.
Jag var inte riktigt säker om 2G skulle kunna hantera mängden data så jag byggde denna del av projektet först och jag inte behöver ha oroat som för en till slut det var relativt lätt att bygga och två, data kbs är mycket mindre än vi kanske tror.
Nästa del som jag tittat på var slutet - hur data skulle bearbetas. Min nuvarande väderstation har egen proprietory system för databehandling som ska laddas upp manuellt till en PC och är inte tillgänglig att dela, distribuera eller allmänt fiol med. Den svåraste delen av projektet var inte att få uppgifter i en databas, men att få uppgifter ur den igen och visa dem i en meningsfull och lättillgängligt sätt.
Än ovanstående, det har varit en konstant låt ner till har batterier dör vid avgörande tillfällen, som mitt i en spännande våldsam storm, så jag har valt att sensorer och GPRS springer iväg ett stort bilbatteri drivs av ett dumt stora solpaneler som kommer att hålla saker som händer i de aldrig sinande mörka veckorna i vinter. Bara för sinnesro la jag en enkel voltmeter till utbudet av sensorer så att jag kunde hålla kolla på batteriet.
Den faktiska sensorer sig var inte alltför svårt att genomskåda. En av de viktigaste utmaningarna var RJ11-kontakter används på regn och vindmätare - dessa kontakter är otroligt krångliga att röra om med så jag omgjorda min Hackable Prototyping ombord för att ha 2 x RJ45 socket platser (RJ45 är en 8-pin version av RJ11, som är 6 stift). Redisigning denna styrelse är alltid ganska riskabelt eftersom det är otroligt lätt att göra fel och har kortslutning och andra missöden som orsakar förödelse i elektriska kretsar.
Efter lite kraftig motion inom min egen personnal grå materia, insåg jag att, om jag inte var försiktig, de mest spännande händelserna i vädret som en svår vindpust, lätt kan missas om jag inte ansåg tidsram elementen i min design. Min gamla väderstation svikit mig ganska spektakulärt en dag. Det var den 4 februari 2015 och en förfärlig storm hade blåst. Det var en stor krasch utanför som 30 rutor glasshouse desintegrerade och tittar ut genom fönstret såg jag min granne rida på gräsklipparen seglar genom luften mot mitt hus. I en gest av totala hängivenhet till vetenskapen av väder mätning och min kärlek till min granne, jag omedelbart på väg till min väderstation konsol, förväntar sig att se vindstöt visas som ungefärligt 80 MPH men... Ingenting... Den % ^ "< **! > %%: maskin hade missat det!
Jag var verkligen hoppas att jag kunde trösta min grannes förlust genom att informera honom om exakta vindhastigheten som hans gräsklippare tog till flykten!
Självklart, vindens hastighet måste därför ständigt övervakas, inte bara ta en läsning varje 5 sekunder så många system gör. Jag trodde att detta skulle kunna uppnås genom att ha en dedikerad mikroprocessor bara att övervaka vindhastighet, beräkna om maximalt värde varje 1/10 av en sekund eller så över en 60 andra period och stöta upp värdet till en annan mikro-processor nummer ett med tio minuters mellanrum.
Som jag kom längre in i projektet, fram nya utmaningar själva. En av dessa var strömkraven för systemet. Lyckligtvis hade jag redan dela upp mitt system i två mikroprocessorer - en Arduino Mega och ett Atmega328P chip från en Uno. En GPRS-modul används en hel del makt så jag använde 328 för att sända fona och mega i "viloläge" för nio minuters intervaller.
Programmering av 328 och Mega ställde några nya utmaningar för mig som, för en, ingen "försening" funktioner kan användas i 328 och allt tvungen att vara tt genom att använda verktyget "millis", vilket innebar några ganska allvarliga huvud sprätta! Programming Mega handlade om att få den information som skickas till min webbplats databas och kommunikation med 328P, som levererat några av de viktiga data och också kommunicera med den fona GPRS modul som skulle skicka alla data in i cyberrymden.
Jag planerade ursprungligen att detta projekt skulle ta ca 5 dagar för att slutföra, men detta visade sig vara vilt felaktiga som arbetet visade sig vara ungefär 10 gånger vad jag trodde det skulle vara. Säkert skulle det bara om att koppla upp ett dussin sensorer och att få de data som överförs via GPRS? Errrrrrr... Jag önskar det var så enkelt! Så snart jag började gräva i djupet av detta projekt många dolda hinder började uppenbara sig och jag började känna sig väldigt likt Indiana Jones går in i templet av doom att rädda några värdefulla skatt från en massa psykopatiska munchkins.
Möjligen det värsta problemet var regnmätaren. Inte för att det är något fel med plast regnmätaren, bara att det sätt jag försökte inte kunde jag få regn data att resa ner I2C väg. Jag slutade ta everthing till bitar att försöka hitta problemet när till slut det var något jag bara kan förklara som ett "svart hål" i Arduino minne ram. Efter att ha kämpat i 3 hela dagar slutade jag upp att göra en PHP är arbete runt som väldigt klumpig jämfört med den lösning som har jag hittat. Det var något att med det faktum att Arduino inte skulle hålla ett litet värde t.ex. '1' för nio minuter i det är minne och göra det tillgängligt för överföring i slutet av den. Det var glad för att hålla andra små siffror i minnet så länge som de var uppdateras regelbundet. Det hade varit ok om numret var inte då nollställs efter 10 minuter så jag bara gjorde det möjligt att fortsätta växa större och större utan att återställa den. En annan konstig kammare i de fördömdas tempel.
Så var man ska börja och hur mycket i detalj gå in på? En annan fråga är när du ska sluta, som jag tror att jag kunde utveckla detta projekt mycket mer.