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: (*), (*), (*), (*).

Utilizarea pinilor GPIO la Raspberry Pi 3

Configurația pinilor GPIO la placa Raspberry Pi 3

Pe lângă resursele de calcul specifice unui sistem de calcul de uz general (microprocesor, memorie, interfața Ethernet și WiFi, porturi USB) placa Raspberry Pi 3 dispune și de un conector de 40 de pini ce expune o serie de pini digitali de intrare / ieșire (General-Purpose Input / Output). Diagrama conectorului și semnificația pinilor este prezentată în diagrama următoare.

1

Din cei 40 de pini avem 2 pini de Power (alimentare) 3.3V – pinii 1 și 17, 2 pini de Power 5V – pinii 2 și 4, 8 pini de GND (masă) – pinii 6, 9, 14, 20, 25, 30, 34 și 39, 2 pini rezervați pentru identificarea plăcilor de extensie de tipul Pi HATS – pinii 27 și 28 și 24 de pini GPIO, unii dintre ei cu funcționalitate dublă, ca de exemplu:

  • Pinii 3 și 5 (GPIO2 – SDA și GPIO3 – SCL) sunt și magistrală I2C;
  • Pinii 8 și 10 (GPIO14 – UART_TX și GPIO15 – UART_RX) sunt și linii de comunicație serială UART;
  • Pinii 19, 21, 23, 24 și 26 (GPIO10 – SPI0_MOSI, GPIO9 – SPI0_MISO, GPIO11 – SPI0_CLK, GPIO8 – SPI_CE0 și GPIO7 – SPI_CE1) – pini magistrală 0 SPI cu două semnale de chip select;

Toți pinii GPIO la Raspberry Pi suportă maxim 3.3V – conectarea de periferice cu un nivel logic ”1” ce implică un nivel de tensiune mai mare de 3.3V va conduce la distrugerea definitivă a blocului GPIO al plăcii.

Pentru a ilustra utilizarea pinilor GPIO la placa Raspberry Pi 3 vom utiliza un kit de senzori pentru această placă conține atât elemente digitale (brick-uri led și un brick buton) cât și analogice (senzori de temperatură, umiditate, lumină și un shield de achiziție analogică).2

 

Utilizarea pinilor GPIO ca pini digitali

Utilizarea pinilor GPIO ca pini digitali (pini de intrare sau de ieșire cu valori logice ”1” sau ”0” – tensiune 3.3V sau 0V) se poate face din mai multe limbaje de programare. Vom exemplifica utilizarea pinilor GPIO utilizând două din cele mai utilizate limbaje de programare și anume: C și Python.

Vom utiliza o schemă electrică compusă din placa Raspberry Pi 3, un brick led (element de ieșire) și un brick buton (element de intrare):3

Brick-ul buton se va conecta la 3.3V (VCC), GND (GND) și pinul 11 (GPIO17). Brick-ul LED se va conecta la GND (GND) și la pinul 12 (GPIO18). Vom scrie, în ambele limbaje de programare, un program care va aprinde LED-ul când se va apăsa pe buton (se va activa o ieșire la activarea unei intrări).

Se va crea un fișier exemplu1.py (utilizând orice editor de text în linie de comandă, nano de exemplu, sau în interfața grafică) care va conține următorul cod în limbajul Python:

import RPi.GPIO as GPIO

ledPin = 18

butPin = 17

GPIO.setmode(GPIO.BCM)

GPIO.setup(ledPin, GPIO.OUT)

GPIO.setup(butPin, GPIO.IN)

GPIO.output(ledPin, GPIO.LOW)

print(„Press CTRL+C to exit”)

try:

    while 1:

        if GPIO.input(butPin):

            GPIO.output(ledPin, GPIO.HIGH)

        else:

            GPIO.output(ledPin, GPIO.LOW)

except KeyboardInterrupt:

   GPIO.cleanup()

După crearea fișierului sursă programul poate fi executat imediat (limbajul Python nu necesită compilare) cu ajutorul comenzii (în Terminal):

python exemplu1.py

Atâta timp cât programul rulează funcționalitatea descrisă anterior (LED-ul se va aprinde la apăsarea butonului) va merge. Pentru oprirea programului se va apăsa combinația de taste CTRL+C.

Elementele importante din program sunt importarea bibliotectii Python – RPi.GPIO – responsabilă cu funcțiile specifice accesului la pinii GPIO, funcțiile GPIO.setmode și GPIO.setup ce permit configurarea pinilor ca intrare sau ca ieșire și funcțiile GPIO.output și GPIO.input ce permit setarea și citirea pinilor de ieșire / intrare.

Codul echivalent în limbajul C este:

#include <stdio.h>   

#include <wiringPi.h>

const int ledPin = 18;

const int butPin = 17;

int main(void) {

    wiringPiSetupGpio();

    pinMode(ledPin, OUTPUT);    

    pinMode(butPin, INPUT);  

    printf(„Press CTRL+C to quit.\n”);

    while(1) {

        if (digitalRead(butPin))

        {   digitalWrite(ledPin, HIGH);   }

        else

        {   digitalWrite(ledPin, LOW); }

    }

     return 0;

}

Programul trebuie compilat înainte de execuție cu ajutorul comenzii:

gcc -o exemplu1 exemplu1.c -l wiringPi

După compilare poate fi executat cu ajutorul comenzii:

./exemplu1

Se poate observa ușor echivalența elementelor principale din programul scris în limbajul C și cel scris în Python. Biblioteca utilizată se numește wiringPi iar funcțiile utilizate sunt pinMode, digitalRead și digitalWrite (funcții similare se regăsesc și în mediul Arduino IDE).

 

