Scratch robot lastele (Arduino)

Ise tehtud - hästi tehtud. Näitame siin oma projekte teistele!
Post Reply
User avatar
mcmatrix
Posts: 266
Joined: Wed May 09, 2007 17:01
Location: Peetri alevik / Harjumaa
Contact:

Scratch robot lastele (Arduino)

Post by mcmatrix »

Otsustasin oma 10a. sugulastele teha robotid, mida saaks programmeerida.
Kuna C ja C++ keel on lastele algõppeks natuke liiga keerulised siis leidsin toreda visuaalse programmeerimise programmi Scratch (saadaval eestikeelsena)
Scratch on visuaalne programmeerimiskeel, mis on mõeldud eeskätt 6-16-aastastele noortele, kuigi tegelikkuses on Scratch-i
kasutanud igast vanusegrupist inimesed.
Selle programmiga on lihtne luua interaktiivseid lugusid, mänge, animatsioone ja kunstiteoseid.
Seda kasutades saab selgeks programmeerimise nn. alustalad.
Ta on lihtne, kuid temaga saab palju ära teha.
Selle programmiga projekte luues arenevad õpilaste matemaatiline ja arvutialane mõtlemine, loovus, süsteemne arusaam (igale käsule järgneb kindel tulemus), koostööoskus.
Täpsemalt siis versioon 1.4 ja selle saab allalaadida siit
See on saadaval paljudele platvormidele (nt. Raspberry Raspiani linuxis on see kohe algselt kaasas)

Ütlen juba ette ära, et tegu on lihtsustatud ja muudetud versiooniga.
Kõvematele Arduino gurudele sobiks hoopis S4A Scratsi laiendus.
Samas tundus mulle et, 10a. on need erinevate sisendite ja väljundite virr/varr natuke liiga keeruline alustada.

Mehhaanilise poole ostsin odavalt hiinast
Image
Smart Robot Car Chassis Kit Speed Encoder Battery Box For Arduino

Elektroonilise poole pealt oleks kindlasti lihtsam olnud kasutada Arduino Uno't või muud valmis plaati, kuid otsustasin selle ise teha.

Kasutasin makettplaati PC-4, saab seda oomipoest
Image
Üldiselt täitsa hea asi aga peaks arvestama, et ümarad jootepunktid tulevad suht kergelt lahti, kui mitu korda kinni/lahti joota ning natuke jõudu kasutada :)

Komponentide paigutus on siis selline:
Image

Protsessor on tavaline atmega328 ja mootoreid juhib L293D kivi.
Kuna pesad võtavad plaadil palju ruumi siis sellele skeemile pole lisatud võimalust lihtsalt otse Arduino kaudu softi peale laadida.
Samas saab selle lihtsalt juurde teha, kuna atmega reset pin on olemas ning RX, TX pinnid ka olemas.
Vaja ainult Reset pin läbi 100nF kondeka välja tuua DTR. Pullup on juba olemas. Kellel vaja saab lisada ka reset nupu.
Image

Kui pinnid on välja toodud siis saab programmeerimiseks kasutada Arduino FTDI kaablit.
Hetkel laen mina atmega328 softi peale teise Arduino Uno ja Arduino ISP Shield abil.

Päris elus näeb plaat välja selline. (punane täpp tähendab sama nurka)
Pealt vaade:
Image
Alt vaade:
Image
Väljundid ja sisendid:
Image

1. LDR (valgustundlik takisti) sisend
2. Patarei toide.
3. Mootor 1 väljund
4. Mootor 2 väljund
5. Bluetooth JY-MCU jaoks seerial port (RX,TX,-,+)
6. Ultraheli HC-SR04 port (trig,-,+). Echo pin on Trig ühenduses 2.2K takisti kaudu.
7. Analoog sisendid (Scratch A,B,C,D) (Pins: S,+,-)
8. Tavaline Tactic nupp
9. Mootorite aktiveerimise/deaktiveerimise lüliti (aitab roboti laualt põgenemise vastu programmeerimisel)
10. Heli sisend. lihtne "peak-detector" on põhiplaadil. Pessa käib tavaline mikrofoni eelvõimendi.

Püsisensorid:
Image

