Indholdsfortegnelse:

Byg et Arduino-drevet talende robothoved !: 26 trin (med billeder)
Byg et Arduino-drevet talende robothoved !: 26 trin (med billeder)

Video: Byg et Arduino-drevet talende robothoved !: 26 trin (med billeder)

Video: Byg et Arduino-drevet talende robothoved !: 26 trin (med billeder)
Video: ARDUINO-TUTORIAL: BYG EN HÅNDSPRITDISPENSER // Step by step guide med link til komponenter 2024, Juli
Anonim
Byg et Arduino-drevet talende robothoved!
Byg et Arduino-drevet talende robothoved!

Dette robothoved blev oprindeligt bygget som et projekt ved slutningen af året til min fysiske computerklasse, men i løbet af sommeren har det "lært", hvordan man taler. Hovedet drives af to Freeduinos, 3 TLC5940NT chips og et Adafruit Industries Wave Shield fundet her: www.ladyada.net/make/waveshield/. Hovedet er i øjeblikket forbundet til en computer med to USB -kabler, et til strøm, et til at sende det serielle kommandoer om, hvad man skal sige/emote. Når hovedet modtager de indtastede kommandoer om, hvad der skal siges/emoteres, afspiller det de enkelte ordfiler for at skabe en sætning eller flere sætninger. Det ændrer også sine følelser i henhold til de følelsesmæssige kommandoer, der sendes fra computeren. Dette robothoved er et fundament for mange mulige applikationer, da det kan sige alt, hvad det har ordforråd til. Lige nu arbejder jeg i øjeblikket på at forbinde det til internettet og få det til at tjekke og læse min e -mail via PHP -script. Jeg vil opdatere denne Instructable, efterhånden som jeg skrider fremad med det. Her er en video af det i aktion: Hovedet er stadig et igangværende projekt, så eventuelle kommentarer til alt her er mere end velkomne! Særlig tak til Liz Arum for at hjælpe mig med alt! Opdatering: På grund af populær anmodning har jeg nu tilføjet en video af robotten, der taler og udtrykker sig! Nyd i fritiden!

Trin 1: Kompilér alle materialer/dele/elektronik

Dette robothoved bruger: 1 brødbræt (det skal være mere end 48 rækker langt med et hul, der løber ned på midten af brættet for at forbinde IC -chips. En strøm- og jordbus, der kører langs brødbrættets side, er også en nødvendighed.) 2 RGB -lysdioder (til flerfarvede øjne) Fælles anode. $ 1,50 - 1,95 hver. 2 X $ 1,75 = $ 3,5036 Red Leds (til munden) et sted omkring prisklassen på 40-50 cent for hver. 36 X $.45 = $ 16.202 HXT900 Micro Servoer (til bevægelse af øjenbrynene) Findes på: https://www.hobbycity.com/hobbycity/store/uh_viewItem.asp?idProduct=662 2 X $ 3,65 = $ 7.303 TLC5940NT's (Til køre/tænde alle lysdioderne og styre servoer) kan findes på Digi-key https://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=296-17732-5-ND, hvor de er prissat til 4,28 dollar. 3 X $ 4,28 = $ 12,84eller Mouser https://www.mouser.com/ProductDetail/Texas-Instruments/TLC5940NT/?qs=sGAEpiMZZMu8%252bGBKj8XSFEjwsgnt5grMZ49G/W4nR14%3d3 kondensatorer (~ 1000 støj fra L servoer) Bjærget fra en gammel computer strømforsyning. Free2 Original Freeduinos eller Arduinos. Freeduinos kan købes på https://www.freeduino.org/buy.html De koster 23,99 pr. Stk. 2 X $ 23,99 = $ 47,98 Eller www.sparkfun.com/commerce/product_info.php til Arduinos. Prisen til $ 29,95 hver. 2 X $ 29,95 = $ 59,90. Advarsel: Freeduinos kræver en vis lodning, hvis du ikke vil lodde dine brædder, så køb en Arduino. Advarsel: Denne instruktør kræver alligevel en vis lodningskendskab, så hvorfor ikke starte nu?:) 1 Waveshield fra Adafruit Industries (For at lade robotten tale) Kan købes på: https://www.ladyada.net/make/waveshield/ Prissat til $ 22 pr. Estimeret samlet pris for alle højteknologiske dele (inkl. forsendelse), hvis du købte Freeduinos i stedet for Arduinos er…. $ 109,82! De samlede omkostninger ved alle højteknologiske dele, hvis du købte Arduinos i stedet for Freeduinos er …. $ 121,74! Og hvad angår de lavteknologiske materialer, du skal bruge: En papkasse af samme størrelse, som du vil have dit hoved. Et lille stykke kartonTapeGlueBreadboard-kompatibel tråd (22 gauge, solid) Tråd til fastgørelse af ting til andre ting En lille blok af træPower drill. Heat Krympeslange til isolering af de udsatte ledninger og noget, der blæser varm luft for at krympe den med (Hot air gun) Box cutter.

