Archivo de la etiqueta: Proyectos

Robot Minisumo V2

Es un robot open source económico y fácil de construir y programar, con el objetivo de acercar la robótica y la programación a cualquiera, especialmente a los niños y niñas.

Robot Minisumo Multifunción. Pensado para competiciones de minisumo, pero puede ser utilizado para aprender a programar otras funciones, como sigue lineas, evita obstáculos, resuelve laberintos o lo que se te ocurra.

Este robot es una versión mejorada del robot publicado en https://aprendiendoarduino.wordpress.com/2019/05/06/construccion-y-programacion-de-robot-minisumo/ 

Repositorio del proyecto: https://github.com/jecrespo/Robot-MiniSumo-V2

Presentación del Robot Minisumo V2 en Arduino Day 2021del Área UR-Maker de la Universidad de La Rioja: link

Lista de Materiales

Montaje del Robot

Conexionado del Robot

Programación con Bloques

Programación con Arduino

Créditos y Patrocinadores

Este proyecto surge del Área UR-Maker de la Universidad de La Rioja

Personas detrás de este proyecto:

  • Alpha Pernía
  • Sergio Peciña
  • Mario Santamaría
  • Enrique Crespo

Proyectos en Node-RED

Los proyectos son una nueva forma de administrar sus archivos de flujo. En lugar de tratar sus flujos como un simple par de archivos (flows_localhost.json y flows_localhost_cred.json), ellos representan todo lo que necesita para crear una aplicación Node-RED redistribuible.

Los proyectos están respaldados por un repositorio de git, lo que significa que todos los archivos están completamente controlados por versiones y permiten a los desarrolladores usar flujos de trabajo similares para colaborar con otros.

Esta característica está disponible desde la versión 0.18: https://nodered.org/blog/2018/01/31/version-0-18-released

Introducción a proyectos en Node-RED: https://www.youtube.com/watch?v=Bto2rz7bY3g 

Para habilitar la función de proyectos, edite su archivo settings.js y agregue la siguiente opción dentro del bloque module.exports y reinicie Node-RED.

 editorTheme: {
        projects: {
            enabled: true
        }
    }, 

La función se basa en tener disponibles las herramientas de línea de comandos git y ssh-keygen. Node-RED los buscará al inicio y le informará si faltan.

Si no se habilita, en el arranque sale: [warn] Projects disabled : editorTheme.projects.enabled=false

La función de proyectos ahora ofrece una opción para un flujo de trabajo de git simplificado. La opción, en Configuración de usuario, le permite habilitar un modo “automático” donde los cambios se confirmarán (commit) automáticamente con cada implementación.

Más información: https://nodered.org/docs/user-guide/projects/

Crear el Primer Proyecto

Cuando abras el editor, serás recibido por una pantalla de bienvenida que te invita a crear tu primer proyecto utilizando tus archivos de flujo existentes.

Configurar el Cliente de Control de Versiones

Node-RED utiliza la herramienta de código abierto Git para el control de versiones. Realiza un seguimiento de los cambios en los archivos de su proyecto y le permite enviarlos a repositorios remotos como github. Cuando realiza un conjunto de cambios, Git registra quién realizó los cambios con un nombre de usuario y una dirección de correo electrónico. El nombre de usuario puede ser el que desee, no es necesario que sea el nombre real.

Puede cambiar la configuración de Git en cualquier momento a través del cuadro de diálogo principal de configuración de Node-RED.

Crear un Proyecto

El siguiente paso permite nombrar su proyecto y darle una descripción.

Crear Archivos de Proyecto

Node-RED migrará automáticamente los archivos de flujo existentes al proyecto. Puede elegir cambiarles el nombre.

Configurar el Cifrado del Archivo de Credenciales

Se puede compartir el proyecto en sitios públicos como GitHub, se recomienda que cifre su archivo de credenciales. Para cifrarlo, se debe elegir una clave que se utilizará para proteger el archivo. Esta clave no se almacena dentro del proyecto. Si alguien más clona el proyecto, deberá proporcionar la clave para descifrar el archivo de credenciales. De lo contrario, deberán editar el flujo para proporcionar sus propias credenciales.

A continuación, se crea el proyecto en el directorio: ~/.node-red/projects/<nombre-proyecto>

Una vez se haya creado el proyecto, se puede continuar usando el editor Node-RED como siempre. Hay algunas partes nuevas del editor que se han agregado para trabajar con su proyecto como la parte de control de versiones.

Puede haber tantos proyectos como queramos. Si un proyecto está activo, el resto no funciona. SOLO PUEDE HABER UN PROYECTO ACTIVO.