Achiziția analogică și comunicația SPI

Placa Raspberry Pi nu dispune de un convertor analog-numeric, nu poate citi valori intermediare în intervalul 0 – 3.3V ci doar valori digitale de ”0” logic și ”1” logic. Din acest motiv dacă dorim să utilizăm senzori analogici trebuie să utilizăm un convertor extern. Shield-ul din kit-ul de senzori conține un astfel de convertor, mai exact un circuit MCP3008 cu opt canale de intrare (se pot conecta până la opt senzori analogici). Acest circuit va comunica cu placa Raspberry Pi prin intermediul interfeței SPI, cu alte cuvinte achiziția analogică se va realiza prin intermediul interfeței SPI. Înainte de conectarea shield-ului se va activa comunicația SPI cu ajutorul utilitarului raspi-config:

4

Pentru ilustrarea achiziției analogice vom utiliza următoarea schemă electrică (placă Raspberry Pi 3, un brick LED roșu, shield-ul de senzori și un brick senzor analogic de temperatură):

5

Conexiunile din schemă sunt următoarele:

  • Brick-ul LED este conectat ca și în schema precedentă: GND – GND (pin 6), IN – GPIO18 (pin 12);
  • Shield-ul de senzori se conectează la placa Raspberry Pi astfel: 3.3V – 3.3V (pin 17), CLK – SPI0_CLK (pin 23), MISO – SPI0_MISO (pin 21), MOSI – SPI0_MOSI (pin 19), CE – SPI0_CE0 (pin 24), GND – GND (pin 25);
  • Brick-ul senzor de temperatură se conectează GND – GND (pin 9), VCC – 5V (pin 2) și OUT (ieșirea analogică) se conectează la canalul 0 al shield-ului de senzori.

Scopul schemei este să citim valoarea măsurată de senzorul analogic de temperatură (senzor LM50) prin intermediul shield-uri de senzori SPI, să afișăm valoarea măsurată (valoarea tensiunii achiziționate și valoarea temperaturii echivalente) și, în cazul în care temperatura este mai mare de 30 de grade Celsius, să aprindem LED-ul – funcționalitate de alarmă termică vizuală. Codul utilizat este scris în limbajul Python:

import spidev

import time

import RPi.GPIO as GPIO

ledPin = 18

spi = spidev.SpiDev()

spi.open(0,0)

GPIO.setmode(GPIO.BCM)

GPIO.setup(ledPin, GPIO.OUT)

GPIO.output(ledPin, GPIO.LOW)

def readadc(adcnum):

    if ((adcnum > 7) or (adcnum < 0)):

        return -1

    r = spi.xfer2([1,(8+adcnum)<<4,0])

    adcout = ((r[1]&3) << 8) + r[2]

    return adcout

try:

  while True:

    value = readadc(0)

    voltage = value * 3.3

    voltage /= 1024.0

    tempCelsius = (voltage-0.5)*100

    if (tempCelsius>30):

         GPIO.output(ledPin, GPIO.HIGH)

    else:

         GPIO.output(ledPin, GPIO.LOW)

    print „–––––––––„

    print „Voltage: „, voltage

    print „–––––––––„

    print „Temp: „, tempCelsius

    time.sleep(1)

except KeyboardInterrupt:

   GPIO.cleanup()

Comanda LED-ului în program se face identic cu exemplul precedent. Pentru partea de compunicație SPI utilizăm biblioteca spidev (9) care, prin intermediul funcției readadc, ne permite citirea valorii achiziționate de la circuitul extern de conversie analog-numerică. Tensiunea măsurată de circuitul de conversie este convertită în temperatură (grade Celsius) conform documentației senzorului LM50 (8).

Ca și în cazul precedent programul se execută direct cu comanda (presupunem că am salvat programul în fișerul termometru.py):

python termometru.py

6

Execuția programului se oprește cu combinația de taste CTRL+C.

 

Comunicația I2C și comunicația serială UART

Alte două instrumente puse la dispoziție de pinii plăcii Raspberry Pi 3 sunt pinii de magitrală I2C și portul de comunicație serială UART. Ambele metode de comunicație pot permite conectarea la placa Raspberry Pi de diverse module electronice suplimentare: senzori digitali I2C, ecrane LCD / TFT I2C sau seriale, module GPS seriale etc. Vom exemplifica utilizarea celor două canale de comunicație utilizând un senzor digital de temperatură și umiditate I2C – Si7021 breakout – și un ecran LCD grafic serial 128×64. La fel ca și în cazul magistrale SPI, este necesară activarea comunicațiilor I2C și seriale utilizând utilitarul raspi-config.

Schema de interconectare între placa Raspberry Pi și cele două componente este următoarea:

7

Senzorul Si7021 se va conecta la cei doi pini I2C ai plăcii: DA senzor – pin SDA / GPIO2 placă, CL senzor – pin SCL / GPIO3 placă iar alimentarea la 3.3V: + senzor – pin 1 placă, – senzor – pin 9 placă.

Afișajul LCD serial se alimentează la 5V: Vin LCD – pin 2 placă, GND LCD – pin 6 placă iar comunicația se va realiza unidirecțional din motive de niveluri logice de funcționare (LCD-ul funcționează la 5V iar placa la 3.3V) și din cauză că nu este nevoie ca LCD-ul să trimită date către placa ci doar placa să trimită date către LCD: pinul RX al LCD-ului se va conecta la pinul 8 (UART_TX) al plăcii.

