Programar Arduino con Eclipse

Para la gran mayoría de proyecto, el IDE de Arduino es más que suficiente, pero cuando un proyecto se hace grande, muchos preferimos un entorno un poco más completo como por ejemplo Eclipse. El entorno de desarrollo Eclipse brilla por su flexibilidad ya que entre otra cosas, también se puede utilizar para el desarrollo con Android.


Arduino es una plataforma de prototipado electrónica de código abierto basada en software y hardware flexible y fáciles de usar. Está destinado a artistas, diseñadores, aficionados y cualquiera interesado en la creación de objetos interactivos o entornos.
En realidad el Arduino es un montón de cosas. Dado un determinado contexto, puede significar cualquiera de las siguientes…

  • Arduino , la plataforma de hardware (el «Consejo»)
  • Arduino – la biblioteca de abstracción sobre el WinAVR. WinAVR es la cadena de herramientas GNU (compilador + C Runtime library etc.) para el Microcontrolador AVR utilizado en las placas de Arduino (el “software”)
  • Arduino – “El IDE” (estamos utilizando Arduino 19)

Para empezar con Arduino antes de nada se  necesita familiarizarse con la plataforma Arduino y jugar con el IDE de Arduino que es libremente descargable desde la Web de Arduino.

Si es un  programador experto , pronto se dará cuenta   que necesita  un más potente conjunto de herramientas como puede ser  la combinación de WinAVR , biblioteca Arduino + Eclipse y esto es lo que vamos a ver en este post.

 

leds arduino

Instalación  IDE

Sucintamente  los pasos para  programar Arduino con el Eclipse son los siguientes:.

  1. Descargar Eclipse (sobre 90 MBs). Descomprimir en C:\Misc\Eclipse
  2. Descargar el IDE de Arduino. Descomprimir en C:\Misc\arduino-0019
  3. Descargar la última versión de WinAVR. Descomprimir en C:\Misc\WinAVR
  4. Descargar el Plug-in de Eclipse de AVR e instalarlo (siga las instrucciones en su página web)

Primeros pasos con Eclipse

  1. Iniciar Eclipse
  2. Cerrar la página de bienvenida haga clic en la Cruz en la ficha para revelar el ambiente de trabajo real…
  3. Comenzar un nuevo proyecto haciendo clic en “archivo -> Nuevo -> proyecto de C++“. Elegir el tipo de proyecto “AVR Cross Target biblioteca estática” y establezca el nombre del proyecto Arduino. Ahora vamos a compilar los archivos fuente de Arduino en una biblioteca estática para su uso posterior. Finalmente haga clic en finalizar.
  4. Utilice el explorador de Windows para ir a C:\Misc\arduino-0019\hardware\arduino\cores\arduino, seleccionar todos los archivos de código y arrastrar sobre el proyecto de Arduino ya abierto en Eclipse( Nota :sólo incluyen archivos con extensiones .c, .cpp y .h …)
  5. A continuación, haga clic en aceptar en el siguiente cuadro de diálogo (aceptar la opción de copia por defecto)…
  6. Ahora construya el proyecto haciendo clic derecho sobre él y eligiendo “Crear” en el menú contextual. !puede  que tengamos mas de 10 errores! Pero no se preocupe, a arreglarlos en el momento. Haga clic derecho sobre el proyecto y elija “Propiedades” e ir a la opcion “c/c ++ Build -> Configuración -> AVR compilador” . Haga clic en el icono “+” (después de seleccionar la opción “Directorios”).
  7. Haga clic en el botón “Área de trabajo...” y añadir el directorio del proyecto ${workspace_loc :/ ${Nombre_proyecto}} como un directorio de inclusión una vez para el “compilador AVR” y el “AVR C++ Compiler”
  8. Haga clic derecho sobre el proyecto y elija “Propiedades“, luego ir a “AVR -> Target Hardware” y luego establecer la opción de tipo de MCU en el microprocesador en la placa Arduino junto con la frecuencia del cristal suministrado con él. Por  ejemplo para un arduino antiguo  que lleve el ATmega328P  el valor es de  16000000 respectivamente. A continuación, haga clic en ok.
  9. Ahora construya su proyecto de nuevo  de modo qeu  la construcción debería tener éxito esta vez.(Aunque es posible que vea un montón de advertencias que, simplemente puede ignorarlos por ahora).