¿Cómo sabe Node-RED que proyecto está activo? en el fichero .config.projects.json  pone cual es el active project y además los proyectos que hay en esa instancia de Node-RED, en este fichero se ve la contraseña de cifrado del proyecto en texto plano!!!

En .config.users.json tenemos los usuario y los datos de git.

Trabajar con Proyectos

La barra lateral de información ahora muestra en qué proyecto está trabajando en la parte superior. Junto al nombre del proyecto hay un botón que abre el cuadro de diálogo Configuración del proyecto.

Hay tres tabs:

  • Project – lets you edit the project’s README.md file.
  • Dependencies – manage the list of node modules your project depends on
  • Settings – manage the project settings, including the git remotes

Cada proyecto tiene su propio archivo package.json que incluye una lista de módulos de nodo de los que depende el proyecto. El editor Node-RED realiza un seguimiento de los nodos que está utilizando en un flujo y ayuda a mantener actualizada esa lista de dependencias.

Mantener la lista de dependencias actualizada es importante si desea compartir el proyecto con otros, ya que ayudará a los usuarios a instalar los módulos necesarios.

La pestaña de configuración del proyecto permite administrar los archivos de flujo, la configuración de cifrado de sus credenciales y configurar las ramas git locales y repositorios remotos.

Control de Versiones

Se ha agregado una nueva pestaña de history a la barra lateral. Aquí es donde se administra el control de versiones del proyecto. La pestaña tiene dos secciones:

  • Cambios locales: muestra los archivos del proyecto que han cambiado, lo que permite organizarlos y confirmarlos.
  • Historial de commits: una lista de todos los commits en el repositorio, con herramientas para enviar commits a repositorios remotos.

Siempre que cambie un archivo de proyecto, por ejemplo, al hacer un deploy de flujo, aparecerá en la sección “Archivos locales”. Puede hacer clic en el nombre del archivo para ver una diferencia de lo que ha cambiado. Cuando coloque el cursor sobre el archivo, verá un botón +; al hacer clic en él, se ubicará el archivo y lo moverá hacia abajo a la lista “Cambios para confirmar”.

Cuando haya preparado los archivos que desea confirmar, haga clic en el botón commit, añadir un mensaje y confirmar.

La sección del historial de commits enumera todas las confirmaciones en la rama actual del repositorio. Cuando crea un proyecto, Node-RED confirma automáticamente el conjunto inicial de archivos predeterminados para el proyecto.

En la parte superior de la lista se encuentra el botón “Branch”. Eso le permite chekout/crear ramas dentro del repositorio.

Si el repositorio tiene un repositorio remoto configurado, también hay un botón que muestra cuántos commits adelante y/o detrás del repositorio local se comparan con el remoto. Permite elegir el control de rama remota para rastrear y push/pull de los cambios al control remoto.

Esta es un área que el editor de Node-RED intenta simplificar la experiencia del usuario y no expone todas las diversas opciones que proporciona git. Por ejemplo, no proporciona opciones para reajustar sus commits locales o forzar push de cambios en el control remoto. Aún puede hacer esas cosas volviendo a la línea de comandos.

Crear Nuevos Proyectos

Desde Projects -> New es posible crear nuevos proyectos y dispone de tres opciones:

  • Abrir un proyecto existente
  • Crear un nuevos proyecto
  • Clonar un proyecto de un repositorio

Node-RED solo ejecuta un proyecto a la vez. Al abrir otro proyecto, cambia los flujos que se están ejecutando.

La vista “proyecto abierto” también permite eliminar proyectos colocando el cursor sobre ellos en la lista y haciendo clic en el botón Eliminar. No puede eliminar el proyecto activo.

Clonar un proyecto de un repositorio, permite clonar un repositorio remoto existente. Puede usar una URL http(s) o git/ssh para el repositorio. Si el repositorio requiere autenticación, debe proporcionarse en esta opción. Actualmente, Node-RED no utiliza ningún asistente de credenciales con el que pueda estar configurado el cliente git.

Para conectar con la cuenta de github simplemente poner usuario y contraseña, pero si tengo activado el 2FA debo crea un token como se indica aquí: https://www.amitmerchant.com/using-github-password-terminal-2fa/

Para git/ssh, Node-RED ofrecerá una lista de claves públicas ssh disponibles. Esta lista se genera escaneando ~/.ssh en busca de archivos que terminen en .pub y que tengan los archivos de clave privada correspondientes. También le permite generar un nuevo par de claves pública/privada a través de la pestaña “Git config” del cuadro de diálogo de configuración principal. Estos archivos se almacenan en ~ /.node-red/projects/.sshkeys /. Si tiene adminAuth habilitado, los archivos se asignan al usuario que ha iniciado sesión actualmente, por lo que no es necesario que comparta las credenciales para el control remoto.

