IoT Air Quality Monitor

Poluarea aerului este o problemă extrem de actuală mai ales în mediul urban. Măsurarea calității aerului ne poate indica la ce riscuri de sănătate ne expunem. Există o serie de măsurători oficiale dar ele sunt afectate în mare măsură de  interesele sau neglijența celor care administrează rețelele de monitorizare. Se poate vedea o hartă în timp real a calității aerului în România pe site-ul aciqn.org, din păcate în majoritatea orașelor mari din România senzorii sunt nefuncționali…

Există mai mulți indicatori ce influențează calitatea aerului. În cadrul proiectului de față vom utiliza un senzor CCS811 ce este capabil să măsoare concentrațiile de eCO2 (dioxid de carbon echivalent) și tVOC (total compuși volatili organici) din aer în spații închise (în interior). Pentru mai multe detalii despre semnificația celor doi indicatori se poate parcurge materialul „Air Quality Measurements with the CCS811”. Punerea în funcțiune a senzorului necesită o perioadă de 48 de ore de funcționare în gol (la prima utilizare) și ulterior un timp de 20 de minute până la stabilizarea măsurătorilor (la pornirile ulterioare ale sistemului). Pentru modul de funcționare a senzorului CCS811 se poate parcurge și materialul „CCS811 Air Quality Breakout Hookup Guide”.

Valorile furnizate de senzor vor fi înregistrate în cloud utilizând serviciul Robofun IoT. Acest serviciu este gratuit dar necesită înregistrare, mai multe detalii despre modul de utilizare a serviciului se pot găsi pe site-ul de documentație oficial. Pentru a trimite datele prin Internet vom utiliza o placă de dezvoltare WiDo-WIFI IoT ce combină un microcontroler ATmega32U4 (la fel ca și placa de dezvoltare Arduino Leonardo) și un controler WiFi WG1300 (bazat pe circuitul integrat CC3000). Această combinație oferă avantajul programării foarte simple, la fel ca orice placă din familia Arduino, dar și posibilitatea de comunicație în rețea utilizând o conexiunea WiFi.

Schema de interconectare între senzor și placa de dezvoltare este următoarea (senzorul se va alimenta la 3.3V iar liniile de comunicație I2C sunt SCL – pin D3, SDA – pin D2):

2

Programul a fost dezvoltat și testat utilizând Arduino IDE 1.8.3 și bibliotecile SparkFun CCS811 1.0.0 și o versiune modificată a bibliotecii Adafruit CC3000 – special pentru placa de dezvoltare WiDo-WIFI. Placa se va programa în Arduino IDE ca o placă Arduino Leonardo obișnuită.

#include <Adafruit_CC3000.h>

#include <ccspi.h>

#include <SPI.h>

#include <string.h>

#include “utility/debug.h”

#define WiDo_IRQ   7

#define WiDo_VBAT  5

#define WiDo_CS    10

Adafruit_CC3000 WiDo = Adafruit_CC3000(WiDo_CS, WiDo_IRQ,  WiDo_VBAT,SPI_CLOCK_DIVIDER);

În cadrul programului trebuie completate datele de conectare la rețeaua WiFi.

#define WLAN_SSID       “”          

#define WLAN_PASS       “

#define WLAN_SECURITY   WLAN_SEC_WPA2

#define TIMEOUT_MS  2000

#define WEBSITE  “iot.robofun.ro”

#include “SparkFunCCS811.h”

#define CCS811_ADDR 0x5B

CCS811 mySensor(CCS811_ADDR);

Comentarea directivei următoare va conduce la suprimarea mesajelor în consola serială.

#define debug

În cadrul secțiunii setup() se vor inițializa componenta WiFi, conexiunea WiFi și senzorul de calitate a aerului. Procedura displayConnectionDetails() permite afișarea în consola serială a datelor de configurare în rețea.

void setup(){

  #ifdef debug

    SerialUSB.begin(115200);

    while(!SerialUSB) { ; }

    SerialUSB.println(F(“Robofun IoT Air Quality Monitor\n”));

    SerialUSB.print(F(“Free RAM: “)); Serial.println(getFreeRam(), DEC);

    SerialUSB.println(F(“\nInitialising the CC3000 …”));

  #endif

  if (!WiDo.begin())

  {

    #ifdef debug

      SerialUSB.println(F(“Unable to initialise the CC3000! Check your wiring?”));

    #endif

    while(1);

  }

  CCS811Core::status returnCode = mySensor.begin();

  if (returnCode != CCS811Core::SENSOR_SUCCESS) {

    #ifdef debug

      SerialUSB.println(F(“CCS811.begin() returned with an error.”));

    #endif

    while (1);

  }

  if (!WiDo.connectToAP(WLAN_SSID,WLAN_PASS,WLAN_SECURITY)) {

    #ifdef debug

      SerialUSB.println(F(“Failed to connect to AP!”));

    #endif

    while(1);

  }

  #ifdef debug

    SerialUSB.println(F(“Connected to AP!”));

    SerialUSB.println(F(“Request DHCP”));

  #endif

  while (!WiDo.checkDHCP())  {  delay(100);

  #ifdef debug

    while (! displayConnectionDetails()) {

      delay(1000);

    }

  #endif

}

bool displayConnectionDetails(void) {

  uint32_t ipAddress, netmask, gateway, dhcpserv, dnsserv;

  if(!WiDo.getIPAddress(&ipAddress, &netmask, &gateway, &dhcpserv, &dnsserv))  {

    SerialUSB.println(F(“Unable to retrieve the IP Address!\r\n”));

    return false;

  }

  else

  {

    SerialUSB.print(F(“\nIP Addr: “)); WiDo.printIPdotsRev(ipAddress);

    SerialUSB.print(F(“\nNetmask: “)); WiDo.printIPdotsRev(netmask);

    SerialUSB.print(F(“\nGateway: “)); WiDo.printIPdotsRev(gateway);

    SerialUSB.print(F(“\nDHCPsrv: “)); WiDo.printIPdotsRev(dhcpserv);

    SerialUSB.print(F(“\nDNSserv: “)); WiDo.printIPdotsRev(dnsserv);

    SerialUSB.println();

    return true;

  }

}

Măsurarea celor doi parametrii de calitate a aerului este afectată de temperatura și umiditatea ambientală. Biblioteca senzorului este capabilă să compenseze acest aspect prin preluarea din program a valorilor necesare. Pentru măsurători exacte este indicată utilizarea unui senzor de temperatură și umiditate în sistem care să furnizeze aceste valori în mod dinamic dar în cadrul sistemului nostru vom utiliza două valori constante.

#define temperatureVariable 28.0

#define humidityVariable 27.0

În cadrul secțiunii loop() se vor prelua datele de la senzor și se vor transmite către procedua postIoT() care se va ocupa cu înregistrarea în cloud. Este necesară particularizarea în program a valorilor TOKEN1 și TOKEN2, valori obținute în urma definirii a celor doi senzori în serviciul Robofun IoT. Postarea se va realiza la un interval de 10 minute (600 secunde = 600000 milisecunde).

void loop(){

   if (mySensor.dataAvailable()) {

      mySensor.setEnvironmentalData(humidityVariable, temperatureVariable);

      delay(10);

      mySensor.readAlgorithmResults();

      int tempCO2 = mySensor.getCO2();

      int tempVOC = mySensor.getTVOC();

      #ifdef debug

        SerialUSB.print(F(“CO2[“));

        SerialUSB.print(tempCO2);

        SerialUSB.print(F(“] tVOC[“));

        SerialUSB.print(tempVOC);

        SerialUSB.println(F(“]”));

      #endif

      String temp = “/api/v1/senzor/TOKEN1/input?value=” + String(tempCO2);

      char clientString[50];

      temp.toCharArray(clientString,temp.length()+1);

      postIoT(clientString);

      delay(5000);

      temp = “/api/v1/senzor/TOKEN2/input?value=” + String(tempVOC);

      temp.toCharArray(clientString,temp.length()+1);

      postIoT(clientString);

   }

   delay(600000);

}

Procedura postIoT() preia datele ce urmează a fi trimise către serviciul cloud Robofun IoT și realizează comunicația HTTP (HTTP GET) aferentă.

void postIoT(char* URLClient) {

    static Adafruit_CC3000_Client IoTclient;

    uint32_t ip = 0;

    while  (ip  ==  0)  {

      if  (!WiDo.getHostByName(WEBSITE, &ip))  {

        #ifdef debug

          SerialUSB.println(F(“Couldn’t resolve!”));

        #endif

        delay(500);

      }

      delay(500);

    }

    #ifdef debug

      SerialUSB.print(WEBSITE); Serial.print(F(” -> “));

      WiDo.printIPdotsRev(ip);

      SerialUSB.println();

    #endif

    IoTclient = WiDo.connectTCP(ip,80);

    #ifdef debug

      SerialUSB.print(F(“Connecting to IoT Server”));

      while(!IoTclient.connected()) SerialUSB.print(“.”);

      SerialUSB.println();

      SerialUSB.println(URLClient);

    #else

      while(!IoTclient.connected()) delay(10);

    #endif

    IoTclient.fastrprint(F(“GET “));

    IoTclient.fastrprint(URLClient);

    IoTclient.fastrprintln(F(” HTTP/1.1″));

    IoTclient.fastrprintln(F(“Host: iot.robofun.ro”));

    IoTclient.fastrprintln(F(“Connection: close”));

    IoTclient.fastrprint(F(“\r\n”));

    IoTclient.println();

    #ifdef debug

        SerialUSB.println(F(“Upload data to the IoT Server”));

    #endif

    unsigned long lastRead = millis();

    while (IoTclient.connected() && (millis() – lastRead < TIMEOUT_MS)) {

          while (IoTclient.available()) {

            char c = IoTclient.read();

            #ifdef debug

              SerialUSB.print(c);

            #endif

            lastRead = millis();

          }

    }

    #ifdef debug

      SerialUSB.println();

      SerialUSB.flush();

    #endif

    IoTclient.close();

}

După configurarea serviciului cloud și încărcarea programului putem deja observa online datele înregistrate (eCO2 – valori între 400 și 8,192 ppm – părți per milion; tVOC – valori într 0 și 1,187 ppb – părți per miliard):

3

4

Cum putem utiliza placa Raspberry Pi ca Access Point WiFi?

La momentul actual nu se poate concepe o rețea locală fără componentă de acces fără fir (WiFi). Prețul dispozitivelor Access Point (ce permit accesul WiFi într-o rețea locală) a scăzut destul de mult și există o diversitate foarte mare de astfel de dispozitive acoperind o funcționalitate variată. Totuși, posibilitatea de personalizare a acestor dispozitive se rezumă de cele mai multe ori la o interfață web destul de sărăcăcioasă cu funcții predefinite pentru o utilizare generică. În cazul în care dorim implementarea unor funcționalități specifice (pentru o rețea de dispozitive IoT de exemplu) ce implică filtrarea traficului, cifrarea traficului sau detectarea și prevenirea intruziunilor suntem obligați să achiziționăm dispozitive AP scumpe cu funcționalități avansate de router / firewall.

Placa Raspberry Pi 3 oferă posibilitatea implementării facile a funcționalității de Access Point WiFi datorită celor două interfețe de rețea integrate: interfață ethernet și interfață WiFi, permițând implementarea de funcții avansate (VPN, IDS/IDPS) și o personalizare completă a funcționării datorită sistemului de operare Linux. În plus, conectivitatea USB a plăcii permite conectarea de dispozitive de tip modem GSM oferind posibilitatea de conectare la Internet a rețelei locale prin intermediul rețelelor mobile de date (*),(*). Pentru implementarea funcționalității de AP WiFi nu este necesară distribuția Raspbian with Pixel (cu interfață grafică), se poate utiliza și Raspbian Lite deoarece toată configurare se va efectua în linie de comandă (în Terminal). Testarea configurației prezentate s-a făcut pe un sistem Raspberry Pi 3 rulând Raspbian 8 Jessie Lite cu kernel 4.9.28-v7+.

Configurarea interfeței de rețea WiFi

Ambele interfețe de rețea ale plăcii Raspberry Pi 3 (ethernet și WiFi) sunt configurate implicit să funcționeze în rețele locale ce oferă configurație dinamică (prin serviciul de DHCP). Primul pas în implementarea funcționalității de AP WiFi este configurarea adresei IP a interfeței WiFi – modificarea configurației din alocare dinamică în alocare statică – trebuie să stabilim adresa IP a interfeței și clasa de adrese IP pentru viitori clienți WiFi.

Primul lucru este dezactivarea serviciului de configurare dinamică. Se va edita fișierul /etc/dhcpcd.conf și se va adăuga la sfârșit următoarea linie:

denyinterfaces wlan0

După dezactivarea achiziției configurației dinamice trebuie să stabilim adresa IP statică a sistemului. Se va edita fișierul /etc/network/interfaces și pentru interfața wlan0 se va introduce următoarea configurație:

allow-hotplug wlan0

iface wlan0 inet static

address 192.168.99.1

netmasq 255.255.255.0

network 192.168.99.0

broadcast 192.168.99.255

unde 192.168.99.1 este adresa locală a sistemului AP și 192.168.99.0/24 este clasa de adrese a viitorilor clienți WiFi. Se poate alege orice altă clasă de adrese IP nerutabile atâta timp cât nu intră în conflict cu clasa de adrese a interfeței ethernet. Pentru ca modificările să-și facă efectul sistemul trebuie repornit. Atenție!!! Interfața ethernet trebuie să fie conectată al o rețea locală cu acces Internet, interfața WiFi a sistemului va avea rolul, de acum încolo, de AP WiFi, nu va mai putea asigura conectivitatea de rețea normală.

Instalarea și configurarea aplicației HostAPD

Aplicația HostAPD implementează partea de autentificare și control al conexiunilor WiFi. Pentru instalarea acestei aplicației vom rula comanda:

sudo apt-get install hostapd

După instalare vom crea fișierul /etc/hostapd/hostpad.conf cu următorul conținut:

interface=wlan0

ssid=Pi3-AP

hw_mode=g

channel=6

ieee80211n=1

wmm_enabled=1

ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]

