1
Podrobn´ a specifikace Yunifly – Datasheet OBRAZEK fotky Yunifly obe desky zvlast + dohromady + top view - merge to one
1.1
Hmotnost a rozmˇ ery
Elektronika Yunifly je sloˇzena ze dvou samostatn´ ych ˇc´ast´ı, kter´e m˚ uˇzeme pouˇz´ıt jako jeden dvouprocesorov´ y celek. V tabulce (DOPLNIT cislo) jsou uvedeny hmotnosti jednotliv´ ych ˇc´ast´ı elektroniky. Hmotnost elektroniky Yunifly N´ azev souˇc´asti Hmotnost [g] Deska Basic DOPLNIT hmotnost Deska Main DOPLNIT hmotnost Yunifly cel´a DOPLNIT hmotnost Obˇe desky jsou navrˇzeny tak, aby jejich vz´ajemn´e propojen´ı bylo co nejv´ıce kompaktn´ı. Desku Main m˚ uˇzeme nasadit na konektor desky Basic a z´ısk´ame tak dvˇe propojen´e desky stejn´ ych rozmˇer˚ u, kter´e se dohromady uzav´ıraj´ı do kv´ adru. Jsou tak odolnˇejˇs´ı v˚ uˇci vnˇejˇs´ımu mechanick´emu poˇskozen´ı. OBRAZEK spojovaciho konektoru OBRAZEK rozmery
1.2
Pinov´ a konfigurace
OBRAZEK Pinova konfigurace obou desek vcetne legendy Propojovaci konektor Pin VCC
GND SDA, SCL CONTROL-XCK
CONTROL-PWM
RESET
Popis Nap´ ajen´ı 3.3V, kter´e je rozvedeno po cel´e desce od stabiliz´ atoru. Konektor je moˇzn´e vyuˇz´ıt pro nap´ajen´ı dalˇs´ıch zaˇr´ızen´ı do 500mA. Ground I2C linka, kter´a je vyuˇzita ke komunikaci mezi deskou Basic a deskou Main. Pin, kter´ ym je propojena deska Main s deskou Basic. Pokud nastane selh´an´ı desky Main, nabyde tento pin hodnoty LOW a deska Basic je pˇrepnuta do nouzov´eho reˇzimu. Pin, kter´ ym je propojena deska Main s deskou Basic. T´ımto pinem pˇred´av´ame desce Basic informaci o jednom ze dvou stav˚ u, jejichˇz v´ ybˇer nastav´ıme programovˇe. Reset procesoru dan´e desky.
Deska Basic
1
Pin BATT VCC
GND PWM0..7 ACC-RXD, ACC-TXD
FREERX-RXD, FREERX-TXD
KOMPAS-SDA, KOMPAS-SCL OTHER-SDA, OTHER-SCL ICP1..2 START
Popis Nap´ajen´ı desky 5-12V a detekce stavu vybit´ı bateri´ı. Nap´ajen´ı 3.3V, kter´e je rozvedeno po cel´e desce od stabiliz´atoru. Konektor je moˇzn´e vyuˇz´ıt pro nap´ajen´ı dalˇs´ıch zaˇr´ızen´ı do 500mA. Ground Konektory pulsn´ı ˇs´ıˇrkov´e modulace (PWM), ke kter´ ym je moˇzn´e pˇripojit serva a jin´e regul´atory. Konektor s´eriov´e linky, prim´arnˇe urˇcen´ y k pˇripojen´ı akcelerometr˚ u. (Lze pˇripojit libovoln´e zaˇr´ızen´ı s podporou USART.) RXD-receiver, TXD-transmitter Konektor s´eriov´e linky. Lze pˇripojit libovoln´e USART zaˇr´ızen´ı, napˇr´ıklad bluetooth. RXD-receiver, TXDtransmitter Konektor I2C sbˇernice. Prim´arnˇe urˇcen´ y pro pˇripojen´ı kompasu. Druh´ y paraleln´ı konektro I2C sbˇernice. Dva nez´avisl´e konektory pro zpracov´an´ı multi PWM sign´alu od RC pˇrij´ımaˇce nebo jin´eho zaˇr´ızen´ı totoˇzn´eho protokolu. Testpad, ke kter´emu lze pˇripojit programovˇe detekovateln´e tlaˇc´ıtko.
Deska Main Pin BATT VCC
GND GPS-RXD, GPS-TXD
ZEM-RXD, ZEM-TXD ADC0..3
SD OC0..3 ICP3 START2
Popis Nap´ ajen´ı desky 5-12V a detekce stavu vybit´ı bateri´ı. Nap´ ajen´ı 3.3V, kter´e je rozvedeno po cel´e desce od stabiliz´ atoru. Konektor je moˇzn´e vyuˇz´ıt pro nap´ajen´ı dalˇs´ıch zaˇr´ızen´ı do 500mA. Ground Konektor s´eriov´e linky, prim´arnˇe urˇcen´ y k pˇripojen´ı GPS. (Lze pˇripojit libovoln´e zaˇr´ızen´ı s podporou USART.) RXDreceiver, TXD-transmitter Konektor s´eriov´e linky. Lze pˇripojit libovoln´e zaˇr´ızen´ı s podporou USART. RXD-receiver, TXD-transmitter 10bit analogov´e vstupy. Namˇeˇren´e napˇet´ı je programu pˇred´ ano jako 10bit ˇc´ıslo v rozsahu od GND po hodnotu VCC. Slot microSD karty. Yunifly je kompaktibiln´ı s microSD/SDHC kartami. Testpady, kter´e lze pouˇz´ıt pro pˇripojen´ı dalˇs´ıch zaˇr´ızen´ı ovl´ adan´ ych pomoc´ı PWM. Testpad, kter´ y lze pouˇz´ıt jako pˇr´ıj´ımaˇc multiPWM sign´alu. Testpad, ke kter´emu lze pˇripojit programovˇe detekovateln´e tlaˇc´ıtko.
Kaˇzd´ y z v´ yˇse uveden´ ych pin˚ u lze pouˇz´ıt jako digit´aln´ı vstup nebo v´ ystup. Pouˇzit´ı kaˇzd´eho pinu je d´ano programem. Pokud chceme pouˇz´ıt jednotliv´e piny jako digit´aln´ı vstupy nebo v´ ystupy, pouˇzijeme oznaˇcen´ı PORT A..G (PA0..PA7..PF0..PF7..PG0..PG4). DOPLNIT Viz datasheet ATmega128 strana 5-6.
1.3
Sch´ ema zapojen´ı elektroniky
OBRAZEK schema Main OBRAZEK schema Basic OBRAZEK obe desky eagle
2
1.4
Knihovna funkc´ı pro Yunifly
Yunifly je moˇzn´e naprogramovat libovoln´ ym programem urˇcen´ ym pro procesory Atmel ˇrady ATmega. V t´eto sekci jsou pops´ any funkce, kter´e m˚ uˇzeme pouˇz´ıt k usnandnˇen´ı tvorby naˇseho programu pro elektroniku Yunifly. 1.4.1
Ovl´ ad´ an´ı konektor˚ u
Digit´ aln´ı porty Digit´ aln´ı porty jsou ovl´ad´any totoˇzn´ ym zp˚ usobem, jako je uvedeno s DOPLNIT datasheetu ATmega128. Kaˇzd´ y z pin˚ u m˚ uˇzeme pouˇz´ıt v reˇzimu ˇcten´ı a v reˇzimu z´apisu. V reˇzimu ˇcten´ı m˚ uˇzeme ˇc´ıst hodnotu vybran´eho pinu jako LOW (0V) nabo HIGH (3.3V) a v reˇzimu z´ apisu m˚ uˇzeme nastavit vybran´emu pinu hodnotu LOW nebo hodnotu HIGH. USART, I2C Vzhledem k tomu, ˇze obˇe desky vyuˇz´ıvaj´ı totoˇzn´ y procesor, je moˇzn´e pomoc´ı jedn´e knihovny ovl´adat porty na obou desk´ ach. Kaˇzd´a deska m´a vyvedeny dvˇe s´eriov´e linky USART (USART0 a USART1), d´ale jednu I2C sbˇernici (I2C), kter´a m˚ uˇze b´ yt paralelizov´ana a jednu SPI linku, kter´ a poskytuje komunikaci s microSD kartou. Knihovna nab´ız´ı komunikaci pomoc´ı tˇr´ıd, kter´e obsluhuj´ı jednotliv´e linky. N´ıˇze je uvedena uk´ azka pouˇzit´ı tˇr´ıdy USART0. Kaˇzd´a tˇr´ıda obsahuje tyto funkce: Funkce char C = USART0 . r e a d ( ) ; bool A = USART0 . peek ( char & C ) ; USART0 . w r i t e ( c ) ; USART0 . w r i t e ( ” any s t r i n g ” ) ; USART0 . writeNumber ( int I ) ;
Popis Pˇreˇcte prvn´ı pˇr´ıchoz´ı znak ve frontˇe. Pokud je pˇr´ıchoz´ı fronta pr´azdn´a, ˇcek´a se na pˇrijet´ı nov´eho znaku. Pokud je fronta pr´azdn´a, A==false, jinak A==true a do promˇenn´e C je uloˇzen prvn´ı znak ve frontˇe. Znak v promˇenn´e C je odesl´an. Odesl´ano pole znak˚ u. Funkce je obdobn´a jako cyklick´e vol´ an´ı funkce USART0.write(c). Odesl´ano 32bit ˇc´ıslo, kter´e je pˇrevedeno na pole odpov´ıdaj´ıc´ıch znak˚ u v dekadick´em z´apisu.
Ovl´ ad´ an´ı PWM zaˇ r´ızen´ı PWM zaˇr´ızen´ı ovl´ad´ame nastaven´ım hodnoty, kter´a je pˇrev´adˇena na sign´al PWM. Nastaven´ a hodnota je zas´ıl´ ana aˇz do jej´ıho dalˇs´ıho pˇreps´an´ı programem. Sign´al PWM je generov´an hardwarovˇe, nen´ı tedy tˇreba dalˇs´ı softwarov´a obsluha. Pro obsluhu pouˇzijeme funkci setPWM( int val ue , int i d ) ; kde promˇenn´a id oznaˇcuje zaˇr´ızen´ı, pro kter´e nastavujeme aktu´aln´ı hodnotu v promˇenn´e value. ICP a pˇ r´ıjem sign´ alu z RC pˇ rij´ımaˇ ce Procesor disponuje dvˇema ICP porty (ICP0 a ICP1), kter´e jsou na sobˇe nez´ avisl´e. Knihovna Yunifly obsahuje totoˇzn´e struktury ICP0 a ICP1, kter´e obsluhuj´ı pˇr´ıjem dat pˇres ICP port. DOPLNIT jde to tak vubec? c l a s s ICP0 { public : void setNumberOfChannels ( int count ) ; int v a l u e = getChannelValue ( int i d ) ; }; MicroSD karta Pˇripojenou microSD kartu m˚ uˇzeme ˇc´ıst, pokud je naform´atov´ana jako FAT32. Knihovna Yunifly podporuje tyto funkce: DOPLNIT popis funkc´ı bool formatSD ( ) ; bool e r a s e B l o c k s ( int s t a r t , int end ) ; bool w r i t e B l o c k s ( int s t a r t , int end , char ∗ data ) ; 3
char ∗ r e a d B l o c k s ( int s t a r t , int end ) ; class f i l e L i s t { public : char ∗ f i l e N a m e ; bool f o l d e r ; char ∗ type ; int s i z e ; }; fileList ∗ getFileList (); bool c r e a t e F i l e ( char ∗ f i l e N a m e ) ; bool d e l e t e F i l e ( char ∗ f i l e N a m e ) ; char ∗ r e a d F i l e ( char ∗ fileName , int s t a r t , int end ) ; bool w r i t e F i l e ( char ∗ fileName , int s t a r t , int end ) ; AD pˇ revodn´ıky Procesor ATmega128 m´a 8 vyveden´ ych AD pˇrevodn´ık˚ u. Elektronika Yunifly m´ a z kapacitn´ıch d˚ uvod˚ u vyvedeny pouze 4 piny. Je vyveden kaˇzd´ y sud´ y AD pˇrevodn´ık. Softwarovˇe ale m˚ uˇzeme ˇc´ıst vˇsech 8 pˇrecodn´ık˚ u pomoc´ı funkce int g e t S e n s o r V a l u e ( int i d ) ; kde promˇenn´a id ud´ av´ a identifikaˇcn´ı ˇc´ıslo dan´eho AD pˇrevodn´ıku. Funkce vrac´ı pln´ y rozsah 10bit ˇc´ısla. Ovl´ ad´ an´ı LED na desce Kaˇzd´ a deska obsahuje dvˇe LED, kter´e m˚ uˇzeme programovˇe ovl´adat. K dispozici m´ame funkce pro rozsv´ıcen´ı a zhasnut´ı ˇcerven´e a zelen´e LED. D´ale potom funkce ke zjiˇstˇen´ı aktu´aln´ıho stavu obou LED. void void bool bool
setRedLED ( bool l i g h t ) ; setGreenLED ( bool l i g h t ) ; getRedLED ( ) ; getGreenLED ( ) ;
Stav bateri´ı Aktu´ aln´ı stav bateri´ı je na desce Baisc mˇeˇren na ADC7 (AD pˇrevodn´ık). Baterie je k ADC7 pˇripojena pˇres rezistorov´ y dˇeliˇc 15kΩ na 5kΩ. Stav bateri´ı m˚ uˇzeme ˇc´ıst jako 10bit ˇc´ıslo, kde 0 odpov´ıd´a 0V a 1023 odpov´ıd´ a 3.3 · 4 = 13.2V . 1.4.2
Komunikace s deskou Basic
Obˇe desky spolu komunikuj´ı pomoc´ı I2C linky a pin˚ u CONTROL-XCK a CONTROL-PWM. Knihocna Yunifly obsahuje funkce pro desku Main urˇcen´e ke komunikaci s firmwarem na desce Basic. Nouzov´ y reˇ zim Pokud nechceme, aby deska Basic pracovala v nouzov´em reˇzimu, mus´ı deska Main drˇzet pin CONTROL-XCK na hodnotˇe HIGH. Pokud deska Basic zaznamen´a zmˇenu na hodnotu LOW, je automaticky pˇrepnuta do nouzov´eho reˇzimu. Nastaven´ı PWM PWM zaˇr´ızen´ı obsluhuje deska Basic z d˚ uvodu moˇznosti ˇr´ızen´ı pˇri v´ ydadku desky Main. Pˇres I2C zaˇsle deska Main zpr´ avu, jak se m´a zmˇenit nastaven´ı PWM regul´ator˚ u. Pouˇzijeme funkci bool sendBasicPWM ( int val ue , int i d ) ; kde id je identifikator PWM regul´ atoru, kter´ y nastavujeme na 10bit hodnotu value. Funkce vrac´ı true, pokud bylo nastaven´ı u ´spˇeˇsn´e.
4
Pˇ r´ıjem dat od RC pˇ rij´ımaˇ ce Funguje obdobnˇe, jako nastavov´an´ı hodnot PWM. Prvn´ı funkce nastav´ı poˇcet kan´ al˚ u, kter´e jsou naslouch´ any na ICP portu desky Basic. Druh´a funkce z´ısk´a aktu´ alnˇe pˇrijatou hodnotu na kan´ ale v promˇenn´e id. bool se ndB a s i c I C P P o r t s ( int count ) ; int getBasicICP ( int i d ) ; 1.4.3
Komunikace s extern´ımi moduly
Zde jsou pos´ any funkce, kter´e slouˇz´ı pro obsluhu konkr´etn´ıch zaˇr´ızen´ı uveden´ ych v sekci DOPLNIT tabulka s typem GPS, ACC atd. GPS Pro komunikaci s GPS je podporov´ana funkce pro z´ısk´an´ı souˇradnic severn´ı ˇs´ıˇrky a v´ ychodn´ı d´elky jako cel´e ˇc´ıslo v desetimiliontin´ ach stupnˇe (v pˇr´ıpadˇe jiˇzn´ı ˇs´ıˇrky a z´apadn´ı d´elky jsou hodnoty z´aporn´e), d´ale funkce pro z´ısk´ an´ı nadmoˇrsk´e v´ yˇsky v metrech, pˇresnosti mˇeˇren´ı v metrech a ˇcas v poˇctu uplynul´ ych sekund od 1.1.1970. Posledn´ı funkce zjist´ı, zda je GPS pˇripojena a pˇr´ıpravena na zasl´an´ı aktu´aln´ıch souˇradnic. int GPSgetNorth ( ) ; int GPSgetEast ( ) ; int GPSgetAltitude ( ) ; int GPSgetAccurary ( ) ; int GPSgetTime ( ) ; bool GPSrunning ( ) ; Pˇri selh´an´ı GPS jsou vˇsechny n´ avratov´e hodnoty nulov´e. Akcelerometr Pouˇzit´ y trojos´ y akcelerometr komunikuje s deskou Main pomoc´ı sbˇernice I2C. Pomoc´ı tˇr´ı funkc´ı m˚ uˇzeme z´ıskat aktu´ aln´ı akceleraci. Vˇzdy je vr´acena hodnota akcelerace v ose X, Y nebo Z v rozliˇsen´ı 16bit ˇc´ısla do pˇret´ıˇzen´ı 60G. int ACCgetXValue ( ) ; int ACCgetYValue ( ) ; int ACCgetZValue ( ) ; Kompas Kompas elektronice Yunifly vrac´ı odchylku od severn´ıho smˇeru v ose X, Y a Z jako 8bit signed int ˇc´ıslo, kde kladn´ a hodnota znaˇc´ı odchylku v kladn´em smˇeru. Hodnota ±255 znaˇc´ı jiˇzn´ı smˇer. int COMPASgetX ( ) ; int COMPASgetY ( ) ; int COMPASgetZ ( ) ; WiFi, Bluetooth WiFi a bluetooth moduly jsou k elektronice Yunifly pˇripojeny pˇr´ımo k s´eriov´e lince. Nepotˇrebuj´ı dalˇs´ı obsluhu ze strany Yunifly. Automatcky se pˇripoj´ı k zaˇr´ızen´ı nebo k PC, kter´e o pˇripojen´ı poˇz´ad´ a a odeˇslˇe spr´ avn´ y p´ arovac´ı kl´ıˇc. Automaticky se zpracuje veˇsker´a komunikace zaslan´ a a pˇrijat´a na pˇr´ısluˇsnou linku USART. 1.4.4
ˇ ızen´ı stability letounu R´
´ celem ˇr´ızen´ı stability je udrˇzet letoun v nulov´em zrychlen´ı vzhledem k vybran´ Uˇ ym os´am akcelerometr˚ u. Stabilizaci pˇred´ av´ ame ˇctyˇri hodnoty, kter´e reprezentuj´ı aktu´aln´ı smˇer letu. 1. V´ ykon motoru, kter´ y nen´ı d´ ale regulov´an. 2. Naklonˇen´ı ve smˇeru osy Y. 3. Naklonˇen´ı ve smˇeru osy X. 5
4. Naklonˇen´ı ve smˇeru osy Z. OBRAZEK naklopen´ı ve smˇeru dan´ ych os a klapky na kˇr´ıdlech - ktere osy ktere klapky Na z´akladˇe hodnot z akcelerometr˚ u je urˇcena aktu´aln´ı poloha letounu v˚ uˇci smˇeru gravitaˇcn´ıho zrychlen´ı. Na z´ akladˇe tohoto smˇeru jsou vypoˇc´ıt´any chyby od poˇzadovan´e polohy letounu. N´asleduje PID regulace, kter´ a nastav´ı polohy pˇr´ısluˇsn´ ych smˇerov´ ych klapek. void s t a b i l i z a t i o n ( unsigned int f u e l , signed int rotX , signed int rotY , signed int rotZ , signed int a c c e l e r o m e t e r X , signed int a c c e l e r o m e t e r Y , signed int a c c e l e r o m e t e r Z , signed int & PWMfuel , signed int & PWMrotX, signed int & PWMrotY, signed int & PWMrotZ, ); OBRAZEK schema VUE postupu vypoctu stabilizace
1.5 1.5.1
Firmware pro desku Basic Pouˇ zit´ı firmwaru
Firmware pro desku Basic je urˇcen zejm´ena pro l´et´an´ı s podporou nouzov´eho reˇzimu. V opaˇcn´em pˇr´ıpadˇe zpracov´ av´ a pokyny a poˇzadavky desky Main, kter´e jsou podrobnˇe pos´any v sekci DOPLNIT komunikace s deskou Basic. 1.5.2
Nouzov´ y reˇ zim
Nouzov´ y reˇzim je spuˇstˇen pr´ avˇe v tˇechto pˇr´ıpadech: 1. Port CONTROL-XCK je nastaven na hodnotu LOW. 2. Deska Main je vypnuta. 3. Deska Basic obdrˇz´ı poˇzadavek od extern´ıho zaˇr´ızen´ı - nastavena ud´alost, kter´a uvede nouzov´ y reˇzim v aktivitu. V nouzov´em reˇzimu je obsluhov´ an pouze RC pˇrij´ımaˇc, kter´ y je pˇr´ımo propojen s PWM regul´atory. Pokud je RC pˇrij´ımaˇc nedostupn´ y, tak je prim´arnˇe vypnut motor a letoun je stabilizov´an do pˇrist´ avac´ı polohy. Uˇzivatel m˚ uˇze desce Basic pˇredat funkci, kter´a je cyklicky vol´ana pˇri spuˇstˇen´ı nouzov´eho reˇzimu. Funkce m´ a k dispozici ovl´ ad´ an´ı PWM regul´ator˚ u a dalˇs´ıch funkˇcn´ıch zaˇr´ızen´ı pˇripojen´ ych k desce Basic. DOPLNIT staci takto? - me sem nic dalsiho nenapada, vse uz je receno vyse
6