Más información en https://binnes.github.io/Node-RED-container-prod/Node-REDsourceControl/index.html

Manejar multiproyectos: https://flows.nodered.org/node/node-red-contrib-multiproject (no testeado)

Ejemplo

Probar a clonar estos proyectos sin la clave:

Cuando se clone, avisará de un error que no hay clave de cifrado o es incorrecta, entonces hay que ir a “Project Settings” y en settings poner una nueva clave de cifrado.

Una vez puesta la nueva clave de cifrado, tendremos el flujo completo, pero los datos de contraseñas no se habrán importado y habrá que ponerlos a mano, editando los nodos de configuración y los nodos que correspondan.

En el caso que en el flujo clonado haya un nodo que no se haya instalado avisará del error para que se instale.

Si proporciona la clave correcta, el clonado también incluye los usuarios y contraseñas y puede usarse directamente el flujo si se tienen instaladas todas las dependencias.

Automatizar Proyectos

La opción de proyectos me permite distribuir de forma automatizada usando git, el código publicado en otras instancias de Node-RED, ya sea de un entorno de desarrollo a uno de producción una vez testeado o bien de un entorno de producción a múltiples entornos de producción.

En el caso que deseemos distribuir un mismo código a múltiples nodos que hace la misma tarea, se puede automatizar usando git y hacer las diferencias de variables de cada nodo usando las variables de entorno de cada nodo.

Esto es interesante en un entorno con múltiples instancias de Node-RED distribuidas (nodos) que deseemos actualizar de forma automatizada. Por ejemplo, nodos en diversas instalaciones que recogen datos de PLCs y los mandan a una BBDD central, para ello hacemos un push al repositorio y luego desde cada nodo un pull que recoja la actualización y luego hacer el deploy por comando (o reinicio de Node-RED) para actualizar el nodo remoto.

Sistema de automatización de control de versiones y backup a través de git:

  • Copia por flujo o total en directorio que tenga git y haga un pull
  • Guardar los cambios de forma manual o sino automática usando la API en un proceso periodico
  • luego usar CI cada vez que se haga deploy

Nota de como hacer backup de Node-RED: https://github.com/langanjp/PI-NodeRed/wiki/Node-RED-Backup

Mejoras Futuras

Obtenido de https://nodered.org/blog/2020/10/13/future-plans

We have had the projects feature in Node-RED for a long time now – bringing the ability to version control flows directly into the editor. But there’s more to be done in this area.

The 1.2 release has introduced a new simplified git workflow – where changes are automatically committed whenever the deploy button is clicked. That’s important for users who are less experienced with Git version control – they will benefit without having to know about committing changes themselves.

And there are other areas we need to improve:

  • Managing project dependencies. At the moment the editor lets you edit the dependencies yourself, and it tries to give some hints on what needs doing, but that whole user experience needs to be improved.
  • Accessing earlier versions of a project. Having a full history of changes is not much use if you can’t easily go back to an earlier version. It is possible to do on the command-line – but that isn’t the right answer if we want this to be accessible to all users within the editor.
  • Adding settings.js to a project. For a project to be a complete deployable artefact, it needs a settings file. At the moment, that has to be created and added to the project manually. There’s more the editor could do to help with this – the hard part is managing the project’s settings file versus the runtime settings file – but that’s a discussion for another time.
  • Adding a Dockerfile to a project. A common pattern for deploying projects into a production environment is via some form of containerisation. Making this quick and easy to setup in the editor would be a big step forward – although very much an optional feature.

I’m sure there are other things we could be doing with the Projects feature to make it much more powerful. As with everything on this roadmap, we’ll be looking to the community for feedback to help expand on the details.

Propuestas de Proyecto Final de Curso 2019

Criterios de Evaluación Proyectos Arduino

Cada apartado se puntúa 0 o 1, siendo un total de 12 puntos el máximo a obtener. Se considera apto obtener un 5.

    • Documentación
    • Código
    • Complejidad Proyecto
    • Análisis Previo
    • Diagrama de Flujo
    • Esquemático, Materiales y Coste
    • Pasos y Desarrollo del Proyecto
    • Uso del control de versiones
    • Funcionalidad
    • Pruebas Realizadas
    • Mejoras
    • Herramientas Adicionales (3D, Comunicaciones, etc…)

Cuentas Utilizadas por los Alumnos.

Rodolfo – Brazo Robótico Didáctico

Project: https://create.arduino.cc/projecthub/rodolfoticcosme/brazo-robot-didactico-con-3-grados-fd7c40?ref=user&ref_id=1152623&offset=0 

Repositorio: https://github.com/rodolfoticcosme/Proyecto-Arduino-Robot

