Toto je starší verze dokumentu!
Obsah
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.
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 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 Processing k kterému existují dva hlavní programovací nástroje pro mikrokontroléry.
Arduino IDE
Konstrukci s LABduinem, lze programovat klasickym nastrojem 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.
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éž volně ke stažení i 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 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 UNO
Tato realizace arduina je stejná jako Arduino UNO, které využívá mikrokontrolér ATmega328P.
Klasicky se LABduino skládá ze dvou modulů USB232R01B a 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 DTR# 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).
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 FT232 v modulu USB232R01B je tak odolnější proti závadě vzniklé poškozením firmwaru v MCU, který umožňuje komunikaci přes USB.
LABduino ports mapping
Aruino | 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 |
Nahrani bootloaderu
Vybraný firmware lze nahrát do mikroprocesoru programátorem ATprogISPUSB02A v SVN repositáři MLABu je k dispozici nahrávací skript (svnMLAB/Designs/LABduino/SW/bootloader/flash.sh) a firmware kompatibilní s Arduino Duemilanove. Je doporučeno jej použít k nahrání firmware místo nástroje přímo v Arduinu IDE nebo Wiringu.
Linux
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 avr_programming.
Windows
Příklad pro modul ATmegaTQ3201A s procesorem ATmega328P a 16MHz krystalem
- Bootloader je umístěn v MLAB svn: http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=%2FDesigns%2FLABduino%2FSW%2Fbootloader%2F#_Designs_LABduino_SW_bootloader_
- K nahrání do procesoru je možné využít program AVRdude, který je ke stažení na: http://sourceforge.net/projects/winavr/
- 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. Ukázka zápisu příkazu pro uložení souboru přímo na diskové jednotce E.
- 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říklady použití
- Spektrograf - elektronika pro spektrograf využívající LABduino.
- Luxmetr - Přístroj pro měření intenzity osvětlení za znamenající údaje na SD kartu.
- aws - Vyčítání meteorologických čidel s binárními nebo analogovými výstupy.
Příklad zapojení LABduino a LCD
Jednoduchý příklad zapojení modulů 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
Labduino - Mega 2560
Tato varianta Arduina využívá mikrokontroler ATMEGA2560-16AU, který má ve stavebnici MLAB modul ATmegaTQ10001A a Arduino MEGA 2560 proto může být ze stavebnice sestaveno obdobným způsobem.
Příklady použití
- 3dprint - řízení krokových motorů varianty klasické RepRap tiskárny.