macaddr_acl=0

auth_algs=1

ignore_broadcast_ssid=0

wpa=2

wpa_key_mgmt=WPA-PSK

wpa_passphrase=raspberry

rsn_pairwise=CCMP

Denumirea AP-ului și parola de acces pot fi stabilite, bineînțeles, după bunul plac. Fișierul de configurare creat trebuie referit în fișierul de inițializare a aplicației hostapd: /etc/default/hostapd, prin inserarea următoarei linii:

DAEMON_CONF=”/etc/hostapd/hostapd.conf”

După repornirea sistemului vom putea să vedem AP-ul generat de placa Raspberry Pi dar acesta nu va funcționa încă corect.

Instalarea și configurarea aplicației DNSMASQ

Funcționalitatea de Access Point implică în mod obligatoriu două servicii de bază fără de care clienții nu pot accesa rețeaua Internet: serviciul de configurare dinamică a informațiilor IP (DHCP) și serviciul de rezolvare a adreselor IP (DNS). Aplicația DNSMASQ oferă ambele servicii pentru rețele de mici dimensiuni cum este o rețea locală formată de un AP. Instalarea aplicației se va face cu ajutorul comenzii:

sudo apt-get install dnsmasq

După instalarea aplicație vom înlocui fișierul de configurare (/etc/dnsmasq.conf)

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

sudo nano /etc/dnsmasq.conf

cu următorul conținut:

interface=wlan0

listen-address=192.168.99.1

bind-interfaces

server=8.8.8.8

domain-needed

bogus-priv

dhcp-range=192.168.99.2,192.168.99.100,12h

Bineînțeles, adresa interfeței WiFi a AP și plaja de adrese pentru clienții WiFi pot fi personalizate în funcție de alegerea clasei de adrese IP făcută anterior. Pentru ca aplicația DNSMASQ să devină funcțională utilizând configurația stabilită trebuie repornit sistemul.

Activarea rutării pachetelor și configurarea regulilor de rutare

Ultimul pas în configurarea sistemului AP este activarea rutării pachetelor între cele două interfețe de rețea a plăcii Raspberry Pi, adică pachetele provenite de la clienții WiFi să fie retrimise spre rețeaua plăcii ethernet (spre Internet). Acest lucru necesită editarea fișierului /etc/sysctl.conf și decomentarea liniei următoare:

net.ipv4.ip_forward=1

În plus de activarea rutării este necesar să definim reguli suplimentare deoarece clasa de adrese IP oferită clienților WiFi este privată. Aceste reguli vor fi impuse cu ajutorul utilitarului iptables specific sistemului de operare Linux. Vom utiliza următoarea succesiune de instrucțiuni pentru definirea regulilor:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

sudo iptables -A FORWARD -i eth0 -o wlan0 -m state –state

RELATED,ESTABLISHED -j ACCEPT

sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

Vom salva apoi regulile într-un fișier:

sudo sh -c “iptables-save > /etc/iptables.ipv4.nat”

Pe care îl vom utiliza pentru reinițializare la fiecare repornire a sistemului. Pentru acest lucru vom adăuga în fișierul /etc/rc.local următoarea linie (chiar înainte de linia exit 0):

iptables-restore < /etc/iptables.ipv4.nat

După repornirea sistemului vom avea un sistem AP complet funcțional.

Posibile funcționalități suplimentare

Configurarea prezentată este cea mai rapidă modalitate de implementare a funcționalității de AP WiFi pe o placă Raspberry Pi 3, în nici un caz nu este singura soluție – puteți vedea mai multe informații consultând (*), (*), (*), (*), (*), (*).

În plus, sistemul AP poate căpăta funcționalități suplimentare specifice sistemelor router avansate, ca de exemplu:

 

  • Server VPN (Virtul Private Network) ce permite realizarea de canale de comunicație complet cifrate între două sisteme Internet sau între un sistem Internet și un server VPN ce deservește o rețea locală. Distribuția Raspbian 8 Jessy include pachetul openvpn) ce poate fi instalat cu ajutorul comenzii (se poate consulta și materialul (*)):

sudo apt-get install openvpn

2

  • Server IDS (Intrusion Detection System) – este un sistem ce permite analiza traficului de rețea în vederea detectării activității malițioase și protejarea calculatoarelor din rețeaua locală. Distribuția Raspbian 8 Jessy include pachetul snort ce poate fi instalat cu ajutorul comenzii (se poate consulta și materialul (*)):

sudo apt-get install snort

3

  • PPPoE gateway – mulți furnizori de Internet oferă serviciile de acces la Internet prin intermediul unei conexiuni de PPPoE, conexiune ce necesită de obicei un echipament specializat. Interfața ethernet a plăcii Raspberry Pi poate fi utilizată și în acest scop utilizând pachetul ppp. Se poate vedea și materialul (*).
  • Server proxy – serviciu ce permite accelerarea traficului web într-o rețea cu conexiune la Internet mai lentă. Distribuția Raspbian include pachetul squid ce implementează această funcționalitate. Se poate vedea și materialul (*). Suplimentar, combinând funcționalitatea oferită de pachetul squid cu funcționalitatea oferită de sistemul antivirus clamav se poate obține un sistem ce poate scana tot traficul web împotriva aplicațiilor malițioase și a programelor de tip virus. În acest sens se pot consulta materialele (*), (*).

Cum putem utiliza placa Raspberry Pi ca platformă de blog

Publicarea de materiale proprii în rețeaua Internet este foarte simplă prin intermediul platformelor de tip blog. Fie că este vorba de poezii, rețete culinare sau proiecte de robotică, prin intermediul unui blog personal puteți face toate lucrările personale să devină accesibile oricui de oriunde. În general o pagină blog este găzduită de un server Internet dar nu este nevoie întotdeauna de o mașină de calcul scumpă și cu capacitate de procesare mare pentru acest lucru. Dacă nu există un număr mare de utilizatori simultani și nu găzduim mai multe pagini blog pe același sistem de calcul performanțele sistemului pot fi modeste, ca cele oferite de o placă Raspberry Pi 3. În cadrul materialului de față vom explora instalarea și funcționarea unei platforme blog utilizând placa Raspberry Pi. În felul acesta vom putea să obținem o platformă blog pe care o putem duce cu noi în buzunar…

1

O platformă blog necesită un server web, un limbaj de programare specific web, un sistem de baze de date și o aplicație blog. Cea mai cunoscută aplicație blog este WordPress. Pentru a putea instala aplicația WordPress trebuie să avem deja instalate aplicațiile server web, sistemul de baze de date și limbajul web specific. Pentru a instala aceste funcționalități vom utiliza Apache ca server web, MySQL ca sistem de baze de date și PHP ca limbaj web (combinația de aplicații este regăsită și sub denumirea de AMP – Apache Mysql Php, sau LAMP – Linux Apache Mysql Php). Toate cele trei aplicații sunt disponibile ca pachete sub sistemul de operare Raspbian (pentru teste a fost utilizat sistemul de operare Raspbian 8 Jessie kernel 4.9.28-v7+).

Combinația AMP nu este singura soluție disponibilă pentru instalarea aplicației WordPress, se pot folosi alte aplicații de tip server web și bază de date – limbajul PHP este obligatoriu deoarece aplicația WordPress este scrisă în PHP, dar este combinația pe care o vom utiliza în prezentarea ce urmează.. Există chiar o distribuție de sistem de operare dedicată pentru aplicația WordPress pe Raspberry Pi: PressPi. Pentru mai multe informații se pot parcurge și materialele: (*), (*), (*), (*).

 

Instalarea serverului web Apache și a limbajului PHP

Instalarea serverului web Apache se face cu ajutorul comenzii (în Terminal):

sudo apt-get install apache2

După instalare se poate verifica foarte ușor funcționarea serviciului web accesând adresa IP a plăcii Raspberry Pi cu ajutorul unui client web (browser).

3

Fișierele pe care se bazează serviciul web se găsesc în directorul /var/www/html. Se pot efectua teste modificând fișierul index.html (fișierul implicit servit de serverul web).

Instalarea limbajului PHP și a extensiei de legătură cu serverul Apache se face cu ajutorul comenzii (în Terminal):

sudo apt-get install php5 libapache2-mod-php5

După instalare se va reporni serviciul Apache și se pot face primele teste (se va înlocui fișierul index.html cu un fișier PHP – index.php).

sudo /etc/init.d/apache2 restart

sudo rm /var/www/html/index.html

sudo nano /var/www/html/index.php

Fișierul index.php de test poate conține de exemplu:

<?php phpinfo(); ?>

Ce va avea ca efect:

4

 

Instalarea serverului de baze de date MySQL

Instalarea serverului MySQL se face cu ajutorul comenzii (în Terminal):

sudo apt-get install mysql-server php5-mysql

La finalul instalării va trebui să stabiliți o parolă pentru utilizatorul administrator (root) al serverului de baze de date (păstrați această parolă deoarece fără ea nu se va putea lucra în viitor cu serverul MySQL) :

5

După finalizarea instalării serverul Apache trebuie repornit:

sudo /etc/init.d/apache2 restart

 

Instalarea și configurarea platformei WordPress

Aplicația WordPress se va copia de pe Internet și se va dezarhiva în directorul serverului web (/var/www/html):

cd /var/www/html

sudo wget https://wordpress.org/latest.tar.gz

sudo tar xfz latest.tar.gz

sudo rm latest.tar.gz

sudo chown -R www-data: wordpress

Următorul pas este să creăm o bază de date goală (și un utilizator asociat) ce va fi utilizată pentru instalarea WordPress (pentru mai multe informații puteți vedea și „The MySQL Command-Line Tool”):

mysql -uroot -p

mysql> CREATE DATABASE wordpress;

mysql> CREATE USER ‘newuser’@’localhost’ IDENTIFIED BY ‘password’;

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO ‘newuser’@’localhost’;

mysql> FLUSH PRIVILEGES;

mysql> exit

