robot look like johnny 5 (leuk project)

Naar zoiets ben ik ook al eens op zoek geweest, maar echt zoiets als die module heb ik nooit kunnen vinden.
Het filmpje zag er echt te gek uit, en ik denk wel dat het die prijs wel waard is.
Hoe alles precies in z'n werk gaat zou ik nog uit moeten zoeken, maar gaat dat met een pic werken? en dan liefst met een 14 pins?

voor die mic's ben ik dit topictegen gekomen

Lucky Luke

Golden Member

Ja, zolang je maar serieële communicatie kunt doen met die PIC. Dus een UART is handig. (geen vereiste, dan gebruik je serin/serout ipv hserin/hserout (hrsin/hrsout? , rsin/rsout?))

Onderaan de productomschrijving staan wat linkjes:
http://www.sparkfun.com/datasheets/Robotics/VRbot-Protocol_1.4.zip
is de protocolomschrijving. Het komt er op neer dat je er een letter naar toe stuurt die staat voor een commando, en dan een resultaat / antwoord terug krijgt.

Ik zou wel voor je code gaat schrijven 't ding (via een max232, want hij spreekt op TLL niveau) aan een PC hangen en met een terminalprogramma wat met het ding spelen om goed door te krijgen hoe 'ie werkt.

't is even uitzoekwerk, maar het werkt ook gewoon met PIC. Sparkfun gaat een beetje uit van een Arduino, maar het werkt met alles dat serieel op 9600b8n1 kan communiceren en programmeerbaar is.

Eluke.nl | De mens onderscheid zich van (andere) dieren door o.a. complexe gereedschappen en bouwwerken te maken. Mens zijn is nerd zijn. Blijf Maken. (Of wordt, bijvoorbeeld, cultuurhistoricus)

Tijd om deze topic eens even uit het stof te halen.
Door veel tijdgebrek is het er niet van gekomen om volledige zaterdagen aan Johnny te besteden, en het alleen wat te beperken tot extra uurtjes na werktijd.

Het plaatwerk is op 2 zijschermpjes en het deurtje/bedieningspaneel helemaal klaar en zit al mooi in de lak.

Oeh, hoe duur mag het worden? Want ik heb een héél gaaf idee, wat niet eens moeilijk te maken is, maar wel aardig duur (€50 / 60).

Je hebt nu een afstandsbediening. Die zou je met wat moeite (*) kunnen vervangen door spraakherkenning.

deze module van sparkfun doet spraakherkenning. Hij is nu net uitverkocht, dat wel. Maar 't is een heel mooi ding. Bekijk dat filmpje wat erbij staat maar 's .

Ik ben deze module, en de werking eens aan het bestuderen geweest, echt gaaf om te zien, hoe het werkt.
Waar ik wel bang voor ben, is de snelheid.
Een "walking robot" geeft je tijd genoeg om commando's te geven en uit te voeren.
Bij een snelle (rijdende) robot wordt het toch anders.
Gezien dat je de commando's langzaam en duidelijk uit moet spreken, is een rijdende robot (Johnny) alweer een paar meter verder.

Wat ik wel in gedachte heb, is een pic > pic besturing of pc > pic
Ik heb hier nog wat van dat Aurel spul liggen (zender ontvanger) op 434Mhz wat ik ervoor kan gebruiken, en ook XBee staat me wel aan.
Uiteraard kan ik dan ook die 16F630 vervangen door 2 headers om toch die 10 ingangen te gebruiken.
Een pic > pic lijkt me niet zo'n probleem (denk ik)
Maar het mooiste zou zijn om via een laptop, met een mooi terminalprogramma Johnnie te kunnen besturen, zodat er ook een venster bij kan voor de onboardcamera.
Via het nummerieke toetsenbord zou ik hetzelfde kunnen doen, wat ik nu met de afstandbediening doe, en het scherm als monitor voor de camera.

Ik denk eerst maar eens te experimenteren met een zelfgemaakt key-pad op basis van de cursus van picbasic.nl en hieraan een 434Mhz module te koppelen.
Dus pic > pic
Andere ideeen en suggesties zijn altijd welkom

p.s. in de vrije dagen na kerst hoop ik weer te kunnen testen met Johnny, dus ook weer filmpjes :)

Het is inmiddels bijna een jaar geleden dat ik dit topic startte, en vele hebben dit met belangstelling gevolgd.
Ook vele CO-ers hebben mij waardevolle tips gegeven om dit project naar een goed einde te leiden, en en 1 van mijn 2 doelstellingen te bereiken, nl, het programmeren in pic-basic.
Er valt nog wel veel te leren, maar de basis is er inmiddels.
En Johnny6 begint al aardig te voltooien :)

