0% encontró este documento útil (0 votos)
154 vistas18 páginas

Configura Servidor Web en Raspberry Pi

El documento describe los pasos para configurar un servidor web en Raspberry Pi. Incluye instrucciones para instalar Raspbian, configurar la interfaz de red para compartir internet desde una PC a la Raspberry Pi a través de un puerto LAN, y habilitar y configurar el puerto SPI para comunicación con dispositivos externos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
154 vistas18 páginas

Configura Servidor Web en Raspberry Pi

El documento describe los pasos para configurar un servidor web en Raspberry Pi. Incluye instrucciones para instalar Raspbian, configurar la interfaz de red para compartir internet desde una PC a la Raspberry Pi a través de un puerto LAN, y habilitar y configurar el puerto SPI para comunicación con dispositivos externos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

PASOS PARA LA CONFIGURACIÓN DEL SERVIDOR WEB EN RASPBERRY PI

1.- INSTALACIÓN DEL RASPBIAN.-


Raspbian se ha convertido en la distribución Linux más utilizada para los Raspberry Pi, por su
facilidad de uso y su versatilidad. Raspbian es un port de Debian preparado para funcionar sobre
procesadores ARMv6.
Raspbian se instala como muchas otras distribuciones y sistemas operativos para Raspberry,
debemos utilizar un software o programa para cargar un archivo .img en una tarjeta de memoria
SD que después insertaremos en nuestro Raspberry.
1.1.-DESCARGAR RASPBEAN.-
Primero descargamos la última versión de Raspbian desde el sitio web de Raspberry Pi que puedes
encontrar en la siguiente dirección: http://www.raspberrypi.org/downloads
Puedes realizar la descarga por torrent o mediante descarga directa, en ambos casos el archivo
descargado será un .zip que debemos descomprimir para obtener el archivo .img con el que
cargaremos el sistema operativo en la tarjeta SD.
1.2.- CARGAMOS .IMG A LA MEMORIA SD.-
Ahora vamos a cargar el archivo .img con un programa para esto, existen varias aplicaciones para
este fin, aunque en este caso como lo voy a hacer desde Windows voy a utilizar el programa
Win32 Disk Imager que puedes descargar desde
aquí: http://sourceforge.net/projects/win32diskimager/
Después de ejecutarlo la aplicación Win32 Disk Imager debes ver una ventana parecida a esta:

Seleccionamos el archivo .img en “Image File” y la unidad donde está la tarjeta SD en “Device”.
Después pulsa el botón “Write” para comenzar con la carga del sistema en la tarjeta SD. La copia
comenzara, ahora debemos esperar a que termine, en la parte de abajo de la ventana de Win32
Disk Imager nos mostrara la velocidad en MB/s.
1.3.-PRIMERAS CONFIGURACIONES.- Al finalizar retiramos la tarjeta SD del ordenador desde el
que hemos cargado el sistema y la conectamos a nuestro Raspberry Pi, después arrancamos nuestro
dispositivo y esperamos a que termine de cargar.

Si todo ha salido correctamente podremos ver en pantalla una ventana parecida a esta:

Aquí podemos encontrar varias opciones importantes a la hora de realizar la configuración inicial
de nuestro Raspbian en nuestro Raspberry Pi. Voy a explicarlas un poco por encima:
 1. Expand Filesistem: Expande el tamaño de la partición de almacenamiento del sistema
hasta el tamaño total de la tarjeta SD donde está instalado.
 2. Change User Password: Permite cambiar la contraseña por defecto de Raspbian, la
contraseña por defecto para el usuario “pi” es “raspberry”.
 3. Enable Boot to Desktop: Permite habilitar el inicio del escritorio al arrancar el dispositivo.
 4. Internationalistation Options: Permite cambiar las opciones regionales y de idioma de
Raspbian.
 5. Enable Camera: Permite activar la cámara de Raspberry Pi en caso de tenerla
conectada.
 6. Add to Rastrack: Permite añadir tu dispositivo Raspberry al registro de Rasperrys de la
comunidad.
 7. Overclock: Permite configurar el overclock del procesador de nuestro dispositivo
Raspberry Pi. La fundación Raspberry permite realizarle un overclock moderado al
procesador de forma segura sin peligro de quemar el dispositivo.
 8. Advanced Options: Ofrece algunas opciones añadidas a la configuración de nuestro