Acum putem porni instalarea aplicației WordPress accesând adresa IP a sistemului Raspberry Pi urmată de /wordpress (http://ADRESAIP/wordpress). Primul lucru este să alegem limba care va fi utilizată de aplicația WordPress:

6

Trebuie să pregătim și să introducem în interfața web de instalare datele legate de baza de date și utilizatorul asociat – date stabilite la pasul de creare a bazei de date:

7

Trebuie stabilite titlul blogului și datele contului de administrare (Username și Password) și putem lansa efectiv instalarea (Install WordPress):

8

După finalizarea instalării putem accesa platforma blog utilizând adresa IP a plăcii Raspberry Pi urmată de /worpress, bineînțeles la acest moment pagina blog este dată de un șablon standard:

9.png

Pentru personalizarea paginii blog accesați interfața de administrare a platformei utilizând adresa IP a plăcii Raspberry Pi urmată de /wordpress/wp-admin :

10

Platforma WordPress pune la dispoziția utilizatorului funcționalități extrem de puternice permițând realizarea de website-uri de complexitate mare. Printre facilitățile puse la dispoziție de platformă se pot enumera :

  • Teme de stil predefinit

11

  • Pagini web ce se pot insera foarte ușor în site-ul web creat

12

  • Colecții de obiecte multimedia (poze, filme)

13

  • Componente suplimentare ce se pot instala pentru a diversifica funcționalitatea site-ului web

14

Pentru mai multe informații despre modul de personalizare a unui website bazat pe platforma WordPress se pot consulta și materialele (*), (*), (*), (*).

Cum putem utiliza placa Raspberry Pi 3 ca radio Internet

Chiar dacă radioul ca mijloc tradițional de informare este depășit din cauza noilor modalități de transmitere a informațiilor (prin intermediul canalelor TV și, mai ales, prin intermediul rețelei Internet) nu înseamnă că nu își are farmecul și utilitatea sa. Nimic nu se compară cu ascultarea postului de radio preferat când lucrăm sau când suntem la volan. Este adevărat că înlocuirea undelor radio cu streamingul prin Internet este o soluție mult mai stabilă și câștigă din ce în ce mai mult teren, radioul clasic fiind înlocuit cu aplicații multimedia specifice. În ciuda ușurinței de utilizare, utilizarea streamingului online al unui post de radio parcă este însoțită de o oarecare nostalgie după obiectul fizic radio. Din păcate dispozitivele radio ce permit recepționarea posturilor radio prin intermediul rețelei Internet au un cost destul de mare; din fericire putem transforma placa Raspberry Pi 3 într-un astfel de dispozitiv foarte ușor și fără a scrie nici o linie de program (toate aplicațiile sunt deja disponibile on-line).

Pentru a implementa un radio Internet cu ajutorul plăcii Raspberry Pi avem nevoie de următoarele componente:

Există mai multe variante de implementare a funcționalității de radio Internet pe placa Raspberry Pi (a se vedea proiectele: (*), (*), (*), (*)). Proiectul de față se bazează, atât ca schemă de interconectare a componentelor dar mai ales pentru partea de program, pe ghidul extrem de cuprinzător Raspberry PI Internet Radio realizat de Bob Rathbone.

Conectarea componentelor la placa Raspberry Pi 3

Schema de interconectare între componentele sistemului este:

2

Conectarea ecranului LCD se va face prin intermediul modului specific plăcii Raspberry Pi ce reduce numărul de pini necesari interconectării și oferă posibilitatea reglării contrastului cu ajutorul potențiometrului aflat pe placă. Ecranul se va alimenta la 5V (pinul 5V al modulului se va conecta la pinul 2 al plăcii, pinul GND al modulului se va conecta la pinul 6 al plăcii). Celelalte conexiuni sunt: pinul RS al modulului la pinul 26 (GPIO7) al plăcii, EN – pin 24 (GPIO8), DB4 – pin 29 (GPIO5), DB5 – pin 31 (GPIO6), DB6 – pin 32 (GPIO12) și DB7 – pin 33 (GPIO13).

Tastatura flexibilă este formată din 4 contacte (butoane) fără nici un fel de rezistențe de limitare a curentului (diagrama de pe pagina următoare) – se va conecta direct folosind rezistențele interne de pull-up/down ale pinilor GPIO de pe placa Raspberry Pi. Pinul tastaturii cel mai din stânga (pinul 5) se va conecta la pinul 1 al plăcii (3.3V) – apăsarea butoanelor va trage pinii GPIO în ”1” logic. Tasta 1 (pinul 4) se va conecta la pinul 7 (GPIO4) al plăcii și va avea funcționalitatea de Mute (oprirea sonorului), tasta 2 (pinul 3) de va conecta de pinul 11 (GPIO17) și va avea funcționalitatea de Meniu, tasta 3 (pinul 2) – pin 8 (GPIO14) funcționalitate DOWN și tasta 4 (pinul 1) – pin 10 (GPIO15) funcționalitate UP. Utilizarea celor patru taste va fi explicată în secțiunea următoare. Dacă asocierea între numărul tastei și funcționalitatea acesteia vi se pare greu de reținut se pot lipi pe taste mici bucățele de hârtie cu numele (funcționalitatea) butonului.

3

 

Instalarea și operarea sistemului radio Internet

Sistemul radio Internet are la bază programul mpd (Music Player Daemon) și utilitarul mpc. Instalarea sub sistemul de operare Raspbian a celor două programe se face cu ajutorul comenzii (testele au fost realizate sub versiunea Raspbian 8 Jessie, kernel 4.9.28-v7+):

sudo apt-get install mpd mpc python-mpd

Este recomandată setarea zonei de timp corectă pentru ca ceasul sistemului să indice ora zonei în care ne aflăm (ecranul sistemului va afișa ora și data pe prima linie). Acest lucru se poate face cu ajutorul utilitarului raspi-config (Localisation Options):

sudo raspi-config

4

Următoarea aplicație ce trebuie instalată este chiar aplicația de radio scrisă de Bob Rathbone. Pentru instalare se vor executa următoarele instrucțiuni:

wget http://www.bobrathbone.com/raspberrypi/packages/radiod_5.9_armhf.deb

sudo dpkg -i radiod_5.9_armhf.deb

Procesul de instalare va declanșa și suita de operații necesare configurării aplicației. Primul ecran va permite configurarea versiunii de placă Raspberry Pi utilizată – pentru Raspberry Pi 3 vom alege opțiunea 2 (40 pin version wiring).

5

În următorul ecran de configurare vom alege tot opțiunea 2 (Four line LCD with push buttons):

6

Pentru finalizarea instalării este necesar să repornim sistemul:

sudo reboot

După repornire sistemul radio va porni în mod automat iar pe ecranul LCD-ului va apărea: prima linie – ora și data, a doua linie – postul de radio, a treia linie – melodia sau programul ascultat, a patra linie – nivelul sonorului.

7

În cazul în care nu se aude nimic în boxe – nu avem sonor – se va apela la utilitarul select_audio.sh al aplicației pentru selectarea ieșirii audio corecte:

cd /usr/share/radio

./select_audio.sh

Se va selecta On-board audio output jack și se va reporni sistemul.

8

Butonul 1 (Mute) va permite oprirea / repornirea sonorului. Sistemul nu este prevăzut cu butoane de reglare a volumului deoarece acest lucru se va controla din potențiometrul boxelor active. Este recomandat ca volumul să fie setat la maxim din setările plăcii (utilitarul alsamixer):

alsamixer

9

Butonul Menu permite navigarea între patru ecrane de configurare a sistemului radio:

  • Ecranul de funcționare normală, prezentat anterior. În acest ecran butoanele Up și Down vor permite navigarea în lista de posturi de radio predefinite.
  • Ecranul de căutare. Butoanele Up și Down permit vizualizarea listei de posturi predefinite. Apăsarea butonului Menu va comuta pe postul afișat.

10

  • Ecranul de selectare a sursei. Aplicația mpd este capabilă să redea și fișiere obișnuite de muzică (mp3, wav) nu doar transmisii online. Cu alte cuvinte sistemul nostru are și funcționalitatea de player MP3 – dacă se introduce în sistem un USB stick cu melodii MP3 ele pot fi redate prin selectarea opțiunii Music Library în locul opțiunii Internet Radio (cu ajutorul butoanelor Up și Down).

11

  • Ultimul ecran de configurare permite activarea opțiunii de Random on – posturile de radio sau melodiile MP3 vor fi redate în ordine aleatorie.

12

Lista de posturi de radio predefinite se poate personaliza editând fișierul /var/lib/radiod/stationlist și respectând formatul specific [nume] URL:

[RTL] http://streaming.radio.rtl.fr/rtl-1-44-128.m3u

[RTL2] http://streaming.radio.rtl.fr/rtl2-1-44-128.m3u

[Music Box] http://www.musicboxtv.com:8000/live.m3u

Controlul de la distanță a sistemului radio

Chiar dacă sistemul asigură o funcționalitate completă pentru un dispozitiv radio (chiar și MP3 player) există și opțiuni suplimentare ce pot fi adăugate.

O opțiune interesantă este controlul dispozitivului radio de pe telefonul mobil – opțiune utilă în cazul în care sistemul este instalat într-o locație mai puțin accesibilă (conectat la sistemul de sonorizare al unei instituții de exemplu). Acest lucru se poate face instalând aplicația Android gratuită Droid MPD Client

13

și configurând în aplicație adresa IP a sistemului radio Raspberry Pi (în meniul Settings).

14

Cum să utilizăm placa Raspberry Pi 3 ca Media Center

Un dispozitiv Media Box sau Media Center este un sistem capabil să redea înregistrări multimedia (audio și video) stocate în diverse formate (mp3, wav, avi, mp4, divx) și aflate pe diverse suporturi de stocare (local, stick usb, HDD extern, în rețea). Un astfel de dispozitiv poate transforma un televizor obișnuit sau un simplu monitor într-un sistem multimedia cu facilități asemănătoarea ultimei generații de dispozitive de tip televizor inteligent (smart). Mai mult decât atât, un dispozitiv de tip Media Box este capabil să vă ajute să catalogați și să sortați colecția personală de fișiere audio și video completând chiar anumite detalii (nume album, nume piese, distribuție filme) cu informații extrase automat din mediul on-line.

Placa Raspberry Pi 3 poate implementa cu succes funcționalitatea unui dispozitiv Media Box datorită facilităților hardware de care dispune: ieșire audio-video HDMI, cele patru porturi USB ce permit conectarea de dispozitive de tip USB stick sau HDD-uri externe, conectivitate duală de rețea Ethernet și WiFi și, nu în ultimul rând, puterea de procesare oferită de procesorul cu patru nuclee ARMv8 pe 64 de biți ce rulează la 1.2GHz și nucleu grafic VideoCore IV 3D (putere de procesare mult superioară față de variantele anterioare ale plăcii).

Pentru a utiliza placa Raspberry Pi 3 ca Media Center avem nevoie ca televizorul sau monitorul pe care îl vom utiliza să aibă intrare HDMI (în caz contrar va fi necesară utilizarea unui convertor HDMI-VGA sau HDMI-DVI) și de următoarele componente (specifice utilizării plăcii, suplimentar față de placa Raspberry Pi 3 și de alimentatorul de rețea):

  • un cablu HDMI care să realizeze conexiunea între placă și televizor;
  • un card micro SD de 16GB pentru sistemul de operare, este recomandată utilizarea cardului micro SD oficial Noobs;
  • o carcasă (opțional dar recomandat);
  • cablu de rețea (dacă utilizăm rețeaua ethernet și nu conexiunea WiFi – conexiunea ethernet oferă viteze mai mari de comunicație în rețea);
  • tastatură și mouse dar, mai ales în cazul utilizării ca Media Center, este recomandată utilizarea unei tastaturi integrate fără fir.

 

Software-ul care va asigura funcționalitatea efectivă de Media Center se numește Kodi și este unul dintre cele mai cunoscute și mai utilizate aplicații open-source de acest tip nu numai pentru Raspberry Pi ci și pentru sisteme Linux și Windows de tip PC. Instalarea aplicației pe o placă Raspberry Pi se poate face pur și simplu pe un sistem ce rulează deja Raspbian cu ajutorul comenzii (utilizând Terminal):

sudo apt-get install kodi

2

După instalare aplicația va putea fi lansată din meniul interfeței grafice:

3

O altă variantă de utilizare este instalarea unei variante de sistem de operare dedicate aplicației Kodi – sistemul de operare va rula aplicația Kodi în mod preferențial – la pornirea unui astfel de sistem de operarea aplicația Kodi va porni în mod automat iar sistemul va fi un sistem dedicat de tip Media Center. Este o variantă indicată dacă placa Raspberry Pi va îndeplini doar funcția de Media Center. Optimizarea sistemului de operare pentru aplicația Kodi poate oferi o experiență mai bună ca sistem Media Center (viteză de răspuns, stabilitate, ușurință în utilizare). Cele mai cunoscute distribuții dedicate aplicației Kodi sunt LibreELEC și OSMC – nu există diferențe funcționale majore între cele două distribuții, doar elemente de design diferite ale interfeței utilizator – puteți să le testați pe ambele și să vedeți care vă place mai mult. Ambele distribuții pot fi instalate utilizând utilitarul NOOBS și ambele necesită conexiune Internet pentru a fi instalate. După instalare ambele distribuții vor porni automat aplicația Kodi.

4

Explicațiile următoare (capturile de imagini utilizate în explicațiile următoare) se bazează pe versiunea OSMC 2017.04-1 ce rulează Kodi 17.1 (Krypton). Se pot parcurge suplimentar și următoarele materiale: (*), (*), (*), (*), (*), (*).

 

Configurarea și utilizarea aplicației Kodi

Interfața utilizator Kodi pune la dispoziție mai multe meniuri. Funcționalitățile multimedia pot fi accesate prin intermediul meniurilor Videos, Music și Pictures – aceste meniuri permit regăsirea, organizare și redarea conținutului multimedia de tip video, audio și foto.

5

Înainte de a explora facilitățile multimedia oferite de aplicația Kodi este necesar să configurăm setările de rețea ale sistemului pentru a putea accesa conținut multimedia din rețea (rețea locală, Internet). Setările de rețea pot fi configurate din meniul My OSMCNetwork.

6

După configurarea setărilor de rețea (ethernet sau WiFi) putem accesa conținut multimedia atât din rețeaua locală (directoare partajate de pe alte sisteme de calcul) cât și din rețeaua Internet. Conținutul multimedia ce poate fi accesat de aplicația Kodi se poate afla local (pe un stick de memorie sau un HDD extern conectate prin USB la placa Raspberry Pi) sau în rețea. Dispozitivele de stocare conectate prin USB la placa Raspberry Pi vor apărea în mod automat în meniurile Videos, Music și Pictures nefiind necesară o configurare suplimentară. Fișierele accesate prin intermediul rețelei (sau fișierele locale care nu apar în mod automat în meniu) trebuie adăugate manual (Add videos… , Add music…, Add pictures…).

7

Adăugarea manuală permite definirea de  intrări în meniu pentru directoare locale (Home folder sau Root filesystem), directoare partajate de rețea (NFS sau SMB) și chiar dispozitive de streaming multimedia UPnP.

8

O altă facilitate oferită este posibilitate de streaming multimedia dinspre dispozitivele mobile către sistemul Media Center Kodi (dublarea ecranului telefonului mobil inteligent (mirroring) pe televizorul conectat la sistemul Media Center, de exemplu). Acest lucru poate fi realizat prin activarea protocolul AirPlay specific dispozitivelor Apple (iPad, iPhone) – meniul Settings, submeniul ServicesAirPlay. Cu ajutorul acestei setări puteți controla dispozitivul Media Center de pe orice dispozitiv mobil Apple.

9

O altă opțiune de control la distanță și de transmitere de conținut multimedia către sistemul Media Center Kodi este activarea protocolului DLNA compatibil cu o gamă mai largă de dispozitive, inclusiv cu dispozitivele mobile ce rulează Android – meniul Settings, submeniul ServicesUPnP/DLNA. Dacă dispozitivul Android nu deține deja o aplicație ce permite comunicația prin protocolul DLNA se poate instala aplicația gratuită AllConnect.

11

10

Dacă se dorește controlul la distanță a dispozitivului Media Center Kodi fără a utiliza o tastatură sau telecomandă fără fir se poate activa opțiunea de control prin intermediul unui dispozitiv mobil – meniul Settings, submeniul ServicesControl.

12

După activarea opțiunii de Allow remote control via HTTP pe dispozitivul mobil se va instala aplicația Kore ce implementează o interfață grafică de control completă pentru sistemul Kodi.

14

13

Activarea setării de control la distanță a sistemului Kodi permite controlul Media Center-ului atât de pe dispozitive mobile, prin intermediul aplicației Kore dar și de pe orice alt dispozitiv conectat în aceiași rețea locală cu sistemul Kodi. Controlul la distanță se poate face utilizând un client web (browser) accesând adresa IP a sistemului pe portul 8080.

15

 

Instalarea și utilizarea de componente suplimentarea (add-ons)

Pe lângă opțiunile / facilitățile implicite instalate odată cu aplicația Kodi se pot adăuga funcții suplimentare prin adăugarea de componente suplimentare denumire add-ons. Aceste componente se pot instala din meniul Settings, submeniul Add-on browser. Printre cele mai uzuale componente suplimentare se pot enumera adăugarea afișării stării vremii (Weather add-on), adăugarea posibilității de a urmări conținut de pe site-ul YouTube (YouTube add-on) dar și facilități de descărcare a automată a subtitrărilor pentru filme sau informații suplimentare (versuri, poza albumului) pentru fișiere de muzică.

1617

Pe lângă colecția oficială (repository) de add-ons a aplicației Kodi se pot instala și componente suplimentare din colecții diverse. Există o dinamică de dezvoltare foarte mare a componentelor suplimentare destinate platformei Kodi. Orice funcționalitate vă doriți, oricât de exotică ar fi, cu siguranță există o componentă care să o implementeze, trebuie doar să o căutați. Dacă sunteți în pană de idei puteți să consultați clasamentele on-line cu cele mai populare extensii pentru platforma Kodi, câteva exemple: (*), (*), (*), (*).