electrÓnica & raspberrypi - firteconlinefirteconline.com.ar/python/demo_raspi.pdf · el...

19

Upload: others

Post on 17-Jul-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de
Page 2: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

ELECTRÓNICA & RASPBERRYPIELECTRÓNICA & RASPBERRYPIIndice General de TemasCapitulo I.............................................................................................................................................4Que es Raspberry PI............................................................................................................................4

Que es GNU Linux..........................................................................................................................4Que es Raspbian..............................................................................................................................5Iniciando la placa Raspberry..........................................................................................................6

Raspberry 3 B+ y su Electrónica.........................................................................................................9Python............................................................................................................................................12Programando en Python con Raspberry PI..................................................................................13

Capitulo II..........................................................................................................................................18Pantalla LCD Hitachi 44780.............................................................................................................18Conversión Analógica Digital............................................................................................................22

Conversor A/D MCP3201.............................................................................................................23Protocolo de comunicaciones SPI............................................................................................23Conectando el conversor MCP3201 a Raspberry....................................................................27Conversor MCP3008 y sensor MCP9700................................................................................28Sensor MCP9700......................................................................................................................31

Escritorios remotos............................................................................................................................33Sensor Analógico LM35.....................................................................................................................36Sensor 1-Wire DS18B20.....................................................................................................................37Funcionamiento de la UART..............................................................................................................40

Protocolo RS-232......................................................................................................................41USART en RASPIAN 3..............................................................................................................43

El bus i2c.......................................................................................................................................43Capitulo III.........................................................................................................................................47

Socket UDP....................................................................................................................................47El socket servidor......................................................................................................................47El socket cliente........................................................................................................................50Firewall y bloque de conexiones..............................................................................................52Sensor de Humedad y Temperatura DHT22.............................................................................53

Servidor Web con Raspberry PI....................................................................................................57Que es PHP?.................................................................................................................................60Que es HTML?..............................................................................................................................60

Ejemplos de algunas etiquetas HTML......................................................................................62Manejo de imágenes en código URI64..........................................................................................63

GET( ) y POST( )......................................................................................................................64Manejo de pines desde un servidor web........................................................................................65Base de datos MariaDB................................................................................................................67DS18B20 + Base de Datos + PHP 7............................................................................................69

Estación meteorológica............................................................................................................74Bibliografía........................................................................................................................................81

Electrónica con Raspberry PI Pagina 3 de 81

Page 3: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

Como nos interesa Rasbian solo descargamos este archivo en formato zip que contiene un archivo “img” del sistema operativo Linux-Raspbian.

Para bajar la imagen de Raspbian a la memoria SD simplemente descomprimimos el archivo zip que descargamos y copiamos todos los archivos en la memoria SD.

CUIDADO: Nunca retire o inserte la memoria SD en la placa Raspberry estando esta funcionando.

Si esta trabajando con Linux puedo salvar los datos de la memoria en un archivo IMG escribiendo en la línea de comandos.

sudo dd if=/dev/mmcblk0 of=/home/daniel/raspimagen.img bs=4M

Donde raspimagen.img será el archivo imagen creado, 4M indica que se procesaran paquetes de 4MB para agilizar el proceso. Para recuperar una imagen y escribirla en una memoria SD escribimos.

sudo dd if=/home/usuario/raspimagen.img of=/dev/mmcblk0 bs=4M

Suponiendo claro que hemos dejado la imagen en el directorio home del usuario.

Iniciando la placa Raspberry.

Una vez que tenemos nuestra imagen en la memoria SD la colocamos en la Raspberry junto con un monitor HDMI, un teclado, un mouse y un cable de red en el correspondiente puerto RJ45

Electrónica con Raspberry PI Pagina 6 de 81

Page 4: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

