Instappen in de wereld van Robotica


Op 31 oktober 2020 10:50:57 schreef Arco:
Als een simpele microcontroller het niet meer aan kan moet het wel een heel ingewikkeld probleem zijn... ;)

Inderdaad, mensen grijpen onnodig snel naar een rPi. En hoewel zo'n ding natuurlijk voor een habbekrats te krijgen is, heeft de overhead van alles wat je erbij krijgt (een OS bijvoorbeeld) ook nadelen. Bijvoorbeeld het realtime (dat is niet hetzelfde als "heel snel") verwerken van sensor-data.

Maar er bestaan zeker robotica toepassingen waar je met een simpele microcontroller niet meer wegkomt. Ik noem maar even een webcam met objectdetectie/beeldherkenning.

If you want to succeed, double your failure rate.

Op 30 oktober 2020 09:02:58 schreef bnw:
Ik heb niet echt een functioneel doel voor ogen....

Dat is een heel slecht begin, zomaar iets leren programmeren werkt niet.
Je moet iets voor ogen hebben, hoe eenvoudig ook en je moet ervoor gaan tot het werkt... dat is het begin!
Al die doelen die je beschrijft zijn in mijn ogen eerder dagdromen waar zovelen van dromen maar weinigen ertoe komen.

LDmicro user.
Lambiek

Special Member

Op 31 oktober 2020 11:36:11 schreef MGP:
Dat is een heel slecht begin, zomaar iets leren programmeren werkt niet.
Je moet iets voor ogen hebben, hoe eenvoudig ook en je moet ervoor gaan tot het werkt... dat is het begin!
Al die doelen die je beschrijft zijn in mijn ogen eerder dagdromen waar zovelen van dromen maar weinigen ertoe komen.

Een waarheid als een koe. :)

Op 30 oktober 2020 09:02:58 schreef bnw:
Heeft iemand nog andere ideeën om bovenstaande doelen te bereiken en zijn er nog interessanter websites die je goed op weg kunnen helpen?

Dit is wel leuk. :)

https://www.youtube.com/watch?v=7zBrbdU_y0s&feature=youtu.be

Of deze.

https://www.youtube.com/watch?v=WcW70-6eQcY

Als je haar maar goed zit, GROETEN LAMBIEK.

Dank jullie allemaal voor de reacties, ik heb al een hoop interessante informatie dank zij jullie.

@MGP en @Lambiek:
Geen doelen is wat ongelukkig gezegd misschien.

Doelen zijn:
- bekend raken in robotica en hierover leren
- een mooi hobby project met een combinatie van mechanica, elektronica en programmeerwerk
- mijn programmeer kennis uitbreiden en vaardigheden verbeteren

Daarbij heb ik de tick dat ik gefascineerd ben door meten en meters, dus ik wil graag experimenteren met allerlei soorten sensoren!

Mede dankzij jullie heb ik een idee hoe ik ga starten:

  • Ik ga beginnen met een simpel robot chassis, twee wielen plus zwenkwieltje
  • Afgaand op jullie reacties, begin ik maar eens met de Uno microcontroller en laat ik de Raspberry's nog maar even in de lade liggen
  • Als start heb ik al een aantal mooie eerste doelen: laten rijden en aansturen (met gebruik van speed sensoren), obstakels vermijden, lijn volgen, follow me modus, tafelrand detectie,....

Volgens mij ben ik dan al heel wat uurtjes zoet en heel wat leer ervaring verder!

Nu heb ik al wel wat ervaring met het programmeren van esp8266 printjes (heb lichtschakelaars en een buiten-bewegingssensor gemaakt voor mijn Philips Hue verlichting).
Daarbij heb ik via wifi ook toegang tot de printjes om bijvoorbeeld een OTA update te doen.

Ik neem aan dat ik ook een esp8266 op de Uno kan aansluiten en die kan gebruiken voor communicatie naar een PC en voor het uitvoeren van een update?

Zo, dat klinkt al als een beter plan, toch?

En wat zijn nu complexe handelingen, mijn ervaring is dat een micro controller dat ook best aan kan.

