Představujeme Arduino kompatibilní

Arduino je asi nejpopulárnější platforma pro, nejen, domácí bastlení různých udělátek a hraček. Díky své oblíbenosti a otevřenosti se dočkala celé řady klonů a kompatibilních výrobků. V článku se budeme věnovat jen vývojovým deskám.

Co je to Arduino kompatibilní?

Na Arduino je asi nejznámější jeho rozmístění pinů pro rozšiřující desky, shields, které nedodržuje standardní rastr pro plošné spoje. Někdo tvrdí, že je to ochrana před chybným zapojením rozšiřující desky, někdo tvrdí, že to byl omyl, který již nešlo vzít zpět kvůli kompatibilitě. Na Maker Fair 2013 v Římě, kde jsem přednášel, jsem byl představen jednomu ze spoluautorů Arduino Massimu Banzimu, takže se spíš přikláním k té chybě :-) V článku se budu věnovat jen klasickým deskám Arduino. Nebudu se věnovat variantám Mini, Mikro, Nano, Fio, …

Na kompatibilitu s Arduino se můžeme podívat z několika směrů. Jednak jsou to vývojové desky, které mají stejné rozmístění pinů, jako Arduino, ale nemusejí se programovat stejně, nebo jsou to desky, které se programují jako Arduino, ale pinově kompatibilní nejsou.

Jen pro představu, co všechno pro vás dělá Arduino. Následující kód je blikání LED na mikrokontrolérech AVR:

#include <avr/io.h>
#include <util/delay.h>

int main(void) {
  DDRB |= (1 << PB0);

  while (1) {
    PORTB = 0b00000001; 
    _delay_ms(1000); 

    PORTB = 0b00000000;
    _delay_ms(1000); 
  }
  return (0);
}

Klony Arduino

Arduino je Open Hardware platforma, takže vznikla celá řada klonů, které vychází z originálního návrhu a případně ho lehce upravují. Tyto klony jsou funkčně identické s originálním Arduino včetně toho, jak se programují pomocí Arduino IDE. Na Deal Extreme lze sehnat celou řadu klonů různých výrobců. Klon Arduino UNO se dá sehnat do 200 Kč. Z klonů jsem zkoušel jen DCCduino ATMEGA328 Development Board for Arduino UNO R3 a funguje to. Nedělal jsem samozřejmě žádné sofistikované testy, jen jsem to použil na výrobu Kanárka.

image1

Arduino pinově kompatibilní

Existuje celá řada desek, které jsou pinově kompatibilní s Arduino, kvůli snadné dostupnosti obrovského množství rozšiřujících desek, shields, ale které se programují jinak, bez využití Arduino IDE. Tyto desky také typicky využívají jiné typy procesorů.

Projekt mbed

Asi nejznámější a nejvíce rozšířený projekt, který ve velké míře využívá desek pinově kompatibilních s Arduino je projekt mbed, za kterým stojí společnost ARM. Projekt mbed je velmi podobný projektu Arduino. Programátor se nemusí zabývat detaily implementace aplikace pro konkrétní hardware, ale používá knihovny na vyšší úrovni. Projekt mbed je zaměřen na procesory z rodiny ARM Cortex. Malá ukázka HW Hello World, tedy blikání LED pro procesor s jádrem ARM Cortex M4 (TM4C123GH6PMI, Texas Instruments):

#define GPIO_PORTF_DATA_R       (*((volatile unsigned long *)0x400253FC))
#define GPIO_PORTF_DIR_R        (*((volatile unsigned long *)0x40025400))
#define GPIO_PORTF_AFSEL_R      (*((volatile unsigned long *)0x40025420))
#define GPIO_PORTF_PUR_R        (*((volatile unsigned long *)0x40025510))
#define GPIO_PORTF_DEN_R        (*((volatile unsigned long *)0x4002551C))
#define GPIO_PORTF_LOCK_R       (*((volatile unsigned long *)0x40025520))
#define GPIO_PORTF_CR_R         (*((volatile unsigned long *)0x40025524))
#define GPIO_PORTF_AMSEL_R      (*((volatile unsigned long *)0x40025528))
#define GPIO_PORTF_PCTL_R       (*((volatile unsigned long *)0x4002552C))
#define SYSCTL_RCGC2_R          (*((volatile unsigned long *)0x400FE108))

#define LED 0x08

unsigned long Out;

void PortF_Init(void);
void Delay(void);
void EnableInterrupts(void);

int main(void){    
  PortF_Init();
  while(1){
    GPIO_PORTF_DATA_R = LED;
    Delay();
    GPIO_PORTF_DATA_R = 0x00;
    Delay();
  }
}