Hiervoor wil ik iedereen hartelijk bedanken voor hun medewerking, en met name Lucky Luke, die hier toch vele uren hulp in heeft gestoken, en uiteraard Frits K (picbasic.nl)
Ook de Mods niet vergeten, die dit toch mogelijk maken.

Namens mij, (en Johnny6;)) iedereen een gezond, en spetterend 2011 toegewenst.

Lucky Luke

Golden Member

Namens mij (en de KLM familie) een goed 2011 teruggewenst :)

Volg het topic nog steeds (kijk ook zo af en toe op je site). Vind het leuk om te zien hoe Johnny tot leven komt :).

KLM5 kan inmiddels ook rondrijden trouwens. Knalt wel overal tegenop (de motoren zijn sneller dan dat ik de sensor goed kan laten rondkijken, plus hij is een beetje bijziend). Maar gelukkig werkt de stroommeting, dus hij detecteert wanneer 'ie vaststaat en gaat dan achteruit (in de hoop dat daar een uitweg is).

Menustructuur/bedienen met AB werkt ook. Alleen een groot deel van het gedrag moet ik nog programmeren. Ik speel ergens met het idee 'm te laten "samenwerken" met KLM3... Waaraan en hoe weet ik alleen nog niet.

Eluke.nl | De mens onderscheid zich van (andere) dieren door o.a. complexe gereedschappen en bouwwerken te maken. Mens zijn is nerd zijn. Blijf Maken. (Of wordt, bijvoorbeeld, cultuurhistoricus)

Menustructuur/bedienen met AB werkt ook.

Dit is bij mij nog een struikelblok.
Ik gebruik nog steeds die IR-AB, met het grote nadeel van 'dode' hoeken zodat het ingrijpen weleens te laat komt.
Wat voor AB gebruik jij?

off-topic:

Ik speel ergens met het idee 'm te laten "samenwerken" met KLM3... Waaraan en hoe weet ik alleen nog niet.

pic>pic comunicatie dmv. AM-zend/ontvanger?
Of op elke bot rc5 zenden/ontvangen met een tsop op het bovendek?
Lijkt me leuk: KLM3 Met KLM5 een dansje maken, of sychroon-rijden.
Ben benieuwd :)

/off-topic

We gaan in ieder geval in 2011 gewoon verder!

Lucky Luke

Golden Member

IR, zo'n universele. Of mijn iPAQ*, maar de universele AB werkt beter (toch iets sterkere IR led denk ik).

En inderdaad rijdt 'ie nog al 's door omdat "stop" niet aan komt...

*)Iedereen met z'n Ipod, Ipad, nieuw, cool, etc. Ik heb een iPAQ. Een oude.

EDIT: Doorrijden is bij KLM5 niet zo heel erg of het moet richting een trap (omlaag) zijn. Johnny gaat denk ik dwars door een muur als het moet...