Raspberry 3 B+ y su Electrónica.El corazón de la Raspberry es un chip BCM2837B0 fabricados por la empresa Broadcom.El procesador es un Cortex-A53 (ARMv8) 64-bittrabajando a 1.4GHz, 1GB LPDDR2 SDRAM.Tiene Wi-Fi + Bluetooth: 2.4GHz y 5GHz, Bluetooth4.2, BLE.Un puerto Ethernet sobre USB 2.0 a 300 Mbps.40 pines GPIO mas un puerto HDMI.Estos chips pertenecen a una nueva generación dechips que se los denomina System-On-Chip unatecnología que coloca dentro de un solo chip toda laestructura necesaria para un sistema computacional convencional.Es decir, en un solo circuito integrado toda una computadora!!!No olvide este concepto porque si mira la placa Raspberry notará una serie de pines como los que seaprecian en a siguiente figura.

Muchos de estos pines no son otra cosa que los pines (las patitas) del circuito integrado Broadcom que son publicados en la barra de pines que sale al exterior.Los pines denominados GPIO (General Purpose Input/Output, Entrada/Salida de Propósito General) son lo que se denomina puertos del controlador Broadcom y es en ellos donde vamos a conectar nuestra electrónica de control, un error de conexión destruirá el procesador Broadcom y la placa Raspberry quedará inutilizada. En la siguiente imagen se aprecia como es la numeración en los pines de la placa Raspberry.

Electrónica con Raspberry PI Pagina 9 de 81

Page 5: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

que tengamos disponible.Python ya viene por defecto en el sistema Raspbian de nuestra Raspberry, luego instalaremos algunas cosas mas para el control electrónico que no vienen por defecto.Lo primero será descargar un IDE, un entorno gráfico para escribir nuestros programas. Si bien hay muchos, Spyder es una buena opción.

Para descargarlo simplemente: sudo aptitude install spyder -y

Si al instalar el entorno nos dice que no hay espacio suficiente, podemos eliminar programas de Raspberry que no usemos como los juegos, procesador de texto Writer, etc.Con esto ya tendremos nuestro IDE funcionando, en la parte de programación del menú de Raspberry lo encontraremos.

Programando en Python con Raspberry PI.

En el mundo de los microcontroladores el equivalente al “Hola Mundo” de la programación es lograr encender y apagar un LED en un pin del puerto GPIO.Para esto vamos a escribir un simple programa que cumpla con este objetivo. Usaremos el circuito electrónico de un LED y un transistor comentado anteriormente.

Electrónica con Raspberry PI Pagina 13 de 81

Page 6: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

Para manejar cada dígito independiente podemos usar un transistor como se aprecia en siguiente esquema.Cada vez que implemente un pulsador en sus proyectos utilice el siguiente circuito electrónico para minimizar el efecto del ruido en su entrada digital.

Por ejemplo: GPIO.input(3) para indicar que leemos el estado del pin GPIO_3. Si no coloca este filtro de ruidos eléctricos u otro similar, el estado leído desde el pin del puerto será incierto e impredecible.

Electrónica con Raspberry PI Pagina 17 de 81

Page 7: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

Sample y Hold convierte la señal en una señal que sigue siendo analógica, pero tiene valores sólo eninstantes de tiempo discretos (muestreo y retención ). El ADC convierte la serie de muestras en números (conversor analógico a digital ).

Conversor A/D MCP3201.

Como ejemplo vamos a implementar el conversor analógico digital MCP3201 fabricado por la empresa Microchip.Este conversor tiene una resolución de 12 bits pudiendo generar 4096 números por cada medición.

Puede ser alimentado de 2.7 a 5V por lo que cubre perfectamente el rango de voltajes que nos interesa (3V) para Raspberry.El MCP3201 cuenta con un registro de aproximación sucesiva (SAR) y una interface serial SPI, lo que permite la capacidad de añadir un ADC de 12bits a cualquier Microcontrolador que implementeel protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de tomar 100k muestras/segundos, posee un canal de entrada, muy bajo consumo de energía (5nA en standby, 400uA máximo en estado activo) y esta disponible en encapsulado de 8 pines PDIP, SOIC y TSSOP.Algunas de las aplicaciones donde puede incluirse el MCP3201 son adquisición de datos, instrumentos de medición, procesadores de datos, mediciones industriales, control de motores, robótica, automatismos industriales, pequeños sensores para instrumentación portátil y aplicaciones de medicina.

