Sadržaj:

CanSat - Vodič za početnike: 6 koraka
CanSat - Vodič za početnike: 6 koraka

Video: CanSat - Vodič za početnike: 6 koraka

Video: CanSat - Vodič za početnike: 6 koraka
Video: Основные ошибки при возведении перегородок из газобетона #5 2024, Juli
Anonim
CanSat - Vodič za početnike
CanSat - Vodič za početnike
CanSat - Vodič za početnike
CanSat - Vodič za početnike
CanSat - Vodič za početnike
CanSat - Vodič za početnike

Glavni cilj ovih instrukcija je dijeljenje procesa razvoja CanSat -a, korak po korak. No, prije nego što počnemo, razjasnimo doista što je CanSat i koje su njegove glavne funkcije, a također ćemo iskoristiti priliku i predstavit ćemo naš tim. Ovaj projekt započeo je kao projekt proširenja na našem univerzitetu, Universidade Tecnológica Federal do Paraná (UTFPR), kampus Cornélio Procópio. Vođeni našim savjetnikom, razvili smo plan djelovanja s namjerom da uđemo u CanSats, što je značilo proučavanje svih njegovih aspekata i karakteristika, kako bismo mogli razumjeti kako to funkcionira, što bi na kraju rezultiralo izgradnjom CanSat i razvoj ovog vodiča. CanSat je klasificiran kao pikosatelit, što znači da mu je težina ograničena na 1 kg, ali obično CanSat teži oko 350 g, a njegova struktura temelji se na limenci sode, cilindru promjera 6, 1 cm, visine 11, 65 cm. Ovaj model predstavljen je s namjerom da pojednostavi proces razvoja satelita, kako bi se univerzitetima omogućio pristup ovim tehnologijama, postižući popularnost zbog natječaja koji su usvojili ovaj obrazac. Općenito, CanSats se temelje na 4 strukture, odnosno sistemu napajanja, sistemu osjetljivosti, telemetrijskom sistemu i glavnom sistemu. Pa pogledajmo pobliže svaki sistem: - Sistem napajanja: ovaj sistem je odgovoran za snabdijevanje ostalih električnom energijom, u skladu sa svojim potrebama. Drugim riječima, trebao bi napajati sisteme potrebnim naponom i strujom, poštujući njegove granice. Takođe, može sadržati zaštitne komponente, kako bi se garantovala sigurnost i pravilno ponašanje drugih sistema. Obično se temelji na bateriji i krugu regulatora napona, ali se mogu dodati i mnoge druge značajke, poput tehnika upravljanja napajanjem i nekoliko vrsta zaštite. - Sensing system: ovaj sistem se sastoji od svih senzora i uređaja koji su odgovorni za prikupljanje potrebnih podataka. može se povezati s glavnim sistemom na nekoliko načina, serijskim protokolima, paralelnim protokolima, između ostalog, zato je zaista važno ovladati svim ovim tehnikama, kako biste mogli odrediti najpogodniju. Općenito, serijski protokoli su oni koji se često biraju, zbog svog manjeg broja veza i svestranosti, daleko najpopularniji su SPI, I2C i UART protokoli. - Telemetrijski sistem: ovaj sistem je odgovoran za uspostavljanje bežične komunikacije između CanSat -a i zemaljske kontrolne stanice, koja uključuje protokol i hardver bežične komunikacije. - Glavni sistem: ovaj sistem je odgovoran za međusobno povezivanje svih drugih sistema, na način da takođe kontroliše i sinhronizuje njihov redosled rada kao organizma.

Korak 1: Glavni sistem

Glavni sistem
Glavni sistem

Iz mnogih razloga odabrali smo mikro kontroler zasnovan na ARM® Cortex®-M4F, to je MCU male snage, koji nudi mnogo veću procesorsku snagu, plus nekoliko funkcija koje se obično ne vide u RISK mikrokontrolerima, poput DSP funkcija. Ove karakteristike su zanimljive jer omogućuju povećanje složenosti funkcija CanSat aplikacija, bez potrebe za promjenom mikrokontrolera (naravno, poštujući i njegova ograničenja).

