Skip to content

Latest commit

 

History

History
164 lines (114 loc) · 5.57 KB

README-ES.md

File metadata and controls

164 lines (114 loc) · 5.57 KB

RoomPi

Sistema de monitorización ambiental para interiores Proyecto Innovador SDG2 curso 2020-2021

Autores: Victoria M. Gullón y Marcos Gómez

Introducción

RoomPi es un sistema de monitorización de las condiciones ambientales en interiores. Está desarrollado sobre el hardware RaspberryPi 2B.

Imagen del Sistema RoomPi

Sistema

Actualmente el sistema hace uso de los siguientes sensores y actuadores así como otros dispositivos:

  • Sensores
    • DHT11 (temperatura y humedad)
    • BH1750 (luxómetro)
    • CCS811 (CO2 equivalente)
  • Actuadores
    • HD44780 (pantalla de caracteres de dos líneas)
    • SN74HC595 (shift register de 8 bits para tira de LEDs)
    • Buzzer activo
  • Control
    • 3 botones en la parte frontal
  • Adicional
    • Regulador de tensión LM117

Compilación del ejecutable

⚠️ Antes de compilar es necesario tener todas las librerías y dependencias instaladas

El proyecto hace uso de las siguentes librerías:

  • wiringPi
  • pthread
  • rt
  • libcurl

Para compilar es necesario hacerlo con las librerias especificadas, en Raspbian:

gcc src/*.c src/sensors/*.c src/actuators/*. src/libs/*.c src/controllers/*.c -lpthread -lrt -lwiringPi -lcurl -o "roompi-bin"

Para cross compile en Eclipse instalar la toolchain para Raspbian armhf y compilar desde Eclipse.

Subsistema web (Docker)

El subsistema web está compuesto por los siguientes elementos:

Todos estos sistemas funcionan como contenedores y están orquestrados por el servicio Docker.

Para configurar y arrancar los proyectos es necesario tener instalados Docker y docker-compose en el sistema host y editar el archivo .env con el usuario y contraseñas desados para la instancia de Grafana e InfluxDB.

Después, en la raíz del proyecto se debe ejecutar

docker-compose up -d

Para detener todos los servicios se puede ejecutar lo siguiente (añadir -v al comando para también eliminar los volúmenes persistentes que se hubiesen creado)

docker-compose down -d

Los contenedores están configurados para reiniciarse en caso de tener algún fallo e iniciarse automáticamente al arrancar el sistema.

Dependencias

En caso de querer trabajar sobre el código fuente del proyecto se deben tener en cuenta las siguientes dependencias utilizadas:

Compilador C

El compilador C debe compilar para la arquitectura arm32v7 que utiliza el chip BCM2836, para ello se necesitan instalar las siguientes dependencias en Linux

sudo apt-get install -y libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi libncurses5-dev build-essential bison flex libssl-dev gcc-arm-linux-gnueabihf

Librerías para el ejecutable en C

Para instalar las librerías utilizadas en el proyecto es necesario compilar e instalar dichas dependencias. Las librerías necesitan tener git para descargarse.

  • wiringPi
git clone https://github.com/WiringPi/WiringPi
cd WiringPi
./build
  • libcurl
sudo apt-get install -y autotools-dev autoconf libtool
git clone https://github.com/curl/curl
cd curl/
autoreconf -fi
./configure --without-ssl
sudo make install

Librerías para la app web de ajuste con Flask en Python

Para desarrollar sobre la aplicación web personalizada para ajustar los parámetros del sistema se necesita instalar las siguientes dependencias

  • Python 3.8
sudo apt-get install -y checkinstall libreadline-gplv2-dev libncursesw5-dev libssl-dev build-essential
cd /opt
sudo wget https://python.org/ftp/python/3.8.7/Python-3.8.7.tgz
sudo tar xzf Python-3.8.7.tgz
cd Python-3.8.7
sudo ./configure --enable-optimizations
sudo make altinstall # para evitar reemplazar el binario Python del sistema
python3.8 -V

Para el desarrollo web se recomienda el uso de un entorno virtual de Python. El gestor de paquetes de Python pip se instala automáticamente en el entorno virtual. En la carpeta flask-config-roompi del proyecto web:

  • venv
python3.8 -m venv venv
source venv/bin/activate
  • Flask y demás dependencias
pip install -r requirements.txt

La aplicación web utiliza jQuery y Bootstrap para la interfaz de usuario.