Ik bedoelde daar taken zoals video verwerking ed

Nog een ander vraagje:

Als het aankomt op het aantal aan te sluiten sensoren, ben je dan beperkt tot de fysiek aanwezige (gpio) pennen?

En als je door de aansluitingen heen bent, kun je dan nog uitbreiden via een twee Arduino?
Of kun je sensoren ook bijvoorbeeld aansluiten via een bus-systeem over dezelfde aansluitingen uitlezen?

Dat hang helemaal af van het type sensor en de module waarop de sensor zit.
Als je een sensor hebt die je direct aan een IO pin koppelt dan ben je beperkt tot het fysiek aantal io pinnen. Echter als je de sensor dan weer koppelt aan een multiplexer IC dan kan je in principe onbeperkt uitbreiden maar wel ten koste van snelheid van het uitlezen van sensoren.

Voor het uitlezen van drukknoppen van zeg een toetsenbord kan je ook de intern IO gaan multiplexen zo kan je met 4 uitgangen en 4 ingangen al 16 toetsen inlezen door 1 voor 1 de uitgangen apart hoog te maken en dan 4 ingangen te lezen. En er zijn zelfs technieken waarbij je nog veel meer toetsen kan uitlezen door de toetsen heel slim te plaatsen.
Die werkt ook met het aansturen van leds, met 4 x 4 io pennen kan je dan 16 leds aansturen en ook daar bestaan weer variaties op de je nog veel meer leds kan aansturen. Een combinatie van toetsen en leds is ook mogelijk.

Je hebt ook sensoren met bv een I2S aansturing dan ben je beperkt tot het aantal adressen wat de betreffende sensor maximaal heeft, maar dan kan je dan wel combineren met een andere sensor die op fysiek andere adres range werkt ik dat even uit mijn hoofd dat een op een I2S bus max 128 adressen kunnen worden herkent.

Er bestaan ook IO uitbreiding IC die veelal via I2S werken, deze IC werken autonoom qua inlezen van de IO en bewaren de data totdat je ze hebt uitgelezen, de exacte werking van de IO is dan zelf in te stellen via de software.

En er zijn nog vele andere bus-systemen.

kun je dan nog uitbreiden via een twee Arduino?

Ook dat kan maar dat kan de software weer heel complex maken.

Maar tegen die tijd dat je zoveel sensoren, leds en drukknoppen hebt moet je eerst nog heel veel oefen met het schrijven van eigen software en is in eerste instantie zonder ervaring 1 led en drukknop al uitdagen genoeg.

[Bericht gewijzigd door benleentje op 1 november 2020 17:31:50 (13%)]

Zo, spulletjes zijn besteld!

  • chassis met uno print (clone), motorregelaar, servo, sensor shield, enz...
  • Diverse sensoren: ultrasoon, infrarood, speed sensor
  • Oled display
  • Esp8266 wifi board

Daar kan ik eerst wel even mee vooruit denk ik!

Op 1 november 2020 15:09:20 schreef bnw:
..
@MGP en @Lambiek:
Geen doelen is wat ongelukkig gezegd misschien...

Niet veel van aantrekken, iedereen heeft wel van die periodes waar hij/zij het gevoel heeft van alles aan te kunnen, ook wij, met de leeftijd zwakt dat wat af....of is het de ervaring? ;)

LDmicro user.

@MGP
dat zal ik niet doen hoor... :)
Hm, wat betreft de leeftijd zou het dan langzaamaan wel een beetje moeten gaan afzwakken.... :P

En dan nu maar wachten totdat alles binnen is. Aangezien het uit China komt, zal het nog wel een paar weekjes duren.

Wat betreft het vermijden zie ik vaak een ultrasoon sensor op een servo. Op het moment dat de voorkant te dicht op een obstakel komt, stopt de robot en "kijkt" dan een keer links en rechts om te kijken waar de meeste ruimte is.
Maar zoiets zou je toch ook met drie ultrasoon sensors kunnen doen zonder de servo?
Wanneer de voorkant te dicht op een obstakel komt, laat je de twee buitenste sensoren, die iets onder een hoek naar buiten staan, de afstand peilen om de nieuwe richting te bepalen?

Wat zijn redenen of voordelen om voor het ene of juist het andere systeem te kiezen?

Ben niet zo thuis in het robotgebeuren maar ik vermoed dat het esthetische ook een rol speelt, twee zogezegde ogen die rondkijken heeft altijd iets geheimzinnigs ;)

LDmicro user.
Lambiek

Special Member

Op 2 november 2020 19:09:43 schreef bnw:
Wat betreft het vermijden zie ik vaak een ultrasoon sensor op een servo.

Je kunt zoiets ook via IR doen, Sharp heeft daar mooie sensoren voor.

Maar zoiets zou je toch ook met drie ultrasoon sensors kunnen doen zonder de servo?

Dan heb je wel kans dat de ene sensor de andere kan beïnvloeden.

Wat zijn redenen of voordelen om voor het ene of juist het andere systeem te kiezen?

Dat is puur persoonlijk. De een houd van de moeder en de ander houd van de dochter. :)

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 2 november 2020 19:31:40 schreef Lambiek:
[...]
Je kunt zoiets ook via IR doen, Sharp heeft daar mooie sensoren voor.

[...]
Dan heb je wel kans dat de ene sensor de andere kan beïnvloeden.

[...]
Dat is puur persoonlijk. De een houd van de moeder en de ander houd van de dochter. :)

:)
Ik heb diverse ultrasoon en diverse infrarood sensoren besteld, dus ik ga zeker met meerdere systemen experimenteren! Dat is ook één van dingen die ik met deze nieuwe hobby wil gaan doen.

Als je 3 sensoren gebruikt en je laat die omstebeurt peilen, dan heb je toch net zo veel/weinig last van verstoring als wanneer je één sensor in drie verschillende richtingen laat peilen? Als je ze maar niet tegelijkertijd laat peilen?

Is het trouwens mogelijk om ultrasoon sensoren op verschillende frequenties te laten werken zodat ze van elkaar te onderscheiden zijn?

Op 2 november 2020 19:38:01 schreef bnw:
...
Is het trouwens mogelijk om ultrasoon sensoren op verschillende frequenties te laten werken zodat ze van elkaar te onderscheiden zijn?

Nee, maar dat is niet nodig, in deze link kun je lezen waarom.

https://opencircuit.be/Blog/HC-SR04-Ultrasonische-sensoren-op-een-Ardu…

LDmicro user.

Op 2 november 2020 19:46:40 schreef MGP:
[...]
Nee, maar dat is niet nodig, in deze link kun je lezen waarom.

https://opencircuit.be/Blog/HC-SR04-Ultrasonische-sensoren-op-een-Ardu…

Ik had al iets gevonden over het aansturen van meerdere ultrasone sensoren, maar de link die jij gaf wel heel duidelijk! Tnx!

High met Henk

Special Member

De lijnvolger is altijd een leuk begin.

1 sensor methode. Ik zie een lijn. Mooi ik kan rijden.
Hee geen lijn meer..
Zit links een lijn.. O mooi rijden
Zit links geen lijn.. O, dan ga ik naar rechts tot ik een lijn zie.

De 2 sensor methode met sensoren net buiten de lijnen.
Hee ik zie geen lijn.. Mooi rijden dus.
Hee ik zie een lijn op links, mooi, moet dus klein beetje naar links
Dito voor rechts..
En wat doe je als de lijn eindigt??

De 2 sensor methode met 2 sensoren op de lijn werkt beter
Maar is ook wel weer complex

Dus kies ik voor de 3 sensor methode..

Nou heb je de lijn volger..

En wat als er een object op de lijn staat??

En nu nog een afstandsbediening om om te keren op de lijn.

Oef is al best complex programma.

Nu gaan we naar analoog. Laat hem een lichtbron volgen. Of de luidste plek ergens zoeken op de lijn..

Legio leuke zaken

E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???

