¿Cuándo dejó de tener sentido dar esta clase?

Durante toda mi vida trabajé en informática educativa, desde diversos roles. Hoy me encuentro elaborando un material con mi equipo de trabajo, y surgió un tema que realmente nos sorprendió.

Lo confirmamos leyendo en Wikipedia:

Un kilobyte es una unidad de almacenamiento de información cuyo símbolo es el kB (con la ‘k’ en minúsculas) y equivale a 103 (mil) bytes. Aunque el prefijo griego kilo- (χίλιοι) significa «mil», el término «kilobyte» y el símbolo «kB» se han utilizado históricamente para hacer referencia tanto a 1024 (210) bytes como a 1000 (103) bytes, dependiendo del contexto, en los campos de la informática y de la tecnología de la información.123

Para solucionar esta confusión, la Comisión Electrotécnica Internacional publicó en 1998 un apéndice al estándar IEC 60027-2 donde se instauraban los prefijos binarios, naciendo la unidad kibibyte para designar 210 bytes y considerándose el uso de la palabra kilobyte no válido a dichos efectos.

Es decir que, siguiendo con la misma fuente, ahora son estas las Unidades de medida de Información:

Sistema Internacional (decimal) ISO/IEC 80000-13 (binario)
Múltiplo (símbolo) SI Múltiplo (símbolo) ISO/IEC
kilobyte (kB)103 kibibyte (KiB)210
megabyte (MB)106 mebibyte (MiB)220
gigabyte (GB)109 gibibyte (GiB)230
terabyte (TB)1012 tebibyte (TiB)240
petabyte (PB)1015 pebibyte (PiB)250
exabyte (EB)1018 exbibyte (EiB)260
zettabyte (ZB)1021 zebibyte (ZiB)270
yottabyte (YB)1024 yobibyte (YiB)280

En conclusión, lo que hace 20 años era toda una extensa explicación sobre el funcionamiento interno de las computadoras y el sistema binario, dejó de tener sentido… como tantas otras cosas que hemos enseñado.

Lo que Paula me enseñó

Paula me enseñó a dejar de usar la palabra “normal”.
¿Qué es lo “normal”? ¿Lo que dicta la norma? ¿Lo que aparece en la mayoría? ¿Cuál mayoría, la percibida? Si dejamos de ocultar a las personas que se apartan de esa normalidad impuesta, veremos que casi no hay personas que sean “normales”. Lo “normal” es la diversidad.

Aprendí lo que es el capacitismo, es decir, la discriminación según la capacidad de las personas. No sólo se trata de “ser amables” con alguien que tiene una discapacidad. Se trata de generar un entorno en el que las personas, todas las personas, puedan transitar, navegar por la web, acceder a servicios y que no se queden afuera del chiste ni de la foto.

Me enseñó que el respeto por el cuerpo del otro es mucho más que un concepto de la ESI. También es entender que si una persona se traslada en una silla de ruedas y no hay rampa, esa persona no quiere que la “alcen”, quizás por sufrir dolores en todo el cuerpo, o quizás porque simplemente no quiere que manipulen su cuerpo.

Paula me enseñó que tener una discapacidad no es un concepto binario. Alguien que se traslada en silla de ruedas quizás puede pararse, dar dos pasitos, pero no puede caminar tres metros. Alquien que usa un bastón de invidente, tal vez tiene una mínima visión para poder distinguir siluetas o algo en una pantalla de celular.

Paula me hizo generar interrogantes de los que no tengo aún respuesta… ¿Qué pasa cuando deseamos tener un hijo y la expresión es “que sea sanito”? ¿Qué pasa cuando proponemos “poner el cuerpo en la lucha”, en qué lugar quedan les militantes que no pueden salir de su casa?

Estoy segura de que Paula me enseñó muchas más cosas, pero en este pequeño homenaje están aquellas que fueron más fuertes y que resuenan en mi vida cotidiana al interactuar con otras personas.

Preparar un diseño 3D con Tinkercad

Cuando compré mi impresora 3D no me imaginé que me iba a dar tanta felicidad.

Al principio me limité a bajar modelos gratuitos (y algunos que pagué) para imprimir y aprender lo mínimo para empezar:

  • conceptos básicos, como saber qué es la cama, qué es el extrusor
  • comprar el filamento adecuado (PLA en mi impresora)
  • calibrar la impresora,
  • cambiar el filamento,
  • encontrar o crear los archivos de tipo .stl (imágenes en 3D)
  • abrirlos con el programa Cura y convertirlos en .gcode (que es lo que utiliza la impresora)
  • entender las medidas de lo que voy a imprimir y la cantidad de tiempo que llevará la impresión, y saber que me tengo que quedar al lado porque muchísimas veces la impresión falla y hay que suspenderla.

A veces el objeto se despega y comienza a “bailar”, otras veces simplemente no imprime una parte o comienza a imprimir “en el aire”…

Después de muchas impresiones descargadas o compradas, me empecé a animar a crear mis propios archivos .stl, utilizando Tinkercad

Crear un portaclips en Tinkercad

Lo que aquí puede parecer un lapicero termina siendo un portaclips, por la cantidad de horas que llevaría imprimir algo tan grande. Por ejemplo, este portaclips con el nombre de Lautaro, lleva 1 hora 56 minutos! Y es muy pequeño.

Programa Cura, porta clips que lleva una hora 56 minutos.

¿Cómo empezar? Primero, entramos a https://www.tinkercad.com/

Generamos un usuario y elegimos la opción Crear un Diseño.

Una vez que tenemos el plano de trabajo, veremos arriba a la izquierda el nombre que nos puso Tinkercad para el diseño.

Cambiar el nombre del diseño

Haciendo clic, lo cambiamos por el nombre de nuestro diseño.

Ahora tendremos a la derecha una barra de herramientas con objetos. Vamos a comenzar por crear un cubo.

Al poner un cuerpo en el plano de trabajo tenemos distintos iconos (nodos negros y blancos, flechas hacia arriba o curvas) para moverlo, cambiar su tamaño o girarlo.

Podemos rotar la visualización utilizando el icono que tenemos arriba a la izquierda.

Ahora vamos a poner un cubo hueco dentro del cubo sólido.

Para ver claramente el resultado, seleccionamos todo y utilizamos la opción “agrupar”

Una vez agrupado, podemos ver claramente que el cubo hueco nos dejó también ahuecada la base, y no es lo que queremos hacer, así que desagrupamos, subimos el cubo hueco para que quede un piso sólido, y volvemos a agrupar.

Ahora sí!

Una vez que tenemos la forma, podemos utilizar los nodos para modificar los tamaños.

Lapicero

También le agregamos algunas letras y dibujos:

¡Listo! Ya tenemos nuestro objeto para exportar en formato .stl y llevarlo al Cura, que es el programa que genera el archivo que necesita la impresora.

Sensor de humedad para tierra: HW-080

Para un proyecto en escuelas secundarias, me compré unos sensores HW-080, que miden la humedad de la tierra. Estas sondas pueden utilizarse solas y devolverán un valor binario, o con un módulo para convertir en analógicos los valores. Yo las compré con el módulo:

Sonda y módulo analógico
Sonda + módulo para convertir los valores en analógicos

Los pude utilizar en menos de cinco minutos gracias a este post de madnesselectronics.com donde obtuve el siguiente código:

define sensor A0
void setup(){
    pinMode(sensor, INPUT);
    Serial.begin(9600);
  }
 void loop(){
 //Se hace la lectura analoga del pin A0 (sensor) y se pasa por la funcion map() para ajustar los valores leidos a los porcentajes que queremos utilizar   
int valorHumedad = map(analogRead(sensor), 0, 1023, 100, 0);
Serial.print("Humedad: ");
Serial.print(valorHumedad);
Serial.println("%"); 
delay(100);
  }

Las conexiones, en el caso de los sensores que yo adquirí, no tienen ninguna indicación. ¡Está todo en chino! Por lo tanto, sólo me quedó imitar la posición de la guía del enlace:

El resultado: al insertar en una maceta con tierra el sensor, veremos en el monitor serie el porcentaje de humedad.

Mi nueva impresora Wanhao Duplicator i3 mini

Al fin! Hace bastante tiempo ando dando vueltas con respecto al tema de la impresión 3D. Empecé intentando armar una con un grupo de personas, pero me resultó demasiado complejo como para repetirlo sola.

Me suscribí a una lista de correos, y comencé a leer los mil y un problemas que puede tener alguien al imprimir… prácticamente había descartado la idea de tener una impresora en casa.

Sin embargo, mi opinión cambió al conversar con una colega (Marisa Conde, Graciasss!) que me confirmó que al tener una impresora aprendería, efectivamente, a imprimir. Que no es simplemente pulsar un botón y que salga.

