Přejít k navigační liště

Zdroják » Různé » Představujeme Arduino kompatibilní

Představujeme Arduino kompatibilní

Články Různé

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.

Nálepky:

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…

Komentáře

Subscribe
Upozornit na
guest
5 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
segedacz

V šlánku asi mělo být V článku

crawlerdev

Zajimave jsou take desky Seeduino. Pouzil jsem Seeduino Stalker coz je Arduino compatible, 328 deska s RTC, Bee konektorem, MicroSD, Lipol managementem.

Pro logovani (v mem pripade jsem tam mel napojeno 8 ks 1-wire Dallas teplomeru umistenych v UTP zasuvkach po dome) pekna desticka.

segedacz

Kromě Arduino Yún mám doma ještě Digispark a SquareWear v2.1

Dalimago

Jsem vyslouzily ajtak s pc. V duchodu mam furu casu a tak si hraji s arduinem 328 atmega. To by slo, ale chci vyrobit anaprogramovat 328 pro hlidani a krmeni slepic na zahradce,otvirani, zavirani, voda, krmeni, voda, teplota, vychod a zapad slunce, pocet slepic v kurniku atd. Zastavil jsem se na klonovani arduina, io za 103,-kc, program vyladim, plosnej spoj navrhnu, vyrobim, odvrtam, zdroje navrhnu se solarnim dobijenim (nechci tahat kabel 100m po zahrade), pro pet slepic, casem wifi nebo sms. Porad jak udelat klon arduino duemilanove mam, atmel 328, program funguje, akorat na desce chci mit pouze nezbytne soucastky: 328, krystal, kondy,stabilizator 7805,a nekolik cidel a vykonove nejlevnejsi buz70. Pak servomotory a to vse umim, akorat duplikovat 328 mi zatim nejak nejde. Za radu dam odladeny soft na skepice. Dik Dalibor.

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.