Op 2 november 2020 21:00:40 schreef High met Henk:
De lijnvolger is altijd een leuk begin.

1 sensor methode. Ik zie een lijn. Mooi ik kan rijden.
Hee geen lijn meer..
Zit links een lijn.. O mooi rijden
Zit links geen lijn.. O, dan ga ik naar rechts tot ik een lijn zie.

De 2 sensor methode met sensoren net buiten de lijnen.
Hee ik zie geen lijn.. Mooi rijden dus.
Hee ik zie een lijn op links, mooi, moet dus klein beetje naar links
Dito voor rechts..
En wat doe je als de lijn eindigt??

De 2 sensor methode met 2 sensoren op de lijn werkt beter
Maar is ook wel weer complex

Dus kies ik voor de 3 sensor methode..

Nou heb je de lijn volger..

En wat als er een object op de lijn staat??

En nu nog een afstandsbediening om om te keren op de lijn.

Oef is al best complex programma.

Nu gaan we naar analoog. Laat hem een lichtbron volgen. Of de luidste plek ergens zoeken op de lijn..

Legio leuke zaken

Inderdaad genoeg leuke dingen om uit te proberen en te leren.
Bedankt voor je reactie!

@HmH: 2 of 3 sensoren voor een lijnvolger is leuk (en super robuust), maar de truuk is met 1 sensor om niet te gaan "kwispelen" (zie ik links iets? zie ik rechts iets?) maar om te zoeken naar een 'grijswaarde'. Dan zit je namelijk op het randje van de lijn en kun je als je donker of licht ziet gelijk de juiste kant op corrigeren.

If you want to succeed, double your failure rate.
High met Henk

Special Member

Ik begon bewust met binaire sensoren.

Lijkt me didactisch moeilijk genoeg.

Kijk een geoefend programmeur ziet deze beginnersfout ook zo:
Let op.. sensoren op b0, b1 en b2 in dit voorbeeld

c code:


If (portb & 0b000000111) == 0
{
    // Geen lijn
}
elseif (portb & 0b000000111) == 1
{
    // Lijn uiterst links
}
elseif (portb & 0b000000111) == 2
{
    // Lijn in het midden
}
elseif (portb & 0b000000111) == 3
{
    // Lijn beetje links
}
elseif (portb & 0b000000111) == 4
{
    // Lijn uiterst rechts
}
elseif (portb & 0b000000111) == 5
{
    // Lijn uiterst links en uiterst rechts, splitsing???
}
elseif (portb & 0b000000111) == 6
{
    // Lijn beetje rechts
}
elseif (portb & 0b000000111) == 7
{
    // Lijn overal; dwars op de lijn???
}
else
{
    println("error");
}

Als ongetrainde zou je zeggen met 3 bits van 0 tot 7, dus is altijd waar toch?? error komt nooit voor.. toch wel dus!!

Maar een beginner is hier al paar uurtjes zoet mee...

Nee niet verklappen als je het ziet!!
Je ondermijnt het didactisch model op veel scholen..

E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???

Weet je zeker dat er maar 1 fout in zit? Ik zie er minstens 2, en toen las ik dat ik ze niet mocht verklappen...