Sve dok je projekt imao nekoliko financijskih ograničenja, odabrani mikrokontroler je također trebao biti pristupačan, pa smo slijedeći specifikacije na kraju odabrali ARM® Cortex®-M4F bazirani MCU TM4C123G LaunchPad, to je lansirna ploča koja je upravo odgovarala našem projektu. Takođe, dokumentacija (tehnički listovi i dokumentacija o karakteristikama koju je dostavio proizvođač) i IDE MCU -a bili su profesionalci koje je zaista potrebno uzeti u obzir, sve dok su mnogo pomagali razvojnom procesu.

U ovom Cansatu odlučili smo pojednostaviti i samo ga razviti pomoću lansirne ploče, ali naravno u budućim projektima to neće biti opcija, s obzirom na to da nekoliko funkcija uključenih u lansirnu ploču zapravo nisu potrebne za naš projekt, plus njegov format mnogo je ograničio projekt strukture našeg CanSat -a, sve dok su dimenzije CanSat -a minimalne.

Dakle, nakon što smo odabrali pravi 'mozak' za ovaj sistem, sljedeći korak je bio razvoj njegovog softvera, a kako bismo pojednostavili, odlučili smo jednostavno upotrijebiti sekvencijalni program koji radi sljedeći niz na frekvenciji od 1Hz:

Očitavanja senzora> pohrana podataka> prijenos podataka

Dio senzora bit će objašnjen kasnije u sistemu senzora, kao i prijenos podataka u sistemu telemetrije. Konačno, trebalo je naučiti programirati mikrokontroler, u našem slučaju morali smo naučiti sljedeće funkcije MCU -a, GPIO -a, I2C modula, UART modula i SPI modula.

GPIO -i, ili jednostavno ulazi i izlazi opće namjene, su portovi koji se mogu koristiti za obavljanje nekoliko funkcija, sve dok su pravilno postavljeni. S obzirom na to da ne koristimo nikakve C biblioteke za GPIO -e, čak ni za ostale module, trebali smo konfigurirati sve potrebne registre. Iz tog razloga napisali smo osnovni vodič koji sadrži primjere i opise vezane za registre modula koje koristimo, a koji su dostupni u nastavku.

Također, radi pojednostavljenja i organiziranja koda, stvoreno je nekoliko biblioteka. Dakle, biblioteke su stvorene za sljedeće svrhe:

- SPI protokol

- I2C protokol

- UART protokol

- NRF24L01+ - prijemnik

Ove biblioteke su takođe dostupne u nastavku, ali zapamtite da smo koristili Keil uvision 5 IDE, tako da ove biblioteke neće raditi za sastavljač koda. Konačno, nakon stvaranja svih biblioteka i učenja svih potrebnih stvari, konačni kod je sastavljen, a kao što možete zamisliti, dostupan je i u nastavku.

Korak 2: Sensing System

Sensing System
Sensing System
Sensing System
Sensing System
Sensing System
Sensing System
Sensing System
Sensing System

Ovaj sistem se sastoji od svih senzora i uređaja koji su odgovorni za prikupljanje informacija o uslovima rada CanSat -a. U našem slučaju odabrali smo sljedeće senzore:

- troosni digitalni akcelerometar - MPU6050

- troosni digitalni žiroskop - MPU6050

- troosni digitalni magnetometar - HMC5883L

- digitalni barometar - BMP280

- i GPS - Tyco A1035D

Izbori su se uglavnom temeljili na pristupačnosti, što je značilo da sve dok su mehaničke i električne (komunikacijski protokol, napajanje itd.) Karakteristike kompatibilne s našim projektom, daljnji parametri nisu nametnuti izboru, također zato što je za neke senzore dostupna mogućnosti su bile ograničene. Nakon nabavke senzora, došlo je vrijeme da ih stavimo u funkciju.

