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.

Primeros pasos con Arduino: Mi presentación para el Flisol

Comparto aquí la presentación que utilicé el día del Flisol 2019, en UNPAZ.

En el taller (de una hora de duración) mostré muy rápidamente cual es la estructura de la placa Arduino Uno, y utilizamos leds, un motor y un sensor de distancia.

También expliqué y practicamos el uso de la placa de pruebas o breadboard.


Estoy muy conforme con la manera en que voy aprendiendo a llevar adelante este tipo de talleres, ya que cada vez que una dificultad se repite, encuentro la manera de encarar ese contenido para saltear ese obstáculo.

Y esta vez me gustó mucho la manera en que expliqué el uso de la protoboard, con estos tres videos:

Cómo agregar un usuario a la lista de sudoers

Ya es la segunda vez que me pasa este mes, jaja! Es porque estuve instalando linux en varias computadoras: Voy a instalar algo y la terminal me responde que no tengo permisos para eso, es decir, mi usuario no está en la lista de sudoers.

Así que esta vez lo voy a anotar en este blog para futuras referencias.

Si tu usuario es root, el primer paso es ir a la terminal y poner:

su

Es decir, acceder al nivel de administrador.

Después, escribir:

visudo

Con este comando editamos el archivo /etc/sudoers

Allí buscamos el renglón que dice:

root ALL=(ALL) ALL

Lo copiamos debajo y ponemos el nombre del usuario al que queremos darle todos los permisos. Tiene que quedar así:

root ALL=(ALL) ALL
tunombre ALL=(ALL) ALL

Otros casos serían:

Linux, linux y linux

Hoy estuve todo el día divirtiéndome con… ¡Linux!

Como dejó de funcionar el disco de mi computadora de escritorio, empecé a poner en orden viejitas netbooks (y también una no tan viejita All in one) que me “tiraron por la cabeza” personas que ya no las querían.

Netbook con Huayra Linux, All in one con Ubuntu y netbook con Debia

Tres computadoras, tres distros de Linux

En la primer computadora, una All in One con un procesador i3, instalé un Ubuntu. Me sorprendió lo fácil que fue todo, incluso.. ¡detectó solo la impresora inalámbrica y ahora puedo imprimir por wifi! (antes no podía). La impresora es una Samsung m2020, es maravillosa <3

En la segunda, un compañero de trabajo me había instalado un Debian, pero yo no podía acceder con el usuario administrador, así que tuve que hacer una pequeña investigación para:

En la tercera compu, la menos potente, más antigua, quise probar Huayra. La verdad, funciona bien. La compu es lenta de por sí, pero para llevar y traer archivos, o acceder a un sitio web, está perfecta así.

Ya me bajé lubuntu para probarlo en esa compu, pero será otro día…

¡Felices fiestas! Con cuatro matrices MAX7219CNG

¿Qué se necesita para hacer este cartel?

  • Cuatro matrices led MAX7219CNG 
  • Una placa Arduino Uno
  • Una protoboard
  • Muchos cables

Matrices led

Estas matrices tienen la posibilidad de conectarse “en cadena”. En la parte de arriba tiene cuatro conectores, y debajo otros cuatro.

Los conectores de la parte superior y los de la parte inferior son equivalentes, exceptuando el que se utiliza para conectar unos con otros:

  • DIN / entrada de datos
  • DOUT / salida de datos

Ahora, las conexiones para utilizar este código van de la siguiente manera:

  • Todos los VCC se conectan al pin 5v del Arduino UNO
  • Todos los GND se conectan a tierra, a uno de los pines GND del Arduino UNO
  • Todos los CS van al pin 10 del Arduino
  • Todos los CLK van al pin 11 del Arduino
  • Los pines DIN y DOUT se conectan en cadena de la siguiente manera:

Conexiones pin de datos

 

El código lo tomé de este enlace, es el último, funciona perfecto: http://kio4.com/arduino/15bmatriz8x8.htm

Piano de frutas sólo con Arduino

Siempre se ve el clásico ejemplo del piano de bananas. Cuando decidí probar hacer mi propio piano de frutas, encontré que todos los caminos me conducían a Makey Makey.

Sin embargo, buscando un poco más encontré en este posteo del blog untitled.es, la manera de hacer un piano de frutas sin utilizar Makey Makey.

Pagando con un twitt se pueden descargar el plano y el código para realizar un piano de frutas.

El código descargado comienza con esta hermosa leyenda:

/*
Realizado por http://Untitled.es 
Descubre nuevos tutoriales todas las semanas.

Puedes utilizar este ejemplo para lo que te apetezca: 
- Modificarlo 
- Venderlo 
- Leerlo en forma de cuento antes de dormir

Incluso, si decides añadirlo a tu proyecto, puedes compartir la fuente.
*/

Y después de varios intentos, cambiar esto y aquello, desconectar todo y empezar por una sola fruta, descubrí que mi primer piano de frutas no sonaba porque le había puesto una resistencia demasiado grande.

Finalmente, mi código de dos notas (y un led “testigo” en el pin 13) quedó así:

int nota1 = 261;

int nota2 = 1046; 

int zumbador = 8;

void setup() {

  Serial.begin(9600);

  pinMode(zumbador, OUTPUT);  

}

void loop() {

  Serial.print("Analog 1: ");

  Serial.println(analogRead(0));

  if (analogRead(0)<=1020) {

    digitalWrite(13, HIGH); 

    tone(zumbador, nota1);

    delay(100);

    noTone(zumbador);

    digitalWrite(13, LOW);

    }

  if (analogRead(1)<=1020) {

   tone(zumbador, nota2);

    delay(100);

    noTone(zumbador);

    }

    }

Actualizando mi versión de Linux

Bueno, tenía un Huayra viejito instalado por Euge Núñez hace unos cuatro años, y ya no daba para más.
Así que empecé por comprar una notebook con Windows y tuve que hacer allí la copia de seguridad. Luego, descargar un Debian y crear el pendrive instalable.
Aquí relato mis desventuras…
1) Siempre que intenté crear una red en casa fracasé. Esta vez me lo tomé en serio y seguí estos pasos: Configurar servidor Samba para transferir archivos entre Linux y windows

2) Las carpetas se veían y podía copiar un archivo. De todas formas me tiraba muchos errores de permisos hasta que empecé a editar los permisos de las carpetas en Linux, con el botón derecho, permisos, y le di todos los permisos a todos los usuarios y allí tuve éxito de verdad.

3) Luego busqué instrucciones para instalar linux. Según leí no era bueno actualizar por terminal porque lo que yo quería era cambiar de versión. Así que me descargué un Debian. Primero tuve que averiguar si mi computadora era de 32 o de 64 bits. Para ello utilicé el comando lscpu.

alumno@huayra:~$ lscpu
Architecture: i686
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian

4) No logré entender las instrucciones para  “Network Instal from a Minimal CD” (recomendada cuando uno tiene una buena conexión a Internet y va a realizar la instalación en una sola computadora), así que al final me bajé la versión live de 64 bits y luego de ejecutar Debian desde un pendrive elegí la opción “Instalar”. Todo anduvo de maravillas.

5) No funcionaba el sonido después de la instalación, y después de probar algunas cosas con los drivers, me di cuenta de que tenía desenchufados los parlantes… ja!

Un amigo, cuando le comenté lo del sonido me indicó cómo empezar con el tema. Estos comandos pueden ayudarte a detectar componentes:
lshw (hay que instalarlo)
lspci
lsusb

Estoy re contenta con mi computadora con Debian!

 

Crear un formulario en PHP (con campos obligatorios)

Si tenemos una página web y queremos recibir algún tipo de comentarios, probablemente estemos buscando la manera de crear un formulario. Si la página está hecha con un CMS (como WordPress), existen formularios prediseñados que resuelven el problema de una vez.

Pero en el caso de no tener esa posibilidad, lo que necesitamos es tener en nuestro hosting la posibilidad de ejecutar un archivo de tipo PHP. Este es un formulario que yo uso y funciona, aquí está el archivo para descargar y usar como base.

Después de mostrar este formulario me pidieron que hubiese campos obligatorios… ¡otro trabajo interesante!

Para lograrlo, desarmé por completo ese formulario y armé otro, con dos archivos de PHP:

1) El usuario completa los datos y pone “enviar”

2) Se ejecuta el segundo archivo que se fija si hay determinados campos vacíos. Si están vacíos, vuelve al archivo PHP anterior pero enviándole los valores ya completados por el usuario (para que no tenga que escribir todo otra vez).

3) Se vuelve a ejecutar uno y otro PHP hasta que, al estar completos todos los campos, se envía el mail a la dirección configurada.

Para lograr crear ese formulario me basé en varios posteos que encontré en la web, pero básicamente me salvó uno muy breve que explicaba el uso de la función empty: si la variable “nombre” está vacía, escribir ….

if(empty($_POST[‘nombre’])) {
echo “<p>Es necesario que completes tu nombre.</p> “;
}

Aquí los dos formularios, el primero llamado contacto.php y el segundo llamado procesar.php:  formularios.rar

Es importante también repasar estos consejos, para evitar que nuestro formulario sea una barrera para personas con discapacidad: Consejos para crear un formulario accesible

Mis últimas lecturas

Mil soles espléndidos, del escritor afgano Khaled Hosseini.

2013-04-29 18.25.41Impresionante y durísima historia de vida de dos mujeres afganas, que viven la democracia y luego el relegamiento de las mujeres en el mundo talibán, debiendo abandonar todo sueño de crecimiento, de tener servicio de salud, de estudiar… y de mostrar su rostro en público.

Lo bello y lo triste, del escritor japonés Yasunari Kawabata.

Encontré algo de belleza en los paisajes y las personas, pero mucha, mucha tristeza y locura. Hermoso libro.

Los desposeídos, de la escritora estadounidense Ursula K. Le Guin

Una muy interesante historia de dos planetas, uno muy similar a nuestra Tierra capitalista, y otro similar a un utópico comunismo. Las especulaciones filosóficas que hace la autora sobre los conflictos internos de ambas sociedades son realmente interesantes.

Marlene, de la escritora argentina Florencia Bonelli

Un libro simple, probablemente una novela rosa, pero la verdad, me divirtió mucho y lo leí rapidísimo (eso significa que logró atraparme)