MODKIT – Programovanie Arduina bez znalosti kódu

Modkit logoRozmýšlali ste niekedy, že načo je vlastne programovací jazyk? Nebolo by lepšie, ak by ste mohli zariadeniu zadávať priamo čo má robiť a on by to pre Vás prekladal do kódu? Práve s takouto myšlienkou prišli páni z MODKIT-u. K vytvoreniu funkčného kódu Vám stačí drag&drop systém modulov, ktoré su ľahko zrozumitelné. Projekt je momentálne vo fáze vývoja, presnejšie vo fáze “Alpha” ako uvádzajú na hlavnej stránke alebo “Beta” ako uvádzajú v samotnom editore :-) . Asi najlepším príkladom bude ukážka, o čo sa vlastne jedná.

Modkit prostredie

V menu na ľavej strane sú k dispozícii možné operácie, ktoré stačí pretiahnúť do akejsi stromovej štruktúry v pracovnej časti okna. Programovanie týmto spôsobom si môžete vyskúšať na tejto adrese http://www.modk.it/editor/preview/. Tvorcovia softwaru sľubujú plnú kompatibilitu s Arduinom, to znamená napríklad automatickú detekciu verzie dosky po pripojení. Na všetko si treba samozrejme ešte určitý čas počkať, kým sa projekt dostane do finálnej podoby.

Modkit má byť plne kompatibilný s arduinom

Arduino teplomer s DS18B20

ds18b20 senzor a Arduino

V predchádzajúcom článku sme si predstavili zbernicu 1-wire, po ktorej mnohé zariadenia komunikujú. Dnes si pripojíme snímač teploty DS18B20. V tomto príklade použijeme len jeden snímač, ale pripojiť ich možme hneď niekoľko bez väčších zmien v kóde. Datasheet a popis pinov DS18B20 nájdete tu. V jednoduchosti nám stačí pripojiť pin 1 na ZEM (-), pin 2 na Arduino pin 6, pin 3 na +5V. Ešte je potrebné doplniť 4.7k rezistor medzi pin 2 a 3 snímača.

Ako prvý nasleduje kód, ktorý nám vyhladá všetky 1-wire zariadenia pripojené na zbernici. Následne vypíše ich unikátne adresy, ktoré si poznačíme a použijeme ich v ďalšom kóde ako identifikátor nášho teplotného čidla. Nezabudnite si doplniť knižnice pre 1-wire zbernicu:

// Zdroj: http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html

#include <OneWire.h>

OneWire  ds(6);  // DS18B20 pripojime na pin 6

void setup(void) {
  Serial.begin(9600);
  discoverOneWireDevices();
}

void discoverOneWireDevices(void) {
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];

  Serial.print("Hladam 1-Wire zariadenia...\n\r");
  while(ds.search(addr)) {
    Serial.print("\n\rNajdene \'1-Wire\' zariadenia a ich adresa:\n\r");
    for( i = 0; i < 8; i++) {
      Serial.print("0x");
      if (addr[i] < 16) {
        Serial.print('0');
      }
      Serial.print(addr[i], HEX);
      if (i < 7) {
        Serial.print(", ");
      }
    }
    if ( OneWire::crc8( addr, 7) != addr[7]) {
        Serial.print("CRC nieje spravne!\n");
        return;
    }
  }
  Serial.print("\n\r\n\rKoniec.\r\n");
  ds.reset_search();
  return;
}

void loop(void) {
  // nothing to see here
}

1-wire hladac adries

Tu už nasleduje samotný kód teplomeru, ktorý vypisuje aktuálnu teplotu na seriálovú konzolu (ako je zobrazené na prvom obrázku).

// Zdroj: http://www.hacktronics.com/Tutorials/arduino-1-wire-tutorial.html

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 6

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

