martes, 14 de abril de 2020

Proyecto descubriendo los principios básicos de LoRa


Principios básicos de LORA(LOng RAnge)


Objetivo: 

Aprender los principios básicos de LORA, y realizar un proyecto con la tarjeta ESP32 para IoT(Internet de las cosas) usando Arduino IDE. Aprenderemos a crear un simple LoRa Emisor(Sender) y LoRa Receptor(Receiver) con nuestro Heltec Lora stick.

Introduciendo LoRa: ¿Qué es LoRa? LoRa es una tecnología de comunicación inalámbrica que usa técnicas de modulación de radio, es decir a través de radiofrecuencias, y fue desarrollado por Semtech, concretamente con sus chips LoRa transceiver.


Esta técnica de modulación nos permite comunicaciones a larga distancia, pero transmitiendo pocos datos (por ejemplo, no es recomendado para video streaming), es decir poco ancho de banda, pero alta inmunidad a las interferencias lo cual minimiza el consumo. Entonces tenemos largas distancias, poco ancho de banda (pocos datos), resistente a la interferencia y bajo consumo de potencia.


Frecuencias LoRa

LoRa usa frecuencias libres (es decir sin licencias) del espectro de radiofrecuencias disponible, por lo tanto, depende del país o más concretamente de la zona de radiofrecuencias. Así nos encontramos que estás son:

   868 MHz para Europa

   915 MHz para Norte América

   433 MHz para Asia

Puesto que estas frecuencias son libres, cualquiera puede usarlas, o por el contrario obtener una licencia de una determinada frecuencia. Por país podemos ver la regulación existente en este enlace https://www.thethingsnetwork.org/docs/lorawan/frequencies-by-country.html
La regla del 1%

Otra característica nueva. En Europa la banda 868 MHz tiene un par de limitaciones. La primera es la potencia de emisión: 25 mW, que no nos preocupa mucho ya que los módulos que utilizaremos no llegan a tanta. Pero la segunda sí que es importante y debemos estar al loro para no violar la regulación.

Esta regla simplificadamente lo que dice es que no podemos transmitir más que el 1% del tiempo. Es decir, si por ejemplo enviar un paquete nos lleva 10 ms, tendremos que mantenernos calladitos por 990 ms.

Como norma general, no envíes más de una vez cada 3 minutos y cumplirás la reglamentación. Si quieres enviar más a menudo, existen calculadoras para obtener los tiempos entre envío mínimos. Para LoRaWAN (explicado más adelante), revisa la Fair access policy.

Los canales de LoRa

Dentro de las bandas del anterior apartado, se definen canales de frecuencias concretas. Es complicado recordar las frecuencias de todos los canales, pero normalmente las librerías que utilizaremos ya se encargan de facilitarnos esta tarea. Quédate con que para la banda de 868 MHz hay 10 canales y para la de 915 MHz hasta 64.

Aplicaciones LoRa

Las características que hemos visto de LoRa (largas distancias, y bajos consumos) es perfecto para aplicaciones con sensores de baja potencia para:

   Internet de las cosas (IoT)

   Domicilios inteligentes, domótica (Smart home)

   Comunicación M-M (Machine-to-machine)

   Y muchas más…

Por lo tanto, es una buena elección para el uso de sensores con baterías pequeñas o placas solares, para transmitir pequeñas cantidades de datos.




Hay que tener en cuenta que LoRa no es recomendable para proyectos que:

   Requieran un volumen alto transmisión de datos
  
   Que necesiten transmisión de altas frecuencias
   O para grandes redes de usuarios.


LoRa topología
Puedes utilizar Lora como:





-Comunicación Punto a Punto:

En la comunicación punto a punto se necesitan dos dispositivos LoRa emitiendo y recibiendo. Es decir, cada dispositivo debe ser emisor y receptor. Por ejemplo, entre dos tarjetas ESP32 equipadas con el chip LoRa en un entorno sin Wifi.




Con Wifi o Bluetooth solo puede establecer comunicación a corta distancia, sin embargo, con LoRa podemos transmitir a distancias superiores a 200 metros. De hecho y dependiendo del entorno y las características del chip LoRa, se han registrado distancias de 30Km. Es decir podríamos utilizar la tecnología LoRa allí donde no llega Wifi o Bluetooth y aunque hubiera cobertura 4G o 5G(necesitaríamos una tarjeta SIM para cada dispositivo), la tecnología LoRa es mucho más barata y con un consumo prácticamente insignificante. Luego podríamos ubicar sensores varios, en zonas diversas que envíen información con un gasto muy reducido.

-En red (LoRaWan)

También podemos crear una red basada en comunicación LoRa usando lo que se denomina LoRaWan



El protocolo LoRaWan utiliza la especificación de la tecnología estandarizada por LoRa Alliance, (LPWAN) Low Power Wide Area Nerwork (red de áreas extensa de baja potencia). Podemos explorar más información en LoRa Alliance y en The Things Network.




Para entenderlo, tenemos una red de sensores conectados por ejemplo a unas tarjetas ESP32 con LoRa(nos pueden medir geolocalización, medidas de caudal de gas, de agua, nivel de llenado de contenedores de basura, detección de fuego…), que trasmiten sus datos, utilizando LoRa hasta unos concentradores (hub) o Gateway, estos a su vez suben estos datos a servidores en Internet y entonces desde cualquier ordenador o móvil podemos acceder a esa información que está en Internet.

Hardware a utilizar

Vamos a utiliza la tarjeta ESP32 de la casa Heltec de la serie “Heltec Lora”, concretamente la Wireless Stick. Sus características principales son las siguiente:

- Una tarjeta con microprocessor: ESP32 (dual-core 32-bit MCU + ULP core), con chip LoRa SX1276/SX1278;
El chip ESP32, que ha sustituido al ESP8266, es un tipo de microprocesador con características específicas para realizar proyectos relacionados con IoT (internet de las cosas) y para ello viene ya con un gran número de prestaciones. Posee integrado, wifi y bluetooth además de soportar un gran número de protocolos de comunicación.