[Bericht gewijzigd door Lucky Luke op dinsdag 28 december 2010 14:45:31 (23%)

Eluke.nl | De mens onderscheid zich van (andere) dieren door o.a. complexe gereedschappen en bouwwerken te maken. Mens zijn is nerd zijn. Blijf Maken. (Of wordt, bijvoorbeeld, cultuurhistoricus)

Update (en kick) van mijn project.

Johnny6 is inmiddels mechanisch (bijna) voltooid.
Het laatste plaatwerk is vandaag in de lak gezet, en het meeste is al afgemonteerd.
Het bovenste gedeelte heb ik nog thuis staan, en ben nog bezig het deurtje/bedieningspaneel te bedraden.

http://www.uploadarchief.net/files/download/voorfront.jpg
sorry voor de slechte kwaliteit van de foto.

Op dit paneeltje kan ik alles doen, wat ik met de afstandbediening doe, dus eigenlijk bedoeld voor het testwerk op de tafel
Verder kan ik de sensoren hier direct uitlezen voor de fijntuning.
Dit alles alweer met een pic (16f628)
* Kareltje lijkt wel picverslaafd

De volgende stap is een vervanging voor de IR-afstandbediening.
Er kleven teveel nadelen aan, o.a. de dode hoeken, zodat ingrijpen weleens te laat komt.
Ook het feit dat er nu 10 i/o pinnen bezet zijn, en ik nog meer op die 16F877 aan wil sluiten, ben ik hard aan het overwegen om een afstandbediening te maken op basis pic > pic (jaaaa weer een pic)
Ik heb dit spul hier nog liggen, en daar wil ik wat mee gaan doen.

Wie heeft hier ervaring mee? en hoe zou ik dat aan moeten pakken?
Of toch beter de (iets) duurdere modules kopen?
XBEE en ZBEE vind ik wel wat erg duur voor dit project.

Ik wil het volgende doen:
Een pic met een 3x4 keypad (zelfbouw)evt. met een lcd scherm.
Hieraan die zend, en ontvangstmodule, en dit ook op het mainboard van Johnny, zodat ik ook op afstand de sensoren uit kan lezen.
Het lcd zou i.v.m. het te drukke dataverkeer achterwege kunnen blijven.

Iemand hier ideeen over?

Ik heb zelf geen concrete projecten ermee gemaakt, maar die 433 MHz dingen zijn prima geschikt hoor! Wel even opletten met welke module je gebruikt en of je daar zelf nog voor (manchester)encoding moet zorgen.

If you want to succeed, double your failure rate.

Encoding is helemaal niet nodig, met een paar van die 433Mhz modules kan je makkelijk een draadloze UART verbinding opzetten.

Frits Kieftenbelt gebruikt ook zo'n dergelijke modules voor zijn beamerkast.
Weet ook iemand, wat voor bereik die dingen ongeveer hebben?
Als deze binnen +/- 25 meter nog betrouwbaar werken, lijken mij deze wel geschikt.
Zou dat haalbaar zijn?
Ik ga hiermee dan toch eens experimenteren.

Dat staat wel bij de gegevens van de module. Met wat meer vermogen heb je ook meer bereik. Maar 25 meter heb je al snel te pakken.

Every machine is a smoke machine if you operate it wrong enough
Lucky Luke

Golden Member

Hey, leuk om te zien dat Johny weer wat verder voltooid is :) Houd het op je site ook al een beetje bij.

Op 7 februari 2011 21:05:18 schreef _Danny_:
Encoding is helemaal niet nodig, met een paar van die 433Mhz modules kan je makkelijk een draadloze UART verbinding opzetten.

Mij lukte dat niet, maar ik moet toegeven dat 1 van de microcontrollers een attiny45 zonder kristal was... (Oftewel, zware afwijking van de baudrate. Wist ik toen veel...). (De andere was een 16f628A met xtal, het gaat hier om nutshellcansat. Het werkte half half...).

Met kristal, en met encoding, lukte het allemaal stukken beter. Dat is echter een half-af projectje wat al een aardige tijd stof ligt te happen. Plus, dat is meer bedoeld voor data, voor een simpele AB is het nogal overkill...

Of het met kristal en zonder encoding ook lukt? Anderen hebben het volgens mij wel voor elkaar gekregen. Zonder kristal (of andere voldoende nauwkeurige oscilator) wil het in ieder geval niet...

Enne, 433Mhz is ook niet waterdicht, bij mijn KlikAanKlikUit(r) HemaKloonDing(tm) moet ik soms meerdere malen proberen voor m'n lamp aan/uit gaat, en hij gaat ook wel 's spontaan aan... Al is het natuurlijk een stuk beter dan IR. Maar misschien is iets van een stopknop op de robot ook wel handig, voor geval 'ie niet op een muur maar op een persoon af rijd.

Eluke.nl | De mens onderscheid zich van (andere) dieren door o.a. complexe gereedschappen en bouwwerken te maken. Mens zijn is nerd zijn. Blijf Maken. (Of wordt, bijvoorbeeld, cultuurhistoricus)

Over het wel, of geen encoding heb ik wel wat gelezen, en ook Frits had weleens wat problemen met z'n 433 AM setje.

Beter dan IR zal het zeker worden want nu kan ik alleen die TSOP boven op het hoofd plaatsen om het meeste 'zicht' te krijgen.
Ook wil ik van IR af, om de reden, dat ik er ook een camera in wil bouwen om hem vanuit mij stoel te kunnen bedienen, en evt. in te kunnen grijpen.

Een ander probleem is echter ook aan het licht gekomen:
Als de ir-sensoren iets detecteren, en hij maakt een draai, maar kan daar ook niet echt uit de voeten, dan kan ik niet ingrijpen vóórdat de sensoren vrij baan zien.
Misschien de stoptoets middels een interupt laten werken?

