Rămâi (Robo)Cool în miez de vară! Reglează temperatura în stil Arduino

arduino ventilator

Este vară, extrem de cald și tot ce ne dorim este să stăm lipiți de un ventilator care să ne răcorească. Sistemele de ventilație sunt scumpe și complicat de instalat, mai ales dacă nu locuiești în propria ta casă, deoarece implică modificări în încăperile unde vor fi plasate. Pentru un pasionat de robotică și tehnologie căruia îi place să regleze temperatura în stil Arduino, avem exact ce trebuie.

Continue reading

Robo(Calendar) sau Photo Frame? Completează-ți proiectele cu afișaje cool atașate la Raspberry Pi

Ai un monitor și o placă Rasberry Pi și te gândești ce ai putea să faci cu ele? Noi îți spunem că o ramă foto digitală, un streamer muzical, un calendar de perete care să-ți indice data, ora, temperatura de afară și cele mai recente intrări din feed-ul RSS preferat, ca și oricare alt tip de display care poate să-ți aducă o utilitate în viața de zi cu zi sau la job sunt proiecte cool pe care trebuie să le încerci dacă ești pasionat de robotică.

Continue reading

Senzorul de distanță, unul dintre cele mai practice proiecte Arduino

Proiectele Arduino se bazează pe folosirea informațiilor din mediul înconjurător și integrarea lor cu anumite dispozitive care permit interacțiunea cu lucrurile din jur. Ce spui de un senzor de alcool conectat la Arduino, iar Arduino conectat la propriul PC, care atunci când nivelul de alcool expirat depășește un anumit nivel stabilit, computerul să-ți trimită un mesaj de avertizare de fiecare dată când deschizi emailul? Bănuim că nu ți-ai dori să-i trimiți șefului tău un email mult prea sincer încurajat de aburii alcoolului, nu-i așa?

 

Lăsând deoparte această analogie, ușor exagerată pentru efect, atunci când vorbim de preluarea de informații din mediu, senzorii sunt cei care au o utilitate extrem de mare. Și pentru acest lucru nu trebuie decât să ne gândim la senzori de incendiu, de gaz GPL, de monoxid de carbon, la senzori care depistează accelerația dispozitivelor în mișcare, curentul consumat de diverse dispozitive casnice, senzori care indică forța de apăsare sau gradul de rotire, senzori de distanță, senzori care indică nivelul de iluminare, direcția punctelor cardinale, prezența umană, temperatura, umiditatea, presiunea atmosferică și multe altele. În viața de zi cu zi avem nevoie de acești senzori, de aceea se folosesc cu succes într-o mulțime de situații.

 

Noi astăzi ne-am propus să discutăm despre unul dintre cele mai practice proiecte Arduino și anume: senzorii de distanță sau de proximitate. Senzorul de distanță este un senzor capabil să detecteze prezența unor obiecte din apropiere, fără contact fizic. În funcție de scopul pentru care au fost creați există mai multe categorii de senzori de distanță. Există:

 

  • Senzori cu ultrasunete (ultrasonici). Aceștia se bazează pe emiterea de ultrasunete, sunt foarte preciși, foarte ușor de folosit, dar din cauza faptului că sunetul se deplasează cu o viteză fixă, această categorie de senzori este considerată relativ lentă. În această categorie se încadrează senzorul HC-SR04 și senzorul de tip PING.
  • Senzori cu infraroșu. Un senzor cu infraroșu este un dispozitiv electronic care măsoară în infraroşu lumina care radiază de la obiectele aflate în câmpul său vizual. În funcție de unghiul sub care se reflectă raza de lumină se poate determina distanța până la obiect. Prin comparație cu senzorii cu ultrasunete aceștia sunt mult mai rapizi, însă funcționează corect doar într-o rază strictă de distanță. Toate obiectele emit energie sub formă de radiaţii. De obicei, radiaţiile infraroşii sunt invizibile pentru ochiul uman, dar pot fi detectate de dispozitive electronice concepute în acest sens.

  • Senzori de tip laser. Acești senzori sunt cei mai preciși și cei mai rapizi dintre toți senzorii de distanță, dar au un preț ridicat, pe măsura capacității lor.