void PortF_Init(void){ 
  volatile unsigned long delay;
  SYSCTL_RCGC2_R |= 0x00000020;
  delay = SYSCTL_RCGC2_R;   
  GPIO_PORTF_LOCK_R = 0x4C4F434B;
  GPIO_PORTF_CR_R = LED;
  GPIO_PORTF_AMSEL_R = 0x00;
  GPIO_PORTF_PCTL_R = 0x00;
  GPIO_PORTF_DIR_R = LED;
  GPIO_PORTF_AFSEL_R = 0x00;
  GPIO_PORTF_DEN_R = LED;
}

void Delay(void){unsigned long volatile time;
  time = 727240*200/91;
  while(time){
    time--;
  }
}

Od tohoto jste s vyžitím mbed odstíněni a můžete používat funkce na vyšších úrovních:

#include "mbed.h"

DigitalOut led(D5);

int main() {
    while(1) {
        led = 1;
        wait(0.2);
        led = 0;
        wait(0.2);
    }
}

Pro desky využívající systém mbed je k dispozici online editor a kompilátor. Zkompilovaný kód si stáhnete k sobě do počítače a pak nahrajete na vývojovou desku, která se po připojení k počítači chová jako další disk.

image2

Pokus vám nevyhovuje on-line editor, tak je možné projekt exportovat do dalších vývojových prostředí pro ARM procesory.

image3

Desek, které jsou pinově kompatibilní s Arduino a podporují mbed je k dispozici již velmi hodně. Cenově jsou tyto desky velmi často levnější než originální Arduino a poskytují více možností. Nejčastěji nakupuji u společnosti Farnell. Doprava do ČR stojí cca 130 Kč. Pozor, ceny jsou uvedeny bez DPH.

image4

.NET Micro Framework

.NET Micro Framework je pro mě srdcová záležitost. Bylo to pro mě první setkání s mikrokontroléry a díky možnostem programování a ladění aplikací, které využívá Visual Studio, je to podle mého názoru platforma, pro kterou se nejsnadněji programuje bez speciálního vybavení. Stačí připojit libovolnou desku pomocí USB, UART nebo TCP/IP a funguje programování mikrokontroléru včetně ladění. Asi nejznámější je deska Netduino. Pro mě byla nejzásadnější deska FEZ Panda II. Byla to nejlepší, s čím jsem z rodiny Arduino kompatibilní pracoval (první deska zleva).

image5

Bohužel podpora výrobců je velmi malá a desek, které jsou Arduino kompatibilní, ubývá. Výrobci, jako GHI Electronics, se zaměřují spíše na průmyslové moduly nebo .NET Gadgeteer. To je důvod, proč jsem tuto platformu opustil.

pcDuino a Intel Galileo

pcDuino je deska, která má na sobě Arduino konektory, ale je poháněna Linuxem. Je to takové Raspberry Pi s Arduino piny. Na obrázku je druhá verze.

image6

Intel Galileo je velmi podobná deska, kterou lze programovat pomocí Arduino IDE. Tato deska má Arduino konektor a je poháněna „velkým“ operačním systémem. Pro Intel Galileo existuje, kromě Linuxu, i verze Windows. Je to jediná deska z kategorie „pinově kompatibilní“, která není poháněna mikrokontrolérem s architekturou ARM.

image7

Arduino IDE kompatibilní

Aktuální verze Arduino IDE přišla s možností rozšiřování o další HW platformy. Asi první vlaštovkou je rozšíření pro Wi-Fi moduly ESP2866.

TI LaunchPad a Energia

TI LaunchPad je řada vývojových desek pro mikrokontroléry společnosti Texas Instruments. Pro tyto desky byl vytvořen projekt Energia, který umožňuje vytvářet aplikace stejným způsobem, jako se programuje pro Arduino.

image8

Na dalším obrázku jsou dvě vývojové desky a jeden rozšiřující modul (Wi-Fi). Vývojové desky z rodiny LaunchPad jsou cenově velmi výhodné. Je vidět, že společnost Texas Instruments neživí tvorba vývojových desek, ale potřebuje co nejvíce lidí, kteří budou používat jejich čipy. Mají také propracovaný program podpory škol.

image9

Závěr

Arduino jednoznačně změnilo svět mikrokontrolérů. Určitě jsem zde nepopsal všechny Arduino kompatibilní platformy. Popsal jsem jen ty, s kterými jsem přišel do styku a měl jsem možnost na nich vyzkoušet alespoň blikání LED. Budu jen rád, pokud do komentářů přidáte další platformy, které jsou Arduino kompatibilní. A prosím, držte se v diskuzi tématu…

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 5

Přehled komentářů

segedacz Typo
crawlerdev Seeduino
Štěpán Bechynský Re: Seeduino
segedacz Digispark a SquareWear
Dalimago slepice
Zdroj: https://www.zdrojak.cz/?p=14727