Documente Academic
Documente Profesional
Documente Cultură
Attribution-NonCommercial-NoDerivs
CC BY-NC-ND
Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website /
blog, printare, sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul
sursa din acest document poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara nici
un fel de limitari.
WiFi Car Revolutions
(partea a II-a)
Pentru a face acest lucru vom exploata conexiunea de reea, prezentat n prima parte,
pentru a conecta WiFi Car la un serviciu cloud de recunoatere vocal. Puterea de calcul
a plcii de dezvoltare nu permite implementarea algoritmului de recunoatere vocal
local, pe placa de dezvoltare a WiFi Car, din aceast cauz vom apela la resursele de
calcul a unui sistem de cloud. Sistemul de cloud utilizat este IBM BlueMixTM, serviciu
cloud comercial dar cu posibilitatea de evaluare gratuit de 30 de zile fr a fi nevoie
s introducem informaii legate de un card bancar. Mai mult dect att, n anumite
centre universitare din ar accesul studenilor i profesorilor este gratuit nelimitat.
Pentru familiarizarea cu serviciul de cloud IBM BlueMixTM se poate revedea i lecia
How sunny is the Blue? (I, II). nregistrarea pe platform se face la adresa:
https://www.robofun.ro/forum/
Se va alege un nume pentru aplicaie (n cadrul leciei se va utiliza numele WCR dar
putei alege orice alt nume) i se va da comanda (Create) de alocare de resurse cloud
pentru aceast aplicaie nou. Alocarea de resurse poate dura cteva minute sau zeci de
minute. Finalizarea operaiei este marcat de schimbarea strii aplicaiei n Running.
n plus, trebuie s adugm aplicaiei noastre un serviciu de tip Speech to Text (serviciul
de recunoatere vocal): Services / Watson / Speech to Text. Noul serviciu trebuie
asociat cu aplicaia creat anterior (Conections / Create connection):
Dup definirea conexiunii aplicaia WCR se va restarta. Pentru a putea conecta WiFi
Car la aplicaia nou creat trebuie s mergem n Dashboard-ul de administrare a
serviciului WCR-iotf-service (Connect your devices / Launch dashboard). Comanda
ne va direciona ctre portalul IBM Watson IoT Platform unde vom crea un nou
dispozitiv (Devices / Add Device). Nu trebuie s completm dect tipul dipozitivului
(n exemplul nostru Adafruit_HUZZAH) i numele dispozitivului (n exemplul nostru
WCR). La finalizarea adugrii noului dispozitiv trebuie s notm informaiile de
autentificare furnizate de platform pentru a putea s le folosim n programul
https://www.robofun.ro/forum/
dispozitivului (Organization ID, Device Type, Device ID, Authentication Method i
Authentication Token).
Urmtorul pas este scrierea aplicaie Node-RED care va face conversia ntre comenzile
vocale date de utilizator i comenzile WiFi Car. Vom naviga la adresa
https://wcr.mybluemix.net/ (adresa difer n funcie de numele ales al aplicaiei) i vom
accesa Node-RED flow editor (editorul vizual ce ne va permite scrierea aplicaiei).
Aplicaia are diagrama urmtoarea:
https://www.robofun.ro/forum/
Rolul blocului decizional este de a identifica comenzile vocale transcrise de serviciul
de recunoatere vocal (forward, backward, stop, left, right). Din pcate serviciul de
recunoatere vocal nu este disponibil n limba romn. Ieirele blocului decizional
conduc la blocuri distincte de construire a comenzii n format JSON ctre serviciul IoT:
Serviciul IoT care va trimite, prin intermediul serviciului IBM Watson, comenzile ctre
WiFi Car va avea urmtoarea configuraie:
https://www.robofun.ro/forum/
Pentru siguran am adugat un bloc de intrare pentru comanda de STOP care permite
comanda manual pentru cazuri de urgen. Restul componentelor din aplicaie sunt
utile doar pentru depanare: blocul msg.transcription va afia textul de ieire al
serviciului de recunoatere vocal iar blocurile WCR + msg.payload ne arat mesajele
ce ajung efectiv la serviciul IoT.
#include <ESP8266WiFi.h>
#include <MQTTClient.h>
#include <ArduinoJson.h>
WiFiClient net;
MQTTClient client;
void connect_mqtt() {
while (!client.connect("d:OrgID:DeviceT:DeviceID", \
"use-token-auth","AuthenticationToken")) {
delay(1000);
}
client.subscribe("iot-2/cmd/+/fmt/json");
}
void setup() {
Serial.begin(9600);
https://www.robofun.ro/forum/
delay(10);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500); }
client.begin("OrgID.messaging.internetofthings. \
ibmcloud.com", 1883, net);
connect_mqtt();
}
void loop() {
client.loop();
delay(10);
if (!client.connected()) {
connect_mqtt();
}
}
https://www.robofun.ro/forum/
comenzii se apas din nou butonul blocului microphone pentru a opri nregistrarea i a
trimite comanda vocal ctre serviciul de recunoatere vocal.
n captura de ecran anterior se pot vedea mesajele din consola debug pentru o
comand vocal (right) i o comand manual (stop). Pentru comanda vocal se poate
vedea att recunoaterea vocal a comenzii ct i mesajul obinut ca feedback de la
serviciul IoT. Pentru comanda manual avem doar feedback-ul afiat.
Control your Robosapien Humanoid Robot using IBM Watson IoT Platform,
Raspberry Pi and Node-RED (Part 1)
https://developer.ibm.com/recipes/tutorials/control-your-robosapien-humanoid-robot-using-ibm-watson-iot-platform-raspberry-pi-and-nodered/
Control the Humanoid Robot with voice commands using IBM Watson Speech to Text
service (Part 2)
https://developer.ibm.com/recipes/tutorials/control-the-humanoid-robot-with-voice-commands-using-ibm-watson-speech-to-text-service-part-2/
https://www.robofun.ro/forum/