Trin 2: Saml og lod alle kredsløb og skærme

Saml og lod alle kredsløb og skærme
Saml og lod alle kredsløb og skærme

Lod Freeduinos (som jeg gjorde), eller se bort fra denne linje, hvis du købte en Arduino. Her er linket til deres samlevejledning til alle de mennesker, der købte Freeduinos: mcukits.com/2009/03/12/assembling-the-freeduino-board-kit/Solder the Waveshields. Lady Ada har en meget god guide til, hvordan man gør dette på sit websted på https://www.ladyada.net/make/waveshield/solder.htmlBemærk: Udover at lodde sammen Waveshield som beskrevet. Tilføj en lang ledning loddet på modstanden R7 på siden nærmest forstærkerchippen. Dette vil blive forbundet til den analoge indgang 1 på Freeduino, der styrer lysdioderne i robothovedet. (Du skal ikke bekymre dig om, hvor du skal tilslutte den anden ende af ledningen for nu, det vil blive forklaret i detaljer senere.) Se billedet for en afklaring om, hvor ledningen skal loddes.

Trin 3: Design robothovedet

Design robothovedet
Design robothovedet

Tag den papæske, du valgte at være dit hoved, og marker de steder, du gerne vil skære ud for øjnene og munden ved at skære stykker papir og lægge dem oven på din æske. Når du er tilfreds med arrangementet, kan du gå over til at skære ting.

Trin 4: Design dit robothoved: Skær øjnene ud

Design dit robothoved: Skær øjnene ud
Design dit robothoved: Skær øjnene ud

Tape eller markér brikkerne til deres endelige positioner på kassen og skær dem ud. (Gem det stykke papir, du plejede at repræsentere munden, du får brug for det senere.)

Trin 5: Design dit robothoved: Lav en LED -matrix til munden

Design dit robothoved: Lav en LED -matrix til munden
Design dit robothoved: Lav en LED -matrix til munden
Design dit robothoved: Lav en LED -matrix til munden
Design dit robothoved: Lav en LED -matrix til munden
Design dit robothoved: Lav en LED -matrix til munden
Design dit robothoved: Lav en LED -matrix til munden

Hver LED i munden lyser uafhængigt. For at gøre det skal du lave en LED -matrix til munden. (For en idé om, hvad der er en LED -matrix, se billede 1) Tag det stykke papir, der formodes at være munden, og opdel papiret i 36 dele (9 X 4) med en blyant og lineal, En til hver LED i gitteret. Efter at du har gjort det, skal du tape papiret på et stykke træ og passe på ikke at bore gennem gulvet (Dette er sket for mig, så jeg anbefaler at bore oven på en papkasse.) Bor huller, hvor linjerne skærer hinanden med en 1/4 tommer bor, så dine lysdioder sidder godt fast. Størrelsen på borekronen er naturligvis afhængig af størrelsen på dine lysdioder, så brug et mindre bor til mindre lysdioder. (Start i det små og arbejd dig op!) Se på billederne 2 & 3 for at få afklaret boringen/markeringen.

Trin 6: Making the Mouth LED Matrix: Lodning i LED'erne

