Tutorial IoT con Fiware

Internet de los objetos o conocida como IoT , corresponde a la tercera gran ola de la tecnología informática. La primera ola fue el desarrollo de los ordenadores en los años 60, el uso y la explotación de  Internet, con una penetración de masas a partir de los años ochenta, y ahora la IO, el concepto de  las cosas conectadas ,que permite a los dispositivos electrónicos poderse enviar y recibir información a través de Internet.  Hay muchísimos  ejemplos incluyendo termostatos, coches inteligentes, controles de entrada y un millar de otros dispositivos, pero el lector podría preguntarse por qué estos dispositivos deben estar conectados a Internet, principalmente debido a que los datos obtenidos de estos dispositivos más tarde se pueden combinar con otros datos para obtener funcionalidades más avanzadas.  Imagínese que usted fija su teléfono inteligente una alarma para despertarse por la mañana pero es invierno, así que no hay mucha luz cuando se despierta.  En el sonido de la alarma,la iluminación suave se activa, la tostadora empieza a calentar el pan y el café empieza a calentarse. Esto puede ser un ejemplo bastante elemental, pero ayuda a comprender que cuanto más información  tengamos y podamos interrelacionar entre  más dispositivos  , mas cosas  podemos hacer  para para ayudar a mejorar nuestra calidad de vida.


Gracias a  Telefónica R&D Chile( Telefónica I + D Chile) nos  ofrecen   un interesantisimo tutorial  intruductorio sobre  IOT   concretamente usando la plataforma Orion Context Broker  (FIWARE ) con Arduino aunque puede extrapolarse  a otras placas de IoT ( por ejemplo Netduino ,Intel Edison o Raspberry Pi)

 

Un punto interesante para analizar el IoT (Internet of Things  )es el uso de las normas. Para el caso concreto vamos a revisar más adelante en la sección Orion Context Broker, una adaptación basada en la especificación OMA (Open Mobile Alliance) NGSI (Next Generation Service Interface).  En términos simples, esto significa que las peticiones HTTP o acciones que deben utilizarse son los que están actualmente empleados por los navegadores tales como GET, POST, DELETE y PUT para interactuar con el contexto Broker.

Configuración de hardware

Los componentes que vamos a utilizar son:

  •  Una placa Arduino (hay muchas alternativas, pero una versión con WiFi es esencial)
  •  Una placa protoboard
  •  LEDs
  •  Cables de conexión
  • Un router o un dispositivo celular que pueden ofrecer Wi-Fi (tethering)

Como se ha comentado en este blog , Arduino tiene su propia interfaz de desarrollo utilizando el lenguaje C ++ y se integra una serie de librerías para facilitar la  aplicación de prototipos. Esto no quiere decir que Arduino no se puede utilizar en entornos industriales o de alta demanda. Sin embargo, en estos escenarios cuestiones de costos por lo general conducen a la utilización de componentes ad-hoc.

Al observar la estructura, se puede reconocer algunos pines digitales en la parte superior y analógicas pines en la parte inferior (idéntico  a muchas otras placas como Netduino). Además, en la parte inferior, también  hay una  fila de conectores para alimentar al propia  placa u otras que se conecten. Por supuesto la  placa   también  tiene un conector a una toma de corriente y un conector mini USB, entre otros componentes, dependiendo de la versión de la tarjeta y si se utiliza add-on “escudos” o no.

Si conectamos un LED a la placa podemos hacerlo directamente, conectando el ánodo LED de pin digital 13 y el cátodo del   led  al pin de   GND como se ve aquí.  Hay que señalar que es interesante conectar  entre el pin digital 13 con una resistencia de 220 ohmios para proteger el diodo led , pero estrictamente podría omitirse dicha resistencia.

led.jpg

 

Por último, este mismo esquema se puede usar para agregar más LEDs o sensores de nuestra placa Arduino para que pueda añadir más funcionalidades. Para ello hay que recordar que en un tablero de alimentación corre horizontalmente en los puntos exteriores y vertical en los puntos interiores

 

Arduino, software and communications Arduino, software y comunicaciones

En este ejemplo  vamos a aprender cómo programar la placa Arduino con el fin de activar el LED se instaló en la segunda parte y se apaga. A continuación, vamos a utilizar una conexión a Internet con WIFI  en  la placa.