DeviceAddress insideThermometer = { 0x28, 0xAA, 0x08, 0x03, 0x03, 0x00, 0x00, 0xDF };
DeviceAddress outsideThermometer = { 0x28, 0x6B, 0xDF, 0xDF, 0x02, 0x00, 0x00, 0xC0 };
DeviceAddress dogHouseThermometer = { 0x28, 0x59, 0xBE, 0xDF, 0x02, 0x00, 0x00, 0x9F };

void setup(void)
{
  // teplota sa bude zobrazovat na seriovej konzole
  Serial.begin(9600);
  // Start kniznice
  sensors.begin();
  // Nastavenie rozlisenia na 10 bitov
  sensors.setResolution(insideThermometer, 10);
  sensors.setResolution(outsideThermometer, 10);
  sensors.setResolution(dogHouseThermometer, 10);
}

void printTemperature(DeviceAddress deviceAddress)
{
  float tempC = sensors.getTempC(deviceAddress);
  if (tempC == -127.00) {
    Serial.print("Chyba, senzor neodpoveda");
  } else {
    Serial.print("C: ");
    Serial.print(tempC);
  }
}

void loop(void)
{
  delay(2000);
  Serial.print("Zistujem teplotu...\n\r");
  sensors.requestTemperatures();

  Serial.print("Vnutorna teplota: ");
  printTemperature(insideThermometer);
  Serial.print("\n\r");
  /*Serial.print("vonkajsia: ");
  printTemperature(outsideThermometer);
  Serial.print("\n\r");
  Serial.print("Pivnica: ");
  printTemperature(dogHouseThermometer);
  Serial.print("\n\r\n\r");*/
}

Arduino výstup na televízor (TV-out)

Arduino výstup na TV

Arduino je obľúbené najmä kvôli svojej jednoduchosti a možnosti pripojiť takmer čokoľvek. V dnešnom projekte pripojíme Arduino k televízoru cez video vstup. Budeme k tomu potrebovať len tri rezistory a konektor CINCH. Pripojiť môžeme akýkoľvek televízor na ktorom je dostupný AV vstup (žltý cinch konektor). V mojom prípade som mal k dispozícii starší televízor so SCART konektorom a redukciu na CINCH. Všetky rezistory som našiel na matičnej doske, ktorú si odkladám práve pre takéto príležitosti. Sú vo vyhotovení SMD čo mi len vyhovuje, keďže hodnota odporuje je napísaná priamo na nich a nie je potrebné pracne hľadať ten pravý. Napríklad 750 znamená 75?, 102 bude 1k? a 471 sa rovná 470? (posledná číslica značí počet núl). Zapojíme podľa schémy:

Arduino TV výstup - schéma zapojenia

Fyzické zapojenie by sme mali hotové, nasleduje zdrojový kód. Musím sa priznať, že mi trochu trvalo kým som našiel knižnicu, ktorá fungovala v režime PAL a taktiež s Atmega168. Taktiež som musel použiť sofware vo verzii 0.22 (stiahnite tu), na najnovšom Arduino 1.0 sa mi nepodarilo program skompilovať.

Cinch výstup pre Arduino

#include <TVout.h>

TVout TV;

void setup() {
TV.begin(_PAL,128,48); // rozlíšenie (viac nefunguje na atmega168)
}

void loop() {
TV.clear_screen();

TV.select_font(_3X5);
TV.print_str(0,40,"Mensi font");

TV.select_font(_8X8);
TV.print_str(0,16,"Vacsi font");
TV.print_str(0,0,"AHOJ SVET");

TV.draw_line(1,11,120,11,2); // x,y x,y kreslenie ciar

TV.delay_frame(50);
}

K čomu je pripojenie Arduina k TV vlastne dobré? Predstavte si že potrebujete vyrobiť narýchlo hlasovací systém. Výsledky sa musia na niečom zobraziť a starší TV je najlacnejšia voľba. K Arduinu môžeme pripojiť takisto malé sedem palcové LCD na ktorom sa nám bude zobrazovať stav bezpečnostného systému, prípadne teploty izieb celého domu/bytu. Displejov môže byť pripojených paralelne hneď niekoľko, keďže sa jedná o analógové pripojenie. Príkladov je mnoho, každý využije ten svoj nápad.