Raspberry Pi, explico con más detalle más abajo.
 9. About raspi-config: Muesta información acerca del asistente que estas utilizando en este
preciso instante para configurar Raspberry Pi.
La sección de Overclock tiene varios perfiles preconfigurados mediante los cuales podemos subir la
frecuencia de trabajo del procesador, la frecuencia de las memorias y el overvolt. La fundación
Raspberry asegura que podemos hacerlo de forma segura, pero debemos tener en cuenta que
cuanto más forcemos nuestro procesador, iremos acortando la vida de nuestro dispositivo.
Como recomendación personal, si no dispones de un sistema de refrigeración activo para tu
Raspberry, no te molestes en hacer overclock de forma segura.

En la sección “Advanced Options” podemos acceder a la configuración de algunos parámetros


importantes de nuestro Raspberry, que aunque ya vienen configurados por defecto, es posible
cambiarlos:
 A1 Overscan: Permite configurar las bandas superior e inferior de nuestra pantalla para
colocar y calibrar la posición de la imagen.
 A2 Hostname: Permite configurar el nombre del dispositivo Raspberry en la red.
 A3 Memory Split: Raspbery Pi tiene 512 de memoria RAM en su versión más potente, estos
512 de RAM son compartidos con la memoria de video, mediante esta opción puedes partir
cuanta memoria quieres para el sistema y cuanta memoria quieres que tenga el procesador
gráfico para funcionar. Si vas a usar Raspberry como servidor puedes utilizar el mínimo de
memoria de video.
 A4 SSH: Permite activar o desactivar el acceso remoto mediante SSH a tu Raspberry Pi.
 A5 Update: Permite actualizar el asistente raspi-config a la última versión disponible.

Al finalizar la configuración inicial pulsamos sobre “Finish” y por último el sistema arrancara, en caso
de quedarse en modo comando escribe “startx” y presiona Enter para iniciar el entorno gráfico.
Como puedes observar, si todo funcionó correctamente, tu Raspbian instalado debe mostrar un
entorno muy parecido a este:

2.- CONFIGURACIÓN DEL PUERTO LAN.-


Esta configuración tiene el objetivo de manejar el puerto LAN directamente conectado al
RASPBERRY PI sin desconectarse de la red local con internet inalámbrico. Esta configuración permite
compartir datos de internet con el RASPBERRY PI y asi no tener la necesidad de conectarlo al
modem router.
2.1.- CONFIGURACIÓN DE LA PC.-
Paso 1. Es necesario compartir la conexión Wi-Fi o la conexión Ethernet que usted usa para acceder
la red, para esto es necesario activar es uso compartido de Internet entre las dos interfaces
disponibles, haga clic derecho en el icono de red ( o ). Luego haga clic en “Abrir el Centro de
redes y recursos compartidos”.

Paso 2. Identifique y seleccione su conexión primaria a Internet y haga clic sobre el link al frente de
conexiones. Esto abrirá la ventana de “estado de Ethernet”. Haga clic en el botón Propiedades y
seleccione en el tab llamado “Uso compartido” y active la selección “Permitir que los usuarios de
otras redes se conectes a través de la conexión a Internet de este equipo”. Luego en la caja de
selección busque la conexión de red que tiene su RaspPi que debe ser la puerto Ethernet que está
libre, en el caso del ejemplo se llama “Ethernet 2”.
Paso 3. Configure la dirección estática de su PC en el puerto en el que se encuentra conectado el
RasPi. Repita el paso 1, ahora seleccione el puerto donde su RasPi esta conectado, en el caso de
este ejemplo es el puerto “Ethernet 2”. Haga clic en el botón Propiedades, luego en la caja “Esta
selección usa los siguientes elementos” busque la sección “Protocolo de Internet versión 4”, seleccione
este campo y luego clic en propiedades. Para el caso de nuestro ejemplo, se va ha asignar la red
192.168.137.1 a este puerto de conexión, verifique que todo esta de acuerdo a la siguiente
imagen:
2.2.- CONFIGURACIÓ DE IP ESTÁTICA DEL PUERTO LAN DEL RASPBERRY PI.-
Ingrese a la línea de comando de Linux. Una vez allí, ingrese el siguiente comando, el cual abrirá
una ventana de edición para configurar la dirección estática del RasPi:

sudo nano /etc/network/interfaces

Paso 1. Una vez abierto el archivo es necesario modificar en la 3ra columna dhcp por static y
asignar la dirección IP 192.168.137.2 al dispositivo. Para que quede en iguales características que
la configuración hecha en el PC, los valores deben ser de acuerdo a la siguiente imagen.
Una vez haya realizado las modificaciones presione Ctrl+X y luego S y enter para guardar las
modificaciones hechas en el archivo.

Paso 2. Este paso puede no ser necesario, pero sirve para cerciorarse que toda la configuración
está de acuerdo a la configuración deseada. Editar el fichero /etc/resolv.conf y verificar que el
nameserver es la misma dirección IP que el de la maquina Windows (Para nuestro ejemplo el
computador Windows tiene dirección IP 192.168.137.1). Así como se muestra en la siguiente
imagen. Para guardar las modificaciones hechas, guarde los cambios de igual manera que el paso
anterior.

sudo nano /etc/resolv.conf


Paso 3. Reiniciar el Raspberry Pi para que los nuevos cambios hagan efecto. Para esto se ingresa el
siguiente comando:

sudo reboot

3.- CONFIGURAR E INSTALAR CONTROLADOR DE PUERTO SPI.-

PASO 1.- Primero habilitamos el puerto SPI de le la siguiente manera escribiendo el siguiente
comando:

sudo nano /etc/modprobe.d/raspi-blacklist.conf

Luego en la pantalla de configuración le agregamos el carácter ‘#’ en la línea “spi-bcm2708” luego


ctrl+0 para guardar y ctrl+X para salir, finalmente reiniciar el sistema con el siguiente comando:

sudo reboot

Para verificar la efectividad de los cambios realizados corremos el siguiente comando:

Lsmod

En la lista generada debe aparecer spi-bcm2708.

PASO 2.- Seguidamente instalamos los módulos para trabajar con el puerto SPI.

Primero necesitamos instalar ‘python-dev’:

sudo apt-get install python2.7-dev


Luego para finalizar podemos descargar ‘py-spidev’ para trabajar con ADC MPC3208 y
compilamos para que esté listo para ser usado:

mkdir py-spidev
cd py-spidev
wget https://raw.github.com/doceme/py-spidev/master/setup.py
wget https://raw.github.com/doceme/py-spidev/master/spidev_module.c
sudo python setup.py install

Luego de esto el puerto SPI estará lista para ser usado.

Nota: El módulo ‘py-spidev’ se puede crear con un script de python que controle los pines que son
necesarios para trabajar con el puerto SPI en Python.

Como ejemplo de los módulos instalados mostramos el siguiente:

#!/usr/bin/python

import spidev
import time
import os

# Open SPI bus


spi = spidev.SpiDev()
spi.open(0,0)

# Function to read SPI data from MCP3008 chip


# Channel must be an integer 0-7
def ReadChannel(channel):
adc = spi.xfer2([1,(8+channel)<<4,0])
data = ((adc[1]&3) << 8) + adc[2]
return data

# Function to convert data to voltage level,


# rounded to specified number of decimal places.
def ConvertVolts(data,places):
volts = (data * 3.3) / float(1023)
volts = round(volts,places)
return volts

# Function to calculate temperature from


# TMP36 data, rounded to specified
# number of decimal places.
def ConvertTemp(data,places):

# ADC Value
# (approx) Temp Volts
# 0 -50 0.00
# 78 -25 0.25
# 155 0 0.50
# 233 25 0.75
# 310 50 1.00
# 465 100 1.50
# 775 200 2.50
# 1023 280 3.30

temp = ((data * 330)/float(1023))-50


temp = round(temp,places)
return temp

# Define sensor channels


light_channel = 0
temp_channel = 1

# Define delay between readings


delay = 5

while True:

# Read the light sensor data


light_level = ReadChannel(light_channel)
light_volts = ConvertVolts(light_level,2)

# Read the temperature sensor data


temp_level = ReadChannel(temp_channel)
temp_volts = ConvertVolts(temp_level,2)
temp = ConvertTemp(temp_level,2)

# Print out results