Making the Mouth LED Matrix: Lodning i LED'erne
Making the Mouth LED Matrix: Lodning i LED'erne
Making the Mouth LED Matrix: Lodning i LED'erne
Making the Mouth LED Matrix: Lodning i LED'erne
Making the Mouth LED Matrix: Lodning i LED'erne
Making the Mouth LED Matrix: Lodning i LED'erne

Inden du gør noget andet, skal du kontrollere, at alle dine lysdioder ikke er udbrændte eller svage. Du kan gøre dette ved at finde et lille 3V knapbatteri og holde benene på lysdioderne fast på batteriet (Husk, at det lange ben er positivt, det korte negative). Indsæt derefter lysdioderne en række ad gangen i din udborede gitterjig. Fold de lange ben, så de er parallelle med hinanden, og lod dem ind, række for række (se billeder 2 & 3). Lod de lange ben sammen, da du vil bruge TLC'er til at styre disse lysdioder, og TLC'erne er dræn. Det betyder, at de styrer lysdioderne ved at ændre spændingsforskellen mellem strøm og jord.

Trin 7: Fremstilling af mund -LED -matrixen: Lodningskontroltråde på lysdioderne

Making the Mouth LED Matrix: Lodningskontroltråde på LED'erne
Making the Mouth LED Matrix: Lodningskontroltråde på LED'erne
Making the Mouth LED Matrix: Lodningskontroltråde på LED'erne
Making the Mouth LED Matrix: Lodningskontroltråde på LED'erne
Making the Mouth LED Matrix: Lodningskontroltråde på LED'erne
Making the Mouth LED Matrix: Lodningskontroltråde på LED'erne

Lodde lange ledninger, der kan passe ind i et brødbræt (22 gauge) på alle LED -katodeledningerne. Disse ledninger styrer lysdioderne. Bagefter skal du sørge for at isolere alle de individuelle ledninger med elektrisk tape (ikke sjovt) eller varmekrympeslange (anbefales). Udover lodningstråde på alle LED'ernes katodeledninger, loddes 2 eller 3 ledninger på anodedelen af nettet (Den del, der alle er loddet sammen). Disse ledninger fungerer som strømforsyninger, der fordeler strøm over hele nettet. De vil blive tilsluttet 5V.

Trin 8: Installer øjenbrynsbevægende servoer inde i robothovedet

Installer de øjenbrynsbevægende servoer inde i robothovedet
Installer de øjenbrynsbevægende servoer inde i robothovedet
Installer de øjenbrynsbevægende servoer inde i robothovedet
Installer de øjenbrynsbevægende servoer inde i robothovedet
Installer de øjenbrynsbevægende servoer inde i robothovedet
Installer de øjenbrynsbevægende servoer inde i robothovedet

Inden du installerer dine miniservoer inde i dit robothoved, skal du lime en lang, stærk (men stadig bøjelig) ledning fast på servoarmen. Denne ledning vil gå op inden i din robot, komme ud af toppen og krybe tilbage for at flytte øjenbrynene. (Se billederne for afklaring.) Tag dine miniservoer (med ledningerne fastgjort) og varmlim dem indvendigt på dit robothoved, lige under øjnene, og sørg for, at ledningerne kan bevæge sig fra side til side.

Trin 9: Installer gitteret inde i robothovedet

Installer gitteret inde i robothovedet
Installer gitteret inde i robothovedet
Installer gitteret inde i robothovedet
Installer gitteret inde i robothovedet

Varm lim risten til et stykke pap, som du har boret huller i, og varm lim, der sidder indvendigt på robothovedet.

Trin 10: Lodd RGB -lysdioderne

Lodde RGB -lysdioderne
Lodde RGB -lysdioderne

Lod den fælles anode RGB LED til en lang ledning. Lod derefter en farvet ledning (rød, grøn, blå) til RGB LED -ledningen, der svarer til den (Farven på en individuel ledning kan findes ved at bruge et 3V -knapbatteri til at tænde hver LED -afledning efter tur). Glem ikke at isolere ledningerne!

Trin 11: Installer RGB -lysdioderne inde i robothovedet

Installer RGB -lysdioderne inde i robothovedet
Installer RGB -lysdioderne inde i robothovedet
Installer RGB -lysdioderne inde i robothovedet
Installer RGB -lysdioderne inde i robothovedet