Knižnica TVout (stačí rozbaliť do “libraries”): http://arduino-tvout.googlecode.com/files/TVout_R5.91.zip

Schémy zapojenia a návrh plošných spojov – Fritzing

schema zapojenia LCD HD44780

Každý projekt je vhodné postupne dokumentovať, upravovať a zdokonaľovať, tak je tomu aj pri Arduine. Na začiatok môžeme použiť papier, ten nám však nebude postačovať na dlho. Dnes si predstavíme nástroj, ktorý nám neskutočne urýchli celý proces od prototypu až po hotový výrobok. Za nemecky znejúcim názvom programu sa skrýva univerzita a open-source komunita z Berlína. Musím uznať, že programov na kreslenie schém je veľa a väčšina bude stáť za starým dobrým EAGLEom. Napriek tomu je Fritzing na prvom mieste pri aplikáciách Arduina. Dôvodov je niekoľko:

  • Užívateľský príjemné prostredie
  • Začiatočníci v elektronike ho milujú
  • Preddefinované Arduino vývojové dosky a s tým súvisiace komponenty
  • Kompatibilita s rôznymi operačnými systémami (stiahnite tu)
  • Export plošného spoja jedným kliknutím do PDF so všetkými vrstvami

Fritzing PCB

Fritzing je momentálne vo verzii Beta a každým updatom pribúda kopa funkcií a vylepšení. V najnovšej verzii si priamo z hlavného menu môžete dokonca svoj prototyp plošného spoja objednať “File” -> “Order a PCB”. Ďalšou možnosťou je export návrhu plošného spoja do PDF. Program vyexportuje do nami zvoleného priečinku päť samostatných súborov, v každom sa nachádza jedna vrstva kompletného plošného spoja. Potom je už len na Vás, či si plošný spoj vyrobíte doma, alebo pošlete firme, ktorá ho podľa podkladov vyrobí.

plošný spoj

Pre návrh plošného spoja je k dispozícii aj funkcia “autoroute”, ktorá v podstate urobí všetku robotu za nás. Dôležité je len, aby sme mali schému správne navrhnutú v “Schematic” tabe.

Fritzing schéma

Celkovo je Fritzing výborný nástroj pre začiatočníkov a takisto pokročilých elektrotechnikov, ktorý potrebujú venovať čas vývoju a nie úlohám, ktoré zvládne software za nás. Nezabúdajme, že vývoj programu stále pokračuje, takže môžeme očakávať neustále vylepšenia.

Začíname s Arduinom

Na začiatok si predstavíme plošný spoj asi najrozšírenejšej verzie Arduina, volá sa Diecimila. Na obrázku sú už popísané všetky komponenty, takže len v skratke. Nachádza sa tam samotný mikroprocesor ATMEL ATmega168, ktorý má 16Kb pamäte, zopár LEDiek zobrazujúcich aktivitu a samozrejme vstupy/výstupy.

Arduino Diecimila Komponenty

Úspešne sme si zakúpili svoje prvé Arduino a k tomu, aby sme mu dali život ho potrebujeme naprogramovať. Čo budeme potrebovať:

  • samotné Arduino (Diecimila, Nano, atď.)
  • USB kábel
  • Obslužný program

Program “Arduino 1.0″ si môžte stiahnuť z uvedených linkov:

Arduino 1.0

V menu programu bude ako prvé potrebné vybrať vašu verziu Arduina (Tools -> Board). Po tomto kroku si možme otvoriť vzorový kód pre blikajúcu LEDku (File -> Examples -> 1.Basics -> Blink). Klikneme na upload a na Arduine sa rozbliká LEDka. Toľko na úvod a možme ísť na niečo zložitejšie.