Cartrobot: robot de cartró amb materials reciclats

De wikijoan
Salta a la navegació Salta a la cerca

Objectius

ecoRobotik, primer concurs de robots reciclats (www.ecorobotik.com), organitzat per la tenda Olokuti, del carrer Astúries de Gràcia.

El robot (el meu primer robot) estarà basat en paperduino. El cos del robot serà de cartró, i sobre el cartró, ben visible, hi haurà els components electrònics. Bàsicament és un paperduino, on s'haurà afegit un H-bridge per controlar dos motors i un xip (SpeakJet) per fer veu sintètica. Aquestes seran les característiques del cartrobot: moviment i veu. Com que en aquest disseny no hi haurà cap sensor el robot senzillament farà una dansa programada: girs a la dreta, girs a l'esquerra, voltes, canvi de direcció, canvi de velocitat. La segona característica és que el robot parlarà: dirà frases o lemes relacionats amb el reciclatge. A més, s'encendran uns LEDs per fer-ho més atractiu.

Es buscarà un disseny artístic: es pintarà i es guarnirà.

Cites:

  • 1. Els petits canvis són poderosos - 2,7 sec
  • 2. reciclar, reutilitzar, reduir - 3,5 sec
  • 3. Si vols veure una espècie en perill d'extinció, mira't al mirall - 5,5 sec
  • 4. Fins que el pou no està buit no ens adonem del valor de l'aigua - 5,5 sec
  • 5. La terra no pertany a l'home, l'home pertany a la terra - 5 sec
  • 6. L'home no ha teixit la xarxa de la vida: només és un nus en aquesta xarxa
  • 7. No hi ha cap acció que no tingui conseqüències. Res és gratuït - 5,5 sec
  • 8. La inventiva humana crea problemes perquè la capacitat de jutjar les seves conseqüències sempre està un pas endarrere
  • 9. Ni els déus poden fer res contra l'estupidesa humana
  • 10. L'objectiu de les campanyes de màrketing és que siguem infeliços amb tot allò que tenim - 7 sec
  • 11. La història humana és una cursa entre l'educació i la catàstrofe
  • 12. Gràcies a Déu que no podem volar, i així no podem embrutar el cel com ho fem a la terra - 7 sec
  • 13. En el món en tenim prou per les necessitats humanes, però no per l'avarícia humana
  • 14. No bufis: els planetes bons són difícils de trobar - 4,5 sec
  • 15. no heretem la terra dels nostres avantpassats, la demanem en préstec als nostres fills - 7sec
  • 16. Estem tallant bonics arbres per fer diaris pèssims - 5 sec
  • 17. progrés econòmic no és el mateix que progrés humà - 4,5 sec
  • 18. Fins ara l'home ha estat contra la natura. A partir d'ara està contra la pròpia natura.
  • 19. Quan cuidem de la Natura ens estem cuidant a nosaltres mateixos
  • 20. La única manera de controlar la Natura és obeint-la - 5 sec
  • 21. Tingues cura de la Natura, i ella tindrà cura de nosaltres - 5 sec
  • 22. L'activista no és el que diu que el riu està brut: és el que neteja el riu - 7 sec
  • 23. És desesperant que haguem de lluitar contra el propi govern per cuidar el medi ambient.
  • 24. Pren només fotos. Deixa només petjades. Mata només el temps
  • 25. Cada dia és el Dia de la Terra - 3 sec
  • 26. L'home és un ésser estrany: fa florir deserts i fa assecar llacs - 7 sec

Motor bridge: Quad Half H-Bridge SN754410

Amb el Asuro aprenc què és un motor bridge. La solució del Asuro és a pèl (veure els components), però normalment s'utilitza un xip que inclou la lògica per controlar dos motors: H-bridge.

A destacar la connexió dels dos motors (R i L). Els motors tenen una velocitat variable i canviar el sentit. Això jo també ho puc fer amb el motor que tinc dels xinos. El circuit per controlar aquest funcionament es diu un motor bridge, i consta d'uns transistors i uns diodes. Veure el esquema en el manual d'ASURO.

La llista de parts per fer el motor bridge és (pàg 17 del manual):

  • D1, D2, D3, D4, D5, D6, D7, D8: diode 1N4148
  • T1, T2, T3, T4, T5, T6, T7, T8: BC327-40 o bé BC338-40
  • R1...R8: 1K
  • IC3 (porta AND): CD4081 (té 4 portes AND)