Protocolo de comunicaciones SPI.

El SPI es un protocolo de comunicación sincrónica de 4 cables. Desarrollado por Motorola en 1982y con gran aceptación en la industria como sistema de comunicación de muy corta distancia,

Electrónica con Raspberry PI Pagina 23 de 81

Page 8: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

El byte cero no tiene información de utilidad, el byte uno contiene los dos bits mas significativos del dato y el byte dos los ocho bits de la parte baja del dato. Recuerde el conversor es de 10 bits.Aquí ((adc [1] & 3) << 8) se toma el elemento 1 del la cadena de tres bytes contenida en adc[] y se aplica una máscara and con el número 3 para cortar los dos primeros bits, desplaza 8 lugares a la izquierda para dejar lugar a los ocho bits de la parte baja de la medición + adc[2] que están en el vector dos de la cadena de tres bytes.Para seleccionar dos de los ocho canales posibles podemos usar una función como se ve a continuación.def Canal_Selec(): canal = 0 Se lee en el canal 0 global V1 La variable V1 será global para leerla desde cualquier lugar V1 = Lee_Canal(canal) En V1 se guarda lo que se lee en el canal canal += 1 Se incrementa el canal para medir en el canal 1 global V2 Variable V2 es global, visible desde cualquier parte del programa V2 = Lee_Canal(canal) Lee el dato del conversor y lo amacena en la variable V2

Las variables V1 y V2 son las encargadas de recibir el datode los canales, podríamos leer desde el cana 0 al 7 sinembargo solo nos interesan los canales de 0 y 1.Los canalesse encuentran ordenados desde el pin 1 al 8, el pin 16 y 15 seconectan a +3.3 V. El pin 9 y 14 se conectan a masa (GND),los pines de comunicaciones SPI se conectan de la siguienteforma.

CLK GPIO 11Din GPIO 10Dout GPIO 9CS/SHDN GPIO 8

Suponiendo que estamos usando Raspberry PI mdelo B+, si tenemos otro modelo solo debemos buscar los pines equivalentes.

Electrónica con Raspberry PI Pagina 30 de 81

Page 9: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

sudo apt-get updatey, a continuación, lanzamos la instalación del servidor de escritorios virtuales.

sudo apt-get install xrdpUna vez instalado podemos conectarnos con cualquier cliente para escritorios remotos.El imagen siguiente se aprecia una computadora con GNU Linux Debian corriendo el cliente de escritorios remotos para KDE denominado KRDC.

Observe podemos ver el mismo escritorio que vemos en el monitor conectado a Raspberry y ejecutar los mismos programas tal cual como si estuviéramos trabajando físicamente sobre nuestra placa Raspberry. Todo esto lo podemos hacer a través de nuestra red Wi-Fi sin necesidad incluso que la placa Raspberri se encuentra físicamente en el mismo lugar donde estamos trabajando.Desde el sistema Windows es lo mismo con la facilidad agregada que Windows ya trae un cliente para escritorios virtuales por defecto solo debemos llamar a la aplicación y colocar la dir IP de nuestra placa Raspberry, podemos averiguarlo ejecutando.sudo ifconfig -aPonemos el usuario (por defecto pi) y la clave que hayamos definido para nuestra Raspberry.

Una vez cumplido estos pasos podemos conectarnos a nuestra Raspberry por la red Wi-Fi.

Electrónica con Raspberry PI Pagina 34 de 81

Page 10: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

ejemplo.

