Měření času průjezdu trasy I BROB 2017

Podobné dokumenty
Optoelektronické. Použití. Vlastnosti

MĚŘENÍ ČASU PRŮJEZDU TRASY

Optoelektronické. snímače BOS 65K

Optoelektronické. Plastové válcové pouzdro s plochými boky umožňuje montáž přiloženými maticemi M18 nebo pomocí šroubů skrz pouzdro snímače.

Projekt BROB. Základy robotiky. Téma: Digitální časomíra. Vedoucí projektu: Tomáš Jílek

Optoelektronické. Vlastnosti. Použití

Optoelektronické. snímače BOS 26K

Optoelektronické. Plastové válcové pouzdro s plochými boky umožňuje montáž přiloženými maticemi M18 nebo pomocí šroubů skrz pouzdro snímače.

Optoelektronické. Jedna vlastnost charakterizuje všechna geniální řešení: jednoduchost. Vlastnosti

Optoelektronické. snímače BOS 18M. BOS 18M standardní. BOS 18M robustní. Vlastnosti

Nový standard pro fotoelektrické snímače M18

Optoelektronické BOS 21M. snímače

Modul LCD displeje se čtyřmi tlačítky. Milan Horkel

Optoelektronické. snímače BOS 18M. BOS 18M standardní. BOS 18M robustní. Vlastnosti

SNÍMAČE OPTICKÉ, ULTRAZVUKOVÉ A RÁDIOVÉ

snímačů 2.3 Příslušenství optoelektronických snímačů Obsah

15.5. Magnetické snímače

Optoelektronické. Jedna vlastnost charakterizuje všechna geniální řešení: jednoduchost. Vlastnosti

Optoelektronické. snímače BOS 18M. BOS 18M standardní. BOS 18M robustní. Vlastnosti

On-line datový list WTB4SC-3P2262A00 W4S-3 MINIATURNÍ OPTOELEKTRONICKÉ SNÍMAČE

Optoelektronické BOS 21M. snímače

15.7. Optické snímače

Optoelektronické. Vlastnosti. Použití

On-line datový list VS/VE18-4P3240 V18 VÁLCOVÉ OPTOELEKTRONICKÉ SNÍMAČE

On-line datový list WL34-R230 W34 KOMPAKTNÍ OPTOELEKTRONICKÉ SNÍMAČE

On-line datový list VL18-4P3640 V18 VÁLCOVÉ OPTOELEKTRONICKÉ SNÍMAČE

On-line datový list WS/WE34-R230 W34 KOMPAKTNÍ OPTOELEKTRONICKÉ SNÍMAČE

Úvod, optické záření. Podkladový materiál k přednáškám A0M38OSE Obrazové senzory ČVUT- FEL, katedra měření, Jan Fischer, 2014

On-line datový list VS/VE18-4P3712 V18 VÁLCOVÉ OPTOELEKTRONICKÉ SNÍMAČE

Univerzita Tomáše Bati ve Zlíně

On-line datový list GRTE18-P2452 GR18 VÁLCOVÉ OPTOELEKTRONICKÉ SNÍMAČE

CX Optické snímače v kvádrovém pouzdru

Optoelektronické. BGL Vidlicové optické závory. snímače

4. Optické senzory polohy

Vývojová doska "ATMIA" pre ATMEGA8/16/32 - Update 05

On-line datový list. RT-P2231 ZoneControl MULTITASKINGOVÉ OPTOELEKTRONICKÉ SNÍMAČE

On-line datový list WSE4SL-3P2437V W4SL-3V MINIATURNÍ OPTOELEKTRONICKÉ SNÍMAČE

Návod k použití. Jednocestná světelná závora. OJ - Laser. Strana 1 z 9

Jízda po čáře pro reklamní robot

On-line datový list. WTT190L-A2232 PowerProx MULTITASKINGOVÉ OPTOELEKTRONICKÉ SNÍMAČE

9. Rozšiřující desky Evb_Display a Evb_keyboard

Optosenzor Reflexní závora s polarizačním filtrem pro snímání průhledných objektů QS18EK6XLPCQ

On-line datový list ISD ISD400 OPTICKÝ PŘENOS DAT

On-line datový list WL260-S270 W260 KOMPAKTNÍ OPTOELEKTRONICKÉ SNÍMAČE