App Inventor: http://ai2.appinventor.mit.edu/?galleryId=6509315643539456 

Marcos García – Control vía WiFi de una pequeña instalación domótica

Project: https://create.arduino.cc/projecthub/fonzacity

Project en Hackster.io: https://www.hackster.io/fonzacity/home-automation-with-esp8266-1fd2af

Wiki: https://github.com/fonzacity/proyecto-curso-arduino/wiki 

Repositorio: https://github.com/fonzacity/proyecto-curso-arduino

Luis – Control del sistema de refrigeración en bastidor de PC

Project: https://create.arduino.cc/projecthub/zubicantabria/control-del-sistema-de-refrigeracion-en-bastidor-de-pc-63a355?f=1

Repositorio: https://github.com/zubicantabria/ControlRefrigerarPC

Marcos Cochi – Bus Arriving Project

Project: https://create.arduino.cc/projecthub/mcochi/bus-arriving-project-7230fe?ref=user&ref_id=1153680&offset=0

Repositorio: https://github.com/mcochi/BusArrivingProject

Iván – Sensores Humedad MQTT

Project: https://create.arduino.cc/projecthub/thinkcurso/sensorhumedad-mqtt-c6e07a

Repositorio: https://github.com/thinkcurso/sensors-MQTT

Vídeo de Presentación: https://youtu.be/lmC6PZDFOe4 

Ernesto – Monitorización Oficina con Thingspeak

Project: https://create.arduino.cc/projecthub/Ernesto_Rodriguez/inmotica-pequeno-control-de-una-oficina-d2a128

Repositorio: https://github.com/Ernestorodriguezc/curso-arduino-proyectos/blob/master/DHTtesterDEPURADO_2Sensores/DHTtesterDEPURADO_2Sensores.ino

Canal compartido de Thingspeak: 82338. Link: https://thingspeak.com/channels/823382

Arturo – Robot Básico BT

Project: https://create.arduino.cc/projecthub/bacterio3000/robot-basico-bt-0182eb?ref=user&ref_id=1152625&offset=0

Repositorio: https://github.com/bacterio3000/PruebaCurso

Para bluetooth usa: https://www.keuwl.com/apps/bluetoothelectronics/

Código en ArduinoBlocks: http://www.arduinoblocks.com/web/project/68631

Noelia – Control de Relay con Arduino desde APP

Project: https://create.arduino.cc/projecthub/nolmos/control-de-relay-con-arduino-desde-app-c63b2c

Repositorio: https://github.com/noelia-olmos/Proyecto_Arduino_App_Bluetooht 

APP Inventor: http://ai2.appinventor.mit.edu/?galleryId=6286670243168256

Enrique – Robot MiniSumo

Project: https://create.arduino.cc/projecthub/jecrespo/construccion-y-programacion-de-robot-minisumo-25c4b7

Repositorio: https://github.com/jecrespo/Robot-MiniSumo

Enrique – Conference Clock

Project: https://create.arduino.cc/projecthub/jecrespo/arduino-conference-clock-1b9354

Repositorio: https://github.com/jecrespo/conference_clock

Criterios de Evaluación de los Proyectos

Criterios de Evaluación/Partes del proyecto a valorar:

  • Complejidad del proyecto
  • Calidad de la documentación
  • Calidad del código
  • Motivación y descripción de proyecto.
  • Análisis previo de necesidades
  • Justificación de la elección de la placa, medio de comunicación, componentes, sensores, etc…
  • Justificación de la elección de librerías y documentación de su uso
  • Justificación del software usado
  • Diagrama de flujo como documentación de firmware y luego su uso en la fase de testeo
  • Lista de materiales, datasheet, enlaces y precios
  • Presupuesto
  • Cálculo de horas de trabajo
  • Esquemáticos y otra documentación del montaje (Fritzing)
  • Descripción del software utilizado
  • Descripción herramientas utilizadas
  • Descripción de los pasos y las diferentes fases de desarrollo
  • Videos y demos
  • Test realizados para comprobar las funcionalidades del proyecto (análisis funcional)
  • Posibles mejoras futuras y funcionalidades a desarrollar.
  • Uso de un sistema de control de versiones.
  • Incluir temas adicionales como diseño 3D (Tinkercad, freecad), diseño de apps moviles (app inventor) o diseño de software (python, processing, etc…), diseño de PCB (KiCad)
  • Uso de otras placas o HW como Raspberry Pi
  • Uso de protocolos y comunicación (mosquitto, Node-RED, etc…)

Plataformas de Publicación de Proyectos Arduino

Webs con proyectos Arduino de todo tipo:

Tutorial de Arduino Project Hub: https://www.hackster.io/Arduino_Genuino/how-to-submit-content-on-arduino-project-hub-cf2177