domingo, 25 de septiembre de 2016

Multiconexiones con Easy Plug Learning Kit (III). Uso de tarjeta de expansión con servomotores, joystick, IR siguelíneas... (ArduBlock)

Easy Plug Learning Kit (wiki Keyestudio)

(Artículo en construcción - Programa beta)

En esta tercer artículo, el objetivo es conectar y aprovechar la placa de expansión adquirida como producto complementario para analizar con varias funcionalidades combinadas:
  • Siguelíneas.
  • Evitaobstáculos.
  • Robot dirigible por joystick.
  • Sensor de luz.
  • Semáforo y otros.
El kit dispone de una placa de cartón duro que se fija mediante unos pernos como base. Como la longitud de los pernos es sólo un poco menor que el espacio entre placa Arduino y base acartonada, con sólo aflojar un poco los tornillos se pueden insertar los servomotores. Incluso sin retirar los conectores, ha funcionado el robot generado rápidamente así.


Se han encontrado problemas al conectar miniservos de 180 grados de rotación y ciertos motores-hélice que provocaban vibraciones en las luces o afectaban a las conexiones causando parpadeos y efectos no esperados, por lo que se realizarán nuevas pruebas en un futuro para poder incluirlos.

Los conectores y componentes utilizados al inicio son los que indicamos a continuación, pero aprovechando la misma programación podemos probar otros muchos y experimentar simplemente intercambiando módulos o conectando otros que tengamos disponibles.

A0 - IR siguelíneas en tarjeta de expansión.
A1 - IR siguelíneas en tarjeta de expansión.
A2 - Sensor de luz en la placa principal.

JoyStick de 5 cables conectado en la placa de expansión:
     A4 - Tres primeros cables agrupados.
     A5 - Cuarto cable a pin externo.
     D7 - Quinto cable a pin externo para controlar la parada.
     Cuidado. Según la placa, los pines a veces están en orden distinto.

Sensor ultrasonido en placa de expansión.
     D0 - Cables agrupados.
     D1 - Cuarto cable.

D2 - Potenciometro (placa principal).
D3 - Botón (placa principal).
D8 - Led en  placa de expansión. Zumbador activo en placa principal.
D9 - Servomotor continuo de 360 grados izquierdo en placa de expansión. Led en placa principal.
D10 - Servomotor continuo de 360 grados izquierdo en placa de expansión. Led en placa principal.
D11 - Led en placa de expansión y otro led en laprincipal.
D12 - Led en la placa de expansión.
D13 - Led en la placa de expansión.





Multiconexiones con Easy Plug Learning Kit (II). Uso de conectores digitales y analógicos (ArduBlock)

 Easy Plug Learning Kit (búsqueda de imágenes)

(Artículo en construcción)

En esta ocasión, el objetivo es conectar tanto componentes digitales como analógicos en una misma placa principal de Easy Plug Learning Kit para fácilmente introducir sus diversos tipos y funcionalidades.

Los conectores y componentes utilizados al inicio son los que indicamos a continuación, pero aprovechando la misma programación podemos probar otros muchos y experimentar simplemente intercambiando módulos o conectando otros que tengamos disponibles.

D2 - Botón.
D3 - Sensor de choque/colisión.
D4 - Sensor táctil.
D5 - Led.
D6 - Led.
D7 - Led.
D8 - Zumbador activo.
D9 - Zumbador pasivo.
D10 - Sensor de vibración.
D11 - Led.
D12 - Led.
D13 - Led.
A0 - Potenciómetro.
A1 - Sensor de sonido.
A2 - Sensor de luz.
A3 - Sendsor de agua/lluvia.
A4 - Libre.
A5 - Libre.
IIC - Pantalla LCD aquirido de forma complementaria. Precisa incluir la librería SaintSmart New Liquid Crystal dentro de la carpeta libraries de Arduino IDE.

domingo, 18 de septiembre de 2016

Multiconexiones con Easy Plug Learning Kit (I). Uso de conectores digitales (ArduBlock)


 Prueba de la placa de Easy Plug Learning Kit de Keyestudio con conectores digitales D2 a D13 usados.

Hace un tiempo adquirí el Easy Plug Learning Kit de Keyestudio para testear su posible uso en Educación Primaria.