On-line datový list. RT-P4000S02 ZoneControl MULTITASKINGOVÉ OPTOELEKTRONICKÉ SNÍMAČE

On-line datový list WTB4SL-3P2262V W4SL-3V MINIATURNÍ OPTOELEKTRONICKÉ SNÍMAČE

On-line datový list. WTT190L-P3531 PowerProx MULTITASKINGOVÉ OPTOELEKTRONICKÉ SNÍMAČE

On-line datový list. WS/WE2F-F110 W2 Flat MINIATURNÍ OPTOELEKTRONICKÉ SNÍMAČE

15.6. Magnetické snímače

WT160-E172. On-line datový list

Snímače so svetlovodnými vodičmi SOE4 prehľad dodávok

On-line datový list WL45-P260 W45 KOMPAKTNÍ OPTOELEKTRONICKÉ SNÍMAČE

Difúzní snímače a závory řady 1040 / 1050

On-line datový list MLG1-0140F511 MLG MĚŘICÍ SVĚTELNÉ MŘÍŽE PRO AUTOMATIZAČNÍ TECHNIKU

On-line datový list GRTE18S-P2449 GR18S VÁLCOVÉ OPTOELEKTRONICKÉ SNÍMAČE

On-line datový list. MLG50S-0250D10501 MLG-2 Prime MĚŘICÍ SVĚTELNÉ MŘÍŽE PRO AUTOMATIZAČNÍ TECHNIKU

Zkouškové otázky z A7B31ELI

Optoelektronické. snímače BOS 35K. Použití. Vlastnosti

On-line datový list. MLG50S-2050D10501 MLG-2 Prime MĚŘICÍ SVĚTELNÉ MŘÍŽE PRO AUTOMATIZAČNÍ TECHNIKU

BEZDRÁTOVÁ FOTOBUŇKA HL3-1x. Uživatelský manuál Verze 04/2016

On-line datový list. WTT12L-A2513 PowerProx MULTITASKINGOVÉ OPTOELEKTRONICKÉ SNÍMAČE

On-line datový list WS/WE100-2P1239S01 W100-2 MINIATURNÍ OPTOELEKTRONICKÉ SNÍMAČE

BROUK ROBOT KSR6. Stavebnice. 1. Úvod a charakteristika. 2. Seznam elektronických součástek

Programovanie I. Úvod do programovania Mgr. Stanislav Horal, Katedra informatiky, FPV, UCM

On-line datový list WT45-P200S03 W45 KOMPAKTNÍ OPTOELEKTRONICKÉ SNÍMAČE

Inteligentní převodníky SMART. Univerzální vícevstupový programovatelný převodník. 6xS

11. Polovodičové diody

On-line datový list. WTB190L-P460 W190 Laser Standard PRODUKTOVÉ PORTFOLIO

Optoelektronické. Plastové válcové pouzdro s plochými boky umožňuje montáž přiloženými maticemi M18 nebo pomocí šroubů skrz pouzdro snímače.

On-line datový list VT12T-2N430 V12-2 VÁLCOVÉ OPTOELEKTRONICKÉ SNÍMAČE

Čidla SOE, optoelektronická přehled dodávek

Multiplexor a demultiplexor

7. Měření lineární a úhlové polohy. Optoelektronické a ultrazvukové senzory

OEM modul čtečky bezkontaktních karet Rf B1 OEM

Obsah. O autorovi 11 Předmluva 13 Zpětná vazba od čtenářů 14 Errata 14

Návod k obsluze Reflexní světelná závora. OJ50xx Laser / / 2010

On-line datový list. WLG190T-P112 W190 Laser High Grade Glass PRODUKTOVÉ PORTFOLIO

VÁLCOVÉ MALÉ M12 OPTICKÉ SNÍMAČE V POUZDŘE M12 PRO RŮZNÁ POUŽITÍ VÁLCOVÉ MALÉ HLAVNÍ VÝHODY

Ultrazvukové snímače

On-line datový list WT45-R260 W45 KOMPAKTNÍ OPTOELEKTRONICKÉ SNÍMAČE

OTS30xx-EXT3-SC / -EXT4-SC Lineární hlásič teplot. Building Technologies. FibroLaser TM