Como requisito previo, hay que ya hemos configurado el software de Arduino según nuestro sistema operativo. Además, hay que tener USB de la placa conectada a nuestro ordenador para cargar el programa a nuestra placa (  consulte  aquí para ver cómo instalar el software en una placa Intel Edison).

Debe onviamente seleccionar la versión del software que corresponde a su sistema operativo.  Una vez que el software está configurado e instalado abrimos nuestra IDE hasta el comienzo de la codificación.

sketc

 

Vamos  a ver  un ejemplo de la IDE Arduino.  Este ejemplo es específicamente para el IDE para los conjuntos de Intel, aunque los conceptos son los mismos. En la segunda fila de menú (donde el icono de comprobación es), encontrará los comandos para compilar y cargar nuestros desarrollos a la placa.   Si examina el código, tenemos dos funciones.  Uno es de configuración, donde las variables se inicializan y el bucle en el que se ejecutan las operaciones según se requiera. En el menú Archivo tenemos los ejemplos de opciones – 01 Básico – Blink. Esto mostrará una nueva ventana con el código necesario para poner a prueba nuestra LED:

/*

Blink Parpadeo

Se enciende un LED durante un segundo, luego se apaga durante un segundo, en repetidas ocasiones.

Este código de ejemplo está en el dominio público.

*/ Pin 13 tiene un LED conectado en la mayoría de las placas Arduino.

// Darle un nombre:

int led = 13;

// La instalación se ejecuta de rutina una vez cuando se presiona RESET:

void setup() { 

// Inicializar el pin digital como salida.

pinMode (led, OUTPUT);

}

// La rutina de bucle se ejecuta una y otra vez para siempre:

void loop() {

digitalWrite(led, HIGH);  //  Enciende el LED (ALTA es el nivel de tensión)

delay(1000);  // Espera un segundo

digitalWrite(led, LOW);  //  Apagar el LED haciendo que la tensión BAJA

delay(1000);  // Espera un segundo

}

El ejemplo que genera Arduino es bastante simple.  En la línea 10 se establece una variable con el número pin correspondiente en la placa . Posteriormente, el pasador la variable se  configura  como salida y se inicializa. Y, en el bucle, el LED se enciende y se apaga separado por un retraso de un segundo .

Antes de cargar el código anterior en la placa , el IDE se debe configurar para que sepa la placa  y qué puerto se  está utilizando:

Select Tools> Board> Intel Edison Seleccione Herramientas> Junta> Intel Edison ( para el caso de una placa Intel Edison)

Select Tools> Port> dev / ttyACM0 Seleccione Herramientas> Puerto> dev / ttyACM0

Ahora bien, si la tarjeta está correctamente conectada al puerto USB, podemos ‘Subir’ el código de la tarjeta (Ctrl + U) y deberíamos ver nuestra LED encendido y apagado de cada segundo.

 

Ahora para usar el wifi, tenemos que trabajar un poco más.  Por suerte, en los ejemplos de Arduino, tenemos una sección de WIFI con diferentes alternativas utilizando las soluciones de redes.  Entre ellos se encuentran los servidores Telnet y clientes, servidores Web y clientes, e incluso un cliente de Twitter.

CONSEJO: En nuestro caso, por motivos de simplicidad, podemos utilizar un cliente Web ya que vamos a enviar solicitudes posteriormente al corredor Orion Contexto utilizando el protocolo HTTP.  Tenga en cuenta que hay mejores soluciones, pero para los propósitos educativos vamos a tratar de minimizar el código tanto como sea posible.

#include <SPI.h>

#include <WiFi.h> >

/ ************************** /

/ * * Configuración de la instalación /

/ ************************ /

char ssid[] = “YourWifiSSID”;//Nombre de la red

char pass[] = “WifiPassword”; //Contraseña de red

char server[] = “130.206.80.47”;  // ORION IP address -> Create in /lab/ // Dirección IP ORION -> Crear en / lab /

int status = WL_IDLE_STATUS; int estado = WL_IDLE_STATUS; // we predefine the status as On but not connected // Nos predefinimos la condición pero no conectada

int led = 13; int LED = 13; // We initialize a variable to assign the pin number to which the led will be connected // Inicializamos una variable para asignar el número de identificación personal al cual se conectará el LED

