Arduino MEGA

arduino-mega

Elektronika kaip hobiu domėjausi nuo 5 klasės, tik dėl visiškai kitokio darbo pobūdžio prie elektroninių komponentų nebuvau rimčiau prisėdęs jau daugiau nei 7 metai. Įsivaizduokit koks džiaugsmas mane apėmė, kai sužinojau, kad mano OggCamp 2009 laimėta Arduino MEGA yra miniatiūrinė elektroninių prototipų kūrimo platforma! Viskas būtų gerai, jei tik prieš pradėdamas eksperimentuoti su šituo gėriu būčiau žinojęs, kad viskas nebus taip paprasta kaip atrodė iš pirmo žvilgsnio, bet apie viską iš pradžių. :)

Kas yra Arduino MEGA?

Tai yra ATMega mirkroprocesorium (didelis juodas blynas plokštės viduryje) paremta pigi prototipinių elektroninių įrenginių kūrimo plokštė, žmonėms, kurie mažai nusimano apie elektroniką. Įdomu yra tai, kad Arduino – atviro programinio kodo ir harware platforma. Visi brėžiniai, techniniai duomenis ir programavimo informacija yra prieinama viešai ir bet kas pagal pateiktą informaciją gali susirinkti plokštę pats arba užsisakyti jau surinktą. Arduino platformų yra įvairių, mano turima MEGA turi daugiausia įėjimų/išėjimų tarp kurių 32 skaitmeniniai, 16 analoginių ir 4 grupės skirtų bendravimui tarpusavyje tarp pačių plokščiu arba kitais įrenginiais nuosekliu protokolu. Plokštės suprojektuotos taip, kad ant jų galima būtų dėti shield’us (šarvus). Tai yra kitos plokštės, kurios maunasi viena ant kitos ir ant pačios Arduino, bendraujančios su mikroprocesoriaus smegenim per įėjimus/išėjimus ir galinčios atlikti bala žino kiek funkcijų: rodyti LCD displėjuje tekstą, priimti signalus iš jungiklių, temperatūros, šviesos, drėgnumo, slėgio ir kitokių daviklių, dirbti kaip ethernet ar wireless įrenginys, kuris suteikia plokštei galimybę bendrauti internetu ir t.t. Visų galimybių išvardinti neįmanoma, nes jos apribotos tik fantazija ir piniginės storumu. :) Pavyzdžiui, čia – Arduino tinklo plokštė, kurios pagalba galima jungtis prie interneto:

ARSH-01-ET_MED

Arduino programavimas

Programavimas vyksta prijungus Arduino plokštę prie kompiuterio per USB jungtį ir su specialiu IDE sukompiliavus kodą jis nusiunčiamas tiesiai į mikroprocesoriaus atmintį. Po to USB jungtį galima atjungti ir įrašyta programa toliau veiks pajungus plokštei atskirą maitinimo šaltinį.

arduino-ide

Pirmoji programa

Paprasčiausia programa – mirksintis šviesos diodas, kurią aš nusprendžiau šiek tiek patobulinti ir sukurti pėsčiųjų šviesoforą. Kaip jis veikia galite pamatyti čia:

YouTube Preview Image

O čia yra kodas kuris veikia mikroprocesoriuje:

int carRedPin =  13;
int carYellowPin =  12;
int carGreenPin =  11;
int pedestrianRedPin =  10;
int pedestrianGreenPin =  9;

// The setup() method runs once, when the sketch starts

void setup()   {
  pinMode(carRedPin, OUTPUT);
  pinMode(carYellowPin, OUTPUT);
  pinMode(carGreenPin, OUTPUT);
  pinMode(pedestrianRedPin, OUTPUT);
  pinMode(pedestrianGreenPin, OUTPUT);
}

// the loop() method runs over and over again,
// as long as the Arduino has power

void blink(int light)
{
  digitalWrite(light, LOW);
  delay(500);
  digitalWrite(light, HIGH);
  delay(500);
  digitalWrite(light, LOW);
  delay(500);
  digitalWrite(light, HIGH);
  delay(500);
  digitalWrite(light, LOW);
  delay(500);
  digitalWrite(light, HIGH);
  delay(500);
  digitalWrite(light, LOW);
}