Senzorul de distanță poate emite unde electromagnetice sau un fascicul de radiații electromagnetice și caută schimbări în mediul înconjurător asemenea unui radar. La un smartphone de exemplu, senzorul de distanță dezactivează ecranul de tip touchscreen atunci când telefonul este apropiat de față pentru o convorbire. Orice telefon smartphone cu touch deține un astfel de senzor, indiferent de compania producătoare. Acest senzor este util pentru a preveni apăsări accidentale la atingerea cu urechea, pentru a ține telefonul într-o poziție cât mai naturală fără a-ți face griji că tastezi greșit în timpul unei discuții telefonice.

 

Acești senzori de distanță se mai folosesc pentru o mulțime de scopuri, cei mai cunoscuți sunt cei folosiți în industria auto, la senzorii de parcare, dar și la avioane pentru a detecta cât de aproape sunt de pistă.

 

Senzorul de distanță Sharp, foarte ușor de conectat cu Arduino

Senzorul de distanță Sharp este o componentă care poate fi utilizată împreună cu Arduino pentru a măsura distanța până la diverse obiecte din mediul înconjurător. Exista 3 tipuri de senzori, fiecare potrivit pe o anumită zonă din punct de vedere al distanțelor măsurate: senzor de apropiere (eficient pentru măsurători între 3 cm și 40 de cm), senzor de depărtare medie (eficient între 10 cm și 80 cm) și senzor de depărtare (eficient între 15 cm și 150 cm).

Conectarea la Arduino este deosebit de simplă. Modulul HC-SR04 oferă o măsurare a distanței folosind ultrasunetele în raza 2cm-4m (conform specificațiilor).

Senzorul de distanță Ping

Senzorul ultrasonic de distanță Ping ))) de la Parallax este foarte eficient pentru măsurarea distanței între obiecte staționare sau în mișcare. Acest tip de senzor este foarte folosit în robotică și în diverse sisteme de securitate, ca senzor de perimetru sau de proximitate. Senzorul detectează obiectele aflate în raza de acțiune folosindu-se de efectul de reflexie a sunetului. Generează un impuls de ieșire către microcontroller și emite o undă ultrasonică cu frecvență de 40KHz. Impulsul trimis microcontroller-ului este întrerupt în momentul în care ecoul își atinge destinația; de unde rezultă că lățimea impulsului va corespunde cu distanța până la țintă și înapoi.

Pentru măsurări de aproape, senzorul Ping))) are nevoie să fie la aproximativ 8-10 cm deasupra suprafeței de lucru. Totuși dacă se măsoară obiecte care se află la o distanță mai mare de o jumătate de metru, este necesară ridicarea senzorului Ping))) pentru prevenirea înregistrării ecoului din podea, ca și obiecte detectate. Interfața cu microcontroller-ul este posibilă cu ajutorul unui singur pin de intrare-ieșire. Senzorul de distanță Ping se configureză foarte simplu.

În automatizare, informația măsurabilă livrată de senzori servește la controlul și reglarea sistemelor tehnice automate. De exemplu, la proiectarea unui robot mobil de cercetare, este fundamental ca acesta să fie echipat cu un sistem de senzori proprii, având capacitatea de preluare a informațiilor, pe baza cărora să-și formeze o reprezentare internă a lumii înconjurătoare, pentru a lua decizii și a planifica acțiuni. Robotul trebuie să poată extrage informații de la senzorii săi și să le interpreteze, pentru a-și calcula următoarea mișcare.

RoboNews: Prima recoltă a roboților fermieri și ultimele noutăți din robotică

RoboNews Roboti Fermieri Robofun