Súťaž MLADÝ ELEKTROTECHNIK 2010 Peter Kopecký 9.A, ZŠ Duklianska 1. Bánovce nad Bebravou Nastaviteľný zdroj

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV RADIOELEKTRONIKY. OPTICKÝ SPOJ LR-830/1550 Technický popis

Výukové texty pro předmět Měřící technika (KKS/MT) na téma

Projekt BROB B13. Jízda po čáře pro reklamní robot. Vedoucí projektu: Ing. Tomáš Florián

Měřící světelné zábrany SST/R 02

Snímač s funkcí učení (Teach In)

Snímače polohy. Vlastnosti odporových potenciometrů

FT 25-RA. Miniaturní čidlo pro měření vzdálenosti

Návod k obsluze Jednocestná světelná závora. OJ50xx Laser / / 2010

MONTÁŽNY NÁVOD NÁVOD K LADENIU A OBSLUHE DIAĽKOVÉHO OVLÁDANIA TXM G / GX KPA2

On-line datový list. WS/WE2F-E010 S04 W2 Flat MINIATURNÍ OPTOELEKTRONICKÉ SNÍMAČE

Charakteristiky optoelektronických součástek

Rozšiřující desce s dalšími paralelními porty Rozšiřující desce s motorkem Elektrickém zapojení Principu činnosti Způsobu programování

Optoelektronické. BOS 18MR Snímací vzdálenost 120 mm. snímače

BROB - Základy robotiky (2016) GPS navigace pro plovoucího robota třídy KAMbot (S.12) Jan Mazoch, Jakub Hadámek, Lukáš Hvizdák

On-line datový list. WTT190L-K3534 PowerProx MULTITASKINGOVÉ OPTOELEKTRONICKÉ SNÍMAČE

FREESCALE TECHNOLOGY APPLICATION

Desky Evb Display a Evb Keyboard

On-line datový list WSE9LC-3P2436A70 W9 MALÉ OPTOELEKTRONICKÉ SNÍMAČE

Transkript:

Měření času průjezdu trasy I BROB 2017 Vedoucí práce: prof. Ing. Luděk Žalud, Ph.D. Konzultant: Bc. Tomáš Lázna Vypracovali: Andrýsek Jan, Bednář Ladislav, Hendl Adam B-AMT 01,02

ZADÁNÍ TÉMATU PROJEKTU Navrhněte a realizujte systém pro měření času průjezdu trasy robotem založený na principu optické závory. Při návrhu uvažujte dvě varianty trasy okruh a z bodu A do bodu B. Realizujte rovněž komunikační interface s PC a vytvořte demonstrační aplikaci, která umožní vyčítat měřené časy. Volitelně doplňte systém o displej, který bude přímo vizualizovat výsledek měření.

Obsah 1. Raspberry Pi 1.1. Základní charakteristika 1.2. Program 2. Optická brána 2.1. Teorie 2.2. Zapojení 3. Závěr

1.1. Základní charakteristika Raspberry pi 2 je mikropočítač v ktorom je možné vytvárať vlastné programy v rôznych programovacích jazykoch. V našom prípade C. V raspberry je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný systém s grafickým rozhraním. Operačný systém sa nahráva z micro SD karty. Raspberry pi 2 má 4 USB porty,ethernet port,3.5mm jack,hdmi výstup, port na micro SD kartu.port na pripojene displeja a kamery. Pre nás sú však dôležité vstupno/výstupne porty GPIO pomocou ktorých ovládame LCD display a načítavame výstupy z optickej brány Obrázek 1 Zapojení maticového displeje