En Linux todo es un archivo, y como se comento, cada sensor tendrá un archivo asociado por mediodel cual el sistema accede al hardware del sensor. Es por esto que nuestro programa tendrá que acceder a este archivo para conectar con el sensor. Recuerde estos sensores no son simples sensores analógicos como los visto anteriormente, estos sensores ya son pequeñas unidades microcontroladas(como mini-computadoras dedicadas a medir temperaturas) es por esto que son mas complejos de operar pero muy eficientes y prácticos para implementarlos en nuestros proyectos. El código para hacerlo funcionar es el siguiente:

#! /usr/bin/python# -*- coding: utf-8 -*-import RPi.GPIO as GPIOimport timeimport LCDLIB as LCDGPIO.setmode(GPIO.BCM)LCD.lcd_init()LCD.lcd_string(" DS18B20 & PI",LCD.LINE_1)import osimport globimport timeos.system('modprobe w1-gpio')os.system('modprobe w1-therm')

def read_temp_raw(): f = open("/sys/bus/w1/devices/28-000003bbd16c/w1_slave", 'r') lines = f.readlines() f.close() return lines

Electrónica con Raspberry PI Pagina 39 de 81

ID del sensor conectado

Page 11: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

Es de remarcar que siempre que un puerto ha sido abierto, sin importar cual, se debe cerrar al salir del programa. Esto es porque el hardware se hace virtual en memoria, se maneja como si fuera un archivo, recuerde en Linux todo es un archivo, y debemos estar seguros que al salir este se cerró de lo contrario pueden ocurrir eventos no predecibles como por ejemplo que es sistema siga considerando que el puerto está en uso cuando ya salimos de la aplicación.

USART en RASPIAN 3.

Este es uno de los puntos “cuestionables” de este modelo de Raspberry respecto a los anteriores, las configuraciones para la UART ya no funcionan en este modelo debido a que el Bluetooth hace uso de los recursos de la UART0 teniendo entonces que usar la UART1, lo que en si no presenta problemas pero lo que si es un problema, es que solo la UART0 tiene un reloj propio para ajustar los tiempos de cada bit en las tramas de comunicaciones. La UART1 toma el reloj del propio reloj de sistema lo que entorpece grandemente las comunicaciones ya que los tiempos de los bits se ven afectados por la carga de CPU en ese momento, la solución es bajar el reloj (degradar el funcionamiento general del modelo 3 bajando su velocidad para que los tiempos sean mas largos) o anular el Bluetooth para recuperar los recursos de la UART0, en lo personal ambas opciones no me parecen acertadas puesto que entonces no tiene sentido tener un modelo 3 si lo uso como un modelo2. Imagino que las versiones futuras corregirán esta incomoda situación. Una solución elegante seria utilizar Bluetooth para las comunicaciones seriales a través del protocolo RFCOMM que vinculará mediante un nodo virtual el Bluetooth y la UART creando un UART0 virtual sobre el Bluetooth físico.

El bus i2c.

Este protocolo de comunicaciones es muy usado en electrónica, desarrollado por Philips hace ya varios años que está presente en casi todos los dispositivos de uso cotidiano (tv, radio, equipos de musica, coputadoras, etc).Raspberry tiene dos pines dedicados a este protocolo llamados SDA (GPIO_8) y SCL (GPIO_9).Para disponer del protocolo con libertad necesitamos realizar algunos cambios en nuestra placa Raspberry, primero instalamos algunas herramientas necesarias.

sudo apt-get install python-smbus sudo apt-get install i2c-tools

Luego editamos el archivo modules y agregamos las líneas como se ve en la siguiente imagen.sudo nano /etc/modules

Electrónica con Raspberry PI Pagina 43 de 81

Page 12: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

Donde el ID 68 corresponde al DS1307 y el ID 50 a la memoria AT24CP.