Ara bé, el motor bridge ja es pot trobar en forma d'integrat. Com es diu a

es necessita l'integrat L293D, o bé un altre que es troba a sparkfun: COM-00315

(This is a pin to pin compatible replacement for the L293D)

Description: Faster, cheaper, smaller, better, right? The SN754410 Quad Half H-Bridge
is just that. Capable of driving high voltage motors using TTL 5V logic levels, the
SN754410 can drive 4.5V up to 36V at 1A continuous output current! Please see
datasheet for more information. This is a pin to pin compatible replacement for the L293D.

Datasheet SN754410: Fitxer:SN754410.pdf

Ja tinc aquest xip que he aconseguit de Sparkfun, i ara vull fer les proves. Bàsicament tinc un motor DC, i he d'aconseguir fer un programet amb Arduino que varïi la velocitat i que canvïi el sentit de marxa. Utilitzaré la meitat dels pins. Amb dos motors i utilitzant els altres pins ja puc controlar un cotxe/robot i fer-lo girar.

He fet dues proves: motor_bridge i motor_bridge2 (Arduino Mega).

motor_bridge:

  const int motor1Pin = 2; //3;    // H-bridge leg 1 (pin 2, 1A)
  const int motor2Pin = 3; //4;    // H-bridge leg 2 (pin 7, 2A)
  int pwmpinA = 5; // motor A connected to analog pin 1

  void setup() {
    pinMode(motor1Pin, OUTPUT); 
    pinMode(motor2Pin, OUTPUT); 
    
      digitalWrite(motor1Pin, HIGH);   // set leg 1 of the H-bridge low
      digitalWrite(motor2Pin, LOW);
      analogWrite(pwmpinA, 150);
      delay(50);
      analogWrite(pwmpinA, 30);      
  }

  void loop() {

  }

Consideracions a tenir en compte:

  • fixar-se bé en els pins!!
  • el control de la velocitat s'aconsegueix amb una sortida analògica PWM de l'arduino (en aquest cas el pin 5), connectat al pin1 del xip, que és el pin ENABLED de la meitat del xip (hi ha dues meitats). Habilitant i deshabilitant el PIN ENABLED s'aconsegueix el control de la potència.
  • els pins 3 i 6 del xip van directament al motor.
  • els pins 2 i 7 del xip són els pins de control, amb els que puc controlar el sentit (un ha de ser el negatiu de l'altre). Van connectats a una sortida digital (en aquest cas, pins 2 i 3).
  • Important. Almenys amb el motor que faig les proves, és necessari VCC1 i VCC2. Vcc1 és el pin16 i va als 5V de l'arduino. És l'alimentació de la lògica del xip (portes AND, transistor Darlington). Vcc2 (pin 8) és l'alimentació del motor, i en funció del motor pot ser fins a 36V. Jo utilitzo la pila de 9V, tot i que amb 5V el motor funciona. Ara bé: no es pot fer el pont de Vcc1 i Vcc2, doncs si Vcc2 són 5V en el meu cas el motor no va. En un arduino alimentat a 9V, evidentment hi ha un pin per agafar el corrent de 5V i un altre per agafar el corrent de 9V (abans i després del regulador de tensió).
  • Important. El motor, per tal de què es mogui, ha de vèncer el parell-motor. Per tant, compte si vull que vagi a poques revolucions. Quan utilitzo PWM el que estic fent és perdre potència del motor, fins el punt que el fregament fa que no es mogui. En l'exemple de dalt es fica el motor a 150 per tal de què arrenqui, i després es baixa a 30, que és una quantitat molt justeta (quan fiqui les rodes a terra i hagin de carregar un pes segur que amb aquest valor s'atura).
  • GND: pins 4, 5, 12, 13
In most of your application when a rotary movement is necessary you will need force
(torque) over speed. In this case, use a gearbox motor instead of a regular DC motor.
The gearbox attached to a motors output shaft amplifies its torque and slows down its
speed. If you are using a regular DC motor and adjust its speed with the Arduino’s PWM
output you will slow down its speed AND reduce its torque!

Efectivament, amb la tècnica PWM redueixo molt el par-motor.

