Manual de KeyBot

Robòtica amb STEAMakersblocks i comunicació amb Apps i IoT



1. Introducció


Aquesta guia és un eina per al muntatge i programació del robot KEYBOT de Keyestudio. Està basat en la placa de control Arduino però per realitzar la programació farem servir un entorn de programació mitjançant blocs anomenat Steamakersblocks. Aquest llenguatge de programació és molt versàtil i fàcil d'aprendre i, a més, ens permetrà programar coses sorprenents gràcies a la seva potència i versatilitat.

En aquest manual trobareu una sèrie d'activitats guiades per poder aprendre a programar d'una forma molt fàcil i engrescadora i aprendrem conceptes relacionats amb les S.T.E.A.M. (Science, Technology, Engineering, Arts, Math).


Amb el KEYBOT tindrem els sensors i actuadors necessaris per poder programar completament el nostre robot i, a més, introduir-nos en el món de la programació d'entorns físics (Physical Computing).

També realitzarem una sèrie d'aprenentatges en les comunicacions (port sèrie, Bluetooth i Wifi), per tal d'endinsar-nos en el món de IoT (Internet of Things).

Per treballar amb aquest robot tenim un kit de peces per muntar-lo i uns elements addicional per afegir més funcionalitats.



Pàgina de l'entorn de programació: STEAMakersblocks.

Pàgina subministradora del material: Innova didactic.

2. Com funciona un robot?


Un robot funciona de forma similar a un humà. Quan el cervell rep una informació a través dels sentits (sensors), analitza aquesta informació, la processa (cervell) i dona estímuls als músculs (actuadors).

La principal diferència és que, així com el nostre cervell ha après el que ha de fer al llarg de la nostra vida en base a una sèrie d'estímuls, el sistema programat té la memòria buida, és a dir, no sap el que ha de fer. Llavors, som nosaltres el que li hem de dir que ha de fer en cada moment en funció dels senyals que li arriben dels sensors.

3. Components del robot KEYBOT


El robot KEYBOT es basa en la plataforma Arduino de codi obert, flexible i fàcil de programar. La placa de control del KEYBOT porta uns connectors RJ11 per facilitar la connexió dels sensors i actuadors.

El robot està dissenyat en una estructura metàl·lica, sòlida i resistent. L'assemblatge és molt senzill i es triga al voltant d'1 hora en muntar tot el robot i realitzar les connexions. Per fer l'ampliació trigarem mitja hora més aproximadament, depenent de les habilitats de la persona.


Llistat de material de la caixa:
Component Quantitat
1 Targeta de control 1
2 Panell acrílic superior de protecció de la targeta de control 1
3 KEYBOT Sensor d'ultrasons 1
4 KEYBOT Sensor de Línia 1
5 Mòdul Bluetooth (HC-06) 1
6 Roda universal d'acer W420 1
7 Motor reductor d'eix simple amb cable KF2510-2P, cable negre i vermell de 200mm Dreta 1
8 Motor reductor d'eix simple amb cable KF2510-2P, cable negre i vermell de 140mm Esquerra 1
9 Suport bateries de 2 cel·les 18650 1
10 Suport bateries de 6 cel·les AA 1
11 Roda de robot 6515 blanc i negre 2
12 Separador hexagonal de coure M3x40mm de doble pas 4
13 Pilar hexagonal de coure M3x15 (6mm) 4
14 Cargol M3x30mm cap rodó 4
15 Cargol de cap pla M3x8mm 4
16 Cargol hexagonal d'acer inoxidable M3x8mm 10
17 Cargol hexagonal d'acer inoxidable M3x10mm 10
18 Femella M3 niquelada 14
19 KEYBOT cos del robot color negre 1
20 Tornavís Phillips 3x40mm 1
21 Led amb connector RJ11 1
22 Cable 6P6C RJ11 10cm blau 1
23 Cable 6P6C RJ11 20cm blau 2
24 Clau Allen M2.5 tipus L niquelada 1
25 Cable USB 1
26 Manual d'usuari 1



A la caixa del robot KEYBOT trobarem les següents peces, així com un manual de muntatge del robot.


Les característiques del robot KEYBOT són les següents:

  • Rang d'alimentació: entre 7V i 12V.
  • Rang de corrent: mínim 800mA.
  • Velocitat del motor: a 6.0V 100rpm/min.
  • Controlador de motors: TB6612.
  • Tres sensors d'infrarojos
    • Per seguiment de línia i detector diferència entre blanc i negre.
    • Per detectar caigudes.
  • Mòdul d'ultrasons: per a detectar obstacles o mesurar distàncies.
  • Brunzidor: permet emetre sons.
  • Led: indicador fer indicacions visuals.
  • Mòdul inalàmbric Bluetooth HC-06: per poder controlar el robot de forma remota.
  • Dos motors de corrent continu.
  • Dues rodes de goma per millorar l'adherència.
  • Placa de control Keybot Control Board: amb connector RJ11 per facilitar les connexions.
  • Estructura metàl·lica molt resistent.
  • Interruptor: permet encendre i apagar el robot.
  • Suport piles: per a 6 piles AA.
  • Suport bateries: per a 2 bateries 18650.
  • Placa d'expansió de comunicacions I2C.



