Introduction: Domòtica UVic

Prototip per a controlar la llum, temperatura, alarma i multimèdia d'un local comercial:

Material necessari:

- Raspberry pi 3.

- Arduino uno.

- Sensor de temperatura digital DS18B20+.

- Protoboard.

- Dióde Led.

- Cables de connexió (Arduino/Raspberry).

- Resistència de 4,7K i 330 ohms.

Step 1: Configuració De La Raspberry Pi 3

El primer pas a seguir es configurar adequadament la Raspberry, ja que depenent del sistema operatiu i el servidor utilitzat s'haurà de treballar de manera diferent.

1. Configurar la Raspberry amb el sistema operatiu Raspbian. Aquest es podrà trobar en el següent enllaç, el qual també explica la seva configuració: https://www.raspberrypi.org/downloads/raspbian/

2. Instal·lar web server Apache2.

2.1. Comandes:

- Actualitzar raspberry: sudo apt-get update

- Autorització: sudo bash

- Instal·lació web server apache2: apt-get install apache2 apache2-doc apache2-utils

- Instal·lació PHP: apt-get install libapache2-mod-php5 php5 php-pear php5-xcache

- Connectivitat PHP-SQL: apt-get install php5-mysql

- Instal·lació MySql (base de dades): apt-get install mysql-server mysql-client

( en aquest últim pas es demanarà a l'usuari una contrasenya i un nom d'usuari a escollir)

- Resetejar la raspberry.

Step 2: Comprovació De La Configuració Anterior

Si escribint localhost al navegador de la raspberry surt la pàgina mostrada, la instal·lació ha estat correcta.

Step 3: Test MySQL

Per arribar al resultat correcta que és la pantalla superior, s'ha d'entrar la següent comanda a la consola:

- Comanda: sudo mysql -uroot -p

Després d'entrar aquesta comanda et demanarà la contrasenya entrada anteriorment, i finalment et mostrarà una pantalla com la visualitzada a la part superior d'aquest pas.

Step 4: Instal·lar PhpMyAdmin

el phpMyAdmin és un gestor de base de dades el qual fa que el tractament d'aquestes sigui molt més fluid desde llenguatge php.

Les comandes/passos per a instal·lar el phpMyAdmin són les següents:

1- Instal·lació entran la comanda a la consola: sudo apt-get install phpmyadmin.

2- Elecció Web server: Un cop acabada l'instal·lació es demanarà el servidor web per configurar automàticament. En aquest projecte s'ha d'escollir la opció apache2.

3- Establir configuració: Seguidament es demanarà a l'usuari si vol configurar el phpMyAdmin amb la configuració habitual, el qual s'ha de premer la resposta "YES".

4- Triar contrasenyes: Per acabar es demanarà a l'usuari una contrasenya administrativa i una contrasenya d'accés comù les quals són molt importants no oblidar.


Step 5: Combinar Apache2 Amb PhpMyAdmin

El primer pas es editar el fitxer Apache2.config. Per fer-ho s'ha d'entrar a la consola la següent comanda.

1- Obrir el fitxer: sudo nano /etc/apache2/apache2.conf

2- Afegir al final del fitxer el següent text: Include /etc/phpmyadmin/apache.conf

3- Resetejar servidor: sudo /etc/init.d/apache2 restart

4- Comprovació: al navegador de la raspberry posar la IP d'aquesta ex: 192.168.1.35/phpmyadmin

Si al posar aquesta adreça al navegador es mostra una pàgina igual que la de la imatge anterior el procès s'ha realitzat correctament.

Step 6: Crear Bases De Dades Del Sistema

Per a que el sistema pugui funcionar s'ha de crear les taules de la base de dades per a poder guardar les dades que s'utilitzaràn per a controla el sistema.

Creació de la base de dades es pot fer de dos maneres:

1- A partir de python

2- Directament desde phpmyadmin

Taules:

- Alarma ( 2 columnes, contrasenya i estat)

- Temperatura ( 4 columnes, data, hora, localització i temperatura)

- Musica ( 1 columna opcional per guardar el títol del fitxer)

Un cop creades les taules es pot començar a configurar el sistema.

Step 7: Conexió Del Sensor De Temperatura

Cable vermell: 3,3V

Cable negre: Terra

Cable blau: Senyal, GPIO4

Resistència: 4.7k Ohms

Step 8: Configuració Del Sensor De Temperatura

Per a la configuració del sensor s'ha d'obrir la consola i executar vàries comandes:

1- Obrir fitxer: sudo nano /boot/config.txt

2- Afegir al final del fitxer: dtoverlay=w1-gpio

3- Guardar i resetejar la placa

4- Carregar el primer mòdul: sudo modprobe w1-gpio

5- Carregar el segon mòdul: sudo modprobe w1-therm

6- Entrar al directori de dispositius: cd /sys/bus/w1/devices

7- Visualitzar dispositius: ls

8- Executar la comanda següent: cd afegint el número de serie corresponent al sensor com es mostra en la imatge

Finalment desprès d'aquesta comanda es mostrarà la temperatura en graus celsius multiplicada per 1000.

Step 9: Script De Python Per Guardar Temperatura

Primer de tot s'ha de crear un fitxer de pyhton. Un cop creat afegir:

codi:

#!/usr/bin/python // incluir path

import MySQLdb //importacions
import os
import time
import sys

db = MySQLdb.connect("localhost", "root", "gilalex", "temps") // conexió base de dades
curs=db.cursor() //cursor

tfile = open ("/sys/bus/w1/devices/28-000008da1286/w1_slave") //obrir fitxer de temperatura
text = tfile.read() //llegir fitxer
tfile.close() //tancar fitxer
secondline = text.split("\n")[1] //tractar fitxer
temperaturedata = secondline.split(" ")[9] temperature = float(temperaturedata[2:]) //obtenir valor de temperatura
temperature = temperature / 1000 //posar-lo en valor decimal
curs.execute ("""INSERT INTO tempdat (tdate, ttime, zone, temperature)

VALUES(CURRENT_DATE(), NOW(), %s, %s)""", //guardar en la base de dades

('local', temperature ))

db.commit() //guardar taula i tancar conexió

Step 10: Connexió Arduino Uno Per Encendre Un LED

S'ha conectat l'arduino al terra i a una sortida analógica, concretament en el pin9.

- Resistència de 330 ohms (la imatge és de mostra, no té els valors reals).

Un cop fet aixó s'ha de crear el per controlar l'arduino.

Step 11: Codi Per a Controlar Arduino

S'ha afegit al final del codi un cas per quan es vulgui apagar l'arduino. Aquest ha de ser un analogWrite(led,0) si el valor de c és 0.

Un cop enviat el programa a l'arduino ja es pot començar a crear un script de python per controlar-lo desde la raspberry.

Step 12: Controlar Arduino Des De RPI3

Per a realitzar la comunicació amb l'arduino s'ha de donar permisos al sistema:

- Entrar comanda: sudo chmod 777 dev/ttyUSB0

Un cop donats els permisos s'ha de generar uns fitxers python que hem anomentat llum1, llum2, llum3 i apagarllum

El codi d'aquests fitxers és el mateix, peró canviant el valor de la lluminositat per 1,2,3 i 0 respectivament.

codi:

#!/usr/bin/python

import serial import time

arduino = serial.Serial('/dev/ttyUSB0', 9600)

time.sleep(2)

arduino.write('1') // valor de lluminositat

arduino.close()


Un cop fet aixó ja es podria fer funcionar l'arduino desde la raspberry executant els scripts.

Step 13: Reproducció a Través De HDMI

S'utilitza el reproductor pre-instal·lat OMXplayer.

per repoduir una cançó des de la consola s'ha d'entrar la següent comanda:

1- Repdroduir musica/video: omxplayer /home/pi/Desktop/way.mp3 (fitxer que hem descarregat a l'escriptori)

1.1- Parar mp3: killall omxplayer.bin

2- Reproduir imatges: fbi -T 2 /home/pi/Desktop/img.jpg

2.2- parar imatges: killall fbi

3-Video i música desde youtube, instal·lar: sudo pip install –upgrade youtube_dl

4-Configurar omxplayer per youtube: sudo omxplayer `youtube-dl -g -f best (adreça youtube) `

Amb la comanda -g li estem dient que busqui l’adreça web.Amb la comanda -f best li estem dient que executi el millor format de reproducció.

Finalment s'ha de donar permisos per poder utilitzar aquestes comandes des de php: sudo chmod 777 /dev/vchiq

Un cop fet aixó ja ho tenim tot preparat per començar a treballar amb el php de l'interfície.

Step 14: Fer Scripts Executables.

És important que tots els fitxers de python i php que s'executeran des de el php principal siguin executables. Per aconseguir aixó s'ha d'obrir al consola i escriure la següent comanda.

1- comanda: chmod x+ (més path de l'arxiu que es vol fer executable).

Step 15: Interfície D'usuari Final

Per a modificar l'interfície d'usuari s'ha d'entrar a la carpeta /var/www/html i modificar l'arxiu anomenat Index. Si no es pot obrir o modificar el fitxer, s'ha d'entrar la comanda gksudo pcmanfm, i s'obrirà una pestanya nova en la qual l'usuari tindrà tots els drets. Veiem en la imatge com a exemple la nostra interfície final, el codi de la qual es pot trobar en el següent enllaç: https://gialproject.wordpress.com/setmana5-6/.

Step 16: PHP Temperatura

Step 17: Script PHP Per Executar El Fitxer De Python

Per a refrescar la temperatura, com es veu en el pas anterior utilitzem un botó que crida a un altre archiu php. Aquest arxiu està guardat a la mateixa carpeta de l'Index, i el codi és el següent:

codi:

if($_POST['1']) {

$output = shell_exec(escapeshellcmd('python /var/www/html/temperatura.py')); //executa script de python

header("Location:/index.php"); //retorna a la pàgina d'inici

exit;

}

?>

Step 18: PHP Alarma

Per a realitzar aquesta part del programa, s'ha fet com es mostra a la imatge superior diferents passos:

1- S'ha realitzat un formulari amb un input text per retornar el valor de la contrasenya entrada posant al formulari action="index.php?accio=$a" , i method="get". D'aquesta es podrà agafar accio com a variable.

2- S'agafa la variable accio: $a=$_GET['accio'];

3- Es compara amb un valor per defecte i es mostra per pantalla si l'alarma està activada o desactivada.

Step 19: Guardar Valor De Alarma I Estat a La Base De Dades

1- Es realitza la conexió amb la base de dades

2- S'agafa la variable acció: $a=$_GET['accio'];

3- Es compara el valor amb el valor correcta de la contrasenya.

4- Si el valor és correcta l'alarma es desactiva, sino segueix activada.

5- Es guarden les dos columnes de la base de dades.

Step 20: PHP Lluminositat

1- Es creen 4 botons per executar 4 formularis

2- En cada formulari de tipus method="post", s'hi posa una acció: action="llum1.php", action="llum2.php", action="llum3.php",action="apagarllum.php" respectivament en cada botó.

3- Cada script de php que s'executa en cada botó fa que el LED de l'arduino s'encengui de manera diferent.

Step 21: Script De Php Que Executa El Fitxer Python Equivalent Per Enviar a L'arduino La Lluminositat

En cada php que s'ha creat de nou i s'ha guardat en el mateix directori que la pàgina principal, s'hi afegeix la comanda per executar els fitxers python corresponents, també guardats en la mateixa carpeta.

Step 22: PHP Multimédia

Per a realitzar aquesta part s'ha seguit el mateix procediment que en l'apartat anterior. S'han realitzat els botons corresponents i s'han omplert els formularis per executar scripts externs.

Step 23: Script Php Per Reproduir Video/musica

S'ha guardat en el mateix directori que la pàgina principal.

Step 24: Script Php Per Reproduir Imatges

S'ha guardat en el mateix directori que la pàgina principal.

Step 25: Script Per Reproduir Enllaços Youtube

S'ha guardat en el mateix directori que la pàgina principal.

Step 26: Script Per Parar Multimedia

S'ha guardat en el mateix directori que la pàgina principal.

Step 27: Activar Permisos Quan S'engega La Raspberry Pi 3

l'últim pas a seguir és donar els permisos correctament per poder realitzar totes les operacions del sistema que necessitem sense have-ho de fer manualment.

1- Obrir el fitxer: etc/rc.local

2- Afegir permisos al final del fitxer

3- Resetejar la placa

Step 28: Començar a Utilitzar El Control Domòtic

Un cop s'han realitzat tots els passos anteriors, ja es pot començar a treballar amb el control domòtic.