/**

* Configuración Configuración Arduino

* (Ejecutar una sola vez)

**/

void setup() {

// Inititialization del puerto serie Arduino

Serial.begin(9600);

while (!Serial) {

// Esperar para el puerto serie para conectar. y Necesario para Leonardo solamente

}

// Comprobar que la placa tiene un escudo WiFi

if (WiFi.status() == WL_NO_SHIELD) {

Serial.println(“Wifi shield is not available”);

// No continúe con la instalación, o en otras palabras, se quedan aquí para siempre

while(true);

}

El código completo está disponible en:

https://bitbucket.org/tidchile/ecosystem/src/ https://bitbucket.org/tidchile/ecosystem/src/

FIWARE  y Orion Context Broker

Como se ha discutido anteriormente en este ejemplo, el Broker de Orión define un contexto como un servicio que en base al stándar  OMA NGSI 9/10 puede manejar el envío y recepción de información contextual.  ¿Qué significa esto?  En primer lugar, para manejar un gran número de mensajes de entidades y administrar las actualizaciones, consultas, y también se encargan suscripciones de datos de las entidades. Recordemos que, según la NGSI 9 y 10 estándares, nos ocupamos de las entidades como una abstracción de los nodos físicos o dispositivos utilizados en las soluciones de la IO.

En el ejemplo anterior, hemos hecho una solicitud de actualización a una entidad ya creada.  Pero primero vamos a revisar cómo trabajar con Orión. . Una manera simple de probar el servicio OCB es crear una cuenta en https://account.lab.fiware.org/ y crear una máquina virtual con Orion preconfigurada en la sección de la nube. Alternativamente, el sitio y el acceso GitHub de Orión descargar una máquina virtual para ejecutar en nuestro entorno local

Otra herramienta útil es un cliente REST, pero podemos usar cURL si parece más sencillo. RESTClient es un cliente para Firefox que es bastante fácil de usar.

Los aspectos de configuración de la OCB están fuera del alcance de este tutorial, ya que requeriría demasiados detalles.  En cuanto al Laboratorio fiware, es importante tener en cuenta que fiware proporciona máquinas virtuales en la nube de forma gratuita para probar fiware compontents. Sólo tiene que crear una cuenta para acceder a los servicios. Sólo una advertencia rápida. . A partir de hoy (19-03-2015) y temporalmente, España no tiene recursos disponibles, pero hay otras regiones en las que las máquinas virtuales se pueden crear.

Cuando tengamos las herramientas necesarias, la forma más básica para interactuar con la OCB es:

1. Creando una entidad:Para ello hay que tener en cuenta varios factores.  En primer lugar, la llamada se envía como una solicitud HTTP POST, por ejemplo, http://myhost.com:1026/v1/updateContext.  Con esto queremos decir que estamos ocupando la versión 1 del API con la operación updateContext.

También tenemos que definir varias variables en la cabecera de la solicitud:

Accept: application/json

Content-Type: application/json

X-Auth-Token: [TOKEN AUTHENTICATION]

En cuanto a la generación de tokens, la forma más sencilla es utilizar un script en Python creado por Carlos Ralli en GitHub. Se necesita una cuenta FIWAREy ejecutar el ‘get_token.py  se requiere la escritura’.

Después de configurar el encabezado de la solicitud, configurar el “cuerpo” de la solicitud mediante el siguiente código JSON:

{

“contextElements”:[

{

“type”:”LED”,

“isPattern”:”false”,

“id”:”LED001″, “

“attributes”:[

{

“name”:”switch”,

“type”:”bool”,

“value”:”false”

}

]

}

],

“updateAction”:”APPEND”

}

Esta es la estructura de un “contexto Elementos”, que es un grupo de entidades con ciertos atributos, tales como, “isPattern” e “id”, “tipo”.type ”  se refiere a un tipo definido y permite la búsqueda de entidades por un tipo particular. “Id” es un atributo que debe ser único para cada entidad para ejecutar búsquedas en base a este ID. “IsPattern” se explicará más adelante en el punto No. 2.

También puede agregar una serie de atributos de la entidad en la propiedad “atributos”, donde cada atributo se define por el “nombre”, “tipo” y “valor”. Por último, “updateAction” define si vamos a realizar un “añadir” o y “UPDATE”.

Si todo va bien, vamos a recibir una respuesta 200 OK desde el servidor y que nos dará los detalles de la entidad creada:

{

“contextResponses” :

{

“contextElement” : {

“type” : “LED”,

“isPattern” : “false”,

“id” : “LED001”, “

“attributes” :

{

“name” : “switch”,

“type” : “bool”,

“value” : “”

}

]

},

“statusCode” : { “

“code” : “200”,

“reasonPhrase” : “OK”

}

}

]

}