Ejemplo

  1. Es hora de que el equivalente a “Hola mundo” el mundo de sistemas embebidos. Ir a “archivo -> Nuevo -> proyecto de C++” como antes pero ahora seleccione “AVR Cross Target solicitud” como el tipo de proyecto y establezca el nombre del proyecto a “social
  2. Haga clic derecho sobre el proyecto social y elegir “New -> File”, el nombre del archivo a Main.cpp y haga clic en finalizar.
  3. Ahora, agregue el código siguiente de C++ a Main.cpp:
    #include "WProgram.h" //Include arduino headers
    
    ///CONSTANTS///
    //The onboard test LED is connected to pin number 13
    const int ledPin = 13;
    const int interval = 1000; //Milliseconds
    
    ///MAIN///
    int main()
    {
        //Initialize the Arduino library.
        //Not doing so will prevent the delay function
        //from working. Calling this functions is a must
        //for all arduino projects.
        init();
    
        //Initialize the serial port. This will be used
        //to send diagnostic information in this project.
        Serial.begin(9600);
    
        //Configure ledPin as an output
        pinMode(ledPin, OUTPUT);
    
        //Announce the start of program. Usually a
        //hyper-terminal is connected to the serial
        //port on the PC so this message can be seen
        //there
        Serial.println("Ready.");
    
        //Enter the infinite loop responsible for making
        //the microcontroller do the same thing over and
        //over again. (Almost every microcontroller has
        //such a loop)
        while(true)
        {
            //Turn on the LED
            digitalWrite(ledPin, HIGH);
            //Wait for half of "interval".
            //The LED remains ON during this time.
            delay(interval/2);
            //Turn off the LED
            digitalWrite(ledPin, LOW);
            //Wait for half of "interval".
            //The LED remains OFF during this time.
            delay(interval/2);
        }
    
        //Unreachable code but it's required by
        //the compiler
        return 0;
    }
  4. Ahora compile el proyecto. !es posible que tenga  un montón  de errores!
  5. OK vamos a arreglarlos. Haga clic derecho sobre el proyecto de “Social” y elija “Propiedades” e ir a la “construcción de C/C++-> Configuración -> Avr Compiler -> directorios” opción y haga clic en el icono “+”.
  6. Haga clic en el botón “área de trabajo…” en el cuadro de diálogo subsecuente y elija Arduino -> Debug en el cuadro de diálogo el posterior.
  7. Finalmente se debe ver la siguiente. Haga clic en Aceptar después de haber verificado la ruta.
  8. Hacer lo mismo para la “construcción de C/C++-> Configuración -> Avr C++ Compiler -> directorios”
  9. Ir a “construir de C/C++-> Configuración -> Avr C++ linker -> bibliotecas” y defina las siguientes opciones.
  10. Ahora compilar el proyecto social otra vez. Compruebe que es mucho mejor ahora, pero todavía tenemos un error . Esto es un error de vinculador. El vinculador se queja aquí que no podría encontrar una aplicación para la función de llamada en cualquier lugar aunque se refiere a / usado en otras partes del código. Baste decir la función es necesaria por el runtime de C++ para decidir lo que hay que hacer cuando alguien llama a una función virtual pura directamente. Como recordará de sus tratos con C++, una función virtual pura no se puede llamar directamente sin proporcionar una implementación en alguna clase derivada. Para ello, una clase con una función virtual pura no puede ser instanciada en todos pero el runtime de C++ le gusta estar preparado para cualquier eventualidad.Compiladores avanzados habrían lanzado una excepción de esta función para indicar una operación ilegal, pero como no tenemos los de la plataforma de WinAVR, todo lo que podemos hacer es evitar  más daño que está haciendo entrar en un bucle sin fin (suponiendo que el programa es corriendo frenéticamente en primer lugar ya que ha hecho lo imposible por llamar a una función virtual pura directamente!)
    Nota: esto debe hacerse sólo para la versión de depuración. Al parecer esta función no se utiliza en la versión de lanzamiento de Arduino. Las compilaciones de depuración están amañadas para fallar rápidamente para que el punto de falla es lo más cercano posible al lugar donde está el verdadero problema.
  11. Agregar un nuevo archivo .c al proyecto Arduino (Nota debería ser .c y no CPP). Llame al missing.c y pegue el código siguiente en él y construir de nuevo ambos proyectos. El error debería desaparecer. Tenga en cuenta que lo necesario para construir Arduino antes de poder construir social.
    void __cxa_pure_virtual()
    {
        while(1);
    }
  12. Conmutando el panel de “Consola”, puede ver el resultado de ejecutar el comando tamaño de avr en el archivo .elf de generado…Pero no es un bonito espectáculo para la vista. Un pobre programa intermitente led ocupa aproximadamente 62% del total de memoria de programa disponible. Pero no se asuste, estamos en la versión de depuración  de modo que obtendrá mejores resultados al cambiar a liberar estructuras.