Con esto tenemos la seguridad de que al menos a nivel electrónico nuestro hardware periférico está siendo reconocido.Es importante a la hora de usar el i2c asegurarnos que en nuestro sistema no existe el archivo raspi-blacklist.conf, el archivo se encontraría en la ruta /etc/modprobe.d/raspi-blacklist.conf y debemos editarlo y realizar los siguientes cambios.

sudo nano /etc/modprobe.d/raspi-blacklist.confUbicar la línea donde se lee blacklist i2c-bcm2708 y comentarla quedando de esta forma #blacklist i2c-bcm2708 salvamos el archivo, reiniciamos y estamos en condiciones de verificar el funcionamiento de nuestro reloj por hardware.Ejecutamos en consola.

sudo bash

Y escribimos lo siguiente.echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device

Cambiando el 1 por el 0 dependiendo de la versión de placa que tengamos.echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device

Básicamente esto le dice al sistema Linux que hay disponible un reloj por hardware y pasa consultarlo escribimos.

sudo hwclock -r

Lo que nos devuelve la hora y fecha que contiene el DS1307, podemos configurarlo con la hora Linux de nuestro sistema escribiendo el siguiente comando.

sudo hwclock -w

Con esto el reloj del sistema, el que se recoge de la red Internet ha configurado el DS1307, si volvemos a leerlo veremos que ambos calendarios coinciden y si hemos colocado una pila al reloj por hardware este mantendrá la hora igual como lo hace el reloj de una computadora PC.Si quisiera que este reloj de hardware fuera el reloj del sistema habría que reformar ligeramente los archivos de configuración.

Electrónica con Raspberry PI Pagina 46 de 81

Page 13: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

except: IP = '127.0.0.1' finally: s.close() return IP

La función completa de recepción que se comentara en la pagina anterior es la encargada de entregar los datos.def update_label(): try: data = sock.recv(1024) Se reciben 1024 bytes. except socket.error, e: err = e.args[0] if err == errno.EAGAIN or err == errno.EWOULDBLOCK:

ventana.after(1, update_label) else: label.config(text = data) Si hay datos son mostrados en el Label ventana.after(1, update_label)

El código completo del servidor lo encontrara entre los archivos del presente trabajo.

Este es el resultado de ejecutar el programa servidor, la temperatura de los cuatro sensores es recibida mediante el socket y desplegada en la ventana del programa.

Electrónica con Raspberry PI Pagina 49 de 81

Page 14: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

sock.sendto("% .1f % .1f % .1f % .1f " % (V1, V2, V3, V4), (UDP_IP, UDP_PORT))

La función sendto() es la encargada del envío. Esta función utiliza el dato referido a la dirección IP y el puerto (UDP_IP, UDP_PORT), también le da formato al paquete enviado y esto no es de menorimportancia!!!!En la red solo podemos enviar caracteres, cuando trabajamos con binarios o venimos de la programación en bajo nivel o incluso C, organizamos los datos en binarios y hexadecimales pero TCP-IP es otro cosa. Y es muy bueno que así sea, esto resuelve por ejemplo el problema entre los sistemas que trabajan en Little-Endian o Big-Endian, acá son solo caracteres y siempre son entendidos de la misma forma sin importar el sistema o arquitectura en uso. Por esto en la primera parte de la función:

Se pueden ver los caracteres de formato % .1f que hace referencia a la variable V1, V2, V3 y V4 indicando que es un formato float (f) con solo un decimal (.1). observe que hay un espacio entre cada % .1f, este espacio será agregado en la trama separando los campos de datos, o cualquier cosa que escriba ahí será agregada a la trama y puede ser usado para delimitar campos de datos cuando sean recibidos en el servidor. La presentación final en pantalla es como se aprecia en la foto.