En esta comparativa con un Arduino Uno podemos ver algunas características más concretas.


Más información en: Heltec Wireless Stick, también podemos ver este video https://youtu.be/Mq1YhgS5VkY.


En la página de Heltec tenemos toda la información técnica de la tarjeta.

Technical Parameters

source
parameter
MCU
ESP32( 240MHz Tensilica LX6 dual-core + 1 ULP, 600 DMIPS, 520KB SRAM, Wi-Fi, dual mode Bluetooth)
LoRa chip
SX1276
LoRa bands
EU_433, CN_470_510, EU_863_870, US_902_928 four bands optional
LoRa maximum output power
18dB ± 2dB
Hardware resources
UART x 3; SPI x 2; I2C x 2; I2S x 1
12 – bits ADC; 8 – bits DAC
29 general GPIO
Display
0.49 inch 64*32 OLED display
FLASH
4MB(32M-bits) SPI FLASH
interface
Micro USB x 1; LoRa antenna interface(IPEX) x 1
Size
50.2 x 25.5 x 9.74 mm
USB to UART Bridge
CP2102
Battery Type
3.7V Lithium(SH1.25 x 2)
Battery detection circuit
√
External device power control(Vext)
√
Low power design
Deep Sleep 800uA


Y de consumo eléctrico:

Electrical characteristics


 Electrical characteristics
condition
Minimum
Typical
Maximum
Power Supply
USB powered(≥500mA)
4.7V
5V
6V 
Lithium powered(≥250mA)
3.3V
3.7V
4.2V
3.3V(pin)powered(≥150mA)
2.7V
3.3V
3.5V
5V(pin)powered(≥500mA)
4.7V
5V
6V
Power consumption(mA)
WIFI scan
115mA
WIFI AP
135mA
LoRa 10dB emission
50mA
LoRa 12dB emission
60mA
LoRa 15dB emission
110mA
LoRa 20dB emission
130mA
Output
3.3V pin output
500mA
5V pin output (USB powered only)
Equal to the input current
External device power control (Vext 3.3V)


Desde documentos y recursos podemos descargar un diagrama de la configuración de la tarjeta como la siguiente:


También encontramos una guía de cómo preparar el IDE de Arduino para trabajar con esta tarjeta en el este sitio http://www.heltec.cn/wifi_kit_install/, aquí podemos elegir entre utilizar la instalación de GitHub (descargando e instalando) o a través de repositorio como indica en este sitio https://docs.heltec.cn/#/en/user_manual/how_to_install_esp32_Arduino


Pasos que hemos seguido

Paso1. Descargar Arduino ESP32 Support

Lo primero sería conseguir la última versión del Arduino IDE, en nuestro caso no es el último, pero no podemos actualizarlo, ya que los ordenadores del centro siguen una estricta política de actualizaciones utilizando repositorios seguros que se ubican en ordenadores de la Junta de Extremadura. A día de hoy 23 de enero de 2020, no tiene la última versión, pero hemos hecho pruebas y funciona correctamente.

Abrimos Arduino IDE, y hacemos click en Archivo->Peferencias->Ajustes







Introducir en Gestores adicionales de tarjeta una URL

Actualmente el último administrador de tarjeta se haya en la URL: https://docs.heltec.cn/download/package_heltec_esp32_index.json



Click en Herramientas->Placa->Gestor de tarjetas (Tools->Board:->Boards Manager...,) y buscar Heltec ESP32 en la lista, entonces hacer click en instalar







El código fuente de Heltec Heltec ESP series (ESP32 & ESP8266) framework está disponible aquí https://github.com/Heltec-Aaron-Lee/WiFi_Kit_series

Paso 2. Descargamos la librería Heltec ESP32 Library

Abrir Arduino IDE, entonces seleccionar programa->Incluir librería->Administrar biblioteca(Sketch->Include Library->Manage Libraries...) buscar Heltec ESP32 e instalar








El código fuente de la librería Heltec ESP32 está también disponible aquí: https://github.com/HelTecAutomation/Heltec_ESP32

Ejemplo
Esta sección es para ver si puedes programar con Arduino o no. Ahora hemos conectado el cable USB a la tarjeta Heltec ESP32, seleccionamos el puerto serie al cual está conectado la tarjeta.

Seleccionamos un ejemplo demo e intentamos compilarlo y subirlo a la tarjeta.

1. Ejecuta un ejemplo como “FactoryTest.ino”.

Selecciona la tarjeta que tienes conectada a tu ordenador y especifica el puerto serie. Por ejemplo, Wireless_Stick, COM3(si en tu PC es el COM3).




Y ahora vamos a seleccionar un programa ejemplo como FactoryTest.ino



Lo subimos pulsando la siguiente imagen.



Hemos observado como las dos tarjetas se comunican perfectamente y se envían datos mutuamente. El resultado se ve en los display de las tarjetas y las salidas serie de los ordenadores, donde hemos comprobado que todo funciona correctamente.

Bueno hemos instalado todo el hardware y funciona, ahora vamos a aprender funciones básicas de LoRa para realizar pequeños programas de comunicación


API DE LORA

Una vez instaladas todas las librerías necesarias para poder utilizar nuestra tarjeta, podemos acceder, y descargar a nuestro ordenador si queremos (no es necesario), al GitHub donde tenemos todas las librerías que hemos instalado incluido los ejemplos https://github.com/HelTecAutomation/Heltec_ESP32. Y más concretamente en este sitio podemos acceder a la API de LoRa donde nos explica cómo funciona https://github.com/HelTecAutomation/Heltec_ESP32/blob/master/src/lora/API.md.

A modo de resumen vamos a ver las funciones más importantes:

Nuestras librerías traen consigo una, elaborada por la propia casa para facilitarnos la inicialización de las funciones LoRa. Luego en un principio debemos incluir esta librería en nuestro código (heltec.h) de la siguiente manera:


         #include “heltec.h”