Dakle, prvi koji je istražen bio je troosni digitalni akcelerometar i žiroskop, nazvan MPU6050 (može se lako pronaći bilo gdje, sve dok se naširoko koristi u projektima ARDUINO), njegova komunikacija se temelji na protokolu I2C, protokolu u kojem svaki podređeni uređaj ima adresu, što omogućava paralelno povezivanje nekoliko uređaja, s obzirom na to da je adresa dugačka 7 bita, oko 127 uređaja može se povezati na istu serijsku sabirnicu. Ovaj komunikacijski protokol radi na dvije sabirnice, sabirnici podataka i satnoj sabirnici, tako da za razmjenu informacija master mora poslati 8 ciklusa takta (usput, informacija mora odgovarati bajtu, sve dok je ova komunikacija zasnovana na veličini bajta) bilo u prijemu ili u operaciji prenosa. Adresa MPU6050 je 0b110100X, a X se koristi za pozivanje (označavanje) operacije čitanja ili pisanja (0 označava operaciju pisanja, a 1 označava operaciju čitanja), pa kad god želite očitati senzor, koristite njegovu adresu kao 0xD1 i kad god želite pisati, koristite njegovu adresu kao 0xD0.

Nakon istraživanja I2C protokola, MPU6050 je zapravo proučavan, drugim riječima pročitana je njegova podatkovna tablica, kako bi se dobile potrebne informacije za rad, jer je za ovaj senzor bilo potrebno konfigurirati samo tri registra, upravljanje napajanjem 1 register - adresa 0x6B (kako bi se osiguralo da senzor nije u stanju mirovanja), registar konfiguracije žiroskopa - adresa 0x1B (kako bi se konfigurirao cijeli raspon skale za žiroskop) i na kraju registar konfiguracije akcelerometra - adresa 0x1C (u kako biste konfigurirali cijeli raspon skale za akcelerometar). Postoji još nekoliko registara koji se mogu konfigurirati, dopuštajući optimizaciju performansi senzora, ali za ovaj projekt ove su konfiguracije dovoljne.

Dakle, nakon što ste pravilno konfigurirali senzor, sada ga možete pročitati. Željene informacije se nalaze između registra 0x3B i registra 0x48, svaka vrijednost osi sastoji se od dva bajta koji su kodirani na način da se 2 nadopunjuju, što znači da se pročitani podaci moraju pretvoriti kako bi bili smisleni (ove stvari će biti raspravljati kasnije).

Nakon što smo završili s MPU6050, došlo je vrijeme za proučavanje troosnog digitalnog magnetometra, nazvanog HMC5883L (također se lako može pronaći bilo gdje, sve dok se naširoko koristi u projektima ARDUINO), a opet je njegov komunikacijski protokol serijski protokol I2C. Njegova adresa je 0b0011110X, a X se koristi za pozivanje (označavanje) operacije čitanja ili pisanja (0 označava operaciju pisanja, a 1 označava operaciju čitanja), pa kad god želite očitati senzor, koristite njegovu adresu kao 0x3D i kad god želite pisati samo upotrijebite njegovu adresu kao 0x3C.

U ovom slučaju, kako bi se HMC5883L inicijalizirao, bilo je potrebno konfigurirati tri registra, konfiguracijski registar A - adresu 0x00 (kako bi se konfigurirala brzina izlaza podataka i način mjerenja), konfiguracijski registar B - adresa 0x01 (za konfiguriranje pojačanja senzora) i na kraju, ali ne i najmanje važno, registar načina rada - adresa 0x02 (kako bi se konfigurirao način rada uređaja).

Dakle, nakon pravilnog konfiguriranja HMC5883L, sada ga je moguće pročitati. Željene informacije se nalaze između registra 0x03 i registra 0x08, svaka vrijednost osi sastoji se od dva bajta koji su kodirani na način da se 2 nadopunjuju, što znači da se pročitani podaci moraju pretvoriti kako bi bili smisleni (ove stvari će biti raspravljati kasnije). Konkretno, za ovaj senzor trebali biste pročitati sve informacije odjednom, inače možda neće raditi kako je predloženo, sve dok se izlazni podaci upisuju u ove registre samo kada su svi registri upisani. pa ih svakako pročitajte.

Konačno, proučavan je digitalni barometar, drugi senzor protokola I2C, koji se naziva i BMP280 (također se lako može pronaći bilo gdje, sve dok se naširoko koristi u projektima ARDUINO). Njegova adresa je b01110110X. Također se X koristi za pozivanje (označavanje) operacije čitanja ili pisanja (0 označava operaciju pisanja, a 1 označava operaciju čitanja), pa kad god želite očitati senzor, samo koristite njegovu adresu kao 0XEA i kad god želite pisati samo upotrijebite njegovu adresu kao 0XEB. Ali u slučaju ovog senzora, I2C adresa se može promijeniti promjenom nivoa napona na SDO pinu, pa ako primijenite GND na ovaj pin, adresa će biti b01110110X, a ako na ovaj pin primijenite VCC, adresa će ići biti b01110111X, također da biste omogućili I2C modul u ovom senzoru morate primijeniti VCC razinu na CSB pin senzora, inače neće raditi ispravno.