Elements addicionals:






4.Placa de control Keybot Control Board v2.0


La placa de control Keybot Control Board 2.0 és una placa electrònica basada en Arduino però adaptada a les necessitats del nostre robot. En la placa venen integrats tots els elements per al control dels sensors i actuadors del robot, ja siguin els drivers per al control dels motors, interruptor d'alimentació, connectors per als sensors i actuadors, brunzidor, connector Bluetooth, etc.

Placa de control Keybot Control Board v2.0:

Detalls tècnics de la placa

Keybot Control Board 2.0


  • Circuit de control principal: ATMEGA328P-AU
  • Circuit de control de motors: TB6612FNG
  • Circit de transmissió USB-sèrie: ATMEGA16U2-MU
  • Tensió d'entrada: DC 7-12V
  • Corrent per als motors: 1.2A (mitja) / 3.2A (màxima)
  • Corrent de Standby: 47mA
  • Brunzidor passiu: D13 control
  • Control de direcció de motors: D4 (motor A) i D7 (motor B)
  • Control de velocitat de motors: D5 (motor A) i D6 (motor B)
  • Interruptor d'alimentació (interruptor gran)
  • Interruptor de comunicacions Ordinador-Bluetooth (interruptor petit).
  • Connector per a mòdul Bluetooth
  • Connector doble de 3 pins per a motor pel control de 2 servo motors: D9 i D10 control
  • Botó de Reset
  • Connector d'alimentació
  • 2 Connectors per a motors (MA i MB)
  • 8 Connexions RJ11:
    • A0-D2
    • A1-A2-A3
    • A4-A5 (I2C)
    • A6-A7
    • D3-D8
    • D9-D10
    • D11
    • D12
  • Led indicador d'alimentació
  • Leds Rx i Tx per indicar les comunicacions



Taula de connexions dels diferents elements del robot KEYBOT a la placa de control:


En aquesta placa de control ja hi ha les entrades i sortides definides. La placa està basada en una placa Arduino UNO. Disposa d'un driver de motors, un brunzidor (Pin D13) i dos connexions per a servo motors (pins D9 i D10).
La placa disposa d'entrades Analògiqes (A) i d'entrades/sortides Digitals (D) totes elles amb connexions RJ11 per evitar errors en les connexions.

5.Guia de muntatge


