Roboto logika

robot-logic-main-cut

Pagaliau atrodo pavyko parašyti tokį kodą, kad mano robotas važinėtų po kambarį išvengdamas kliūčių be jokios pagalbos. Pradėsiu nuo teorinės dalies: roboto logika.

Roboto navigacijos tikslas buvo paprastas: aptikus kliūtį apsidairyti, surasti laisvą kelią, pasisukti į tą pusę ir toliau važiuoti nauju keliu iki kitos kliūties. Aš esu iš tų programuotojų, kurie daugiau stengiasi panaudoti jau kažkieno sukurtus algoritmus ir idėjas, bet šiuo atveju man nepasisekė: niekur negalėjau rasti man tinkamo jau sukurto kodo todėl teko viską kuri pačiam nuo nulio. Sudėliojus pradinį logikos variantą viskas atrodė nesudėtinga, bet realiai susidūriau su keletu labai įdomių iššūkių. Skaityti toliau

Robotas iš žaislinės mašinėlės

IMG1716

Šį šeštadienį lankiausi Birmingemo Howduino – vienos dienos hakerių susitikime. Nelabai žinojau ko tikėtis iš tokio tipo įvykio, todėl ir važiavau be jokios išankstinės nuostatos. :) Po trumpo organizacinio pristatymo apie 11 val. ryto prasidėjo darbas: vieni dalyviai išsiskirstė į mokymo grupes, kiti ėmėsi dirbti prie savo projektų.

Mano užduotis

Mano tos dienos tikslas buvo šią radijo bangom valdomą mašinėlę paversti į kliūtis apvažiuojantį robotą.

IMG1710

Skaityti toliau

Arduino MEGA ir atstumo detektorius

arduino-range-finder

Kaip ir žadėjau toliau tęsiu eksperimentus su davikliais. Prie jau pajungto LCD ekrano prijungiau SRF05: ultragarsinį atstumo detektorių, kuris bus roboto rega ir leis neatsimušti į kliūtis. Įrenginys yra tos dvi „akys“ schemos dešinėje viršuje. Veikimo principas nesudėtingas: garsiakalbio pagalba siunčiams aukšto dažnio (40 kHz) garsas ir mikrofonas laukia kol nuo netoliese esančio daikto sugrįš aidas. Kai tik aidas sugrįžta išmatuojamas laikas kiek toks procesas užtruko ir atstumas grąžinamas atgal į Arduino kaip impulso trukmė daviklio išėjime. Visa tai vaizdžiai atrodo taip:

YouTube Preview Image

Pagaliau nuspirkau FireWire kabelį. Dabar savo eksperimentus galiu filmuoti su DV kamera ir kokybė nepalyginamai geresnė nei nei filmuojant su telefonu.

Kodo galabaliukas, kuris veikia mikroprocesoriuje:

// include the library code:
#include <LiquidCrystal.h>

#define echoPin 6             // the SRF05's echo pin
#define initPin 7             // the SRF05's init pin
unsigned long pulseTime = 0;  // variable for reading the pulse

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
 // set up the LCD's number of rows and columns:
 lcd.begin(16, 2);

 // make the init pin an output:
 pinMode(initPin, OUTPUT);
 // make the echo pin an input:
 pinMode(echoPin, INPUT);
}

void loop() {
 digitalWrite(initPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(initPin, LOW);

 pulseTime = pulseIn(echoPin, HIGH);

 lcd.setCursor(0,0);
 lcd.print(pulseTime / 58, DEC);
 lcd.print("cm");

 delay(100);
 lcd.clear();
}

Kas 100 milisekundžių programa nusiunčia impulsą į SRF05, sulaukia iš jo atsakymo ir rezultatą parodo LCD ekrane.

Su šiuo davikliu galima sukonstruoti labai įdomų instrumentą pavadintą theremin. Net nežinau kaip jis verčiasi į lietuvių kalbą. Principą yra lengviau pademonstruoti, negu paaiškinti:

Flickr Video Flickr Video

Daugiau informacijos apie instrumentą su Arduino:

Roboto kūrimas eitųsi kur kas greičiau jeigu pažingsniui nebloginčiau visko ką darau, bet aprašymas tebūnie irgi proceso dalis. :) Galite matyti kaip sekasi mokintis.

Arduino MEGA ir LCD ekranas

arduino-lcd-test

Kuo toliau eksperimentuoju su savo Arduino MEGA, tuo man jis labiau patinka. Aš visada galvojau, kad mikroprocesoriai, jų programavimas ir apskritai pritaikymas yra iš kosmoso srities ir man iki jo toli toli, bet su Arduino viskas per daug paprasta. Iš tiesų, eksperimentuoti taip paprasta, kad dabar net gailiuosi, jog to nedariau iki šiol. Anglijoj elektroninių komponentų pasirinkimas internetinės parduotuvėse yra didžiulis. Ypač pamėgau Rapid dėl nepaprastai didelio įvairiausių komponentų kiekio ir Oomlout už puikų atviros hardware idėjos palaikymą.

Iš pastarųjų kaip tik ir noriu pademonstruoti įsigytą LCD ekraną už vos £6 (!!!).

YouTube Preview Image

Surinkti buvo labai paprasta, nes Oomlout atsiuntė išsamią pajungimo schemą, o be to visa informacija apie kiekvieną jų produktą yra laisvai pasiekiama internete. Skaityti toliau

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