Así que me puse a leer artículos como este, en el que se mencionan y evalúan las impresoras más económicas (año 2018). Allí dice:

“La Wanhao Duplicator i3 V2.1 es una impresora 3D del fabricante chino Wanhao. Esta impresora que se ofrece en kit es una evolución de su primera versión de la Duplicator I3. Una máquina basada en la Prusa completamente open source que cuenta con un marco de metal que le da gran estabilidad. Tiene un volumen de impresión de 200 x 200 x 180 mm, una resolución de capa de 0,1 mm y una cama calefactada, que le abre la posibilidad de imprimir con más plásticos.”

Así que me animé. Leí que por más que viniese armada, no era enchufarla y que funcione. Y sin embargo, prácticamente es así. Con la guía paso a paso se empieza por cortar los cinchos, colocar el filamento, quitar el resto de material, insertar la tarjeta, e imprimir los modelos que ya trae en la mini sd.

Impresora Wanhao i3 duplicator mini
Impresora Wanhao i3 duplicator mini

Después intenté descargar un archivo (de hecho, lo compré) e imprimirlo. Pero por hoy, fracasé en el intento (creé el archivo en Cura pero no lo hice bien). Mañana será otro día.

HueBot o GüeBot

Continuando en mi camino de hacer distintas partes de un robot humanoide, esta vez le tocó a los ojos.

Siempre me preguntaba cómo hacer para crear ojos que giren hacia arriba/abajo y hacia los costados.

Así nació esta primera versión de HueBot o GüeBot, el robot de ojos de huevos.

Pensando en cómo darle estética al robotito, recordé mis tuppers comprados para esto mismo (para hacer robotitos). Así que lo armé de tal manera que el giro vertical fue reemplazado por una especie de apertura de párpados.

La estructura de conexiones es igual a la de la mano robótica, pero esta vez, al utilizar tres servomotores, no fue necesario agregar las pilas.

El próximo desafío es el de agregar sensores o manejarlo a través del BlueTooth.

El código hasta ahora:

#include <Servo.h>

 Servo myservo1; 
 Servo myservo2;
 Servo myservo3;

 void setup() {
 myservo1.attach(9);
 myservo2.attach(10);
 myservo3.attach(6);
 }
 void loop() {
 //arriba
 myservo1.write(15); 
 delay(2000);
 delay(1000);
 //abajo
 myservo1.write(40); 
 delay(2000);
 //izquierda
 myservo2.write(40);
 myservo3.write(40);
 delay(500);
 //derecha
 myservo2.write(80);
 myservo3.write(80);
 delay(1000);
 //izquierda
 myservo2.write(50);
 myservo3.write(50);
 delay(2000);
 }

Mover un servo motor utilizando el celular

En la entrada anterior expliqué cómo conectar el Módulo Bluetooth HC-06 al arduino y enviar mensajes desde el celular a través de una app llamada Bluetooth SPP.

Modo Control

Hasta ahora lo utilizamos en modo “terminal”. Ya podemos pasar al modo “Control” de la aplicación (en el menú de hamburguesa – las tres rayitas)

Comenzamos investigando qué recibe el Arduino cuando tocamos cada tecla. Para ello, abrimos el monitor serie y pulsamos los botones. Recibe una A, una B, una C, una D y cuando soltamos, una Z.

Por lo tanto, modificamos el programa para que nos avise qué recibe cada vez que tocamos una flecha. Vamos a pedirle que cuando se oprime el botón hacia arriba nos devuelva “Arriba”, y eso mismo con todos los botones:

void setup()  
 {
   Serial.begin(9600);
 }
 void loop() 
 {
   if (Serial.available())
   {
     char dato=Serial.read();
     Serial.print("Dato recibido: ");
     Serial.println(dato);
     if (dato=='B') {
       Serial.println("Abajo");
     }
        if (dato=='A') {
       Serial.println("Arriba");
     }
        if (dato=='C') {
       Serial.println("Izquierda");   
     }
        if (dato=='D') {
       Serial.println("Derecha");
     }
   }
 }

Y el resultado, al tocar las flechas:

Conectando el Servo Motor Tower Pro Micro Servo 9g

Si nunca utilizaste el servo motor, comenzá por aprender a utilizarlo, por ejemplo, con esta entrada: Servo motor 9g Tower Pro

Ahora vamos a hacer esas mismas conexiones, repasando:

  • cable anaranjado: va a un pin de tipo PWD (los de la tilde de la eñe)
  • cable color marrón: GND (tierra)
  • cable color rojo: +5v

