Kasutaja tarvikud

Lehe tööriistad


projektid:arendusprojektid:threedom

Threedom

Tegu on projektiga mis algas "Teeme" projekti raames. Esialgne projekti eesmärk oli arendada edasi PisiXBee2 komplekti mis oleks universaalsem ja parem. Komplektid oleks ette nähtud koolidele ja hobirobootikutele; see pidi olema lihtne ja odav. Komplekt pidi koosnema mitmetest moodulitest, nagu peakontroller, mootorikontroller, jooneandurid ja kasutajaliides. Moodulitest oleks näidisena kokku pandud multifunktsionaalne (4 võistluseülesannet lahendav) õpperobot. Plaan aga muutus, sest moodulitest tehtud robotisse tulnuks palju juhtmeid ja konstruktsioon läks liiga keeruliseks, rääkimata liigsuurest hinnast. Seega, õpperobot arendus jätkus teisiti - roboti elektroonika pidi tulema ühes tükis. Uue roboti nimeks on „Deegu“ ja selle projekt asub siin.

Idee

Plaadi konseptsioon

Nii PisiXBee3 kui eelmisi arendusplaate iseloomustavad kompaktsus ja 3-viigused servopistikud. Seda ideed on kavas edasi jätkata viisil mil pistikud on kõik unifitseeritud ja võimaldavad samu funktsioone - ADC analoogsisend, loogiline sisend-väljund, PWM väljund, UART saatja/vastuvõtja. Unifitseeritus ja spetsiaalne teek võimaldavad kasutajal kirjutada tarkvara selliselt, et ta ei pea teadma midagi mikrokontrolleri viikudest ega registritest, piisaks vaid pistiku järjekorranumbrist.

Elektroonika

Kokku oleks plaadil 10 pistikut, kuid tulevikus ei saa välistada ka rohkem pistikuid. Laiendamine ei tekita ühilduvuse probleeme kuna füüsilist seadistust ja kasutaja rakendust seovad vaid pistikute järjekorranumbrid tarkvaras. Kõigil pistikutel on maa, +5V toite ja signaali viik.

Teek

Programmeerimine toimuks ainult teegi vahendusel - otse registrite kallale kasutaja minema ei peaks (aga võib). Teegis on näiteks funktsioonid:

enum
{
  PORT_IO,
  PORT_ANALOG,
  PORT_PWM,
  PORT_UART_RX,
  PORT_UART_TX
} port_type;
 
// Port functions
void port_setup(int index, port_type type);
void port_setup_pwm(int index, int frequency);
void port_setup_uart(int index, int baudrate);
void port_io_set(int index, bool value);
bool port_io_get(int index);
void port_pwm_set(int index, int width);
int port_analog_get(int index);
void port_uart_send(int index, unsigned char byte);
bool port_uart_receive(int index, unsigned char *byte);
 
// User timer functions
int timer_start(void);
void timer_stop(int timer);
int timer_get(int timer);
 
// User interface functions
void printf(char *format, ....);
void scanf(char *format, ...);

Kuna kasutaja ei puutu mikrokontrolleri spetsiifiliste registritega kokku siis on tulevikus võimalik mikrokontrollerit vahetada, kasvõi ARM-i või FPGA-ni välja.

IDE

Süsteemi arhitektuur

Tarkvaraarenduskeskkonnaks on ebaharilik, kuid märkimisväärsete eelistega süsteem. Esiteks, IDE poleks mitte arvutiprogramm vaid veebiteenus - kasutaja kirjutaks koodi veebibrauseris või mõnes spetsiaalses HTTP kliendi rakenduses (näiteks Androidi „äpp“). Kompilaator ja alglaadur moodustaksid koos veebiserveriga arendusvahendite komplekti millele kasutaja saadab HTTP kaudu koodi. Kompilaator kompileerib koodi ning saadab selle alglaaduri kaudu soovitud PisiXBee-sse. PisiXBee-d omakorda võib ühendada kas USB kaabliga või XBee raadiomodemi kaudu.

Süsteemil on järgmised eelised:

  • Koodiredaktor töötaks erinevates operatsioonisüsteemides ning seadmetes.
  • Koodi saab kirjutada ja laadida kaughalduse teel.
  • Klassides poleks vaja süsteemi installeerida igasse arvutisse vaid piisaks ühest serverist.

Veebi-IDE peaks olema ilusti koodi illustreeriv ja selleks saab kasutada näiteks seda JavaScripti komponenti:

Veebiserverina saaks kasutada lighttpd:

Kommentaarid

Mõtlesin selle Teeme projektiga seda, et jätkaks PisiXBee-de seeriat ja teeks kolmanda versiooni. Pildilt ka näha, et asi on pisike plaadike millel 10 ühesugust servo-pistikut. Kui varasemates PisiXBeedes oli iga pistik oma funktsiooniga (ADC, PWM, vmt) siis nüüd on asja mõte selles, et kõik pistikud on võimelised kõike tegema. Kõige all mõtlen IO, ADC, PWM ja UART TX/RX. Ühesugusena hoidmise mõte on omakorda selles, et kasutaja ei pea riistvarast üldse midagi teadma. Tarkvaras tuleb lihtsalt kasutada pistikute numbreid, et need mingit funktsiooni täitma seada või et neid kasutada. Kõik riistvaralised pordid ja registrid võib üldse ära unustada. Tarkvara jaoks on niisiis üks teek mis kõik töö ära teeb ja kasutaja hooleks on ainult algoritmi kirjutada. Ah jaa - katkestusi kasutaja kasutada ei tohiks.
Edasi oleks mõte Arduino IDE-t natuke kopeerida: ehk teha ise kogu tarkvaraarenduskeskkond kus saab korraga koodi kirjutada ja seda alla laadida. Softi laadimiseks tuleb PisiXBee3 arvutiga USB kaudu ühendada ja plaadil nuppu vajutada, et see bootloaderisse läheks. IDE's tuleb seejärel lihtsalt Compile & Run vajutada. Aga lisaks oleks IDE's ka konsool - ehk kui rakendus peale laetakse seatakse USB automaatselt teegi poolt jadaliideseks ja „printf“ käskudega saab kasutaja AVR-ist konsooliaknasse kirjutada. „scanf“ käskudega saaks omakorda konsooli aknast AVR-ile saadetud käske lugeda. Sellise IDE peaks saama teha küll kui WinAVR aluseks võtta ja võibolla mitte uut teha vaid mõni open-source IDE ümber progeda. Tulevikus võiks isegi C interpretaatori AVR-i pigistada nii, et jadaliidese kaudu saaks „debuggida“…
Ehk siis asja mõte on teha ülilihtne ja mugav asi tänu 3-klemmistele universaalsetele ühesugustele pistikutele. Plaadi komponentide omahind jääb praegu alla 10€ ja kui PCB ka juurde arvata siis ma arvan, et mingi 10€ tulekski materialide hind.
Lisaks põhiplaadile võib teha mõne mootorikontrolleri mida PWM-iga juhitakse, mõned andurid varustada servopistikutega, üks nupp servopistikuga, LCD kuhu saab UART-i kaudu teksti saata jms. Muidu kuna see plaat on koos XBee pesaga siis teine mõte on selles, et see asendaks põhimõtteliselt raadiomudelite vastuvõtjat. Kui üks plaat ühendada arvutiga ja teine panna mudelile/robotile peale saab kaugjuhtmist teha.
Et siis sellised mõtted. Ainult et ma ei tea kui hästi see kodulaboriga nüüd ühildub, sest loogika on teine ja soft on ka erinev.
Mikk 26.08.2011

Materjalid

Kõik arendustöö materjalid asuvad SVN serveris:

Tegijad

projektid/arendusprojektid/threedom.txt · Viimati muutnud: 2016/09/03 18:20 persoon raivo.riiel