1.2. Program Program bol napísaný pomocou rozhrania NetBeans,pomocou ktorého bol aj samotný program zapísaný do pamäte raspberry pi. K meraniu času bola využitá knižnica wiringpi.h v ktorej sa nachádza funkcia micros(). Táto funkcia nám umožňuje merať čas na mikro sekundy. Presnosť je otázna pretože meranie sa odvíja od hodín samotného raspberry pi. Ďalšie možné riešenie by mohlo byť pomocou externého krištáľu a vyhodnocovania času mimo raspberry. Raspberry by bolo použité len na výpis času na obrazovku/display. Zobrazenie času na display bolo prevedené pomocou knižnice lcd.h ktorá je súčasťou wiringpi. Využil som 4 bitové zapojenie, pri ktorom využívame len 6 GPIO pinov. Pre zobrazenie plynúceho času sme použili zobrazovaciu konštantu rel=80 milisekúnd. Túto konštantu sme zvolil odhadom, display už viditeľne neblikal. Začiatok merania času vyhodnocujeme podľa stavu na GPIO pinoch. Meranie môžeme vykonávať v dvoch metódach a to na 1 bránu alebo 2 brány. Režim pre jednu bránu využíva len jeden GPIO pin a teda môže byť použitý pre meranie času na okruhu. Režim pre dve brány využíva dva GPIO piny, meriame čas od prvej brány k druhej bráne.

Ukážka kódu: 1. /* 2. * File: main.c 3. * Author: Ladislav Bednar 4. * 5. * Created on April 15, 2017, 12:36 AM 6. */ 7. 8. #include <stdio.h> 9. #include <stdlib.h> 10. #include <wiringpi.h> 11. #include <lcd.h> 12. 13. 14. #define LCD_RS 25 //Register select pin 15. #define LCD_E 24 //Enable Pin 16. #define LCD_D4 23 //Data pin 4 17. #define LCD_D5 22 //Data pin 5 18. #define LCD_D6 21 //Data pin 6 19. #define LCD_D7 14 //Data pin 7 20. 21. #define clear() printf("\033[h\033[j") 22. 23. 24. 25. int main() { 26. 27. wiringpisetup () ; 28. pinmode (3, INPUT) ; 29. pinmode (2, INPUT) ; 30. pinmode (0, INPUT) ; 31. pullupdncontrol(3,pud_down); 32. pullupdncontrol(2,pud_down); 33. pullupdncontrol(0,pud_down); 34. 35. int lcd; 36. lcd = lcdinit (2, 16, 4, LCD_RS, LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7, 0, 0, 0, 0); 37. 38. int state = 0; 39. double time=0; 40. int time1=0; 41. int x,i2,y; 42. int z=0; 43. int rel=80; 44. char sec [5]; 45. char mil [10]; 46. char min [5]; 47. 48. for(;;) 49. { 50. switch(state) 51. { 52. case 0: 53. { 54. clear(); 55. lcdclear(lcd); 56. if(digitalread(3)==1) 57. state=1; 58. if(digitalread(3)==0) 59. state=5; 60. break; 61. } 62. case 1: 63. { 64. clear();

