GPS-styrd väckarklocka

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Axbri
Inlägg: 20
Blev medlem: 6 februari 2010, 20:15:47

GPS-styrd väckarklocka

Inlägg av Axbri »

Hej, jag skulle behöva lite hjälp med C-programmering. Jag har tänkt göra en GPS-styrd väckarklocka, och jag skulle gärna vilja ha några tips om hur jag ska lägga upp programmet.

Mitt första problem är att plocka ut tiden ur ett GPS-NMEA meddelande och visa den på en LED-display. Jag vet hur meddelandena ser ut, men jag vet inte riktigt hur jag ska göra för att få ut den intressanta delen. Jag använder en PIC16F887 som jag programmerar i mikroC ver 8.2. Men jag har väldigt lite erfarenhet (är 16 år), har bara gjort ett par små projekt med C-programmering tidigare, och några fler med assembler.

Jag har redan byggt klart hårdvaran, som jag tror funkar bra, här är några bilder:

Bild

Bild
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: GPS-styrd väckarklocka

Inlägg av Icecap »

Snyggt! Och kul projekt.

Först ska du ha klart för dig att GPS inte alltid har mottagning, därför bör du ha en klockafunktion i programmet och den korrigeras med GPS-data när de kommer. Med lite fibblande i programmet kan du skapa en självkalibrerande klocka som kommer att gå rätt själv utan långa perioder med GPS-data.

Har du scanning av displayen att fungera?
Användarvisningsbild
Axbri
Inlägg: 20
Blev medlem: 6 februari 2010, 20:15:47

Re: GPS-styrd väckarklocka

Inlägg av Axbri »

Min GPS fortsätter att skicka meddelanden och håller tiden själv, även om den har förlorat GPS-signalen. Svepningen av displayen fungerar. Men hur ska jag tömma UARTen? Och hur ska jag få ut tiden ur meddelandet?
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: GPS-styrd väckarklocka

Inlägg av Icecap »

NMEA

Det kan göras på många sätt, jag använder nästan alltid en interrupt när en byte är mottagit, sedan kan man göra lite olika.
Då ett tidsmeddelande verkar börja med "ZDA," ville det kanske vara värd att kolla efter dessa 4 tecken men det är kanske ett steg lägre vi ska börja?

En läsning av RCREG ger den senaste mottagna byte.
Användarvisningsbild
Axbri
Inlägg: 20
Blev medlem: 6 februari 2010, 20:15:47

Re: GPS-styrd väckarklocka

Inlägg av Axbri »

Kanske förklarade jag lite dåligt i mitt första inlägg vad det var jag ville ha hjälp med, men nu har jag i alla fall löst nästan alla problem och nu fungerar väckarklockan perfekt. Men sist i det här inlägget har jag i alla fall två precisa frågor som jag hoppas kunna få svar på.

Jag har även gjort ett användarinterface så att det går att ställa in larmtiden med sekundprecision och spara den i eeprom-minnet. När man sätter på strömmen på väckarklockan skickar den först ett kommando till GPSen så att den börjar skicka ut NMEA-GGA-meddelanden, och läser larmtiden från eeprom-et och sparar det i variabler. Det här gör att väckarklockan kommer ihåg larmtiden även om det blir ett strömavbrott.

När klockan larmar spelar den några toner. När man trycker på den stora knappen på ovansidan går klockan in i snoozemod. Då väntar den 7 minuter och sedan spelar den igen. Om man trycker på knappen ännu en gång innan den har spelat igen så stänger man av larmet i 24 timmar.

Jag kan också ställa in tiden genom att stega timmarna några steg uppåt respektive nedåt. Det här är mest för att kunna ställa in sommartid och vintertid. Jag vet att det går att göra det också automatiskt men jag har nöjt mig med den har lösningen.

Det går även att justera ljusstyrkan i displayen med knapparna på baksidan. Från en lysdiod som togglas varje sekund går det fyra optofibrar fram till displayen som blir kolon. Inne i den trånga lådan sitter en 7805 som matar både klockan och GPSen. Eftersom den blev lite varm var jag tvungen att sätta en kylfläns på utsidan.

När jag höll på att utveckla programmerat råkade jag ut för att mikroC klagade på ”routine too large” då hade jag använt ca. 35% av minnet i mikrokontrollen. Felet försvann först när jag lyckades göra programmet mindre. Vad berodde det på? Och hur kan man lösa det om man vill göra ett större program?

Bild

Bild
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: GPS-styrd väckarklocka

Inlägg av Icecap »

Gratisversionen av MikroC är begränsat till 2kWord programkod.
Användarvisningsbild
Axbri
Inlägg: 20
Blev medlem: 6 februari 2010, 20:15:47

Re: GPS-styrd väckarklocka

Inlägg av Axbri »

Hej Icecap

Jag har faktiskt en riktig upplåst variant av mikroC. Det måste vara något annat...
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: GPS-styrd väckarklocka

Inlägg av Icecap »

Det kan ju vara lite som det problem jag hade men den Fujitsu jag håller på med: det var en rutin som var större än Program Counter (PC) kunde klara, vid att bryta ner den stora klumpen i fler mindre delar löstes problemet.
Skriv svar