void loop()
{
  digitalWrite(carRedPin, HIGH);
  digitalWrite(pedestrianGreenPin, HIGH);
  delay(3000);

  blink(pedestrianGreenPin);

  digitalWrite(pedestrianRedPin, HIGH);
  digitalWrite(pedestrianGreenPin, LOW);
  delay(1000);
  digitalWrite(carYellowPin, HIGH);
  delay(1000);
  digitalWrite(carRedPin, LOW);
  digitalWrite(carYellowPin, LOW);
  digitalWrite(carGreenPin, HIGH);
  delay(3000);

  blink(carGreenPin);

  digitalWrite(carYellowPin, HIGH);
  delay(2000);
  digitalWrite(carYellowPin, LOW);
  digitalWrite(carRedPin, HIGH);
  delay(1000);
  digitalWrite(pedestrianRedPin, LOW);
}

Pradžiai nurodau kurios jungtys veiks kaip išėjimai, tada pagrindiniame cikle loop tam imituojant šviesoforą tikru laiku yra įjungiami vieni šviesos diodai ir tam tikru metu išjungiami kiti.

Mano istorija su Arduino

Čia tikriausiai taisyklė, kad mano eksperimentavimas su elektronika niekada nebūna paprastas. Arduino neišimtis. Iš pradžių man niekaip nepavyko nusiųsti paprasčiausios demonstracinės programos į plokštę, nes IDE metė klaidą, kad nepavyksta susibendrauti su MEGA. Jau buvau beveik įsitikinęs , kad gavau defektuotą plokštę, bet rankų vis tiek nenuleidau. Dovanotam arkliui į dantis nežiūrima. :)

Besiknisdamas forumuose išsiaiškinau, kad mikroprocesoriuje tiesiog nebuvo bootloader’io, kuris yra kaip BIOS kompiuteryje: jo pagalba plokštė gali bendrauti su kompiuteriu per USB, o be to Arduino tėra tik mikroschemų krūva. Standartiškai visos parduodamas Arduino savyje jau turi įdiegtą bootloader, bet mano atveju mikroschema buvo visiškai tuščia.

Nebūdamas visai tikras, kad su pačia Arduino hardware viskas gerai, nusprendžiau rizikuoti ir internetu nusipirkti atskirą programatorių USBTinyISP. Iš tokios detalių krūvos:

usbtinyisp-tools

Susilitavau tokį įrenginį:

usbtinyisp

Šio universalaus programatoriaus pagalba į plokštę nusiunčiau bootloader ir pagaliau Arduino pradėjo bendrauti per USB! Iš karto susidūriau su kitu nepatogumu: kiekvieną kartą programuojant mikroprocesorių teko spaudinėti plokštėje esantį Reset mygtuką, nors plokštės nuresetinimas turėjo vykti automatiškai IDE nuspaudus Upload. Šį gerai žinoma Arduino MEGA defektą panaikinau prilitavęs teisingą keramikinį kondensatorių:

arduino-reset-mod

Plokštę priversti veikti užtrukau apie savaitę, bet už tai setisfekšinas padarius pirmą veikiančią programą nerealus. :) Pagaliau mano programos „ištrūko“ iš kompiuterio ir galės reaguoti į fizinį pasaulį!

Viskas, garantuotai turiu naują „ligą“. :)

Kas toliau?

Dabar kai viskas veikia ir ištestuota pabandysiu įgyvendinti savo seną svajonę ir sukurti kokį nors autonominį kliūtis apvažiuojantį robotą. Šiaip robotų kūrimo platformos kainuoja kosminius pinigus – nuo £100 be jokios elektronikos ir varikliukų. Sumąsčiau genialią mintį: Anglijoj žaislų parduotuvėse visokios radijo bangom valdomos mašinos kainuoja kapeikas, todėl vos už £7 nusipirkau naują tik su pakavimo defektu R/C mašiną ir tikėjausi užsiimti jos vandalizacija.

car-model-jaguar