El problema es que tenemos el pin de +5v ocupado por el módulo HC-06, así que vamos a tener que conectar el módulo de Bluetooth y el Servo a una breadboard / placa de pruebas, y de allí sacar un cable para el pin de Arduino llamado +5v

Ahora le agregamos unas líneas a nuestro programa, para que se mueva el servo motor al presionar los botones:

#include <Servo.h>
 
Servo myservo;   

void setup()  
 {
   Serial.begin(9600);
   myservo.attach(9);
 }

void loop() 
 {
   if (Serial.available())
   {
     char dato=Serial.read();
     Serial.print("Dato recibido: ");
     Serial.println(dato);
     if (dato=='B') {
       Serial.println("Abajo");
       myservo.write(90);
         delay(15); 
     }
        if (dato=='A') {
       Serial.println("Arriba");
       myservo.write(0);
         delay(15); 
     }
        if (dato=='C') {
       Serial.println("Izquierda"); 
       myservo.write(180);  
     }
        if (dato=='D') {
       Serial.println("Derecha");
       myservo.write(45);
     }
   }
 }

Como el servo no gira 360 grados, los botones no lo mandan exactamente arriba, abajo, derecha, izquierda. Ya mejoraremos eso en otra entrada.

Módulo Bluetooth en Arduino

Hace mucho tiempo me compré un kit de domótica que no llegué a usar. Hoy que tengo un ratito me puse a probar el módulo Bluetooth HC-06 (el que tiene cuatro pines).

Las conexiones se realizan de la siguiente manera:

  • VCC va a 5v
  • GND a GND
  • TX al pin RX (el 0 en mi Arduino)
  • RX al pin TX (el 1 en mi Arduino)

Muy importante: cuando TX y RX están conectados, Arduino da error al descargar el programa. Eso significa que si lo utilizamos de esta manera necesitamos desconectar ambos pines y resetear la placa cada vez que vamos a descargar código al arduino. Esto se resuelve utilizando la librería SoftwareSerial para conectar otros pines.

Tomé el primer código del sitio naylampmechatronics.com

void setup()  
{
  Serial.begin(9600);
}

void loop() 
{
  if (Serial.available())
  {
    char dato=Serial.read();
    Serial.print("Dato recibido: ");
    Serial.println(dato);
  }
}

Conectar el celular al Bluetooth HC-06

Lo primero que hay que hacer es instalarse una app, por ejemplo Bluetooth SPP.

Me costó muchísimo esta parte. No lograba entender lo que estaba ocurriendo. Según se explica en varios posteos, en el módulo bluetooth HC-06:

  • La luz roja titilando significa que está visible pero no conectado
  • La luz roja encendida fija significa que la conexión se estableció

Lo que a mí me funcionó es lo siguiente:

  • Encender el bluetooth del celular y poner “buscar”. No me aparecía ninguno de los nombres que figuran en los distintos posteos, así que probé conectarme a uno que aparecía y se conectó (con el pin 0000, también podría ser 1234). Aún así la luz seguía titilando, por eso mi confusión.
  • En la aplicación de celular (Bluetooth SPP en mi caso), poner “Conectar”. Recién allí deja de titilar la luz del HC-06

Una vez establecida la conexión, ya podemos escribir en el celular y ver el resultado en el monitor serie (que se visualiza desde el menú Herramientas del Arduino IDE):

¡Bien! Ya estamos recibiendo contenido desde el celular al Arduino, y podemos verlo en el monitor serie.

En el próximo posteo voy a mostrar cómo manejar un servo motor a través de la app del celular, con Arduino y el módulo Bluetooth HC-06.

¡Borré un foro con todas sus conversaciones! Pero lo recuperé.

Hoy me volvió a pasar (¡sí, ya me había pasado!) que en un momento de distracción, en lugar de eliminar otra cosa eliminé un foro… que estaba en uso. Pensé muy mal de Moodle… no podía ser tan fácil equivocarse!

Entré en pánico.

Hasta que luego de un ratito me acordé de la existencia de la Papelera de reciclaje del curso, donde se guardan durante 7 días los elementos eliminados.

Esta opción aparece sólo cuando se acaba de borrar algo, pero cuando la papelera está vacía no aparece en el menú.

Al acceder a esta opción, podemos hacer clic en “Restaurar”, y respirar nuevamente con tranquilidad…