Aunque aún no he explorado todas sus posibilidades, me parece un estupendo kit para comenzar con programación Arduino.

Tiene algunos puntos a mejorar, como quizás:
  • El número de cables de conexión que trae el kit quizás es escaso teniendo en cuenta el buen número de módulos conectables, por lo que para hacer esta prueba he necesitado adquirir algunos más.
  • En el momento de la adquisición, los tres leds incluidos eran del mismo color, Recientemente he comprobado que algún kit incorpora un led de cada color, pero no sé si es un cambio definitivo. Para realizar la prueba, se han adquirido dos leds más.
  • Aunque están ampliando el número de módulos, en el momento de hacer las pruebas no había motores o servomotores de tipo Easy Plug. No obstante, esta dificultad se puede solventar adquiriendo una placa de expansión de conexiones, insertándola en los pines interiores y conectando a la misma aquellos sensores no disponibles.
Entre las curiosidades de la placa podemos citar:
  • En vez de incorporar conectores Easy Plug para los pines 0 y 1, estos están ocupados por un conector i2C y otro de tipo com. Las posibilidades de los mismos están pendientes de prueba.
  • Como he indicado antes, la posibilidad de insertar un tarjeta de expansión con conectores de entrada y salida clásicos amplia sus posibilidades. Ello permite, por ejemplo, que una señal permita encender dos leds a la vez, el situado en el conector de la placa principal y el conectado en la placa de expansión con el mismo número. Incluso durante las pruebas,  al pulsar un botón que se conectó en el pin 2 de la placa de expansión, produjo que se encendiera la luz del módulo detector de choque que en ese momento se encontraba conectado en el conector 2 Easy Plug de la placa principal.
Y teniendo en cuenta la seguridad:
  • Aunque no se han apreciado calentamientos de la placa al conectar los módulos de forma errónea, sí que se ha observado al usar la placa de expansión, ya sea por que se ha insertado mal o se ha cometido algún error al conectar los cables de los componentes en los pines de tierra, voltaje y señal. Esto último ocurre en cualquier placa Arduino en la que se conecten los cables de tal forma que provoquen un cortocircuito.
  • El Easy Plug Learning Kit incorpora una placa que se puede atornillar en su base, lo que puede ayudar en la prevención de cortocircuitos, calentamientos o montaje con otros materiales.
El programa ArduBlock que se ha utilizado para hacer las pruebas con conectores digitales múltiples ha sido el siguiente:



En el mismo se conectaron los siguientes módulos:
  • Conector digital D2: Botón.
  • Conector D3: Sensor de colisión (choque).
  • Conector D4: Sensor de inclinación.
  • Conector D5: Potenciómetro. El potenciómetro es un módulo analógico, pero puede conectarse a un conector digital y girarlo para, por ejemplo, apagar y encender un led en función a partir de un punto de giro.
  • Conector D6: Sensor de sonido. Aunque es un módulo analógico, el nivel de partida permite uso digital, pero en este caso hay que hablar con fuerza o soplar directamente para ver el efecto.
  • Conector D7: Sensor táctil.
  • Conector D8 a D13: Leds o zumbadores activos.
Avisos y curiosidades:
  • Se ha preparado el programa para que, de inicio, todos los leds y zumbadores del kit no se activen si no se actúa sobre los sensores. En el caso del potenciómetro, será necesario comprobarlo y ponerlo en la posición oportuna al conectarlo.
  • No todos los sensores tienen configurado de serie el mismo comportamiento. Cuando se pulsa el botón proporcionado en el kit, el efecto que produce es el mismo que si se pulsa el sensor de choque, pero el contrario que si se pulsa el sensor de tacto. Por ello, en este caso, los pines en los que se conectan el sensor de sonido y el sensor táctil indican la condición como Bajo en vez de Alto.
  • Los conectores D3, D5 y D6 (además de los D9, D10 y D11) permiten el manejo de señales PWM. Podemos probar otros componentes en ellos.
  • Probemos a, por ejemplo, conectar el sensor digital de vibración del kit en los conectores D4, D5 y D6 para apreciar alguna diferencia.
  • Se recomienda probar a conectar otros sensores analógicos en conectores digitales e investigar su utilidad. Hay que tener en cuenta que no todos los componentes analógicos producen efectos apreciables en este caso, pues influye el valor establecido por defecto.
