Mostrando entradas con la etiqueta raspbian. Mostrar todas las entradas
Mostrando entradas con la etiqueta raspbian. Mostrar todas las entradas

lunes, 11 de febrero de 2019

0

Proyecto: Conexión a Internet

Una vez preparada la Raspberry y conectado el circuito para la medida de temperatura, es necesario crear el código que realice las mediciones. El objetivo del código que se va a desarrollar va a ser leer datos del sensor y subirlos a una plataforma IoT. En este caso se ha decidido que sea ThingSpeak. Además de ello también se han de cumplir los siguientes requerimientos:
  • Creación automática del canal sin intervención del usuario.
  • Muestreo cada 10 segundos.
  • Subir los datos desde la red eduroam de la facultad.
Se va a comenzar explicando como realizar la conexión a internet. Si esta parte no te interesa, puedes saltar directamente a la entrada del código de Python. O si solo te interesa el código de conexión al wifi, puedes ir al repositorio de GitHub.

Conexión a Internet
En caso de haber instalado Raspbian con interfaz gráfica, la conexión se realiza de forma similar a la de cualquier ordenador. Trabajando desde el propio Raspbian, basta con ir a la sección de redes e introducir las credenciales que se soliciten. La dificultad viene cuando se trabaja en línea de comandos. Se va a explicar cómo realizar la conexión usando como supuesto este último caso.

El primer paso va a ser editar el archivo interfaces. Para ello se ha de usar el comando sudo nano /etc/network/interfaces. Este archivo, dependiendo de la versión de Raspbian que se tenga instalado, puede tener dos aspectos.

En el caso de tener un aspecto parecido al que aparece a continuación, significa que se tiene una versión nueva de Raspbian, y no hace falta tocarlo. Hay que dejarlo tal cual viene.

#interfaces(5) file used by ifup(8) and ifdown(8)
#Please note that this file is written to be used with dhcpcd
#For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
#Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

Otra opción es que tenga un aspecto parecido a:

auto lo
iface lo inet loopback
iface eth0 inet manual
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

En caso de que el código tenga ese aspecto, va a ser necesario editar este archivo antes de pasar al siguiente paso. El archivo debe dejarse de la siguiente manera:


La línea iface id_str inet dhcp permite añadir más redes, con lo que basta con añadir tantas líneas al código como redes se tengan configuradas en el archivo .config. Por otro lado, id_str deberá sustituirse por el valor que se le haya dado al mismo en el archivo .config.

Si se ha abierto por la consola de comando haciendo uso de sudo, tal y como se indica arriba, para editarlo bastará con seguir las instrucciones que aparecen en la propia consola. Esto es muy importante ya que, si se abre desde el navegador como usuario pi, no se tienen permisos de edición y se denegará la acción.

Editado o no el archivo interfaces (en función de la necesidad), se puede pasar a la edición del archivo .config, necesario en todos los casos. Esto se realizará usando el comando sudo nano /etc/wpa_supplicant/wpa_supplicant.conf Versiones anteriores de Raspbian permiten un archivo .config más simple, pero aquí se va a indicar cómo debe ser el código completo, para que así función en todas las versiones.


Aquí se muestra la configuración más básica, para la red eduroam (requerimiento del proyecto) y un ejemplo de cómo conectarse a la red de casa. Los parámetros que hay que editar son:
  • ssid: habrá que poner la de la red a la que se quiere conectar, debe ir entre comillas.
  • identity: hay que indicar el usuario, entre comillas.
  • password: es la contraseña, también entre comillas.
  • id_str: el nombre que le vas a poner a la red para llamarla desde el archivo interfaces (esta línea se puede omitir si no has tenido que editar interfaces).
  • psk: contraseña de la red doméstica. Entre comillas.
  • Country: iniciales del país de la configuración de Raspbian.

Tras esto, la Raspberry debería ser capaz de conectarse ella sola a internet en cuanto detecte alguna red que coincida con las configuradas en .config. Finalmente, si la Raspberry de repente es incapaz de ver redes, es posible que sea porque:
  • Has editado el archivo interfaces cuando no era necesario.
  • Hayas incluido la línea id_str="nombre" en el archivo .config cuando no era necesario.
Con la conexión realizada, el siguiente paso será la programación.
0

Proyecto: Preparación de Raspberry Pi y montaje del circuito

En esta primera parte del proyecto se va a realizar el montaje de la Raspberry al sensor de temperatura y humedad. Las herramientas necesarias serán:
  • Raspberry PI
  • Tarjeta SD
  • Sensor de temperatura y humedad DHT11/DHT22
  • Cable HDMI (con adaptador VGA si fuera necesario)
  • Pantalla
  • Teclado con USB
  • Ratón con USB

La Raspberry PI
El primer paso es entender que una Raspberry no es un Arduino: no basta con compilar un programa y cargarlo. Raspberry es un ordenador de placa reducida, y tiene un sistema operativo llamado Raspbian.

Por defecto Raspbian puede venir sin instalar, por lo que es tarea del usuario el instalarlo. La forma más fácil de hacerlo es mediante NOOBS. Para ello será necesario una tarjeta SD de al menos 8Gb (en caso de instalar el SO sin interfaz gráfica podría ser suficiente con 4Gb).

Raspbian se puede descargar desde la página oficial de Raspberry. Una vez realizado esto, habría que cargarlo en la SD. Para ello basta con copiar el contenido de la carpeta NOOBs al completo. Si la SD tenía información o un Raspbian anterior, convendrá formatearla. Recuerda realizar una copia de seguridad de cualquier archivo que desees conservar.

Una vez cargado, se introduce la SD en la ranura destinado a ello en la Raspberry. Para finalizar la instalación será necesario trabajar desde la propia Raspberry. Para ello, conecta el teclado, el ratón y la pantalla. Finalmente, conecta la alimentación.


Raspbian se iniciará y ofrecerá una lista de posibles programas a instalar. Basta con elegir Raspbian y darle aceptar en la advertencia que saldrá. La instalación llevará un tiempo en el que estará la Raspberry trabajando sola.


Con esto ya estaría configurada, pero si aún te queda alguna duda, siempre puedes consultar la página oficial.

Los sensores DHT11/DHT22


Se tratan de unos sensores que miden tanto humedad como temperatura. Ambos sensores vienen en los mismos formatos, funcionan igual y hacen uso de las mismas librerías. Sus diferencias radican en características como exactitud o rango de medida. En lo que respecta a este proyecto, se ha usado el DHT11, pero ambos son válidos.

Tabla extraída de aquí

En este proyecto se va a trabajar con Python 2.7, por lo que habrá que descargar la librería correspondiente que permite trabajar con estos sensores. Se trata de Adafruit_Python_DHT. La forma más fácil de instalar esta librería es mediante el comando sudo pip install Adafruit_DHT. En caso de no reconocerse el comando pip, habrá que instalar pip mediante sudo apt-get install pip y volver a intentarlo.

Una vez instalada la librería, hay que saber cómo conectar el sensor, para lo cual hay que distinguir qué tipo de montaje se tiene: 4 patas sin resistencia pull-up o 3 patas con resistencia pull-up. En caso de tener de 4 patas, será necesario poner la resistencia de pull up de 10k entre el pin de VCC y la salida. Para este proyecto se ha usado la opción de 3 patas con la resistencia pull-up incluída.

Imagen obtenida de aquí

Por supuesto, puede ser que en tu sensor las patas no vengan en este orden. Recuerda siempre revisarlo antes de conectar, y conectarlo siempre en frio, es decir, con la Raspberry sin alimentación.

Es importante saber a qué pata se ha conectado el Pin de Signal/Data, ya que será el que luego se lea desde el programa para obtener los datos. Para ello puede ser útil tener presente la numeración de los mismos.

Imagen obtenida de aquí

Finalmente solo quedaría la conexión del sensor a la Raspberry y ya estaría el circuito montado con las librarías descargadas. Ya se tiene todo listo para funcionar. A continuación, basta con hacer el código, explicado en la siguiente entrada. Por si aún te queda alguna duda, tienes una imagen de cómo seria el circuito a continuación. Además, si sigues teniendo dudas y problemas, puedes consultar el datahseet de estos sensores tanto online como descargándolos en pdf. Son muy buenos e incluyen ejemplos de código y montajes.

Imagen obtenida de aquí
Si quieres saber cómo configurar la conexión a Internet de Raspberry puedes ir aquí. Si en cambio prefieres pasar directamente a la programación, mejor ve aquí.
ir arriba