Cambiar a la versión de lanzamiento

  1. Haga clic derecho en un proyecto y seleccione “configuraciones de generación -> Set activo -> Release 2”. Hacer esto para todos los proyectos.
    Nota: usted necesita volver a especificar todos los ajustes para la versión de lanzamiento como hiciste para hacerlo compilar la versión de depuración.

Optimización prematura

  1. Aquí es cómo vamos de mejor a impresionantes. A continuación se asegurará de que usted sólo paga por las funciones y secciones de datos que realmente se utilizan en el programa. Agregue los siguientes indicadores adicionales para el C y C++ compiladores en todos los proyectos
    -ffunction-sections -fdata-sections

    Añadir la siguiente bandera a las opciones del vinculador en todos los proyectos.

    -Wl,-gc-sections

     

  2. Reconstruir (en el correcto orden Arduino en primer lugar, social segundo.)

Cargar el programa en el Arduino

Ahora ha llegado el momento cuando usted puede cargar su primer programa de Arduino construido dentro de los confines cómodos de Eclipse.

  1. Haga clic derecho sobre el proyecto social y selecciona “Propiedades“. Ir a la página de AVRDude y haga clic en nuevo.
  2. Rellene el formulario siguiente:
    • Nombre de configuración: Arduino
    • Hardware del programador: Arduino
    • Reemplazar el puerto por defecto: \\.\COM3. Reemplazar el COM3 a cualquier puerto del hardware de Arduino está conectado a.
    • Override en baudios por defecto: 19200. Reemplazar 19200 a cualquier velocidad en baudios fue especificado por el fabricante del tablero / la persona que subido el Arduino boot loader en tu tarjeta.

     

  3. Seleccionar Arduino como programador en AVRDude configuración y haga clic en Aceptar.
  4. Haga clic en el botón de la barra de herramientas AVR para subir su programa a la placa.

    Debería ver algo como lo siguiente en la ventana de la consola…

    Launching C:\misc\WinAVR\bin\avrdude -pm328p 
        carduino "-P\\.\COM3" -b19200 -Uflash:w:BlinkenLights.hex:a 
    Output:
    
    avrdude: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.02s
    
    avrdude: Device signature = 0x1e950f
    avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
             To disable this feature, specify the -D option.
    avrdude: erasing chip
    avrdude: reading input file "BlinkenLights.hex"
    avrdude: input file BlinkenLights.hex auto detected as Intel Hex
    avrdude: writing flash (2828 bytes):
    
    Writing | ################################################## | 100% 2.16s
    
    avrdude: 2828 bytes of flash written
    avrdude: verifying flash memory against BlinkenLights.hex:
    avrdude: load data flash data from input file BlinkenLights.hex:
    avrdude: input file BlinkenLights.hex auto detected as Intel Hex
    avrdude: input file BlinkenLights.hex contains 2828 bytes
    avrdude: reading on-chip flash data:
    
    Reading | ################################################## | 100% 2.14s
    
    avrdude: verifying ...
    avrdude: 2828 bytes of flash verified
    
    avrdude done.  Thank you.
  5. Si todo salió bien, la prueba a bordo del LED (generalmente color rojo) ahora si empieza a parpadear en cerca de 1 parpadeo/seg Felicitaciones!

Finalmente hemos visto cómo utilizar Eclipse para el desarrollo de AVR. Pero esto es sólo el principio pues hay mucho explorar pero hemos visto  los fundamentos y ahora debería ser fina por su cuenta. Los ejemplos y bibliotecas suministradas con Arduino deben ser un buen punto de partida para la exploración de más.

 

 

Fuente https://www.codeproject.com/Articles/110859/Arduino-Unleashed

 

 

Necesitamos mas mujeres hackers

El hacker es una persona que es parte de una conciencia colectiva que promueve la libertad del conocimiento y la justicia social.


¿Por qué es tan difícil encontrar productos de superheroínas? En una charla de TED , el doctor , Christopher Bell, especializado en el estudio de la cultura popular   de los medios centrándose en las formas en que la raza, la clase y el género como se cruzan en diferentes formas de medios ,  desde su condición de  padre de una hija obsesionada con Star Wars, aborda la falta alarmante de superheroínas en los juguetes y productos comercializados para niños, y todo lo que eso significa para la forma en que les mostramos el mundo .

Hacker  en el mundo  hispano-hablante desgraciadamente aun conlleva una faceta peyorativa muy habitualmente  confundida  con personas que utilizan la tecnología para hacer el mal y lucrarse  en su provecho aprovechando vulnerabilidades o  agujeros de seguridad tal y como hacen los ciberdelicientes  (como es el caso de los script kiddies, crackers, piratas informáticos, etc)

Nada mas lejos de la realidad  pues para los anglosajones  un  hacker  es un  individuo que apoya procesos de apropiación social o comunitaria de las tecnologías poniendo  a disposición del dominio público el manejo técnico y destrezas alcanzadas personal o grupalmente. Ademas crea nuevos sistemas, herramientas y aplicaciones técnicas y tecnológicas para ponerlas a disposición del dominio público  y realiza  acciones de hacktivismo tecnológico con el fin de liberar espacios y defender el conocimiento común y abierto.

Pero, ¿por qué es tan difícil encontrar referentes femeninos en el mundo de la tecnología  y en particular en el mundo del hacking?  Quizás tenga relación con  varios estudios, donde afirman que sobre  la edad de 11 años muchas niñas se sienten atraídas por la tecnología, las ciencias y las matemáticas pero lamentablemente  muchas  pierden el interés al cumplir los 15 años y desvían su interés profesional  hacia otras áreas del saber.

Ante este reto, desde Telefónica, a través de la unidad de Chief Data Office (CDO) liderada por el famoso hacker  Chema Alonso, que integra Aura -Inteligencia Cognitiva-, ElevenPaths -Ciberseguridad- y LUCA -Big Data-, reflexionan  sobre esta tendencia que parece repetirse en diversos ámbitos y que se han  propuesto “hackear”  apostando por la diversidad.

El video la verdad es que es muy emotivo y merece la pena verlo

Modernamente el movimiento hacker  o  el hacktivismo (fusión de hack y activismo) se considera el uso de técnicas en beneficio de fines sociales, ecológicos, humanitarios o de cualquier otra índole ,con repercusión o tendente a la defensa de los derechos humanos.

A raiz de esta tendencia aparecen precisamente   los famosos espacios  hacklab o hackerspace y los hackmeeting como eventos proclives  de diálogo de hackers.

Asimismo se considera  hacktivismo  la liberación de conocimiento (como podría  ser la misma Wikipedia o incluso muchos blogs tecnológicos) ,la cual trasciende incluso a la propia   información clasificada  que se considera debe estar  a disposición de la sociedad ( WikiLeaks o las filtraciones de Snowden).

Por tanto, el fenómeno hacker  tiene un importante componente de aperturismo y liberación de conocimientos e información que, a través del activismo de estos especialistas  o expertos (mujeres o hombres da igual ) ,los cuales  en general actualmente son ingenieros de diferentes disciplinas  , benefician con su actividad a la sociedad en general ,  por lo que en aras de  la diversidad , también  deben promoverse la inclusión de las mujeres en semejante colectivo para el bien de la humanidad.

Cómo instalar Debian Jessi (Linux) en una Orange Pi PC

Veremos como instalar Debian Jessie en nuestra Orange Pi PC


Desgraciadamente la imagen ofrecida  por parte del fabricante en su site original   http://www.orangepi.org/downloadresources/  , padece de algunas carencias  sobre todo para instalar sw especifico como el agente Cayenne  o por ejemplo Node.js

Buscando   satisfacer  la necesidad  de una imagen linux estable , tenemos una nueva distribución de Debian Jessie ,la cual destaca de forma sobresaliente por encima del resto  de imágenes “oficiales ” que creemos merece probar.

¿Qué necesitamos?

No se diferencia respecto a otras distribuciones. Como orientación necesitaremos los siguientes elementos:

  • Orange Pi PC (obviamente)
  • Samsung 16GB micro SD EVO UHS-I Clase 10 48MB / s
  • Jacer’s Debian Jessie imagen, descargada del  enlace foro topic
  • Win32DiskImager

Pasos para la instalación

El primer paso es descargar la imagen de Debian Jessie de esta url :https://mega.nz/#F!y0Y0SZhJ!RD5an8l9qEo_RppBsxxbrQ!y9ZDECra

Extraeremos el fichero  ‘Debian8_jacer_2.rar’

El resultado de descomprimir terminara con  tres  archivos:

  •  ‘Debian8_jacer_2.img’
  •  ‘Script.bin and uIimage fora OPI-2 OPI-2 MINI.zip ‘. 
  •  ‘Script.bin and uIimage fora OPI-PC_extract to  FAT Partition.zip ‘.

 

dmega

 

Para escribir el archivo de imagen en nuestra tarjeta SD necesitamos una herramienta. Para Windows  lo ideal es usar  Win32DiskImager que es una herramienta para escribir archivos img a su tarjeta sd.

Inicie Win32DiskImager, seleccione ‘Debian8_jacer_2.img’ y asegúrese de que el dispositivo correcto está seleccionado (en el ejemplo   la F 🙂 y  pulse Write para escribir la imagen en la tarjeta SD

Como orientación ,escribir el archivo imagen una tarjeta SD suele tardar unos 3 minutos, con una velocidad de escritura de unos 13 ~ 15 MB / s.

 

win32disk

Estamos casi listos para arrancar nuestro Orange Pi, pero primero extraer ‘uImage’ del archivo (2) a la tarjeta SD.

Vaya a su tarjeta SD y cambie el nombre de ‘script.bin.OPI-PC_1080p60_hdmi_cpu1.2G_gpio30pin’ a ‘script.bin’ (se utiliza la versión 1.2G   pues hay muchas  quejas sobre el sobrecalentamiento de Orange Pi y no es  necesario sobrecalentar  la CPU si no necesita tanto procesamiento)

Ya estamos listos para empezar: extraiga ordenadamente la sd del lector de su pc e insertarla en su Orange Pi.

Conecte un monitor con HDMI al Pi y un ratón / teclado USB básicos. También se puede conectar al Pi mediante SSH, aunque en ambos casos puede iniciar sesión con la combinación: orangepi / orangepi.

Ya puede conectar la alimentación , donde destacar , que en el caso de Orange Pi no sirve por el micro-usb sino que habrá que hacerlo por el conector especial de 5V DC  que lleva

No se deje engañar por el led rojo, pues todo el mundo sabe que el rojo es un color positivo? En el Orange Pi el led rojo significa que encontró una tarjeta SD con un cargador de arranque correcto. El diagnóstico en el Orange Pi no son muy buenos :, sólo tenemos  la esperanza de un led rojo encendido  pues es básicamente la única información que obtendrá.

Redimensionar la partición

Después del arranque, inicie sesión con el usuario orangepi e inicie una sesión de terminal. Recibirá un mensaje de advertencia sobre el tamaño de su partición. Si desea cambiar el tamaño de la partición al tamaño máximo disponible, puede ejecutar ‘sudo fs_resize‘.

Después de cambiar el tamaño debe reiniciar primero.

Redimensionamiento

Script de instalación de Scargill

Existe un impresionante script de instalación hecho por Peter Scargill que automatiza la instalación de nodo-RED, Mosquitto, Apache, SQL-Lite y algunas otras herramientas (se puede elegir lo que desea instalar). La instalación de todo puede tomar unos 50 minutos , probablemente un poco lento debido a la frecuencia máxima de la CPU de 1.2Ghz.

El scrips deshabilita la interfaz gráfica de usuario,asi que  si desea conservar la interfaz gráfica de usuario, puede cambiar el script de sudo systemctl set-default graphical.target ( línea de sudo systemctl set-default graphical.target 417 o ejecutar sudo systemctl set-default graphical.target y sudo systemctl set-default graphical.target .

Si desea acceder fácilmente a los datos de su Pi, puede cambiar la línea de script 187 para habilitar los recursos compartidos de red.

Con todo este sw instalado  la temperatura de la CPU suele ser de alrededor de 45 ° C, que es de unos 25 ° C por encima de la temperatura ambiente.

Resumen del software en ejecución

  • SSH deamon
  • Servidor FTP – ftp: // orangepi: contraseña @ orangepi
  • Apache – http: // orangepi
  • Phpliteadmin – http: // orangepi / phpliteadmin
  • Webmin (muy útil herramienta de administración del sistema) – http: // orangepi: 10000
  • Nodo-RED – http: // orangepi: 1880
  • Mosquitto MQTT corredor – http: // orangepi: 1883