Gadgeteering aneb zábava pro pořádné chlapy
Moderátor: L4mka
- webwalker
- Začátečník
- Registrován: 03. úno 2010
- Bydliště: Buranov vedle Prahy
Gadgeteering aneb zábava pro pořádné chlapy
Tak co, už vás omrzelo hraní her, které jsou stále a dokola na jedno brdo?
Nevíte, co s volným časem a chcete zábavu (někdy i s pořádnou porcí adrenalínu), která vám vydrží mnohem déle než přitroublé střílečky?
Umíte, či chcete se naučit programovat jen tak pro vlastní zábavu a potěšení (někdy i celé rodiny)?
Pokud ano, pak jste v tomto vláknu správně a doufám, že se tu nebudete nudit
Pokud ne, nemá cenu abyste v dalším čtení pokračovali a přeju vám hodně štěstí do dalších levelů vaší oblibené hry
Gadgeteering - jednoduše "hračičkování"
Už jste někdy přemýšleli o tom jak vůbec fungují takové věci třeba jako ovládání topení ve vašem domě přes internet? Automatické zavlažování zahrady? Nebo jak to, že je možné ovládat nějaké autíčko přes mobil? Jak vlastě fungují roboti či droni? Chtěli byste si něco podobného nebo i lepšího postavit sami, jen si myslíte, že to je hrozně složité a že byste to sami nedokázali? Omyl, tak složité to není a vy to s přehledem dokážete!
"Hračičkování" je tedy vlastně vytváření jak smysluplných, tak i naprosto šílených elektronických zařízení (Gadgetů), které se vám zrodily v hlavě když jste měli zrovna upito
Samozřejmě pokud vás napadne něco opravdu originálního, můžete si tak přijít i k nemalým penízkům. Krásným příkladem a ukázkou pěkného Gadgeteeringu je projekt Sphero.
http://www.youtube.com/user/gosphero
Takže ať neztrácíme čas, co budeme na ty naše blbůstky potřebovat:
Určitě jste už někdy slyšeli nebo na internetu narazili na výrazy jako Arduino, Raspberry PI nebo NET Gadgeteer. Co to je?
No nic překvapivého. Jsou to všechno jen mikropočítače, ke kterým budeme přidávat nějaké moduly (u Arduina Shieldy) a následně programovat tak, abychom docílili námi zamýšlené funkčnosti.
Takhle nějak vypadá porovnání jednotlivých systémů:
Arduino Pro Mini, Arduino Fio, FEZ Panda II, Raspberry Pi
O výhodách a a nevýhodách jednotlivých systémů tu psát nebudu. Jeden článek jsem našel zde:
http://blog.timmlinder.com/2012/06/comp ... f-arduino/
V každém případě já se od této chvíle budu věnovat pouze NET Gadgeteeru a to konkrétně typu FEZ Spider:
Pokud tu je někdo, kdo se věnuje Arduinu nebo jinému systému a měl chuť zde tento systém představit, budu jen rád. Ono vůbec by bylo dobré, kdybyste se v tomto vlákně pochlubili svými projekty (na jakémkoliv systému). V žádném případě tu ale nebudu tolerovat flame o tom, který systém je lepší a který stojí za prd. Tady nejsme Sparta/Slavia nebo Intel/AMD/nVidia! My jsme "hračičkové" a chceme si navzájem pomáhat. Ne se prudit!
Je prakticky jedno, jaký systém zvolíte, já jsem NET Gadgeteer pro své potřeby zvolil z toho důvodu, že už delší čas pracuji s NET Frameworkem ve Visual Studiu a C#. Kdo programuje spíše v C zvolí Arduino. Ale jak jsem řekl, je to (až na nějaké specifika ) vlastně jedno.
Kromě hardware FEZ Spider, který představím příště, co vlastně budete ještě potřebovat?
1. Alespoň minimální znalost C# (nebojte opravdu nic složitého)
2. Minimální znalost elektrotechniky (osobně znám pouze Ohmův zákon )
Takže to by bylo zatím vše.
Příště se koukneme na samotný HW FEZ Spider a jeho moduly.
Cílem mých příspěvků bude osvětlit práci s NET Gadgeteer a pokud bude zájem a čas, tak bych zde chtěl postupně ukázat zhruba následující:
- programování vstupů/výstupů - nějaké to rozsvěcování a ztlumení LED
- ovládání motorů a serv
- napojení gadgeteru na wifi a jeho ovládání z PC (nebo SmartPhone)
- vytvoření autíčka na dálkové ovládání z PC
- obrácené ovládání gadgeteru pomocí RC soupravy
- hrátky s kvadroptérou
atd.
No a možná tady zažijete spoustu srandy, když něco nebude fungovat tak, jak má
Nevíte, co s volným časem a chcete zábavu (někdy i s pořádnou porcí adrenalínu), která vám vydrží mnohem déle než přitroublé střílečky?
Umíte, či chcete se naučit programovat jen tak pro vlastní zábavu a potěšení (někdy i celé rodiny)?
Pokud ano, pak jste v tomto vláknu správně a doufám, že se tu nebudete nudit
Pokud ne, nemá cenu abyste v dalším čtení pokračovali a přeju vám hodně štěstí do dalších levelů vaší oblibené hry
Gadgeteering - jednoduše "hračičkování"
Už jste někdy přemýšleli o tom jak vůbec fungují takové věci třeba jako ovládání topení ve vašem domě přes internet? Automatické zavlažování zahrady? Nebo jak to, že je možné ovládat nějaké autíčko přes mobil? Jak vlastě fungují roboti či droni? Chtěli byste si něco podobného nebo i lepšího postavit sami, jen si myslíte, že to je hrozně složité a že byste to sami nedokázali? Omyl, tak složité to není a vy to s přehledem dokážete!
"Hračičkování" je tedy vlastně vytváření jak smysluplných, tak i naprosto šílených elektronických zařízení (Gadgetů), které se vám zrodily v hlavě když jste měli zrovna upito
Samozřejmě pokud vás napadne něco opravdu originálního, můžete si tak přijít i k nemalým penízkům. Krásným příkladem a ukázkou pěkného Gadgeteeringu je projekt Sphero.
http://www.youtube.com/user/gosphero
Takže ať neztrácíme čas, co budeme na ty naše blbůstky potřebovat:
Určitě jste už někdy slyšeli nebo na internetu narazili na výrazy jako Arduino, Raspberry PI nebo NET Gadgeteer. Co to je?
No nic překvapivého. Jsou to všechno jen mikropočítače, ke kterým budeme přidávat nějaké moduly (u Arduina Shieldy) a následně programovat tak, abychom docílili námi zamýšlené funkčnosti.
Takhle nějak vypadá porovnání jednotlivých systémů:
Arduino Pro Mini, Arduino Fio, FEZ Panda II, Raspberry Pi
O výhodách a a nevýhodách jednotlivých systémů tu psát nebudu. Jeden článek jsem našel zde:
http://blog.timmlinder.com/2012/06/comp ... f-arduino/
V každém případě já se od této chvíle budu věnovat pouze NET Gadgeteeru a to konkrétně typu FEZ Spider:
Pokud tu je někdo, kdo se věnuje Arduinu nebo jinému systému a měl chuť zde tento systém představit, budu jen rád. Ono vůbec by bylo dobré, kdybyste se v tomto vlákně pochlubili svými projekty (na jakémkoliv systému). V žádném případě tu ale nebudu tolerovat flame o tom, který systém je lepší a který stojí za prd. Tady nejsme Sparta/Slavia nebo Intel/AMD/nVidia! My jsme "hračičkové" a chceme si navzájem pomáhat. Ne se prudit!
Je prakticky jedno, jaký systém zvolíte, já jsem NET Gadgeteer pro své potřeby zvolil z toho důvodu, že už delší čas pracuji s NET Frameworkem ve Visual Studiu a C#. Kdo programuje spíše v C zvolí Arduino. Ale jak jsem řekl, je to (až na nějaké specifika ) vlastně jedno.
Kromě hardware FEZ Spider, který představím příště, co vlastně budete ještě potřebovat?
1. Alespoň minimální znalost C# (nebojte opravdu nic složitého)
2. Minimální znalost elektrotechniky (osobně znám pouze Ohmův zákon )
Takže to by bylo zatím vše.
Příště se koukneme na samotný HW FEZ Spider a jeho moduly.
Cílem mých příspěvků bude osvětlit práci s NET Gadgeteer a pokud bude zájem a čas, tak bych zde chtěl postupně ukázat zhruba následující:
- programování vstupů/výstupů - nějaké to rozsvěcování a ztlumení LED
- ovládání motorů a serv
- napojení gadgeteru na wifi a jeho ovládání z PC (nebo SmartPhone)
- vytvoření autíčka na dálkové ovládání z PC
- obrácené ovládání gadgeteru pomocí RC soupravy
- hrátky s kvadroptérou
atd.
No a možná tady zažijete spoustu srandy, když něco nebude fungovat tak, jak má
Naposledy upravil(a) Krteq dne čtv 29. srp 2013, 19:16, celkem upraveno 1 x.
Důvod: Opraven titulek vlákna
Důvod: Opraven titulek vlákna
Chtěl bych se stát profesionálním pískačem. Už teď jsem v tom sice hvězda, ale chtěl bych se ještě zdokonalit a začít se tím živit.
GPUreport.cz
GPUreport.cz
- termit256
- Začátečník
-
- Registrován: 05. led 2005
Re: Gageteering aneb zábava pro pořádné chlapy
Poradny chlape, oprav si nazev vlakna.
Osobne jsem nikdy moc nechapal smysl techto desticek. Pokud neco delam, zvolim procesor navrhnu HW/SW presne podle toho co potrebuju. Nepotrebuju desku se spoustou kravin ktere v danem projektu nepouziju a ktera mi nesedi do zadne krabicky. Ale vzhledem k tomu jake mnozstvi se toho vsude nabizi, zjevne sve uzivatele si to najde.
Osobne jsem nikdy moc nechapal smysl techto desticek. Pokud neco delam, zvolim procesor navrhnu HW/SW presne podle toho co potrebuju. Nepotrebuju desku se spoustou kravin ktere v danem projektu nepouziju a ktera mi nesedi do zadne krabicky. Ale vzhledem k tomu jake mnozstvi se toho vsude nabizi, zjevne sve uzivatele si to najde.
- webwalker
- Začátečník
- Registrován: 03. úno 2010
- Bydliště: Buranov vedle Prahy
Re: Gageteering aneb zábava pro pořádné chlapy
@termit256: Ještě pořádnější chlape, rád bych si název vlákna opravil už dříve, jenže nemám oprávnění (pokud jsem teda něco nepřehlédl)
Smysl těchto věciček je v rychlém vývoji projektu (RD) a jeho prototypování. Po ukončení vývoje se teprve vytvoří a osadí konečný plošňák a kód se přenese do mikroprocesoru. Já, protože to mám pouze pro zábavu, nic z toho dělat nikdy nebudu a spokojím se s tím, jak to je. Jediné s čím počítám je přenesení obvodů z breadboard na nějaký pevnější pájený spoj.
Smysl těchto věciček je v rychlém vývoji projektu (RD) a jeho prototypování. Po ukončení vývoje se teprve vytvoří a osadí konečný plošňák a kód se přenese do mikroprocesoru. Já, protože to mám pouze pro zábavu, nic z toho dělat nikdy nebudu a spokojím se s tím, jak to je. Jediné s čím počítám je přenesení obvodů z breadboard na nějaký pevnější pájený spoj.
Chtěl bych se stát profesionálním pískačem. Už teď jsem v tom sice hvězda, ale chtěl bych se ještě zdokonalit a začít se tím živit.
GPUreport.cz
GPUreport.cz
- webwalker
- Začátečník
- Registrován: 03. úno 2010
- Bydliště: Buranov vedle Prahy
Re: Gadgeteering aneb zábava pro pořádné chlapy
FEZ Spider a NETMF
Tohle bude sice trochu nudnější část, ale nedá se nic dělat, měli byste se s tím obeznámit.
FEZ Spider patří do rodiny NET Gadgeteer, za jehož vývojem stojí Microsoft Research. Já vím, že v dnešní době není tento softwareový gigant u zdejších "geeků" díky platformě Metro příliš oblíben a je moderní si do něj spíše kopnout, ale to ponechme zatím stranou (později se sami přesvědčíte o tom, že v Metru uděláte některé věci mnohem snadněji než ve WinForms) a koukněme se na FEZ Spider a NETMF trochu (ne zas tak příliš) podrobněji.
FEZ Spider na první pohled vypadá jako klasická základová deska (jen je taková malinká cca 5x5 cm) a při bližším pohledu zjistíte, že tomu tak opravdu je
Samozřejmě oproti klasické MoBo tam něco chybí a něco zas přebývá. Nejsou tam žádné PCIE sloty nebo sokety pro CPU a RAM. Místo toho jsou tam 10-pinové sokety pro připojení modulů. CPU i s RAM už tam jsou připájeny (ze spodní strany). Dále tam je resetovací tlačítko a sada mikro-přepínačů, které využíváme při ugrade firmware.
Všimněte si, že sokety pro napojení modulů jsou označeny jednak číslem a jednak písmenem. Číslo označuje identifikační číslo soketu a písmeno typ soketu (k typu soketu se dostaneme později).
Moduly, které do těchto soketů zapojujeme, jsou různých druhů, typově však dva:
1. Vstupní moduly - jednoduchá tlačítka, různá čidla (teplota, tlak, vlhkost ..)
2. Výstupní moduly - jako LED, Display ...
Tady je přehled některých modulů, kompatibilních s NET Gadgeteer:
https://www.ghielectronics.com/catalog/category/275
nebo u nás, kde se dají i pořídit (levné to moc není):
http://shop.microframework.eu/
HW parametry FEZ SPIDER:
14 .NET Gadgeteer compatible sockets that include these types: X, Y, A, C, D, E, F, H, I, K, O, P, S, T, U, R, G, B and Z.
Configurable on-board LED
Configuration switches.
Based on GHI Electronics EMX module
72MHz 32-bit ARM7 processor
4.5 MB Flash
16 MB RAM
LCD controller
Full TCP/IP Stack with SSL, HTTP, TCP, UDP, DHCP
Ethernet, WiFi driver and PPP ( GPRS/ 3G modems) and DPWS
USB host
USB Device with specialized libraries to emulate devices like thumb-drive, virtual COM (CDC), mouse, keyboard
76 GPIO Pin
2 SPI (8/16bit)
I2C
4 UART
2 CAN Channels
7 10-bit Analog Inputs
10-bit Analog Output (capable of WAV audio playback)
4-bit SD/MMC Memory card interface
6 PWM
OneWire interface (available on any IO)
Built-in Real Time Clock (RTC) with the suitable crystal
Processor register access
OutputCompare for generating waveforms with high accuracy
RLP allowing users to load native code (C/Assembly) for real-time requirements
Extended double-precision math class
FAT File System
Cryptography (AES and XTEA)
Low power and hibernate support
In-field update (from SD, network or other)
Dimensions: W 2.25" x L 2.05" x H 0.5"
Typy Soketů
Pojďme se teď kouknout na ty typy soketů a jejich piny v NET Gadgeteer:
Nemá cenu se tím nyní významěji zabývat. Ti, co s tím už dělají mají jasno. Pro ostatní jen jen to, co nás bude v nejbližší době zajímat:
1. GPIO - General Purpose Input/Output - pin může být použit jak pro vstup tak i výstup (digitální)
2. AIN - Analog Input
3. AOUT - překvapivě Analog Out
4. PWM - Pulse-width modulation - zatím to nechme být, bude o něm celý jeden článeček
5. +3,3V - pomocná větev 3,3V
6. +5V - překvapivě pomocná větev 5V
7. GND - zem
Víc zatím potřebovat nebudeme. Snad jen to, jaký rozdíl je mezi analogovým a digitálním (třeba) výstupem:
1. Digitální - výstup na pinu je buďto pravda (3,3V) nebo nepravda (0V resp. zem)
2. Analogový - výstup na pinu může nabývat libovolných hodnot od 0V až po 3,3V
Příklad 1
Chceme-li kupříkladu vytvořit Gadget na měření mezní teploty v pokoji, kdy požadujeme, aby se nám po překročení určité teploty rozsvítila LED, uděláme to následovně:
Do Spideru zapojíme do soketu A a pinu 3 (Analog In) čidlo teploty, do stejného soketu A ale na pin 6 (GPIO) zapojíme LED. Pak už zbývá pouze naprogramovat kód, který nastaví pin 6 jako výstupní digitální, smyčku (nebo vlákno), která neustále čte hodnotu na pinu 3 (teplotu) a porovnává ji s naší hraniční mezí. Pokud teplota přesáhne onu hraniční mez, odešle se na pin 6 hodnota True (3,3V), která rozsvítí LED. Toť vše
(Toto jen hrubý nástin kódu, samotnému programování se budeme věnovat zas někdy příště.)
NETMF
A jaký operační systém na Gadgeteeru běží? No, žádný. Poněkud zjednodušeně se dá říct, že tam běží pouze NET Framework v osekanější verzi NETMF(.NET Micro Framework). Takže, kdo někdy něco dělal v .NET má již dopředu vyhráno. Může využívat svůj oblíbený programovací jazyk i vývojové nástroje MS Visual Studia.
Ale integraci ve Visual Studiu 2010 (Express) se budeme věnovat příště.
PS: Své příspěvky se snažím psát tak, aby je pochopil hlavně ten, kdo s tímto nikdy nepracoval. Vím, že odborníci asi koulejí očima a rvou si přitom vlasy z hlavy. Takže sorry
Tohle bude sice trochu nudnější část, ale nedá se nic dělat, měli byste se s tím obeznámit.
FEZ Spider patří do rodiny NET Gadgeteer, za jehož vývojem stojí Microsoft Research. Já vím, že v dnešní době není tento softwareový gigant u zdejších "geeků" díky platformě Metro příliš oblíben a je moderní si do něj spíše kopnout, ale to ponechme zatím stranou (později se sami přesvědčíte o tom, že v Metru uděláte některé věci mnohem snadněji než ve WinForms) a koukněme se na FEZ Spider a NETMF trochu (ne zas tak příliš) podrobněji.
FEZ Spider na první pohled vypadá jako klasická základová deska (jen je taková malinká cca 5x5 cm) a při bližším pohledu zjistíte, že tomu tak opravdu je
Samozřejmě oproti klasické MoBo tam něco chybí a něco zas přebývá. Nejsou tam žádné PCIE sloty nebo sokety pro CPU a RAM. Místo toho jsou tam 10-pinové sokety pro připojení modulů. CPU i s RAM už tam jsou připájeny (ze spodní strany). Dále tam je resetovací tlačítko a sada mikro-přepínačů, které využíváme při ugrade firmware.
Všimněte si, že sokety pro napojení modulů jsou označeny jednak číslem a jednak písmenem. Číslo označuje identifikační číslo soketu a písmeno typ soketu (k typu soketu se dostaneme později).
Moduly, které do těchto soketů zapojujeme, jsou různých druhů, typově však dva:
1. Vstupní moduly - jednoduchá tlačítka, různá čidla (teplota, tlak, vlhkost ..)
2. Výstupní moduly - jako LED, Display ...
Tady je přehled některých modulů, kompatibilních s NET Gadgeteer:
https://www.ghielectronics.com/catalog/category/275
nebo u nás, kde se dají i pořídit (levné to moc není):
http://shop.microframework.eu/
HW parametry FEZ SPIDER:
14 .NET Gadgeteer compatible sockets that include these types: X, Y, A, C, D, E, F, H, I, K, O, P, S, T, U, R, G, B and Z.
Configurable on-board LED
Configuration switches.
Based on GHI Electronics EMX module
72MHz 32-bit ARM7 processor
4.5 MB Flash
16 MB RAM
LCD controller
Full TCP/IP Stack with SSL, HTTP, TCP, UDP, DHCP
Ethernet, WiFi driver and PPP ( GPRS/ 3G modems) and DPWS
USB host
USB Device with specialized libraries to emulate devices like thumb-drive, virtual COM (CDC), mouse, keyboard
76 GPIO Pin
2 SPI (8/16bit)
I2C
4 UART
2 CAN Channels
7 10-bit Analog Inputs
10-bit Analog Output (capable of WAV audio playback)
4-bit SD/MMC Memory card interface
6 PWM
OneWire interface (available on any IO)
Built-in Real Time Clock (RTC) with the suitable crystal
Processor register access
OutputCompare for generating waveforms with high accuracy
RLP allowing users to load native code (C/Assembly) for real-time requirements
Extended double-precision math class
FAT File System
Cryptography (AES and XTEA)
Low power and hibernate support
In-field update (from SD, network or other)
Dimensions: W 2.25" x L 2.05" x H 0.5"
Typy Soketů
Pojďme se teď kouknout na ty typy soketů a jejich piny v NET Gadgeteer:
Nemá cenu se tím nyní významěji zabývat. Ti, co s tím už dělají mají jasno. Pro ostatní jen jen to, co nás bude v nejbližší době zajímat:
1. GPIO - General Purpose Input/Output - pin může být použit jak pro vstup tak i výstup (digitální)
2. AIN - Analog Input
3. AOUT - překvapivě Analog Out
4. PWM - Pulse-width modulation - zatím to nechme být, bude o něm celý jeden článeček
5. +3,3V - pomocná větev 3,3V
6. +5V - překvapivě pomocná větev 5V
7. GND - zem
Víc zatím potřebovat nebudeme. Snad jen to, jaký rozdíl je mezi analogovým a digitálním (třeba) výstupem:
1. Digitální - výstup na pinu je buďto pravda (3,3V) nebo nepravda (0V resp. zem)
2. Analogový - výstup na pinu může nabývat libovolných hodnot od 0V až po 3,3V
Příklad 1
Chceme-li kupříkladu vytvořit Gadget na měření mezní teploty v pokoji, kdy požadujeme, aby se nám po překročení určité teploty rozsvítila LED, uděláme to následovně:
Do Spideru zapojíme do soketu A a pinu 3 (Analog In) čidlo teploty, do stejného soketu A ale na pin 6 (GPIO) zapojíme LED. Pak už zbývá pouze naprogramovat kód, který nastaví pin 6 jako výstupní digitální, smyčku (nebo vlákno), která neustále čte hodnotu na pinu 3 (teplotu) a porovnává ji s naší hraniční mezí. Pokud teplota přesáhne onu hraniční mez, odešle se na pin 6 hodnota True (3,3V), která rozsvítí LED. Toť vše
(Toto jen hrubý nástin kódu, samotnému programování se budeme věnovat zas někdy příště.)
NETMF
A jaký operační systém na Gadgeteeru běží? No, žádný. Poněkud zjednodušeně se dá říct, že tam běží pouze NET Framework v osekanější verzi NETMF(.NET Micro Framework). Takže, kdo někdy něco dělal v .NET má již dopředu vyhráno. Může využívat svůj oblíbený programovací jazyk i vývojové nástroje MS Visual Studia.
Ale integraci ve Visual Studiu 2010 (Express) se budeme věnovat příště.
PS: Své příspěvky se snažím psát tak, aby je pochopil hlavně ten, kdo s tímto nikdy nepracoval. Vím, že odborníci asi koulejí očima a rvou si přitom vlasy z hlavy. Takže sorry
Chtěl bych se stát profesionálním pískačem. Už teď jsem v tom sice hvězda, ale chtěl bych se ještě zdokonalit a začít se tím živit.
GPUreport.cz
GPUreport.cz
- webwalker
- Začátečník
- Registrován: 03. úno 2010
- Bydliště: Buranov vedle Prahy
Re: Gadgeteering aneb zábava pro pořádné chlapy
Net Gadgeteer a Visual Studio 2010 (Express)
Abychom mohli pracovat s NET Gadgeteer v MS Visual Studio, je k tomu zapotřebí následující:
1. Mít nainstalované Visual Studio (klidně Express, které je zdarma)
2. Mít nainstalovaný NET Micro Framework SDK
3. Používáte-li FEZ Spider nebo jiná zařízení od GHI Electronics, pak ještě GHI NETMF Package
Pokud plánujete pracovat s VS2010 můžete příslušné soubory stáhnout zde:
VS2010
http://www.microsoft.com/visualstudio/e ... 10-express
NETMF (Verze 4.2)
http://netmf.codeplex.com/releases/view/91594
GHI NETMF package
https://www.ghielectronics.com/support/ ... -framework (musíte se zaregistrovat)
Pokud plánujete pracovat s VS2012, soubory jsou zde
VS2012
http://www.microsoft.com/visualstudio/eng/downloads
NETMF (Verze 4.3)
http://netmf.codeplex.com/releases/view/81000
GHI NETMF package
https://www.ghielectronics.com/support/ ... -framework (musíte se zaregistrovat)
Začínáme pracovat ve VS
Pokud máme výše uvedené soubory v PC nainstalované, můžeme přejít k naší první aplikaci. Budem chtít vytvořit gadget s jednou LED diodou (multicolorLED) a tlačítkem (Button), které bude tu LEDku zapínat a vypínat. O tento naprosto směšný gadget nyní ani tak nejde, jde především o to ukázat, jak použít Visual Studio pro vývoj NET Gadgeteer.
Vybereme Nový projekt
Zvolíme šablonu typu Gadgeteer
K výběru se nám zobrazí seznam dostupných základních desek pro náš projekt. Já vyberu konkréně FEZ Spider.
Po vybrání základové desky se nám objeví UI Designer se zvolenou základovou deskou. Do toho okna můžeme z Toolboxu přidávat moduly, které chceme v projektu použít. Podobně, jako přidáváme ovládací prvky (Controls) ve formulářích Winforms.
Pro náš projekt tedy z toolboxu do designeru přeneseme tyto moduly:
1. usbClientDP - modul pro napájení a programování mcu
2. button - modul tlačítka (v okně vlastností mu dáme rovnou jméno button1)
3. multicolorLed - modul tříbarevné LED (dáme mu rovnou jméno multicolorLed1)
Klikem pravým tlačítkem myší se nám zobrazí kontextové menu a z něj vybereme "Connect all modules".
Designer nám nabídne a graficky znázorní návrh propojení jednotlivých modulů k základové desce. Samozřejmě si tato propojení můžeme nastavit ručně. Nyní můžeme podle toho schématu fyzicky propojit moduly s FEZ Spider. POZOR, moduly připojujeme vždy při odpojeném napájení (USB)!!!
Visual Studio nám nastaví všechny potřebné reference a my můžeme začít programovat náš první projekt.
Abychom mohli pracovat s NET Gadgeteer v MS Visual Studio, je k tomu zapotřebí následující:
1. Mít nainstalované Visual Studio (klidně Express, které je zdarma)
2. Mít nainstalovaný NET Micro Framework SDK
3. Používáte-li FEZ Spider nebo jiná zařízení od GHI Electronics, pak ještě GHI NETMF Package
Pokud plánujete pracovat s VS2010 můžete příslušné soubory stáhnout zde:
VS2010
http://www.microsoft.com/visualstudio/e ... 10-express
NETMF (Verze 4.2)
http://netmf.codeplex.com/releases/view/91594
GHI NETMF package
https://www.ghielectronics.com/support/ ... -framework (musíte se zaregistrovat)
Pokud plánujete pracovat s VS2012, soubory jsou zde
VS2012
http://www.microsoft.com/visualstudio/eng/downloads
NETMF (Verze 4.3)
http://netmf.codeplex.com/releases/view/81000
GHI NETMF package
https://www.ghielectronics.com/support/ ... -framework (musíte se zaregistrovat)
Začínáme pracovat ve VS
Pokud máme výše uvedené soubory v PC nainstalované, můžeme přejít k naší první aplikaci. Budem chtít vytvořit gadget s jednou LED diodou (multicolorLED) a tlačítkem (Button), které bude tu LEDku zapínat a vypínat. O tento naprosto směšný gadget nyní ani tak nejde, jde především o to ukázat, jak použít Visual Studio pro vývoj NET Gadgeteer.
Vybereme Nový projekt
Zvolíme šablonu typu Gadgeteer
K výběru se nám zobrazí seznam dostupných základních desek pro náš projekt. Já vyberu konkréně FEZ Spider.
Po vybrání základové desky se nám objeví UI Designer se zvolenou základovou deskou. Do toho okna můžeme z Toolboxu přidávat moduly, které chceme v projektu použít. Podobně, jako přidáváme ovládací prvky (Controls) ve formulářích Winforms.
Pro náš projekt tedy z toolboxu do designeru přeneseme tyto moduly:
1. usbClientDP - modul pro napájení a programování mcu
2. button - modul tlačítka (v okně vlastností mu dáme rovnou jméno button1)
3. multicolorLed - modul tříbarevné LED (dáme mu rovnou jméno multicolorLed1)
Klikem pravým tlačítkem myší se nám zobrazí kontextové menu a z něj vybereme "Connect all modules".
Designer nám nabídne a graficky znázorní návrh propojení jednotlivých modulů k základové desce. Samozřejmě si tato propojení můžeme nastavit ručně. Nyní můžeme podle toho schématu fyzicky propojit moduly s FEZ Spider. POZOR, moduly připojujeme vždy při odpojeném napájení (USB)!!!
Visual Studio nám nastaví všechny potřebné reference a my můžeme začít programovat náš první projekt.
Chtěl bych se stát profesionálním pískačem. Už teď jsem v tom sice hvězda, ale chtěl bych se ještě zdokonalit a začít se tím živit.
GPUreport.cz
GPUreport.cz
- webwalker
- Začátečník
- Registrován: 03. úno 2010
- Bydliště: Buranov vedle Prahy
Re: Gadgeteering aneb zábava pro pořádné chlapy
Programování Gadgetu z předchozího příspěvku je pak opravdu jednoduché.
1. Na konec metody ProgramStarted(), kterou pro nás VS2010 připravilo a je startovacím místem pro náš kód vepíše následující:
Máme-li tyto události "předplacený", musíme ještě vytvořit příslušné metody button1_ButonPressed a button1_ButonReleased (resp. VS to udělá za nás, pokud klikneme na tlačítko TAB při "předplácení" eventu).
Takto bude vypadat celý kód:
Dříve, než tak ale učiníme nastavíme si ještě "Deployment" ve vlastnosti projektu.
Pokud máme Spidera s PC propojeného pomocí USB (default) zvolíme transport pomocí USB. Další možnosti jsou pak:
- Serial - sériová linka
- TCP/IP - docela killer věc (můžete provádět deploy i po síti)
- Emulator - kód pošle do emulátoru (mě to však zatím nefunguje)
Nastavíme tedy USB, uložíme a stiskem F5 projekt spustíme. No a je hotovo. Tlačítkem teď LED rozsvítíme a uvolněním tlačítka LED zhasneme
Asi si teď klepáte na čelo a říkáte "no to je fakt tedy bomba"
Ale o samotný kód a obtížnost projektu teďka nejde. Chtěl jsem vám jen ukázat základní styl programování v NET Gadgeteer. Ty kódy pro správný "hračičky" teprve přijdou
Pokud v projektu budete používat pouze již hotové moduly, programujete prakticky naprosto stejným způsobem jako programujete ovládací prvky ve winforms. Moduly jsou v projektech vystaveny nikoliv jaku hardware, ale formou objektů. Z toho vyplývají několik podstatných věcí:
1. Bezkonkurenčně nejrychlejší vývoj aplikací (RD) na trhu
2. O elektronice toho zas tak moc vědět nemusíte (ani jste se nemuseli starat kam a co na jaký pin připojit )
3. Využití jazyka vyšší úrovně
4. Můžete se věnovat přednostně logice samotného projektu
5. Debugging pomocí breakpoints a další pozitiva
Bohužel, vše má svůj rub a líc a každá výhoda může být také nevýhodou. Třeba ne vždy máme (nebo vůbec neexistuje) nějaký konkrétní modul, který bychom potřebovali. V tom případě nám nezbývá nic jiného, než si takový modul "zbastit" sami. K tomu ale budeme potřebovat krapet více znalostí. Ale o tom zase příště
1. Na konec metody ProgramStarted(), kterou pro nás VS2010 připravilo a je startovacím místem pro náš kód vepíše následující:
Jak vidíte nejde o nic jiného než o "předplacení si" událostí při stisku a uvolnění tlačítka naprosto stejně, jako to děláme u dektopových Winforms nebo kdekoliv jinde.// Predplaceni eventu pro stisk tlacitka
button1.ButtonPressed += new GTM.GHIElectronics.Button.ButtonEventHandler(button1_ButtonPressed);
// Predplaceni eventu pro uvolneni tlacitka
button1.ButtonReleased += new GTM.GHIElectronics.Button.ButtonEventHandler(button1_ButtonReleased);
Máme-li tyto události "předplacený", musíme ještě vytvořit příslušné metody button1_ButonPressed a button1_ButonReleased (resp. VS to udělá za nás, pokud klikneme na tlačítko TAB při "předplácení" eventu).
To je celý kód. Metoda TurnBlue() prvku multicolorLed nám rozsvítí modrou LED a metoda TurnOff() stejného prvku nám LED zase zhasne. Nyní můžeme náš kód odeslat (Deploy) do zařízení a spustit normálně klávesou F5.// Obsluha eventu button1 stiknut
void button1_ButtonPressed(GTM.GHIElectronics.Button sender, GTM.GHIElectronics.Button.ButtonState state)
{
multicolorLed1.TurnBlue();
}
// Obsluha eventu button uvolnen
void button1_ButtonReleased(GTM.GHIElectronics.Button sender, GTM.GHIElectronics.Button.ButtonState state)
{
multicolorLed1.TurnOff();
}
Takto bude vypadat celý kód:
Kód: Vybrat vše
public partial class Program
{
// This method is run when the mainboard is powered up or reset.
void ProgramStarted()
{
// Use Debug.Print to show messages in Visual Studio's "Output" window during debugging.
Debug.Print("Program Started");
// Predplaceni eventu pro stisk tlacitka
button1.ButtonPressed += new GTM.GHIElectronics.Button.ButtonEventHandler(button1_ButtonPressed);
// Predplaceni eventu pro uvolneni tlacitka
button1.ButtonReleased += new GTM.GHIElectronics.Button.ButtonEventHandler(button1_ButtonReleased);
}
// Obsluha eventu button1 stiknut
void button1_ButtonPressed(GTM.GHIElectronics.Button sender, GTM.GHIElectronics.Button.ButtonState state)
{
multicolorLed1.TurnBlue();
}
// Obsluha eventu button uvolnen
void button1_ButtonReleased(GTM.GHIElectronics.Button sender, GTM.GHIElectronics.Button.ButtonState state)
{
multicolorLed1.TurnOff();
}
}
Pokud máme Spidera s PC propojeného pomocí USB (default) zvolíme transport pomocí USB. Další možnosti jsou pak:
- Serial - sériová linka
- TCP/IP - docela killer věc (můžete provádět deploy i po síti)
- Emulator - kód pošle do emulátoru (mě to však zatím nefunguje)
Nastavíme tedy USB, uložíme a stiskem F5 projekt spustíme. No a je hotovo. Tlačítkem teď LED rozsvítíme a uvolněním tlačítka LED zhasneme
Asi si teď klepáte na čelo a říkáte "no to je fakt tedy bomba"
Ale o samotný kód a obtížnost projektu teďka nejde. Chtěl jsem vám jen ukázat základní styl programování v NET Gadgeteer. Ty kódy pro správný "hračičky" teprve přijdou
Pokud v projektu budete používat pouze již hotové moduly, programujete prakticky naprosto stejným způsobem jako programujete ovládací prvky ve winforms. Moduly jsou v projektech vystaveny nikoliv jaku hardware, ale formou objektů. Z toho vyplývají několik podstatných věcí:
1. Bezkonkurenčně nejrychlejší vývoj aplikací (RD) na trhu
2. O elektronice toho zas tak moc vědět nemusíte (ani jste se nemuseli starat kam a co na jaký pin připojit )
3. Využití jazyka vyšší úrovně
4. Můžete se věnovat přednostně logice samotného projektu
5. Debugging pomocí breakpoints a další pozitiva
Bohužel, vše má svůj rub a líc a každá výhoda může být také nevýhodou. Třeba ne vždy máme (nebo vůbec neexistuje) nějaký konkrétní modul, který bychom potřebovali. V tom případě nám nezbývá nic jiného, než si takový modul "zbastit" sami. K tomu ale budeme potřebovat krapet více znalostí. Ale o tom zase příště
Naposledy upravil(a) webwalker dne čtv 5. zář 2013, 13:46, celkem upraveno 1 x.
Chtěl bych se stát profesionálním pískačem. Už teď jsem v tom sice hvězda, ale chtěl bych se ještě zdokonalit a začít se tím živit.
GPUreport.cz
GPUreport.cz
- webwalker
- Začátečník
- Registrován: 03. úno 2010
- Bydliště: Buranov vedle Prahy
Re: Gadgeteering aneb zábava pro pořádné chlapy
Nevýhody NET Gadgeteer
Nevýhody tohoto systému, se kterými musíte již dopředu počítat, jsou prakticky dvě:
1. Realtime zpracování
Díky tomu, jak NETMF vnitřně interpretuje kód není po něm možné požadovat real-time zpracování požadavků.
To je jasná nevýhoda, nicméně pro naše účely a gadgety (blízké robotice), kde se s požadavky na real-time zpracování příliš nesetkáme, nám to prakticky vadit nebude vůbec. Samozřejmě, kdo vyvíjí něco náročnějšího jako kodéry, převodníky atp., ten ať se Gageteeru raději vyhne.
2. Moduly poněkud plýtvají I/O výstupy
Moduly jsou skvělá věc, ale pokud nějaký modul připojíme na 10ti pinový soket, "zabijeme" tím všechny ostatní piny na soketu, které tento konkrétní modul nevyužívá.
Příkladem může být modul tlačítka, který využívá pouze piny č.3 (pro tlačítko) a č.4 (pro vnitřní LED). Pokud modul tlačítka připojíme třeba do soketu typu Y, který obsahuje celkem 7 pinů s GPIO, přijdeme hned o 5 GPIO pinů pro další využití. Takže co s tím? Naštěstí existuje jeden modul, pomocí kterého můžete tuto nevýhodu obejít
Extender
Zapojením modulu extendéru do nějakého soketu, vyvedete vlastně tento soket mimo základní desku mcu. Všechny piny soketu jsou pak přístupné přímo na extenderu, který můžeme zastrčit třeba do nepájivého pole (Bread board) a tvořit na něm vlastní obvody.
Pokud však nebudeme požívat již hotové moduly, ale budeme si pomocí extenderu a breadboard "bastit" vlastní obvody, bude třeba se seznámit s tím, jak vlastně jednotlivé typy I/O fungují. Nás budou především zajímat výstupy digitální, analogové a PWM, se kterými si vystačíme na hodně dlouhou dobu.
Nevýhody tohoto systému, se kterými musíte již dopředu počítat, jsou prakticky dvě:
1. Realtime zpracování
Díky tomu, jak NETMF vnitřně interpretuje kód není po něm možné požadovat real-time zpracování požadavků.
To je jasná nevýhoda, nicméně pro naše účely a gadgety (blízké robotice), kde se s požadavky na real-time zpracování příliš nesetkáme, nám to prakticky vadit nebude vůbec. Samozřejmě, kdo vyvíjí něco náročnějšího jako kodéry, převodníky atp., ten ať se Gageteeru raději vyhne.
2. Moduly poněkud plýtvají I/O výstupy
Moduly jsou skvělá věc, ale pokud nějaký modul připojíme na 10ti pinový soket, "zabijeme" tím všechny ostatní piny na soketu, které tento konkrétní modul nevyužívá.
Příkladem může být modul tlačítka, který využívá pouze piny č.3 (pro tlačítko) a č.4 (pro vnitřní LED). Pokud modul tlačítka připojíme třeba do soketu typu Y, který obsahuje celkem 7 pinů s GPIO, přijdeme hned o 5 GPIO pinů pro další využití. Takže co s tím? Naštěstí existuje jeden modul, pomocí kterého můžete tuto nevýhodu obejít
Extender
Zapojením modulu extendéru do nějakého soketu, vyvedete vlastně tento soket mimo základní desku mcu. Všechny piny soketu jsou pak přístupné přímo na extenderu, který můžeme zastrčit třeba do nepájivého pole (Bread board) a tvořit na něm vlastní obvody.
Pokud však nebudeme požívat již hotové moduly, ale budeme si pomocí extenderu a breadboard "bastit" vlastní obvody, bude třeba se seznámit s tím, jak vlastně jednotlivé typy I/O fungují. Nás budou především zajímat výstupy digitální, analogové a PWM, se kterými si vystačíme na hodně dlouhou dobu.
Chtěl bych se stát profesionálním pískačem. Už teď jsem v tom sice hvězda, ale chtěl bych se ještě zdokonalit a začít se tím živit.
GPUreport.cz
GPUreport.cz
- webwalker
- Začátečník
- Registrován: 03. úno 2010
- Bydliště: Buranov vedle Prahy
Re: Gadgeteering aneb zábava pro pořádné chlapy
Digitální výstup
Digital Output je poměrně jednoduchý výstup. Na příslušném pinu je buďto pravda (true), nebo nepravda (false). Z pohledu elektroniky Spideru pak 3,3V (true) nebo 0V resp. zem (false).
Využívat tento výstup můžeme především pro zapínání/vypínání nějakých zařízení jako Led, žárovka či cokoliv jiného.
Další možností využití tohoto výstupu je pak pro modulaci výstupního signálu. Představme si, že na tento výstup máme připojenou Led, kterou můžeme tlačítkem zapínat a vypínat. Pokud budeme toto tlačítko zapínat a vypínat dostatečně rychle (rychleji než může lidské oko postřehnout) můžeme zdánlivě měnit jas té Led. Vše bude záviset na tom, jaký časový poměr bude mezi tím, jak dlouho bylo tlačítko sepnuté a vypnuté. Pokud se bude poměr času sepnutí tlačítka zvyšovat na úkor doby jeho vypnutí, Led se nám bude rozjasňovat a pokud bude trend opačný, bude nám naopak zhasínat. Tomu se říká modulace, kterou ale my na tomto digitálním výstupu používat nebudeme a schováme si jí až na PWM výstup, kde se modulace programuje mnohem snadněji.
Příklad:
Použijeme stejný projekt jako minule, kdy jsme rozsvěcovali modul multicolorLed pomocí tlačítka button. Jediná změna v projektu bude ta, že na soketu č.14 vyměníme modul multicolorLed za Extender. Budeme totiž "bastit" náš první jednoduchý obvod na nepájivém poli (breadboard), který se bude skládat z obyčejné Led a odporu. Tuto led pak budeme chtít pomocí tlačítka rozsvítit na digitálním výstupu. Náš obvod na breadboard bude vypadat následovně:
(Obrázek je vypůjčen od Pete Browna, další kód už ale nikoliv)
Obvod je to jednoduchý, Led je připojena mezi piny č.10 (GND) a č.3 (GPIO) extenderu. Odpor (100 ohm) slouží ke snížení napětí na diodě. Ačkoliv znám ohmův zákon, raději jsem dal na doporučení ostatních a zvolil odpor 100ohm podle nich. Pokud je tady někdo, kdo vysvětlí, jak správně vypočítat hodnotu odporu před diodou, jeho příspěvek je vítán. Já se raději vrátím do pro mě hlubších vod - programování.
Takže máme projekt s jedním tlačítkem a extenderem, který je píchnutý do breadboard s naším Led obvodem. Vše je zapojené ve správných soketech na Spideru, takže můžeme začít programovat.
1. Deklarujeme si proměnnou s názvem ledOnDigitalOutput, která je typu DigitalOutput a zároveň pin (č.3) na extenderu nastavíme jako digitální výstup:
2. Nyní už můžeme pomocí proměnné LedOnDigitalOutput pin č.3 ovládat
To je vše, po zkompilování a odeslání kódu do Spidera by se vám měla Led dioda při stisknutí tlačítka rozsvítit a při jeho uvolnění zhasnout, stejně jako v předchozím příkladu s multicolorLed.
Digital Output je poměrně jednoduchý výstup. Na příslušném pinu je buďto pravda (true), nebo nepravda (false). Z pohledu elektroniky Spideru pak 3,3V (true) nebo 0V resp. zem (false).
Využívat tento výstup můžeme především pro zapínání/vypínání nějakých zařízení jako Led, žárovka či cokoliv jiného.
Další možností využití tohoto výstupu je pak pro modulaci výstupního signálu. Představme si, že na tento výstup máme připojenou Led, kterou můžeme tlačítkem zapínat a vypínat. Pokud budeme toto tlačítko zapínat a vypínat dostatečně rychle (rychleji než může lidské oko postřehnout) můžeme zdánlivě měnit jas té Led. Vše bude záviset na tom, jaký časový poměr bude mezi tím, jak dlouho bylo tlačítko sepnuté a vypnuté. Pokud se bude poměr času sepnutí tlačítka zvyšovat na úkor doby jeho vypnutí, Led se nám bude rozjasňovat a pokud bude trend opačný, bude nám naopak zhasínat. Tomu se říká modulace, kterou ale my na tomto digitálním výstupu používat nebudeme a schováme si jí až na PWM výstup, kde se modulace programuje mnohem snadněji.
Příklad:
Použijeme stejný projekt jako minule, kdy jsme rozsvěcovali modul multicolorLed pomocí tlačítka button. Jediná změna v projektu bude ta, že na soketu č.14 vyměníme modul multicolorLed za Extender. Budeme totiž "bastit" náš první jednoduchý obvod na nepájivém poli (breadboard), který se bude skládat z obyčejné Led a odporu. Tuto led pak budeme chtít pomocí tlačítka rozsvítit na digitálním výstupu. Náš obvod na breadboard bude vypadat následovně:
(Obrázek je vypůjčen od Pete Browna, další kód už ale nikoliv)
Obvod je to jednoduchý, Led je připojena mezi piny č.10 (GND) a č.3 (GPIO) extenderu. Odpor (100 ohm) slouží ke snížení napětí na diodě. Ačkoliv znám ohmův zákon, raději jsem dal na doporučení ostatních a zvolil odpor 100ohm podle nich. Pokud je tady někdo, kdo vysvětlí, jak správně vypočítat hodnotu odporu před diodou, jeho příspěvek je vítán. Já se raději vrátím do pro mě hlubších vod - programování.
Takže máme projekt s jedním tlačítkem a extenderem, který je píchnutý do breadboard s naším Led obvodem. Vše je zapojené ve správných soketech na Spideru, takže můžeme začít programovat.
1. Deklarujeme si proměnnou s názvem ledOnDigitalOutput, která je typu DigitalOutput a zároveň pin (č.3) na extenderu nastavíme jako digitální výstup:
Ten poslední argument funkce (false) určuje výchozí stav pinu výstupu. V tomto případě vypnut.GT.Interfaces.DigitalOutput ledOnDigitalOutput = extender1.SetupDigitalOutput(GT.Socket.Pin.Three, false);
2. Nyní už můžeme pomocí proměnné LedOnDigitalOutput pin č.3 ovládat
Celý kód bude vypadat následovně:ledOnDigitalOutput.Write(true); // nastavi hodnotu pinu digitalniho vystupu na true
ledOnDigitalOutput.Write(false); // nastavi hodnotu pinu digitalniho vystupu na false
Kód: Vybrat vše
public partial class Program
{
// Deklarace promenne digitalniho vystupu
private GT.Interfaces.DigitalOutput ledOnDigitalOutput;
// This method is run when the mainboard is powered up or reset.
void ProgramStarted()
{
// Use Debug.Print to show messages in Visual Studio's "Output" window during debugging.
Debug.Print("Program Started");
// Iniciace promenne s nastavenim pinu
ledOnDigitalOutput = extender1.SetupDigitalOutput(GT.Socket.Pin.Three, false);
// Predplaceni eventu pro stisk tlacitka
button1.ButtonPressed += new GTM.GHIElectronics.Button.ButtonEventHandler(button1_ButtonPressed);
// Predplaceni eventu pro uvolneni tlacitka
button1.ButtonReleased += new GTM.GHIElectronics.Button.ButtonEventHandler(button1_ButtonReleased);
}
// Obsluha eventu button1 stiknut
void button1_ButtonPressed(GTM.GHIElectronics.Button sender, GTM.GHIElectronics.Button.ButtonState state)
{
ledOnDigitalOutput.Write(true); // rozsviti Led
}
// Obsluha eventu button uvolnen
void button1_ButtonReleased(GTM.GHIElectronics.Button sender, GTM.GHIElectronics.Button.ButtonState state)
{
ledOnDigitalOutput.Write(false); // zhasne Led
}
}
Chtěl bych se stát profesionálním pískačem. Už teď jsem v tom sice hvězda, ale chtěl bych se ještě zdokonalit a začít se tím živit.
GPUreport.cz
GPUreport.cz
- webwalker
- Začátečník
- Registrován: 03. úno 2010
- Bydliště: Buranov vedle Prahy
Re: Gadgeteering aneb zábava pro pořádné chlapy
Analogový výstup
Ačkoliv analogový výstup nebudeme v našich gadgetech příliš využívat, bylo by přeci jen dobré o něm alespoň něco málo vědět.
Na rozdíl od digitálního výstupu, který na svém pinu může nabývat pouze hodnot pravda/nepravda (3,3V/0V), analogový výstup na svém pinu umožňuje nabývání libovolných hodnot napětí v intervalu 0V až 3,3V. Analogového výstupu bychom tedy mohli použít u různých regulací.
My si tu ukážem, jak regulovat jas na Led diodě z předchozího příkladu.
Moduly zůstanou stejné - tedy tlačítko button i extender. Musíme však změnit napojení extenderu do správného soketu Spidera. Soket č.14 totiž neobsahuje žádný pin pro analogový výstup. Podle tabulky analogový pin obsahuje soket typu "O", který je na Spideru jediný a to pod číslem 9. Extender tedy zapojíme do soketu č.9 a na něm budeme využívat pin č.5. Tlačítko zůstává v původním soketu č.12 a budeme jím přepínat svítivost Led diody (bohužel nemám potenciometr pro plynulou změnu svítivosti).
Náš "zbastěnej" obvod s Led diodou bude pak vypadat následovně:
Dioda je připojena mezi zemí (GND) a pinem č.5 (AOUT). Vše zapojeno, můžeme tedy začít programovat.
1. Deklarujeme si proměnnou s názvem ledOnAnalogOutput, která je typu (třídy) AnalogOutput a nastavíme její startovací hodnotu.
Po spuštění programu se nám Led dioda rozsvítí plným jasem. Po stisknutí tlačítka se jas sníží a po jeho uvolnění zas vrátí do původní hodnoty.
To je k analogovému výstupu vše. Z teorie nám tedy zbývá ještě výstup PWM a pak už honem na nějaký ten gadget, aby tu nebyla taková nuda
Ačkoliv analogový výstup nebudeme v našich gadgetech příliš využívat, bylo by přeci jen dobré o něm alespoň něco málo vědět.
Na rozdíl od digitálního výstupu, který na svém pinu může nabývat pouze hodnot pravda/nepravda (3,3V/0V), analogový výstup na svém pinu umožňuje nabývání libovolných hodnot napětí v intervalu 0V až 3,3V. Analogového výstupu bychom tedy mohli použít u různých regulací.
My si tu ukážem, jak regulovat jas na Led diodě z předchozího příkladu.
Moduly zůstanou stejné - tedy tlačítko button i extender. Musíme však změnit napojení extenderu do správného soketu Spidera. Soket č.14 totiž neobsahuje žádný pin pro analogový výstup. Podle tabulky analogový pin obsahuje soket typu "O", který je na Spideru jediný a to pod číslem 9. Extender tedy zapojíme do soketu č.9 a na něm budeme využívat pin č.5. Tlačítko zůstává v původním soketu č.12 a budeme jím přepínat svítivost Led diody (bohužel nemám potenciometr pro plynulou změnu svítivosti).
Náš "zbastěnej" obvod s Led diodou bude pak vypadat následovně:
Dioda je připojena mezi zemí (GND) a pinem č.5 (AOUT). Vše zapojeno, můžeme tedy začít programovat.
1. Deklarujeme si proměnnou s názvem ledOnAnalogOutput, která je typu (třídy) AnalogOutput a nastavíme její startovací hodnotu.
2. Nyní už můžeme pomocí proměnné objektu ledOnAnalogOutput pin č.5 ovládat.GT.Interfaces.AnalogOutput ledOnAnalogOutput = extender1.SetupAnalogOutput(GT.Socket.Pin.Five);
ledOnAnalogOutput.Set(1); // Nastavime pocatecni napeti na 100%
Za zmínku stojí to, že jako argument metody Set se neuvádí přímá hodnota napětí, ale koeficient (procento) z maximální hodnoty. Pokud byste chtěli vkládat přímo napětí třeba 2,2V, pak použijeme výpočet:ledOnAnalogOutput.Set(1); // Nastavi pin na maximalni hodnotu (3,3V)
ledOnAnalogOutput.Set(0.6); // Nastavi pin na 60% maximalni hodnoty
Celý kód bude vypadat následovně:ledOnAnalogOutput.Set(2.2 / ledOnAnalogOutput.MaxOutputVoltage); // Chci na pinu #5 napeti 2,2V
Kód: Vybrat vše
public partial class Program
{
private GT.Interfaces.AnalogOutput ledOnAnalogOutput;
// This method is run when the mainboard is powered up or reset.
void ProgramStarted()
{
ledOnAnalogOutput = extender1.SetupAnalogOutput(GT.Socket.Pin.Five);
ledOnAnalogOutput.Set(1); // Nastavime pocatecni napeti na 100%
// Use Debug.Print to show messages in Visual Studio's "Output" window during debugging.
Debug.Print("Program Started");
// Predplaceni eventu pro stisk tlacitka
button1.ButtonPressed += new GTM.GHIElectronics.Button.ButtonEventHandler(button1_ButtonPressed);
// Predplaceni eventu pro uvolneni tlacitka
button1.ButtonReleased += new GTM.GHIElectronics.Button.ButtonEventHandler(button1_ButtonReleased);
}
// Obsluha eventu button1 stiknut
void button1_ButtonPressed(GTM.GHIElectronics.Button sender, GTM.GHIElectronics.Button.ButtonState state)
{
ledOnAnalogOutput.Set(1); // Nastavi pin na maximalni hodnotu (3,3V)
}
// Obsluha eventu button uvolnen
void button1_ButtonReleased(GTM.GHIElectronics.Button sender, GTM.GHIElectronics.Button.ButtonState state)
{
ledOnAnalogOutput.Set(0.6); // Nastavi pin na 60% maximalni hodnoty
}
}
To je k analogovému výstupu vše. Z teorie nám tedy zbývá ještě výstup PWM a pak už honem na nějaký ten gadget, aby tu nebyla taková nuda
Chtěl bych se stát profesionálním pískačem. Už teď jsem v tom sice hvězda, ale chtěl bych se ještě zdokonalit a začít se tím živit.
GPUreport.cz
GPUreport.cz
- webwalker
- Začátečník
- Registrován: 03. úno 2010
- Bydliště: Buranov vedle Prahy
Re: Gadgeteering aneb zábava pro pořádné chlapy
PWM výstup (Pulse-Width modulation)
Pro nás hračičky je PWM výstup (i vstup) asi tím nejdůležitějším výstupem vůbec. Proč? Protože víceméně veškerá serva a regulátory pro el. motorky, ze kterých budeme skládat naše jezdící, skákající, plovoucí a kdoví co ještě dělající "hračky", tyto PWM výstupy využívají. Budete-li si chtít například "zbastit" nějaké to dálkově ovládané auto, budete pro jeho zatáčení potřebovat nějaké to servo a pro ovládání rychlosti zase nějaký regulátor.
Název PWM (Pulse-Width Modulation) napovídá, že se jedná o nějakou modulaci signálu. Na modulaci jsme už narazili u digitálního výstupu, kde jsme chtěli pomocí modulace (rychlého zapínání a vypínání dig. výstupu) regulovat jas Led diody. U PWM jde o něco podobného, jen to má vše určitý řád a pravidla.
V - Pulse voltage (v případě Spider je vždy 3,3V)
T - Pulse period (časová perioda mezi začátky pulsů)
t - Pulse width (jak dlouho je signál v sepnutém stavu)
Zní to složitě, ale je to velmi jednoduchý princip. Určující veličinou je vzájemný poměr hodnot t (pulse-width) a hodnoty T (period). V případě serva pak, čím déle je v dané periodě (T) digitální výstup v sepnutém stavu (t), tím více se servo otočí do své maximální polohy. A samozřejmě naopak, čím kratší bude doba sepnutí digitálního výstupu v dané periodě, tím blíže bude servo natočené ke své minimální poloze.
Pracovní rozsah
Teoreticky tedy platí, že doba sepnutí digitálního výstupu (t) se může pohybovat v rozsahu od min>0 do max<T(doba periody). V praxi ale zařízení, které využívají PWM signál, pracují s rozsahem mnohem omezenějším. Příkladem je standardní servo:
Standardní servo
T - perioda 50Hz (20ms)
tmin - 1 ms (servo natočeno v nulové poloze)
tmax - 2 ms (servo natočeno v max. poloze)
A jak PWM výstupy programovat? Díky tomu, že soket typu "P" na Spideru již obsahuje HW PWM výstupy a NETMF s nimi počítá také, programování je velice prosté a moc se neliší od toho, jak jsme dříve programovali digitální a analogový výstup.
1. Nadeklarujeme proměnnou servoOnPwmOutput, která je třídy PWMOutput a výstup aktivujeme.
Druhým argumentem funkce je pak hodnota t (pulse width), opět převedena na ns(nano sekundy).
Příště ukážu, jak fyzicky napojit servo přes extender na Spider a pěkně ho roztočit
Pro nás hračičky je PWM výstup (i vstup) asi tím nejdůležitějším výstupem vůbec. Proč? Protože víceméně veškerá serva a regulátory pro el. motorky, ze kterých budeme skládat naše jezdící, skákající, plovoucí a kdoví co ještě dělající "hračky", tyto PWM výstupy využívají. Budete-li si chtít například "zbastit" nějaké to dálkově ovládané auto, budete pro jeho zatáčení potřebovat nějaké to servo a pro ovládání rychlosti zase nějaký regulátor.
Název PWM (Pulse-Width Modulation) napovídá, že se jedná o nějakou modulaci signálu. Na modulaci jsme už narazili u digitálního výstupu, kde jsme chtěli pomocí modulace (rychlého zapínání a vypínání dig. výstupu) regulovat jas Led diody. U PWM jde o něco podobného, jen to má vše určitý řád a pravidla.
V - Pulse voltage (v případě Spider je vždy 3,3V)
T - Pulse period (časová perioda mezi začátky pulsů)
t - Pulse width (jak dlouho je signál v sepnutém stavu)
Zní to složitě, ale je to velmi jednoduchý princip. Určující veličinou je vzájemný poměr hodnot t (pulse-width) a hodnoty T (period). V případě serva pak, čím déle je v dané periodě (T) digitální výstup v sepnutém stavu (t), tím více se servo otočí do své maximální polohy. A samozřejmě naopak, čím kratší bude doba sepnutí digitálního výstupu v dané periodě, tím blíže bude servo natočené ke své minimální poloze.
Pracovní rozsah
Teoreticky tedy platí, že doba sepnutí digitálního výstupu (t) se může pohybovat v rozsahu od min>0 do max<T(doba periody). V praxi ale zařízení, které využívají PWM signál, pracují s rozsahem mnohem omezenějším. Příkladem je standardní servo:
Standardní servo
T - perioda 50Hz (20ms)
tmin - 1 ms (servo natočeno v nulové poloze)
tmax - 2 ms (servo natočeno v max. poloze)
A jak PWM výstupy programovat? Díky tomu, že soket typu "P" na Spideru již obsahuje HW PWM výstupy a NETMF s nimi počítá také, programování je velice prosté a moc se neliší od toho, jak jsme dříve programovali digitální a analogový výstup.
1. Nadeklarujeme proměnnou servoOnPwmOutput, která je třídy PWMOutput a výstup aktivujeme.
2. Nyní už můžeme pomocí proměnné objektu servoOnPwmOutput PWM výstup a na něj napojené servo ovládatGT.Interfaces.PWMOutput servoOnPwmOutput = extender1.SetupPWMOutput(GT.Socket.Pin.Seven);
servoOnPwmOutput.Active = true; // Aktivuj vystup
První argument funkce SetPulse udává period, v našem případě 20ms (výraz 20*1000*1000 je převedením na ns).servoOnPwmOutput.SetPulse(20 * 1000 * 1000, 1 * 1000 * 1000); // Natoc servo do nulove polohy
servoOnPwmOutput.SetPulse(20 * 1000 * 1000, (uint)(1.5 * 1000 * 1000)); // Natoc servo do stredove polohy
servoOnPwmOutput.SetPulse(20 * 1000 * 1000, 2 * 1000 * 1000); // Natoc servo do maximalni polohy
Druhým argumentem funkce je pak hodnota t (pulse width), opět převedena na ns(nano sekundy).
Příště ukážu, jak fyzicky napojit servo přes extender na Spider a pěkně ho roztočit
Chtěl bych se stát profesionálním pískačem. Už teď jsem v tom sice hvězda, ale chtěl bych se ještě zdokonalit a začít se tím živit.
GPUreport.cz
GPUreport.cz
- webwalker
- Začátečník
- Registrován: 03. úno 2010
- Bydliště: Buranov vedle Prahy
Re: Gadgeteering aneb zábava pro pořádné chlapy
Zapojení serva
Servo zapojujeme do nějakého PWM výstupu. Podle tabulky tedy do soketu typu "P", který obsahuje 3xPWM výstup (piny č.7, 8 nebo 9). Spider obsahuje celkem dva sokety typu "P" (č.8 a 11) což znamená, že celkem můžeme na mcu připojit až 6 zařízení využívající PWM výstupů (2x3), tedy v našem případě až 6 serv.
Servo budeme zapojovat pomocí extenderu na nepájivé pole. Vzhledem k tomu, že hobby serva pracují s napětím 5V a Spider s napětím 3,3V, vzniká nám tady malý problém, který budeme muset řešit externím napájením serva.
Poznámka:
Každý soket Spidera na pinu č.2 sice poskytuje pomocnou 5V větev, nicméně s velmi nízkým výkonem. Na provozování jednoho serva by to sice stačit asi mohlo, na víc serv však rozhodně ne. Nebudeme raději riskovat a použijeme externí zdroj 5V i pro jedno servo. Jako externí zdroj lze použít třeba i 4xAAA tužkové baterie, síťový zdroj nebo BEC z regulátoru.
Gadget
Budeme chtít vytvořit úplně jednoduchý servotester, jehož funkce bude jednoduchá. Po stisknutí tlačítka se servo postupně natočí do své maximální polohy a po chvilce se zase vrátí do své nulové polohy.
Ve VS2010 vytvoříme tedy nový projekt s následujícími moduly:
Extender připojíme do nepájivého pole. Servo a pomocné napětí 5V připojíme podle následujícího obrázku:
1. Ovládací signál serva je veden z pinu č.7 (PWM) extenderu (žlutý drát)
2. Napájení serva je vedeno z pomocného zdroje 5V (červený + a modrý drát GND)
3. Pro zamezení různých rušivých "neplech", GND extenderu je napojen na GND externího zdroje (modrý drát z vykřičníkem)
Samotný kód servotesteru by pak vypadal následovně:Kód spustíme pomocí tlačítka F5.
Po stisknutí tlačítka, připojeného k desce Spidera, by se nám mělo servo natočit do své maximální pozice, kde vyčká jednu sekundu a následně se vrátí zpět.
Tento jednoduchý kód je opravdu jen ukázkový. Ono totiž řízení serva je tak trochu alchymie. Servo je "pomalá" mechanická součástka, takže by se v kódu měly ošetřit takové věci jako je rychlost serva nebo jeho "rozlišení". Určitě by se vyplatilo využít opravdu silné stránky jazyka C# a napsat si nějakou vlastní třídu objektu serva, ve které by byly všechny tyto faktory ošetřeny, ale nám to (alespoň pro začátek) stačit bude.
Servo zapojujeme do nějakého PWM výstupu. Podle tabulky tedy do soketu typu "P", který obsahuje 3xPWM výstup (piny č.7, 8 nebo 9). Spider obsahuje celkem dva sokety typu "P" (č.8 a 11) což znamená, že celkem můžeme na mcu připojit až 6 zařízení využívající PWM výstupů (2x3), tedy v našem případě až 6 serv.
Servo budeme zapojovat pomocí extenderu na nepájivé pole. Vzhledem k tomu, že hobby serva pracují s napětím 5V a Spider s napětím 3,3V, vzniká nám tady malý problém, který budeme muset řešit externím napájením serva.
Poznámka:
Každý soket Spidera na pinu č.2 sice poskytuje pomocnou 5V větev, nicméně s velmi nízkým výkonem. Na provozování jednoho serva by to sice stačit asi mohlo, na víc serv však rozhodně ne. Nebudeme raději riskovat a použijeme externí zdroj 5V i pro jedno servo. Jako externí zdroj lze použít třeba i 4xAAA tužkové baterie, síťový zdroj nebo BEC z regulátoru.
Gadget
Budeme chtít vytvořit úplně jednoduchý servotester, jehož funkce bude jednoduchá. Po stisknutí tlačítka se servo postupně natočí do své maximální polohy a po chvilce se zase vrátí do své nulové polohy.
Ve VS2010 vytvoříme tedy nový projekt s následujícími moduly:
Extender připojíme do nepájivého pole. Servo a pomocné napětí 5V připojíme podle následujícího obrázku:
1. Ovládací signál serva je veden z pinu č.7 (PWM) extenderu (žlutý drát)
2. Napájení serva je vedeno z pomocného zdroje 5V (červený + a modrý drát GND)
3. Pro zamezení různých rušivých "neplech", GND extenderu je napojen na GND externího zdroje (modrý drát z vykřičníkem)
Samotný kód servotesteru by pak vypadal následovně:
Kód: Vybrat vše
public partial class Program
{
// Deklarace promenne servo
private GT.Interfaces.PWMOutput servo1;
// This method is run when the mainboard is powered up or reset.
void ProgramStarted()
{
// Use Debug.Print to show messages in Visual Studio's "Output" window during debugging.
Debug.Print("Program Started");
// Predplat si event stisknuti tlacitka
button1.ButtonPressed += new GTM.GHIElectronics.Button.ButtonEventHandler(button1_ButtonPressed);
// Iniciace promenne servo (pin #7 na extenderu)
servo1 = extender1.SetupPWMOutput(GT.Socket.Pin.Seven);
}
void button1_ButtonPressed(GTM.GHIElectronics.Button sender, GTM.GHIElectronics.Button.ButtonState state)
{
// Aktivuj PWM vystup
servo1.Active = true;
// Presunuj servo od nulove do maximalni pozice po krocich 25us
for (int i = 1000; i <= 2000; i += 25)
{
servo1.SetPulse(20 * 1000 * 1000, (uint)(i * 1000)); // Natoc servo
Thread.Sleep(5); // Vyckej 5ms
}
Thread.Sleep(1000); // Vyckej 1s
// Presunuj servo zpet z maximalni do nulove pozice po krocich 25us
for (int i = 2000; i >= 1000; i -= 25)
{
servo1.SetPulse(20 * 1000 * 1000, (uint)(i * 1000)); // Natoc servo
Thread.Sleep(5); // Vyckej 5ms
}
// Deaktivuj PWM vystup
servo1.Active = false;
}
}
Po stisknutí tlačítka, připojeného k desce Spidera, by se nám mělo servo natočit do své maximální pozice, kde vyčká jednu sekundu a následně se vrátí zpět.
Tento jednoduchý kód je opravdu jen ukázkový. Ono totiž řízení serva je tak trochu alchymie. Servo je "pomalá" mechanická součástka, takže by se v kódu měly ošetřit takové věci jako je rychlost serva nebo jeho "rozlišení". Určitě by se vyplatilo využít opravdu silné stránky jazyka C# a napsat si nějakou vlastní třídu objektu serva, ve které by byly všechny tyto faktory ošetřeny, ale nám to (alespoň pro začátek) stačit bude.
Chtěl bych se stát profesionálním pískačem. Už teď jsem v tom sice hvězda, ale chtěl bych se ještě zdokonalit a začít se tím živit.
GPUreport.cz
GPUreport.cz
- webwalker
- Začátečník
- Registrován: 03. úno 2010
- Bydliště: Buranov vedle Prahy
Re: Gadgeteering aneb zábava pro pořádné chlapy
Co dál? Jediné co dosud umíme v NET Gadgeteer je používání digitálních, analogových a PWM výstupů. Můžeme ale s těmito znalostmi vytvořit už konečně nějaký ten gadget? No, asi jo, ale žádná sláva to rozhodně nebude. Mohli bychom třeba pomocí serva a regulátoru motoru vytvořit nějaký jezdící model auta, ale to jako budeme vedle něj běhat a pomocí, na něm umístěných, tlačítek ho ovládat? A co něco autonomního, nějakého robota? To zas vyžaduje znalost vstupů, protože všechny možné senzory, podle kterých se robot v prostoru pohybuje, jsou napojeny právě na tyto vstupy
Pokud bychom si ale vytvořily nějaké dálkové ovládání pomocí počítačové sítě, otevřelo by se nám pro naše gadgety hafo možností. Malá ukázka z oblíbeného sitcomu všech gadgeteerů:
Z ukázky je patrné, jak by naše gadgety asi mohly vypadat. Od rozsvěcování lampiček či ovládání dalších spotřebičů (around the world) až po ovládání modelů aut.
V každém případě, vše bude realizováno pomocí počítačové sítě. Spider již síťový adaptér obsahuje, takže jediné co zbývá je, naprogramovat si nějaký ten jednoduchý server (http nebo Tcp), který bude přijímat naše vzdálené příkazy a následně podle typu příkazu ovládat výstupní porty na mcu.
A jaký server nejlépe zvolit? Http nebo TCP? Každý má něco pro a něco proti:
Http server
+ jednodušší na naprogramování
+ klientem je webový prohlížeč (nemusí se programovat klient)
+ díky tomu, že klientem je libovolný browser, je multiplatformní
- pomalý (na realtime ovládání raději zapomeňte)
TCP server
- trochu složitější na naprogramování (ale jen o fous)
- musí se programovat i klient
- klientská část se musí programovat pro danou platformu
+ je rychlý, dostatečně i pro realtime řízení
Příště, bude-li čas a nálada (toto vlákno není zrovna moc čtené, holt asi všichni opravdu mastí jen hry), bych ukázal jak na takový http server na platformě NET Gadgeteer jít a jak ho využít třeba k tomu rozsvícení lampičky z Big Bang Theory. Ale proč bychom vůbec chtěli rozsvěcovat lampičku "around the world"?
Kdo to ještě nepochopil, odpověď je jednoduchá
Because We Can!
Pokud bychom si ale vytvořily nějaké dálkové ovládání pomocí počítačové sítě, otevřelo by se nám pro naše gadgety hafo možností. Malá ukázka z oblíbeného sitcomu všech gadgeteerů:
Z ukázky je patrné, jak by naše gadgety asi mohly vypadat. Od rozsvěcování lampiček či ovládání dalších spotřebičů (around the world) až po ovládání modelů aut.
V každém případě, vše bude realizováno pomocí počítačové sítě. Spider již síťový adaptér obsahuje, takže jediné co zbývá je, naprogramovat si nějaký ten jednoduchý server (http nebo Tcp), který bude přijímat naše vzdálené příkazy a následně podle typu příkazu ovládat výstupní porty na mcu.
A jaký server nejlépe zvolit? Http nebo TCP? Každý má něco pro a něco proti:
Http server
+ jednodušší na naprogramování
+ klientem je webový prohlížeč (nemusí se programovat klient)
+ díky tomu, že klientem je libovolný browser, je multiplatformní
- pomalý (na realtime ovládání raději zapomeňte)
TCP server
- trochu složitější na naprogramování (ale jen o fous)
- musí se programovat i klient
- klientská část se musí programovat pro danou platformu
+ je rychlý, dostatečně i pro realtime řízení
Příště, bude-li čas a nálada (toto vlákno není zrovna moc čtené, holt asi všichni opravdu mastí jen hry), bych ukázal jak na takový http server na platformě NET Gadgeteer jít a jak ho využít třeba k tomu rozsvícení lampičky z Big Bang Theory. Ale proč bychom vůbec chtěli rozsvěcovat lampičku "around the world"?
Kdo to ještě nepochopil, odpověď je jednoduchá
Because We Can!
Chtěl bych se stát profesionálním pískačem. Už teď jsem v tom sice hvězda, ale chtěl bych se ještě zdokonalit a začít se tím živit.
GPUreport.cz
GPUreport.cz
- webwalker
- Začátečník
- Registrován: 03. úno 2010
- Bydliště: Buranov vedle Prahy
Re: Gadgeteering aneb zábava pro pořádné chlapy
Jak na Http Server
Naprogramovat si jednoduchý http server v NETMF pro Gadgeteer není příliš složitá záležitost. Nemusíte dokonce ani nic programovat, stačí se kouknout na internet, kde je již hotových kódů dostatečné množství.
Další možností je vzít už nějaký hotový kód a přizpůsobit si ho vlastním potřebám. Vždy je ale důležité, abyste jen tupě nepřepisovali kód, ale abyste věděli, co vlastně vůbec děláte. Doporučuji také psát kódy dostatečně "reusable", tedy tak, že tento kód budete moci využívat ve všech svých projektech, aniž byste museli tento kód vůbec či významněji upravovat. Nejlepším způsobem je tedy psát takovéto kódy do pomocných tříd (Class). Takto nějak vypadá moje třída HttpServer:Jak vidíte, kód není nijak dlouhý. Vysvětlení jen v kostce:
1. Konstruktory jsou dva. Jeden default bez argumentů a druhý s argumentem port (číslo portu)
2. V nekonečné smyčce se neustále čeká na požadavek (Request) klienta context = listener.GetContext()
3. Protože metoda GetContext() je blokovací funkce, je nutné celou smyčku spustit v jiném threadu
4. Když požadavek (Request) od klienta dorazí, uloží se v proměnné context.
5. Je spuštěna událost ContextReceived, která předá proměnnou context přes argument HttpContextReceivedEventArgs hlavnímu vláknu, kde si ji uživatel třídy může odchytit.
6. V události ContextReceived uživatel zjistí, co po něm klient chce a dle toho připraví odpověď (Response).
7. Když se kód vrátí z události ContextReceived, odešle se na klienta odpověď (Response).
Pokud se v tom nebudete chtít babrat nevadí. Stačí si tento kód uložit v souboru (třeba httpServer.cs) a umístit ho v projektu. Použít třídu HttpServer pak můžete následovně:
Pozor na jednu věc. Pokud v konstruktoru zvolíte jiný port než 80 nezapomeňte, že browser počítá vždy s portem 80 (není-li nastaven jinak). Zvolíte-li kupříkladu port 2000, je nutné také v browseru tento http sever adresovat i s číslem portu třeba 192.168.0.2:2000.
Kompletní ukázka kódu, kdy si můžeme pomocí http serveru běžícího na Spideru rozsvítit třeba Led diodu přes svůj smartphone zase až příště (bude-li čas)
Naprogramovat si jednoduchý http server v NETMF pro Gadgeteer není příliš složitá záležitost. Nemusíte dokonce ani nic programovat, stačí se kouknout na internet, kde je již hotových kódů dostatečné množství.
Další možností je vzít už nějaký hotový kód a přizpůsobit si ho vlastním potřebám. Vždy je ale důležité, abyste jen tupě nepřepisovali kód, ale abyste věděli, co vlastně vůbec děláte. Doporučuji také psát kódy dostatečně "reusable", tedy tak, že tento kód budete moci využívat ve všech svých projektech, aniž byste museli tento kód vůbec či významněji upravovat. Nejlepším způsobem je tedy psát takovéto kódy do pomocných tříd (Class). Takto nějak vypadá moje třída HttpServer:
Kód: Vybrat vše
using System;
using Microsoft.SPOT;
using System.Net;
using System.Threading;
namespace webwalkerTools
{
class HttpServer
{
public const int DEFAULT_SERVER_PORT = 80; // Defaultni cislo portu
private int port = DEFAULT_SERVER_PORT; // port
private HttpListener listener; // Http Listener
// Verejne udalosti
public delegate void ContextReceivedEventHandler(object sender, HttpContextReceivedEventArgs e);
public event ContextReceivedEventHandler ContextReceived;
// Defaultni konstruktor
public HttpServer(): this(DEFAULT_SERVER_PORT) { }
// Konstruktor s nastavenim portu
public HttpServer(int port)
{
this.port = port;
}
// Start serveru
public void Start()
{
// Spust server v novem vlaknu
new Thread(StartServerInternal).Start();
}
private void StartServerInternal()
{
//Thread.CurrentThread.Priority = ThreadPriority.Lowest;
while (true)
{
listener = new HttpListener("http", port); // Nastaveni listeneru
listener.Start(); // Start naslouchani
HttpListenerContext context = null; // Obsah Request
Debug.Print("Http Server is listening ...");
while (listener.IsListening) // Opakuj dokud je listener v behu
{
try
{
context = listener.GetContext(); // Vezmi obsah zadosti
if (context == null) continue;
// Spust event ContextReceived
HttpContextReceivedEventArgs args = new HttpContextReceivedEventArgs(context);
OnContextReceived(args);
// Odesli data, ktera byla nastavena v eventu ContextReceived
SendResponse(args);
}
catch (Exception ex)
{
Debug.Print(ex.Message);
}
finally
{
context = null; // uvolni context
}
}
// Zastav a zavri HttpListener
listener.Stop();
listener.Close();
Debug.Print("Http Server listening stopped");
}
}
// Odesle odpoved
private void SendResponse(HttpContextReceivedEventArgs args)
{
args.ReceivedContext.Response.StatusCode = 200; // Vse je OK
args.ReceivedContext.Response.ContentType = "text/html"; // Typ obsahu
try
{
// Odesle odpoved pomoci OutputStream
args.ReceivedContext.Response.OutputStream.Write(args.DataResponse, 0, args.DataResponse.Length);
}
finally
{
args.ReceivedContext.Response.Close(); // Uvolni objekt Response
}
}
// Spusti event ContextReceived
private void OnContextReceived(HttpContextReceivedEventArgs args)
{
if(ContextReceived != null) // Spust pouze ma-li nekdo event predplacen
ContextReceived(this, args);
}
// Trida Args pro ContextReceivedHandler
public class HttpContextReceivedEventArgs : EventArgs
{
public HttpListenerContext ReceivedContext { get; private set; } // Prijaty kontext
public byte[] DataResponse { get; set; } // Data pro odeslani
// Konstruktor
public HttpContextReceivedEventArgs(HttpListenerContext context)
{
ReceivedContext = context;
}
}
}
}
1. Konstruktory jsou dva. Jeden default bez argumentů a druhý s argumentem port (číslo portu)
2. V nekonečné smyčce se neustále čeká na požadavek (Request) klienta context = listener.GetContext()
3. Protože metoda GetContext() je blokovací funkce, je nutné celou smyčku spustit v jiném threadu
4. Když požadavek (Request) od klienta dorazí, uloží se v proměnné context.
5. Je spuštěna událost ContextReceived, která předá proměnnou context přes argument HttpContextReceivedEventArgs hlavnímu vláknu, kde si ji uživatel třídy může odchytit.
6. V události ContextReceived uživatel zjistí, co po něm klient chce a dle toho připraví odpověď (Response).
7. Když se kód vrátí z události ContextReceived, odešle se na klienta odpověď (Response).
Pokud se v tom nebudete chtít babrat nevadí. Stačí si tento kód uložit v souboru (třeba httpServer.cs) a umístit ho v projektu. Použít třídu HttpServer pak můžete následovně:
Kód: Vybrat vše
// Iniciace HttpServeru
webwalkerTools.HttpServer server = new webwalkerTools.HttpServer();
// Predplat si event pro prijem Request klienta
server.ContextReceived += new webwalkerTools.HttpServer.ContextReceivedEventHandler(server_ContextReceived);
server.Start(); // Nastartuj server
// Odchycena udalost pro Request
void server_ContextReceived(object sender, webwalkerTools.HttpServer.HttpContextReceivedEventArgs e)
{
.
.
.
.
}
Kompletní ukázka kódu, kdy si můžeme pomocí http serveru běžícího na Spideru rozsvítit třeba Led diodu přes svůj smartphone zase až příště (bude-li čas)
Chtěl bych se stát profesionálním pískačem. Už teď jsem v tom sice hvězda, ale chtěl bych se ještě zdokonalit a začít se tím živit.
GPUreport.cz
GPUreport.cz
- webwalker
- Začátečník
- Registrován: 03. úno 2010
- Bydliště: Buranov vedle Prahy
Re: Gadgeteering aneb zábava pro pořádné chlapy
Připojení k počítačové síti
Abychom mohli využívat Spidera jako http server je nutné ho nejdříve připojit do počítačové sítě. To se provádí pomocí modulu Ethernet_J11D. Tento modul je vlastně pouze konektorem, protože samotný síťový adaptér je již umístěn na základové desce. Připojení si ukážeme na následujícím příkladu.
Vytvoříme si nový projekt a zapojíme potřebné moduly podle obrázku
Chceme, aby se Spider po nastartování připojil do naší sítě, získal IP adresu a úspěšné/neúspěšné připojení signalizoval v modulu multicolorLed1 zelenou/červenou barvou.
Kód by vypadal asi takto:Kód je to opravdu jednoduchý
1. "Předplatíme" si zachycení události ethernet_J11D.NetworkUp a ethernet_J11D.NetworkDown modulu ethernet_J11D do patřičných procedur.
2. Nastavíme automatické přidělování IP ethernet_J11D.UseDHCP()
3. Podle toho, jak bylo připojení úspěšné, se nám spustí událost NetworkUp nebo NetworkDown.
4. V události NetworkDown pak rozsvítíme multicolorLed1 do červena a v NetworkUp do zelena.
To je vše. Pokud budeme tvořit nějaký stacionární gadget jako ovládání světel, topení nebo něčeho jiného přes intranet/internet, připojíme Spidera k domácí síti obyčejným kabelem k nejbližšímu routeru/switch. Pokud by byl problém s umístěním kabelu, vzdáleností nebo budete potřebovat mobilitu (RC auto, robot ap.), zapojíte Spidera k vlastnímu vyhrazenému WiFi routeru (AP).
Takže, už umíme ovládat výstupy, jsme připojení k síti a máme funkční http server. Teď už opravdu nezbývá nic jiného, než-li se pustit do prvního "opravdového" gadgetu. Třeba rozsvěcování lampičky. A to klidně i "around the world"
Abychom mohli využívat Spidera jako http server je nutné ho nejdříve připojit do počítačové sítě. To se provádí pomocí modulu Ethernet_J11D. Tento modul je vlastně pouze konektorem, protože samotný síťový adaptér je již umístěn na základové desce. Připojení si ukážeme na následujícím příkladu.
Vytvoříme si nový projekt a zapojíme potřebné moduly podle obrázku
Chceme, aby se Spider po nastartování připojil do naší sítě, získal IP adresu a úspěšné/neúspěšné připojení signalizoval v modulu multicolorLed1 zelenou/červenou barvou.
Kód by vypadal asi takto:
Kód: Vybrat vše
void ProgramStarted()
{
// Use Debug.Print to show messages in Visual Studio's "Output" window during debugging.
Debug.Print("Program Started");
ethernet_J11D.NetworkUp += new GTM.Module.NetworkModule.NetworkEventHandler(ethernet_J11D_NetworkUp);
ethernet_J11D.NetworkDown += new GTM.Module.NetworkModule.NetworkEventHandler(ethernet_J11D_NetworkDown);
ethernet_J11D.UseDHCP(); // Nastav na automaticke pridelovani IP adresy
}
// Network down
void ethernet_J11D_NetworkDown(GTM.Module.NetworkModule sender, GTM.Module.NetworkModule.NetworkState state)
{
Debug.Print("Network down"); // Rozsvit multicolor Led do cervena
multicolorLed1.TurnRed();
}
// Network up
void ethernet_J11D_NetworkUp(GTM.Module.NetworkModule sender, GTM.Module.NetworkModule.NetworkState state)
{
Debug.Print("Network Up with IP " + sender.NetworkSettings.IPAddress);
multicolorLed1.TurnGreen(); // Rozsvit multicolor Led do zelena
}
1. "Předplatíme" si zachycení události ethernet_J11D.NetworkUp a ethernet_J11D.NetworkDown modulu ethernet_J11D do patřičných procedur.
2. Nastavíme automatické přidělování IP ethernet_J11D.UseDHCP()
3. Podle toho, jak bylo připojení úspěšné, se nám spustí událost NetworkUp nebo NetworkDown.
4. V události NetworkDown pak rozsvítíme multicolorLed1 do červena a v NetworkUp do zelena.
To je vše. Pokud budeme tvořit nějaký stacionární gadget jako ovládání světel, topení nebo něčeho jiného přes intranet/internet, připojíme Spidera k domácí síti obyčejným kabelem k nejbližšímu routeru/switch. Pokud by byl problém s umístěním kabelu, vzdáleností nebo budete potřebovat mobilitu (RC auto, robot ap.), zapojíte Spidera k vlastnímu vyhrazenému WiFi routeru (AP).
Takže, už umíme ovládat výstupy, jsme připojení k síti a máme funkční http server. Teď už opravdu nezbývá nic jiného, než-li se pustit do prvního "opravdového" gadgetu. Třeba rozsvěcování lampičky. A to klidně i "around the world"
Chtěl bych se stát profesionálním pískačem. Už teď jsem v tom sice hvězda, ale chtěl bych se ještě zdokonalit a začít se tím živit.
GPUreport.cz
GPUreport.cz
- webwalker
- Začátečník
- Registrován: 03. úno 2010
- Bydliště: Buranov vedle Prahy
Re: Gadgeteering aneb zábava pro pořádné chlapy
Svítíme přes internet
Víme jak ovládat výstupy, jak připojit Spidera na počítačovou síť a máme připravenou třídu HttpServer pro komunikaci. Nezbývá tedy nic jiného, než si tyto tři věci spojit dohromady v jednom projektu a vytvořit "opravdový" gadget. V našem případě budeme chtít přes smartphone rozsvítit nějaké to světlo.
Budeme tedy potřebovat aby Spider po zapnutí prováděl následující:
1. Připojil se k počítačové síti a úspěšné připojení signalizovat zelenou Led v modulu multicolorLed (červenou pak neúspěšné připojení).
2. Nastartoval HttpServer a čekal na připojení nějakého klienta (browseru ve smartphone)
3. Pokud se klient přihlásí, odešle mu html stránku, která obsahuje ovládací tlačítko
4. Pokud klient stiskne tlačítko na html stránce, detekuje to a rozsvítí nebo zhasne světlo (v našem případě modrou Led v modulu multicolorLed)
5. Informuje klienta o zapnutí nebo vypnutí světla
Vytvoříme si tedy ten samý projekt jako minule, který bude obsahovat zapojení následujících modulů:
Do projektu si také přidáme soubor HttpServer.cs s naší třídou http serveru. Výsledný kód pak bude vypadat následovně:Prakticky celý kód už známe z minula, snad jen popsat událost server_ContextReceived:
1. Bylo-li něco posláno klientem přes POST, je třeba tato data pomocí streamu přečíst a uložit v bufferu, který je následně převeden na string.
2. Pokud tento string obsahoval název tlačítka "Button1" víme, že toto tlačítko bylo stisknuto.
3. Pokud bylo tlačítko stisknuto, rozsvítíme nebo zhasneme modrou Led diodu. Závisí to na tom, jestli už svítí nebo ne (multicolorLed1.GetCurrentColor().B == 255).
4. Vytvoříme html stránku v proměnné htmlContent, kde dynamicky dosadíme text do tlačítka Button1 z proměnné buttonText.
5. Na konec převedeme html stránku v proměnné htmlContent na byty a uložíme do argumentu e.DataResponse. Http sever se následně postará o odeslání těchto dat (html stránky) do prohlížeče klienta. Dynamicky generovaná html stránka vypadá takto:
Samozřejmě si můžete přidat ovládacích tlačítek podle libosti a ovládat každým něco jiného.
Pokud byste raději, než nějakou Led diodu, chtěli ovládat silové spotřebiče, použijete v projektu moduly jako:
Relay X1 Module
https://www.ghielectronics.com/catalog/product/464
nebo
Relay ISOx16 Module
https://www.ghielectronics.com/catalog/product/391
kde můžete ovládat až 16 relátek.
Po spuštění a zkompilování projektu se pomocí smartphonu můžeme k http serveru běžícímu na Spideru připojit pomocí browseru. Do adresy browseru napíšeme http://xxx.xxx.xxx.xxx (přidělená IP adresa DHCP serverem vaší sítě) a můžete světlo ovládat.
Pokud byste chtěli tento gadget ovládat zvnějška pomocí internetu, je zapotřebí:
1. Znát "venkovní" IP adresu vašeho primárního routeru (přidělenou ISP)
2. Na tomto routeru nastavit přesměrování portu služby (nejlépe 80) na ip adresu Spidera
Toť vše. Nyní můžete ovládat svůj gadget odkudkoli na světě
Tímto bych tady své příspěvky o NET Gadgeteer ukončil. Jako představení zajímavého produktu to imho stačilo a i když se jedná opravdu o velmi zajímavé věci, které se s NET Gadgeteer dají dělat, čtenost nebyla taková v jakou jsem doufal. Holt hry vládnou a o programování se moc lidí nezajímá, což je škoda. Bude-li čas a nálada, někdy se tu pochlubím svými hotovými gadgety.
Víme jak ovládat výstupy, jak připojit Spidera na počítačovou síť a máme připravenou třídu HttpServer pro komunikaci. Nezbývá tedy nic jiného, než si tyto tři věci spojit dohromady v jednom projektu a vytvořit "opravdový" gadget. V našem případě budeme chtít přes smartphone rozsvítit nějaké to světlo.
Budeme tedy potřebovat aby Spider po zapnutí prováděl následující:
1. Připojil se k počítačové síti a úspěšné připojení signalizovat zelenou Led v modulu multicolorLed (červenou pak neúspěšné připojení).
2. Nastartoval HttpServer a čekal na připojení nějakého klienta (browseru ve smartphone)
3. Pokud se klient přihlásí, odešle mu html stránku, která obsahuje ovládací tlačítko
4. Pokud klient stiskne tlačítko na html stránce, detekuje to a rozsvítí nebo zhasne světlo (v našem případě modrou Led v modulu multicolorLed)
5. Informuje klienta o zapnutí nebo vypnutí světla
Vytvoříme si tedy ten samý projekt jako minule, který bude obsahovat zapojení následujících modulů:
Do projektu si také přidáme soubor HttpServer.cs s naší třídou http serveru. Výsledný kód pak bude vypadat následovně:
Kód: Vybrat vše
public partial class Program
{
private const string _zapniText = "Zapni modrou Led"; // Text pro tlacitko na zapnuti
private const string _vypniText = "Vypni modrou Led"; // Text pro tlacitko na vypnuti
private string buttonText = _zapniText; // Promenna textu tlacitka
webwalkerTools.HttpServer server; // Deklarace HttpServeru (namespace webwalkerTools)
// This method is run when the mainboard is powered up or reset.
void ProgramStarted()
{
// Use Debug.Print to show messages in Visual Studio's "Output" window during debugging.
Debug.Print("Program Started");
// Pripoj se k siti
ethernet_J11D.NetworkUp += new GTM.Module.NetworkModule.NetworkEventHandler(ethernet_J11D_NetworkUp);
ethernet_J11D.NetworkDown += new GTM.Module.NetworkModule.NetworkEventHandler(ethernet_J11D_NetworkDown);
ethernet_J11D.UseDHCP(); // Nastav na automaticke pridelovani IP adresy
}
// Network down
void ethernet_J11D_NetworkDown(GTM.Module.NetworkModule sender, GTM.Module.NetworkModule.NetworkState state)
{
Debug.Print("Network down"); // Rozsvit multicolor Led do cervena
multicolorLed1.TurnRed();
}
// Network up
void ethernet_J11D_NetworkUp(GTM.Module.NetworkModule sender, GTM.Module.NetworkModule.NetworkState state)
{
Debug.Print("Network Up with IP " + sender.NetworkSettings.IPAddress);
multicolorLed1.TurnGreen(); // Rozsvit multicolor Led do zelena
// Iniciace HttpServeru
server = new webwalkerTools.HttpServer();
// Predplat si udalost pro prijem Request z klienta
server.ContextReceived += new webwalkerTools.HttpServer.ContextReceivedEventHandler(server_ContextReceived);
server.Start(); // Nastartuj server
}
// Obsluz Request klienta
void server_ContextReceived(object sender, webwalkerTools.HttpServer.HttpContextReceivedEventArgs e)
{
// Bylo neco poslano pres POST?
if (e.ReceivedContext.Request.HttpMethod == "POST")
{
byte[] requestData = new byte[e.ReceivedContext.Request.InputStream.Length]; // Buffer pro nacteni dat
e.ReceivedContext.Request.InputStream.Read(requestData, 0, requestData.Length); // Nacti data z Request
string request = new string(System.Text.Encoding.UTF8.GetChars(requestData)); // Preved bytes na string
// Bylo stiknuto tlacitko Button1?
if (request.IndexOf("Button1") != -1)
{
if (multicolorLed1.GetCurrentColor().B == 255) // Sviti uz modra Led?
{
multicolorLed1.RemoveBlue(); // Zhasni modrou Led
buttonText = _zapniText; // Text do tlacitka Button1
}
else
{
multicolorLed1.AddBlue(); // Zapni modrou Led
buttonText = _vypniText; // Text do tlacitka Button1
}
}
}
// html obsah pro klienta
string htmlContent = @"<html>
<head>
<title>Embended http server</title>
</head>
<body bgcolor=""#3399ff"">
<form method=""post"" action="""">
<h1 align=""center"" style=""border: 2px solid #FFFFFF; background-color: #66CCFF; height: 40px;"">Ovladaci panel FEZ Spider</h1>
<div align=""center"" style=""width: auto;"">
<input name=""Button1"" type=""submit"" value=""" + buttonText + @""" style=""margin-top: 50px; margin-bottom: 50px; width: auto; height: 100px; font-size: large; font-weight: bold;"" />
</div>
</form>
</body>
</html>";
e.DataResponse = System.Text.Encoding.UTF8.GetBytes(htmlContent); // Prevedeme na bytes
}
}
1. Bylo-li něco posláno klientem přes POST, je třeba tato data pomocí streamu přečíst a uložit v bufferu, který je následně převeden na string.
2. Pokud tento string obsahoval název tlačítka "Button1" víme, že toto tlačítko bylo stisknuto.
3. Pokud bylo tlačítko stisknuto, rozsvítíme nebo zhasneme modrou Led diodu. Závisí to na tom, jestli už svítí nebo ne (multicolorLed1.GetCurrentColor().B == 255).
4. Vytvoříme html stránku v proměnné htmlContent, kde dynamicky dosadíme text do tlačítka Button1 z proměnné buttonText.
5. Na konec převedeme html stránku v proměnné htmlContent na byty a uložíme do argumentu e.DataResponse. Http sever se následně postará o odeslání těchto dat (html stránky) do prohlížeče klienta. Dynamicky generovaná html stránka vypadá takto:
Samozřejmě si můžete přidat ovládacích tlačítek podle libosti a ovládat každým něco jiného.
Pokud byste raději, než nějakou Led diodu, chtěli ovládat silové spotřebiče, použijete v projektu moduly jako:
Relay X1 Module
https://www.ghielectronics.com/catalog/product/464
nebo
Relay ISOx16 Module
https://www.ghielectronics.com/catalog/product/391
kde můžete ovládat až 16 relátek.
Po spuštění a zkompilování projektu se pomocí smartphonu můžeme k http serveru běžícímu na Spideru připojit pomocí browseru. Do adresy browseru napíšeme http://xxx.xxx.xxx.xxx (přidělená IP adresa DHCP serverem vaší sítě) a můžete světlo ovládat.
Pokud byste chtěli tento gadget ovládat zvnějška pomocí internetu, je zapotřebí:
1. Znát "venkovní" IP adresu vašeho primárního routeru (přidělenou ISP)
2. Na tomto routeru nastavit přesměrování portu služby (nejlépe 80) na ip adresu Spidera
Toť vše. Nyní můžete ovládat svůj gadget odkudkoli na světě
Tímto bych tady své příspěvky o NET Gadgeteer ukončil. Jako představení zajímavého produktu to imho stačilo a i když se jedná opravdu o velmi zajímavé věci, které se s NET Gadgeteer dají dělat, čtenost nebyla taková v jakou jsem doufal. Holt hry vládnou a o programování se moc lidí nezajímá, což je škoda. Bude-li čas a nálada, někdy se tu pochlubím svými hotovými gadgety.
Chtěl bych se stát profesionálním pískačem. Už teď jsem v tom sice hvězda, ale chtěl bych se ještě zdokonalit a začít se tím živit.
GPUreport.cz
GPUreport.cz
- webwalker
- Začátečník
- Registrován: 03. úno 2010
- Bydliště: Buranov vedle Prahy
Re: Gadgeteering aneb zábava pro pořádné chlapy
Po delším čase zase trochu k hračičkování
Na Gadgeteering mi nyní moc času nezbývá, ale díky němu jsem se zase dostal k programování pro Windows Phone.
Chtěl jsem si totiž vytvořit univerzální "smarthphone" WiFi vysílačku, kterou bych mohl v budoucnu ovládat v reálném čase své gadgety založené na Arduino, Netduino a Gageteeru. Aplikace je prakticky hotová, jen jsem se ještě nedokopal ji zveřejnit v MS Store.
Jedná se o 10 kanálovou vysílačku, která vypadá nějak takto:
Podrobnější popis včetně videa z testování na PC najdete zde >>
Na Gadgeteering mi nyní moc času nezbývá, ale díky němu jsem se zase dostal k programování pro Windows Phone.
Chtěl jsem si totiž vytvořit univerzální "smarthphone" WiFi vysílačku, kterou bych mohl v budoucnu ovládat v reálném čase své gadgety založené na Arduino, Netduino a Gageteeru. Aplikace je prakticky hotová, jen jsem se ještě nedokopal ji zveřejnit v MS Store.
Jedná se o 10 kanálovou vysílačku, která vypadá nějak takto:
Podrobnější popis včetně videa z testování na PC najdete zde >>
Chtěl bych se stát profesionálním pískačem. Už teď jsem v tom sice hvězda, ale chtěl bych se ještě zdokonalit a začít se tím živit.
GPUreport.cz
GPUreport.cz
- Alfajk
- Začátečník
-
- Registrován: 15. kvě 2009
Re: Gadgeteering aneb zábava pro pořádné chlapy
hrajete si nekdo s raspberry? potreboval bych trochu navadet pri obsluze, spis nez o hardware se me jedna o software - retropie, najit si navod umim taky, ale chtel bych se spis zeptat "proc", abych pochopil souvislosti a funkcnost
CPU: AMD Ryzen 5 7600X@5,5GHz | GPU: ASUS TUF RTX 3070 GAMING 8GB@2000MHz | MB: ASUS PRIME X670-P WIFI | RAM: 32GB DDR5 6000MHz CL36 FURY EXPO | SSD: WD Black SN770 NVMe 2TB | PSU: Seasonic Focus GM-850 Gold | CPU Cooler: Noctua NH-D15 | Case: be quiet! Pure Base 500DX Black | OS: Win 10 Professional | Monitor: ASUS TUF Gaming VG27AQL1A
- L!po
- Začátečník
-
- Registrován: 21. říj 2006
- Bydliště: Dobrá Voda u Hořic, Jičín
- Kontaktovat uživatele:
Re: Gadgeteering aneb zábava pro pořádné chlapy
je to emulator starejch konzoli, kde ses chopnej pripojit jak nejaky retro ovladace/klony ale treba i x360 ovladace.. nebo co si mel na mysli?
PC: CPU: R7 7800X3D, (NOCTUA NH-D14 + offset mnt ), RAM:2x16GB 6GHz CL30 G.Skill TridentZ5, MB: ROG STRIX X670E-A GAMING WIFI, GPU: Gainward Phoenix RTX 3080Ti, SSD: Samsung 960 PRO 1TB + 970 Evo plus 2TB + 850 EVO 1TB + 2x 860 EVO 500GB, PSU: Seasonic Prime GX-750W, Case: Corsair Obsidian 750D, Dell AW3418DW, Logitech G11 + MX518
- Alfajk
- Začátečník
-
- Registrován: 15. kvě 2009
Re: Gadgeteering aneb zábava pro pořádné chlapy
snazim se rozbehnout emulator amigy, ale nedari se, mam hru Genetic Species jako image (cca 700MB), ale nedari se ji natahnout do raspbery pres flashku a ani se nijak nezobrazi v emulacich - je to image a podle informaci to podporuje jen adf jako disketky, da se s tim neco udelat?
CPU: AMD Ryzen 5 7600X@5,5GHz | GPU: ASUS TUF RTX 3070 GAMING 8GB@2000MHz | MB: ASUS PRIME X670-P WIFI | RAM: 32GB DDR5 6000MHz CL36 FURY EXPO | SSD: WD Black SN770 NVMe 2TB | PSU: Seasonic Focus GM-850 Gold | CPU Cooler: Noctua NH-D15 | Case: be quiet! Pure Base 500DX Black | OS: Win 10 Professional | Monitor: ASUS TUF Gaming VG27AQL1A
- L!po
- Začátečník
-
- Registrován: 21. říj 2006
- Bydliště: Dobrá Voda u Hořic, Jičín
- Kontaktovat uživatele:
Re: Gadgeteering aneb zábava pro pořádné chlapy
netusim co to vsechno podporuje nebo ne.. asi bych se podival, kde se to da sehnat v pouzitelnejsim formatu pro tyhle ucely.. predpokladam ze vsechny ty navody jak tam nahrat image jsi zkousel.. ja mel predtim nejaky stranky, kde byla spousta her ale tedka uz sem to znova nenasel...
PC: CPU: R7 7800X3D, (NOCTUA NH-D14 + offset mnt ), RAM:2x16GB 6GHz CL30 G.Skill TridentZ5, MB: ROG STRIX X670E-A GAMING WIFI, GPU: Gainward Phoenix RTX 3080Ti, SSD: Samsung 960 PRO 1TB + 970 Evo plus 2TB + 850 EVO 1TB + 2x 860 EVO 500GB, PSU: Seasonic Prime GX-750W, Case: Corsair Obsidian 750D, Dell AW3418DW, Logitech G11 + MX518