65. printf("1 brana\n"); 66. lcdclear(lcd); 67. lcdputs(lcd, "1 brana"); 68. if (digitalread(0)==1) 69. { 70. time1=micros(); 71. delay(200); // konstanta na prechod 72. state=2; 73. } 74. if(digitalread(3)==0) 75. state=5; 76. delay(rel); // konstanta na zobrazovanie dislpay 77. break; 78. } 79. case 2: 80. { 81. clear(); 82. time=(micros()-time1); 83. time/=1000000; 84. 85. 86. 87. x=(int)time; 88. y= (time-(int)time)*1000000; 89. if(x>=60) 90. { 91. x=x-60*(z); 92. lcdclear(lcd); 93. z=(int)time/60; 94. } 95. 96. sprintf(mil, "%d", y); 97. sprintf(sec, "%d", x); 98. sprintf(min, "%d", z); 99. 100. lcdclear(lcd); 101. lcdputs(lcd, "cas je:"); 102. lcdposition(lcd, 1, 1); 103. lcdprintf(lcd, "%s:%s,%s",min,sec,mil); 104. lcdposition(lcd, 1, 15); 105. lcdputs(lcd,"s"); 106. 107. printf("1 brana\n"); 108. printf("meranie sa zaclo\n"); 109. printf("%fs\n",time); 110. 111. if (digitalread(0)==1) 112. { 113. delay(200); 114. state=3; 115. } 116. if(digitalread(3)==0) 117. state=5; 118. delay(rel); // konstanta na zobrazovanie dislpay 119. break; 120. } 121. case 3: 122. { 123. time=(micros()-time1);; 124. time /= 1000000; 125. state=4; 126. break; 127. } 128. case 4: 129. { 130. clear(); 131. printf("1 brana\n"); 132. printf("cas je: %fs\n",time);

133. 134. x=(int)time; 135. y= (time-(int)time)*1000000; 136. if(x>=60) 137. { 138. x=x-60*(z); 139. lcdclear(lcd); 140. z=(int)time/60; 141. } 142. 143. sprintf(mil, "%d", y); 144. sprintf(sec, "%d", x); 145. sprintf(min, "%d", z); 146. 147. lcdclear(lcd); 148. lcdputs(lcd, "cas je:"); 149. lcdposition(lcd, 1, 1); 150. lcdprintf(lcd, "%s:%s,%s",min,sec,mil); 151. lcdposition(lcd, 1, 15); 152. lcdputs(lcd,"s"); 153. 154. if (digitalread(0)==1) 155. { 156. time=0; 157. time1=micros(); 158. delay(200); 159. state=2; 160. } 161. if(digitalread(3)==0) 162. state=5; 163. delay(rel); // konstanta na zobrazovanie dislpay 164. break; 165. } 166. case 5: 167. { 168. clear(); 169. printf("2 brany\n"); 170. lcdclear(lcd); 171. lcdputs(lcd, "2 brany"); 172. if(digitalread(0)==1) 173. { 174. time1=micros(); 175. delay(200); // konstanta na prechod 176. state=6; 177. } 178. if(digitalread(3)==1) 179. state=1; 180. delay(rel); // konstanta na zobrazovanie dislpay 181. break; 182. 183. } 184. case 6: 185. { 186. clear(); 187. time=(micros()-time1); 188. time/=1000000; 189. 190. x=(int)time; 191. y= (time-(int)time)*1000000; 192. if(x>=60) 193. { 194. x=x-60*(z); 195. lcdclear(lcd); 196. z=(int)time/60; 197. } 198. 199. sprintf(mil, "%d", y); 200. sprintf(sec, "%d", x);

201. sprintf(min, "%d", z); 202. 203. lcdclear(lcd); 204. lcdputs(lcd, "cas je:"); 205. lcdposition(lcd, 1, 1); 206. lcdprintf(lcd, "%s:%s,%s",min,sec,mil); 207. lcdposition(lcd, 1, 15); 208. lcdputs(lcd,"s"); 209. 210. printf("2 brany\n"); 211. printf("meranie sa zaclo\n"); 212. printf("%fs\n",time); 213. if (digitalread(2)==1) 214. { 215. delay(200); 216. state=7; 217. } 218. if(digitalread(3)==1) 219. state=1; 220. delay(rel); // konstanta na zobrazovanie dislpay 221. break; 222. 223. } 224. case 7: 225. { 226. time=(micros()-time1); 227. time /= 1000000; 228. state=8; 229. break; 230. } 231. case 8: 232. { 233. clear(); 234. printf("2 brany\n"); 235. printf("cas je: %fs\n",time); 236. 237. x=(int)time; 238. y= (time-(int)time)*1000000; 239. if(x>=60) 240. { 241. x=x-60*(z); 242. lcdclear(lcd); 243. z=(int)time/60; 244. } 245. 246. sprintf(mil, "%d", y); 247. sprintf(sec, "%d", x); 248. sprintf(min, "%d", z); 249. 250. lcdclear(lcd); 251. lcdputs(lcd, "cas je:"); 252. lcdposition(lcd, 1, 1); 253. lcdprintf(lcd, "%s:%s,%s",min,sec,mil); 254. lcdposition(lcd, 1, 15); 255. lcdputs(lcd,"s");; 256. 257. if (digitalread(0)==1) 258. { 259. time=0; 260. time1=micros(); 261. delay(200); 262. state=6; 263. } 264. if(digitalread(3)==1) 265. state=1; 266. delay(rel); // konstanta na zobrazovanie dislpay 267. break; 268. }

269. } 270. } 271. 272. return (0); 273. } Obrázek 2 Program pro měření času