Esta librería ya se encarga de incluir las librerías necesarias de Lora (como lora.h) y el display.
En nuestro programa y dentro de la parte de la función “setup()” debemos inicializar LoRa de esta forma:


Heltec.begin(true /*DisplayEnable Enable*/, true /*Heltec.Heltec.Heltec.LoRa Disable*/, true /*Serial Enable*/, true /*PABOOST Enable*/, 868E6 /*long BAND*/);
Luego nuestros programas que utilizan LoRa siempre deben contener para inicializar la tarjeta el siguiente código:



Enviar un mensaje.
Iniciamos la secuencia de envío llamando a la siguiente función de la librería Lora.


     Lora.beginPacket();
Esta función devuelve 1 si todo va bien o 0 si hay un error.
A continuación, vamos a confeccionar el mensaje, escribiendo datos en el packet así:


     Lora.write(byte);
     Lora.write(buffer, length);
     Lora.print(byte);
     Lora.print(buffer, length);

Cualquiera de las cuatro funciones es válida, donde pone “byte” podemos introducir un texto, por ejemplo, Lora.write(“hola”), o si utilizamos las otras podemos poner un mensaje ya guardado especificando su longitud.
Por último, para enviar el mensaje debemos llamar a la función:


      Lora.endPacket();
Que devuelve 1 si ha tenido existo y 0 si hay algún error.

Un ejemplo sencillo de un programa que envíe constantemente un mensaje por Lora es el siguiente.


Recibir un mensaje.

Ahora vamos a ver cómo se recibe un mensaje Lora.

Leemos el tamaño del paquete enviado en el mensaje entrante usando:


     LoRa.parsePacket();
esta función devuelve un número entero (int) que es el tamaño en bytes del mensaje. Si cuando ejecutemos la función devuelve un tamaño igual a cero, entonces no hemos recibido ningún mensaje.

A continuación, tras verificar que hemos recibido algo, porque el tamaño es mayor que cero, comenzamos a leer carácter a carácter con la función:


      LoRa.read();
Teniendo en cuenta que cada vez que leemos desaparece del packet lo leído. Así que para saber cuándo acabar de leer hay que saber si hay disponible mensaje todavía. Utilizamos la siguiente función para ver si queda mensaje disponible:


      Lora.avilable();
Otra función interesante es obtener la potencia con la que se ha recibido el mensaje. Este parámetro se conoce como RSSI y se define así:
El indicador de fuerza de la señal recibida (RSSI por las siglas del inglés Received Signal Strength Indicator), es una escala de referencia (en relación a 1 mW) para medir el nivel de potencia de las señales recibidas por un dispositivo en las redes inalámbricas.


     LoRa.packetRssi();
Un ejemplo:



Recibir un mensaje utilizando una interrupción.

Hasta ahora para recibir un mensaje, debíamos estar constantemente sondeando la red LoRa y ocupados viendo si llegaba algo. Esto nos obligaba a bloquear el programa sin poder realizar otra cosa. Pero existe una forma de que podamos realizar una programación de la tarjeta aparte, por ejemplo obtener la temperatura a partir de un sensor de temperatura. Y a su vez, como en un segundo nivel, LoRa está sondeando para ver si recibe algo. Esto lo hace utilizando lo que se llama una interrupción del chip ESP32 utilizando la siguiente función:


                      LoRa.onReceive(onReceive);
Cuando reciba algo llamará a la función “sehaRecibido()”, o a la que pongamos nosotros entre los paréntesis. Luego debemos crearla:


                         Void onReceive(int packetSize) {
                             ….aqui dentro ponemos el código que lee el paquete                         }
Otra función importante es la que pone en modo de recepción a la tarjeta, para que esté escuchando:


       LoRa.receive();
Un ejemplo de un receptor de mensajes Lora utilizando interrupción es:



Ahora vamos a realizar distintas mediciones de comunicación entre dos tarjetas ESP32 utilizando LoRa e iremos incrementando las distancias.



Llegado hasta aquí y debido a la situación de la pandemia ocasionada por la enfermedad producida por el coronavirus covid-19, se suspendieron las clases.
Ya lo único que resta para finalizar el proyecto sería que una tarjeta ESP32 se le conectara un sensor (por ejemplo de temperatura y humedad DH11 o DHT22)siguiendo el manual https://randomnerdtutorials.com/esp32-dht11-dht22-temperature-humidity-sensor-arduino-ide/ ,  y realizar un programa para transmitir la información del sensor a distintas distancias y a través de LoRa hasta la tarjeta receptora.

Como conclusión el proyecto no se ha llegado a finalizar por completo, pero los alumnos han conocido LoRa, cómo trasmitir y recibir distintas información en áreas donde puede ser la única forma o por lo menos más fiable y económica. De hecho sabemos que se está empezando a utilizar en la agricultura junto con IoT.
A partir de aquí y en colaboración con Norbasky, para futuros proyectos se podría platear poder enviar telemetría (altura, presión, temperatura, posición...)utilizando LoRa. Se me ocurre como un medio idóneo ya que a la altura que puede alcanzar un prototipo de satélite no hay ni Wifi, Bluetooth, ni datos móviles. Pero esto sería en otro proyecto.


Bibliografía:


ESP32 Series DataSheet, Version 3.2, Espressif Systems
Kolban's Book on ESP32 (Neil Kolban)September 2018
https://github.com/HelTecAutomation/Heltec_ESP32
https://www.youtube.com/user/prevideos3gp/playlists
https://randomnerdtutorials.com
https://www.instructables.com/id/ESP32-Lora-Changing-Frequency/
https://randomnerdtutorials.com/esp32-dht11-dht22-temperature-humidity-sensor-arduino-ide/

lunes, 13 de abril de 2020

NORBA LANDERS - 2º ESO: actividades propuestas



Este año, lamentablemente, los alumnos de 2º ESO de Tecnología no hemos podido participar realizando una parte del proyecto “Norba Landers”. Se trataría del montaje y puesta en funcionamiento de vehículos motorizados.