You can also consider hacking a servo motor for an inexpensive continuously rotating gear motor (see: http://www.seattlerobotics.org/guide/servohack.html) rather than purchasing a regular gearbox motor. In most cases this technique will save you half the cost.

Speakjet

The SpeakJet is a completely self-contained, single-chip voice 
and complex sound synthesizer. It uses a mathematical sound 
algorithm to control an internal five channel sound synthesizer 
to generate on-the-fly, unlimited vocabulary speech synthesis 
and complex sounds.

A la carpeta projectes/ELECT_31 tinc la guia d'usuari del xip i el diccionari d'al.lòfons.

Recursos:

El primer que s'ha de fer és assegurar-se de què el xip funciona, posant el speakjet en mode test. Com que no disposo d'un altaveu de 120 ohm i encara no tinc ben configurat l'amplificador d'audio, el millor és utilitzar uns cascos d'audio.

Demohookup.jpg

LM386: amplificador d'audio

en el pdf hi ha dues configuracions bàsiques: guany 20 i guany 200 (utilitzant els pins 1 i 8). La que jo utilitzaré, agafada de la web (http://letsmakerobots.com/node/11969) té els valors una mica diferents. En la web veiem que hi ha un circuit RC format per resistències de 27K i condensadors de 0.01uF+10uF: això és un filtre passa-baix, no té res a veure amb el circuit d'amplificació.

Nota!. He seguit l'esquema de http://letsmakerobots.com/node/11969, i està malament doncs hi ha condensadors electrolítics amb la polaritat canviada. Seguir l'esquema del datasheet, o bé segurament l'esquema de:

En el datasheet, la resistència que posa 10 en el pin 5 és realment 10 ohm, no 10K

D'altra banda, el filtre passa-baix que proposa el primer enllaç, serà realment necessari. Mirar les diferències.

Una altra cosa a considerar és l'alimentació. El speakjet ha d'estar alimentat a 2-5.5V, però el LM386 millor alimentat a 9V. Com que jo utilitzo un arduino alimentat amb una pila de 9V, he de saber utilitzar segons m'interessa els pins de 5V o de 9V (alimentació externa).

Amplificador-LM386.gif

quant al filtre RC llegeixo a http://letsmakerobots.com/node/5030 (algú també diu que el potenciòmetre no fa cap efecte...)

I just rebuilt my circuit with the two resistors and three caps between Pin19 of the SpeakJet and the Amp. It's made a huge difference to the volume - much louder - and the trim pot now seems to have a small, but noticable effect.

ISD1932: voice recorder breakout

El datasheet està a projectes/ELECT_31

The ISD1900 is a multiple messages record/playback device with two operational modes: Address Mode and Direct Mode.

  • Supply voltage: 2.4V to 5.5V.

Amb una resistència externa, Rosc, es selecciona la freqüència de mostreig i la selecció:

  • 53.3 KΩ: 12KHz/21.3 sec
  • 80 KΩ: 8KHz/32 sec
  • 100 KΩ: 6.4KHz/40 sec
  • 120 KΩ: 5.3KHz/48sec
  • 160 KΩ: 4KHz/60 sec

es tracta de llegir bé les instruccions del xip ISD1900, i d'associar els pins del xip amb els pins del breakout de Sparkfun.

Jo treballaré en mode address que em permet direccionar els missatges des d'un començament (pins S0-S3) fins a un final (E0-E3). D'aquesta manera els missatges poden tenir durades diferents. La durada també dependrà de Rosc, que defineix la freqüència de mostreig i per tant el número de segons que al final tindré disponibles. Jo treballaré amb Rosc=130 Kohm.

  • SP+ i SP-. Els pins del speaker estan clars. Si vull utilitzar un altaveu de 8 ohm necessito amplificador. És a dir, igual que les proves que feia amb el Speakjet, la sortida d'audio va bé per als cascs, però no per excitar un altaveu de 8 ohm, que tornaré a necessitar un amplificador d'àudio basat en el LM386.
  • MIC- i MIC+ és el micròfon. Per fer proves, puc fer servir un altaveu de 8 ohm com un micròfon cutre. El que no puc utilitzar és el micròfon electrolet (quines característiques té?) En comptes d'un micròfon puc ficar la sortida d'audio de l'ordinador? Sí, se sent un senyal molt fort. Per tant, la manera de procedir serà grabar les frases a l'ordinador, aplicar-los els efectes d'audio que vulgui amb el Audacity, i el senyal d'audio ficar-la a l'entrada MIC.
  • pin LED: de fet no cal utilitzar-lo, perquè el breakout ja porta un LED per saber quan estic grabant. A més, comparat amb el LED del breakout, el meu LED dóna un senyal imperceptible amb llum ambient. L'únic avantatge podria ser que al final del playback s'encén i s'apaga (això també s'observa en el led del breakout, per tant, no aporta cap avantatge). Si el faig servir, no equivocar-se amb la connexió (la pota llarga va a terra).
  • REC: un pols a terra comença a gravar. És un pols, no cal mantenir el senyal. S'encén el LED. Sé que acaba la gravació perquè s'apaga el LED.
  • FMC2/PlayE: És el playback activat per Edge, i és el que jo faré servir. Igual que el REC, un pols a terra comença el playback.
  • FMC1/PlayL: És el playback activat per Level (nivell). Per fer el playback he de mantenir el pin a terra. Preferiré utilitzar el PlayE.
  • XCLK, AGC i FT no els utilitzo

Treballant amb una Rosc de 130K treballo a una freqüència de mostreig de 5,3KHz i disposo de 48 segons de grabació (ISD1932).

Efectes de so robòtic: vocoder, LP robotize

Efecte LADSPA vocoder: sonar com un robot

El que necessito jo és el vocoder. Ara bé, no liar-se amb el link. El link explica com aplicar l'efecte de vocoder amb JACK a temps real. Jo ho faré amb el audacity, que processa el meu senyal d'audio i triga uns segons a processar-lo. Està a Efecto > Complementos > cercar Vocoder. Els valors que em dóna per defecte és un efecte massa extrem (20, 40, 100, 0, 0, 30). Ho faré amb els valors (40, 40, 100, 0, 0, 30). Després, de forma intuïtiva, aplico un Nivelado i una Compresión.

Ara bé, no m'acaba de convèncer. Molt millor és un plugin LADSPA que he aconseguit (això sí que és un soroll de robot):

Em descarrego el PitchTech LADSPA and VST Plugins de

Llegir el fitxer Linux Installation. Amb el Audacity és molt senzill. Copiar tots els arxius de la carpeta Linux a /usr/lib/ladspa, que és el meu directori de LADSPA. Aleshores en el Audacity ja estan disponibles aquests efectes. Concretament, el que m'interessa es diu Efectos > Complementos > PT Robotize. Puc posar 5 valors. El valor que més m'agrada és el 5. Crec que els valors no són més o menys efecte, sinó que són com efectes diferents. L'efecte 4 també m'agrada.

Després d'aplicar l'efecte, faig una Compressió per tal de normalitzar els valors i guanyar volum.

A més, puc afegir efectes de so de robot. Els sorolls de robot els puc descarregar de:

Els efectes sonors que he seleccionat són:

  • sonar: 6 sec
  • shortcircuit: 1 sec
  • SCI: 4 sec
  • robot leg: 2 sec
  • robot_leg1: 0,5 sec
  • robot_leg2: 0,5 sec
  • robot computing: 3 sec
  • laser: 1,3 sec
  • large_industrial: 3,5
  • large_industrial1: 2
  • large_industrial2: 1,5

Construcció cartrobot

Arriba el moment de la construcció. Per a fer sonar el cartrobot descarto el Speakjet (que només he aconseguit fer el demo-test) i em decanto pel ISD1932: gravaré els meus missatges a dins del xip.

En el paperduino, basat en el ATMEL168, disposo de 14 pins digitals. He d'implementar el H-bridge, el ISD1932 i dos LEDs. Vaig just de pins digitals, i els hauré de reutilitzar. Això serà possible perquè mentre el robot balli no parlarà, i quan el robot parli estarà quiet.

La configuració dels pins quedarà de la següent manera:

H-Bridge:

  • D3 PWM (OUT) -> Pin1: 1,2EN
  • D9,D10 (OUT) -> pins 2 i 7: 1A, 2A
  • D11 PWM (OUT) -> Pin9: 3,4EN
  • D12,D13 (OUT) -> pins 10 i 15: 3A, 4A

ISD i LEDs:

  • D5, D6, D7, D8 (OUT) -> Start Address (S0 S1 S2 S3)
  • D9, D10, D12, D13 (OUT) -> End Address (E0 E1 E2 E3) (es repeteixen)
  • REC D0 -> (OUT)
  • Play D1 -> (OUT)
  • LED1 D2 (OUT)
  • LED2 D4 (OUT)

Si necessités aprofitar més pins, el 9 i el 10 van negats, o sigui que utilitzant una porta AND només gastaria un pin. El mateix per al 12 i 13. Ho sigui, que podria estalviar dos pins de l'arduino per connectar els pins 2,7,10 i 15 del H-bridge.