Uživatelské nástroje

Nástroje pro tento web


cs:labduino

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.


Předchozí verze
cs:labduino [2023/12/21 16:43] (aktuální) – [LABduino MightyCore] kaklik
Řádek 1: Řádek 1:
 +====== Klon Arduina postavený z MLABu - LABduino ======
  
 +Protože Arduino není nic jiného, než mikrokontroler AVR případně ARM s nahraným specifickým bootloaderem, který umožňuje komunikaci s programátorským IDE rozhraním. Tak lze tuto konstrukci stejně jako mnoho jiných postavit ze stavebnice MLAB. 
 +
 +{{:labduino_isl2920.jpg?direct&300|Ukázka složeného LABduina}}
 +
 +Můžeme tak vytvořit s Arduinem plně elektricky a pragramově kompatibilní zařízení postavené z modulů MLAB. Lze jej programovat v prostředích určených pro Arduino a využívajících jazyk [[http://processing.org/|Processing]]. Další moduly a rozšíření pak mohou být používány stejně, jako je ve stavebnici MLAB zvykem.
 +
 +===== Programovací nástroje =====
 +
 +Programy pro Arduino jsou obvykle psané v jednoduchém jazyku [[https://processing.org/|Processing]] k kterému existují dva hlavní programovací nástroje pro mikrokontroléry. 
 +
 +==== Arduino IDE ====
 +
 +Konstrukci s LABduinem, lze programovat klasickym nastrojem [[http://arduino.cc/en/Main/Software|Volne dostupnym ke stazeni]]. Arduino IDE je však nástroj vytvořený přímo pro Arduino a neliberálně nepodporuje některé další vlastnosti Arduino klonů. Je proto vhodnější používat vývojové prostředí Wiring, které obsahuje přímo nastavení pro MLAB konstrukci. 
 +
 +  sudo apt-get install arduino
 +==== Wiring ====
 +
 +Wiring je otevřenější nástroj pro práci s Arduinem/LABduinem, který obsahuje více základních knihoven a podporuje méně obvyklé konfigurace hardwaru a volby rychlostí krystalů.
 +Je taktéž [[http://wiring.org.co/download/|volně ke stažení]] i [[https://github.com/WiringProject/Wiring|včetně zdrojových kódů]].  K nahrávání přeloženého programu do procesoru používá identický bootloader, který komunikuje s počítačem přes [[cs:usb232r|sériové rozhraní]] jako Arduino. 
 +
 +Od listopadu 2012 je v poslední vývojové verzi Wiringu na githubu LABduino přímo podporováno.  
 +
 +=== Instalace Wiringu v Ubuntu ===
 +
 +Pod Ubuntu 14.04 a ve vyšších verzích lze Wiring snadno přeložit ze zdrojového kódu přímo v příkazové řádce. Nejprve nainstalujeme potřebné nástroje:
 +
 +  sudo apt-get install ant git default-jdk librxtx-java
 +
 +V nových verzích processingu není plně podporována OpenJAVA.  Proto je v případě požadavku na bezproblémovou funčnost nainstalovat Oracle JAVA. Což uděláme následovně: 
 +
 +  sudo add-apt-repository ppa:webupd8team/java
 +  sudo apt-get update
 +  sudo apt-get install oracle-java7-installer
 +  
 +Následně stáhneme nejnovější verzi Wiringu přímo z GitHubu.
 +  
 +  git clone git://github.com/WiringProject/Wiring.git
 +  
 +Přepneme se do složky se staženými soubory
 +  
 +  cd Wiring
 +
 +Spustíme vývojové prostředí.
 +
 +  ant
 +  
 +A spustíme Wiring IDE
 +
 +  ant run 
 +
 +===== LABduino Duemilanove =====
 +
 +Tato realizace arduina je stejná jako Arduino Duemilanove, které využívá mikrokontrolér ATmega328P. 
 +
 +Klasicky se LABduino skládá ze dvou modulů [[cs:usb232r|USB232R01B]] a [[cs:atmegatq32|ATmegaTQ3201A]] osazený mikroprocesorem ATmega328 tak že signály TXD a RXD se přivedou kablíky na RX a TX (křížené spojení) a řídící signál RTS# od modulu USB232R01B se přivede na jumper označený jako boot (aktivuje bootloader). 
 +Napájení modulu ATmegaTQ3201A je obvykle řešeno přímo z USB (připojením napájecího kablíku).  
 +
 +{{:cs:labduino_sdcard.jpg?direct&200|LABduino a SDcard modul}}
 +
 +V této konfiguraci tedy hardwarově odpovídá Arduinu Duemilanove s ATmega328. Na rozdíl od nových verzí Arduina však pro komunikaci s USB nepoužívá ATmega s firmwarem emulujícím sériovou linku, ale převodník [[http://www.ftdichip.com/Products/ICs/FT232R.htm|FT232]] v modulu [[cs:usb232r|USB232R01B]] je tak odolnější proti závadě vzniklé poškozením firmwaru v MCU, který umožňuje komunikaci přes USB.
 +
 +==== Nahrani bootloaderu ====
 +
 +Vybraný firmware lze nahrát do mikroprocesoru programátorem  [[cs:atprogispusb|ATprogISPUSB02A]] v [[https://github.com/MLAB-project/LABduino/tree/master/SW/bootloader|repositáři]] MLABu je k dispozici nahrávací skript a bootloader kompatibilní s Arduino Duemilanove.  Doporučujeme jej použít k nahrání firmware místo nástroje přímo v Arduinu IDE nebo Wiringu.  
 +
 +=== Linux ===
 +
 +Instalace avrdude
 +  sudo apt-get install avrdude
 +
 +Nahrávací skript spustíme například následovně: 
 +  sudo ./flash.sh /dev/ttyUSB0
 +
 +
 +Správný výstup po zapsání firmware do MCU vypadá takto: 
 +
 +  avrdude: erasing chip
 +  avrdude: reading input file "ATmegaBOOT_168_atmega328.hex"
 +  avrdude: input file ATmegaBOOT_168_atmega328.hex auto detected as Intel Hex
 +  avrdude: writing flash (32670 bytes):
 +  
 +  Writing | ################################################## | 100% 20.50s
 +  
 +  avrdude: 32670 bytes of flash written
 +  avrdude: verifying flash memory against ATmegaBOOT_168_atmega328.hex:
 +  avrdude: load data flash data from input file ATmegaBOOT_168_atmega328.hex:
 +  avrdude: input file ATmegaBOOT_168_atmega328.hex auto detected as Intel Hex
 +  avrdude: input file ATmegaBOOT_168_atmega328.hex contains 32670 bytes
 +  avrdude: reading on-chip flash data:
 +  
 +  Reading | ################################################## | 100% 334.94s
 +  
 +  avrdude: verifying ...
 +  avrdude: 32670 bytes of flash verified
 +  
 +  avrdude: safemode: Fuses OK
 +  
 +  avrdude done.  Thank you.
 +  
 +K fungování skriptu je potřeba mít nainstalovanou správnou verzi programu avrdude. Podrobnosti viz [[cs:avr_programming]].
 +
 +=== Windows ===
 +
 +Příklad pro modul ATmegaTQ3201A s procesorem ATmega328P a 16MHz krystalem
 +  - Bootloader je umístěn v [[https://github.com/MLAB-project/LABduino/tree/master/SW/bootloader|MLAB repozitáři]].
 +  - K nahrání do procesoru je možné využít program [[http://sourceforge.net/projects/winavr/|AVRdude]]
 +    - Návod [[http://www.ladyada.net/learn/avr/setup-win.html| na instalaci]]
 +    - [[ http://www.ladyada.net/learn/avr/avrdude.html| Návod k použití avrdude]]
 +  - Nahrání bootloaderu se provede v operačním systému Windows programem AVRdude přes příkazový řádek.
 +  - Nejprve je dobré zjistit, že se AVRdude nainstaloval dobře. Stačí v příkazové řádce napsat avrdude a stisknout enter. Na obrazovce se zobrazí options.
 +  - K nahrání je potřeba modul ATprogISPUSB02A propojit s modulem ATmegTQ3201A (napájení a ISP kabel).
 +  - Nejprve se musí nastavit pojistky procesoru. V příkazové je potřeba zadat tento příkaz:
 +    - ''avrdude -F -p atmega328P -P COM17 -c stk500v2 -B 50 -v -U efuse:w:0x05:m -U lfuse:w:0xff:m -U hfuse:w:0xda:m''
 +    - Na místo COM17 je potřeba doplnit aktuální port v daném počítači. Možno dohledat ve správci zařízení ve WIN.
 +  - Druhým příkazem je potřeba nahrát ATmegaBOOT_168_atmega328.hex
 +    - ''avrdude -F -p atmega328P -P COM17 -c stk500v2 -B 50 -U flash:w:ATmegaBOOT_168_atmega328.hex:a''
 +    - Příkaz je potřeba zadávat v příkazové řádce ve složce, kde je ATmegaBOOT_168_atmega328.hex uložen. 
 +  - Následně by se měl bootloader nahrát do procesoru a proběhne kontrola zápisu.
 +  - Nyní stačí modul ATmegaTQ3201A propojit s modulem USB232R01B a je LABduino připraveno.
 +
 +=== Připojení na USB ===
 +
 +''USB232R01B/RXD => ATmegaTQ3201A/PD1''
 +
 +''USB232R01B/TXD => ATmegaTQ3201A/PD0''
 +
 +''USB232R01B/RTS# => ATmegaTQ3201A/boot''
 +
 +''USB232R01B/VCCIO SEL => 5V''
 +
 +
 +===== Arduino porty na LABduinu =====
 +
 +^Arduino ^ATmega8DIL01A ^Note ^
 +|D0 |RXD |PD0, if you disconnect USB232R01B|
 +|D1 |TXD |PD1, if you disconnect USB232R01B|
 +|D2 |PD2| Digital I/Os.|
 +|D3/PWM |PD3|:::|
 +|D4 |PD4|:::|
 +|D5/PWM |PD5|:::|
 +|D6/PWM |PD6|:::|
 +|D7 |PD7|:::|
 +|D8 |PB0|:::|
 +|D9/PWM |PB1|:::|
 +|D10/PWM |PB2|:::|
 +|D11/PWM |PB3|:::|
 +|D12 |PB4|:::|
 +|D13 |PB5|:::|
 +|A0 |PC0 |Analog inputs.|
 +|A1 |PC1 |:::|
 +|A2 |PC2 |:::|
 +|A3 |PC3 |:::|
 +|A4 |PC4 |:::|
 +|A5 |PC5 |:::|
 +
 +
 +===== LABduino MightyCore =====
 +Realizace s procesorem ATmega1284P. [[https://github.com/MCUdude/MightyCore|Označení vývodů a postup instalace do Arduino IDE]]
 + 
 +Nastavení pojistek: 
 +
 +''avrdude -v -patmega1284p -cstk500 -P /dev/ttyUSB1 -e -Ulock:w:0xff:m -Uefuse:w:0xff:m -Uhfuse:w:0b11010110:m -Ulfuse:w:0xf7:m''
 +====== Příklad zapojení LABduino a LCD ======
 +
 +Jednoduchý příklad zapojení modulů [[cs:lcd2l4p|LCD2L4P02A]], ATmegaTQ3201A a USB232R01B.
 +
 +=== Propojení modulů ===
 +
 +== Napájení ==
 +
 +''USB232R01B/POWER OUT => ATmegaTQ3201A/POWER''
 +
 +''ATmegaTQ3201A/POWER => LCD2L4P02A/POWER''
 +
 +== LCD display ==
 +
 +''LCD2L4P02A/RS => ATmegaTQ3201A/PB4''
 +
 +''LCD2L4P02A/RW => ATmegaTQ3201A/J4''
 +
 +''LCD2L4P02A/E => ATmegaTQ3201A/PB3''
 +
 +''LCD2L4P02A/D0 => ATmegaTQ3201A/PD5''
 +
 +''LCD2L4P02A/D1 => ATmegaTQ3201A/PD4''
 +
 +''LCD2L4P02A/D2 => ATmegaTQ3201A/PD3''
 +
 +''LCD2L4P02A/D3 => ATmegaTQ3201A/PD2''
 +
 +== Pípák ==
 +
 +''LCD2L4P02A/BEEP => ATmegaTQ3201A/PB0''
 +
 +== Tlačítka ==
 +
 +''LCD2L4P02A/S1 => ATmegaTQ3201A/PB1''
 +
 +''LCD2L4P02A/S2 => ATmegaTQ3201A/PB2''
 +
 +''LCD2L4P02A/S3 => ATmegaTQ3201A/PD6''
 +
 +''LCD2L4P02A/S4 => ATmegaTQ3201A/PD7''
 +
 +''LCD2L4P02A/J9 => osadit všechny jumpery''
 +
 +''LCD2L4P02A/CONTRAST SELECT => jumper smerem k trimru''
 +
 +== Interface to PC ==
 +
 +''USB232R01B/RX => ATmegaTQ3201A/PD1''
 +
 +''USB232R01B/TX => ATmegaTQ3201A/PD0''
 +
 +''USB232R01B/RTS# => ATmegaTQ3201A/boot''
 +
 +''USB232R01B/VCCIO SEL => 5V''
 +
 +=== Program ===
 +
 +[[http://www.mlab.cz/WebSVN/filedetails.php?repname=MLAB&path=%2FDesigns%2FLABduino%2FSW%2Fdemos%2FHelloMLAB%2FHelloMLAB.ino|Code Example]]
 +
 +===== Dalsi příklady použití =====
 +
 +  * [[cs:spectrograph|Spektrograf]] - elektronika pro spektrograf využívající LABduino.
 +  * [[cs:luxmetrsd|Luxmetr]] - Přístroj pro měření intenzity osvětlení za znamenající údaje na SD kartu.
 +  * [[cs:aws]] - Vyčítání meteorologických čidel s binárními nebo analogovými výstupy.
 +
 +===== Labduino - Mega 2560 =====
 +
 +Tato varianta Arduina využívá mikrokontroler [[http://www.atmel.com/devices/atmega2560.aspx|ATMEGA2560-16AU]], který má ve stavebnici MLAB modul [[cs:atmegatq100|ATmegaTQ10001A]] a Arduino MEGA 2560 proto může být ze stavebnice sestaveno obdobným způsobem. 
 +
 +==== Příklady použití ====
 +
 +  * [[cs:designs:3dprint]] -  řízení krokových motorů varianty klasické RepRap tiskárny.
 +
 +
 +===== Reference =====
 +
 +  * [[http://www.i2cdevlib.com/|Knihovny ovladačů I2C pro Arduino.]]