Za BMP280 samo su dva registra trebala biti konfigurirana kako bi mogao funkcionirati, registar ctrl_meas - adresa 0XF4 (za postavljanje opcija prikupljanja podataka) i registar konfiguracije - adresa 0XF5 (kako bi se postavila brzina, filter i opcije sučelja za senzor).

Nakon što ste završili s konfiguracijom, vrijeme je za ono što je zaista važno, same podatke, u ovom slučaju željene informacije se nalaze između registara 0XF7 i 0XFC. I temperatura i vrijednost tlaka sastoje se od tri bajta koji su kodirani na način da se 2 nadopunjuju, što znači da se pročitani podaci moraju pretvoriti kako bi bili smisleni (o tim će se temama govoriti kasnije). Također za ovaj senzor, kako bi se dobila veća preciznost, postoji nekoliko koeficijenata korekcija koji se mogu koristiti pri pretvaranju podataka, oni se nalaze između registara 0X88 i 0XA1, da, postoji 26 bajtova koeficijenata korekcija, pa ako je preciznost nisu toliko važne, samo ih zaboravite, inače nema drugog načina.

I na kraju, ali ne i najmanje važno, GPS - Tyco A1035D, ovaj se oslanja na UART serijski protokol, konkretno brzinom od 4800 kbps, bez paritetnih bitova, 8 bitova podataka i 1 zaustavni bit. UART ili univerzalni asinhroni prijemnik/odašiljač, je serijski protokol u kojem se sinkronizacija informacija vrši putem softvera, stoga je to asinhroni protokol, također zbog ove karakteristike, brzina u kojoj se informacije prenose i primaju je znatno manja. Konkretno za ovaj protokol, paketi moraju započeti početnim bitom, ali zaustavni bit nije obavezan, a veličina paketa je 8 bita.

U slučaju GPS -a - Tyco A1035D, bile su potrebne dvije konfiguracije, a to su setDGPSport (naredba 102) i Query/RateControl (naredba 103), sve te informacije, plus više opcija dostupne su u referentnom priručniku za NMEA, protokolu koristi se u većini GPS modula. Naredba 102 koristi se za postavljanje brzine prijenosa, količine bitova podataka i postojanja bita parnosti i zaustavljanja. Naredba 103 koristi se za kontrolu izlaza standardnih NMEA poruka GGA, GLL, GSA, GSV, RMC i VTG, one su detaljno opisane u referentnom priručniku, ali u našem slučaju odabrana je GGA koja označava Global Fiksni podaci sistema za pozicioniranje.

Nakon što je GPS - TycoA1035D pravilno konfiguriran, sada je potrebno samo pročitati serijski port i filtrirati niz primljen prema odabranim parametrima kako bi se omogućila obrada informacija.

Nakon što su naučili sve potrebne informacije o svim senzorima, bio je potreban samo dodatni napor kako bi se sve spojilo u isti program, također koristeći serijske komunikacijske biblioteke.

Korak 3: Telemetrijski sistem

Telemetrijski sistem
Telemetrijski sistem

Ovaj sistem je odgovoran za uspostavljanje komunikacije između zemaljske kontrole i CanSat -a, osim parametara projekta, također je ograničen na još neke načine, sve dok je RF prijenos dopušten samo u nekim frekvencijskim opsezima, koji nisu zauzeti zbog druge RF usluge, poput mobilnih usluga. Ova ograničenja su različita i mogu se mijenjati od zemlje do zemlje, pa je važno uvijek provjeravati dozvoljene frekvencijske opsege za uobičajenu upotrebu.