[spoiler alert]
Misschien 3 als je compiler in de war raakt van gebrek aan haakjes. (Of is portb een variabele waar je pinb in stopt? Da's dan vooral verwarrend en niet per se fout -je waarde blijft dan tenminste gelijk terwijl je die switch-case doorloopt. Uh, de ifjes(kerst)boom doorloopt. Ik neem aan dat het op een AVR draait trouwens, en dus big endian. Niet dat je bitmask ook nog eens verkeerd om is ofzo..)
[/]

(Hopelijk zo voldoende obfuscated en verpakt onder non-issues. Er staat niks in wat een student niet door zijn buurman kan horen zeggen, en dan nog, ze moeten het van iemand leren / op een manier uitvissen. Ze weten het niet magisch vanzelf na lang genoeg staren)

[Bericht gewijzigd door Lucky Luke op 3 november 2020 21:58:00 (11%)]

Eluke.nl // Backwards Lightspeed Bus: i*i=-1, so iic=-c.
High met Henk

Special Member

Het is een pseudo code, dus niet gebaseerd op enige controller...

Zelf zou ik een switch case gebruiken, maar ik weet dat de arduino ide daar niet zo leuk mee was...
Dus bewust de elseif optie gekozen.

De switch case lost het probleem nl vanzelf op..

E = MC^2, dus de magnetische compatibiliteit doet kwadratisch mee???

Het nadeel van spulletjes in China bestellen is dat je er een tijdje op moet wachten.

Gelukkig heb ik nog een esp8266 printje liggen dus ik ben al vast wat kleine dingetjes aan het uitproberen, zoals de simpele dingetjes van in- en uitschakelen van een led, het toepassen (en uitlezen) van een schakelaar, het reageren op een PIR sensor....

Omdat ik straks de robot chassis ook met mijn modelbouw zender zou willen gebruiken, heb ik daar ook wat mee gespeeld.
Het is me gelukt om het PWM signaal van mijn RC receiver uit te lezen en via de esp8862 board weer om te zetten naar een beweging van een servo.

Dus ik ben vast wat basisdingetjes aan het leren en uitproberen.

Ik heb nog wel een vraag.
Bij het chassis pakketje zit een Arduino Uno (clone).
Het zal niet zo maar te beantwoorden zijn, maar hoe lang kun je er mee vooruit?
Of anders gezegd, wanneer breekt de tijd aan dat je in plaats van een Uno board over moet gaan stappen op een Arduino Mega board?

Ik zag dat die veel meer IO pinnen heeft en ook een stuk meer memory.
Het zal natuurlijk onder andere afhangen van de hoeveelheid sensoren, maar ik heb straks bijvoorbeeld ook een OLED paneeltje. Is die al met een Uno te gebruiken, of redt die dat niet meer?

Of anders gezegd, wanneer breekt de tijd aan dat je in plaats van een Uno board over moet gaan stappen op een Arduino Mega board?

Dat is niet te zeggen. Ik denk dat de meeste nooit naar een Mega hoeven overstappen omdat ze enkele eenvoudige oplossingen maken specifiek voor een specifiek probleem.

Ook omdat er ontzettend veel te krijgen in I2S en spi aansluitingen zal je met de Uno ook nog heel erg ver komen.

Met zoveel sensoren heb je ook een zeer uitgebreid programma nodig war maar weinig mensen zich aan wagen.

In machines die ik ken met veel motoren, actuatoren en sensoren zitten vrijwel altijd PLC's voor de besturing met veel IO modules. PLC's zijn robuuster en hebben veel kleinere kans op uitval en fouten.

Op 15 november 2020 17:27:32 schreef benleentje:
[...]Dat is niet te zeggen. Ik denk dat de meeste nooit naar een Mega hoeven overstappen omdat ze enkele eenvoudige oplossingen maken specifiek voor een specifiek probleem.

Ook omdat er ontzettend veel te krijgen in I2S en spi aansluitingen zal je met de Uno ook nog heel erg ver komen.

Met zoveel sensoren heb je ook een zeer uitgebreid programma nodig war maar weinig mensen zich aan wagen.

In machines die ik ken met veel motoren, actuatoren en sensoren zitten vrijwel altijd PLC's voor de besturing met veel IO modules. PLC's zijn robuuster en hebben veel kleinere kans op uitval en fouten.

Dank je voor je reactie!
Ik ga eerst wel eens met de Uno aan de gang, die heb ik er tenslotte in de bestelling zitten!

Ondertussen is het me ook gelukt de servo, aangesloten op de esp8266, te bedienen via een webpage op mijn mobiel.

Het is al leuk om deze basis dingen uit te proberen, dan kan ik die straks gaan combineren!

Het is ongebruikelijk om een hele post te quoten zeker als je de eerste volgende bent die erop antwoord. Probeer zoveel mogelijk de quotes strak en compact te houden en zo min mogelijk overbodig te quoten, dan komt de leesbaarheid van het topic ten goede.