print "--------------------------------------------"
print("Light: {} ({}V)".format(light_level,light_volts))
print("Temp : {} ({}V) {} deg C".format(temp_level,temp_volts,temp))

# Wait before repeating loop


time.sleep(delay)

4.-SCRIPT PARA EJECUTAR AUTOMÁTICAMENTE UN CÓDIGO EN PYTHON.-

Para poder ejecutar un código de python necesitamos crear u script python con extensión .sh de la
siguiente manera:

PASO 1.-Creamos creamos un archivo ‘bbt’ y luego un sicrpt LAUNCHER:

mkdir bbt
cd bbt
sudo nano launcher.sh

En el editor escribimos los siguientes comandos:


#!/bin/sh
# launcher.sh
# navigate to home directory, then to this directory, then execute python script, then back
home

cd /
cd home/pi/bbt
sudo python mycodigopython.py
cd /

Para salir de guardamos con CTRL+O y CTRL+X para salir.

PASO 2.- Luego para hacer ejecutable este script editamos el siguiente comando:

chmod 755 launcher.sh

Luego probamos que se esté ejecutando el código con:

sh launcher.sh

Y arrancará nuestro código python.

PASO 3.- Luego agregamos un directorio LOG (Esto es para generar reporte de errores):

Volver al directorio inicial:

cd

Creamos el directorio LOG:

mkdir logs

PASO 4.- Creamos un CONTRATAB (Un CONTRATAB es un proceso de base que ejecuta scripts en
un tiempo determinado) que es muy sencillo de usar. Con el contratab ejecutará el script contenedor
launcher.sh. Para ingresar al modo de configuración entramos con el siguiente comando:

sudo crontab -e

Ya en el modo de configuración añadimos en la última línea lo siguiente:

@reboot sh /home/pi/bbt/launcher.sh >/home/pi/logs/cronlog 2>&1

Este se encargará de ejecutar el código python automáticamente en un tiempo espesífico.

PASO 5.- Finalmente reiniciamos el sistema con:

sudo reboot

espereamos que renicie y veremos que automáticamente se ejecutara nuestro archivo.py


5.-INSTALAR LA LIBRERÍA DE PUERTO SERIAL

Para instalar la librería de puerto serial escribir el siguiente comando en CLI:

sudo apt-get install python-serial

6.- INSTALAR SERVIDOR WEB: APACHE, PHP y MySQL


6.1.- PRIMER PASO.- Actualizar el instalador de aplicativos:

sudo apt-get update

6.2.-SEGUNDO PASO.- Instalar mysql-server y mysql-client:

sudo apt-get install mysql-server mysql-client

6.3.-TERCER PASO.- Acceder a la base de datos:

mysql -u root –p

6.4.-CUARTO PASO.- Instalar PHP

sudo apt-get install php5-mysql

6.5.-QUINTO PASO.- Reiniciar servidor web:

sudo service apache2 restart

6.6.-SEXTO PASO.- Comprobar estado del servidor:

sudo service apache2 status

6.7.- SEPTIMO PASO.- Crear la base de datos.


Ejemplo:
create database fototerapiadb;

use fototerapiadb;

CREATE TABLE sensores


(
sensorid int auto_increment primary key,
fecha varchar(40),
temp1 varchar(20),
temp2 varchar(20),
temp3 varchar(20),
xbee varchar(20)
);

6.8.-OCTAVO PASO.-Creación de los archivo index.html para la visualización de los datos.


Ejemplo:
<html>

<head>
<title>
Mi Página de prueba
</title>

</head>

<body>
<p>
Bienvenido a mi primera <i>página web</i>.
<p>
Espero se sientan a gusto y disfruten su visita.
</body>

</html>

6.9.- NOVENO PASO.- guardar el archivo index.html en /var/tmp mediante un gestionador de


archivos como el WinSCP .

6.10.-DECIMO PASO.- Mover el archivo index.html de /var/tmp a /var/www:

cd /var/tmp
sudo mv * /var/www

Comprobar digitando el host del raspberry: 10.10.34.5

6.11.-CODIGO PYTHON PARA ADQUISIÓN Y ALMACENAMIENTO DE DATOS

#!/usr/bin/env python
import spidev,time,os,serial
import MySQLdb
from datetime import datetime

#ABRIMOS EL BUS SPI