Optická brána Teoretický úvod Optoelektronické limitní snímače polohy se vyznačují binárním výstupem, bezdotykovým měřením, necitlivostí na elektromagnetická pole a mohou dosahovat velkých spínacích vzdáleností. Optoelektronické snímače se dělí na: Jednocestné světelné závory Reflexní světelné závory Reflexní světelné difusní snímače Jako vysílače se používají LED a polovodičové laserové diody. Výhodné je používat infračervené světlo o vlnové délce λ = 880 nm, protože fototranzistory a fotodiody jsou nejcitlivější v infračerveném pásmu. Dále kvůli necitlivosti vůči rušení z viditelného spektra. Fototranzistory a fotodiody se používají jako snímače. Jednocestné světelné závory Vysílač je namontován do optické osy snímače. Detekovaný objekt musí být větší než aktivní zóna, kvůli spolehlivému přerušení paprsku. Výhodami jsou například velký dosah, jednoduchost, rozpoznání neprůhledných materiálů. Nevýhodné je přesné umístění vysílače a přijímače, nejisté rozpoznání průhledných materiálů. Obrázek 3 Jednocestná světelná závora

Reflexní světelná závora Vysílač i přijímač jsou v jednom pouzdře. Na druhé straně sledovaného prostoru je připevněna odrazka, zrcadlo. Aby odrazná plocha zaručila správný odraz i při mírném naklopení, využívá se odrazka s malými trojhrany. Tím odpadá nutnost přesné montáže jako u jednocestné světelné závory. Problémy s detekcí předmětů s lesklým povrchem Obrázek 4 Reflexní světelná závora

Reflexní snímače Přijímač i vysílač jsou v jednom pouzdře, dochází k odrazu od detekovaného předmětu. Jedná se o difuzní odraz a je odražena pouze část paprsku. Jedná se o jednoduchou montáž, protože se jedná o jediný přístroj a nepotřebujeme odrazku. Lepší rozpoznávání průhledných předmětů než u závor. Používají se pro menší snímací vzdálenosti a tato vzdálenost závisí na reflexních vlastnostech detekovaných objektů. Obrázek 5 Reflexní světelný snímač

2.2 Schéma zapojení Obrázek 6 Schéma zapojení světelné závory Návrh desky plošného spoje Obrázek 7 Návrh desky plošného spoje

Při návrhu desky plošného spoje jsme nejdříve vycházeli ze zapojení v obrázku 6. Toto schéma se však ukázalo jako nevyhovující v důsledku špatného výběru součástek a příliš jednoduchého zapojení. Obrázek 8 Ideové schéma zapojení 1

Naše výsledné zapojení vychází ze schématu v obrázku 7, které už využívá komparátor LM311. Obrázek 9 Ideové schéma zapojení 2

Návrh krabičky Obrázek 10 Návrh krabičky

Seznam součástek 4x Kapacitor 100 nf 6x Rezistor 1 kohm 2x Rezistor 10 kohm 2x Rezistor 62 kohm 2x Komparator TLC 272CP 2x Laserova dioda F-LASER 5mW 2x Fototranzistor BPW 40 1x Raspberry PI 1x LCD alfanumericky display WINSTAR WH1602A-YGH-ET

Závěr Program na měření času je funkční pro jednu i dvě závory. Aktuální čas se zobrazuje na maticovém displeji. Ten nám je schopen zobrazit čas až do rozsahu mikrosekund a to ve formátu mm/ss,-µs. Přepínání z jedné brány na dvě a opačně je uskutečněno přepínačem. Reflexní fotobrány jsme nestihli dodělat, protože jsme nestihli pořídit komparátor LM311. Tištěný spoj je vyrobený, zapojený a připravený na osazení komparátorem. Bylo by třeba ještě vytisknout krabičky pro fotobrány. A vyrobit nosnou desku pro displej, aby bylo možné ho namontovat na raspberry PI.

Zdroje Obrázek 1 Zapojení maticového displeje Obrázek 2 Program pro měření času Obrázek 3 Jednocestná světelná závora Obrázek 4 Reflexní světelná závora Obrázek 5 Reflexní světelný snímač Obrázek 6 Schéma zapojení světelné závory Obrázek 7 Návrh desky plošného spoje Obrázek 8 Ideové schéma zapojení 1 Obrázek 9 Ideové schéma zapojení 2 Obrázek 10 Návrh krabičky http://uvp3d.cz/dum/?page_id=2588 http://uvp3d.cz/dum/?page_id=2588 http://uvp3d.cz/dum/?page_id=2588 http://www.astromik.org/raspi/30.htm http://robodoupe.cz/2011/cerna-nebo-bila/