Tik kuomet vakar prieš išardant dalimis su ja pabandžiau šiek tiek pažaisti, pasirodo nusipirkau visai fainą žaislą, kuris labai jėgiškai driftina ant kilimo. Sūnus, aišku, iš karto pareiškė į jį teises. Na ir ką dabar padarysi? Teks ieškotis kažko kito skrodimui, bet apie tai jau kituose mano įrašuose. :)

Jeigu šis įrašas patiko, nepatingėkit pakomentuoti arba užsiprenumeruoti RSS srautą.

40 komentarų

    • Arduino veikia su Linux, Windows ir Mac OS. Aš tik pavyzdžiui turėjau problemų su USBTinyISP, nes Windows jo nesuprato, o Linux – viskas veikė be problemų. Šiaip manau, kad Linux palaikymas yra geriausias nes visa platforma yra opensource.

  1. Maniškė plokštė irgi neseniai atėjo. Bottloaderio kinai įkelti nepamiršo :)
    Man patiko, kad su Arduino galima gen lengva programuoti žmogui neišmananačiam mikrokontrolerių, nes yra paruošta naudingų fukcijų. Nereikia skaityti Atmega datasheeto ir žiūrėti, kokį ten registro bitą keisti.

    Aš tai su PWM pažaidžiau kolkas:

    void setup()   {                
      
      pinMode(2, OUTPUT);  
      pinMode(12, OUTPUT);   
    }
    
    
    int i;
    int t = 10; //ms
    
    void loop()                     
    {
      for ( i=0; i<255; i+=10) {
        analogWrite(2, i);
        analogWrite(12, 255-i);
               delay(t);  }
          
       for ( i=255; i>0; i-=10) {
        analogWrite(2, i);
          analogWrite(12, 255-i);
         
          delay(t);  }     
      
    }
    

    @Vidmantas Arduino softas veikia tiek su Linux ar Mac OS X

    Admin EDIT: Pataisiau tavo kodą :)

  2. Vidmantai, Su linux įmanoma viskas . Čia nuoroda: http://www.arduino.cc/playground/Learning/Linux

    Arvydai,
    Sveikinu užsikrėtus nauja liga, gal kiek gaila, nes vaistų nėra :D
    Taip pat norėjau paklausti iš kur pirkai programerį? Kaip rašei, jis dalimis ir litavai jį pats, bet programatoriaus valdiklis jau buvo užprogramuotas?

    Taip pat norėjau pasakyt, kad perskaitęs šitą įrašą užsisakiau Arduino Nano, nebe iškenčiau.

  3. Man dar vienas (Kol rašiau dar keli :D) klausimas iškilo.
    Kokia čia programavimo kalba?
    Visos programos ant mano būsimo „Duemilanove“ veiks taip pat kaip ir su „mega“ be jokio papildomo modifikavimo?
    Taip pat gal įmanoma pasileisti kokį emuliatorių rodantį kas su kokia programa vyksta?

  4. Sveiki,
    klausimas durnas bet kadangi daug protingu zmoniu tikiuosi neisizeisit ir papasakosit normalei :)

    Ar verta pirkti mega? Ar visgi su senesniais variantais pradeti zaisti?

    Kada gali prireikti megos? pvz jei visgi noreciau kazkoki led cube’a pasidaryti tai kokio dydzio pavyktu? Dar nelabai gaudausi kaip ledu kiekis priklauso nuo i/o jungciu…

    Aciu.

    Autoriui linkiu sekmes ir labai kvieciu daugiau eksperimentuoti ir daugiau rasyti. Labai faina kai matai sava kalba kazka rimtesnio sioj srityje!

  5. Atgalinis pranešimas: Arduino | daikciukai.lt

  6. Atgalinis pranešimas: arvydas.net » Blog Archive » Arduino MEGA ir LCD ekranas

    • Kam šitas klausimas? Tuščią komentarų dėžutę užpildyti?

      O jeigu rimtai tai vieniems patinka laisvalaikiu piešti, kitiems dainuoti, o man knistis su mikrokontroleriais. Tai yra vadinama hobiu.

  7. Atgalinis pranešimas: Arduino pradžia | Lauryno tinklaraštis

Parašykite komentarą

El. pašto adresas nebus skelbiamas. Būtini laukeliai pažymėti *