Durante el curso 2019-2020 estamos en la Fase II del proyecto y nuestro cometido era añadir sensores a los vehículos y controlarlos de manera remota. En su lugar y para poder llevar a cabo la fase III el curso próximo hemos planteado tres actividades que nos permitirán conectar con el proyecto NorbaSky y que a su vez se pueden realizar desde casa. Con estas actividades se pretende reforzar los contenidos de la materia de Tecnología estudiados en 2º ESO durante el presente curso 2019-2020.

Os mostramos a continuación las tres propuestas:

domingo, 12 de abril de 2020

NORBA LANDERS - 2º ESO: resumen realizado durante el confinamiento

Con esta presentación Candela nos muestra la información seleccionada sobre los vehículos programados. Esperamos que os guste y que nos sirva para el curso próximo. Os añadiremos más trabajos de los alumnos de 2º ESO sobre los Norba Lander.

martes, 31 de marzo de 2020

Cálculo de fuerzas y su aprovechamiento con aerogeneradores y mecanismos hidráulicos

Durante el presente curso, la aportación de los alumnos de 4º ESO_Tecnología y de los 1º Bachillerato_Tecnología Industrial I en el proyecto "Alcanzando las estrellas" ha girado en torno al cálculo de  fuerzas con diferentes orígenes y su aprovechamiento con el menor coste y tiempo a emplear. Para ello, nuestros proyectos de investigación y construcción se han basado en la realización de un aerogenerador (Unidad Didáctica: ENERGÍAS) y en la creación de un dispositivo en el que la  fuerza empleada tuviera su origen en unas jeringas (Unidad Didática: NEUMÁTICA). En ambos estudios, que deberían haberse completado durante los dos últimos trimestres del curso, se han realizado comparaciones entre las fuerzas obtenidas y el estudiado sus aprovechamientos con el mínimo de pérdidas.

Construcción de un aerogenerador y mecanismos hidráulicos con jeringas 

El primer objetivo del proyecto, para alumnos de 4º de ESO, es el de construir una maqueta de un aerogenerador, para aprovechar la fuerza del viento, y poder con su energía iluminar una vivienda cercana (o bien recargar un pequeño dispositivo  electrónico). El segundo objetivo, para los alumnos de 1º de Bachillerato es el de realizar mecanismos hidráulicos móviles que aprovechen la fuerza del aire para levantar un peso o impulsar un mecanismo, todo ello con una cierta fuerza de rozamiento, haciendo uso para ello de jeringas (estudiando sus diámetros y formas de conexión). 
Estructura desplegada mediante inyección de aire para comprobar resistencia y peso.


Ejemplo para calcular la transmisión de la energía cinética del aerogenerador.

Estudios previos a la construcción de prototipos

Previo a la construcción del aerogenerador, los alumnos basaron sus investigaciones fundamentalmente en comprender el funcionamiento del  mismo y en el estudio de  la conversión de energía cinética en eléctrica. Fue de gran ayuda la información del grupo acciona y  de varias web similares.
Ejemplo de inyección de aire para transmitir y modificar el movimiento con un peso determinado.
Repasamos la Ley de Betz, de la cual deducimos que el aprovechamiento de la energía producida podría ser como máximo del 55%, independientemente del diseño realizado. También estudiamos, la Ley de Joule en base a la que, una vez producida nuestra corriente eléctrica continua en el aerogenerador, esta ha de transformase y elevar su tensión para evitar pérdidas y que el transporte se realice en las condiciones más óptimas, con un mínimo de calentamiento en los cables.

Realizando diseños de piezas para impresora 3D

Un grupo de alumnos de Tecnología Industrial I se ayudó, para realizar un óptimo diseño, del programa gratuito de modelado en 3D Tinkercad, obteniendo un prototipo que más tarde, imprimiríamos en  el aula-taller en 3D.

Diseñando modelos de  piezas para el aerogenerador. Autor: G. Barrigón (alumno de TIN I)

Conclusiones finales y agradecimientos

Aunque los proyectos llegaron a su fin, no se realizó una documentación amplia debido a la interrupción de las clases presenciales por el confinamiento. Además, las pocas fotos que pudimos realizar del desarrollo de los mismos se encuentran en alguno de los ordenadores del centro, en las cuentas de los alumnos, con lo que nos resulta bastante complicado acceder a ellas en la situación en la que nos encotramos debido al actual estado de alarma.

Hemos quedado sumamente satisfechos con muy buenos resultados obtenidos en el desarrollo de las maquetas y prototipos. Sin embargo, nos ha quedado pendiente realizar los cálculos y las tablas para su posterior estudio comparativo entre fuerzas, gastos de materiales, dimensionamiento y  rendimientos, algo que sin duda realizaremos durante el próximo curso. Nos resultaba sumamente complicado realizar este estudio de forma viable y guida desde casa durante el confinamiento.

Desde estas líneas agradecer a los alumnos de primero de bachillerato de TIN I y cuarto de ESO de Tecnología, el entusiasmo con el que han trabajado en el aula-taller.

tecnomanoli@educarex.es

lunes, 30 de marzo de 2020

NORBA FLYING: diseño, planificación y construcción de un drone

El proyecto surge a raíz del Proyecto NorbaSky Norba-Flying, como propuesta de dos alumnos de Bachillerato muy interesados en la programación Libre (Arduino) y en el control remoto de este tipo de vehículos, tan demandado en la actualidad. Comenzamos a trabajar en el proyecto durante el curso pasado (2018-19), realizando una planificación en varias fases, las cuales podrían no concluir durante el citado curso escolar debido a la complejidad del proyecto y a las pocas horas disponibles para el mismo.

Este proyecto consiste en el diseño y construcción de un dron o vehículo aéreo no tripulado, programado mediante Arduino (placa específica Arducoptero) y controlado desde un mando de radio control (Automatic Frequency Hopping Digital System), usando en la medida de lo posible material reciclado. Aunque ciertas partes del diseño han sido "copiadas" de Internet, otras han sido realizadas al 100% por nosotros mismos.