Placa Easy Plug.
 


Placa Easy Plug con placa de expansión.
 


Placa de expansión en funcionamiento


En este caso,  al pulsar el botón del conector D3 se envía una señal al pin 9 que hace que se enciendan a la vez el led conectado en el pin D9 de la placa Easy Plug y el led conectado en la placa de expansión. Además, como en el conector Easy Plug hay un sensor de choque, se enciende la luz de aviso de choque.

miércoles, 31 de agosto de 2016

Escritorio común en MAX (Ubuntu): compartiendo archivos, carpetas y lanzadores con todos los usuarios



Recientemente me ha surgido la necesidad de crear y compartir carpetas y lanzadores en todos los usuarios de MAX, la distribución linux de la Consejería de Educación, Juventud y Deporte de Madrid. Se trata de una distribución educativa derivada de Ubuntu, por lo que supongo que el proceso que se describe a continuación también es válido en Ubuntu.

La intención inicial fue crear un lanzador que ejecutara un archivo inicio.html existente dentro de una carpeta  que en esos momentos sólo era accesible para el usuario alumno. Dicho archivo mostraba una página con varios iconos desde los que se accedía a varias aplicaciones incluidas en varias subcarpetas interiores. 

El usuario alumno en MAX es muy útil. Una vez que se cierra sesión desaparecen todos los cambios, como carpetas o archivos guardados en el escritorio. 

Pero en este caso precisaba que el lanzador no se perdiera al cerrar sesión o apagar el equipo.

Tras consultar a varios compañeros "maxeros", me indicaron una forma más eficaz de hacerlo, permitiendo que el lanzador fuera visible para todos los usuarios y no sólo para alumno.

Le doy especialmente las gracias a Roberto Mengíbar como creador del script que permite simular una especie de escritorio común en MAX.

El proceso a seguir no es complicado, pero requiere cierta paciencia y seguir algunas indicaciones y consejos.

Proceso resumido
  1. Copiar el archivo "escritorio_comun" (descargar script) en la carpeta urs/bin y darle permisos de ejecución.
  2. Ejecutar el script desde terminal mediante el comando "sudo escritorio_comun -c" que creará tanto la carpeta "/etc/escritorio_comun" en la que poner los lanzadores como el archivo /etc/xdg/autostart/escritorio_comun.desktop" que permite ejecutar el archivo al iniciar sesión.
  3. Preparar el equipo con el contenido deseado y copiar o crear las carpetas, archivos y lanzadores para luego compartirlos en la carpeta "/etc/escritorio_comun" y darle permisos de grupo dialout, de sólo lectura y de ejecución como un programa cuando sea oportuno.
  4. Reiniciar la sesión para que los cambios tengan efecto y aparezcan en el escritorio los enlaces simbólicos de los contenidos incluidos.
Consejos recomendados
  1. Realizar todas las acciones como superusuario utilizando en los comandos sudo.
  2. Si no se dominan los comandos Linux que permiten crear o copiar archivos y carpetas y o cambiar permisos, utilizar gksu nautilus para ello. Es muy conveniente que dichas acciones se realicen siempre dentro de la ventana de Nautilus abierta como superusuario. Por ejemplo, si se arrastran desde fuera hacia la ventana Nautilus o a la inversa, podrían aparecer incidencias por cambios de permisos.
  3. Modificar los permisos de todas las carpetas que añadamos para que pertenezcan al grupo dialout
  4. Para evitar cambios en los contenidos por los usuarios que los utilicen, dar permisos de sólo lectura en Grupo u Otros. 
  5. Es posible que se aprecien diferencias entre versiones de MAX. Por ejemplo, se ha apreciado que al copiar los lanzadores desde una memoria USB a MAX 6.5 no es necesario hacer cambios si ya tienen los permisos configurados, pero en el caso de MAX 8.0 ha sido necesario volver a darles  de nuevo permisos de ejecución como un programa después de copiados. Los motivos podrían ser muy diversos y puede no ocurrir en otras configuraciones.
