En CanSat er en satellittmodell som skal passe inn i en 0,33 liters brusboks, og som inneholder instrumenter, strømforsyning, databehandlingsenhet og kommunikasjonssystem som i virkelige satellitter. NAROM - Nasjonalt senter for romeraltert opplæring - står som arrangør av en årlig konkurranse der elever i Norden fra videregående skoler som tar Teknologi og forskningslære kan delta.
E ”Brusboks-satellitten” skal skytes opp og så slippes fra en rakett for så å sveve tilbake til bakken i fallskjerm. På vei ned skal den gjøre ulike målinger som sendes til en bakkestasjon. Utfordringen er å holde seg innenfor begrensninger på kostnad, tidsbruk, vekt og ikke minst volum i og med at satellitten skal bygges inn i en brusboks. CanSat er blitt et internasjonalt vellykket og billig konsept for å kunne tilby studenter og elever et spennende og lærerikt ”rom-prosjekt”, og for å skape økt interesse for realfagene og teknologi.
{jcomments on}Denne CanSat-løsningen bruker Mega2560-kortet og GY-80 IMU for lesing av gyro, akselerasjon, magnetisme, trykk og tempereatur. I tillegg leses lysstyrke og fuktighet. Data sendes til bakken som telemetri ved hjelp av APC-220 RF modul. I tillegg lagres data på micro-SD-brikke. Data sendes som en tekststreng der data fra ulike målinger skilles med komma. Hvert målepunkt har et referansehode med nummer og tidsangivelse i mikrosekunder fra startpunktet. Startpunktet er oppgitt med dato og klokkeslett.
GPS-signalet leses med en interruptrutine som sender GPS-koden for GPRMC-tagget som eget målepunkt når en avlesning er ferdig.
{jcomments on}Denne CanSat-løsningen bruker en Arduino UNO med prototypekort som er utstyrt med RTC (Real Time Clock) og dataloggerenhet for lagring på SD-brikke. Dataloggerkort med SD-kort og RTC kan ikke brukes da biblioteket for SD-lagring krever 30% av kapasiteten på UNO-kortet. I stedet brukes OpenLog-enhet som kobles parallelt med RF-enheten. I utgangspunktet er baudraten 115200 på OpenLog-enheten, men dette kan endres ved å redigere config.txt-filen som finnes å microSD-brikken. Der kan kommunikasjonsvariablene endres. Denne filen opprettes automatisk første gang en microSD-brikke settes inn i enheten. Det kreves ingen programkode siden den kobles sammen med RF-enheten. GY-80 IMU brukers til å lese av akselerasjon, gyro, magnetisme, trykk og temperatur. EM411 gir GPS-data. Dato og klokkelsett logges for startpunktet. Deretter logges dataposter med mikrosekundangivelse fra startpunktet til telemetrikommunikasjon til bakken og til SD minnebrikke. Datapostene er på csv-format for import og plotting i EXCEL,
Skolelaboratoriet på NTNU med Nils Kristian Rossing i spissen bistod elever fra flere videregående skole med CanSat-slipp fra ballong tirsdag 24. mars.Slippet foregikk bak Universitetet på Dragvold. Ballongen rakk omtrent 100 meter opp på det meste der satellittene sluppet. De falt ned i fallskjerm og sendte ulike måledata ned til elevene som logget dem ned på PC-er. Vinden varierte en del. Det førte til at noen satellitter drev inn i skogen. Enkelte havnet i trærne. Det var da et utfordring å få dem ned igjen. Det ble høstet mye nyttig erfaring med slippet. Mange av elevene skal delta i nordisk konkurranse på Andøya i april der CanSat-satellittene blir skutt opp med raketter.
Jeg stilte med drone spesielt laget for å løfte CanSat. Men på grunn av liten erfaring og fartstid med bruken av den, ble den bare vist og demonstrert. Dronen kan programmeres tll automatisk å fly opp til en bestemt høyde og slippe CanSat som den bringer med seg. Deretter vil dronen fly ned igjen og automatisk parkere der den tok av.
Neste gang kan kanskje dronen tas i bruk når CanSat skal prøveslippes.
SerialEvent2() er ikke en interruptrutine. Den leses for hver runde i loop(). Det betyr at det er vanskelig å lese en datastrøm fra en GPS-enhet uten at noe av data går tapt dersom det er tidskrevende lesing av andre sensorer i programskissen. Under vises en iterruptrutine for UNO som kan brukes til å lese et tegn fra en GPS som bruker Serial2-porten, legge den i en buffer og gi en statusvariabel til loop()-rutinen når et linjeskift er påvist. loop()-rutinen kan da behandle GPS-strengen slik som man ønsker mens interruptrutinen fortsetter å samle data uavhenig av tid som brukes til å lese andre sensorer.
SerialEvent() er ikke en interruptrutine. Den leses for hver runde i loop(). Det betyr at det er vanskelig å lese en datastrøm fra en GPS-enhet uten at noe av data går tapt dersom det er tidskrevende lesing av andre sensorer i programskissen. Under vises en iterruptrutine for UNO som kan brukes til å lese et tegn fra en GPS som bruker Serial-porten, legge den i en buffer og gi en statusvariabel til loop()-rutinen når et linjeskift er påvist. loop()-rutinen kan da behandle GPS-strengen slik som man ønsker mens interruptrutinen fortsetter å samle data uavhenig av tid som brukes til å lese andre sensorer.