A continuación describiremos brevemente las distintas fases en las que hemos dividido el proyecto para su realización:


Fase 1 (octubre 2018- enero 2019) 

En esta fase, nuestro objetivo es la de diseñar realizar el diseño del chasis o estructura del vehículo, así como la ubicación de las fuentes de alimentación y la disposición de los motores. Asimismo, con el fin de realizar pruebas, en esta fase hemos creado las especificaciones de cómo debe ser el software para Arduino que nos permita no solo controlar el vuelo, sino mantenerlo en alto y tener en cuenta en todo momento de niveles de alimentación del propio vehículo (gran hándicap de este tipo de vehículos, la autonomía de alimentación respecto al peso que soporta y poder mantenerlo en el aire).


Se tienen en cuenta en este proyecto la autonomía de los motores del dron (gran problema en este tipo de vehículos en la actualidad) y el peso del mismo, aspectos fundamentales a la hora de diseñar la aerodinámica del vehículo y sus posibilidades de movimiento y prestaciones.

Por supuesto, se realiza el control por medio de una placa Arduino específica para este tipo de vehículos (Arducóptero), a partir de código abierto, modificado para nuestro proyecto.

Se prevé desde el comienzo, el diseño y construcción del vehículo controlado a larga distancia, a partir de placa Arduino (Arducoptero), teniendo en cuenta todos los aspectos técnicos (construcción, ensamblaje, disposición de dispositivos) y tecnológicos (control remoto, fuente/s de alimentación, aerodinámica) que conlleva la fabricación de este tipo de vehículos.

Fase 2 (marzo 2019)

Durante las últimas semanas del curso pasado se realizó el montaje del chasis del drone, con las conexiones correspondientes a motores brushless con sus ESC correspondientes y la placa de derivación.

En todo momento, se han realizado los trabajos respecto a los objetivos marcados y a la disponibilidad de los materiales. El diseño de la estructura y el control de los motores con las placas de prueba, se realizan en primer lugar y una vez controlado el código y se prevé el chasis se prueban los cuatro motores y la elevación (solo unos centímetro). Finalmente se realiza el control remoto.

Fase 3 (final de curso 2018-2019)

Tras numerosos problemas con las pruebas realizadas durante la fase 2, la mayoría de ellas relacionadas con el peso (900 g), la potencia de los motores (el cálculo nos llevaba a derivar a cada motor una fuerza para 400g), y el amperaje proporcionado por las baterías, comenzamos a conseguir los primeros resultados satisfactorios después de realizar numerosas correcciones y ajustes, calibrando todas las variables del despegue, probando distintos giros del motor, cambiando el amperaje de las baterías LiPo,...

En primer lugar, despegan dos motores (contiguos) y vemos como se controlan los motores desde el mando de radio control, observando que los motores giran a la velocidad estimada pero no es suficiente para levantar el drone.


Después de numerosos cambios en la velocidad de giro de los distintos motores, de forma global y cruzada, se consiguen realizar pequeñas elevaciones no estables.


Se toman las siguientes consideraciones sobre el proceso de diseño y construcción del drone:

  • Se consigue realizar con éxito tanto el montaje, ensamblaje y construcción del chasis del drones, así como los componentes eléctricos y electrónicos del mismo. Los alumnos han montado tanto la parte mecánica y de soporte del drone, como el control y programación del drone.
  • Análisis del vuelo de un drone que se caracteriza por el control de los cuatro motores juntos o alternos para el giro (en paralelo o cruzado).
  • Fundamental (quizás el aspecto más importante) la relación peso / potencia y por consiguiente el peso de la batería dentro del drone (en nuestro caso la suma del peso del chasis + peso de la batería + peso de los motores/ESC), ha sido muy superior a la potencia que podían ejercer los cuatro motores para levantar el vuelo.

Durante el siguiente curso escolar se intentará avanzar en el desarrollo del drone y solucionar todos los problemas que han quedado en el aire.
     

jueves, 27 de febrero de 2020

Conexión remota con la base lunar mediante bluetooth

Como introducción a la conexión remota de vehículo a motor se realiza una actividad para el taller de Tecnología que consiste en apagar y encender leds, y a continuación, se realizaría el montaje de vehículo con motor, donde situaríamos, como primer elemento de comunicación un módulo de Bluetooth HC-06, como se puede ver en las siguientes imágenes. Debido a las circunstancias excepcionales que estamos viviendo, únicamente se ha podido realizar con todo el grupo la primera práctica (encendido de Leds) dejando para el próximo curso el resto del proyecto (montaje en el vehículo, prototipo realizado por el profesor).

Montaje de módulo Bluetooth HC-06 con un motor en placa Arduino

Montaje de módulo Bluetooth en vehículo (dos motores)
Para la práctica del encendido de los diodos Leds se realiza una simulación en Tinkercad, y en las siguientes sesiones se explica como implementar el control remoto desde el móvil para encender y apagar los diodos leds (App inventor).


Código copiable


Fase 1 del proyecto: control remoto de dos diodos leds


Fase 2: "Captura del objetivo final del proyecto" control de motores por Bluetooth (desde un dispositovo móvil)


martes, 7 de enero de 2020

Montando un potente PC "gaming" muy económico


Durante este curso queremos renovar algunos de los obsoletos Pentium IV o Intel Core Duo que aún utilizan los alumnos por nuevos equipos de altas prestaciones, en donde además de programar placas arduino, podamos utilizar todo tipo de herramientas informáticas de forma fluida. Sin embargo, como de costumbre, nos frena enormemente el tema de la economía. Nunca hay dinero, y si nos ceñimos únicamente a la torre (con todos sus componentes), la mayoría de las soluciones de gama media-alta sobrepasan holgadamente los 700€, con lo que escasamente podríamos adquirir uno o a lo sumo dos equipos con las cantidades concedidas al proyecto NorbaSky. Nosotros vamos a lograr reducir esta cifra a la mínima expresión sin que esto repercuta un ápice del rendimiento del equipo deseado. Para ello vamos a realizar varias propuestas:

Primera propuesta: todos los componentes nuevos (400€)

Si nos ceñimos a un diseño por piezas, con un sistema operativo basado en Linux y adquirimos los componentes por Internet en alguna web relativamente económica, podremos reducir el precio a poco más de 400€. El montaje lo realizaríamos con nuestros alumnos, lo que contribuiría por una parte a su aprendizaje, y por otra no menos importante a reducir costes. A continuación describimos los componentes seleccionados en la tienda online PcComponentes.
Listado de componentes que forman nuestra primera opción de PC potente y económico
Nuestro equipo estaría formado por un procesador AMD Ryzen 3 3200G, que hemos seleccionado por su buen rendimiento unido a un relativo bajo consumo energético y su excelente relación calidad/precio, de las mejores del mercado. Además, los procesadores G disponen de gráfica integrada, lo cual nos permite ahorrar costes, y del disipador+ventilador incluido en el paquete (un ahorro adicional). Por lo general, las gráficas integradas suelen ser bastante pobres y no aptas para equipos "gaming". Sin embargo, las gráficas Radeon Vega 8 que incluyen los procesadores Ryzen, si bien no pueden compararse con las mejores gráficas dedicadas del mercado, si que representan lo mejor que hay en gráficas integradas, proporcionando una potencia gráfica suficiente para la mayoría de los juegos más exigentes. Además, como no queremos el equipo para jugar, creemos que esta elección es de las más acertadas.
Como referencia, comentar que según PassMark, procesadores de equipos "high-mid" obtienen puntuaciones en el rango de 2500 a 6500, y de equipos "high-end" obtienen puntuaciones superiores a 6500. Así, nuestra CPU Ryzen se movería dentro de este último grupo.
Características técnicas y rendimiento medio de los procesadores AMD Ryzen 3 3200G.
Procesadores de un rendimiento similar podrían ser el Intel i7 6700HQ con una gráfica notablemente inferior con un precio de 259€ o el Intel Xeon W3670 para servidores sin gráfica integrada con un precio de 450€ (al que habría que añadir el precio de una tarjeta gráfica), ambos con una puntuación, según PassMark por debajo de los 8200 puntos.
Procesadore AMD Ryzen 3 3200G.
En cuanto a la memoria RAM, nos hemos decantado por dos módulos DDR4 de 8 Gbytes cada uno a 2400MHz, con una velocidad suficientemente rápida para nuestro equipo, y relativamente baratos, dentro de lo que podemos encontrar en el mercado. Esto dota a nuestro equipo de 16Gb, de los cuales se tomarán 2Gb para la gráfica integrada del procesador, algo que no nos supone mucho problema.
Dos módulos de memoria RAM DDR4 Kingston HiperX Fury.
En la elección de la placa base, nos hemos decantado por un modelo de Asus, una de nuestras marcas favoritas, con socket AM4, a la cual hay que actualizar su firmware para que funcione con los procesadores Ryzen de tercera generación (esta actualización la realizan en la tienda por 15€ o podemos hacerla nosotros mismos, para lo cual necesitaríamos un procesador AMD de generación anterior). Puede sonar extraño el tema de la actualización necesaria, pero es algo bastante común en un gran número de placas con socket AM4, ya que son muchos los distintos procesadores pueden funcionar en ellas, y como las memorias Flash que contienen los controladores de los distintos procesadores son limitadas, estas tienen que actualizarse cuando los se van a utilizar con CPU's demasiado modernas.
Placa base Asus Prime B450M-A con socket AM4.
En cuanto a la caja, nos hemos decantado por el modelo más económico que hemos encontrado que incluya una fuente de alimentación de al menos 500w y que sea de un tamaño adecuado para poder incluir en ella cualquier tipo de placa base. Quizá no sea la caja más atractiva ni la mejor fuente de alimentación, pero por menos de 30€ es muy difícil encontrar una combinación así.
Caja L-Link Kluster, con fuente de alimentación de 500W, frontal USB 3.0 y E/S de audio.
Finalmente en el disco duro no hemos reparado en gastos, optando por un Samsung 970 EVO Plus SSD MVMe M.2 de 500Gb, el cual, además de tener una capacidad aceptable, es lo más rápido que hemos encontrado con diferencia, con una velocidad media de lectura de 3500MB/s y una velocidad de escritura de 3200MB/s. Si lo comparamos con la mayoría de los SSD sATA convencionales, sus velocidades de lectura y escritura se mueven en torno a los 500MB/s, y comparando con los discos duros tradicionales HD sATA, sus velocidades no suelen superar los 100MB/s.
Unidad de almacenamiento SSD MVMe M.2 Samsung 970 EVO Plus, una de las más rápidas del mercado dentro de su sector.

 

Segunda propuesta: placa x79 y algún componente usado (300€)

Si bien es cierto que hemos obtenido un buen precio con la primera opción, podemos reducir el precio eliminando de la ecuación a la placa, procesador y memoria RAM (con lo que aún pagaríamos 153€), sustituyendo estas por una nueva placa con CPU y memoria de prestaciones similares o superiores obtenidas del mercado chino de segunda mano a un precio irrisorio (todo en torno a 100€), y añadiendo al conjunto una gráfica dedicada de gama media. El precio del conjunto se reduciría drásticamente. Veamos cómo.
Los procesadores Xeon de Intel son ampliamente utilizados en el sector profesional, en servidores de alto rendimiento y en supercomputadores, en donde es necesario disponer de la máxima potencia de cálculo posible. Este tipo de procesadores son, por lo general, bastante superiores a los utilizados en el ámbito doméstico (siempre que hablemos de generaciones y tecnología similar), aunque también mucho más caros. En los centros de supercomputación se instalan en partidas de cientos o o incluso miles de ellos para una única máquina, y al cabo de unos años son sustituidos por otra partida más nueva y potente, desechando los viejos, que generalmente se venden como productos de segunda mano en mercados como el chino. Sin embargo, estos últimos procesadores, pese a considerarse "antiguos", aún tienen una capacidad de proceso muy superior a la de muchas CPU's domésticas de gama alta. Para hacernos una idea de las cifras de rendimiento y precio de las que estamos hablando, veamos una comparativa:
En primer lugar, vamos a centrarnos en el modesto Intel Xeon E5 2620 v2, que salió al mercado en el año 2013 por unos 400€ (no era el Xeon más potente, pero estaba bien posicionado, con un rendimiento de 8624 según PassMark). Hoy en día podría adquirirse nuevo por 100€, pero también por menos de 20€ en el mercado de segunda mano.
Características técnicas y rendimiento medio de los procesadores Intel Xeon E5-2620 v2.

Evolución de los precios del procesador Xeon E5-2620v2 (nuevo) desde su salida al mercado.
Apariencia del procesador Xeon E5-2620v2.
Estas CPU's podrían ser sustituidas en los avanzados centros de cálculo por procesadores mucho más potentes tales como el Intel Xeon W-3275M o el AMD Ryzen Threadripper 3970X con un rendimiento entre 3 y 4 veces superior, y con un precio que actualmente se mueve en torno a los 7.000€ (Intel) o a los 2.000€ (AMD). Eso deja por tanto fuera del mercado de la supercomputación al Xeon E5 2620 v2, lo que no significa que no pueda competir en rendimiento con una CPU doméstica de alto rendimiento.
Características técnicas y rendimiento medio de los procesadores Intel Xeon W-3275M..

Características técnicas y rendimiento de los procesadores AMD Ryzen Threadripper 3970X.
Uno de los problemas que tienen estas antiguas CPU's es que no son compatibles con la mayor parte de las placas bases domésticas de hoy en día. Están pensados para servidores con tecnología de hace varios años. Sin embargo, en el mercado chino han visto el potencial, y han desarrollado una serie de placas X79 con conectores y puertos actuales, pero totalmente compatibles. Su precio no difiere mucho del de las actuales placas domésticas de reconocidas marcas, pero muchos vendedores las suelen ofrecer en packs junto a procesadores y memorias de segunda mano obtenidos por la vía comentada.
Numerosa oferta de placas x79 con socket 2011 vendidas en packs con procesadores Xeon y memoria DDR3 para servidores ambos ya usados en otras máquinas.
Evidentemente, todas estas placas chinas no son iguales. Como en todos los mercados, las hay de mejor y peor calidad. Para nuestro estudio nos hemos decantado por PLEXHD de las que hemos oído hablar muy bien, hemos tenido la oportunidad de probar, y hemos comprobado de primera mano los numerosos detalles extra que contienen (interruptor para inicio y reset, display de código de error, disipadores extra para todos los componentes susceptibles de calentarse,...). Podemos encontrar packs "CPU Xeon E5 2620 v2+placa x79+memoria DDR3 ECC 1600MHz" por unos 100€, frente a los casi 270€ que nos costaba el pack "CPU+placa+memoria" de la primera opción estudiada.
Placa x79 con LGA 2011 con soporte para memoria RAM DDR3 ECC para servidores.
Con esto podríamos tener un equipo por unos 250€ (añadiendo torre, fuente de alimentación y disco SSD) al que habría que añadir aún un ventilador+disipador (unos 15€) y una sencilla gráfica dedicada (35€), resultando un total aproximado que no superará los 300€.
Distinta oferta de disipadores+ventilador para placas con socket 2011.
Distinta oferta de targetas gráficas dedicadas de prestaciones medias con un TDP moderado.

 

Tercera propuesta: placa x79 y reciclado de componentes (135€)

Si queremos rizar el rizo y economizar al máximo nuestro equipo nuevo, podríamos reutilizar la caja, fuente de alimentación, disipador+ventilador y discos duros, reduciendo aún más el precio del equipo. Sin embargo, esto está sujeto a varios condicionantes importantes y a la disposición de material adecuado para su uso.
  • La fuente de alimentación. Necesitamos disponer de una con potencia suficiente para alimentar a nuestro PC. Los vendedores de placas x79 recomiendan el uso de fuentes de al menos 500w, lo cual es un dato bastante general. Existen procesadores Xeon compatibles con un TDP mayor de 180w, y gráficas dedicadas con un TDP mayor de 200w. Esto supone que en condiciones de máximo estrés, podrían consumirse 380w entre estos dos componentes, dejando 120w para alimentar los módulos de RAM, discos duros, ventiladores y cualquier otro componente instalado en el equipo. Sin embargo, nuestro Intel Xeon E5 2620 v2, tiene un TDP de 80w, e intentaremos que la gráfica tenga un consumo menor a 60w, con lo que en teoría podríamos utilizar una fuente de alimentación de 300w sin ningún tipo de problemas. Existen páginas como geeknetic que nos permiten calcular la potencia que necesitamos en nuestra fuente de alimentación a partir de la información de todos los componentes que instalemos en nuestro equipo.