Programul necesar funcționării sistemului este scris tot în limbajul de programare Python și utilizează bibliotecile smbus (necesară comunicației I2C) și serial (necesară comunicației seriale).

import smbus

import time

import serial

Următoarea secțiune deschide și configurează portul serial și inițializează comunicația I2C:

port = serial.Serial(‘/dev/ttyS0’,115200,timeout=3.0)

bus = smbus.SMBus(1)

Comunicația cu senzorul Si7021 se realizează cu ajutorul comenzilor directe de citire a registrelor interne a acestuia. Pentru mai multe detalii puteți consulta și materialul Build a Hygrometer at Home Using Raspberry Pi and SI7021.

bus.write_byte(0x40, 0xF5)

time.sleep(0.3)

data0 = bus.read_byte(0x40)

data1 = bus.read_byte(0x40)

humidity = ((data0 * 256 + data1) * 125 / 65536.0) – 6

time.sleep(0.3)

bus.write_byte(0x40, 0xF3)

time.sleep(0.3)

data0 = bus.read_byte(0x40)

data1 = bus.read_byte(0x40)

cTemp = ((data0 * 256 + data1) * 175.72 / 65536.0) – 46.85

print „Relative Humidity is : %.2f %%” %humidity

print „Temperature in Celsius is : %.2f C” %cTemp

Programul va afișa și în consola de comenzi temperatura și umiditatea citită de la senzor:

8

Ultime secțiune a programului va realiza afișarea pe LCD. Comenzile de inițializare, ștergere a ecranului și poziționare a cursorului sunt specifice protocolului serial al LCD-ului. Pentru funcționalități suplimentare, inclusiv parte de afișare grafică, consultați manualul oficial.

port.write(b’\x7C\x00′)

port.write(b’\x7C\x18\x00′)

port.write(b’\x7C\x19\x00′)

time.sleep(1)

port.write(‘Temperatura: ‘)

port.write(‘%.2f’ % cTemp)

port.write(‘oC\r\n’)

time.sleep(1)

port.write(‘Umiditate: ‘)

port.write(‘%.2f’ % humidity)

port.write(‘%’)

port.close()

9

Programul se va executa ca și în cazurile precedente cu ajutorul comenzii (presupunând că programul a fost salvat sub denumirea termometru2.py):

python termometru2.py

Primii pași în utilizarea plăcii Raspberry Pi 3

Ce este Raspberry Pi?

Raspberry Pi este o placă de dezvoltare de tip SBC (Single Board Computer) –  un sistem de calcul nemodular implementat pe un singur cablaj electronic. Chiar dacă are dimensiuni reduse (85mm x 56mm), Raspberry Pi este un calculator complet permițând funcționalități obișnuite precum rularea unui sistem de operare (Linux sau Windows) și rularea de aplicații utilizator (jocuri, editoare de text, medii de programare, redarea de muzică și filme, aplicații de teleconferință, aplicații Internet). Diferențele între o placă Raspberry Pi și un calculator personal (PC) sau laptop constau atât în dimensiunea redusă a plăcii cât și în puterea mai mică de calcul a acesteia – nu are aceleași performanțe de calcul precum un PC desktop care are un cost și o dimensiune de câteva ori mai mari. Putem compara placa Raspberry Pi cu o tabletă sau cu un sistem de tip NetBook dar fără a dispune de ecran și tastatură. În plus, placa Raspberry Pi oferă posibilitatea de a conecta diverse componente electronice specifice sistemelor embedded: senzori, butoane, ecrane LCD sau pe 7 segmente, drivere de motoare, relee etc. Posibilitatea de a personaliza sistemele de programe (sistemul de operare, aplicațiile) și posibilitatea de interconectare cu alte componente electronice fac din placa Raspberry Pi un sistem de calcul ce poate sta la baza unor proiecte personale extrem de interesante și de puternice – un calculator ce poate fi integrat în sisteme electronice și mecanice proiectate și realizate de utilizator.

În ciuda dimensiunii reduse placa Raspberry Pi 3 dispune de periferice integrate numeroase acoperind complet funcționalitatea unui sistem de calcul (audio, video, porturi USB, conectivitate de rețea):

  • Procesor SoC pe 64 de biți din familia ARMv8-A, Broadcom BCM2837, ce lucrează la o frecvență de 1.2GHz și dispune de 4 nuclee de tip ARM Cortex-A53;
  • 1GB de memorie RAM (folosită și ca memorie video, partajată cu procesorul grafic);
  • Procesor grafic Broadcoam VideoCore IV 3D integrat pe aceeași pastilă de siliciu ca și procesorul principal;
  • Ieșire digitală video / audio HDMI;
  • Ieșire analogică video (composite video) / audio mixtă prin intermediul unei mufe jack 3.5mm;
  • Mufă de rețea RJ45 Ethernet 10/100 Mbit/s;
  • Conectivitate WiFi 802.11n;
  • Conectivitate Bluetooth 4.1 / BLE;
  • 4 porturi USB 2.0;
  • 40 de pini de intrare / ieșire (GPIO);
  • Slot card de memorie microSD (utilizat pentru instalarea sistemului de operare);
  • Conectori dedicați pentru cameră video (CSI) și afișaj (DSI);

1

Componente necesare utilizării plăcii Raspberry Pi 3

Pentru a pune în funcțiune placa Raspberry Pi 3 avem nevoie de următoarele componente suplimentare:

  • Cablu HDMI și un monitor / televizor cu intrare HDMI. În cazul în care nu dispunem de un monitor / televizor cu intrare HDMI putem utiliza un adaptor HDMI-DVI sau un adaptor HDMI-VGA, depinde de intrarea monitorului pe care îl utilizăm.
  • Alimentator de rețea cu ieșire de 5V, minim 2.5A și mufă microUSB. Este recomandată utilizarea alimentatorului oficial sau a unui alimentator de calitate care asigură o tensiune corectă și un curent suficient pentru alimentarea plăcii Raspberry Pi 3. În cazul în care utilizăm un alimentator ieftin putem distruge placa din cauza fluctuațiilor de tensiune sau putem întâmpina probleme în utilizare din cauza curentului insuficient debitat de sursa de tensiune.
  • Tastatură și mouse USB. Sunt necesare pentru instalarea și configurarea inițială a sistemului. Dacă, ulterior, se utilizează sistemul de la distanță, tastatura, mouse-ul și monitorul nu mai sunt necesare. O variantă mai simplă, și mai comodă, este utilizarea unui dispozitiv mixt tastură / touchpad fără fir.
  • Card de memorie microSD, capacitate minimă 8GB (16GB recomandat), clasă de viteză 10. Cardul de memorie va stoca sistemul de operare la fel ca și hard-disk-ul în cazul unui sistem de calcul de tip PC sau laptop. Este foarte importantă utilizarea unui card microSD de calitate și de viteză adecvată din cauză că utilizarea unui card de calitate îndoielnică poate conduce la probleme de funcționare extrem de neplăcute: blocări în funcționare, resetarea aleatorie a sistemului, pierderi de date etc. Dacă este posibil, se recomandă utilizarea cardului microSD oficial.
  • Dacă sistemul va fi utilizat într-o rețea locală pe cablu este necesar și un cablu de rețea UTP – patch-cord. Dacă se utilizează placa într-o rețea locală WiFi nu este necesar. Conectivitatea de rețea (conectivitatea Internet) nu este obligatorie pentru funcționarea plăcii dar este recomandată deoarece altfel nu se pot realiza actualizările de securitate ale sistemului de operare, nu se pot menține corect setările de dată și oră și, bineînțeles, se pierde o funcționalitate importantă a sistemului.
  • Opțional, dar recomandat, este utilizarea și a unei carcase pentru placa Raspberry Pi. Manipularea plăcii fără nici un fel de protecție poate conduce la deteriorarea acesteia datorită descărcărilor electrostatice (descărcarea sarcinii electrice statice a corpului uman în circuitul electronic prin atingerea componentelor conductoare a acestuia), a șocurilor mecanice și a murdăriei (praf, lichide, grăsimi).

 

Instalarea sistemului de operare

Următorul pas, necesar înainte de punerea în funcțiune a plăcii Raspberry Pi 3, este pregătirea cardului microSD pentru instalarea sistemului de operare. Placa Raspberry Pi 3 poate rula diverse distribuții ale sistemului de operare Linux și o versiune minimală a sistemului de operare Microsoft Windows 10 (prin versiune minimală înțelegem o variantă ce nu poate fi folosită ca platformă desktop ci doar ca platformă pentru aplicații – Windows 10 IoT Core). În continuare vom exemplifica instalarea distribuției Linux Raspbian, sistemul de operare oficial al plăcii Raspberry Pi, sistem de operare foarte ușor de utilizat și recomandat pentru începători. Alte sisteme de operare recomandate de fundația Raspberry Pi (producătorul plăcii Raspberry Pi) pot fi explorate în pagina de download a site-ului fundației.

În cazul în care utilizați cardul microSD oficial al plăcii Raspberry Pi instalarea sistemului de operare este foarte simplă deoarece cardul de memorie conține utilitarul NOOBS (New Out Of Box Software) ce facilitează instalarea diverselor sisteme de operare specifice plăcii Raspberry Pi. Pentru pornirea instalării sistemului de operare se inserează cardul în slotul microSD al plăcii și se pornește sistemul (trebuie să vă asigurați că aveți toate echipamentele conectate corect: tastatură, mouse, cablu HDMI). După inițializare utilitarul NOOBS vă permite alegerea sistemului de operare pe care doriți să-l instalați:

2

În cazul în care placa nu este conectată la Internet (prin cablu sau prin WiFi) singura opțiune de instalare va fi sistemul de operare Raspbian al cărui kit de instalare se află deja pe cardul de memorie. Toate celelalte sisteme de operare necesită conectivitate Internet pentru instalare. Conexiunea la Internet se poate realiza prin conectarea cu un cablu la o rețea ce oferă setări automate (DHCP) sau configurând accesul WiFi (opțiunea Wifi networks din partea de sus a ferestrei anterioare). După confirmarea sistemului de operat dorit, utilitarul NOOBS va instala automat sistemul de operare – acest proces durează câteva zeci de minute.

3

După finalizarea procesului de instalare sistemul va reporni și putem deja să lucrăm cu placa Raspberry Pi.

4

În cazul în care nu dispunem de un card microSD cu NOOBS preinstalat putem utiliza un card microSD de calitate pe care să copiem utilitarul NOOBS – se downloadează și se dezarhivează pe cardul microSD. Mai multe detalii puteți găsi și pe pagina utilitarului. După această operație instalarea decurge ca în cazul precedent. ATENȚIE!!! Cardurile de memorie ieftine produc o groază de bătăi de cap!

O alternativă la utilizarea programului NOOBS este copierea directă a sistemului de operare pe cardul microSD. Copierea nu se poate face direct, ca în cazul NOOBS, ci se realizează prin transferul unui fișier imagine cu ajutorului unui utilitar specializat, de exemplu: Etcher sau Win32DiskImager. Se downloadează imaginea de sistem de operare dorit (varianta LITE nu include interfața grafică) și se copiază pe cardul de memorie. După această operație cardul de memorie va conține sistemul de operare deja instalat, gata de utilizare. Cardul de memorie se poate introduce în slotul plăcii și se poarte porni sistemul.

56

 

Configurarea inițială a plăcii Raspberry Pi 3

Există două metode de configurare a plăcii Raspberry Pi: folosind utilitarele puse la dispoziție de interfața grafică a sistemului de operare Raspbian sau folosind utilitarele în linie de comandă (Terminal). Utilitarul principal de configurare se numește raspi-config  și poate fi accesat atât prin intermediul interfeței grafice cât și în linie de comandă.

7

8

În linie de comandă (se accează aplicația Terminal din bara de aplicații) se va introduce comanda:

sudo raspi-config

Comanda sudo permite execuția de utilitare sistem privilegiate (pot fi executate doar cu drepturi de administrare a sistemului). Chiar dacă contul de conectare inițial are drepturi depline asupra sistemului (dreptuti de administrator sau root), sistemul de operare nu permite execuția unor comenzi sau utilitare importante fără a fi precedate de comanda sudo pentru a preveni accidentele de configurare. Accesarea utilitarului în linie de comandă este utilă mai ales când sistemul este administrat de la distanță prin intermediul utilitarului ssh (a se vedea secțiunea următoare).

9

Prin intermediul utilitarului raspi-config se pot configura majoritatea setărilor de sistem ale plăcii Raspberry Pi dar vă recomandăm următoarele setări esențiale pentru a putea lucra mai departe:

  • Modificarea credențialelor implicite ale sistemului. Datele de conectare implicite ale sistemului Raspbian sunt: utilizator: pi / parolă: raspberry . Se recomandă modificarea parolei implicite pentru ca sistemul să nu fie accesat în mod neautorizat. Notați noua parolă, fără aceasta este posibil să nu mai puteți accesa sistemul și să trebuiască să reinstalați sistemul de operare.

 10

  • Realizați setările de rețea pentru ca placa să se poată conecta la Internet. Conexiunea la Internet este importantă pentru funcționarea corectă a plăcii. Cel mai simplu este să configurați conexiunea WiFi accesând icon-ul specific din bara de aplicații:

11

Dacă folosiți o conexiune pe cablu aceasta se configurează în mod automat dacă sistemul este introdus într-o rețea ce oferă DHCP.

  • Realizați instalarea update-urilor pentru pachetele software din distribuție pentru a vă bucura de ultimele facilități oferite de sistemul de operare Raspbian și pentru a beneficia de corecțiile de securitate. Pentru a face acest lucru se vor tasta în aplicația Terminal următoarele comenzi:

 

sudo apt-get update

sudo apt-get dist-upgrade

12

  • Activați serviciile de acces la distanță dacă doriți să utilizați placa fără periferice proprii (tastatură, mouse și monitor). Explicarea utilizării acestora se va face în următoarea secțiune. Cele mai cunoscute programe de acces la distanță sunt VNC (pentru accesul în mod grafic) și ssh (pentru accesul în linie de comandă). Ambele sunt instalate implicit în distribuția Raspbian și pot fi activate prin intermediul utilitarului raspi-config.

13

14

 

Utilizarea plăcii Raspberry Pi 3 de la distanță

De multe ori este mai comod sau pur și simplu natura proiectului impune accesul la distanță pentru utilizarea plăcii Raspberry Pi. Prin acces la distanță nu se înțelege neapărat faptul că placa se află la mare distanță ci că nu este accesată de la o tastatură și un monitor direct conectate. În acest fel putem utiliza placa fără a bloca un set de periferice dedicate.

Pentru a putea să ne conectăm la placa Raspberry Pi prin intermediul rețelei este necesar să cunoaștem adresa IP a acesteia. Dacă alocarea adreselor IP în rețeaua locală în care se utilizează placa se realizează în mod static este suficient să ne notăm adresa alocată după instalarea sistemului de operare utilizând comanda ifconfig în aplicația Terminal.

15

Dacă placa se conectează într-o rețea locală ce alocă dinamic adresele IP asta înseamnă că la fiecare repornire este posibil ca adresa IP să se modifice și nu avem altă posibilitate decât să ”scanăm” rețeaua pentru a descoperi ce adresă a fost alocată pentru placa Raspberry Pi. Scanarea se face cu aplicații specifice, de exemplu: Angry IP Scanner sau nmap.

După instalare, aplicația Angry IP Scanner permite verificarea întregii plaje de adrese dintr-o rețea locală și raportează ce adrese IP sunt active (sunt alocate) și ce servicii rulează sistemele de calcul respective:

16

Pentru accesul la distanță în linie de comandă se utilizează programul ssh ce permite deschiderea unei sesiuni de tip terminal de pe un alt sistem de calcul. Este necesară instalarea unui client ssh pe sistemul de pe care se va face accesul. Cel mai cunoscut client ssh pentru Windows este putty, sistemele Linux au clientul ssh instalat implicit:

17

Pentru accesul la distanță beneficiind de interfața grafică pusă la dispoziție de sistemul de operare vom utiliza programul VNC. La fel ca și în cazul ssh este necesară instalarea pe sistemul de pe care se face accesul a unui client specific. Unul dintre cei mai cunoscuți clienți VNC este RealVNC:

18

Ceas de grădină

Orice grădină are pe lângă plante și flori și diverse obiecte care aduc un farmec suplimentar aranjamentelor naturale: felinare, pietre decorative, pitici de grădină etc. În cadrul materialului de față vă propunem realizarea unui obiect inedit – un felinar cu funcționalități de ceas – un felinar ce va lumina doar la oră exactă clipind de un număr de ori egal cu ora (un orologiu luminos).

Pentru implementarea sistemului vom utiliza o placă de dezvoltare A-Star 328PB, placă de dezvoltare compatibilă Arduino dar care este echipată cu ultima variantă de microcontroler ATmega328. Pentru a putea păstra ora exactă sistemul va include o componentă RTC ce se va interconecta cu placa de dezvoltare prin intermediul magistralei I2C. Pentru a genera o lumină suficient de puternică și pentru a putea controla inclusiv culoarea sistemul va utiliza o componentă de 7 LED-uri RGB WS2812 mai exact Neopixel Jewel 7 x WS2817 5050 RGB LED. Schema de interconectare dintre componentele sistemului este următoarea:

2

Toate componentele sistemului se vor alimenta la 5V. Se poate utiliza un alimentator de rețea de 5V minim 1A sau, pentru portabilitate, o baterie externă USB de minim 1000mAh. Modulul RTC se va conecta la placa de dezvoltare utilizând pinii A4 (SDA) și A5 (SCL). Componenta Neopixel Jewel va utiliza pinul 9 al plăcii de dezvoltare.

Pentru programarea plăcii de dezvoltare, ca și în cazul Arduino Pro Mini, este necesară utilizarea unui programator FTDI de 5V. Pentru punerea în funcțiune și utilizarea plăcii de dezvoltare A-Star 328PB se recomandă parcurgere documentației oficiale a producătorului.

Programul a fost dezvoltat și testat utilizând Arduino IDE 1.8.5 având instalate extensia Pololu A-Star Boards 4.0.2 și biblioteca FastLED 3.1.6 (pentru controlul componentei Neopixel Jewel).

#include <Wire.h>

#define DS1307_I2C_ADDRESS 0x68

#include „FastLED.h”

#define NUM_LEDS 7

#define DATA_PIN 9

CRGB leds[NUM_LEDS];

În cadrul secțiunii setup() se vor inițializa obiectele de comunicație și control pentru modulul RTC și componenta Neopixel Jewel.

void setup() {

  Wire.begin();

  delay(1000);

  FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);

  delay(1000); }

Secțiunea loop() va implementa comportamentul de orologiu luminos: va citi data furnizată de modulul RTC, dacă este oră fixă (minute<1) se vor aprinde și stinge cele 7 LED-uri de un număr de ori egal cu ora, culoarea LED-urilor va fi roșie, verde, albastră în mod ciclic în funcție de oră. Comportamentul poate fi modificat după propria imaginație mai ales având în vedere faptul că LED-urile utilizate acceptă o paletă variată de culori. Funcțiile bcdToDec și getDateDs1307 sunt utilizate pentru a citi ora din modulul RTC.

void loop() {

   byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

   getDateDs1307(&second, &minute, &hour, &dayOfWeek,&dayOfMonth, &month, &year);

   if (minute<1) {

      for (int j=0; j<hour; j++) {

        for (int i=0; i<NUM_LEDS; i++) {

          int r = hour % 3;

          switch (r) {

          case 0:

              leds[i].setRGB(255,0,0);

          case 1:

              leds[i].setRGB(0,255,0);

          case 2:

              leds[i].setRGB(0,0,255);

          }

          FastLED.show();

          delay(10);

        }

        FastLED.show();

        delay(5000);

        for (int i=0; i<NUM_LEDS; i++) {

            leds[i].setRGB(0,0,0);

            FastLED.show();

            delay(10);

        }

        FastLED.show();

        delay(5000);

      }

   }

   delay(10000);

}

byte bcdToDec(byte val) { return ( (val/16*10) + (val%16) ); }

void getDateDs1307(byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *dayOfMonth, byte *month, byte *year) {

  Wire.beginTransmission(DS1307_I2C_ADDRESS);

  Wire.write(0);

  Wire.endTransmission();

  Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

  *second     = bcdToDec(Wire.read() & 0x7f);

  *minute     = bcdToDec(Wire.read());

  *hour       = bcdToDec(Wire.read() & 0x3f);

  *dayOfWeek  = bcdToDec(Wire.read());

  *dayOfMonth = bcdToDec(Wire.read());

  *month      = bcdToDec(Wire.read());

  *year       = bcdToDec(Wire.read()); }

Pentru a seta data și ora în modulul RTC se poate rula înainte de încărcarea programului principal un program ce setează informațiile în memoria internă a modulului RTC. Acest lucru se face o singură dată, modulul RTC va contoriza trecerea timpului și va păstra data și ora chiar în lipsa alimentării cu energie a sistemului grație bateriei proprii. Programul ce setează modulul RTC este (trebuie trecută dată și ora exactă la care se rulează programul – instrucțiunea setDateDs1307):

#include <Wire.h>

#define DS1307_I2C_ADDRESS 0x68

#include „FastLED.h”

#define NUM_LEDS 7

#define DATA_PIN 9

CRGB leds[NUM_LEDS];

void setup() {

  Wire.begin();

  delay(1000);

  setDateDs1307(0, 59, 19, 3,4, 6, 2018); }

void loop() {

}

byte decToBcd(byte val) { return ((val/10*16) + (val%10)); }

void setDateDs1307(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year) {

      Wire.beginTransmission(DS1307_I2C_ADDRESS);

      Wire.write(byte(0));

      Wire.write(decToBcd(second));

      Wire.write(decToBcd(minute));

      Wire.write(decToBcd(hour));

      Wire.write(decToBcd(dayOfWeek));

      Wire.write(decToBcd(dayOfMonth));

      Wire.write(decToBcd(month));

      Wire.write(decToBcd(year));

      Wire.write(byte(0));

      Wire.endTransmission();     }

Sistemul poate fi pus într-un felinar de grădină (putem utiliza felinarul ca și carcasă pentru sistemul nostru) sau, varianta mai simplă, putem folosi un borcan ermetic ce poate ulterior să fie pictat.

Cum să realizăm un sistem IoT fără să scriem nici o linie de cod?

În ciuda simplității utilizării și programării plăcilor de dezvoltare Arduino există o serie de proiecte ce își propun să ușureze și mai mult programarea acestei familii de plăci de dezvoltare eliminând complet partea de programare specifică mediului Arduino IDE. Aceste proiecte permit utilizarea plăcilor de dezvoltarea Arduino chiar de către copii sau de către persoane fără experiență în programare. Câteva exemple de astfel de proiecte:

1

Scratch for Arduino (S4A) – mediu de programare bazat pe limbajul Scratch

http://s4a.cat/

2

Modkit

http://www.modkit.com/

3.png

miniBloq

http://blog.minibloq.org/

 

Totuși, realizarea unui sistem IoT (Internet of Things) necesită, pe lângă partea de programare a unei plăci de dezvoltare, și programarea comunicației Internet, și dezvoltarea unui serviciu online IoT, și implementarea unei aplicații mobile pentru terminalele inteligente ce ne vor permite interacțiunea cu sistemul IoT. La prima vedere nu este o provocare ușor de depășit pentru o persoană fără o pregătire tehnică serioasă. Rolul acestei lecții este să vă prezinte o nouă generație de medii de dezvoltare orientate IoT ce fac implementarea unui astfel de sistem o joacă de copii J.

 

Pornit ca proiect finanțat prin intermediul platformei Kickstarter, proiectul Blynk este o platformă de dezvoltare care își propune să permită dezvoltarea de aplicații Internet Arduino / Android / iOs în doar 5 minute:

4

Blynk – build an app for your Arduino project in 5 minutes

https://www.kickstarter.com/projects/167134865/blynk-build-an-app-for-your-arduino-project-in-5-m

First drag-n-drop IoT app builder for Arduino, Raspberry Pi, ESP8266, SparkFun boards, and others

http://www.blynk.cc/

Platforma Blynk nu se limitează la familia de plăci de dezvoltare Arduino permițând utilizarea de plăci de dezvoltare variate precum:

  • Raspberry Pi

https://www.robofun.ro/raspberry-pi-si-componente/raspberry-pi-v2

https://www.robofun.ro/raspberry-pi-si-componente/raspberry-pi-v3

  • Particle Photon

https://www.robofun.ro/platforme/photon/particle-photon-with-headers

  • Plăci de dezvoltare bazate pe circuitul ESP8266

https://www.robofun.ro/wireless/wireless-wifi/adafruit-feather-huzzah-with-esp8266-wifi

https://www.robofun.ro/wireless/wireless-wifi/NodeMCUv2-ESP8266

https://www.robofun.ro/wireless/wireless-wifi/esp8266-thing

 

Una dintre cele mai interesante plăci de dezvoltare proiectate de compania Sparkfun special pentru a fi utilizată împreună cu platforma Blynk este Sparkfun Blynk Board:

5

Sparkfun Blynk Board ESP8266

https://www.robofun.ro/wireless/wireless-wifi/blynk-board-esp8266

 

Sparkfun Blynk Board se bazează pe circuitul WiFi programabil ESP8266 și integrează, pe lângă posibilitatea de alimentare de la un acumulator LiPo 3.7V și programarea directă prin USB a circuitului ESP8266, și un senzor de temperatură și umiditate Si7021, un led RGB WS2812, un adaptor pentru plaja 0-3.3V a canalului intern ADC a circuitului ESP8266 plus un sistem de conectare la pinii plăcii de dezvoltare a cablurilor cu cleme crocodil.

 

Placa vine preprogramată astfel încât se pot rula direct 14 exemple de proiect:

https://learn.sparkfun.com/tutorials/blynk-board-project-guide

 

Pentru a exemplifica ușurința de a dezvolta un sistem IoT cu ajutorul platformei Blynk vom utiliza placa de dezvoltarea Sparkfun Blynk Board pentru a implementa un sistem de monitorizare a temperaturii și umității prin Internet direct de pe telefonul mobil – fără a scrie nici o linie de cod bineînțeles – în 5 pași simplii:

 

Pasul 1.

Instalăm aplicația Blynk pe terminalul inteligent Android sau iOs și ne înregistrăm pentru utilizarea aplicației.

6

Instalarea aplicației și înregistrarea este gratuită dar utilizarea aplicației necesită un sistem de credite. Creditele sunt utile pentru construirea aplicației și se consumă pe măsură ce aplicațiile construite sunt din ce în ce mai complexe.

La instalarea aplicație vi se oferă 2000 de credite în mod gratuit iar achiziționarea plăcii de dezvoltare Sparkfun Blynk Board mai oferă 15000 de credite – suficient pentru a realiza orice tip de aplicație mobilă doriți.

Android:

Blynk – Arduino, ESP8266, RPi – Android Apps on Google Play

https://play.google.com/store/apps/details?id=cc.blynk

iOS:

Blynk – IoT for Arduino, Raspberry Pi, Particle, ESP8266, BLE and others

https://itunes.apple.com/us/app/blynk-control-arduino-raspberry/id808760481?ls=1&mt=8

Pasul 2.

Creăm un nou proiect sub aplicația Blynk. Modificăm numele proiectului și modelul hardware. Trebuie notat (sau trimis prin email) AUTH TOKEN pentru a putea crea legătura cu placa de dezvoltare la pasul următor.

7

 

Pasul 3.

Alimentăm placa de dezvoltare Sparkfun Blynk Board și cu ajutorul unui dispozitiv WiFi (laptop, telefon, tabletă) ne conectăm la rețeaua WiFi BlynkMe-XXXX. Deschidem un browser și accesăm adresa 192.168.4.1 . În această pagină configurăm rețeaua WiFi la care se va conecta placa de dezvoltare și introducem AUTH TOKEN ce realizează legătura dintre placă și proiectul mobil.

8

 

Pasul 4.

Ne reîntoarcem la proiectul creat în aplicația mobilă Blynk și adăugăm trei Widget Box-uri în interfața aplicației:

 

  • Un Widget de tip Labeled Value pe care îl vom conecta la pinul virtual V6 (pinii virtuali reprezintă niște mecanisme specifice platformei Blynk ce permit conectarea obiectelor din proiectul mobil de funcții ce rulează pe placa de dezvoltare – în cazul nostru pinul virtual V6 face conexiunea cu funcția ce returnează valoarea temperaturii în grade Celsius citită de la senzorul Si7021);

9

  • Un Widget de tip Labeled Value pe care îl vom conecta la pinul virtual V7 (pin virtual ce face conexiunea cu funcția de citire a umidității);

10

  • Un Widget de tip Hystory Graph pe care îl vom conecta simultan la cei doi pini virtuali V6 și V7.

11

Pasul 5.

Rulăm proiectul creat. Cost total aplicație: 1700 de credite (400+400+900).

12

Proiectul de față a ilustrat într-o manieră rapidă și extrem de simplă crearea unei aplicații mobile conectată prin intermediul Internetului la un dispozitiv de achiziție IoT fără a fi nevoie să scriem nici o linie de cod. Bineînțeles, facilitățile oferite de platforma Blynk sunt mult mai avansate și mai variate, unele dintre funcționalități necesitând scrierea de cod pentru o personalizare mai rafinată a implementării dar și în acest caz sarcina programatorului este mult ușurată de mecanismele specifice platformei.

 

Pentru exemple de proiecte cu un grad mai mare de complexitate se poate vizita pagina Blynk de pe site-ul hackster.io:

https://www.hackster.io/blynk/products/blynk

gsm & 3G shield breadboard tutorial

Pin to pin compatible, compact and light weight modules and having embedded USB ports, c-uGSM and d-u3G shields (micro) are itbrainpower.net latest GSM / 3G-UMTS shields compatible with Arduino, Raspeberry PI, Raspberry PI2 or with any other 2.8-5V micro-controller board. gSPS adapter it is a „plug and run” SWITCHING POWER SUPPLY companion for c-uGSM and d-u3G shields.
Next, I will show to you how to speed up your GSM / 3G projects prototyping.

What you will need

c-uGSM, d-u3G shields and gSPS hardware references

All examples bellow are demonstrated based on c-uGSM and gSPS 4V [DDRV] (used for direct 3G-GSM shield powering in „NO Lithium Polymer” powering schema).
NO breadboard differences for gSPS 5V [LiPOL] usage (used in „WITH Lithium Polymer” powering), but you will need to connect one Lithium Polymer battery to the CSM or 3G shield.
d-u3G differences – will be revealed later.

3G/GSM shields reference can be seen here. gSPS switching power supply reference may be found here.

GSM 3G shield breadboard prototyping

Solder the strait row headers to the boards.  Solder the barrel connector to the gSPS power supply, if needed.

GSM-3G-shield-breadboard-mount-what-u-need

Hint: 2×10 pin headers can be used for all examples provided and for 99.99% of your projects. In this case, in picture up here, start from right for c-uGSM / left for g-SPS (RX)  to the left for c-uGSM / right for g-SPS and stop at the 10’th pin (STS).

 

Insert the power supply and the GSM shield in the breadboard as bellow pictures. SIM must be installed to the GSM shield, first. 😉


GSM-3G-shield-breadboard-mount-2

GSM-3G-shield-breadboard-mount-1

GSM-3G-shield-breadboard-mount-3

Between boards, a gap of minimum 5 rows it is required. Insulation separator (foam, cardboard,..) must be inserted between boards in order to prevent the SHORT CIRCUITS!

WARNING:
BOARDS MAY BEND WHEN INSERTED AND CAN CAUSE A SHORT CIRCUITS!!! TAKE ALL NECESSARY STEPS TO PREVENT THIS HAPPEN! YOU ARE THE ONLY RESPONSIBLE FOR HARDWARE HANDLING, USAGE AND WIRING!!!

3G shield (d-u3G shield) difference: at insertion moment, ALIGN both sides (TX 2 TX and SLP 2 SLP).

READY! Now you may continue to wire your project connecting other boards, starting from the breadboard contacts.

Credits

published by Dragos Iosub & itbrainpower.net team on http://itbrainpower.net/ projects and how to section