Maar misschien is iets van een stopknop op de robot ook wel handig, voor geval 'ie niet op een muur maar op een persoon af rijd.

Een noodstop op de robot zelf??
9 van de 10 keer dat ik te laat kom.
En inderdaad..... een 20 kg robot met rupsbanden wil je niet tegen je been krijgen.
Dat ding sleept nb een palletwagen achter zich aan >:)
@ Luke: site wordt binnenkort weer bijgewerkt :)
oftopic: hoe is het met KLM5?

Zoals ik al zei: of je wel of niet encoding nodig hebt hangt ook van de module af. Sommige modules zorgen er zelf voor.

If you want to succeed, double your failure rate.
Lucky Luke

Golden Member

Ja, Voti heeft trancievers, misschien is dat wat?

offtopic:
KLM5 leeft nog :) Maar ik moet even een tijdmachine uitvinden, dan kan ik aan al die leuke projectjes tegelijk verder werken... (Er is dus nog geen voortgang, sorry. Houd je uiteraard op de hoogte.)

Eluke.nl | De mens onderscheid zich van (andere) dieren door o.a. complexe gereedschappen en bouwwerken te maken. Mens zijn is nerd zijn. Blijf Maken. (Of wordt, bijvoorbeeld, cultuurhistoricus)

Ik heb toevallig die Voti tranciever pas nog zitten bekijken, en overwegen die te kopen, ziet er best wel goed uit.
Helaas 1 nadeeltje....het voltage (2.2V-3.8V)
Kan wel, maar dan weer met een extra spanningsregelaar.

Ik heb nog nooit iets met serieele dataoverdracht gedaan laat staan draadloos, dus het zal eerst de breadboardfase nog moeten doorlopen met een directe kabel.
Daarna die Aurel moduletjes ertussen proberen.
En als ik m'n eerste bytes kan verzenden, dan pas mijn huidige code erop aanpassen.
Dus, nog veel te experimenteren.
Zo zie mij plan er nu uit, maar dit gaat zeker straks op Johnny toegepast worden.
Voorlopig zal Johnny nog wel wat lakschade oplopen (Eerst mooie foto's maken, natuurlijk :))

Maar ik moet even een tijdmachine uitvinden, dan kan ik aan al die leuke projectjes tegelijk verder werken

Geef even een seintje, als die tijdmachine werkt >:)
* Kareltje wil er ook eentje

Lucky Luke

Golden Member

Ik dacht dat free_electron een werkend prototype had, contacteer hem eens.

KLM5 heeft een van z'n motormounts gebroken. De nieuwe is flink breder en houd het hopelijk langer uit... Ben ook een klein beetje verder gegaan met de software.

Eluke.nl | De mens onderscheid zich van (andere) dieren door o.a. complexe gereedschappen en bouwwerken te maken. Mens zijn is nerd zijn. Blijf Maken. (Of wordt, bijvoorbeeld, cultuurhistoricus)

Hey Luke,
Bedankt voor de tip.
Deze week krijg ik weer wat extra spullen thuis, waaronder een 16F877
Hiermee probeer ik met 2 breadboards een proefopstelling te maken, en stapje voor stapje data te verzenden.
Hoe zit dat eigenlijk met analoge data?
Kan ik middels een potmeter PWM draadloos aansturen?
Of analoge sensoren uitlezen?

oftopic:
Heb ik je onbewust het KLM project weer op laten pakken?>:)

Lucky Luke

Golden Member

Niet geheel onbewust >:) Er lag jandorie zelfs stof op...

Analoge data verzenden? Het is toch gewoon digitaal tegen de tijd dat je het via de ADC in de microcontroller hebt binnengehaald? (16F877 heeft een ADC aan boord)

Analoge sensoren (of een potmeter) geven gewoon een spanning af, die lees je in met de ADC (eventueel eerst bufferen / versterken). Dan heb je een waarde tussen 0-1023 die je gewoon kunt versturen als ieder ander getalletje.

Vervolgens kun je aan de andere kant een PWM signaal opwekken afhankelijk van dat getalletje. (Eventueel aan de zendkant alvast de 2 LSB eraf knippen als je toch maar 8 bit PWM doet.). Het is wel aan te raden iets van een protocol te gebruiken en niet alle data als PWM waardes te gebruiken. Er zweeft een hoop in de lucht... (wel een leuk idee voor een RGB moodlicht dat redelijk random reageert op alle mogelijke 433Mhz dingen, gewoon alles wat je ontvangt als RGB PWM waarden gebruiken...)

