in

Thug lifeThug life

Amicus: Software libre para PIC 18F25K20

Comparativa Arduino: Arduino vs. el resto

Proton es uno de los mejores lenguajes BASIC (considerado de alto nivel) que se encuentra en el mercado. Fácil de usar y muy potente, es una herramienta muy codiciada por los programadores que comienzan a transitar el apasionante mundo de los microcontroladores. Su costo resultaba muy elevado para muchas personas pero ahora, con Amicus IDE, ese problema se resuelve. Desarrollado en forma específica para el PIC 18F25K20, Amicus IDE es la versión libre y gratuita del popular software Proton. En realidad, Amicus es mucho más que un simple software. Es toda una plataforma de desarrollo que te permite comenzar a crear desde el primer día. Toda la potencia de Proton disponible en tu ordenador para trabajar libremente con un PIC muy veloz y robusto como es el 18F25K20. ¿Tienes uno? ¡Comencemos a programar!

Amicus 18 es una creación de la gente de Crownhill que, mediante el uso de un PIC capaz de trabajar a 64Mhz y con la programación elemental que brinda el lenguaje BASIC, intenta plantarse frente a la súper-popular plataforma Arduino y demostrarle que es capaz de superarla en prestaciones y facilidad de uso. Amicus 18 es una placa que combina un poderoso PIC 18F25K20 con un FT232 para facilitar su conectividad USB. El hardware de Amicus 18 es compatible pin a pin con Arduino, y los módulos creados para ambas plataformas pueden ser utilizados e intercambiados entre sí.

El Hardware de Amicus 18 en detalle

Es decir, lo que existe para Arduino funcionará en Amicus 18 y viceversa. Observa en la imagen superior que existe un puente (jumper) que, según la referencia, es un Arduino Compatibility Jumper. El uso apropiado de ese jumper te permitirá utilizar módulos Arduino en esta plataforma Amicus 18. Siguiendo el concepto de “apilar” módulos para lograr combinaciones útiles de hardware, Amicus cuenta con una amplia variedad de posibilidades para aquellos que quieren iniciarse en el mundo de los microcontroladores. Y aquí debemos remarcar lo siguiente: el software de Arduino no es compatible con Amicus 18 (y viceversa) a pesar de que las placas de ampliación y aplicación sí puedan serlo.

Circuito del Hadware Amicus 18

Lo más importante del proyecto Amicus se plantea en base a tres pilares fundamentales:

  • Un hardware libre, que puedes modificar y reformar de acuerdo a tus posibilidades. Es decir, no estás obligado a “comprar”. Puedes construir tú mismo el desarrollo necesario que tu aplicación requiera.
  • Un software muy poderoso y gratuito, basado en el popular y exitoso Proton PIC Basic, totalmente liberado en todas sus funciones y sin restricciones de uso, y desarrollado de manera específica para el PIC 18F25K20: el Amicus IDE.
  • Un PIC, el 18F25K20, con características sobresalientes: 11 canales de entradas analógicas, 25 puertos de entrada y salida en total, 4 salidas de PWM, Protocolos SPI, I2C (Master/Slave), EUSART (Enhanced Universal Synchronous Asynchronous Receiver Transmitter), capacidad de 32KB de memoria Flash de programa (16KWord) (igual que el 18F2550) y todas la ventajas y mejoras que ofrecen los PIC de la línea 18F de Microchip.

Con estas tres herramientas podemos avanzar hacia el aprendizaje, sin restricciones de ninguna índole. Y como bien mencionamos antes, no es necesario “comprar” el hardware Amicus para empezar a trabajar. Con un PIC 18F25K20, un cristal de 16Mhz y una pequeña fuente de alimentación podremos comenzar a hacer nuestras primeras experiencias.