Robotul fermier prefigurează viitorul evoluției în agricultură. Lipsa forței de muncă în domeniul agriculturii i-a motivat pe specialiști să proiecteze roboți programați să preia mare parte din lucrările dificile de la câmp. Roboții fermieri vor fi destinați să semene, să plivească și să împrăștie îngrășăminte, după care să adune recolta.

Cu ajutorul unui ochi electronic și  a unor senzori, roboții fermieri se vor deplasa evitând obstacolele, pentru a vedea dacă într-un anumit loc a fost pusă corect sămânța. Dacă locul nu a fost însămânțat, robotul sapă o groapă și plasează sămânța. Sistemul de lucru al roboților a fost inspirat din modul de organizare al furnicilor care transmit mesaje în momentul în care o furnică găsește hrană. În același fel, fiecare robot comunică cu ceilalți prin semnale. Roboţii pot însămânţa o parcelă de teren în funcţie de instrucţiunile primite şi pot maximiza eficienţa procesului, uneori depăşind limitările utilajelor agricole convenţionale, care nu pot planta decât în rânduri.

Continue reading

Educația STEM – viitorul pentru dezvoltarea creativității și ingeniozității copiilor

Multe lucruri au tot fost anunțate de-a lungul timpului ca fiind viitorul, acum fiind asaltați de scenarii în care se împletesc Artificial Intelligence, Voice Recognition, Internet of Things și așa mai departe. Căutăm the next big thing în tehnologie și medicină în mod special, dar și în educație – locul din care pornește, de fapt, viitorul.

Continue reading

Proiecte cu Raspberry Pi: Cum să construiești propriul tău Google Assistant

Ok google, how’s the weather in the weekend? Cu o simplă comandă vocală îi poți cere “asistentului tău” să-ți redea muzică, știrile sau să-ți spună cum va fi vremea pe următoarele zile. Fără să te folosești de ajutorul mâinilor, de la distanță, poți seta alarme, poți controla dispozitive inteligente cum sunt luminile, temporizatorii sau comutatoarele de la sistemele de automatizare ale electrocasnicelor sau îți poți crea lista de cumpărături doar spunând ceea ce trebuie să cumperi. El notează tot. În loc să apeși de foarte multe ori pe ecranul telefonului, poți solicita din voce să se deschidă o anumită aplicație, să afli ce ședință ai în calendar săptămâna viitoare sau să apeleze persoane din agenda telefonului.

Google Assistant îți oferă răspunsuri personalizate și complexe cu ajutorul comenzilor vocale. Cum s-a ajuns în acest punct al dezvoltării inteligenței artificiale și cum îți poți face chiar tu propriul Google Assistant, fără să fie nevoie să te folosești de telefonul mobil, îți spunem pe larg în rândurile ce urmează.

Ce este Google Assistant?

Google Asistent este așa cum îi spune și numele un asistent virtual, dezvoltat de motorul de căutare Google, care se bazează pe inteligența artificială. În sensul larg al cuvântului, Inteligența Artificială (IA) reprezintă orice tehnologie proiectată să imite modul în care se comportă un om. Învățarea mecanică (machine learning) este o parte importantă a inteligenței artificiale și se bazează pe capacitatea computerelor de a re(acționa) în baza cantității uriașe de date pe care le analizează. Exemplu cel mai bun în acest sens sunt chiar asistenții virtuali care pot înțelege comenzile vocale.

Spre deosebire de asistentul virtual anterior, Google Now care oferea răspunsuri în baza unor solicitări vocale clare, Google Assistant se poate angaja în conversații. După o perioadă de exclusivitate pe smartphone-urile Pixel și Pixel XL, din februarie 2017, Google Assistant a fost implementat și pe dispozitivele Android. Mai mult decât atât, Google Assistant a fost extins pentru a interacționa cu o mare varietate de dispozitive, inclusiv cu electrocasnicele inteligente.