Na tržištu postoji mnogo opcija radija po pristupačnim cijenama, svi ti sustavi nude različite načine modulacije na različitim frekvencijama, za ovaj sistem naš izbor se sastojao od RF primopredajnika od 2,4 GHz, NRF24L01+, zbog činjenice da je već imao dobro uspostavljen komunikacijski protokol, sve dok su sistemi za verifikaciju, poput sistema automatske potvrde i sistema automatskog ponovnog prijenosa. Nadalje, njegova brzina prijenosa mogla bi doseći brzine do 2Mbps uz razumnu potrošnju energije.

Prije nego počnemo raditi na ovom primopredajniku, upoznajmo se nešto više o NRF24L01+. Kao što je već spomenuto, radi se o radiju zasnovanom na 2,4 GHz, koji se može konfigurirati kao prijemnik ili odašiljač. Za uspostavu komunikacije svaki primopredajnik ima adresu koju korisnik može konfigurirati, adresa može biti duga 24 do 40 bita prema vašim potrebama. Transakcije podataka mogu se odvijati pojedinačno ili kontinuirano, veličina podataka je ograničena na 1 bajt i svaka transakcija može, ali i ne mora generirati uvjet potvrde u skladu s konfiguracijama primopredajnika.

Moguće su i druge konfiguracije, kao što su dobitak prema izlazu RF signala, postojanje ili ne rutine automatskog ponovnog odašiljanja (ako je tako, kašnjenje, količina ispitivanja između ostalih karakteristika može se odabrati) i nekoliko drugih značajke koje nisu nužno korisne za ovaj projekt, ali su svejedno dostupne u podatkovnom listu komponente, u slučaju interesa za njih.

NRF24L01+ 'govori' SPI jezik kada je u pitanju serijska komunikacija, pa kad god želite čitati ili pisati ovaj primopredajnik, samo naprijed i upotrijebite SPI protokol za to. SPI je serijski protokol kao što je ranije spomenuto, u kojem se odabir slave -a vrši putem CHIPSELECT (CS) pina, koji zajedno s punim dupleksom (i master i slave mogu paralelno prenositi i primati) karakteristike ovog protokola omogućava mnogo veće brzine prenosa podataka.

Tehnički list NRF24L01+ sadrži skup naredbi za čitanje ili pisanje ove komponente, postoje različite naredbe za pristup internim registrima, RX i TX korisni teret među ostalim operacijama, pa ovisno o željenoj operaciji, može biti potrebna određena naredba za izvesti ga. Zato bi bilo zanimljivo pogledati podatkovnu tablicu u kojoj se nalazi popis koji sadrži i objašnjava sve moguće radnje nad primopredajnikom (nećemo ih ovdje navesti jer to nije glavna poenta ovog uputstva).

Osim primopredajnika, još jedna važna komponenta ovog sistema je protokol putem kojeg se šalju i primaju svi željeni podaci, sve dok bi sistem trebao raditi s nekoliko bajtova informacija, važno je znati značenje svakog bajta, za to protokol radi, omogućava sistemu da na organiziran način identificira sve podatke koje prima i prenosi.

Kako bi pojednostavili stvari, korišteni protokol (za odašiljač) sastojao se od zaglavlja formiranog od 3 bajta praćenog podacima senzora, sve dok su se svi podaci senzora sastojali od dva bajta, svaki senzorski podatak dobio je identifikacijski broj koji počinje od 0x01 i slijedeći po redoslijedu polumjeseca, tako da svaka dva bajta ima identifikacijski bajt, na ovaj način se zaglavlje ne može slučajno ponoviti prema očitanjima senzora. Prijemnik je na kraju bio jednostavan kao i odašiljač, protokol je samo trebao prepoznati zaglavlje koje je poslao odašiljač, a nakon toga je samo pohranio primljene bajtove, u ovom slučaju smo odlučili upotrijebiti vektor za njihovo pohranjivanje.

Dakle, nakon što ste stekli sva potrebna znanja o primopredajniku i odredili komunikacijski protokol, vrijeme je da sve spojite u isti komad koda i konačno završite CanSat firmver.

Korak 4: Sistem napajanja

Ovaj sistem je odgovoran za opskrbu ostalih sistema energijom koja im je potrebna za ispravan rad, u ovom slučaju smo odlučili jednostavno upotrijebiti bateriju i regulator napona. Dakle, za dimenzioniranje baterije, analizirani su neki radni parametri CanSat -a, koji bi pomogli u definisanju modela i snage potrebne za napajanje cijelog sistema.

