Joy Robot: Een Slimme Robot Aangedreven door Arduino en ESP8266
Onderdelen en Benodigdheden
| Arduino UNO | × | 1 |
| Espressif ESP8266 ESP-01 | × | 1 |
| SG90 Micro-servomotor | × | 6 |
| DC-motor met vertraging en rubber wielen | × | 2 |
| L298N H-brug driver | × | 1 |
| Adafruit 16-kanaals 12-bit PWM/Servo Driver - I2C - PCA9685 | × | 1 |
| MAX7219 8x8 LED-display | × | 4 |
| SparkFun Dual H-Bridge motor drivers L298 | × | 1 |
| 18650 accu | × | 2 |
| 18650 accu houder | × | 2 |
| Arduino Proto Shield | × | 1 |
| 1N4001 diode | × | 1 |
| Weerstand 10k ohm | × | 3 |
Benodigde Tools en Machines
- 3D-printer
Apps en Online Services
- Autodesk Fusion 360
- Arduino IDE
- Android SDK
Over dit Project
Eerste prijs in de Instructables Wheel Contest, tweede prijs in de Instructables Arduino Contest, en runner-up in de Instructables Design for Kids Challenge. Bedankt aan iedereen die op ons stemde!
Robots zijn overal. Van industriële toepassingen tot onderwater- en ruimtevaartverkenning. Maar mijn favorieten zijn die gebruikt voor plezier en entertainment! In dit project werd een DIY-robot ontworpen voor entertainment in kinderziekenhuizen, om de kinderen wat plezier te bezorgen. Het project richt zich op het delen van kennis en het bevorderen van technologische innovatie ter ondersteuning van NGO's die caritatief werk doen in kinderziekenhuizen.
Deze tutorial laat zien hoe je een op afstand bediende humanoïde robot ontwerpt, bestuurd via een Wi-Fi-netwerk, met een Arduino Uno verbonden met een ESP8266 Wi-Fi-module. Het gebruikt servomotoren voor hoofd- en armbewegingen, DC-motoren voor kleine afstanden, en een gezicht gemaakt van LED-matrices. De robot kan worden bestuurd vanaf een gewone internetbrowser met een HTML-interface. Een Android-smartphone wordt gebruikt voor video- en audiovooruitzending van de robot naar de bedieningsinterface van de operator.
De tutorial toont hoe de structuur 3D-geprint en gemonteerd is. Elektronische schakelingen worden uitgelegd, en de Arduino-code wordt gedetailleerd beschreven, zodat iedereen de robot kan repliceren.
Enkele van de gebruikte technieken zijn al eerder gepubliceerd in tutorials:
- WiDC: Wi-Fi-gestuurde FPV-robot met Arduino en ESP8266
- Een LED-matrix-array aansturen met Arduino Uno
- Wi-Servo: Wi-Fi browser-gestuurde servomotoren
Speciale dank aan de andere teamleden betrokken bij het bovengenoemde project, verantwoordelijk voor de eerste versie van de code in deze tutorial:
- Thiago Farauche
- Diego Augustus
- Yhan Christian
- Helam Moreira
- Paulo de Azevedo Jr.
- Guilherme Pupo
- Ricardo Caspirro
- ASEBS
Meer over het project:
Hoe kun je helpen?
Dit project wordt gefinancierd door teamleden en kleine donaties van enkele bedrijven. Als je het leuk vindt, zijn er manieren om ons te helpen:
- Stem: Dit project doet mee aan de Instructables Wheels, Design for Kids en Arduino Contests. Stem alstublieft op ons! :D
- Donatie: Je kunt ons tips sturen als je de bouw van de robot en toekomstige verbeteringen wilt ondersteunen. De tips worden gebruikt voor materialen (elektronica, 3D-printen, filamenten, etc.) en voor de promotie van onze interventies in kinderziekenhuizen. Je naam wordt toegevoegd aan de credits! Je kunt tips sturen via ons ontwerp op Thingiverse: Thingiverse
- Like: Laat zien hoeveel je ons project waardeert. Geef ons een "like" op de platforms waar we ons project documenteren (Facebook, Hackster, Hackaday, Maker Share, Thingiverse...).
- Deel: Deel het project op je favoriete sociale media, zodat we meer mensen bereiken en meer makers over de hele wereld inspireren.
Stap 1: Een Beetje Geschiedenis...
Het 'Robô da Alegria' ('Joy Robot') project werd in 2016 geboren in de Baixada Santista regio (Brazilië), met als doel technologie te ontwikkelen en de gemeenschap te trekken naar de maker-beweging. Geïnspireerd op vrijwilligersprojecten van NGO's in kinderziekenhuizen, zoekt het project een robot te ontwikkelen, met open hardware en open software tools, die een beetje plezier kan brengen in de omgeving van kinderziekenhuizen en kan bijdragen aan het werk van andere organisaties.
De zaadjes van het project werden geplant eind 2015. Na een presentatie over de creatie en ontwikkeling van technologie, gepromoot door de Associatie van Startups van Baixada Santista (ASEBS), werd een project geïdealiseerd zonder geldprijs, maar met een onderwerp waar mensen zich op altruïstische wijze bij zouden betrekken, met als doel anderen te helpen.
De robot heeft diverse transformaties doorgemaakt vanaf de initiële conceptie tot de huidige toestand. Van slechts een hoofd, met mechanische ogen en wenkbrauwen, tot de huidige humanoïde vorm, zijn verschillende iteraties uitgevoerd, met testen van verschillende constructiematerialen en elektronische apparaten. Van een acrylaat-prototype en gelaserde MDF, gingen we over naar een 3D-geprint lichaam. Van een simpele interface met twee servomotoren bestuurd via Bluetooth, naar een lichaam samengesteld uit 6 servomotoren en 2 DC-motoren bestuurd door een webinterface via een Wi-Fi-netwerk.
De robotstructuur is volledig geproduceerd met 3D-printen met Fusion 360. Om de productie van robot-replica's in makerspaces of fab labs mogelijk te maken, waar de maximaal beschikbare printtijd cruciaal is, is het ontwerp verdeeld in stukken van minder dan drie uur printen per stuk. De set onderdelen wordt gelijmd of gebout voor de montages.
Het gezicht, bestaande uit LED-arrays, geeft de robot de mogelijkheid om emoties te uiten. Servomotor-aangedreven armen en nek geven de kleine automaat de benodigde mobiliteit voor interactie met gebruikers. In het controlecentrum van de robot interfacet een Arduino Uno met alle randapparatuur, inclusief communicatie met een ESP8266-module, die de gebruiker in staat stelt om expressies en bewegingen te commenderen via elk apparaat dat verbonden is met hetzelfde Wi-Fi-netwerk.
De robot heeft ook een smartphone in zijn borstkas, gebruikt voor transmissie van audio en video tussen de operator van de robot en de kinderen. Het scherm van het toestel kan nog steeds gebruikt worden voor interactie met games en andere applicaties die zijn ontworpen om te interageren met het robotlichaam.
Stap 2: Tools en Materialen
Tools:
- 3D-printer - Het gehele lichaam van de robot is 3D-geprint. Veel uren 3D-printen waren nodig voor de volledige structuur.
- PLA-filament - Wit en zwart PLA-filament werden gebruikt voor het printen van het lichaam.
- Schroevendraaier - De meeste onderdelen zijn verbonden met bouten.
- Superlijm - Sommige onderdelen zijn bevestigd met superlijm.
- Tangen en kniptangen
- Soldeerbout en draad
Elektronica:
- Arduino Uno - Hoofdcontroller van de robot. Stuurt signalen naar de motoren en communiceert met de WiFi-module.
- ESP8266-01 - Werkt als 'WiFi-modem'. Ontvangt signalen van de bedieningsinterface om door de Arduino Uno uitgevoerd te worden.
- SG90 servomotoren (x6) - Vier servos voor de armen, twee voor hoofdbewegingen.
- DC-motoren met vertraging en rubber wielen (x2) - Laten de robot kleine afstanden afleggen.
- L298N dubbele kanaal H-brug (x1) - Zet Arduino digitale uitgangen om in voedingsspanningen voor de motoren.
- 16-kanaals servocontroller - Met dit bord kun je meerdere servomotoren besturen met slechts twee Arduino-uitgangen.
- MAX7219 8x8 LED-display (x4) - Dienen als het gezicht van de robot.
- Micro-USB-kabel - Voor het uploaden van de code.
- Female-female jumper wires (enkele)
- Male-female jumper wires (enkele)
- Smartphone - Een Motorola 4,3" Moto E smartphone werd gebruikt. Andere met vergelijkbare afmetingen kunnen ook werken.
- 18650 accu (x2) - Gebruikt om de Arduino en andere randapparatuur te voeden.
- 18650 accu houder (x1) - Houdt de accu's op hun plaats.
- 1N4001 diodes (x2)
- 10 kohm weerstanden (x3)
- 20mm aan/uit schakelaar (x1)
- Protoshield - Helpt bij het bedraden van de schakeling.
Mechanica:
- Balwielen (x2)
- M2x6,0mm bouten (+-70)
- M2x10mm bouten (+-20)
- M2x1,5mm moeren (x10)
- M3x40mm bouten (x4)
- M3x1,5mm moeren (x4)
De links hierboven zijn suggesties waar je de items kunt vinden die in deze tutorial gebruikt worden en om de ontwikkeling van dit project te ondersteunen. Voel je vrij om ergens anders te zoeken en te kopen bij je favoriete lokale of online winkel.
Stap 3: 3D-printen
De robotstructuur is volledig geproduceerd met 3D-printen met Autodesk Fusion 360. Om de productie van robot-replica's in makerspaces of fab labs mogelijk te maken, waar de maximaal beschikbare printtijd cruciaal is, is het ontwerp verdeeld in stukken van minder dan drie uur printen per stuk. De set onderdelen wordt gelijmd of gebout voor de montages.
Het model bestaat uit 36 verschillende onderdelen. De meeste zijn geprint zonder ondersteuning, met 10% invulling.
- Hoofd boven (rechts/linker)
- Hoofd onder (rechts/linker)
- Hoofd zijkappen (rechts/linker)
- Gezicht achterplaat
- Gezicht voorplaat
- Nek as 1
- Nek as 2
- Nek as 3
- Nek centrum
- Arm (rechts/linker)
- Schouder (rechts/linker)
- Schouderbeker (rechts/linker)
- Schouderkap (rechts/linker)
- Arm as (rechts/linker)
- Borstkas (rechts/linker)
- Borstvoet (rechts/linker/voor)
- Wielen (rechts/linker)
- Basis
- Telefoonhouder
- Rug (rechts/linker)
- Knopen (rechts/linker)
- Sloten (rechts/linker)
De procedure voor het monteren van de robot wordt in de volgende stappen beschreven.
Je kunt alle STL-bestanden downloaden op de volgende websites:
Dit is een experimenteel prototype. Sommige onderdelen hebben verbeteringen nodig (voor latere updates van het project). Er zijn enkele bekende issues:
- Interferentie tussen de bedrading van sommige servos en de schouder.
- Wrijving tussen het hoofd en de borstkas.
- Wrijving tussen de wielen en de structuur.
- De gat voor sommige schroeven is te strak, en moet vergroot worden met een boorbout of hobby-mes.
Als je geen 3D-printer hebt, hier zijn enkele opties:
- Vraag een vriend om het voor je te printen.
- Zoek een hacker/maker space in de buurt. Het model is verdeeld in verschillende onderdelen, zodat elk onderdeel afzonderlijk minder dan vier uur print. Sommige hacker/maker spaces rekenen alleen voor het gebruikte materiaal.
- Koop je eigen 3D-printer. Je kunt een Anet A8 vinden voor slechts $165,99.
- Geïnteresseerd in een DIY-kit? Als voldoende mensen geïnteresseerd zijn, zou ik misschien DIY-kits kunnen aanbieden op Tindie.com. Stuur me een bericht als je er een wilt.
Stap 4: Overzicht van de Schakelingen
De robot wordt bestuurd met een Arduino Uno als kern. De Arduino interfaceert een ESP8266-01-module, die gebruikt wordt om de robot op afstand te besturen via een Wi-Fi-netwerk.
Een 16-kanaals servocontroller is verbonden met de Arduino via I2C-communicatie en stuurt 6 servomotoren (twee voor de nek en twee voor elke arm). Een array van vijf 8x8 LED-matrices wordt gevoed en bestuurd door de Arduino. Vier digitale uitgangen van de Arduino worden gebruikt voor de besturing van twee DC-motoren, via een H-brug.
De schakelingen worden gevoed met twee USB-powerbanks: één voor de motoren en één voor de Arduino. Ik heb geprobeerd de hele robot met één powerbank te voeden. Maar de ESP8266 verloor de verbinding door spanningspieken toen de DC-motoren in/uit gingen.
De borstkas van de robot bevat een smartphone. Deze wordt gebruikt voor het uitzenden van video en audio naar/van de bedieningsinterface, gehost op een gewone computer. Het kan ook commando's sturen naar de ESP8266, waardoor het de robotlichaam zelf kan besturen.
Men kan opmerken dat de gebruikte componenten misschien niet geoptimaliseerd zijn voor hun doel. Een NodeMCU zou bijvoorbeeld gebruikt kunnen worden in plaats van de Arduino + ESP8266-combinatie. Een Raspberry Pi met een camera zou de smartphone kunnen vervangen en de motoren ook besturen. Het is zelfs mogelijk om een Android-smartphone als de "hersenen" voor je robot te gebruiken. Dat klopt... Een Arduino Uno werd gekozen omdat het erg toegankelijk en gemakkelijk te gebruiken is voor iedereen. Toen we dit project startten, waren ESP- en Raspberry Pi-borden nog relatief duur in onze regio... omdat we een goedkope robot wilden bouwen, waren Arduino-borden toen de beste keuze.
Stap 5: Het Gezicht Monteren
Vier 8x8 LED-matrices werden gebruikt voor het gezicht van de robot.
De structuur was verdeeld in twee delen (gezicht achterplaat en gezicht voorplaat) 3D-geprint met zwart PLA. Het duurde ongeveer 2,5 uur om ze te printen, met 10% invulling en zonder ondersteuning.
Vanwege ruimtebeperkingen moesten de connectors van de LED-matrices gedesoldeerd worden en hun positie gewijzigd zoals hieronder beschreven:
- Verwijder de LED-matrix.
- Desoldeer in- en uitgangsconnectors.
- Soldeer ze opnieuw aan de andere kant van de printplaat, met de pinnen naar het midden van de print wijzend.
Je kunt het eindresultaat in de afbeeldingen zien.
De vier LED-matrices werden vervolgens bevestigd aan de achterplaat, met 16 M2x6mm bouten. De pinnen werden volgens het schema verbonden.
De eerste matrix werd verbonden met een 5-adrig male-female jumper. De male-kant werd later verbonden met Arduino-pinnen. De female-kant is verbonden op de invoerpinnen van de matrix. De uitgang van elke matrix is verbonden met de invoer van de volgende met een female-female jumper.
Na de verbinding van de matrices, wordt de voorplaat gemonteerd met vier M2-bouten. Draai de jumpers om de achter- en voorpanelen, zodat er geen losse draden zijn.
De gezichtsmodule wordt later in het hoofd van de robot geïnstalleerd, zoals uitgelegd in de volgende stappen.
Stap 6: Het Hoofd Monteren
Het hoofd van de robot was verdeeld in acht 3D-geprinte onderdelen, allemaal geprint in wit PLA met 0,2mm resolutie, 10% invulling en zonder ondersteuning:
- Hoofd boven (rechts en links)
- Hoofd onder (rechts en links)
- Hoofd kap (rechts en links)
- Nek as 1
- Nek as 2
Het duurde bijna 18 uur om de 130 mm diameter structuur te printen.
De boven- en onderkant van het hoofd zijn verdeeld in twee delen. Ze worden samen gelijmd met superlijm. Laat de lijm enkele uren drogen.
De zijkappen worden vervolgens gemonteerd met bouten bevestigd aan de zijkanten van de boven- en onderkant van het hoofd. Op deze manier kan het hoofd gedemonteerd worden voor reparatie door de schroeven te verwijderen die aan de bovenkant van het hoofd bevestigd zijn. Voordat het hoofd gesloten wordt, monteer het gezicht van de robot (beschreven in de vorige stap) en de borstkas (beschreven in de volgende stappen).
Servomotor #5 werd bevestigd aan Nek as 1. Ik positioneerde de servo in het midden van de as, bevestigde daarna de hor en gebruikte een schroef om de positie te vergrendelen. Ik gebruikte twee M2x6mm bouten om Nek as 2 op die servomotor te monteren. Servomotor #6 wordt op dezelfde manier aan Nek as 2 bevestigd.
Nek as 2 werd later verbonden met Nek centrum, zoals getoond in de volgende stap.
De gezichtsmodule wordt in het hoofd geïnstalleerd.
Stap 7: De Borstkas en Schouders Monteren
Borstkas en schouder namen ongeveer 12 uur in beslag voor het printen.
Deze sectie bestaat uit vijf verschillende onderdelen:
- Borstkas (rechts/linker)
- Schouders (rechts/linker)
- Nek centrum
- Nek as 3
De borstkas-onderdelen werden gelijmd met superlijm. Schouders werden aan de zijkanten bevestigd met M2x10mm bouten, en de servomotoren (Servomotor #2 en #4) werden aan elke zijde geïnstalleerd. Ze gaan door een rechthoekig gat in elke schouder (de draad is eigenlijk behoorlijk moeilijk door te krijgen), en worden bevestigd met M2x10mm bouten en moeren.
Het nekcentrum heeft een rechthoekig gat, waarin het Nek as 3-deel wordt ingevoegd. Vier M2x6mm bouten werden gebruikt om die twee delen te koppelen. Daarna werd het nekcentrum aan de schouders bevestigd. Het gebruikt dezelfde bouten die gebruikt worden om de schouder op de borstkas te monteren. Vier M2x1,5mm moeren worden gebruikt om de positie te vergrendelen.
Servomotor #6 werd verbonden met Nek as 3 met twee schroeven. Daarna installeerde ik Nek as 3 in het rechthoekige gat van het nekcentrum, en gebruikte vier M2x6mm bouten om de positie te vergrendelen.
Stap 8: De Armen Monteren
Het duurde ongeveer 5 uur om elke arm te printen.
Elke arm bestaat uit vier stukken:
- Schouderbeker
- Schouderkap
- Arm as
- Arm
Arm-as is gecentraliseerd en gemonteerd op de arm zelf met drie M2x6mm bouten. Een servo-horen is bevestigd aan het andere uiteinde van de as.
Een servomotor (#1 en #3) wordt in de schouderbeker geïnstalleerd met enkele schroeven, en heeft vervolgens zijn horen (de aan de arm-as bevestigde) geïnstalleerd. Er is een gat in de beker voor de installatie van een andere horen, die bevestigd is aan de servo (#2 en #4) die al op de schouders gemonteerd was, zoals getoond in de vorige stap.
Er zit nog een gat in de beker (en in de schouder) voor het doorvoeren van de kabels van de servos. Daarna wordt de kap geïnstalleerd om de schouder van de robot te sluiten, met twee M2x6mm bouten.
Stap 9: De Borstkas Monteren
De borstkas is het deel dat de borstkas verbindt met de onderkant (wielen en basis) van de robot. Het bestaat uit slechts twee delen (rechts en linkerdeel). Ik printte ze in 4 uur.
De schouders van de robot passen op het bovenste deel van de borstkas. Er zit een gat voor een bout die helpt bij de uitlijning en bevestiging van die delen. Hoewel het aanbevolen is om die twee delen te lijmen.
De onderkant van deze delen heeft zes gaten, die gebruikt worden voor de verbinding met de wielen, zoals later getoond zal worden.
Op dit moment labelde ik de servomotoren met enkele stickers, om de verbinding van de schakelingen gemakkelijker te maken.
Stap 10: De Wielen Monteren
De wielen van de robot gebruiken drie 3D-geprinte onderdelen:
- Wielen (links/rechts)
- Voorpaneel
Het duurde ongeveer 10 uur om die onderdelen te printen.
Ik volgde de volgende stappen voor het monteren van de wielen:
- Eerst moest ik enkele draden aan de DC-motorconnectors solderen. Die draden werden later gebruikt voor het voeden van de motoren via een H-brugschakeling.
- De motoren werden vervolgens aan de structuur bevestigd met twee M3x40 bouten en moeren voor elke motor. Eigenlijk zou een kortere bout gebruikt kunnen worden (maar ik vond er geen online).
- Daarna lijmde ik het voorpaneel, dat de andere delen van de structuur verbindt.
- Deze deel heeft enkele gaten aan de bovenkant. Ze worden gebruikt voor de bevestiging aan de borstkas, eerder getoond. Zes M2x6mm bouten werden gebruikt voor de verbinding van beide secties.
Stap 11: Telefoonhouder
De telefoonhouder is een enkel 3D-geprint onderdeel, en duurt ongeveer 1 uur om te printen.
De robot heeft een smartphone in zijn buik. Het was ontworpen voor een Motorola Moto E. Het heeft een 4,3" scherm. Andere smartphones met vergelijkbare afmetingen kunnen ook passen.
Het telefoonhouder-onderdeel wordt gebruikt om de smartphone in de gewenste positie te houden. Eerst wordt de smartphone gepositioneerd, daarna wordt het tegen het lichaam van de robot gedrukt met de telefoonhouder en vier M2x6mm bouten.
Het is belangrijk om de USB-kabel aan de smartphone te verbinden vóór het vastdraaien van de bouten. Anders wordt het later moeilijk om het te verbinden. Helaas is de ruimte zeer beperkt, dus ik moest een deel van de USB-connector afknippen... :/
Stap 12: De Basis Monteren
De basis heeft slechts één 3D-geprint onderdeel. Het duurde ongeveer 4 uur om dat onderdeel te printen.
Het heeft verschillende gaten voor de installatie van andere componenten, zoals de balwielen, en printplaten bijvoorbeeld. De volgende procedure werd gebruikt voor het monteren van de basis:
- Installeer de 16-kanaals servocontroller met vier M2x6mm bouten.
- Installeer de L298N H-brugschakeling met vier M2x6mm bouten.
- Installeer de Arduino Uno met vier M2x6mm bouten.
- Installeer de protoshield op de bovenkant van de robot.
- Bedraad de schakelingen (zoals beschreven een paar stappen later).
- Installeer de balwielen met twee schroeven voor elk. De draden werden gerangschikt zodat ze vastzitten tussen de basis en de schroeven gebruikt bij de installatie van de wielen.
- Basis werd aan de wielsectie bevestigd met enkele schroeven.
Stap 13: Rug en Voeding
De achterkant van de robot was ontworpen zodat men deze gemakkelijk open kan maken voor toegang tot de schakelingen, het opladen van de accu's, of het aan/uit zetten van de smartphone.
Het bestaat uit zes 3D-geprinte onderdelen:
- Rug (links/rechts)
- Knopen (x2)
- Sloten (links/rechts)
Het duurde ongeveer 5u30 om de onderdelen te printen. Rechts- en linkerrrugonderdelen werden gelijmd met superlijm. Wacht tot de lijm volledig droog is, anders breekt de kap gemakkelijk.
De voeding bestaat uit twee 18650 accu's en een accu-houder. Ik moest enkele draden solderen (tussen accu #1 negatieve pool en accu #2 positieve pool). De negatieve pool van de voeding was verbonden met Arduino's GND (met enkele draden en jumpers). Een aan/uit-schakelaar werd tussen de positieve pool en Arduino's Vin-ingang geïnstalleerd.
De aan/uit-schakelaar werd bevestigd aan de 3D-geprinte rugonderdelen met een M2x6mm bout en M2x1,5mm moer. De accu-houder werd aan de rug bevestigd met vier M2x6mm bouten.
Het cilindervormige deel van de sloten moest geschuurd worden met schuurpapier voor een betere pasvorm. Ze gaan door de gaten in de kap. De knopen worden aan de andere kant verbonden en gelijmd.
De kap past op de achterkant van de robot. De knopen kunnen gedraaid worden om de kap te vergrendelen, wat de binnenkant van de robot beschermt.
Stap 14: De Schakelingen Bedraden
De schakeling werd bedraad volgens het schema.
Arduino:
- Arduino pin D2 → L298N pin IN4
- Arduino pin D3 → L298N pin IN3
- Arduino pin D6 → L298N pin IN2
- Arduino pin D7 → L298N pin IN1
- Arduino pin D9 → MAX7219 pin DIN
- Arduino pin D10 → MAX7219 pin CS
- Arduino pin D11 → MAX7219 pin CLK
- Arduino pin D4 → ESP8266 RXD
- Arduino pin D5 → ESP8266 TXD
- Arduino pin A4 → SDA
- Arduino pin A5 → SCL
- Arduino pin Vin → Accu V+ (voor diodes)
- Arduino pin GND → Accu V-
ESP8266-01:
- ESP8266 pin RXD → Arduino pin D4
- ESP8266 pin TXD → Arduino pin D5
- ESP8266 pin GND → Arduino pin GND
- ESP8266 pin VCC → Arduino pin 3V3
- ESP8266 pin CH_PD → Arduino pin 3V3
L298N H-brug:
- L298N pin IN1 → Arduino pin D7
- L298N pin IN2 → Arduino pin D6
- L298N pin IN3 → Arduino pin D3
- L298N pin IN4 → Arduino pin D2
- L298N pin +12V → Accu V+ (na diodes)
- L298N pin GND → Arduino GND
- L298N OUT1 → Motor 1
- L298N OUT2 → Motor 2
MAX7219 (eerste matrix):
- MAX7219 pin DIN → Arduino pin D9
- MAX7219 pin CS → Arduino pin D10
- MAX7219 pin CLK → Arduino pin D11
- MAX7219 pin VCC → Arduino pin 5V
- MAX7219 pin GND → Arduino pin GND
MAX7219 (overige matrices):
- MAX7219 pin DIN → MAX7219 pin DOUT (vorige matrix)
- MAX7219 pin CS → MAX7219 pin CS (vorige matrix)
- MAX7219 pin CLK → MAX7219 pin CLK (vorige matrix)
- MAX7219 pin VCC → MAX7219 pin VCC (vorige matrix)
- MAX7219 pin GND → MAX7219 pin GND (vorige matrix)
16-kanaals servocontroller:
- Servocontroller pin SCL → Arduino pin A5
- Servocontroller pin SDA → Arduino pin A4
- Servocontroller pin VCC → Arduino pin 5V
- Servocontroller pin GND → Arduino pin GND
- Servocontroller pin V+ → Accu V+ (na diodes)
- Servocontroller pin GND → Arduino pin GND
Sommigen zeggen dat de SG90-servo gevoed kan worden tussen 3,0 en 6,0V, anderen tussen 4,0 en 7,2V. Om problemen te voorkomen besloot ik twee diodes in serie na de accu's te plaatsen. Op deze manier is de spanning voor de servos 2×3,7 - 2×0,7 = 6,0V. Hetzelfde geldt voor de DC-motoren.
Let op: dit is niet de meest efficiënte manier, maar het werkte voor mij.
Stap 15: Arduino-code
Installeer de nieuwste Arduino IDE. Geen bibliotheek was nodig voor communicatie met ESP-8266-module of besturing van de DC-motoren.
Ik moet de volgende bibliotheken toevoegen:
- LedControl.h: bibliotheek gebruikt om de LED-matrices te besturen.
- Adafruit_PWMServoDriver.h: bibliotheek gebruikt om de servomotoren te besturen.
Arduino-code is verdeeld in 9 delen:
- RobodaAlegria.ino: dit is de hooftsketch, en roept de andere delen aan. Bibliotheken worden hier geïmporteerd. Het definieert en initialiseert ook globale variabelen.
- _05_Def_Olhos.ino: hier worden de matrices voor elk oog gedefinieerd. Elk oog wordt voorgesteld door een 8x8-matrix, en 9 opties zijn gedefinieerd: neutraal, wijd open, dicht boven, dicht onder, boos, verveeld, verdrietig, verliefd, en dode ogen. Er is een andere matrix voor rechter en linker oog.
- _06_Def_Boca.ino: hier worden de matrices voor de mond gedefinieerd. De mond wordt voorgesteld door een 16x8-matrix, en 9 opties zijn gedefinieerd: gelukkig, verdrietig, heel gelukkig, heel verdrietig, neutraal, tong uit, open, wijd open, en walgende mond.
- _10_Bracos.ino: vooraf gedefinieerde bewegingen voor armen en nek worden in dit bestand gedefinieerd. Negen bewegingen, mov1() tot mov9(), zijn geconfigureerd.
- _12_Rosto.ino: in dit bestand zijn functies voor het updaten van het gezicht van de robot, combineren van de matrices gedefinieerd in _05_Def_Olhos.ino en _06_Def_Boca.ino.
- _13_Motores_DC: definieert de functies voor de DC-motoren.
- _20_Comunicacao.ino: een functie voor het sturen van data naar ESP8266 wordt in dit bestand gedefinieerd.
- _80_Setup.ino: draait bij Arduino-opstart. Het stelt het initiële gezicht en de positie van de motoren van de robot in. Het stuurt ook commando's voor de verbinding met een gegeven Wi-Fi-netwerk.
- _90_Loop: hoofd-lus. Kijkt naar binnenkomende commando's van ESP8266 en roept specifieke functies aan om de uitgangen te besturen.
Download Arduino-code. Vervang de XXXXX door de SSID van je Wi-Fi-router en YYYYY door het routerwachtwoord in '_80_Setup.ino'. Controleer de baudrate van je ESP8266 en stel deze correct in de code ('_80_Setup.ino'). Verbind het Arduino-bord met de USB-poort van je computer en upload de code.
Stap 16: Android-apps
Een Android-smartphone werd gebruikt om de video en audio van de robot naar de bedieningsinterface te uitzenden. Je kunt de app die ik gebruikte vinden op de Google Play Store (IP Webcam).
Het scherm van de smartphone kan ook worden doorgestuurd naar de bedieningsinterface, zodat de operator kan zien wat er op het scherm staat. Je kunt ook de app die ik gebruikte om het scherm te spiegelen vinden op de Google Play Store (Screen Mirror).
Er werd ook een Android-videospel ontworpen om met de robot te interacteren. Het is nog niet heel stabiel, dus het is niet beschikbaar voor download.
Stap 17: Bedieningsinterface
Een HTML-interface werd ontworpen voor de besturing van de robot. Download interface.rar en pak alle bestanden uit in een bepaalde map. Open het daarna in Firefox. De interface is verdeeld in twee blokken. Linkerblok bevat displays voor de camera en schermspiegeling. Rechterblok bevat bedieningsknoppen voor de commando's.
Tekstvakvormen worden in die interface gebruikt om het IP-adres van de ESP8266-module in te voeren ('Endereço IP Arduino:'), video/audioserver van de Android IP Webcam-app ('IP Webcam (IP):') en Screen Mirror IP-adres ('Screen Mirror (IP):').
Onder het tabblad 'Ações predefinidas' kan de gebruiker kiezen tussen 9 vooraf gedefinieerde lichaamsbewegingen en 13 verschillende gezichten. Op het tabblad 'Ações personalizadas' kan de gebruiker een gegeven hoek instellen voor elk van de 6 servos, en afzonderlijk kiezen tussen 9 oogmogelijkheden en 8 mondvariaties. Een JavaScript-functie draait telkens wanneer een van die knoppen wordt aangeklikt, en een bericht wordt gestuurd naar het IP-adres van de ESP8266.
Toetsenbord-pijltjestoetsen worden gebruikt om de robot vooruit of achteruit te bewegen, en om links of rechts te draaien.
Wanneer de interface start, wordt een waarsching weergegeven, die vraagt of de gebruiker de microfoon wil delen. Als deze optie geselecteerd wordt, zal de geluidsintensiteit van de microfoon worden gebruikt om een vooraf geconfigureerd commando naar de robot te sturen. Dit commando zal een animatie activeren, die spraakbeweging op het gezicht van de robot simuleert. Een instellingenknop in de rechterbovenhoek kan gebruikt worden om de gevoeligheid van de microfoon in te stellen.
Deze instellingenmenu kan ook gebruikt worden om de snelheid van arm- en nekbewegingen te configureren.
Stap 18: Veel Plezier!
Zet hem aan en heb plezier!
Als je het leuk vindt, deel deze tutorial dan met je vrienden! En vergeet niet om te stemmen op Instructables Contests! :D
Code
- Arduino-code
- HTML-interface
Arduino-code
Geen preview (alleen download).
HTML-interface
Geen preview (alleen download).
GitHub-bibliotheken
Aangepaste Onderdelen en Behuizingen
Schema's
Schema's zijn beschikbaar in de projectbestanden.
Productieproces
- Raspoulette: Zonnestroom-gevoede Autonome Koeienpoort Systeem Prototype
- DIY Wall-E Geïnspireerde Raspberry Pi CD-Doos Robot
- Rollende Alarmrobot: Een Slim, Mobiel Wakker-systeem Aangedreven door Raspberry Pi en Google Calendar
- Bouw een gemotoriseerde Minecraft Creeper-robot met Arduino
- Archimedes: De Emotie-Detecterende AI Robot Uil
- Bouw een Spraak-gestuurde Computer Vision Robot op Windows 10 IoT Core
- ROS Robot: Terminal-gecontroleerde Navigatie op Raspberry Pi
- Simple Pi Robot – Bouw een 2-WD Autonome Rover met Raspberry Pi
- Slim Indoor Navigatie Robot Kit voor Arduino Projecten
- Lineaire motoren begrijpen: Van elektrische energie naar nauwkeurige lineaire beweging
- Drankrobots begrijpen: technologie, automatisering en rol in drankenindustrie