La separación que aparece entre cada dato mostrado en pantalla es la que incluyo en los caracteres de formato al ensamblar el socket. Podríamos haber enviado 1024 bytes intercalando alguna marca definiendo campos de bytes que en el servidor podemos detectar para cortar estos bytes y mostrarlos en los lugares indicados de nuestrainterfaz gráfica. De esta forma podemos tener distintos sensores midiendo distintas variables o procesos y empaquetar estos datos separándolos con marcadores para interpretarlos correctamente en el servidor. Todo esto es válido para movernos dentro de la red interna, si queremos movernos enInternet con los datos de nuestra electrónica, esto ya implica que nuestro proveedor de Internet nos ha asignado una IP pública fija y en ese caso podemos acceder con la dirección mas el puerto, algo como esto:

http://direccionIPpública:puerto (ejemplo: http://83.5.123.48:8080)

Suponiendo que nuestro router está correctamente configurado para administrar esta información de contacto.

El código completo del cliente lo encontrara entre los archivos del presente trabajo.

No olvidar los filtros colocados en cada uno de los sensores!!!

Puede ver en esta imagen los cuatro sensores colocados en el protoboard con sus respectivos filtros.

Electrónica con Raspberry PI Pagina 51 de 81

Page 15: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

"""Cancel the DHT22 sensor.""" self.pi.set_watchdog(self.gpio, 0) if self.cb != None: self.cb.cancel() self.cb = None

if __name__ == "__main__":

import time import pigpio import DHT22 # Intervals of about 2 seconds or less will eventually hang the DHT22. INTERVAL=3 pi = pigpio.pi() s = DHT22.sensor(pi, 17, LED=16, power=None) r = 0 next_reading = time.time() while True: r += 1 s.trigger() time.sleep(0.2) print("{} {}".format(s.humidity(), s.temperature())) next_reading += INTERVAL time.sleep(next_reading-time.time()) # Overall INTERVAL second polling. s.cancel() pi.stop()

Servidor Web con Raspberry PI.

Si alguna vez ha trabajado desarrollando unaaplicación web, seguro que que ha escuchado deprogramas gratuitos como LAMP, acrónimo deLinux Apache MySQL y PHP, es decir que alinstalarlo en una computadora con Linux sepueden ejecutar páginas web HTML dinámicas yaque el mismo instala todo lo necesario para esto ylos distintos programas forman la infraestructura en el servidor, que hace posible la creación y el alojamiento de páginas web dinámicas.

Los componentes individuales se acumulan unos sobre otros y es por esto que esta plataforma recibe el nombre de LAMP stack (del inglés “apilar”). Su funcionamiento es muy simple. Linux sirve como sistema operativo base para ejecutar el servidor web Apache. Este último no puede interpretar contenidos dinámicos, pero es aquí donde PHP entra a ejercer sus funciones de programación del lado del servidor.El proceso funciona entonces de la siguiente manera.Apache le envía un código fuente al intérprete PHP, incluyendo la información correspondiente sobre las acciones del visitante de la web, y permite el acceso a la base de datos MySQL.

El resultado es devuelto a Apache y este se muestra finalmente en el navegador web del visitante.Como es lógico también tenemos otras versiones para Windows, en este caso WAMP e incluso XAMP para otros sistemas operativos.Lo primero será instalar Apache que será el servidor web, desde la consola escribimos.

sudo apt install apache2

Luego debemos agregar el usuario pi al grupo www-data que es por defecto propietario de

Electrónica con Raspberry PI Pagina 57 de 81

Page 16: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

Esto será indicativo de que tanto el servidor Apache como PHP son completamente funcionales en nuestra Raspberry PI.

Que es PHP?

Una definición muy acotada sería que es un lenguaje de scripts de alto nivel interpretado y ejecutado por un servidor. PHP tiene una sintaxis muy similar a C.

PHP se ejecuta en un sevidor, el interprete PHP se encuentra en el servidor, este lee los comandos contenidos en el “archivo.php” y los interpreta.

Recordar:• Para usar PHP se necesita de un servidor por ejemplo Apache.• En el servidor debe estar cargado el interprete PHP.

Que es HTML?