Google Assistant este apelat prin voce umană și în urma comenzii posesorului acesta caută pe internet informațiile solicitate, programează evenimentele în calendarul telefonului, setează alarme sau apelează contactele din telefon.

Cum îți poți construi propriul Google Assistant?

În aprilie 2017, a fost lansat un kit de dezvoltare software (SDK) care permite dezvoltatorilor să-și construiască propriul hardware care să poată rula Google Assistant. Google spune că va funcționa bine pe dispozitivele Raspberry Pi 3 și Linux.

Acest kit a fost integrat în plăcile Raspberry Pi din sistemele de comandă vocală ale mașinilor Audi și Volvo, dar și în anumite aparate inteligente de uz casnic, precum frigiderele, mașinile de spălat sau cuptoarele. Practic, șoferul apelează rapid numeroasele funcții de pe volan pentru a gestiona climatizarea și funcțiile de confort.

Proiectele din domeniul Inteligenței Artificiale cu Raspberry Pi sunt în prezent în plină dezvoltare. De fapt, în afară de Google Assistant mai există și alte platforme IA care concurează pentru ca specialiștii să le instaleze cu Raspberry Pi. Aceste platforme sunt Alexa de la Amazon, IBM Watson, Siri de la Apple și altele mai puțin cunoscute.

Toate companiile de software care dezvoltă asistenți virtuali se sprijină pe comunitatea Raspberry Pi pentru a-și dezvolta programele. Această colaborare face posibil ca și Raspberry Pi să dezvolte prototipuri mai rapide pentru dispozitivele IA (Inteligență Artificială) și IoT (Internet of Things), practic să fie mai accesibile pentru specialiști.

Așadar, să trecem la lucru! Mai jos, am adunat practic tot ce este necesar pentru a construi propriul tău Google Assistant cu Raspberry Pi pentru a avea următoarele funcționalități:

  • Google Assistant (cele mai multe funcții, cu excepția redării media pe Pi)
  • Activare vocală / cuvânt cheie: “Hei Google” sau “Ok Google” și adresezi întrebarea
  • Pornirea unui program/serviciu, deci nu trebuie să deschizi manual programul la fiecare repornire.

Deci, pentru a începe proiectul Google Assistant vei avea nevoie de:

  • Raspberry Pi 3
  • Micro card SD (minimum 8 GB) cu Raspbian instalat
  • Microfon USB
  • Un difuzor

Pasul 1: Înregistrarea dispozitivului

Accesează https://console.actions.google.com pentru a-ți înregistra proiectul în Google Console. Intră pe https://console.cloud.google.com  pentru a-ți activa API-ul Google Assistant.

Asigură-te că selectezi proiectul nou creat în panoul de selecție de lângă sigla Platformei Cloud! Apoi, selectează tabul Api&Services și activează-ți api-ul Google Assistant.

Asigură-te că ai activat toate setările https://myaccount.google.com/activitycontrols pentru ca api-ul să funcționeze corect.

După aceea, revino la https://console.actions.google.com pentru a înregistra dispozitivul Raspberry Pi în colțul din dreapta jos al panoului de aplicații. Downloadează fișierul cu credețialele (datele de autentificare) pentru a le putea folosi mai târziu.

Pasul 2. Setarea audio

Notează-ți numerele cardului / dispozitivului audio folosind:

arecord -l
aplay -l

Folosește aceste informații pentru a edita fișierul asoundrc:

nano /home/pi/.asoundrc
pcm.!default {
  type asym
  capture.pcm "mic"
  playback.pcm "speaker"
}
pcm.mic {
  type plug
  slave {
    pcm "hw:<card number>,<device number>"
  }
}
pcm.speaker {
  type plug
  slave {
    pcm "hw:<card number>,<device number>"
  }
}

Poți testa dispozitivul folosind:

speaker-test -t wav
arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.raw
aplay --format=S16_LE --rate=16000 out.raw
alsamixer

Pasul 3. Instalează Biblioteca Google Assistant

Configurează directoarele în care vom instala mediul virtual:

mkdir ~/googleassistant
nano ~/googleassistant/credentials.json

Vom folosi un spațiu virtual pentru ca spațiul personal să nu devină prea aglomerat. Instalează venv cu:

sudo apt-get install python3-dev python3-venv

Instalează ultima versiune de pip și activează mediul cu:

python3 -m venv env && env/bin/python -m pip install –upgrade pip setuptools –upgrade && source env/bin/activate

Instalează libraria Google Assistant pentru Python:

python -m pip install –upgrade google-assistant-library google-assistant-sdk[samples]

Pasul 4. Autorizează Pi pentru Google Assistant

Instalează instrumentul de autorizare pentru a putea autoriza cu API-ul Google Assistant pe care tocmai l-am activat pentru aplicație:

python -m pip install –upgrade google-auth-oauthlib[tool]

Vei primi un url de autorizare

google-oauthlib-tool --client-secrets ~/googleassistant/credentials.json \
--scope https://www.googleapis.com/auth/assistant-sdk-prototype \
--scope https://www.googleapis.com/auth/gcm \
--save --headless

Este posibil să primești o eroare de autorizare. Pentru a rezolva acest lucru setează în platforma Google Cloud în zona de autentificare Credentials -> OAuth Consent Screen   Asigură-te că ai selectat aplicația ta (Application name)! În momentul în care vei introduce codul de autorizare vei vedea:

credentials saved: /home/pi/.config/google-oauthlib-tool/credentials.json
(env) pi@raspberrypi :~/googleassistant $

Pasul 5. Erorile portului Audio

Este posibil să întâlnești următoarea eroare:

OSError:  PortAudio library not found
(env) pi@raspberrypi :~/googleassistant $

Instalează:

sudo apt-get install libportaudio2

Pentru a preveni pierderea și întârzierea semnalului audio introdu următorul comentariu: /etc/pulse/default.pa

De asemenea, rulează PulseAudio pentru a evita problemele cu Google Assistant:

sudo nano /etc/systemd/system/pulseaudio.service

Adaugă următoarea linie de cod:

[Unit]                      
Description=PulseAudio Sound Server in system-wide mode [Service] 
Type=forking                      
PIDFile=/var/run/pulse/pid                      
ExecStart=/usr/bin/pulseaudio --system --disallow-exit=1 \                       
 --disable-shm=1 --fail=1 --daemonize
[Install]                      
WantedBy=multi-user.target

Activează serviciul și adaugă userul pi grupului pulse-access:
sudo systemctl --system enable pulseaudio.service
sudo adduser pi pulse-access

Dezactivează modulul următor pentru a evita întârzierile audio:

/etc/pulse/default.pa
#load-module module-suspend-on-idle
sudo nano /etc/systemd/system/assistant.service

Pasul 6. Transformă Google Assitant în propriul serviciu personal

Crează un fișier  ~/start_assistant.sh folosind ID-ul modelului de dispozitiv din platforma Google Action:

#!/bin/bash
source /home/pi/googleassistant/env/bin/activate
googlesamples-assistant-hotword --device-model-id <your_device_model_id> 

Fă scriptul executabil:

chmod +x start_assistant.sh

Crează un fișier service în /etc/systemd/system/assistant.service

[Unit]
Description=Google Assistant
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
ExecStart=/bin/bash /home/pi/start_assistant.sh
Restart=on-abort
User=pi
Group=pi
[Install]
WantedBy=multi-user.target

Activează și pornește serviciul:

sudo systemctl enable assistant.service
sudo systemctl start assistant.service

Pasul 7. Ai terminat!

De acum te poți bucura de propriul tău Google Assistant pe Raspberry Pi folosind expresiile “Hey Google” sau “Ok Google“. De asemenea, poți înregistra dispozitivul în aplicația Google Assistant pe iOS sau Android.