2. Consultar la entidad: Para consultar una entidad, la operación estándar es ‘queryContext’ que sería http://myhost.com:1026/v1/queryContext.También aplicamos las cabeceras que se describen en el punto No. 1 y el uso post.

El JSON utilizado en el cuerpo de la petición sería la siguiente:

{

“entities”:[

{

“type”:”LED”,

“isPattern”:”false”,

“id”:”LED001″

}

]

}

Aquí es donde puede utilizar “isPattern” en “verdadero” y trabajar bien en el campo “tipo” o el campo “id” con expresiones regulares si queremos ejecutar una búsqueda un poco más compleja. En el ejemplo anterior sólo estamos buscando la misma entidad creada a través de la “id”.

También hay una manera más sencilla de hacer la misma consulta utilizando la siguiente solicitud: GET http://myhost.com:1026/v1/contextEntities/LED001 donde LED001 es el “id” de la entidad a buscar.

3. Actualización de la entidad: Esto es idéntico al punto No. 1, pero cambiando el atributo “updateAction” de “añadir” a “UPDATE”.

Por último, la integración de todo lo que hemos revisado, seremos capaces de generar una acción desde una página Web sencilla que se puede implementar en un servidor remoto y, de hecho demostrar que el LED de la aplicación se activa de forma remota utilizando la OCB.

Para ello vamos a utilizar el LED001 de reciente creación, estableciendo el atributo “interruptor” de verdadero a falso y viceversa para comprobar la acción.

Nuestra web se vería así:

 

ejemplño

Para ello, el código html, css y js se comparten en:   https://bitbucket.org/tidchile/ecosystem/src/ https://bitbucket.org/tidchile/ecosystem/src/

 

 

 

Fuente    aqui

LLega la Raspberry Pi 3

Raspberry Pi 3 Modelo B es la última placa de la familia de Raspberry Pi. 10 veces más potente que la original y con una conectividad inalámbrica integrada de 802.11 b/g/n LAN y Bluetooth 4.1. La nueva placa no es solo un dispositivo estupendo para programar sino que es el ideal para jugar y experimentar


Con  más de ocho millones de unidades vendidas , incluyendo tres millones de unidades de Raspberry  Pi 2 , nadie duda  que Raspberry es una plataforma  muy exitosa ,  tanto que de hecho la Fundación Raspberry Pi ha crecido de un puñado de voluntarios a llegar a más de sesenta empleados a tiempo completo, ! e incluso  han enviado un Frambuesa Pi a la Estación Espacial Internacional !

Desde hace unos meses por fin ya  esta disponible en Amazon  la nueva Raspberry Pi 3 Modelo B   ,la última placa de la familia de Raspberry Pi  ,una placa 10 veces más potente que la original (es decir la primera versión) ,  donde   lo mas destacable  es que se ha añadido   conectividad inalámbrica integrada tanto por wifi (soportando los estándares  802.11 b/g/n) ,  como  por  Bluetooth ( versión 4.1).

Hablando de conectividad ,la nueva placa  incorpora el chip BCM2837 junto el chip inalámbrico “combo” BCM43438 . Gracias  a esta combinación de CI,  ha permitido  adaptar la funcionalidad inalámbrica en casi el mismo factor de forma de los modelos anteriores como el Raspberry Pi Modelo B + 1 y Raspberry Pi 2 Modelo B. De  hecho  el único cambio es que la posición de los LEDs los  han trasladado al otro lado de la ranura de la tarjeta SD para hacer espacio para la antena.

Ademas,para Raspberry Pi 3 Modelo B , Broadcom  ha apoyado un nuevo SoC, el  BCM2837, el cual  conserva la misma arquitectura básica que sus predecesores BCM2835 y BCM2836, por lo que todos los proyectos y tutoriales que se basan en este  hardware de la Raspberry  Pi continuarán funcionando.