S obzirom na to da bi CanSat trebao trajati nekoliko sati uključen, najprikladnije je razmotriti najekstremnije situacije potrošnje energije, u kojima bi svaki modul i sistem priključen na CanSat trošili najveću moguću struju. Međutim, također je važno biti razuman u ovom trenutku da ne povećavate bateriju, što također nije zanimljivo zbog ograničenja težine CanSat -a.

Nakon pregleda svih listova sa podacima o komponentama svih sistema, ukupna struja koju je sistem potrošio bila je otprilike 160mAh, uzimajući u obzir autonomiju od 10 sati, baterija od 1600mAh bila je dovoljna da sistemu garantira odgovarajuće radne uslove.

Nakon što ste upoznali potrebno punjenje baterije, morate razmotriti još neke aspekte unatoč autonomiji, kao što su veličina, težina, radna temperatura (sve dok se CanSat drži unutar rakete), napetosti i sile kojoj se isti podnosi, između ostalog.

Korak 5: Struktura

Struktura je zaista važna za sigurnost CanSat -a, iako je u ovom projektu bila pomalo zanemarena (zapravo nije bilo velikog interesa za razvoj mehaničkog dijela CanSat -a, zbog činjenice da svi članovi kurseva se odnosio na elektroniku). Sve dok je projekt bio zasnovan na postojećem uzorku, bio je potreban CanSat uzorak, bez mnogo razmišljanja o tome kako će izgledati, pa bi ga trebalo oblikovati u obliku cilindra, s promjerom od oko 6,1 cm i oko 11, Visok 65 cm (iste mjere kao limenka sode).

Nakon što su završili s vanjskom strukturom, sva je pažnja bila usmjerena na sistem pričvršćivanja, odgovoran za držanje svih ploča unutar cilindrične konstrukcije, što je također omogućilo apsorpciju ubrzanja na koja bi CanSat bio podvrgnut, nakon nekog razgovora o tome, odlučeno je obje strukture pričvrstiti lijevanjem pjene velike gustoće na željene oblike.

Vanjska konstrukcija izrađena je od PVC cijevi, željenog promjera, kako bi se zatvorila konstrukcija, korišteni su neki PVC poklopci cijevi

Korak 6: Zaključci i buduća razmišljanja

CanSat još treba testirati na djelu, mi se zapravo prijavljujemo na raketno takmičenje (koje će se održati u decembru), također nakon što smo prošli cijelu zgradu (nekako, zapravo još moramo dovršiti neke stvari) i razvoj proces, zapažene su neke perspektive i bilješke za koje smo mislili da bi bilo zanimljivo podijeliti sa svima vama, uglavnom o borbama, savjetima, pa čak i dobrim iskustvima, pa evo slijedi:

- Početak projekta je postao najplodniji period razvoja cijelog projekta, nažalost grupa je postala pomalo nezainteresirana za projekt do isteka roka, možda zbog nedostatka trenutnih rezultata, ili možda samo nedostatka komunikacije, u svakom slučaju iz projekta je proizašlo nekoliko dobrih stvari

- Bilo je potrebno mnogo truda da bi primopredajnik funkcionirao, budući da su sve biblioteke razvijene od nule, također zato što su za testiranje ovakvih stvari potrebna dva različita programa i postavke

- U našem slučaju to nije bila najbolja ideja za rad na mikro kontrolerima zasnovanim na konfiguracijama registara, nisu svi članovi bili u mogućnosti držati korak s ostatkom grupe, što je dovelo do nekih problema, poput podjele zadataka. Postoji mnoštvo pristojnih C biblioteka za mikrokontroler koji smo koristili, pa bi bilo mnogo bolje zamisliti koristiti te resurse, postoji i IDE pod nazivom Code Composer, koji nudi i mnogo resursa za te mikrokontrolere

- CanSat -u je još uvijek potrebno mnogo poboljšanja, ovo iskustvo se temeljilo na osnovnim tehnikama i vještinama, također nekoliko pitanja nije uzeto u obzir, pa se nadamo da bi u budućnosti vrhunska verzija ovog CanSat -a mogla postati stvarnost uz više truda i uloženog truda.

Preporučuje se: