Introduction: Iot Modbot

La Raspberry Pi ha estat la llavor de tota una “revolució”, i encara que originalment aquest mini ordinador va ser concebut com una solució orientada a entorns educatius, les seves possibilitats i prestacions aviat han aconseguit convertir-les en base de tot tipus de projectes, cada vegada més original.

Encara que hi ha literalment centenars d’idees que tot tipus de creadors han aconseguit fer realitat gràcies a aquests dispositius, nosaltres us presentarem la nostra idea i com fer-la realitat.

Podras veure pas a pas un projecte molt interessant de dos alumnes de la Universitat de Vic.

En el nostre projecte, treballarem amb dos plataformes diferents (Arduino i Raspberry) que comuniquen entre elles via Bluetooth. L’objectiu principal és poder governar el robot des de qualsevol lloc i a qualsevol hora a través d’internet i poder veure’n la imatge en temps real.

Step 1: Step 1: Instal·lació Video Streamer

Primer de tot fem update I upgrade per tenir la Raspberry actualitzada:

  • sudo apt-get update
  • sudo apt-get upgrade

Instal·lem la versió dev de libjpeg:

  • sudo apt-get install libjpeg62-turbo-dev

Instal·lem el programa make:

  • sudo apt-get install cmake

Descarguem el mjpg-streamer amb el pluguin raspicam:

Canviem de directori:

  • cd ~/mjpg-streamer/mjpg-streamer-experimental

Compilem:

  • make clean all

Substituim el jpg-streamer antic:

  • sudo rm -rf /opt/mjpg-streamer
  • sudo mv ~/mjpg-streamer/mjpg-streamer-experimental /opt/mjpg-streamer
  • sudo rm -rf ~/mjpg-streamer

Per començar a veure la imatge en directe:

  • LD_LIBRARY_PATH=/opt/mjpg-streamer/ /opt/mjpg-streamer/mjpg_streamer -i “input_raspicam.so -fps 15 -q 50 -x 640 -y 480” -o “output_http.so -p 9000 -w /opt/mjpg-streamer/www” &

La camera tindria que estar funcionant. Per comprobar-ho, ves al seguent enllaç:

Step 2: Step 2: Instal·lació D’Apache, PHP I MySQL Per Al Servidor De La Nostra Raspberry Pi

Comencem amb la instal·lació del software Apache, el component principal per a crear el web server. Executarem la següent comanda via terminal:

  • apt-get install apache2 apache2-doc apache2-utils

Seguidament, instal·larem en PHP:

  • apt-get install libapache2-mod-php5 php5 php-pear php5-xcache

Ara hem d’instal·lar el paquet per la connexió a la base de dades (PHP->SQL):

  • apt-get install php5-mysql

Seguidament, instal·lem el servidor MySQL, el qual emmagatzema totes les dades per al web server de la nostra Raspberry:

  • apt-get install mysql-server mysql-client

Durant aquesta instal·lació, se’ns demanarà una contrasenya per al servidor. Al finalitzar la instal·lació, ja haurem completat la primera part. Reiniciem la Raspberry.

Per comprovar que s’ha instal·lat correctament, escrivim al navegador ‘localhost’ o ‘127.0.0.1’ o la IP de la raspberry ‘xxx.xxx.xxx.xxx’.

Per editar la pàgina web, entrarem al directori ‘/var/www/html’. L’arxiu que s’obra per defecte sempre serà el ‘index.html’.

Step 3: Step 3: Instal·lació Del PhpMyAdmin Per Al Servidor De La Nostre Raspberry Pi

Per instal·lar el phpMyAdmin, executarem la següent comanda a la consola:

  • sudo apt-get install phpmyadmin

Durant la instal·lació, s’ens preguntarà quin servidor web s’utilitzarà. En el nostre cas triarem l’apache2 .

Seguidament, clicarem yes per procedir amb la instal·lació per defecte.

Tot seguit, ens demanarà una contrasenya. Hi escriurem la contrasenya que hem escrit anteriorment al instal·lar el servidor web. Després ens demanarà una contrasenya amb la que accedirem al phpMyAdmin.

Una vegada finalitzada la instal·lació del phpMyAdmin, el combinarem amb l’apache2. Per fer-ho, haurem d’editar el fitxer apache2.conf, entrant la següent comanda a la consola:

  • sudo nano /etc/apache2/apache2.conf

Al final del fitxer, hi afegirem la seguent fila:

  • Include /etc/phpmyadmin/apache.conf

I reiniciarem el servidor utilitzant la següent comanda:

  • sudo /etc/init.d/apache2 restart

Per comprovar que s’ha instal·lat correctament, escrivim al navegador ‘localhost/phpmyadmin’ o ‘127.0.0.1/phpmyadmin’’ o la IP de la raspberry ‘xxx.xxx.xxx.xxx/phpmyadmin’’.

Step 4: Step 4: Obertura De La Nostre Raspberry Pi a Internet Públicament

Per tal de poder accedir a la base de

dades des de qualsevol lloc del món amb connexió a internet, haurem d’obrir els ports del router on està connectada la Raspberry. El port que haurem d’obrir per a poder accedir a la base de dades de la Raspberry és el 80.

Cada router té una metodologia diferent d’obrir ports, però el concepte acaba sent el mateix per a tots: obrir un port per a una IP privada de la nostre xarxa local.

Step 5: Step 5: Crear Base De Dades

Per crear aquesta base de dades, primerament ens vàrem connectar al phpMyAdmin amb el nostre nom d’usuari i la nostra contrasenya.

Un cop dins, cliquem a New i seguidament, ens demana el nom de la base de dades. Nosaltres hi posarem BASEDEDADES. Després farem click a crea.

Ara ja tenim la nostra base de dades anomenada BASEDEDADES creada.

El següent pas és crear una taula. Per fer-ho, clicarem sobre la nostre base de dades (BASEDEDADES) i escriurem el nom de la nova Taula i hi especificarem el número de columnes.

Un cop creada, només faltarà posar nom a les columnes, especificant el tipus de variable que s’hi guardarà i la longitud d’aquesta.

Un cop fem click a Desa, ja tindrem la nostre base de dades creada.

Step 6: Step 6: Phyton Per Llegir Base De Dades

En aquest punt varem buscar les ordres pertinents per poder fer consultes a la nostre Base de Dades.

A continuació veiem el codi amb Python per accedir a la nostre Base de dades anomenada “DataBase”, que es troba a “localhost” amb el nostre nom d’usuari “DB_USERNAME” i el password “DB_PASSWORD”.

L’altre part que haurem de complimentar amb les nostres dades és la part de sql. A sql hi escriurem la consulta que volguem fer a la Base de Dades. En el següent Link hi ha tot d’exemples molt útils per apendre a fer consultes SQL.

https://msdn.microsoft.com/es-es/library/ms187731....

Step 7: Step 7: Web Per Gestionar Las Base De Dades

La gestió de la base de dades es pot fer de varies maneres. Nosaltres hem optat per crear un arxiu php amb el que accedim a la nostra base de dades per inserir noves dades i consultar-les.

Amb el següent codi php, ens connectem a la base de dades anomenada BASEDEDADES, amb l’usuari USUARI i la contrassenya CONTRASSENYA.

$conexio = mysql_connect(“localhost”, “USUARI”,”CONTRASSENYA”);

mysql_select_db(“BASEDEDADES”, $conexio);

A continuació, es mostren les comandes inserir noves dades a la base de dades anterior, dins la taula TAULA, a les columnes COL1, COL2 i COL3, els valors VALOR1, VALOR2 i VALOR3 respectivament.

mysql_query (“INSERT INTO `TAULA` (`COL1`,`COL2`,`COL3`)

VALUES (VALOR1,VALOR2,’VALOR3′);”);

Seguidament, realitzem una consulta SQL, i la mostrem per pantalla.

$query = “SELECT COL1,COL2,COL3 FROM TAULA WHERE COL1 = 1”;

$result = mysql_query($query);

$registre = mysql_fetch_array($result);

echo “
”.$registre[‘Accio’].”


”;

echo “ ”.$registre[‘Moment_Accio’].”;

Finalment, amb la següent comanda, tanquem la connexió amb la Base de Dades.

mysql_close();

Step 8: Step 8: Connexió Bluetooth

El primer que em de fer, és connectar correctament el mòdul Bluetooth de l’Arduino tal i com es veu a la imatge.

A continuació em de activar el Bluetooth de la Raspberry situat a la dreta superior de la pantalla.

Un cop activat el bluetooth de l’Arduino i el de la Raspberry, lo unic que em de fer es enllaçar el Bluetooth de l’Arduino i el Bluetooth de la Raspberry per tal de que puguin comunicar-se entre ells.

Step 9: Step 9: Phyton Per Enviar Per Bluetooth

Les ordres bàsiques per poder comunicar-nos via bluetooth amb un dispositiu són les següents:

Primer de tot hem de fer els includes pertinents:

#! /usr/bin/python

import serial

from time import sleep

A continuació, creem la connexió serial especificant l’esclau i el baudrate:

bluetoothSerial = serial.Serial( “/dev/rfcomm1”, baudrate=9600 )

print “Apunt d’enviar”

Finalment, per enviar via bluetooth, utilitzarem la següent comanda:

bluetoothSerial.write(“3”)

print “enviat”

Step 10: Step 10: Web Final

Per acabar, posarem un exemple final de com pot ser la teva web php per tal de poder crear una web atractiva per a l'usuari. De totes maneres, recomanem que busqueu per internet informació ja que està tot molt ben explicat en moltes webs.

Arduino Contest 2016

Participated in the
Arduino Contest 2016