Siglas en inglés de HyperText Markup Language (lenguaje de marcas de hipertexto). Un lenguaje de marcado es una forma de codificar un documento que, junto con el texto, incorpora etiquetas o marcas que contienen información adicional acerca de la estructura del texto o como será la apariencia de una pagina web.Una página web es básicamente una hoja de texto, que en el propio texto tiene unas marcas (tag), como si fueran comandos que le dicen al navegador como tiene que mostrar la página web.

Electrónica con Raspberry PI Pagina 60 de 81

Page 17: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

LED), observe que se puede ver el comando y el origen del comando.

POST es útil para actualizar bases de datos en un servidor ya que los datos enviados no son mostrados y todo el intercambio de datos es transparente en el navegador.

Manejo de pines desde un servidor web.

Para tener acceso a los pines de Raspberry será necesario cargar una biblioteca, para esto desde la consola seguimos los siguientes pasos.

1. sudo apt-get install git-core.2. git clone git://git.drogon.net/wiringPi.3. cd wiringP./build.

Teniendo instalada la biblioteca wiringPi vamos a crear una simple página web que cambie de estado un pin de la placa Raspberry.Esta página web llevara la extensión php y se guarda en la carpeta www/html controlada por el servidor Apache.Para acceder al hardware de Raspberry necesitamos de un código que nos sirva de puente o interprete para realizar la acción en la electrónica.Es aquí donde aparece php que será la conexión entre el código html y el comando electrónico.HTML genera la página, los botones, colores, texto, html arma la página con la gráfica que se ha definido y embebido en su código está php que es el encargado de realizar la acción en el hardware.

Para acceder a esta página solo escribimos en el navegador la IP de Raspberry seguido del nombre de la página web, en nuestra red quedaría algo como esto: 192.168.1.101/index.phph observe lasiguiente imagen.

El código para la página web es bastante simple, encontramos la linea que define el idioma español

Electrónica con Raspberry PI Pagina 65 de 81

Page 18: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

conectado al GPIO_4 de Raspberry lee la temperatura y y mediante un código Python guarda el dato en una base de datos.

DS18B20 + Base de Datos + PHP 7.

En la siguiente imagen se aprecia como se encuentra conectado el sensor de temperatura en la placa Raspberry.

Para la lectura del sensor usaremos un código Python que también tendrá la tarea de acceder a la base de datos para salvar los datos del sensor. Observe la siguiente imagen.

La base de datos se llama DS18B20 y contiene solo dos columnas, en una colocamos el valor de temperatura y en la otra la fecha y hora en que se tomo la muestra.En nuestro código Python hay una línea que establece la conexión con la base de datos, se envía el usuario, la clave de acceso y el nombre de la base de datos a la que nos conectamos.db = mariadb.connect(host = "localhost", user = "xx", passwd = "xx", db = "xx")

Electrónica con Raspberry PI Pagina 69 de 81

Page 19: ELECTRÓNICA & RASPBERRYPI - FirtecOnlinefirteconline.com.ar/Python/demo_raspi.pdf · el protocolo de comunicaciones SPI. Algunas características del MCP3201 son la capacidad de

try: cur.execute("""INSERT INTO sensor(Temperatura) VALUES

('%s')""" % (valT)) db.commit()except:

db.rollback()time.sleep(5)

cur.close()db.close()

A medida que los datos se agregan a la base de datos podemos verlos haciendo click en la única tabla que tiene la bae de datos.

Sin embargo lo interesante es poder acceder a estos datos desde cualquier lugar, para esto vamos a generar una página web con código PHP que hará la consulta a la base de datos y mostrará la información en una simple página web.Recuerde que para poder acceder a la página desde la red esta debe estar colocada donde el servidorpueda tener acceso y esto es en la carpeta www adentro de html.

La página tendrá la extensión PHP esto le dice al servidor que debe llamar al interprete PHP para

Electrónica con Raspberry PI Pagina 71 de 81