A continuació, procedirem a realitzar els passos de muntatge del robot KEYBOT de forma molt resumida i gràfica (hi ha un manual d'instruccions al kit de robot).

Molt important tenir en compte que hi ha un problema amb el Manual d'usuari que ve en el kit, ja que hi ha un pas malament. Els motors s'han de col·locar després d'instal·lar el suport de les piles, ja que si no es fa així no es poden posar els cargols per subjectar el suport.

Es convenient per poder collar les femelles de fer servir unes alicates i, opcionalment, es poden substituir les femelles que venen en el kit per femelles autoblocants.

Alicates de punta Femella autoblocant



També es poden fer servir eines pròpies, en aquest cas aquestes fetes en 3D.


Passos a seguir en el procés de muntatge:



En el robot hi ha un manual de muntatge. Hi ha un error en el procediment, ja que si es munten els motors al principi després s'han de treure per muntar el suport de les bateries.

Pas 1: Muntatge de l'estructura.




Pas 2: Col·locació del sensor d'ultrasons.




Pas 3: Ara instal·larem els sensors de seguidor de línia i la roda d'acer.




Pas 4: Instal·lació del suport de les bateries 18650.




Pas 5: Instal·lació del suport de les bateries AA.




Pas 6: Muntatge dels motors.




Pas 7: Col·locació de les rodes.




Pas 8: Col·locarem la placa de control a l'estructura del robot.




Pas 9: El següent pas és instal·lar el protector acrílic de la placa de control.



6.Instal·lació del kit d'ampliació


A continuació, mostrarem com instal·lar el kit d'ampliació. Aquest kit consta de:



Pas 10: Connexió dels sensors i actuadors.


Procés de muntatge dels elements 3D:



















7.Guia de connexió


Ara procedirem a realitzar la connexió del cablejat. Farem les connexions tal i com indica la taula de l'apartat 4. Connectarem amb els cables RJ11 els sensors i actuadors de color verd i la resta amb els seus connectors corresponents.

El mòdul Bluetooth o el mòdul Wifi els connectarem directament a la placa de control. Haurem de posar l'interruptor associat al mòdul en la posició OFF per poder enviar el programa a la placa. Hem de tenir cura alhora de connectar el mòdul Wifi i fixar-nos amb les connexions, ja que les hem de fer amb cables Dupont.

La placa Hub I2C permet connectar dispositius I2C. Aquí connectarem el sensor de colors, la pantalla OLED i la matriu 8×8.

Pas 11: Connexió dels sensors i actuadors.
El servomotor va al connector de la part superior (més separat de la placa).

El Hub I2C es connecta al connector I2C de la placa (A4/A5) des de qualsevol connector de la placa i la resta de components es connecten a la resta de connectors del hub.

Esquema de connexions:

8.Instal·lació d'STEAMakersblocks


STEAMakersblocks treballa on-line però hem d'instal·lar un petit programa qe serà l'encarregat de connectar el nostre programa amb el robot KEYBOT.

Primer haurem de crear un compte en STEAMakersblocks i després instal·lar el software Connector.






9.Programació amb STEAMakersblocks


STEAMakersblocks és un llenguatge de programació gràfic amb “Blocs” creat pel professor Juanjo López. Està pensat per a que nenes i nens aprenguin a programar a partir d'uns 8 anys.

Els diferents blocs serveixen per a llegir i escriure les entrades i sortides de la placa de control del robot, així com a programar funcions lògiques, de control, etc.


Per realitzar la programació la podem fer des de la IDE d'Arduino o mitjançant STEAMakersblocks. Com podem veure son dos sistemes diferents. En la IDE d'Arduino la programació es realitza mitjançant instruccions (a la dreta en la fotografia) i en STEAMakersblocks es realitza mitjançant blocs.
Per poder programar el robot en STEAMakersblocks podem fer servir els blocs específics. Per què apareguin hem de crear un projecte nou triant en “Tipus de projecte”: Keyestudio Keybot.

El procediment per crear un projecte en STEAMakersblocks és el següent:

Ara ja podem fer servir els blocs del robot KEYBOT en STEAMakersblocks.



Utilitzar ArduinBlocks simplifica i fa més intel·ligible el codi, això permet iniciar-se en el món de la programació de forma més amigable. STEAMakersblocks també permet programar el robot de diverses formes, ja que hi ha diferents blocs que realitzen les mateixes funcions, nosaltres farem servir els blocs específics que hi ha per programar el robot.

Podeu canviar l'idioma de l'entorn de programació que ve per defecte i posar-lo en català.


A la següent imatge podeu veure una comparació de codi entre ArduinBlocks i Arduino IDE.


10.Activitats amb el robot KEYBOT


A continuació, us proposarem una sèrie d'activitats i pràctiques per poder aprendre a programar el robot KEYBOT. Ho farem pas a pas per poder arribar a programar completament el robot.



En les activitats primer hi ha una explicació del component electrònic que es farà servir i, a continuació, una descripció de la pràctica a realitzar (pot ser que tingui diferents apartats). Per últim, es proposa una activitat d'ampliació. Aquesta activitat d'ampliació (requadre de color gris en cada pràctica) és la pràctica que podeu proposar de fer als vostres alumnes.

10.1 A01. Led


Anem a començar el primer programa que consistirà en encendre i apagar el led connectat a D9. Farem una intermitència cada 500ms.

Com a aquesta és la primera pràctica explicarem tot el procés pas a pas. En les següents pràctiques no s'explicarà la part del Connector, la tria del port COM ni la pujada del fitxer al robot.

Un LED (Díode Emissor de Llum) és un tipus de díode semiconductor que emet llum. Es fan servir com a indicadors en molts dispositius i com a element d'il·luminació.

Primer agafarem el bloc del led que està dintre de “Actuadors”. Per defecte ja surt a què connector tenim el nostre led connectat.


A continuació, arrosseguem el bloc dintre de l'estructura “Bucle”. Amb això el nostre led ja es podrà encendre.


Canviarem la sortida del led a D9.


Però el que volem és que s'encengui i s'apagui cada 0,5 segons. Per això haurem de col·locar un bloc d'espera. Aquest bloc està dintre dels blocs “Temps”.


Modificarem el temps d'espera canviant el número que hi ha al bloc i posant el valor desitjat.


Copiarem el bloc del led amb el botó dret del ratolí i “Duplicar”.


Ara canviarem “Estat” del led per què s'apagui.


I ara només queda completar el programa amb una espera de 5 segons per comprovar els diferents cicles.

Ara ja tenim el programa dissenyat i només ens falta enviar-lo al robot. Per fer aquest procés haurem de seguir una sèrie de passos.


Enviar el programa al robot:






Ara farem una altra pràctica amb el led. El que volem fer és que el led s'encengui i s'apagui només 5 vegades (farem servir els temps de 400ms ON i 250ms OFF).

Per poder fer repeticions farem servir un bloc nou que està dintre de “Control”. El bloc de repetició és “Repetir xx vegades fer”.


Ficarem el bloc en el programa.


Activitat d'ampliació: modifica els temps a 600ms ON i 380ms OFF, que només ho faci 9 vegades però que quan acabi el led es quedi encès.



Solució:

10.2 A02. Led (PWM)


En aquesta pràctica el que farem serà regular la intensitat de la llum del led. Per fer això farem servir un mètode electrònic que es diu PWM (Pulse-Width Modulation: modulació per amplada de pols).

La modulació PWM permet generar una senyal analògica mitjançant una sortida digital. Com que utilitza un sistema de codificació de 8 bits (en el sistema binari: 2^8 = 256, per tant, del 0 a 255).

Les sortides digitals d'Arduino només tenen dos estats: ALT/BAIX, ON/OFF, ENGEGADA/APAGADA. És a dir, corresponen a una sortida de 5V (ON) i de 0V (OFF). Amb això només podem fer activitats d'encendre i apagar un led, no podríem controlar la seva brillantor de menys a més o viceversa. Això ho fa per la proporció entre l'estat alt (ON) i baix (OFF) del senyal. El control digital s'utilitza per crear una ona quadrada de cicle de treball diferent, un senyal commutat entre encès i apagat. Aquest patró d'encesa i apagada pot simular voltatges entre encès total (5 volts) i apagada (0 volts) al canviar la relació entre aquests dos valors.



El programa que farem consistirà en encendre el led amb un valor una mica superior a la meitat de la intensitat màxima. Aquest valor serà 150. Primer triarem el nou bloc per regular la intensitat del led que es diu “Led intensitat (PWM)”.

Al valor d'ajust posarem el nou valor que serà 150.

Enviem el programa al robot i comprovarem que s'encén però no massa intens. Ara farem un programa que vagi encenen el led mica a mica. Per això farem servir un nou bloc que es diu “Comptar amb i des de x fins x de a x”.

Col·loquem el bloc i posem els paràmetres de configuració.

Per últim, farem servir el bloc “Variables” per posar la variable que anirà variant.

La posem en el “Valor” del led que és que anirà canviant, i triarem la variable “i”.

Li donarem una espera de 50ms per a que es vegi el seu efecte. Envia el programa i comprova el seu funcionament.



10.3 A03. Brunzidor


El brunzidor (Buzzer en anglès) és un transductor electroacústic que produeix un so continu o intermitent. Serveix com a mecanisme de senyalització o avís acústic. Per tal de poder fer sons concrets cada freqüència correspon a una nota musical.


En el robot KEYBOT el brunzidor està integrat en la placa de control i està connectat a la sortida D13.

Farem un programa que faci la nota ‘La’ durant 100ms i després la nota ‘Do’ durant 50ms amb un interval de 300ms entre notes.


També podem fer el programa amb una petita modificació, que és utilitzant els blocs específics que hi ha per les notes (hi ha algunes notes definides).


Ara carregarem una cançó ja gravada (en format RTTTL). Primer agafarem el bloc del “Brunzidor Reproduir RTTTL” i després li ficarem el bloc que porta els fitxers “RTTTL”.

A continuació, triarem la canço “Arknoid”.

I afegirem uns blocs propis de notes:

Activitat d'ampliació: crea la cançó Himne de l'alegria. Pots triar com a referència el temps de les notes negres de 500ms.


Solució: (també la podeu fer amb el nom de les notes)

10.4 A04. Sensor de temperatura i humitat DHT22


En aquesta activitat llegirem els valors del sensor de temperatura i humitat DHT22. Aquest sensor mesura temperatures en un rang de -40°C fins a 80°C amb un error de +/-0.5°C i la humitat relativa entre 0% i 100% amb un marge d'error de +/-2%.

El sensor de temperatura és un termistor tipus NTC. Un termistor és un tipus de resistència en el qual el seu valor resistiu varia en funció de la temperatura.

El terme prové de l'anglès “thermistor”, el qual és un acrònim de les paraules Thermally Sensitive Resistor (resistència sensible a la temperatura). Existeixen dos tipus fundamentals de termistors:



El nostre robot disposa d'un sensor d'aquest tipus connectat a l'entrada D12.

A STEAMakersblocks, en el menú de sensors tenim un bloc específic per programar aquest sensor:


Farem un petit programa per podem emmagatzemar els valors de la temperatura i la humitat. Primer crearem dos variables on emmagatzemarem les dades i després farem la lectura del sensor.

Per crear la variable anirem al menú Variables i agafarem un tipus de variable numèrica.


El programa resultant és el següent:

Activitat: realitza un programa que realitzi la mitja de dos valors de temperatura agafats amb una diferencia de temps de 1 segon.



Solució:

10.5 A05. Comunicació sèrie (Consola)


En aquesta pràctica provarem el funcionament de la comunicació entre el robot KEYBOT i l'ordinador. STEAMakersblocks disposa d'una “Consola” per poder veure la comunicació. Aquesta funció és molt útil per què ens permet consultar valors (com els dels sensors) al KEYBOT.

Farem un programa en el que enviarem un missatge de text “Robot KEYBOT” i el valor d'una variable que es vagi modificant entre 0 i 255 cada 20ms.

Primer configurarem la velocitat de comunicacions. Obrirem en el panell de blocs “Port sèrie” i triem “Inicia Bauds 9600”.

El posarem a dintre d'“Inicialitza”. Ara triarem el bloc “Enviar” per afegir el text a dintre de les cometes.

Ara afegirem els blocs de la variable de comptatge. Crearem una variable afegint el bloc “Establir varNum=x”.

Després crearem una “Variable nova…” i li donarem el nom de “valor”. I els comptadors canviarem la variable.

Per últim, afegirem el bloc per enviar el valor i el temps d'espera. El programa quedarà de la següent manera:

Ara pugem el programa al robot i obrim la “Consola”.

En el menú que apareix polsem en “Connectar”.

Ja podem veure les dades:


Activitat d'ampliació: modifica el programa enviï les dades d'una variable que es digui “Distancia”, que el comptador s'incrementi de 5 en 5 i que el temps d'espera sigui de 50ms. Nota: pots “Renombrar la variable” per estalviar temps.


Solució:


10.6 A06. Sensor d'ultrasons


El KEYBOT porta un sensor d'ultrasons per poder veure el que hi ha al davant. Són els ulls del robot. Funciona de forma similar al sistema que fan servir els ratpenats, ja que es guien per ultrasons.


El mode de funcionament d'aquest sensor és molt senzill. Està format per un emissor i un receptor d'ultrasons (no perceptibles per l'oïda humà). Quan una ona ultrasònica xoca amb un objecte es reflectida com un eco. Al retornar és detectada pel receptor. Per saber la distància de l'objecte, es calcula el temps que triga el senyal des de que s'emet fins que es torna a detectar (coneixent que la velocitat del so és de 340m/s). El sensor mesura distàncies entre 2,5cm i 3cm. El sensor està connectat en A0-D2.

Farem un programa que encengui el led si la distància mesurada és inferior a 25cm i que s'apagui si la distància és major.

STEAMakersblocks té un bloc específic per la mesura de la distància amb el sensor d'ultrasons.

Ara ens farà falta un nou bloc per decidir si aquest valor de distància és major o menor. Aquest bloc és “si x fer x”.

També necessitarem establir la condició lògica.

I el valor matemàtic de la comparació.

Ara començarem a fer el programa. Primer muntarem l'estructura del condicional. I afegim els blocs corresponents a l'estat del led.

Amb aquest programa no funciona del tot bé per què el led s'apaga intermitentment. Això és degut a que no emmagatzemem la distància del sensor en cap variable. Per tant, haurem de crear una variable anomenada “distancia”. Tampoc li estem deixant temps al sensor d'ultrasons que calculi la distància. Li posarem un temps d'espera mínim de 10ms.

El programa que hem de fer és el següent:


Activitat d'ampliació: modifica el programa per què encengui el led si la distància és menor o igual a 12cm i enviarà el valor del sensor a la “Consola” en qualsevol cas.



Solució:

10.7 A07. Plotter


Ara farem un programa molt interessant que ens permetrà veure les dades del sensor d'ultrasons, és a dir, veurem de forma gràfica la distància que està mesurant el sensor d'ultrasons i, a més, podrem generar un fitxer CSV amb les dades. Amb aquest programa aconseguirem tenir un pràctic sistema d'adquisició de dades.

Primer farem el programa per poder veure les dades al Plotter que té integrat STEAMakersblocks.


Enviem el programa a la placa i activem el Serial Plotter.


Canviarem la velocitat de comunicació (baudrate) a 115200 (si és necessari) i després polsarem en Conectar per veure les dades.


Activitat d'ampliació: modifica el programa per què indiqui els valors dels sensors de línia.



Solució:


10.8 A08. Tractament de dades CSV I


Per poder guardar les dades en CSV polsarem sobre el botó d'emmagatzemar (podem triar la quantitat de dades emmagatzemades en “Max.Samples/sèrie).


Veurem les dades que s'estan enregistrant.


Despés polsem en aturar i en CSV per descarregar el fitxer amb les dades.


Obrim el fitxer amb l'Excel i el resultat serà semblant al que veiem a continuació.


Farem servir el programa del mesurador de distància per ultrasons per poder comprovar experimentalment el que hem vist anteriorment. Hem fet una petita modificació perquè les mesures majors de 50 no les mostri.


Els passos que hem de seguir són:


Configurem el Serial Plotter:


Iniciem la visualització de les dades:


Podem veure com es van enregistrant les dades:


Obrim el full de càlcul i veiem les dades enregistrades:


Seleccionem la columna Distancia per poder fer la gràfica:


Anem al menú InsertarGráficos recomenados:


Ja podem veure la gràfica representada:


Activitat d'ampliació: fes un programa replicant el que hem fet en aquesta pràctica.



Solució:

10.9 A09. Moviments del robot


Aquest serà una de les parts més importants de la programació, ja que haurem de programar els moviments del robot mitjançant l'accionament dels motors.


En total podrem fer 9 moviments diferents, encara que en els blocs definits podrem fer 7 combinacions. Les combinacions que no hi ha són les de girar a dreta i esquerra cap enrere. Però es poden dissenyar amb els bloc que configuren motors.


Els moviments del KEYBOT dependran del sentit de gir de cadascun dels motors. Aquí tenim quin és el sentit de cada motor en funció del moviment desitjat:


Amb aquest bloc també podem triar la velocitat dels moviments.



També existeix un bloc específic per al control de cadascun dels motors. Aquest bloc ens permet triar el motor, el sentit de gir i la velocitat.


Farem un programa que faci una seqüència de moviments cada 2 segons. La seqüència serà:


Ara provarem de dissenyar els dos moviments que falten. Però crearem una funció que consisteix en agrupar una sèrie de blocs i assignar-li un nom.


La primera funció serà gir esquerra enrere. El motor esquerra anirà cap enrere i el motor de la dreta estarà aturat. Li donarem el valor de 128 que correspon a la velocitat normal. Farem el mateix per l'altra funció.


Ara apareixen dues noves funcions al bloc de “Funcions”.


Ara ja tenim el programa amb tots els moviments possibles del Keybot.


Activitat d'ampliació: modificarem el programa per a que el KEYBOT faci el següent:

  • Marxi cap endavant si no detecta cap obstacle una distància superior a 20cm.
  • Si detecta entre 15 i 20cm s'aturarà.
  • Si detecta que la distància a l'objecte que té al davant és menor o igual a 15cm ha de tirar enrere.
  • Quan el KEYBOT faci marxa enrere ha d'avisar amb el led i el brunzidor (igual com ho fan alguns vehicles). El led farà una intermitència i el brunzidor anirà fent un soroll intermitent.



Perquè sigui una mica més fàcil podeu partir d'aquest programa…


Solució:

10.10 A10. Sensors de línia I


El sensor de línies del KEYBOT està formar per tres sensors infrarojos TCRT5000. El seu principi de funcionament és la d'emetre un senyal infraroig (emissor) i detectar la quantitat reflexada (receptor). En el cas de que el color sigui negre, aquest color absorbeix tota la llum però si és de color blanc la reflexa. Per tant, si el color és negre retornarà un valor Alt (1) i si és blanc retornarà un valor Baix (0). L'alçada de detecció està compresa entre 0,5 i 3 cm.


El sistema d'identificació de línia del KEYBOT està composat per 3 sensors d'aquest tipus. En la part superior hi ha tres potenciòmetres per poder ajustar la sensibilitat. Al costat de cada potenciòmetre hi ha un petit led vermell que s'encén quan el sensor detecta el color blanc i s'apaga amb el color negre.


Els sensors de línia estan connectats a l'entrada analògica triple A1, A2, A3. Cadascun correspon als sensors S1, S2 i S3 respectivament.


A continuació, farem un programa que enviï si detecta blanc o negre a amb el sensor S1 a la “Consola” cada 100ms. Farem servir un dels blocs específics del KEYBOT.



Els valors que veurem a la “Consola” només podran ser 0 o 1. Per tant, aquest tipus de valor és de tipus Booleà.


Activitat d'ampliació: fes un programa que llegeixi els tres sensors i després els mostri per la “Consola” cada 50ms. Haureu de crear un nou tipus de variable Boolena.



Solució:

10.11 A11. Sensors de línia II


En aquesta pràctica ens entrarem en programar els sensors de línia per poder començar a fer un robot seguidor de línia.

El programa que farem consistirà en que si detecta el sensor del mig avanci el robot, si detecta el sensor S1 ha de girar a la dreta i si detecta S3 ha de girar a l'esquerra.


Activitat d'ampliació: fes un programa que basant-se en el programa anterior reguli la velocitat en funció de la distància. Per calcular la velocitat farem servir la fórmula velocitat=distància∗3.

Solució:

10.12 A12. Comunicacions I2C. Sensor de colors


En aquesta pràctica farem servir el sensor de color RGB TCS34725 que funciona mitjançant el bus I2C. Però, primer necessitem saber com funciona aquest sistema de comunnicacions.

L'estàndard I2C (Inter-integrated Circuit) va ser desenvolupat per Philips en 1982 per la comunicació interna de dispositius electrònics. Posteriorment va ser adoptat per altres fabricants fins que es va convertir en un sistema estàndard. El bus I2C necessita només dos cables per al seu funcionament, un per al senyal de rellotge (SCL) i l'altre per l'enviament de les dades (SDA).


En general, cada dispositiu connectat al bus només tindrà una direcció única. Si tenim elements iguals els haurem de canviar el direccionalment d'alguna forma. El bus I2C és una arquitectura de tipus master-slave. El dispositiu master inicia la comunicació amb els esclaus, i pot enviar o rebre dades dels esclaus.


A aquest dispositiu li podem connectar molts dispositius diferents:



A continuació, procedirem a programar el sensor de colors. El sensor pot reconèixer el color de la superfície d'un objecte a través de la detecció òptica. El sensor s'il·lumina amb llum brillant i emet els valors RGB corresponents per ajudar a restaurar el color. A més, per evitar la interferència de l'entorn i augmentar la precisió, porta un sistema de llum infraroja a la part inferior del sensor, de manera que l'element d'espectre infraroig de la llum incident es minimitza per fer que la gestió del color sigui més precisa. A la part inferior del sensor es pot veure els 4 LEDs de color groc, que poden garantir que el sensor es pugui fer servir normalment en condicions de poca llum ambiental, realitzant la funció de llum de farciment. El sensor té un filtre d'alta sensibilitat, ampli rang dinàmic i ombrejat infraroig. És una solució ideal per a components sensibles al color.


STEAMakersblocks disposa de tres blocs específics per poder controlar aquest sensor dintre dels blocs de “Sensors”.


És molt important que primer feu una “Captura color” per poder saber el color.

Farem un programa que identifiqui si el color que detecta és el vermell. Si és correcte s'encendrà el led i sinó estarà apagat.


Activitat d'ampliació: fes un programa que en funció dels colors faci una nota musical i indiqui la nota en la pantalla per la consola. Podeu fer servir els calors de les notes o directament la nota.
Do = 262
Re = 294
Mi = 330
Fa = 349
Sol = 392
La = 440
Si = 494
Podeu fer servir el circuit de proves per provar el programa ja que té totes les notes i colors proposats.



Solució:

10.13 A13. Comunicacions I2C. Matriu 8x8


Aquest dispositiu està composat per 64 leds que formen una matriu de 8×8. Aquest mòdul utilitza el xip HT16K33 per controlar una matriu de punts de 8×8.

Només necessita utilitzar el port de comunicació I2C del microcontrolador per controlar la matriu de punts. Hi ha algun model que també disposa de tres interruptors DIP per poder canviar la direcció de comunicació I2C i poder connectar més matrius alhora. Nosaltres farem servir aquest últim model.


En la configuració del direccionalment I2C podrem triar entre 8 combinacions (2³=8) possibles. Si deixem a OFF els tres interruptors serà 0x70 i si els posem a ON serà 0x77.


També haurem de triar la versió de la matriu, en aquest cas la V2.


Per tal de poder-la programar farem servir els blocs propis que té que estan al bloc de funcions “LedMatrix 8×8”…


Igual que en la pràctica anterior, primer configurarem la matriu i després farem que surti una cara. Heu de triar la direcció 0x70 i la versió v2.


Ara farem un programa que encengui uns leds en unes posicions específiques. El de la posició (0,0) estarà sempre encès i el de la posició (1,1) serà intermitent.


Activitat d'ampliació: fes un programa que faci rotar una fletxa a la matriu de leds. La velocitat de rotació dependrà de la distància multiplicada per 10.



Solució:

10.14 A14. Comunicacions I2C. Pantalla OLED


Anem a programar la pantalla OLED. Aquesta pantalla funciona per bus de comunicacions I2C i la seva mida és de 0,96″ (128×64). Només cada píxel que està encès consumeix corrent, per això aquest tipus de pantalles són molt eficients.


Connectarem la pantalla al HUB I2C mitjançant cables Dupont a les connexions SDA - SCL - GND - VSS.

ArduioBlocks disposa de blocs específics per poder controlar totalment la pantalla.


Farem un programa que mostri un missatge a la pantalla OLED. Primer configurarem la direcció I2C al valor 0x3C. A continuació, mostrarem el text a la pantalla.

Podem triar on col·loquem el text (x,y), el text que es mostrarà i la seva mida (small, medium, big).

Activitat d'ampliació: fes un programa que mostri a la pantalla en la primera línia “Comptador” i en la segona línia el valor d'un comptador de 0 a 255.



Solució:

10.15 A15.Servomotor


En aquesta pràctica farem servir un servomotor. És un element molt utilitzat en robòtica. És un tipus de motor que pot posicionar el seu eix en un angle determinat. Per funcionar necessita l'alimentació (GND i VCC) i un senyal de control. Generalment els servomotors poden girar uns 180° però hi ha alguns models que poden girar més, fins i tot de rotació contínua.


La placa de control del KEYBOT disposa de dues sortides per poder connectar servomotors (D9 i D10). Com que ja fem servir D9 per al led farem servir D10 pel nostre servomotor. Aquest anirà connectat directament a la placa de control sense fer servir el connector RJ11 sinó al connector de 3 pins. Per fer connectar-lo ens hem de fixar en els colors dels cables: Negre GND - Vermell VCC - Taronja D10 (senyal).


Existeix un bloc específic per poder controlar els servomotors. Aquest bloc s'anomena “Motor”.


Activitat d'ampliació: fes un programa que faci moure el servomotor entre dos angles en funció del sensor de línia que detecta:
S1:30° S2:90° S3:150°



Solució:

10.16 A16. Comunicació Bluetooth


En la placa de control del robot KEYBOT tenim un connector per tal de col·locar el mòdul de comunicacions Bluetooth. També disposa d'un petit interruptor per poder obrir o tancar aquest port de comunicacions, ja que està connectat als pins D0 i D1 (Rx/Tx) igual que port de comunicacions de l'ordinador (USB).
Estat de l'interruptor:



10.16.1.1 A16.1. AppInvetor2.

Primer haurem de crear un compte en AppInventor2 a través del següent enllaç: AppInventor2

Una vegada creat el compte procedirem a realitzar la programació, tant amb “Designer” com amb “Blocks”. A continuació, es mostren els dos programes d'exemple.










10.16.2 A16.2. STEAMakersblocks.

A continuació, procedirem a realitzar el programa en STEAMakersblocks i que anirà en el KEYBOT.


Quan tenim preparats els dos programes, seguirem els següents passos:



Activarem el módul Bluetooth del telèfon mòbil.


Obrirem el servei Bluetooth del mòbil i buscarem el nou dispositiu. Apareixerà un dispositiu anomenat HC-06.


Triarem aquest mòdul i introduirem la contrasenya: 1234 (opcionalment pot ser 0000).
Ja tindriem sincronitazat els dos dispositius Bluetooth.


A continuació, obrirem l'aplicació (en aquest cas s'anomena “Bluetooth”).


Polsarem el botó “Connexió” per poder fer la connexió (les lletres surten de color negre, quan es connecti canviaran de color). Recordeu que l'interruptor de comunicacions estarà en ON en el robot.


Triarem el nostre mòdul Bluetooth (mitjançant l'adreça MAC):


Ara les lletres del botó “Connexió” apareixerà de color blau.


I el led vermell del mòdul Bluetooth quedarà fixe.


Si polsem el botó “Encén led” s'encendrà el led i si polsem “Apaga led” s'apagarà.

Activitat d'ampliació: fes un programa que permeti controlar més elements del robot. A part de controlar el led, que es pugui controlar que el robot s'aturi, vagi cap endavant i cap enrere.



Solució:



10.17 A17. Comunicació Wifi


Per poder realitzar la comunicació Wifi hem de realitzar una sèrie de passos. Farem servir el programa ThingSpeak per pujar i veure dades i l'aplicació ThingView per només visualitzar dades. Per tant, hem de preparar els següents programes:



Canviarem el mòdul Bluetooth pel mòdul Wifi respectant les connexions VCC - GND - TXD - RXD. Per fer les connexions farem servir cable Dupont o similar.

Ara farem la configuració d'STEAMakersblocks, ThingSpeak i ThingView.

10.17.1.1 A17.1. ThingSpeak.

Primer hem de crear un compte a ThingSpeak: Enllaç ThingSpeak


Una vegada que hem creat el compte de ThingSpeak hem d'apuntar les següents dades:




Altres dades importants estan a la pestanya “API Keys”.




Per últim, hem de fer la configuració dels canals on rebrem les dades en “Channel Settings”.


Ja hem configurat ThingSpeak!

10.17.1.2 A17.2. STEAMakersblocks.

Una vegada configurat ThingSpeak, prepararem el programa d'STEAMakersblocks per llegir les dades dels sensors i enviar-los via Wifi.

En el bloc “Inicialitzar”, configurarem:




A continuació, configurarem la publicació de dades amb la funció “para: subir datos a la nube”:


Aquestes dades les hem de posar en cada camp de: “Publicar Tema”.


Ja hem configurat STEAMakersblocks!

10.17.1.3 A17.3. ThingView.

Si volem veure les dades en el telèfon mòbil, podem instal·lar l'aplicació ThingView. Per fer la instal·lació hem de seguir els següents passos:

Add ChannelChannel ID: posarem el codi del nostre canal de ThingSpeak (Channel ID).


Visualització de dades en ThingView:


Ja està configurat, a veure dades!

El que farem serà enviar des del robot els valors de temperatura, humitat i distància a ThingSpeak i després recollir les dades en un fitxer CSV (en la propera pràctica) per poder representar les dades obtingudes de forma gràfica.

Primer farem el programa en STEAMakersblocks per enviar les dades a ThingSpeak. Com que és un compte gratuït no permet enviar dades molt seguides. Enviarem les dades cada 20 segons.

Connectem el mòdul Wifi (si no el tenim connectat). Enviem el programa al robot i canviem l'interruptor per poder fer servir el mòdul Wifi.

A continuació, configurarem els canals que volem habilitat de ThingSpeak i quines dades rebrem en cadascun d'ells.



Activitat d'ampliació: fes un programa que permeti canviar dades a ThingSpeak des del Keybot (Humitat, Temperatura i Distància).


Les dades visualitzades haurien de ser semblants a aquestes.
Atenció: Es triga uns 40 segons en poder començar a veure les dades!


Solució: (l'últim valor de temps es pot modificar en funció del tipus de compte de ThingSpeak).

10.18 A18. Tractament de dades CSV II


En aquesta pràctica el que farem serà descarregar les dades de ThingSpeak i fer el tractament de les dades semblant com vam fer a la pràctica anterior.

Anem al menú Data Import/Export i a l'apartat Export polsem sobre Download per descarregar el fitxer CSV.


Descarrega el fitxer feeds.csv amb les dades acumulades al canal de ThingSpeak amb els seus camps associats.

Les dades obtingudes són de la següent forma:


Convertim el text en columnes:





El document que obtindrem quedarà així:


Ara tornarem a convertir la columna C en més columnes. Triem la columna i tornem a fer servir la funció de Text en columnes, però ara els delimitadors seran les comes.


La taula quedarà de la següent forma:


Ara ens queda arreglar la taula per poder fer les gràfiques. Crearem una fulla nova i posarem a la primera columna el número de mostra i el nom de les variables a continuació.


Tornem a la fulla de dades i apliquem un filtre a cada columna per triar les caselles amb dades.


Deixarem totes les caselles amb dades seleccionades i deixarem sense seleccionar les buides:


Ara copiarem aquestes dades a la seva columna de la fulla nova que hem creat.



Repetim el procediment per les altres dues columnes. El resultat serà:


Ara ja tenim correctament les dades. Ja es poden realitzar les gràfiques corresponents. Insertarem una gràfica de línies.


Triarem un model de línies 2D.


I li afegirem una mica de disseny.


Traiem la mostra del gràfic (color blau) i canviem una mica els colors. I el resultat final serà:


Activitat d'ampliació: realitza tots els passos de la pràctica per obtindre unes gràfiques similars.


11.Projectes amb el robot KEYBOT


A continuació, us proposarem una sèrie de projectes o reptes per fer amb el robot KEYBOT.

Per alguns dels projectes farem servir una superfície amb diferents serigrafies que està inclosa en el kit.