broadcom

Comparable con el modelo  anterior (Raspberry pi 2 model b  ) , esta nueva placa   destaca  por usar un procesador   de  64  bits : un  ARM Cortex-A53  de  cuatro núcleos  a una velocidad de reloj  de 1,2 GHz  en lugar de un  Quad-Core Cortex A7 de 32 bits  a 900 MHz de su antecesor ( Raspberry Pi  2 modelo B), por lo  que vemos que el cambio de procesador  ha sido espectacular no solo por la velocidad de reloj superior (de 900 Mhz  a   1,2 GHz) ,  sino básicamente  por el cambio de arquitectura también ARM ,pero  de 64 bits en lugar de la antigua de 32 bits .

La combinación final   de un aumento del 33% en la velocidad de reloj con varias mejoras en la arquitectura, ha permitido  proporcionar un aumento del 50-60% en el rendimiento en el modo de 32 bits frente a la Raspberry Pi 2, o aproximadamente un factor de diez sobre el original Raspberry Pi.

Sobre la memoria  RAM cuenta  con 1GB LPDDR2 ( la versión anterior también contaba con 1GB)  y a nivel de gráficos también han mejorado   pues cuenta con  un Dual Core VideoCore IV ® Multimedia Co-procesador.

Sobre los conexiones disponibles sin embargo ,  no ha cambiado sustancialmente  , contando  como en la versión anterior  con las siguientes posibilidades:

  • 4 Puertos  USB 2.0
  • Puerto de  GPIO de 40  pin,
  • Salida HDMI rev 1.3 y 1.4
  • Toma  Ethernet
  • Jack de audio de 2  1/2″ ,
  •  Interfaz de cámara (CSI)
  • Interfaz de Pantalla (DSI)
  • Lector  micro SD

 

Todos los conectores anteriores  están en el mismo lugar y tienen  la misma funcionalidad, y para alimentar la placa  todavía se puede usar un  adaptador de alimentación de 5V micro-USB, pero en esta ocasión, están recomendando un adaptador 2.5A por si desea conectar dispositivos USB que consumen mucha energía  de la Raspberry Pi.

Usted necesitará una imagen reciente NOOBS o de Raspbian  que puede descargar desde la pagina  de  descargas . En el lanzamiento, están utilizando el mismo espacio de usuario de 32 bits Raspbian usada en otros dispositivos Raspberry Pi; pero en los próximos meses van a trabajar  el movimiento al modo de 64 bits.

 

La nueva placa no es solo un dispositivo estupendo para programar sino que también es   ideal para jugar y experimentar incluso  para sus futuros proyectos de IoT.

Algunas dudas 

¿Está versión descontinúa modelos anteriores Frambuesa Pi? No  sus fundadores  tienen  gran cantidad de clientes industriales que querrán seguir con Raspberry  Pi 1 o 2 por el momento  así qeu van  a mantener la construcción de estos modelos durante el tiempo que haya demanda. 

¿Qué pasa con el Modelo A +? Modelo A + sigue siendo el nivel de entrada económico de Raspberry  Pi por el momento.Su fundadores  esperan producir una 3 Raspberry Pi Modelo A, con el factor de A +  durante el 2016.

¿Qué pasa con el módulo de cómputo? Esperan introducir un módulo de cómputo basado en BCM2837 3 en los próximos meses.

¿Todavía usa VideoCore?Sí. VideoCore IV 3D es el único núcleo de gráficos de  3D para SoC basados ​​en ARM documentado públicamente, y quieren  hacer una Rspberry Pi más abierta con el tiempo. BCM2837 ejecuta la mayor parte del subsistema VideoCore IV a 400MHz y el núcleo 3D a 300 MHz (250 MHz frente a los dispositivos anteriores).

¿De dónde viene la cifra “10 veces más rendimiento” viene?10x es una figura típica de un punto de referencia de la CPU multi-hilo como SysBench. Las aplicaciones del mundo real verán un aumento de rendimiento de entre 2,5x (para aplicaciones de un solo subproceso) y> 20 veces (para los códecs de vídeo NEON habilitado).

 