Fuente de alimentación ATX
  • Disipador/ventilador. Necesitamos un disipador que se adapte al socket 2011, que es el que tiene nuestra placa x79. Cualquier disipador podría valer, siempre que se adapte al hueco donde debe ser colocado. Quizá sea necesario realizar algunos cortes en el mismo para adaptarlo adecuadamente. No habría problema en reducir mínimamente su tamaño, ya que los procesadores Xeon son más eficientes que los de uso doméstico y se calientan menos. Nosotros hemos adaptado disipadores de sockets 478 para Pentium IV a golpe de sierra y taladro, para convertirlos al formato 2011, añadiendo mediante unos alambres un ventilador algo más grande del que se incluía el propio disipador, sin ningún tipo de problema, manteniendo la CPU en situaciones de estrés a una temperatura inferior a los 40ºC (en torno a 30ºC con un uso moderado).
    Ventilador + Disipador diseñados para socket 478 usado en algunos Pentium IV

    Rectificación de disipador para socket 478 para socket 2011 eliminando las esquinas del mismo con una sierra, y fijando el ventilador mediante alambres ubicados en orificios creados haciendo uso de un taladro.
    Detalle de disipador rectificado y taladros para ubicación de alambres.
  • Caja o torre. Es necesario disponer de una torre amplia, que permita la inserción de placas de al menos 410x410mm, lo cual es un tamaño relativamente grande. En nuestro caso, una antigua caja de un Pentium II nos ha servido perfectamente en las pruebas preliminares.
  • Almacenamiento. Quizá este sea uno de los puntos más complicados e influyentes en el rendimiento de nuestro equipo. En primer lugar, debemos disponer de discos para su reutilización. Los antiguos discos duros IDE, bastante lentos, no son compatibles con las placas x79. Existen adaptadores muy baratos que permiten utilizarlos sin problemas, pero que producen una merma en la velocidad de los mismos. Los discos duros sATA tradicionales son totalmente compatibles, pero comparados con la opción del Samsung 970 EVO Plus SSD MVMe M.2 de 500Gb, son enormemente más lentos. Esto no debe afectar en general a la ejecución de programas, pero si al tiempo de carga de los mismos que puede pasar de décimas de segundo a más de 10 ó 12 segundos en algunos casos, y eso es algo muy molesto para los usuarios. Una solución intermedia podría pasar por adquirir en primer lugar un SSD MVMe M.2 más económico, de menor capacidad y no tan rápido como el Samsung para instalar en él todo el software, y en segundo lugar instalar uno o varios discos sATA (mejor varios configurados en RAID) para el almacenamiento de datos del usuario. De esta forma reduciríamos costes y minimizaríamos el impacto en el rendimiento del sistema. Además podrían reducirse los continuos accesos del sistema operativo a disco haciendo uso de discos RAM para la mayor parte de los archivos temporales del sistema. 
Adaptador para convertir un disco duro IDE en un disco sATA compatible con placas base modernas.


Antiguo disco duro IDE con conector de 40 pines, incompatible con placas actuales


Disco duro sATA compatible con placas actuales, pero cada vez más en desuso
Moderna unidad de almacenamiento SSD MVMe M.2 con velocidades hasta 100 veces mayores que las de los discos duros tradicionales
Mediante el uso total de componentes reciclados, y sin adquirir un moderno disco SSD M.2, nuestro equipo podría reducir su precio hasta los 135€ (placa x79, CPU Xeon usada, RAM usada, gráfica dedicada económica y resto de componentes reutilizados).

Cuarta propuesta: reutilización y rectificación de la CPU (20€)

La última propuesta, nos permitirá aprovechar nuestro antiguo equipo con socket 775, dotado de procesador Intel Pentium IV,  Intel Core 2 Duo o Intel Core 2 Quad y sustituir el procesador por un Intel Xeon para socket 771. Este tipo de procesadores, ya obsoletos, siguen teniendo un rendimiento relativamente bueno, no tanto como para montar un equipo excesivamente potente, pero si para montar un equipo de sobremesa de gama media-alta que funcione muy fluido con la mayoría de las aplicaciones ofimáticas del mercado.
Para hacernos una idea en el incremento de rendimiento, pensad que podríamos sustituir un Intel Core 2 Duo E4500 con un rendimiento de 1272 según PassMark por un Intel Xeon X5460 con un rendimiento de 4319 (con un rendimiento similar a un Core i5-4278U o a un Core i3-3225, ambos procesadores de gama media).



Ahora bien, el resto de componentes prácticamente no podrían ser actualizados. No podríamos incluir una unidad de almacenamiento MVMe M.2, aunque si un disco SSD con interfaz sATA, entre 5 y 10 veces más rápido que un disco duro convencional. Y la memoria RAM siempre sería más lenta que las actuales memorias DDR4. Pese a todo, podríamos actualizar el equipo por menos de 20 euros, obteniendo como resultado un buen equipo de gama media. ¿Sorprendente? ¿Donde está la pega?
La pega es que para evitar que se hagan este tipo de actualizaciones, Intel ha diseñado los sockets 775 y 771 ligeramente distintos para no poder realizar este tipo de sustituciones. Prácticamente ambos sockets son idénticos, salvo por unas pequeñas muescas de plástico y una mínima diferencia en la ubicación de determinadas patillas de alimentación eléctrica creadas "a conciencia" para evitar la deseada compatibilidad.
Detalle de diferentes muescas existentes el los procesadores. Las patillas eliminadas por las muescas no son funcionales en ninguno de los dos modelos.
Por tanto, para colocar un procesador preparado para un socket 771 en un socket 775 habría que eliminar los topes molestos de la placa 775, y puentear correctamente un par de patillas del procesador Xeon para corregir las diferencias electricas entre ambos sockets.
Eliminando topes de una placa con socket 775 para que pueda colocarse perfectamente un procesador Xeon compatible con placas 771.
Detalle de patillas que deben ser puenteadas en el procesador Xeon para ubicar correctamente los pines de alimentación eléctrica del mismo. El puente puede realizarse con una pequeña pegatina metálica.
Detalle de pegatina disponible en el mercado para realizar el puenteado de dos patillas.
Procesador con pegatina comercial ubicada para el correcto puente del procesador.
Aunque no me gusta usar la siguiente expresión, puede que consideremos esto como "un trabajo de chinos", pero es precisamente por eso por lo que "los chinos ya hacen ese trabajo por nosotros" y podemos adquirir en numerosas paginas CPU's Xeon compatibles de segunda mano puenteadas a las que les han realizado una muesca para no tener que tocar nuestra placa base, y todo por un importe inferior a los 20€. Con esto, solamente tendríamos que adquirir estas CPU's y pincharlas en nuestra placa base (y en algunos casos actualizar el firmware de la bios de la citada placa).
Procesador Xeon x5460 modificado, con muescas extra y puenteado correspondiente para funcionar en una placa LGA 775
Espero que esta entrada os haya resultado util para realizar vuestro estudio de mercado y podais montar un potente PC para juegos o trabajo gastando una mínima cantidad de dinero.