Installer lysdioderne inde i robothovedet ved at placere dem, hvor du vil have dem, og derefter folde og tape ledningerne til indersiden af kassen. At lægge et sugerør under LED'en hjælper også med at holde det på plads. (Se billeder for afklaring)

Trin 12: Afslut at lave øjnene

Afslut med at lave øjnene
Afslut med at lave øjnene
Afslut med at lave øjnene
Afslut med at lave øjnene

Lim et firkantet stykke papir, der er lidt større end det hul, du har skåret ud. Lim det over hullet for at dække hullet og lysdioden bag det. Du vil måske også tape nogle ark køkkenrulle på indersiden af øjenhullerne for at sprede lyset fra lysdioderne.

Trin 13: Tilslut TLC5940NT -chipsene

Tilslut TLC5940NT -chipsene
Tilslut TLC5940NT -chipsene
Tilslut TLC5940NT -chipsene
Tilslut TLC5940NT -chipsene
Tilslut TLC5940NT -chipsene
Tilslut TLC5940NT -chipsene

I dette trin skal du kæde 3 TLC5940NT sammen for at køre i alt 42 LED -udgange (36 for munden, 6 for de flerfarvede øjne). Menneskerne på Arduino -legepladsen har en meget veldokumenteret tilslutningsguide til, hvordan man kan tusindfryd kæde 3 TLC5940NT sammen. Her er den i komprimeret form: Arduino pin 13 -> SCLK (TLC pin 25) Arduino pin 11 -> SIN (TLC pin26) Arduino pin 10 -> Blank (TLC pin 23) Arduino pin 9 -> XLAT (TLC pin 24) Arduino pin 3-> GSCLK (TLC pin 18) -------------- U ------------ LED Out 1 | 1 28 | LED Out 0LED Out 2 | 2 27 | GNDLED Out 3 | 3 26 | SIND (Ard pin 11.) LED Out 4 | 4 25 | SCLK (Ard pin 13)… | 5 24 | XLAT (Ard pin 9)… | 6 23 | BLANK (Ard pin 10)… | 7 22 | GND… | 8 21 | VCC (5V)… | 9 20 | 2K modstand mod jord … | 10 19 | 5V… | 11 18 | GSCLK (Ard pin 3)… | 12 17 | SOUT (Tilsluttet SIN for den næste TLC i Daisychain) … | 13 16 | XERR ud 14 | 14 15 | LED Out 15 ----------------------------- Bemærk: vi er Daisychaining 3 TLC'er, så SIN for den første TLC er forbundet til Arduino pin 11. Resten af TLC'erne har deres SIN tilsluttet TUT'en for TLC'en forud for den. Alle BLANK'erne er forbundet med hinanden (BLANK af TLC1 er forbundet til BLANK af TLC2 osv …) Alle XLAT'erne er tilsluttet. Alle SCLK'er er tilsluttet. Alle GSCLK'erne er tilsluttet. Alle XERR'erne er tilsluttet. Tilslut også 2 eller 3 elektrolytkondensatorer til brødbrættets jord og effekt (negativt om kondensatoren går til jorden, positiv til 5V). Opladningsmængden er ikke så vigtig, men den skal vurderes til 5V eller derover. Disse kondensatorer fungerer som et filter og filtrerer alle ufuldkommenheder (støj) i spændingsforsyningen, som TLC'erne producerer, ud. Dette er vigtigt, fordi Waveshield, som vi vil bruge, deler den samme grund som TLC'erne og VIRKELIG ikke kan lide elektrisk støj (det giver en underlig klikstøj).

Trin 14: Tilslut LED'erne til TLC'erne

Led LED'erne op til TLC'erne
Led LED'erne op til TLC'erne
Led LED'erne op til TLC'erne
Led LED'erne op til TLC'erne

Tilslut alle lysdioderne til TLC'erne, række for række, begyndende med den i øverste venstre hjørne og gå videre til LED'en direkte til højre. Her er et gitter med alle LED TLC pin -outs inkluderet for din bekvemmelighed. Se billeder for afklaring. Mund: 0 1 2 3 4 5 6 7 89 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 Nu er det også et godt tidspunkt at tilslutte dine RGB LED øjne til TLC'erne, så her er pin outs … RGB LED øjne: Venstre: RGB Højre: RGB 36 40 38 37 41 39 Glem ikke at tilslutte de universelle strømkabler til The Grid og RGB LED'er til 5V!

