Para el curso on-line “Fundamentos IoT y Desarrollo con Node-RED para Smart Cities”, el material necesario por parte de los Asistentes para realizarlo es:
1 PC o Portátil con conexión a internet
Para seguir el curso on-line es recomendable dos pantallas, una para seguir el vídeo y otra para programar en Node-RED.
El PC de cada asistente deberá tener un sistema operativo instalado, ya sea un sistema Windows, MacOS o Linux. Las licencias del Sistema Operativo y el software que tenga correrán a cargo del cliente/alumno.
Nodo Edge/Gateway. Instalación Node-RED. Recomendable usar Raspberry Pi + tarjeta SD 16Gb + alimentador conectada a Internet por alumno, pero podría usarse una máquina virtual o en un servidor cloud. Opcionalmente puede usarse instancias en la nube de Node-RED desde el servidor de https://www.aprendiendoarduino.com/
Las Raspberry Pis se usarán como instancias de Node-RED y nodos edge a los que se conectan los nodos remotos, por lo que no conectaremos sensores/actuadores/periféricos a las Raspberry Pi.
Nodos remotos por asistente compuesto por el siguiente material:
2x Wemos D1 min o NodeMCU o equivalente
1x shields para wemos D1 mini relé o equivalente
1x shields para wemos D1 mini neopixel o equivalente
1x shields para wemos D1 mini oled o equivalente
1x shields para wemos D1 mini temperatura (puede ser DHT o
Raspberry Pi Zero: Instalada en local con cámara y programada con Node-RED, usada como dispositivo remoto.
Wibeee
Otros dispositivos para interactuar.
Si el alumno tiene algún HW con que quiera interactuar, puede presentarlo y lo integramos en las prácticas. El HW puede estar tanto en el aula como remotamente en su casa, oficina, etc…
Servicios Cloud para el Curso
Se usará un broker común para comunicar todos los dispositivos: mqtts://aprendiendonodered.com:8883
Los alumnos recibirán usuario y contraseña para acceder al broker con permisos de lectura y escritura en smartcities/#
Base de datos MySQL en https://enriquecrespo.com/phpmyadmin/ donde los alumnos podrán usar para almacenar datos. Los alumnos recibirán las credenciales de acceso.
Base de datos InfluxDB en https://enriquecrespo.com:8086/ donde los alumnos podrán usar para almacenar datos. Los alumnos recibirán las credenciales de acceso.
Grafana en https://enriquecrespo.com:3000/ para representar gráficamente los datos. Recibirán por correo las credenciales de acceso.
Otros servicios programados con Node-RED en aprendiendonodered.com: API, Open Data, servidor FTP, gateway servicios de terceros, simulación de datos, etc… y servicios self hosted (gotify, thingsboard, thinger.io, etc…)
Interacción con servicios cloud de terceros como: APIs, Open Data, Cámaras/Imágenes, Plataformas IoT, Redes Sociales, Servicios de Mensajería, Servicios de alertas, email, etc…
Título: “Fundamentos IoT y Desarrollo con Node-RED para Smart Cities”
El curso semipresencial “Fundamentos IoT y Desarrollo con Node-RED para Smart Cities” ha sido diseñado para conocer los fundamentos de IoT en aplicaciones de Smart Cities para capacitar en nuevas tecnologías. Este curso está enfocado en dar a conocer las nuevas tecnologías utilizadas en Smart Cities, con el fin de operar e integrar las plataformas IoT.
Motivación
Gracias a las herramientas libres/Open Source es posible democratizar el IoT y la industria 4.0. Antes se necesitaba muchísimo dinero no solo en HW y licencias de SW, sino en consultores que hacen un diseño a medida y realizan la integración de los sistemas, ahora no solo el SW libre y el HW libre y barato, sino que la comunidad da soporte a las dudas, hace documentación y tutoriales, así como librerías para facilitar el trabajo.
En la industria conectada e IoT, cada vez se está haciendo más popular el uso de Node-RED debido a su estabilidad, continuo desarrollo y aportaciones externas que hacen de ella una herramienta de programación utilizada para conectar dispositivos de hardware, APIs y servicios de internet.
Node-RED es una herramienta de programación (Low Code Programming) que se utiliza para conectar dispositivos de hardware, APIs y servicios de internet. Adecuado para los equipos dedicados al Internet de las cosas ( IoT) y personal dedicado al diseño y prueba de soluciones para la comunicación de equipos de planta con aplicaciones de IT. Dado que la mayoría de dispositivos IoT para industria 4.0 posibilitan realizar un programa de control con la herramienta de Node-Red, el dominio de dicha herramienta permitirá al equipo IoT explorar y ampliar las soluciones que ofrece.
Objetivos
El objetivo de este curso es conocer las tecnologías necesarias para el desarrollar soluciones IoT/Smart Cities y valiéndonos para ello de herramientas, tecnologías, protocolos y software libre/open source que hay a nuestra disposición, en especial el uso de Node-RED, desarrollo e integración con sistemas externos y plataformas enfocadas IoT/Smart Cities
Con los conocimientos adquiridos, los asistentes aprenderán las tecnologías necesarias para hacer aplicaciones IoT/Smart Cities sencillas o integrar desarrollos propios en sistemas ya implantados. Se adquirirán conocimientos en cuanto manejo, montaje y parametrización de redes de comunicación IoT, protocolos IoT y hardware IoT.
Se aprenderá a usar Node-RED, un framework enfocado a IoT para programar, automatizar e integrar plataformas IoT.
Metodología Curso On-Line
El curso se realizará entre el 3 de mayo y el 9 de junio de 2022.
El curso semipresencial consiste en 36 horas de formación, repartidas de la siguiente forma:
10 sesiones on-line en directo de 3 horas cada una los lunes y miércoles de 17:00 a 20:00 entre el 3 de mayo y el 1 de junio de 2022. Se realizará un descanso de 10-15 minutos a la mitad de las sesión.
Una sesión presencial de 6 horas el 9 de junio de 2022 en las instalaciones del cliente, que se organizará a lo largo del curso.
La plataforma en vídeo usada será https://meet.jit.si/aprendiendoarduino y se grabarán todas las sesiones. En casos de problemas con esta plataforma se podrá usar Google Meet.
Los recursos utilizados para la realización de este curso son:
Toda la documentación será on-line con el objetivo de mantenerla actualizada y no con un documento físico que se queda obsoleto rápidamente. Después de finalizar el curso toda la documentación on-line seguirá estando disponible de forma pública.
Toda la documentación está liberada con licencia Creative Commons.
Reconocimiento – NoComercial – Compartir Igual (by-nc-sa): No se permite un uso comercial de la obra original ni de las posibles obras derivadas, la distribución de las cuales se debe hacer con una licencia igual a la que regula la obra original.
Para la realización de este curso es necesario tener conocimientos básicos o experiencia en algunas de estas áreas: programación, redes TCP/IP, redes inalámbricas, protocolos de comunicación, bases de datos, uso de sistemas linux, microcontroladores, autómatas, electrónica, uso de sensores, actuadores, etc…
Es recomendable un conocimiento medio de Inglés puesto que gran parte de la documentación oficial de referencia está en Inglés.
educantabria/nodo00/m5atom/boton – al pulsar publica “press” o “longpress”
educantabria/nodo00/m5stack/boton/A – al pulsar botón A publica “press”
educantabria/nodo00/m5stack/boton/B – al pulsar botón B publica “press”
educantabria/nodo00/m5stack/boton/C – al pulsar botón C publica “press”
educantabria/nodo00/m5stack/led – suscrito (1 dibuja en pantalla círculo rojo, otro valor dibuja en pantalla círculo verde)
educantabria/nodo00/m5stack/text – suscrito, muestra por pantalla el texto
educantabria/nodo00/m5stick/temperatura – publica dato temperatura cada 1 segundo
educantabria/nodo00/m5stick/humedad – publica dato humedad cada 1 segundo
educantabria/nodo00/m5stick/presion – publica dato presión cada 1 segundo
educantabria/nodo00/m5stickplus/distancia – publica dato distancia cuando se activa
educantabria/nodo00/m5stickplus/button – al pulsar botón publica “press”
educantabria/nodo00/m5stickplus/led – suscrito (1 led ON, otro valor led OFF)
educantabria/nodo00/m5stickplus/label – suscrito (“red” – circulo rojo, “yellow” – circulo amarillo, “green” – circulo verde, “black” – círculo verde)
educantabria/nodo00/raspberry3/CPU – publica Node-RED el datos de CPU
educantabria/nodo00/raspberry3/Temperatura – publica Node-RED el datos de temperatura procesador
educantabria/nodo00/raspberry3/Memoria – publica Node-RED el datos de memoria libre
educantabria/nodo00/raspberry3/Dashboard/# – publica Node-RED cualquier dato del Dasboard
educantabria/nodo00/raspberry3/Datos/# – suscrito Node-RED para recibir cualquier dato externo
educantabria/nodo00/raspberry3TT/CPU – publica Node-RED el datos de CPU
educantabria/nodo00/raspberry3TT/Temperatura – publica Node-RED el datos de temperatura procesador
educantabria/nodo00/raspberry3TT/Memoria – publica Node-RED el datos de memoria libre
educantabria/nodo00/raspberry3TT/Dashboard/# – publica Node-RED cualquier dato del Dasboard
educantabria/nodo00/raspberry3TT/Datos/# – suscrito Node-RED para recibir cualquier dato externo
educantabria/nodo00/raspberryzero/tomafotomqtt – suscrito Node-RED un valor cualquiera enviado, toma una foto y publica en el topic educantabria/nodo00/raspberryzero/foto en baja resolución.
educantabria/nodo00/raspberryzero/foto – publica Node-RED una foto al mandar cualquier dato en el topic educantabria/nodo00/raspberryzero/tomafotomqtt
Si vamos a instalar de cero una Raspberry Pi que ya estaba funcionando, por ejemplo, con una versión antigua de Raspberry Pi OS o de Raspbian, es aconsejable hacer una copia de seguridad de nuestra tarjeta microSD.
Uno de los errores más frecuentes de los usuarios de tarjetas de memoria SD está en creer que este tipo de memorias funcionan igual que una memoria USB o un disco duro y se pueden formatear con las utilidades del sistema operativo. A diferencia de otros dispositivos de almacenamiento, las tarjetas SD incluyen una zona especial denominada “Protected Area”, empleada para temas de seguridad, que requiere un tratamiento especial. Adicionalmente – y dependiendo de la configuración y el tipo de tarjeta – es necesario un formateo ajustado al tipo de tarjeta.
Descargar e instalar la utilidad “SD Card Formatter” provista por la SD Association, los mismos que definen los estándares de este medio de almacenamiento. Después de instalada, se debe proceder a formatear la tarjeta SD antes de utilizarla. De esta forma se garantiza que se usará todo el espacio disponible de la tarjeta y se optimizará su desempeño y almacenamiento de acuerdo con las especificaciones del fabricante.
Raspberry Pi Imager es la forma rápida y fácil de instalar Raspberry Pi OS y otros sistemas operativos en una tarjeta microSD, lista para usar con su Raspberry Pi. Vídeo: https://www.youtube.com/watch?v=J024soVgEeM
Descargue e instale Raspberry Pi Imager con un lector de tarjetas SD. Coloque la tarjeta SD que usará con su Raspberry Pi en el lector y ejecute Raspberry Pi Imager.
La versión por defecto de Raspbian es ahora una instalación mínima – le da el escritorio, el navegador Chromium, el reproductor multimedia VLC, Python, y algunos programas accesorios. Junto a esto se encuentra la imagen «Raspbian Full», que también incluye todos los programas recomendados: LibreOffice, Scratch, SonicPi, Thonny, Mathematica y varios otros.
El programa de software recomendado se puede utilizar para instalar o desinstalar cualquiera de los programas adicionales que se encuentran en la imagen completa; si descarga la imagen mínima y comprueba todas las opciones en el software recomendado, terminará con la imagen completa, y viceversa.
Etcher es una herramienta gráfica de escritura de tarjetas SD que funciona en Mac OS, Linux y Windows, y es la opción más fácil para la mayoría de los usuarios. Etcher también soporta la escritura de imágenes directamente desde el archivo zip, sin necesidad de descomprimirlas.
balenaEtcher es otra opción fácil para la mayoría de los usuarios de escribir imágenes en tarjetas SD, por lo que es un buen punto de partida. Si busca una alternativa en Windows, puede usar Win32DiskImager.
Una vez entramos en Raspberry Pi por VNC, seguimos los pasos de wizard que nos indica para cambiar contraseña, cambiar el nombre (hostname), configurar y actualizar Raspberry Pi, etc…
Luego es posible hacer más configuraciones desde “Configuración de Raspberry Pi” o desde comando de consola “sudo raspi-config”:
expand filesystem (solo versiones antiguas)
Cambiar la contraseña
Poner nombre (hostnamer): p.e. EnriquePi
Configurar resolución de pantalla
Habilitar VNC
Habilitar VNC conectividad en la nube (usuario y contraseña de VNC)
Habilitar SSH
Actualizar con sudo apt-get update y sudo apt-get upgrade
La forma general de conectar a Internet la Raspberry Pi es mediante
Conexión a Ethernet por DHCP
Conectar a Wifi por DHCP
Por este motivo no es necesario configurar nada si conectamos a un router con DHCP configurado para ethernet y en WiFi solo deberemos configurar la red wifi.
La Raspberry Pi 3 es la primera de la familia en incluir WIFI estándar de serie, lo que es un gran avance de salida y garantiza que se normalice las conexiones, a diferencia de las versiones previas en las que había que comprar un módulo WiFi y configurar la WIFI en función del modelo de adaptador que usasemos.
En el caso actual, la configuración de la WIFI se reduce a listar las redes disponibles y elegir la nuestra, para después proporcionar la contraseña de acceso.
Aquí tienes iconos para la configuración de varios elementos, como el volumen de audio la WIFI y hasta el Bluetooth, que recuerda viene de serie en la nueva Raspi3. Para configurar la WIFI pincha y selecciona el icono y selecciona la WiFi a conectarse.
Una vez configurado comprobar que se puede navegar.
Aunque hayas conectado correctamente a Internet hay mil razones por las que necesitas conocer más información de tus conexiones IP, especialmente saber la IP para que al actuar como servidor saber a qué IP conectarnos.
Con el comando “ifconfig” podemos saber qué interfaces están conectados y que DNS usan o que Gateway o router estas usando como salida.
Para obtener los datos de ethernet teclea ifconfig eth0 y para wifi teclea ifconfig wlan0
Con el comando route -ne se pueden ver las rutas configuradas
La mejor forma de acceder a Raspberry Pi remotamente en modo comando en línea estando en la misma red es usando SSH.
SSH sigue un modelo cliente-servidor. El cliente inicia una petición al servidor, que autentifica la comunicación e inicia el entorno Shell. Múltiples clientes pueden conectarse a un mismo servidor. Por defecto SSH emplea el puerto TCP 22 aunque puede cambiarse fácilmente.
SSH dispone de más usos muy interesantes. por ejemplo, podemos copiar archivos de forma segura entre dos dispositivos, o tunelizar cualquier conexión de otra aplicación a través de un canal seguro SSH.
Para activar el servidor SSH en Raspberry Pi comprobar que estás activado en menu – Preferencias- Configuración de Raspberry Pi – Interfaces
Esta conexión sólo funciona en red local. Para poder acceder desde fuera, a través de Internet, hay que configurar un mapeo de puertos en el router. El proceso completo depende del router.
Para conectarnos desde Windows a SSH, deberemos emplear un cliente SSH para conectarnos con Raspberry Pi. El cliente más utilizado en Windows es Putty, que es Open Source y está disponible en https://www.putty.org/
Descargamos y ejecutamos Putty y nos aparece una ventana donde podemos introducir la dirección IP (o el nombre) de la Raspberry Pi. Al conectarnos se nos preguntará el nombre del usuario y la contraseña.
La mejor forma de acceder a Raspberry Pi remotamente en modo escritorio estando en la misma red es usando VNC.
VNC es un programa de software libre basado en una estructura cliente-servidor que permite observar las acciones del ordenador servidor remotamente a través de un ordenador cliente. VNC no impone restricciones en el sistema operativo del ordenador servidor con respecto al del cliente: es posible compartir la pantalla de una máquina con cualquier sistema operativo que admita VNC conectándose desde otro ordenador o dispositivo que disponga de un cliente VNC portado.
La conexión de VNC de RealVNC se incluye con Raspbian. Consiste en el servidor de VNC, que permite controlar Raspberry Pi remotamente, y el VNC viewer, que permite que controlar ordenadores remotamente de su Raspberry Pi.
El servidor VNC debe habilitarse para poder conectarse remotamente, para ello ir a menu – Preferencias- Configuración de Raspberry Pi – Interfaces y asegurarse que VNC está activado.
En el caso que queramos conectarnos a nuestra Raspberry Pi estando en cualquier parte del mundo, una buena opción es TeamViewer.
TeamViewer es un software informático privado de fácil acceso, que permite conectarse remotamente a otro equipo. Entre sus funciones están: compartir y controlar escritorios, reuniones en línea, videoconferencias y transferencia de archivos entre ordenadores.Team Viewer es gratuito para uso personal.
Instalar el fichero teamviewer-host_xxx_armhf.deb, simplemente haciendo doble click o con el comando “sudo dpkg -i filename.deb”
Si hay dependencias solucionarlo con “sudo apt-get update” y “sudo apt-get -f upgrade”
Una vez instalado ejecutar TeamViewer en Raspberry Pi y poner las credenciales de la cuenta de TeamViewer
Finalmente acceder a https://login.teamviewer.com/LogOn con la cuenta de TeamViewer y ya podemos acceder a nuestra Raspberry Pi. Necesitaremos instalar el cliente de TeamViewer o la app de Chrome:
El acrónimo LAMP está compuesto por las iniciales de sus cuatro componentes: Linux, Apache, MySQL y PHP. Estos 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, por lo que esta plataforma también 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.
El lenguaje de programación PHP es uno de los más extendidos para el desarrollo de páginas web. La ventaja de utilizar PHP para el desarrollo de páginas web es que nos permite crear páginas web dinámicas, es decir, que se generan cuando un usuario visita la página.
MySQL es un sistema de gestión de bases de datos relacional desarrollado bajo licencia dual: Licencia pública general/Licencia comercial por Oracle Corporation y está considerada como la base datos de código abierto más popular del mundo, y una de las más populares en general junto a Oracle y Microsoft SQL Server, sobre todo para entornos de desarrollo web.
Este proyecto monta un pequeño servidor web Apache con lo que podrías por ejemplo alojar tu propia página web entre otras cosas. Además, si despliegas alrededor de tu casa, por ejemplo, varios sensores y actuadores (temperatura, humedad, luces, etc…) comandados por Arduino, podrías utilizar la Raspberry Pi 3como centro de envío y recepción de datos a través de su red. Y por supuesto utilizar la página Web para mostrar y controlar los datos a través de Internet.
Instrucciones para su instalación:
#Update system
sudo apt-get update
sudo apt-get upgrade
#Install Apache2
sudo apt-get install apache2
Comprobar que accedemos entrando a la IP de la Raspberry Pi desde un navegador
La página web por defecto está en /var/www/html
Crear un fichero prueba.html en el directorio /var/www/html que contenga el texto: “HOLA MUNDO”
Para comprobar que funciona entrar desde un navegador a la dirección: http://ip_raspberry/prueba.html y ver que aparece el texto “HOLA MUNDO”
Durante el proceso de instalación se pedirá el password de root de MySQL, poner el mismo que tiene el usuario pi de la Raspberry Pi y poner a Yes todas las opciones de mysql_secure_installation
Estos comando instalan una BBDD MariaDB
Para comprobar que todo funciona ejecutar sudo mysql -u root -p y poner la contraseña, saldrá:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 61
Server version: 10.1.23-MariaDB-9+deb9u1 Raspbian 9.0
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
#Install MySQL (Opcional)
En caso de querer instalar MySQL usar estos comandos:
Durante el proceso pide la contraseña del usuario phpmyadmin de MySQL y el servidor a instalar el apache y poner yes en dbconfig-common
IMPORTANTE: Seleccionar con la barra espaciadora apache2 y asegurarse que aparece un asterisco que indica que se ha seleccionado.
En caso que no hayamos configurado el servidor web correctamente o queramos hacer una configuración de phpmyadmin después de la instalación, usar el comando: sudo dpkg-reconfigure -plow phpmyadmin
phpMyAdmin es una herramienta escrita en PHP con la intención de manejar la administración de MySQL a través de páginas web, utilizando Internet. Actualmente puede crear y eliminar Bases de Datos, crear, eliminar y alterar tablas, borrar, editar y añadir campos, ejecutar cualquier sentencia SQL, administrar claves en campos, administrar privilegios, exportar datos en varios formatos y está disponible en 72 idiomas. Se encuentra disponible bajo la licencia GPL Versión 2.
Para probar que funciona ver en un navegador: http://IP-raspberry/phpmyadmin con el usuario phpmyadmin y la contraseña usada.
El usuario phpmyadmin no tiene privilegios. Para crear un usuario “pi” con privilegios ejecutar:
sudo mysql -u root -p
CREATE USER ‘pi’@’localhost’ IDENTIFIED BY ‘tu_contrasena‘;
CREATE USER ‘pi’@’%’ IDENTIFIED BY ‘tu_contrasena‘;
GRANT ALL PRIVILEGES ON * . * TO ‘pi’@’localhost’; (Para acceso local)
GRANT ALL PRIVILEGES ON *.* TO ‘pi’@’%’; (Para acceso remoto)
GRANT GRANT OPTION ON *.* TO ‘pi’@’localhost’; (Privilegios para dar permisos a otros usuarios)
FLUSH PRIVILEGES;
Para conectarnos desde otro servidor: mysql -h ip_raspberry -u root -p
#Install servidor ftp (VSFTPD) (Opcional)
sudo apt-get install vsftpd
Una vez instalado, configurar con: sudo nano /etc/vsftpd.conf
Comentar estas dos opciones:
#local_enable=YES
#ssl_enable=NO
Y añadir al final del fichero:
# CUSTOM
ssl_enable=YES
local_enable=YES
chroot_local_user=YES
local_root=/var/www
user_sub_token=pi
write_enable=YES
local_umask=002
allow_writeable_chroot=YES
ftpd_banner=Welcome to my Raspberry Pi FTP service.
También necesitamos añadir el usuario pi al grupo www-data, dar la propiedad de la carpeta /var/www al usuario y al grupo www-data, cambiar la carpeta de inicio del usuario pi a la misma, y aflojar algunos permisos en la carpeta /var/www:
sudo usermod -a -G www-data pi
sudo usermod -m -d /var/www pi
sudo chown -R www-data:www-data /var/www
sudo chmod -R 775 /var/www
Y reiniciar el servicio: sudo service vsftpd restart
Para comprobar que funciona usar un cliente ftp con https://filezilla-project.org/ y hacer una conexión con la siguiente configuración:
Host – 192.xxx.x.xxx (IP address)
Port – 21
Protocol – FTP (File Transfer Protocol)
Encryption – Use explicit FTP over TLS if available
Escribir el nombre de la imagen en la ruta donde los guardemos.
Y luego pulsar read. Una vez hecho esto, esperar a que el proceso finalice.
Probar LAMP con Arduino
Para probar el servidor LAMP que acabamos de instalar en nuestra Raspberry Pi vamos a usar Arduino y mandar datos de luminosidad de la sala usando un LDR.
Una fotorresistencia o LDR (por sus siglas en inglés “light-dependent resistor”) es un componente electrónico cuya resistencia varía en función de la luz.
Se trata de un sensor que actúa como una resistencia variable en función de la luz que capta. A mayor intensidad de luz, menor resistencia: el sensor ofrece una resistencia de 1M ohm en la oscuridad, alrededor de 10k ohm en exposición de luz ambiente, hasta menos de 1k ohm expuesto a la luz del sol. Aunque estos valores pueden depender del modelo de LDR.
El LDR actúa como una resistencia variable. Para conocer la cantidad de luz que el sensor capta en cierto ambiente, necesitamos medir la tensión de salida del mismo. Para ello utilizaremos un divisor de tensión, colocando el punto de lectura para Vout entre ambas resistencias. De esta forma:
Dónde Vout es el voltaje leído por el PIN analógico del Arduino y será convertido a un valor digital, Vin es el voltaje de entrada (5v), R2 será el valor de la resistencia fija colocada (10k ohm generalmente) y R1 es el valor resistivo del sensor LDR. A medida que el valor del sensor LDR varía, obtendremos una fracción mayor o menor del voltaje de entrada Vin.
Crear una base de datos llamada “DatosArduino” con una tabla llamada “luminosidad” que tenga 4 campos: “id” auto incremental y sea el campo clave, “fecha” de tipo timestamp y que se actualice al actualizar, un campo “arduino” de tipo entero y un campo “IntensidadLuminosa” que sea de tipo entero.
O con la query:
CREATE TABLE `luminosidad` (
`id` int(11) NOT NULL,
`fecha` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`arduino` int(11) NOT NULL,
`IntensidadLuminosa` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `luminosidad`
ADD PRIMARY KEY (`id`);
ALTER TABLE `luminosidad`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
Para insertar un dato:
INSERT INTO `luminosidad` (`arduino`, `IntensidadLuminosa`) VALUES ('22', '22');
Subir por FTP seguro los ficheros Graba_GET.php y Graba_POST.php a Raspberry Pi al directorio /var/www/html o crearlos con el comando nano:
sudo nano Graba_GET.php y sudo nano Graba_POST.php
Recordad poner en el fichero el usuario y contraseña adecuado.
Para ejecutar Node-RED en el arranque: sudo systemctl enable nodered.service
En caso de problemas ver el log con: node-red-log
Instalar Webmin
Webmin es una herramienta de configuración de sistemas accesible vía web para sistemas Unix, como GNU/Linux y OpenSolaris. Con él se pueden configurar aspectos internos de muchos sistemas operativos, como usuarios, cuotas de espacio, servicios, archivos de configuración, apagado del equipo, etcétera, así como modificar y controlar muchas aplicaciones libres, como el servidor web Apache, PHP, MySQL, DNS, Samba, DHCP, entre otros.
Antes de empezar recordar comprobar la posición de los pines porque en caso de error podemos dañar la Raspberry Pi ya que los GPIO no tienen ninguna protección.
Cuando conectes cables a los GPIO procura no equivocarte y fíjate bien.
Usa cables con recubrimiento del tipo Dupont Macho-hembra por ejemplo, y no acerques cables sin proteger a tus GPIO (Y mucho menos un destornillador) porque puedes hacer un corto con facilidad.
Una vez que conectes un cable hembra protegido, vuelve a mirar y asegúrate de que lo has conectado al pin que querías y no al de al lado.
Especial cuidado con los pines que uses para sacar 3V o 5V de tu Raspi. No dejes el otro extremo al aire: Asegúrate de conectarlo a algún sitio.
NO CONECTES NADA DE 5V si no estás seguro. Tu Raspberry funciona a 3.3V y meterle 5V en un pin puede suponer quemar el procesador central.
Instalar las librerías para el uso de los pines GPIO desde Python, asegurandonos de tener actualizado Raspbian:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-dev
sudo apt-get install pyton-rpi.gpio
Tened en cuenta que en esta ocasión vamos a alimentar el LED con 3.3V (Que es lo que proporciona un pin de la Raspi) y que la intensidad que obtendremos será: 3.3 / 1K Ω = 3 mA, que no es mucho para iluminar un LED pero suficiente.
Esquema de GPIO:
Conectamos GND al pin 6 de la Raspberry y vamos a usar el pin 12 (GPIO 18) como control del encendido mediante una resistencia intermedia. El esquema de conexión es:
Abrir el IDLE de Python 3 para empezar nuestro programa:
Y copiar código:
import RPi.GPIO as gpio
import time
gpio.setmode(gpio.BOARD)
gpio.setup(12, gpio.OUT)
for x in range ( 0, 10):
gpio.output(12, True)
time.sleep(0.5)
gpio.output(12, False)
time.sleep(0.5)
print “Ejecución finalizada”
Guardar el fichero con el nombre blink.py en /home/pi y ejecutarlo pulsando F5