domingo, 2 de octubre de 2016

Prácticas básicas WeDo 1.0 para Scratch 1.4 y 2.0



Prácticas con motores

Giro continuo sin fin


Un giro completo aproximado


Un medio giro aproximado y volver


Giro y volver continuo


Giro en un sentido u otro según la tecla pulsada



Prácticas con sensor de inclinación y motores

Girar el motor al inclinar el sensor en cualquier dirección


Girar el motor a izquierda o derecha según se incline el sensor a izquierda o derecha





Prácticas con sensor de distancia y motor

El motor gira al acercarse y se para al alejarse (muerde)


El motor gira y vuelve al acercarse y se para al alejarse (mastica)


El motor acelera al acercarse

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.

Cuidado:
  • No fuerces los componentes.
  • Si las pilas no tienen suficiente potencia, no funcionarán algunos componentes o lo harán de forma poco previsible.
  • Si alguno de los leds o componente se estropea, puede afectar al funcionamiento de las pruebas que vamos a hacer. Sería necesario retirarlo o sustituirlo por uno que funcione apropiadamente. De hecho, un simple led puede hacer que las conexiones no sean apropiadas y provocar efectos no esperados.
  • Pide ayuda cuando tengas dudas.
Pruebas:
  1. Colocar el ultrasonido "orientado hacia el techo" y sin ningún obstáculo delante para  evitar que el zumbador suene continuamente. Podemos desconectar el zumbador D8 de la placa principal y dejar sólo el led en la placa de expansión para al menos ver que funciona.  
  2. Probar el ultrasonido acercando o alejando objetos, con y sin el zumbador conectado.
  3. Comprobar que el potenciómetro está en la posición que permite que el joystick controle los servomotores. Para parar los servomotores pulsamos el joystick hacia abajo. 
  4. Una vez parados los servomotores, movemos la palanca del joystick para comprobar en qué casos se mueven uno o los dos motores y en qué direcciones.
  5. Pulsar el botón D3 para comprobar que se produce el cambio de luces en D11, D12 y D13. Conviene que sean de distinto color tanto en la placa principal como en la placa de expansión para así poder simular un semáforo.
  6. Tapar el sensor de luz para comprobar que se enciende el led D13.
  7. Colocar el potenciómetro en posición de avance autónomo de los servomotores. Deberán de ponerse en marcha solos. 
  8. En posición de avance autónomo, comprobamos lo que ocurre al tapar los sensores IR (infrarrojos) siguelíneas.
  9. Seguimos probando los IR (infrarrojos) siguelíneas acercando objetos de color negro probando que tapen uno, los dos o ninguno de los IR. 
  10. Realizar la misma operación anterior cambiando con un folio blanco debajo y cambiando de blanco a negro.
  11. Cambiar los componentes por otros. Por ejemplo, leds por zumbadores,  sensores de luz por potenciómetros o botones pulsadores por botones táctiles u otros sensores (magnéticos, sonido....).
  12. Volver colocar todo como es habitual e insertar los servomotores entre la placa principal y la placa de soporte para simular un robot con ruedas. 
  13. En modo de robot con ruedas, probar el funcionamiento del potenciómetro y el joystick.
  14. En modo de robot con rueda, probar a poner el ultrasonido en una posición que detecte obstáculos y le permita girar antes de chocar.
  15. Intentar crear un robot siguelíneas. Nos podemos ayudar de cinta adhesiva transparente, gomas u otros objetos que no dañen la placa para fijarlos de forma provisional.
  16. Realizar otras pruebas con cuidado y preguntando si es necesario.





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 - Led.
D4 - Sensor táctil.
D5 - Led.
D6 - Led.
D7 - Led.
D8 - Zumbador activo.
D9 - Zumbador pasivo.
D10 - Sensor de vibración (si no se tiene, conectar el sensor de inclinación u otro).
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, siendo preciso mover la librería de Liquid Crystal propia de Arduino IDE para que no se interfieran..

Cuidado:
  • No fuerces los componentes.
  • Si las pilas no tienen suficiente potencia, no funcionarán algunos componentes o lo harán de forma poco previsible.
  • Si alguno de los leds o componente se estropea, puede afectar al funcionamiento de las pruebas que vamos a hacer. Sería necesario retirarlo o sustituirlo por uno que funcione apropiadamente. De hecho, un simple led puede hacer que las conexiones no sean apropiadas y provocar efectos no esperados.
  • Pide ayuda cuando tengas dudas.
Pruebas: 
  1. Girar el potenciómetro en A0 para producir una composición musical simple audible con el zumbador pasivo
  2. Colocar el potenciómetro en una posición en la que no se escuche el sonido del zumbador pasivo
  3. Pulsar el botón D2 para hacer que se encienda el led D3. 
  4. Pulsar el sensor tátil D3 para poner en marcha el semáforo con sonido de paso (zumbador activo) y mensajes escritos de espera y paso (pantalla LCD).
  5. Agitar el sensor de vibración y comprobar el efecto de cambio en el led D10. Se puede probar con el sensor de inclinación y otros además.
  6. Soplar con intensidad variable sobre el sensor de sonido en A1 y observar los valores cambiantes en la pantalla LCD.
  7. Tapar el sensor de luz para encender un led.
  8. Humedecerse el dedo en agua y tocar el sensor de agua/lluvia para encender un led.
  9. Cambiar los componentes por otros. Por ejemplo, leds por zumbadores,  sensores de luz por potenciómetros o botones pulsadores por botones táctiles u otros sensores (magnéticos, sonido....).
  10. Solicitar ayuda para conectar la placa de expansión (hay que conectarla con mucho cuidado) con leds en los pines digitales 5, 6 y 7. Comprobar que al pulsar el sensor táctil pueden activarse los 3 pares de pines de forma que simulen el semáforo de coches y el de un peatón a la vez. Será necesario colocar los colores invertidos, si en la placa principal D5 es verde, en la placa de expansión el pin 5 debe ser rojo, por ejemplo. En este caso, D7 sería rojo y el pin digital 7 de la placa de expansión sería verde (si no lo hay, conecta uno blanco por ejemplo). El D5 y pin digital 5 serían naranjas o amarillos.

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.