Nuestro hardware
Así de sencillo es el circuito “base” que necesitamos para trabajar con este poderoso PIC que, si lo observas en forma detenida, es compatible pin a pin con microcontroladores como el 16F876A, entre otros. La diferencia radica en que estamos ante un PIC de la serie 18F y que la alimentación es de 3,3Volts. En otros aspectos, el hardware no presenta ninguna variante respecto a los montajes tradicionales. En el hardware original podemos ver la inclusión de un circuito integrado FT232 para conectar el PIC a un ordenador a través del puerto USB y una pequeña fuente de alimentación que sirve para adaptar las tensiones dentro de la placa y distribuirlas de acuerdo a las necesidades del hardware. En nuestro caso, si deseamos, podemos utilizar la fuente modular para protoboard que será más que suficiente para suministrar energía al PIC y al sistema inicial. Un detalle importante a destacar del PIC 18F25K20 es que, a pesar de trabajar con una tensión de alimentación de 3,3Volts, sus entradas y salidas son capaces de comunicarse con periféricos que operen a tensiones de niveles TTL (0 – 5Volts).

Circuito mínimo para trabajar con Amicus y el PIC 18F25K20

El software
Gracias a que fue diseñado de manera específica para el PIC18F25K20 y para trabajar con un cristal de 16Mhz (llevado a 64Mhz con el uso del PLL), Amicus IDE nos permite ahorrar muchas declaraciones iniciales que, en otros programas, debíamos realizar de manera forzada. Por ejemplo, para encender y apagar un LED en el pin 0 del puerto B bastará con escribir las instrucciones de manera directa. Es decir, ahora puedes escribir HIGH PORTB.0 o tan sólo HIGH RB0 en la primera línea, y el programa funcionará sin problemas. Veamos:

Con sólo seis líneas de programa, un novato puede armar su primer LED intermitente

Amicus IDE ya conoce o (cree entender) de antemano las condiciones del hardware. Por lo tanto, no debes declararlas; sólo necesitas decirle lo que debe hacer. Es decir, si tú le indicas que escriba en un display LCD la típica frase “Hola Mundo”, él ya sabrá que tú has conectado el LCD alfanumérico de 2 renglones y 16 caracteres a los pines del puerto B utilizados en la placa Amicus 18. De este modo, no tendrás la necesidad de declarar decenas de líneas de código. Aquí vas directo a la acción. Le dices: “anda, ve y haz esto que te indico”. Amicus IDE sabe el resto y lo prepara por ti. Por eso se le llama “Lenguaje de Alto Nivel”. Por supuesto, si deseas declarar patrones de trabajo diferentes a los que el sistema contempla como predeterminados, puedes hacerlo. Es decir, Amicus sabe que SCL es PORTC.3 y que SDA es PORTC.4. Pero si deseas reasignar estas conexiones hacia otros pines de otros puertos, puedes hacerlo de la misma forma en que lo hacías en Proton. Es decir, el software no nos hace esclavos del hardware. Otro ejemplo de la genialidad que este software presenta es el uso de un display LCD alfanumérico. Por defecto, siempre considerará 2 renglones, 16 caracteres, datos de 4 bits y la utilización del puerto B. Por lo tanto, si respetamos las conexiones (al LCD) que nos muestra el manual de Amicus, la acción de mostrar texto sería tan sencilla como la siguiente:

¿Librerías de qué? No, sólo dile que escriba y Amicus lo hará.

Dicho en pocas palabras, si utilizamos el hardware por defecto que utiliza la placa Amicus 18, podemos disponer de un compilador extraordinario al que no hay que indicarle nada más que las instrucciones que deseamos que haga. El resto ya lo sabe todo. Realmente si deseas transmitir a algún amigo el interés por los microcontroladores, o si deseas comenzar a practicar y hacer tus primeros pasos sin toneladas de declaraciones e instrucciones, Amicus llegó para hacerte la vida muy fácil. Única aclaración: para descargar e instalar Amicus IDE debes tener instalado MPLAB en tu ordenador.

