INHOUDSOPGAWE:

Bou u eie selfry -motor - (hierdie instruksies werk tans): 7 stappe
Bou u eie selfry -motor - (hierdie instruksies werk tans): 7 stappe

Video: Bou u eie selfry -motor - (hierdie instruksies werk tans): 7 stappe

Video: Bou u eie selfry -motor - (hierdie instruksies werk tans): 7 stappe
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, Julie
Anonim
Image
Image

Hallo, As u kyk na my ander Instructable on Drive Robot With Remote USB Gamepad, is hierdie projek soortgelyk, maar op kleiner skaal. U kan ook volg of hulp of inspirasie kry by die afspeellyste Robotics, Home-Grown Voice Recognition of Self-Driving Car op Youtube.

Ek het begin met die groot robot (Wallace 4), maar sedert ek 'n plaaslike Meetup -groep begin het, het ek iets op 'n kleiner skaal nodig gehad, en die groep was baie geïnteresseerd in rekenaarvisie.

So het ek hierdie Udemy-kursus teëgekom: Bou u eie selfry-motor wat my die idee vir hierdie projek gegee het.

As u belangstel in die Udemy -kursus, kan u daar bly kyk; dit word van tyd tot tyd te koop aangebied vir 'n groot afslag. Let wel: daar is deel 1 en deel 2 - u moet ondersoek instel na hoe u die twee kursusse as pakket kry (afslag).

Die doel van hierdie instruksies is tweeledig. Eerstens om 'n paar wenke en alternatiewe vir sekere gedeeltes van die kursus te gee (soos die onderdele en hardeware). En tweedens, om uit te brei op die kursus.

Die hoofdoel van die Udemy -kursus:

is om 'n robotmotor met 'n klein wiel te laat ry om self te ry op 'n afgeskaalde tweespoorpad.

Dit moet die baanstrepe herken en wanneer dit die einde van die pad bereik het.

Dit moet 'n stopteken herken (en stop).

Ook 'n ROOI en GROEN verkeerssein.

Dit moet ook herken en maneuver rondom 'n hindernis ('n ander motor).

Wat hierdie instruksies by die kursus voeg:

Bestuur die motor met 'n afgeleë USB -gamepad, op dieselfde manier as in hierdie ander instruksies.

Gee 'n paar alternatiewe vir wat die kursus bied.

U hoef miskien nie eers die kursus te koop nie:

Hierdie instruksies is dalk alles wat u nodig het om aan die gang te kom.

Voorrade

Die belangrikste (voorgestelde) dele:

'N Robot -onderstel

Vier motors

Arduino

Framboos Pi (3, 3B+, 4)

Kamera (USB -webkamera of Picamera -module)

Batterykrag

Aan/af skakelaars

springdrade

afwykings (plastiek en miskien ook metaal)

Lees die volledige instruksies en ook die video's voordat u probeer om onderdele te koop.

Nadat ek hierdie projek gedoen het, besef ek dat die presiese dele nie so krities is nie.

Stap 1: Meer besonderhede oor die onderdele …

Image
Image
Meer besonderhede oor die onderdele …
Meer besonderhede oor die onderdele …
Meer besonderhede oor die onderdele …
Meer besonderhede oor die onderdele …

Die gepaardgaande video gaan in detail oor die dele en sommige probleme wat ek gevind het.

  • Kyk rond vir verskillende onderstel / motors
  • Daar moet reeds drade aan die motors gesoldeer wees
  • U wil dalk 'n boor of boorpunte hê, OF 'n onderstel met meer gate
  • Hou in gedagte dat gewig 'n probleem is. Alles moet so lig as moontlik wees.
  • Die motorbestuurder van die L298 H-Bridge werk uitstekend. LET WEL: kry een met die skroefklemblokke (sien foto)
  • U sal waarskynlik plastiek- en metaalafstande wil hê; grootte M3 is waarskynlik die beste keuse.

Plastiese afstande is goed vir die montering van die planke op die onderstel (motorbestuurder, Arduino, Framboos, kragkaart, aan/uit -skakelaar, ens.).

Metaalafstande is goed vir die montering van die onderstel (sterkte), en veral ook as u ontwikkel (programmeer, toets). Vir ontwikkeling kan die metaalafstande as stelte dien. Net soos as u aan 'n regte motor gewerk het, wil u die motor lig sodat die wiele in die lug is en vrylik kan beweeg. Dit is baie belangrik! U maak foute en u wil nie hê dat die motor net moet opstyg en neerstort nie.

Boor + boorpunte

Ek wil regtig die gebruik van 'n boor beklemtoon, indien moontlik, en die gebruik van afstande in plaas van dubbelzijdige kleeflint. Dit is waarskynlik dat u u planke, ens., Tydens die projek verskeie kere sal verwyder en herposisioneer, en die gebruik van die band word baie morsig.

Deur 'n boor te gebruik, is dit baie maklik om weer te posisioneer (veral as die onderstel van plastiek is) en dit lyk meer professioneel.

Stap 2: Die motor word tydens ontwikkeling aangeskakel

Die motor dryf tydens ontwikkeling
Die motor dryf tydens ontwikkeling
Die motor dryf tydens ontwikkeling
Die motor dryf tydens ontwikkeling

Na my mening is die vinnigste en maklikste manier om met hierdie projek te begin:

  • Koppel die Arduino vir die ontwikkeling van sagteware met Arduino -sketse via u USB aan u rekenaar
  • vir sagteware Raspberry Pi, moet u 'n 5V USB -krag hê wat ten minste 3 Ampere kan voorsien. En dit moet 'n aan/uit -skakelaar hê. Tensy u 'n goeie USB -hub met 'n kragbron aan u rekenaar gekoppel het, sal u die Framboos waarskynlik nie direk vanaf u rekenaar kan dryf nie.
  • Want as u gereed is om die motors/wiele te toets, is die maklikste (sien foto) 'n goeie kragtoevoer. Dit is egter nie goedkoop nie.

My punt met hierdie afdeling is om te sê dat u nie batterykrag tydens die ontwikkeling wil gebruik nie, want dit sal u vordering aansienlik vertraag.

As u iets soortgelyk aan die voorstelle hierbo doen, hoef u (nog) nie bekommerd te wees oor presies hoe u die motor sal dryf nie. U kan die besluit uitstel vir later in die projek.

Stap 3: Die motor word aangedryf tydens werklike gebruik

Die motor dryf tydens werklike gebruik
Die motor dryf tydens werklike gebruik
Die motor dryf tydens werklike gebruik
Die motor dryf tydens werklike gebruik

As u besluit om die kursus (of wat ek gedoen het) vir 5V -krag na die logika te volg, moet u daarop let dat nie alle 5V USB -kragbanke goed is vir hierdie projek nie.

Die belangrikste punt hier is dat u 5V benodig, maar u benodig ten minste 3 ampère! Dink daaraan: u wil 'n powerbank hê (miskien).

As u in die VSA woon, dink ek dat een van die beste maniere om dit te doen, is om by Best Buy te koop. Hoekom? Vanweë hul geldterugbeleid van 14 dae vir opbrengste.

Ek moes eintlik drie verskillende kragbanke probeer voordat ek een kry wat werk. Die ander laat die Raspberry Pi kla oor onderspanning.

Ek het begin met die goedkoopste powerbank, en het net aanhou probeer met die volgende model (wat meer gekos het), totdat ek een gevind het wat werk.

Hoe om die Arduino aan te dryf

In die Udemy -kursus het die skrywer gekies om die Arduino direk van die powerbank af te stuur (deur 'n pasgemaakte PCB wat hy gemaak het) en hy gebruik kragpenne op die GPIO -aansluiting van die Arduino.

Ek het egter gekies om die Arduino net via die USB -kabel direk vanaf die Raspberry Pi aan te dryf.

U sal moet besluit watter een beter is.

Hoe om die motors/motorbestuurder aan te dryf

In die Udemy -kursus het die skrywer gekies om die motors/bestuurder direk vanaf die 5V -kragbank aan te dryf. Daar is twee oorwegings as u hierdie benadering gebruik.

  1. As die motors eers begin draai, trek hulle die meeste stroom. Dit kan (sal) veroorsaak dat die netspanning onder 5V sak (daal) en veroorsaak dat die Framboos herstel word.
  2. Deur slegs 5V te gebruik om die motors aan te dryf, beteken dit dat u nie soveel krag as moontlik aan die motors verskaf nie, en die motor sal stadiger (stadiger) beweeg. Ek het die motors (met die kragtoevoer) (sien foto) tot ten minste 9V getoets. Hulle werk goed teen 9V.

Waarnemings oor 9V (of meer)

As u na al die foto's en video's vir hierdie Instructable gekyk het, het u opgemerk dat ek 'n pasgemaakte PCB saamgestel het om my eie 9V -kragbron te skep. Ek het 'n paar dinge onderweg geleer.

Op die oomblik gebruik ek verskeie (3) 9V batteryselle parallel om die motors aan te dryf. Ek het beide alkaliese en NiMH herlaaibare batterye gebruik.

Leerervaring #1: Dit neem lank (baie ure) om die NiMH 9V -batterye behoorlik te laai.

Moontlike oplossing: Belê in 'n multi-battery NiMH-laaier. Dit moet 'n 'slim' laaier wees.

Nadeel: hulle is nie goedkoop nie.

Leerervaring #2: 9V -batterye bestaan eintlik uit verskeie klein binneselle. As een van die selle sterf, is die hele battery nutteloos. Ek het NIE hierdie probleem gehad nie, maar ek het daarvan gelees.

Leerervaring #3: Nie alle 9V -batterye het dieselfde spanning nie. Hierdie een is belangrik. Omdat hoe hoër die spanning, hoe meer spoed is moontlik. Sommige batteryselle (en laaiers) is slegs 8,4V. Sommige nog minder. Sommige is 9,6V.

Leerervaring #4: 9V -batterye, veral NiMH -batterye, is lig. 'N Goeie ding. Die meeste van hulle lewer egter slegs mA se uitsetstroom. Daarom moes ek hulle parallel plaas. U benodig 'n totale huidige kapasiteit van byna 2 ampère, selfs vir 'n kort tydjie.

Leerervaring #5: Daar bestaan 9.6V-batterypakke, wat gebruik word vir dinge soos radio-beheerde motors. Ek het nog nie een gebruik nie, maar ek glo dat hulle meer stroom bied as om parallelle 9V -batterye te gebruik, net soos ek. U kan ook die enkele eenheid laai. Die pakkies kom in verskillende groottes. En daar is 'n oorweging van gewig. Gebruik u die pak dan om die hele motor of net die motors aan te dryf? As u die hele motor nodig het, benodig u 'n 5V-trappasreguleerder vir die Raspberry Pi.

Die L298 H-Bridge het wel die vermoë om 5V vir hierdie doel uit te voer, maar ek is bekommerd oor hoeveel stroom dit vir die Raspberry Pi kan lewer, en of dit te veel spanning op die L298-bord sal veroorsaak.

As u besluit om twee afsonderlike kragbronne te hê, kan u 'n gewigsprobleem hê (te swaar).

Stap 4: Sagteware -programmering vir die bestuur van die gamepad

Ek dink ek het al baie van hierdie gedeelte in die Robot -driven Via Remote USB Gamepad Instructable behandel, so ek sal dit nie hier herhaal nie.

Die programmeer-/sagteware -afdelings in die ander instruksies is slegs 'n voorstel. Ek dink 'n mens leer meer deur proef-en-fout.

Stap 5: Voeg 'n kamera by

Voeg 'n kamera by
Voeg 'n kamera by
Voeg 'n kamera by
Voeg 'n kamera by
Voeg 'n kamera by
Voeg 'n kamera by

In die Udemy -kursus glo ek dat die skrywer ronde houtplowe en 'n gomgeweer gebruik om 'n manier te maak om die kamera te lig.

U sal die kamera wil lig sodat dit na die tweespoorpaadjie kyk, sodat dit die bane makliker kan herken.

Waar ek in die VSA woon, was die houtpennetjies baie goedkoop. U kan dit by Lowe's of Home Depot koop. Ek het vierkantige spykers gekies in plaas van ronde spykers.

Ek het ook gekies om 'n stewiger basis vir die kameratoring te maak, en ek het die hele toring uit die motor verwyderbaar gemaak, sodat ek kan speel en eksperimenteer met die beste posisie vir die motor.

Ek het ook die toring gemaak met die idee dat ek met 'n USB -webkamera sal begin, maar moontlik later met die Picamera -module kan gaan.

Miskien wil u belê in 'n vis-tipe kamera.

Ek het 'n baie goedkoop warm lijmpistool gekoop, maar ek wou die basis van die toring beter versterk, so ek het 'n paar skroefgate geboor en skroewe bygevoeg om alles beter bymekaar te hou.

Toe het ek die basis vasgemaak aan die onderstel van die motor.

As ek later dinge wil skuif, los ek die basis van die onderstel, boor nuwe gate in die nuwe plek van die onderstel en draai die toring weer op die onderstel vas.

Ek het die 'volg-my' Python- en Node.js-kode van die groot robot (Wallace Robot 4) oorgedra as 'n manier om alles te toets. Sien die foto's in hierdie afdeling vir 'n lys youtubes wat baie meer inligting gee oor 'volg-my'.

Soos ek genoem het, was dit makliker om eers 'n USB -webkamera te monteer. Later kan ek die Picamera -module monteer.

Stap 6: Gesigherkenning - Bepaal posisie

Image
Image

Hierdie deel is nie die fokus van die Udemy -kursus nie, maar dit was 'n prettige oefening.

As u op die internet soek na 'python opencv -gesigherkenning', vind u baie goeie voorbeelde van hoe u dit kan doen, en almal volg dieselfde stappe.

  1. laai die "haar" gesiglêer
  2. initialiseer die kamera
  3. begin 'n lus waar jy 'n raam gryp
  4. verander die kleurbeeld na grysskaal
  5. voer dit aan die opencv sodat dit gesig (e) kan vind
  6. begin 'n innerlike lus (vir elke gesig wat gevind word) (in my geval voeg ek kode by om te aborteer as meer as 1 gesig)

Vir hierdie doel ken ons, sodra ons 'n gesig opgespoor het, die X, Y, W en H van die denkbeeldige vierkant wat die gesig omlyn.

As u wil hê dat die robot vorentoe of agtertoe moet beweeg, moet u net in ag neem W. As W te groot is (te naby), moet die robot terugbeweeg. As W te klein (te ver) is, laat die robot vorentoe beweeg.

Links/regs beweging is net 'n bietjie meer ingewikkeld, maar nie mal nie. Kyk na die prentjie in hierdie afdeling wat beskryf hoe om die posisie van die linker- en regterkant te bepaal.

LET WEL:

As u een van die web -OpenCV -voorbeelde gebruik, toon hulle almal die werklike siening van wat opencv "sien", met die gesig in 'n vierkant. As u dit waarneem, is die vierkant nie bestendig (konstant), selfs as u nie beweeg nie.

Die veranderende waardes veroorsaak dat die robot voortdurend in beweging is, vorentoe of agtertoe, links of regs.

U sal dus 'n soort delta moet hê, beide vorentoe/agtertoe en links/regs.

Kom ons neem links vs regs:

Sodra u links en regs bereken het, kry u die verskil (delta):

delta = abs (links - regs)

U moet die absolute neem, want u weet nie watter een die grootste getal sal wees nie.

Dan voeg u 'n voorwaardelike kode by om slegs te probeer beweeg as die delta groter is as 'n minimum.

U sou dieselfde doen vir vorentoe vs agtertoe.

Stap 7: Gesigsposisie - bewegende robot

As u eers weet dat u die robot nodig het om links of regs, vorentoe of agtertoe te beweeg, hoe doen u dit?

Aangesien hierdie Instructable tans 'n proses is, het ek op die oomblik die kode van my groot robot oorgedra om vir hierdie projek te gebruik. Kyk gerus na my Robotics -snitlys op YouTube, waar alles hieroor uiteengesit word.

Kortliks, ek het die kode in lae.

Python-gesigherkenningsskrif maak http-versoeke aan die Node.js-bediener

Node.js -bediener luister na http -versoeke vir rigtingaanwysings, omskakel dit in pasgemaakte seriële protokol

Pasgemaakte seriële protokol tussen Node.js -bediener en Arduino

Arduino -skets wat die werklike opdragte doen om die robot te beweeg

Die Udemy -kursus doen dit nie soos hierbo nie. Maar aangesien ek goeie vordering wou maak en my wou toespits op die werklike beeldherkenning, het ek my vorige kode vir eers weer gebruik.

Aanbeveel: