Table of Contents

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.

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 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.

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éž 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 Duemilanove

Tato realizace arduina je stejná jako Arduino Duemilanove, 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 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).

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 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.

Nahrani bootloaderu

Vybraný firmware lze nahrát do mikroprocesoru programátorem ATprogISPUSB02A v 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 avr_programming.

Windows

Příklad pro modul ATmegaTQ3201A s procesorem ATmega328P a 16MHz krystalem

  1. Bootloader je umístěn v MLAB repozitáři.
  2. K nahrání do procesoru je možné využít program AVRdude
  3. Nahrání bootloaderu se provede v operačním systému Windows programem AVRdude přes příkazový řádek.
  4. 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.
  5. K nahrání je potřeba modul ATprogISPUSB02A propojit s modulem ATmegTQ3201A (napájení a ISP kabel).
  6. Nejprve se musí nastavit pojistky procesoru. V příkazové je potřeba zadat tento příkaz:
    1. 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
    2. 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.
  7. Druhým příkazem je potřeba nahrát ATmegaBOOT_168_atmega328.hex
    1. avrdude -F -p atmega328P -P COM17 -c stk500v2 -B 50 -U flash:w:ATmegaBOOT_168_atmega328.hex:a
    2. Příkaz je potřeba zadávat v příkazové řádce ve složce, kde je ATmegaBOOT_168_atmega328.hex uložen.
  8. Následně by se měl bootloader nahrát do procesoru a proběhne kontrola zápisu.
  9. 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. 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ů 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

Code Example

Dalsi příklady použití

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í

Reference