Un ejemplo sencillo
Ya vimos cómo podemos encender y apagar un LED, cómo escribir texto en un LCD y lo que ahora haremos es combinar todo eso con la detección de un pulsador, el agregado de un sistema anti-rebotes para que no se produzcan errores al efectuar este proceso. Cuando un pulsador “soft-touch” (¡Cómo me gustan los anglicismos!) comienza a deteriorarse, provoca múltiples contactos o contactos que no se realizan. En el peor de los casos, si el software no está bien ajustado en tiempo y forma, un toque breve en el pulsador puede provocar múltiples acciones, mientras que un toque prolongado podría causar un desastre. Esto se agrava si al equipo en cuestión lo utilizan múltiples personas. Por lo tanto, cada vez que sea necesario, debemos utilizar un circuito que detecte la acción de pulsación y espere a ser soltado para continuar con el trabajo.

Rutina y circuito que impiden una repetición indeseada de una acción

En nuestro ejemplo, el pulsador se utilizará para enviar a través de la USART del PIC una cadena de caracteres. ¿Te imaginas el desastre que podría suceder si el pulsador no actuase de manera correcta? No enviaría la cadena de caracteres o lo haría repetidas veces de acuerdo al tiempo que se tome el usuario pulsando el botón. Entonces, resumamos el trabajo: tendremos un LED intermitente que encenderá y apagará cada medio segundo y estará conectado al pin 0 de puerto B. Además, incluiremos un LCD que nos mostrará en su primer renglón un texto fijo, mientras que el texto del segundo renglón cambiará de acuerdo a la actividad del LED. Por otro lado, un pulsador (al ser presionado) enviará un mensaje de texto a través de la USART del PIC en cualquier momento cuando se pulse el botón conectado al pin 0 del puerto C.

Listado completo del programa ejemplo

Esta última oración no es un dato menor. El envío ocurrirá al pulsar el botón en cualquier momento sin tener que esperar a que el LED apague o encienda. Por último, no importa que al botón lo accione cualquier niño travieso: el sistema sólo permitirá un único envío de datos por cada vez que el botón se active por flanco descendente. La rutina para lograr un funcionamiento adecuado es muy sencilla: cuando el micro detecta que el botón ha sido pulsado, se dirige hacia la rutina “anti-rebote”. Una vez ahí ya habrá enviado la trama de datos a través de la USART. En ese momento observará y evaluará la situación eléctrica del pulsador. Si aún permanece presionado (estado bajo), entrará en un lazo hasta detectar que ha sido soltado. Es decir, la tensión en el pin 0 del puerto C deja de ser cero y pasa a un estado lógico alto gracias a R4. Es muy simple y efectivo.

Circuito propuesto para nuestro ejemplo

En el circuito podemos ver las conexiones a las tensiones de 3,3Volts y de 5Volts que extraeremos de la fuente modular para protoboard (que resultó ser muy cómoda, eficaz y atractiva para algunos lectores). Y llevaremos la salida desde la USART del PIC hasta la placa que construimos con el MAX232 dedicada a la entrenadora NeoTeo. Algunos capacitores de desacoplo de 100nF, 10nF y 1nF, sumados a pequeños capacitores electrolíticos, componen el resto del montaje sobre el protoboard. El cristal NO puede dejar de ser de 16Mhz para obtener los tiempos adecuados de demoras (DELAY) y, por supuesto, una correcta comunicación serial de datos. En nuestros ensayos llegamos a comunicar, como puedes ver en el video, a 9600 bps. Un pulsador de RESET, un conector ICSP para programar el PIC, y listo. ¡Nuestro sistema Amicus está preparado para su primera prueba!

A partir de aquí todo es creación, imaginación, inspiración y transpiración. Con un software libre y un hardware que puede ser adaptado a las necesidades de cada usuario, tenemos en nuestras manos las herramientas para realizar cualquier trabajo, desde el simple LED Blinker hasta el control del LHC. Lo que sea.

El hardware montado sobre el protoboard con Amicus en acción

Conclusiones
Crownhill ha dado un paso muy importante en la competencia con Arduino. Utilizando un PIC con mayor cantidad de entradas y salidas, la misma velocidad de proceso (Arduino tuvo que apelar al AVR ATmega328 para no perder esta carrera) y un software libre basado en el popular lenguaje BASIC, la apuesta es muy fuerte y tentadora. Si a esto le agregamos que los módulos (accesorios) existentes de Arduino son compatibles en su mayoría con Amicus 18, la propuesta aparenta ser más interesante aún. Por supuesto, el precio de venta al público de ambas plataformas es el mismo: 25 Euros. La competencia se abre ahora en muchos frentes, con la disponibilidad de muestras gratis de los microcontroladores, con los precios de los módulos adicionales, con la facilidad para usar los programas de aplicación, con los ejemplos disponibles en la Web para adaptar nuestros proyectos y hasta con la posibilidad de NO depender de un hardware duro e imposible de adaptar. Amicus 18 no aparece en el mercado como una copia de Arduino. Es otra cosa. Es un sistema de desarrollo donde las ataduras al hardware desaparecen y el usuario puede hacer y deshacer a discreción.

Quizás no haya vencedores ni vencidos en esta “batalla” y todos ganemos en creatividad, experiencia y aprendizaje al aprovechar múltiples sistemas de desarrollo. Pero seguramente tú ya tendrás un favorito en tu mente para futuras aplicaciones, ¿verdad? Cuéntanos, tu opinión nos interesa para futuras entregas. Y lo último por agregar: ¿Has visto el tamaño del código del ejemplo que te hemos mostrado, es decir,  la cantidad de líneas necesarias para lograr el funcionamiento del sistema? ¿Aceptarías el desafío de realizarlo en cualquier otro lenguaje de programación utilizando una menor cantidad de texto escrito? ¿Leíste bien? No hablemos del tamaño final del HEX obtenido luego de compilar el programa; eso no interesa cuando estamos dando nuestros primeros pasos. Por ejemplo, cuando estamos aprendiendo a hablar, mamá sabe que estamos llamándola a ella y se muestra orgullosa aunque digamos porquerías como “babá, madagascar o mamá-me-mima”. Ella sabe que dijimos mamá. Luego, ya habrá tiempo para crecer y recibirse de locutor profesional. Aquí sucede algo similar. Primero hablemos de la cantidad de texto que debes escribir para lograr un resultado exitoso, y luego hablaremos de optimización de código, capacidad de memoria y tamaño del HEX. Tú quieres ver y sentir la acción. Anda, ve por ella, tráela e invítanos a conocer tus listados de programa. ¡Hasta hemos inaugurado un foro para que te luzcas con tus creaciones, trabajos e ideas! ¡Te esperamos!

Reportar

¿Qué te pareció?

Escrito por Mario

28 Comments

Leave a Reply
  1. magnifico nunca habia oido hablar de amicus en mi universidad se gasta mucho comprando una licencia para el proton pero creo que este puede llenar facilmente todas nuestras expectativas gracias mario por este increible articulo.

    Podrias dar algunos tutoriales para configurar correctamente el amicus o darnos algunos ejemplos de las alteraciones que le has hecho al amicus 18 ???

    • Hola Master!

      El programa Amicus no se configura. Sólo escribes y ya está listo.
      No hay que configurar ni declarar nada.
      El resto está en el circuito que mostramos en el artículo.

      Saludos!

  2. Hola lo único que puedo decir es: excelente, esta placa me a inspirado para hacer cosas,
    muy buena la información del pic 18F25K20 lastima que no tare USB interno (claro por
    que es compatible con arduino), aunque aun asi esperando la segunda parte del
    conector rs232 con el MCP2200.

    Oiga espero no molestar quiero hacerle una pregunta (¡¿raro no?!), y es con respecto
    al TDA7449, sé que se controla vía i2c pero mi pregunta es hasta cuantos amplificadores puedo conectar al mismo bus, y no sé si habrá otros pero que tengan hasta tres ecualizaciones o solo hay de este tipo que nomas trae 2.

    ¡Saludos desde México!

  3. Hola Mario:

    Que bueno que nos des a conocer nuevas tecnologias y nuevas maneras de hacer las cosas, y mas a nosotros los aficionados a los microcontroladores, es una herramienta muy buena para futuros desarrollos.
    Aca en Colombia no ha llegado este pic, pero bueno eso no sera impedimento para buscarlo y hacer una muy buena placa de entrenamiento.
    Y pues bueno, el desafio de escribir este codigo en menos lineas creo que esta algo dificil, talves alguien que maneje lenguaje C.

    Muchas gracias por el articulo, y te dejo con un FC.

    Un abrazo desde Colombia.

  4. Hola, esta interesante la propuesta de esta placa, mas que nada por el hecho de dar una plataforma de desarrollo gratuita. Por otro lado, no me parece nada practico programar en BASIC, C es mucho mas potente, y ademas el C que corre en un PIC, lo migras facilmente a un ARM, Rabbit u otro micro. Por algo los PICs de gama alta como el PIC32 estan pensados para ser programados en C. En mi opinion, desarrollar en BASIC es una perdida de tiempo.

    • Es una imitación, si, pero mejorada!!!!!!
      Alguien inventó la rueda, y hoy la utilizamos todos, no? Claro que le pusimos motor, 4 válvulas por cilindro, turbo compresor….etc, etc, etc.
      Antes de juzgar, te sugiero que leas todo el artículo.
      Saludos desde Argentina,
      José Luis

  5. Muy buena, ademas que se programa en basic, pero una cosa no me cabe… por que usar un 18f2520 y no usar 18f2550 que este trae usb integrado y se ahorraría en circuiteria y $$. Quizás sea por que el Usb de estos hay que estarlos refrescandolos continuamente y esto impide hacer algunas cosas (o no las impide si no que es mas lioso), lo que no ocurre al hacerlo mediante un chip que transforma de usb a serial, del cual no debes preocuparte de que funcione correctamente, sino que solo envías o recibes los datos que necesitas y listo.

    Y como respuesta para noone, no puedes decir que programar en Basic es una perdida de tiempo, cada uno tiene sus razones para elegir el lenguaje que se acomoda a las necesidades que cada uno tiene, yo personalmente concuerdo pero precisamente con lo que expuso Mario en el foro (pensamos exactamente lo mismo en lenguajes para microcontroladores). retomando: Se que pusiste "en mi opinión", pero si pones eso alguien que lo lea y no sepa de microcontroladores dirá.. "aprendo C mejor, noone dice que es una perdida de tiempo aprender Basic, mejor ni lo miro". Yo te podría dar mis razones y decirte que C es una perdida de tiempo (por que no uso C), pero no, aprender o programar en cualquier lenguaje no es una perdida de tiempo, si a ti te acomoda o te facilita uno, bien pero de ahi a que sea una perdida de tiempo los demás lenguajes que no te gustan esa otra cosa muy distinta. Al final si logras tu objetivo programando en C bien, yo e logrado todos los míos programando en Basic y ASM, y no por ello desmerezco al C =)

    Saludos y gracias por mostrar alternativas..

    • Viejo, pero es que C está a años luz de Basic, mejor dicho es como comparar un vaso de agua con una piscina. Es eso no es ni una opinión, ni un mito, ni desmerece, ni nada, para bien o para mal es un hecho. Por cierto, una lástima, porque en otra vida a mi me gustaba mucho el basic pero que le vamos a hacer.

      • Una vez leí, de un capo en programación (estudio informática) que decidir que lenguaje es mejor tiene que venir necesariamente acompañado de otras preguntas.. ¿ que necesito hacer?, ¿para que lo quiero? o ¿puedo hacer lo que quiero con este lenguaje o con otro? … así que abarcando el tema de los microcontroladores (no mezclarlo con programación de pc).. si cumplo mi objetivo programando en C, Basic o ASM, cual de ellos es mejor? da lo mismo cualquiera, si al final con todos estoy cumpliendo mi objetivo. Me dirás a lo mejor que C es mas rápido que Basic, quizás, pero no son la mayoría de las aplicaciones en microcontroladores llevadas a un tiempo exacto?(o por lo menos a las aplicaciones que yo le daría y e visto para usar un micro), osea el microcontrolador debe hacer algo cada cierta cantidad de ciclos… si estoy cumpliendo esa cantidad de ciclos en Basic entonces esa comparación no viene al caso (ya que cumplo mi objetivo), ademas ya a todos los lenguajes se les puede incrustar código ASM, así que si quieres mas precisión es cosa de bajarse de nivel y lo puedes hacer en el mismo lenguaje.
        Yo todo lo que e hecho lo e programado en basic (la única vez que e usado C es cuando modifique el bootloader que entrega microchip) y algunos compañeros han hecho las mismas cosas en C, ambos programando con distintos lenguajes logramos hacer lo que se pide o lo que queremos hacer, así que decir que lenguaje es mejor no tiene por donde agarrarse, a lo mejor un código fue mas largo que otro, pero para el que esta acostumbrado a un lenguaje y se lo sabe al revés y al derecho no creo que le sea complicación si esta haciendo lo que quiere.
        Si hablamos de pc ya estarían en juego otras cosas y saber que lenguaje es mejor es un poco mas claro o quizás mas complicado ya que hay varias cosas a las que tomar en cuenta, pero estamos hablando de microcontroladores.

        Y bueno finalmente es mi punto de vista, quizás no concuerde con el tuyo y no tiene por que serlo, todos tenemos opiniones distintas y teniendo argumentos validos todas las opiniones son validas (entro en el mismo juego de los lenguajes)

        Saludos!

  6. Mario me soprendio este articulo pero quisiera hacerte una pregunta sobre lo que vi en tu prueba "Toroide Supresor de EMI y RFI" quisiera saber que tipo de nucleo se utiliza para el toroide o sirve uno reciclado de una fuente de PC y cuantas vueltas debo darle??

  7. Pero esta tarjeta es solo para proton o que??? si es asi es mejor el proyecto Jaguar, anda perfecto, este…mmmnnno se…Buena Wario.

  8. Lo único que me tiene atado a arduino y esto parece que no va a poder cambiarlo es que no tiene soporte para linux y no me pienso pasar de linux a windo$ por usar algo de similares caracteristicas. Tiene muy buena pinta pero ese es el fallo que le veo yo. Un saludo

  9. Soy un aficionado a la electrónica desde siempre, ya llevo 3 placas con distintos PIC’s, pero no quiero perder mas el tiempo diseñando y construyendo, he decidido comprar Amicus, pero…, donde la compro?.
    Por cierto, que paso con el C18?
    Un saludo a todos.

  10. necesito ayuda mario me puedes decir por favor pic similares o equivalente al 18f25k20 para hacer este trabajo? en la tienda no tienen este modelo del fabricante microchip . he comprado por internet uno igual pero viene precargado el ds30 botloader vale para hacer este trabajo? gracias de antemano y feliz navidad y prospero año nuevo.

  11. He trabajado con arduino y me parece excelente, esta tarjeta basada en un PIC me parece llamativo.

    Tengo una pregunta: Este micro necesita un bootloader tal como los atmega usados en las placas arduino?

    si es asi como lo descargo pues no encuentro, en esta pagina, un algun enlace para descargarlo.

  12. una pregunta, se puede usar para comandar un equipo medico, me refiero a que si se puede programar para que lo apague, lo prenda, programacion de tiempo, etc?

Responder a noone Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Nexagon: gel cicatrizante súper veloz

Construye el sistema de audio ideal para tu coche