Je kan bijvoorbeeld stomweg wachten op "KV", en pas de daarop volgende waarde gebruiken als PWM waarde. De kans dat een willekeurig 433Mhz ding nét precies je initialen uitzend is vrij klein, en neemt af met het aantal doopnamen dat je hebt ;).

Eluke.nl | De mens onderscheid zich van (andere) dieren door o.a. complexe gereedschappen en bouwwerken te maken. Mens zijn is nerd zijn. Blijf Maken. (Of wordt, bijvoorbeeld, cultuurhistoricus)

W.b. pic to pic ben ik best wel veel over aan het lezen en ik ga binnenkort een proefopstelling maken.
Ik wacht eerst Rosmalen af (voor een 2de breadboard)

De vraag waar ik nu mee zit, is de "noodstop"
Zolang de pic ergens mee bezig is, kan ik Johnny niet stoppen.
Daar rupsbanden erg veel meer grip hebben, dan wielen is dat funest voor de motoren.
Ik heb er eentje totaal aan gort gereden á $54,- :(
Waneer Johnny 'in het nauw' komt, b.v. in een hoek, blijven de sensoren reageren, en kan ik "stop" niet gebruiken.

Nu heb ik het een en ander gelezen over interrupts, maar volgens de datasheet kan ik alleen maar de b poorten gebruiken.
stop zit op nu op PORTC.7
Wat kan ik hier het beste mee doen?
Is er een goede evt. andere manier om een noodstop uit te voeren?

Lucky Luke

Golden Member

Als je meet welke stroom de motoren opnemen. Die is hoog op het moment dat 'ie begint met rijden, maar ook als 'ie ergens tegenaan vast staat.

Alleen moet dan wel de PIC daar op tijd op reageren. Hmm...

Je zou het ook in hardware kunnen oplossen. Flipflop welke gereset wordt bij aanzetten Johny, en die motoren enabled. Shunt + comparator om te meten of de stroom door de motoren te hoog is. Oscilator+teller om te kijken of dat langer dan een bepaalde tijd is (om te voorkomen dat je false positives "ik sta vast" krijgt als 'ie niet opstart). Dan als die teller is volgelopen de flipflop setten die de motoren disabled (en disabled houd). Als de stroom weer daalt onder de ingestelde waarde teller resetten. Of er nog een PIC tegenaan gooien...

Of ergens toch een schakelaartje of sensor maken die bediend wordt als johny ergens tegenaan staat en die met de interuptingang verbinden. Maar dan zul je zien dat 'ie een obstakel vind dat dat schakelaartje niet bediend....

Eluke.nl | De mens onderscheid zich van (andere) dieren door o.a. complexe gereedschappen en bouwwerken te maken. Mens zijn is nerd zijn. Blijf Maken. (Of wordt, bijvoorbeeld, cultuurhistoricus)

Pfffff..... zware kost voor mij.

De stroom meten zou alleen maar kunnen, rechtstreeks op de H-brug, lijkt mij.
Het probleem is echter, dat ik al mijn pinnen van de pic vol heb, om daar een analoge meting te kunnen doen.
En tja, nog een pic, ik zou de andere pics meerdere funkties toe kunnen delen, maar dat gaat ook weer veel wijzigingen op de pcb kosten.

Een ander (gewaagd) idee, is om 1 toets op mijn AB te gebruiken om op de vss van de 16f877 kortstondig een hoog signaal te geven.
Hierdoor zou alles gereset worden.
Wat vind jij ervan?
Kijk anders eens even op mijn PCB layout of er nog simpel iets aan te passen is.

Mischien een paar schuifregisters gebruiken dan kan je per schuifregister weer 8 extra ingangen of uitgangen krijgen. Bijvoorbeeld: met de 74HC595 kan je 8 extra uitgangen hebben, je kunt ook medere aan elkaar koppelen.

Edit:
Het kost je drie uitgangen van je PIC maar het levert 5 extra op. Hier kan je zien hoe je er meer als een kan gebruiken.

[Bericht gewijzigd door Brandon op maandag 7 maart 2011 19:11:07 (35%)

Ook hieraan heb ik zitten denken, maar dat kost mij ook weer een totaal nieuwe layout.
Als ik toch ooit aan een nieuwe PCB moet, ga ik het helemaal anders aanpakken, nl. met gekoppelde pics die d.m.v. uart met elkaar communiceren.
eentje voor de sensoren en eentje, alleen voor de motorbesturing.
Op dit moment zoek ik even iets simpelers om als noodstop te fungeren.