spi=spidev.SpiDev()
spi.open(0,0)

#Abrimos el puerto serial


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

#Funcion para leer datos del bus SPI del ADC MCP3208
#El canal debe ser un entero de 0-7
def ReadChannel(channel):
adc=spi.xfer2([1,(8+channel)<<4,0])
data=((adc[1]&3)<<8)+adc[2]
return data

#Funcion para convertir los datos al niveles de voltaje


def ConvertVolts(data,places):
volts=(data*3.3)/float(1023)
volts=round(volts,places)
return volts

#Funcion para calcular la temperatura en valores


decimales
def ConvertTemp(data,places):
temp=((data*330)/float(1023))-50
temp=round(temp,places)
return temp

#Definimos los canales del sensor


light_channel=0
temp_channel=1
sensor_channel=2
#Definimos un retardo entre lecturas
delay=5

while True:
#Abrimos un archivo para guardar los datos
archivo=open('dat_ADC.csv','a')
sens=ser.readline()
dat=str(sens)

#Leemos la fecha de hoy


fecha=datetime.today()
fecha_string=str(fecha)

#Leemos el sensor de LUZ


light_level=ReadChannel(light_channel)
light_volts=ConvertVolts(light_level,3)
light_string=str(light_volts)

#Leemos el sensor de temperatura


temp_level=ReadChannel(temp_channel)
temp_volts=ConvertVolts(temp_level,3)
temp=ConvertTemp(temp_level,3)
temp_string=str(temp_volts)

#Leemos el sensor
sensor_level=ReadChannel(sensor_channel)
sensor_volts=ConvertVolts(sensor_level,3)
sensor_string=str(sensor_volts)

#Ingresamos a labase de datos


db = MySQLdb.connect("localhost", "root",
"password123", "fototerapiadb")
curs=db.cursor()

#execute an sql query


curs.execute("""INSERT INTO sensores
(fecha,temp1,temp2,temp3,xbee) VALUES (%s,%s,%s,%s,%s)
""",(fecha_string,light_string,temp_string,sensor_string
,dat))
db.commit()

# Cerramos el cursor
curs.close()

# cerramos la conexion
db.close ()
#Guardamos los datos en el archivo
archivo.write(fecha_string + ";" + light_string +
";" + temp_string + ";" + sensor_string + ";" + dat)

#imprimimos en CLI
print"---------------------------------"
print("Luz: {}
({}V)".format(light_level,light_volts))
print("Temp: {} ({}V) {} deg
C".format(temp_level,temp_volts,temp))
print("Sensor: {}
({}V)".format(sensor_level,sensor_volts))
print("serial:" + dat)
print("Fecha:"+ fecha_string)
archivo.close()
#Espera antes de repetir el bucle
time.sleep(delay)

6.12.-CODIGO PHP PARA GENERAR REPORTE DE DATOS

<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-
equiv="content-type">
<title>View Users</title>
<link rel="stylesheet" type="text/css" href="default.css">
</head>
<body>
<div style="text-align: center;"><img
style="width: 125px; height: 12tpx;" alt="Raspberrypi"
src="large_logo_white.png"></div>
<br>

<?php
//Connect to MySQL
mysql_connect('127.0.0.1', 'root', 'password123') or die
(mysql_error());
//Select database
mysql_select_db('fototerapiadb') or die (mysql_error());
$result = mysql_query("SELECT * from sensores");
//Table starting tag and header cells
echo " <table style='width: 75%; text-align: left; margin-left:
auto; margin-right: auto;' border='0' cellpadding='2'
cellspacing='2'><tr><th>Sensor
ID</th><th>Fecha</th><th>Temp1</th><th>Temp2</th></th><th>Temp3</t
h><th>XBee</th></tr>";
while($row = mysql_fetch_array($result)){
//Display the results in different cells
echo "<tr><td>" . $row['sensorid'] . "</td><td>" .
$row['fecha'] . "</td><td>" . $row['temp1'] . "</td><td>" .
$row['temp2'] . "</td><td>" . $row['temp3'] . "</td><td>" .
$row['xbee'] . "</td></tr>";
}
//Table closing tag
echo "</table>";
?>

<br>
<a href="index.html">Volver</a>

</body>
</html>

También podría gustarte