Sin duda el producto es muy recomendable para muchas aplicaciones, incluso   supliendo  funciones de automatización que antes requerían un ordenador de sobremesa o por ejemplo como potente centro multimedia

Por cierto, si le   interesa este modelo,   por menos  de 50€  con gastos de envío incluido puede conseguirlo  en Amazon

Cómo fabricarse una maquina de grabado laser con piezas recicladas

Davide Gironi ha montado una pequeña grabadora láser casera reciclando un viejo escáner que tenía , por lo que asi gran parte de la mecánica está hecha y además puede reaprovechar los motores. Con la ayuda de un aplaca Arduino y un diodo láser tambien reciclado , se pueden realizar grabados muy buenos sobre plástico, eso sí a una velocidad reducida. utilizando elo firmware GRBL para Arduino junto con Universal G-Code Sender para enviar directamente instrucciones G-Code a la máquina, al igual que lo hacen muchas otras máquinas.


Una máquina de grabado láser es una herramienta que utiliza el láser para hacer  grabados sobre  un objeto blando como puede ser madera,cuero , plasticos ,etc.
Antes de   explicar como  Davide Gironi  ha montado una pequeña grabadora láser casera reciclando un viejo escáner  y una impresora matrozial  ,  debe saber  que  los diodos láser Clase IIIb   que se emplean en este proyecto, emiten radiación láser visible e invisible y son extremadamente peligrosos. Su luz de hecho puede causar daños permanentes en los ojos, asi que nunca  debe mirar al diodo trabajando( incluso sin la lente)  y por supuesto tampoco apuntar a una superficie reflectante, pues el haz de láser puede causar quemaduras o incendios. 

El autor tenia un viejo escáner roto y una vieja impresora por ahí. Inspirado por este proyectoinstructables  decidió construir una versión más grande de mi pequeña CD-ROM grabador láser basado,usted puede encontrar aquí.De esta manera, el área de grabado podia llegar acasi 212mm x 274mm.

El eje Y es construir mediante el ensamblaje de un viejo  escáner  y  el eje X utilizando una vieja impresora .

La base de esta máquina es el propio escáner   y el escáner  de este fue completamente eliminado , todos excepto el motor y  el mecanismo de movimiento. Lo mismo se aplica para la impresora.
Montaje del hardware, prestar atención a construirlo hacer X normal al eje Y. Los dos dirección tienen que ser perpendiculares, o su grabado tendrá distorsiones.
El mecanismo de la impresora que está conectada a el ensamblaje del escáner del eje Y, de esa manera, el láser deja atrás la pieza en el momento del grabado.

Grabador resultante  es alimentado por una fuente de alimentación de 12V 2A, aunque la corriente total absorbida es 700mA.

El cerebro de este proyecto es un ATmega328P corriendo a 16Mhz. cargado con firmware grbl http://github.com/grbl/grbl, que es un potente aún opensource g-código analizador.
Se ha utilizado una placa Arduino Mini, incluso si el software no utiliza el marco de Arduino.
Un regulador de tensión 7805 se utiliza como fuente de alimentación para el ATmega.
El firmware  Grbl 0.9 sirve para construir   enrutador 3 ejes, pero funciona en  sistemas de 2 ejes de este tipo, con un límite duro y homing habilitado por medo de una versión personalizada del firmware  que consiste en  cambiar a versión 0,9 g en son archivados config.h. las siguintes líneas:
HOMING_CYCLE_0 #define (1 << Z_AXIS)
HOMING_CYCLE_1 #define ((1 << X_AXIS) | (1 << Y_AXIS))
fue comentado y ha cambiado a:
HOMING_CYCLE_0 #define ((1 << X_AXIS) | (1 << Y_AXIS))
// # define HOMING_CYCLE_0 (1 << Z_AXIS)
// # define HOMING_CYCLE_1 ((1 ​​<< X_AXIS) | (1 << Y_AXIS))
A continuación, el nuevo firmware grbl puede ser compilado y utilizado, evitando grbl problema 0.9 homing en 2 máquinas de eje.

La versión personalizada de compilador v0.9g grbl para ATmega328P @ 16Mhz, con una velocidad de transmisión de 115 200, se puede descargar a continuación  aqui.
CP2102 se utiliza como USB a la placa de UART y  sólo tiene que cargar el firmware usando su cargador favorito, la página wiki unidad grbl usted sobre la forma de hacer este paso.
En la wiki grbl también se puede encontrar cualquier otra información sobre comandos y configuración del software.

El controlador del motor ara mover el X e Y motor paso a paso son Carrier Conductor Polulu A4988 del motor de pasos, basado en Allegro A4988.
Como los escáner tpueden tener un motor paso a paso de 5 hilos unipolar. Ese conductor Allegro sólo funciona con motor paso a paso bipolar 4 hilos  el autor  transformóa el motor unipolar a un motor paso a paso bipolar.
Para realizado esta modificación, se corta el hilo común entre los dos devanados principales y luego se compruebaque las bobinas no tienen ninguna conexión con un multímetro. De esa forma se tienen dos bobinas, al igual que un motor bipolar:

Las impresoras por el contrario suelen  tener motores paso a paso de  hilos bipolares. Para controlarlo  se usara una placa  A4988 Allegro que envíara al motor la señales necesarias para energizar este. Incrementar los pasos hace que el motor sea más preciso, pero también  reduce el par del motor ( de hecho se puden hacer algunas pruebas para determinar la configuración de su mejor potencia del motor).
Para los motores usados para permitir un movimiento del motor suave y fino, y un buen par usando  un par de placas a A4988 Allegro , se  configura para 8 micropasos para el motor-Y, y 16-microstep para el motor-X.
Abajo puede encontrar el cableado básico de conexión de placas Polulu.

Para hacer el tablero Polulu funcionar a 8 micropasos M1 y M2 tiene que estar conectado a la alimentación lógica de alimentación VDD, si quiere ejecutarlo en 16 micropasos, conecte también M3 a VDD.  El suministro Motors VMOD está conectado directamente a 12v.

En cada eje un límite y un microinterruptor  de toe de fin de carrera se ​​coloca para evitar el eje avanace al final y  finalmente  dañe el controlador de motor.
Debido a que el final de carrera son bastantes sensibles al ruido,se  he añadido un condensador de 100nF de paso alto y una resistencia adicional 10k pull-up. Asimismo, el límite y el cable de casa son independiente y distante de la correa de cable del motor y el láser.

El láser utilizado es un diodo láser rojo, reciclado  de la óptica grabadora de un DVD-ROM. En el CD-ROM y DVD-ROM también se puede encontrar controlador de infrarrojos, láser de la grabadora de DVD diodo será un poco más potente que el  de un CD . Un diodo láser por lo general tiene tres contactos , uno o el cátodo del fotodiodo (-), otro el ánodo del diodo láser (+), el otro es el ánodo monitor de fotodiodo (+). Si el diodo que está utilizando no tiene ninguna marca, y no sabe el pinout del  diodo, usted tiene que encontrar el cátodo y el ánodo del  láser. Un método simple  para encender el diodo con un 1,8 a la corriente 2.2V, sólo por una pequeña cantidad de tiempo, digamos 1s, si absorbe actual, el cableado es el pinout diodo láser.

Por otro lado un diodo láser tiene que controlado  con un controlador adecuado, usando controlador de láser basado LM317.Este controlador láser puede conducir diodo de 12 mW a 700mW. Un regulador de voltaje de 9V a prevenir sobretensión en el diodo láser. También un NPN se coloca para permitir la entrada de TTL que viene desde el microcontrolador para activar o desactivar el láser. Estamos utilizando LM317 IC como un regulador de corriente. El voltaje de entrada se interponga en el pin Vin del LM317, desde la salida Vout al pin ADJ hay una resistencia R conectada. La corriente de salida Iout está dada por la fórmula Iout = Vref / R. Allá resistencia no siempre tensión Vref. Cuando disminución actual, la tensión de más de R debe ser menor, pero de esa manera el regulador aumentar su voltaje de salida para ajustar su tensión Vref.
Vref es 1,25 para el LM317. R se realiza mediante un resistor fijo R1 y un condensador de ajuste R2. Esa resistencia y el condensador de ajuste establece la corriente de que el uso del láser.
Así actual controlador de láser está dada por la fórmula: I = 1,25 / (R1 + R3).
La potencia nominal de las resistencias R1 y R2 se calcula mediante la forumla P = 1,25 * I.
Antes de conectar el láser y probar el controlador, compruebe que la resistencia es el valor más alto posible, a continuación, conecte el láser y medir la corriente absorbida mediante un amperímetro. Tenga en cuenta que si establece demasiada corriente al láser, que harán volar.
A continuación el circuito de excitación láser.

Un estándar de 60mm x 60mm ventilador sin escobillas PC está instalado para despejar el humo, esto evita que la lente óptica de láser que se nubló.

Los comandos para la máquina de grabado se envían a través de UART a 115.200 baudios.

Una vez  que ha construido la máquina, toca comprobar y conectar todo, cargando el firmware grbl en el  microcontrolador (puede utilizar el software de terminal, o un controlador grbl para configurar su placa de control).

Se puede suar  G-Código Universal de remitente para configurar y enviar comandos para grbl, pero también se puede utilizar un terminal simple.

Lo primero que debe hacer es probar el movimiento del motor:  Para probarlo, basta con enviar el   X10 Y10  comando, o utilizar el botón de movimiento del remitente G-Code Universal.
Usted debe ver un movimiento del motor en cada eje.   También puedes ver el láser se enciende y se apaga mediante  M3  y M5 mando.

Ahora para configurar la distancia correcta del motor para funcionar, tiene que configurar cada motor paso a paso / mm.
El método de calibración paso / mm Motor eje es bastante simple.
Vamos a tratar de la calibración del eje X como ejemplo. Sabemos cuántos paso / mm o grbl steps_per_revolution es en realidad la instalación, grbl $100 = 250.000 (x, paso / mm) parámetro.
Ahora, cambiamos su motor para algunas medidas, digamos 100 micropasos, el eje debe tener movimiento 100mm. Ahora medimos la distancia real de que el motor se ha movido, vamos a suponer que es 181mm. El nuevo valor del paso / mm para este eje del motor debe ser  steps_per_mm = (steps_per_revolution * micropasos) / mm_per_rev ,asi que b 138.121 = (250 * 100) / 181
$ 100 = 138.121

Ahora, si mueve el motor de 100 mm, se debe mover 100 mm.

Porque se  he instalado el límite y el interruptor de casa,  los límites duros  $ 21 = 1
Se fija el homing pull-off a 5 mm, porque el microswotch puede  tiner una larga palanca, y se  quiera que el motor se mueva la distancia después del ciclo de casa. $ 27 = 5.000
También el ciclo homing se habilitó: $ 22 = 1
Y la dirección homing de máscara  se cambia también. Uno puede incluso necesitar invertir eje de dirección, “puerto dir máscara invertido” es el parámetro  que tiene que tocar.

Esas son la configuración grbl más común, para la lista completa, mire la página wiki grbl.

A continuación puede encontrar los parámetros de configuración grbl qeu el autor cambió:
$ 21 = 1 (límites duros, bool)
$ 22 = 1 (ciclo de homing, bool)
$ 27 = 5.000 (homing pull-off, mm)
$ 23 = 3 (homing máscara invertido dir: 00000011)
$ 100 = 37.879 (x, paso / mm)
$ 101 = 94.246 (y, paso / mm)
$ 110 = 100.000 (tasa máx x, mm / min)
$ 111 = 100.000 (tasa max y, mm / min)
$ 130 = 212.500 (x max viajes, mm)
$ 131 = 274.400 (viaje max y, mm)

Ahora usted podría ser capaz de enviar el dibujo g-código a su grabador.

Hay una gran cantidad de software que puede utilizar para construir g-código empate, el que yo uso la InkScape. El trabajo es para este plotter es 212mm x 274mm, para configurar el área del proyecto de esta dimensión. Una vez que usted tiene camino, entonces usted puede seleccionar la ruta que desea grabar, y transformarla mediante el InkScape extensión grabador láser.
Sólo tiene que copiar la extensión en su carpeta inkscape extensión, reiniciar inkscape, y usarlo para construir su archivo de g-código.
Una vez que tenga el archivo de código G, puede enviarlo a grbl utilizando Universal-G-Code-Sender, u otro software grbl como Controlador Grbl.

En este video podemos ver todo el conjunto en acción:

 

 

 

Fuente  aqui