Proceso detallado para crear un entorno similar a un escritorio común
  1. Ingresar como usuario "madrid".
  2. Descargar el archivo-scrip "escritorio_comun" (descargar script) que permite crear el escritorio común. Si se descarga como archivo descomprimido, hay que descomprimirlo.
  3. Acceder a terminal y lanzar Nautilus con permisos de superusuario.
    gksu nautilus
  4. Copiar el archivo "escritorio_comun" en la carpeta en urs/bin.
    Cuando estemos copiando carpetas y archivos, es mejor buscar y copiar los archivos entre las carpetas que se visualizan en la ventana de Nautilus lanzada como superusuario. Si simplemente se arrastran desde una ubicación externa a Nautilus, como por ejemplo desde el escritorio en sí, a veces surgen problemas.
    También se puede hacer mediante línea de comandos.
  5. Dar al archivo escritorio_comun permisos de ejecución como un programa, ya sea con Nautilus o ejecutando el siguiente comando en una nueva terminal:
    sudo chmod 755 /usr/bin/escritorio_comun
  6. La primera vez, ejecutar desde terminal el archivo con el parámetro -c:
    escritorio_comun -c
    En caso de que hubiéramos cerrado la sesión de superusuario, podemos ejecutarlo como:
    sudo escritorio_comun -c
    Con este parámetro se crea el directorio "/etc/escritorio_comun" en el que hay que poner los objetos o contenidos que queremos que aparezcan en el escritorio de todos los usuarios; a los usuarios en realidad se les crea un enlace simbólico.
    Aunque los usuarios pueden borrar los enlaces simbólicos, en el siguiente inicio de sesión volverán a crearse y a estar visibles de nuevo. Los enlaces simbólicos no pueden ser modificados por los usuarios, por lo que los iconos se verán con un candado.
    También se crea el fichero "/etc/xdg/autostart/escritorio_comun.desktop", que es el que permite que el script se ejecute cuando un usuario inicia sesión. Se puede ejecutar el script sin argumentos para mostrar un resumen del proceso a seguir.
  7. Copiar los archivos, carpetas o lanzadores a compartir dentro de  /etc/escritorio_comun.
  8. En caso de incluir carpetas dentro de /etc/escritorio_comun es necesario establecer los permisos oportunos para que sean accesibles por todos los usuarios.
    En MAX 6.5, dentro /etc/escritorio_comun desde Nautilus como superusuario, pulsamos con el botón derecho del ratón sobre la carpeta que nos interese y accedemos a Propiedades y Permisos. En Grupo seleccionamos dialup y, si es lo que deseamos, Acceder a archivos y Sólo lectura. En Otros también sería necesario indicar Acceder a archivos y Sólo lectura.
  9. En el caso de lanzadores normalmente hay que editar los permisos de los mismos para que se puedan ejecutar como un programa.
  10. Para que los cambios surtan efecto y no sea necesario iniciar sesión, podemos ejecutar el script mediante el siguiente comando:
    escritorio_comun -s
    En caso de haber cerrado la sesión de superusuario, podemos ejecutarlo como:
    sudo escritorio_comun -s
    En ese momento, se visualizarán los enlaces simbólicos.
  11. Comprobar el funcionamiento de los enlaces simbólicos.
Crear un lanzador a una archivo en una carpeta en usr/local para que luego pueda aparecer como enlace simbólico

Veamos como ejemplo el proceso para incluir en escritorio común un lanzador a un archivo inicio.html que se encuentra en una carpeta dentro de usr/local. Se trata de una carpeta accesible a todos los usuarios pero que, al no estar copiada dentro del  escritorio común, no puede abrirse directamente.

¡Tengamos en cuenta!

Hay que darle al lanzador un nombre distinto al de cualquier lanzador ya existente en el escritorio, pues se conservaría ese primer lanzador y no se crearía el enlace simbólico con el candado.
  1. Ejecutar Nautilus con permisos de superusuario:
    gksu nautilus
  2. En nuestro caso, copiar la carpeta deseada dentro de usr/local.
  3. Dar permisos de ejecución... Accedemos a Propiedades y Permisos. En Grupo seleccionamos dialup con Acceder a archivos y Sólo lectura. En Otros también indicamos Acceder a archivos y Sólo lectura.
    accedemos a Propiedades y Permisos. En Grupo seleccionamos dialup con Sólo lectura. En Otros también indicamos Sólo lectura.
  4. Desde  la ventana de Nautilus como superusuario, crear el lanzador al archivo inicio.html en /etc/escritorio_comun. También es importante elegir un icono apropiado.

    En nuestro caso el comando del lanzador es:
    firefox /usr/local/InfantilProgramas/inicio.html

    En el caso de querer lanzar una página web en la red sería del tipo:
    firefox http://roble.pntic.mec.es/arum0010/

    Para lanzar el ejecutable de una copia portable de Arduino en la carpeta /usr/local sería:
    /usr/local/Arduino/arduino

    Para crear los lanzadores desde consola:
    cd /etc/escritorio_comun
    sudo gnome-desktop-item-edit milanzador.desktop
    "milanzador" debe sustituirse por el nombre que deseemos darle.

    Es necesario tener claro el icono que se va a utilizar y seleccionarlo al crear el lanzador, ya que luego no se podrá cambiar al copiarlo al escritorio común.

  5. Para que los cambios surtan efecto y no sea necesario iniciar sesión, podemos ejecutar el script mediante el siguiente comando:
    sudo escritorio_comun -s
Configurar varios equipos de un aula

Lo mejor es preparar un primer equipo-modelo con todo lo que deseamos incluir.

Los archivos y carpetas de "/etc/escritorio_comun" (carpetas, archivos y lanzadores) podemos copiarlos a una carpeta compartida o en una memoria externa, y luego copiarlos a cada equipo.

Es conveniente comprobar los permisos de carpetas, archivos y lanzadores.

Borrar contenidos comunes

Ingresamos con con el usuario  madrid. Es necesario borrar como superuarios tanto el contenido de la carpeta "escritorio_comun" como los enlaces simbólicos que se crearon en el escritorio.

jueves, 25 de agosto de 2016

Prácticas Scratch en la Mediateca de EducaMadrid

La Mediateca de Educamadrid permite desde hace unos pocos meses subir contenido en PDF que puede ser insertado en otras web.

Mostramos algunos de los documentos subidos para realizar prácticas con Scratch. Pueden verse a mayor tamaño pulsando sobre el icono que permite activar el modo presentación (flechas de la esquina superior derecha).

    

sábado, 2 de julio de 2016

Componentes que pueden utlizarse en pines analógicos y digitales (ejemplo de alarma PIR) - ArduBlock y Bitbloq


(Artículo en construcción)

En un artículo anterior,  "Alarma de detección de movimiento con zumbador (PIR en pin digital)", mostramos una forma de utilizar el módulo PIR con pines digitales (sensor de infrarrojos pasivo para detección de presencia y movimiento).

Se trata de un módulo que utiliza dos valores extremos, normalmente 0 y algo más de 600 aproximadamente, lo que permite su uso con conectores analógicos.

Veamos un ejemplo de programación en ese segundo caso.

También ocurre con otros módulos y sensores, siempre en función de sus características. 

Arduino IDE 1.0.6 y ArduBlock 20130607 en MAX 6.5 (MAdrid_linuX)

  • Módulo PIR en pin analógico y zumbador "activo".
  •   Módulo PIR en pin analógico y  zumbador "pasivo".

Prepara el montaje:
  • Placa Arduino.
  • Pin analógico 3 - Módulo PIR de detección de presencia/movimiento. 
  • Pin digital 3 - Led.
  • Pin digital 5 - Zumbador (activo o pasivo, según el caso).
Ten en cuenta:
  • En las placas con hileras de tres pines conecta los cables empezando normalmente por "ground".
  • Cambia el estado y valores si es necesario..
  • Algunos módulos pueden ser calibrados mediante los reguladores que incorporan. Normalmente vienen configurados con  valores por defecto adecuados; si no es así, utiliza un destornillador pequeño para girar los reguladores. Averigua esos valores mediante un sencillo programa de medida que muestre dichos valores en el monitor serie.
  • Los módulos PIR más usuales se pueden usar conectados a pines digitales o analógicos.
  • Elige el tipo de zumbador adecuado y utiliza el tipo de bloque oportuno. Los zumbadores pasivos permiten sonidos más musicales, pero apenas se oyen con los bloques "configura pin digital". Por las pruebas realizadas con los zumbadores disponibles, parece que no influye que el pin esté marcado como PWM o no.
Programa:
  • Crea el programa que se muestra en la imagen.
Prueba:
  1. Pulsa en "Cargar a Arduino".
  2. Realiza algún movimiento cerca del módulo PIR.
  3. Describe los pasos y lo que ha ocurrido
  4. ¿Se utiliza alguna variable?
  5. Cambia algunos valores a mayores y menores.
  6. Pulsa en "Cargar a Arduino".
  7. Repite el mismo proceso cambiando los números de pin digital de los actuadores (leds, zumbadores, motor...). 
  8. Cambia la frecuencia del zumbador.
  9. Describe lo que ha ocurrido tras los cambios.
  10. Describe lo que crees que hace cada bloque paso a paso.
  11. Describe 3 posibles usos de este montaje en la vida real.
Investiga:
  • Investiga nuevas posibilidades cambiando valores y bloques.

Bitbloq Offline v1.0.3 en MAX 8.0 (MAdrid_linuX)

El editor no muestra iconos de sensor de presencia/movimiento PIR ni de zumbador pasivo. Para simularlos, en su lugar, utiliza los iconos de sensor de luz y led respectivamente.

Montaje para simular el módulo PIR con el sensor de luz y el zumbador "activo" con un led:


Programa:


Montaje con zumbador "pasivo":

En este caso, se ha mantenido el nombre de sensor de luz para resaltar que puede usarse como PIR y, en realidad, como cualquier otro sensor de características similares no incluido como icono en el editor. El código de programación que se genera en C/Arduino no depende del icono en sí, sino de cómo está implementado el código "oculto" que utiliza ese icono.


Programa:

martes, 28 de junio de 2016

Siguelíneas

(Artículo en construcción)
 
Arduino IDE 1.0.6 y ArduBlock 20130607 en MAX 6.5 (MAdrid_linuX)


Prepara el montaje:
  • Placa Arduino.
  • Siguelíneas con infrarrojos IR (emisor y receptor):
     Pin "analógico" 4 - Infrarrojo derecho.
     Pin "analógico" 5 - Infrarrojo izquierdo.
     Pin digital 9 - Servomotor derecho (parte plana hacia delante).
     Pin digital 10 - Servomotor izquierdo (parte plana hacia adelante).
  • Tablero: superficie blanca con línea negra (no pegada al borde para así facilitar giros).
Ten en cuenta:
  • En las placas con hileras de tres pines conecta los cables empezando normalmente por "ground". Cuidado. En algunas placas los pines están invertidos.
  • Comprueba si tus servomotores están bien calibrados.  
  • Comprueba que los módulos infrarrojos se encuentran a una altura adecuada.
  • Datos de sensores infrarrojos:
    Situados a una altura de unos  2, 3 ó 4 cm, pero puede ser otra en función de las caraterísticas técnicas del módulo IR.
    Con líneas negras estrechas, deben estar muy pegados unos a otros. Prueba con anchos mayores.
    Valor aproximado de negro: 240.
    Valor aproximado de blanco: 778. 
  • No todos los sensores utilizan el mismo rango de valores. 
Programa:
  • Crea el programa que se muestra en la imagen.
Prueba:
  1. Pulsa en "Cargar a Arduino".
  2. Observa los cambios y describe lo que ha ocurrido.
  3. ¿Qué función tienen las variables "IRderecho" e "IRizquierdo"?
  4. Localiza el resto de variables e indica su función.
  5. ¿Influye la posición del servo?
  6. Cambia el nombre de las variables. 
  7. Cambia los valores y los operadores. 
  8. Cambia los pines. 
  9. Describe lo que ha ocurrido tras los cambios.
  10. Describe lo que crees que hace cada bloque paso a paso.
  11. Describe 3 posibles usos de este montaje en la vida real.
Investiga:
  • Investiga nuevas posibilidades cambiando valores y bloques.