Trin 15: Tilslut servoerne til TLC'erne

Kør servoerne op til TLC'erne
Kør servoerne op til TLC'erne

Tilslut strømmen og jorden til servoerne til strøm og jord på dit brødbræt. Tilslut styreledningen på den venstre servo (din venstre mens du vender mod robotten.) Til pin 43 (Husk start ved nul.) Og den højre servo til pin 44. Du skal tilslutte en 3.3K ohm modstand fra begge disse ben til 5V, fordi TLC'erne er strømforsænkninger og kræver strøm til at synke.

Trin 16: Du kommer nu ind i software- og kodeområdet! (for det meste)

Venligst ingen overtrædelse …

Trin 17: Download TLC -biblioteket

Det nyeste TLC -bibliotek for Arduino findes på deres Google -kodeside på: code.google.com/p/tlc5940arduino/. Download det nyeste bibliotek, og indsæt den udpakkede mappe "Tlc5940" i [seneste mappe til Arduino -version]/hardware/ biblioteker/

Trin 18: Test TLC'erne

Indlæs min serielle ekspresionstestskitse, som du kan downloade herunder. Indlæs den i Freeduino, og skriv nogle kommandoer i den serielle skærm for at teste, at det hele virker. Her er listen over kommandoer: behappybesadbemadfullmouthlinemouthoffmouthoffeyesbluegreeneyesredeyesblueeyesopenmouthtalkmouth (Det taler ikke, men det gør mundbevægelser)

Trin 19: Download det forbedrede Waveshield-bibliotek med høj kapacitet (lidt)

Download den nye forbedrede Adafruit -waveshield fra Google -kode (Tak, hr. Fat16, fordi du lavede dette forbedrede bibliotek): code.google.com/p/wavehc/ Stick igen den udpakkede mappe i hardware/biblioteker/mappe.

Trin 20: Formater og indlæs dine SD -kort

Indsæt dine SD -kort i din computer, og formater dem ved hjælp af FAT- eller FAT16 -filtypen. IKKE FAT32! Indlæs derefter dine SD -kort med talefiler fra AT & Ts store tekst til tale -websted www.research.att.com/~ttsweb/tts/demo.php#top Omdøb filerne til navnet på det ord, det taler i filen, og trunker det filnavn til noget, der indeholder 6 eller færre bogstaver. (Waveshield kan kun håndtere filer, hvis filnavne er 6 tegn eller mindre.) Eks. Hvis du downloader filen til "Instructables.com" -> navngiv den instrc.wavIf hej -> hello.wav

Trin 21: Test din Waveshield