HC-SRQ4 - Ultraheli kaugussensor on pandud tööle ühe juhtpinniga.
Trig.pin on ühendatud kontrolleriga ja Echo.pin on läbi 2.2K takisti ühenduses Trig.pinniga.

JY-MCU - Bluetooth (v1.05) puhul tegin igaksjuhuks pingejaguri RX pinni peale. (2.2K -> GND ja signaal läbi 1K takisti) kuna bluetoothi plaadil kirje, et RX,TX on 3.3V level.

LDR - valgus sensoriks on tavaline fototakisti

Heli sensor (Peak-detector on põhiplaadil)
Image

Helisensori komponentide paigutus, plaadiks on tavaline tükk makettplaadist millel on 3sed saared.
Image

Antud Scratch'i laiendus või muudatus kasutab Scratch Sensor Board protokolli.

Välismaailmast saab Scratch tagasisidet järgmiste sensorite kaudu.
Image
Sensorite väärtused Scratchis on vahemikus 0 kuni 100

liugur - originaalis on see tavaline muudetava väärtusega takisti (pote või liugtakisti). Mina kasutan seda hoopis ultraheli kaugusanduri jaoks. Skaalas (0 - lähedal ...... 100 - 2m või kaugemal)

heledus - on siis fototakisti väärtus (0 - pime ..... 100 - väga valge)

heli - info heliandurist, tundlikus eriti hea ei ole. Põhiliselt saab tuvastada kõvemaid helisid (plaksu, pauku jne)

takistus-A...D need on siis arduino analoog sisendite a,b,c,d väärtused 0-1023 teisendatud 0-100 skaalale.

NB! kalle ja kaugus on Lego laienduse sensorid ja neid siin kasutada ei saa.


Ainsad väljundid on mootorid A ja B.
Image
Saab lülitada nii mootoreid eraldi kui ka mõlemat mootorit koos.
Seadistada saab ka mootori võimsust 0-100 kuid kahjuks on reaalselt saadaval ainult 8 võimsus astet. See on tingitud ainult 1Baidisest saadetavast infost.

Suhelda saab Scratch robotiga seerial pordi kaudu.
Image
Mina kasutan JY-MCU Bluetooth seerial adapterit robotil ja arvutis tavalist bluetooth pulka. Nende 2 abil loob arvuti mulle bluetooth seerial pordi.


Scratch laienduse saab alla laadida siit või siis originaal asukohast
Kogu au laienduse eest läheb sellisele tegelasele nagu abee
http://scratch.mit.edu/discuss/m/topic/25896/

Image faili peaks lahti pakkima ja kopeerima Scratch kataloogi Scratch.image faili kõrvale. Scratch'i kataloogist käivitades küsitakse millist image faili soovid laadida.

Need kes soovivad püsivalt laienduse installida peaksid toimima järgmiselt.
Originaal Scratch.image nimetage ümbes Scratch.image.org
ja NanoBoardAGWithMotorsRasPi.image nimetage ümber Scratch.image.
Niimoodi saate vajadusel saate originaal Scratchi tagasi.

Minu poolt muudetud ja kohandatud Arduino faili leiab siit
See on siis vaja sobival viisil roboti atmega328 peale kõrvetada.
Lisan veel, et robot vajab toimimiseks pidevat ühendust Scratchiga!

Scratch mootorilaienduse tõlge:

Code: Select all

############################################
# Two motor extension
############################################
msgid "motor %M on for %n secs"
msgstr "mootor %M sisse %n sekundiks"

msgid "motor %M on"
msgstr "mootor %M sisse"

msgid "motor %M off"
msgstr "mootor %M välja"

msgid "motor %M power %n"
msgstr "mootori %M võimsus %n"

msgid "motor %M direction %W"
msgstr "mootori %M suund %W"
Lisage see tekstilõik faili et.po lõppu.
Fail ise asub Win masinal C:\Program Files\Scratch\locale\ kataloogis.

Pildid valmis robotist
Image

Image

NB!
Lisan siis kohustusliku osa ja ütlen, et ma ei võta vastutust võimalike kahjude, mittetoimimiste ja muude tagajärgede eest.
Kogu info on vabalt kasutamiseks, küsimuste korral võib mulle julgelt PS'i saata või kui teema võiks teisi ka huvitada siis foorumis postitada.
Post Reply