Download og kør min serielle Waveshield -testskitse. Du skal kunne gennem den serielle terminal, skrive en sætning og få Waveshield til at afspille den (så længe den har de.wav -filer, den har brug for). Det tager det første ord, tilføjer ".wav" og afspiller det, før du går videre til det andet. Eks. Du skriver: Hej mit navn er Bob Det vil spille: hello.wavmy.wavname.wavis.wavbob.wav Bemærk: Test Waveshield på den anden Freeduino (den der ikke er forbundet til TLC'erne), fordi både Waveshield og TLC'erne bruger pins13, 12, 11 og 10 (på Freeduino). Dette skyldes, at disse ben har hardware -understøttelse til en grænseflade kaldet Serial Peripheral Interface (SPI), som både TLC'erne og Waveshield kræver. Disse pins kan ikke deles mellem dem, så vi bliver nødt til at forbinde to Freeduinos sammen ved hjælp af I2C -grænsefladen, så de kan videregive oplysninger mellem dem. Mere om dette i trin 22.

Trin 22: Tilslut I2C -grænsefladen mellem begge Freeduinos

Forbind I2C -grænsefladen mellem begge freeduinoer
Forbind I2C -grænsefladen mellem begge freeduinoer

Vent… Hvorfor skal vi oprette en I2C -grænseflade mellem to Freeduinos? Hvorfor kan vi ikke bare tilslutte Waveshield og TLC'erne til en Freeduino? Her er hvorfor: Både Waveshield og TLC'erne bruger ben 13, 12, 11 og 10 på Freeduino. Årsagen til dette er, at disse pins har hardware -understøttelse til en grænseflade kaldet Serial Peripheral Interface (SPI), som både TLC'erne og Waveshield kræver og ikke kan dele. Det betyder, at vi bliver nødt til at forbinde to Freeduinos sammen ved hjælp af en form for dataforbindelse, så de begge arbejder sammen. Seriel var ikke en mulighed, fordi min computer allerede brugte den til at kommunikere til Waveshield Freeduino, så efter noget intens googling fandt jeg en bemærkelsesværdig praktisk og enkel kommunikationsmetode. I2C! Sådan tilsluttes grænsefladen: Tilslut Analog Input pin 4 på begge Freeduinos (Dette er SDA eller seriel datalinje.) Tilslut Analog Input pin 5 på begge Freeduinos (Dette er SCL eller Serial Clock Line.) Tilslut jorden på begge Freeduinos (Ellers fungerer I2C -interfacet ikke.) Tilslut ledningen, som du lodde i begyndelsen af denne Instructable fra modstand R7 på Waveshield til Analog Input pin 1 på TLC, der styrer Freeduino (Denne ledning er til kontrol af volumen på ordene talt af Waveshield og er ikke en del af I2C -grænsefladen). (Se billede for afklaring)

Trin 23: Aktiver I2C på TLC -styrende Freeduino

Aktiver I2C på Freeduino, som du brugte til at styre TLC'erne ved at downloade denne skitse. Den vil modtage information om udtryk fra Waveshield og vil også kontrollere volumen af taleudgangen på Waveshield Freeduino og vil bevæge munden for at simulere tale afhængigt af volumen af ordet, der tales. I2C definition: I2C er også kendt som TWI (Two Wire Interface) det er en enkel måde at forbinde flere enheder sammen (op til 128!) Med to datakabler og en fælles vej. Opdatering: Jeg har tilføjet en blinkfunktion til Arduino Sketch. Robotten vil nu blinke med 2-11 sekunders mellemrum, ligesom et menneske.

Trin 24: Test I2C -grænsefladen

Download denne skitse og indlæse den på Waveshield Freeduino, den sender ordene "behappy;" og derefter "besad;" over I2C -grænsefladen til TLC, der styrer Freeduino med to sekunders mellemrum, forhåbentlig får robotten til at gå fra glad til trist med to sekunders mellemrum.

Trin 25: Din næsten færdige! Bare lidt kode at indlæse …

Indlæs den sidste version af Waveshield Freeduino -koden. Det bør tage alle de ord, du skriver i den serielle skærm og tale dem (så længe det har.wav -filerne til at gøre det) og skulle sende udtrykkommandoer som "behappy;" og "besad;" på Freeduino, der styrer TLC'erne via I2C-grænsefladen. Bemærk: Kommandolisten er den samme for den tidligere TLC-testkode (se trin 17), bortset fra at du skal tilføje et semikolon til hver udtrykkskommando. EX. Hvis du vil have robotten til at være trist og sige "jeg føler mig trist", skal du skrive: besad; Jeg føler mig ked af det. Opdatering: Waveshield -skitsen bruger nu tegnsætning korrekt (dvs. punktum og kommaer, men bemærk udråbspunkter).

Trin 26: Monter alt på robothovedboksen, og du er færdig

Monter alt på robothovedboksen, og du er færdig!
Monter alt på robothovedboksen, og du er færdig!
Monter alt på robothovedboksen, og du er færdig!
Monter alt på robothovedboksen, og du er færdig!

Monter alle Freeduinos på bagsiden af kassen med ledninger. Luk boksens øverste flap med ledninger, og du er færdig! Nu hvis det bare kunne tjekke min e -mail. Hmmmm ……. Tak fordi du læste denne instruktive! Kommentarer er altid velkomne til alt!

Anden pris i Arduino -konkurrencen

Anbefalede: