miércoles, 18 de abril de 2018

Run mqtt-spy in Ubuntu 17.10

first install javafx deps

sudo apt-get install openjfx

Then download the latest jar and put in /opt

Download: https://github.com/eclipse/paho.mqtt-spy/wiki/Downloads

Run!

miércoles, 11 de abril de 2018

Publish / Share / Register your own library in PlatformIO Library Registry

Step 1: publish your project on github

You must first create your manifest file that must be called "library.json" and it must be in the root of the project


In my case it has the following structure:

{
  "name": "EasyOta",
  "keywords": "ota, over,to, air,esp8266",
  "description": " The easiest way to implement ota on an esp8266 based chip using an HTTP server",
  "repository":
  {
    "type": "git",
    "url": "https://github.com/Eitol/EasyOta.git"
  },
  "authors":
  [
    {
      "name": "Hector Oliveros",
      "email": "hector.oliveros.leon@gmail.com",
      "maintainer": true
    }
  ],
  "license": "MIT",
  "version": "1.0",
  "frameworks": "arduino",
  "platforms": "espressif8266"
}



Step 2: copy the url of the raw project

The url is some like this:
https://raw.githubusercontent.com/GITHUB_USER/PROJECT/master/library.json

Example:

For my project with url = https://github.com/Eitol/EasyOta

Then, the url is:

https://raw.githubusercontent.com/Eitol/EasyOta/master/library.json



Step 3: Use the url to register your library

The command is:

platformio lib register [MANIFEST_URL]

example:

platformio lib register https://raw.githubusercontent.com/Eitol/EasyOta/master/library.json


lunes, 9 de abril de 2018

FIX: No output from qDebug

Si qDebug no muestra nada en Qt 5.9 entonces debes crear un fichero qtlogging.ini (vacio) en el directorio home: 
.config/QtProject/qtlogging.ini

lunes, 2 de abril de 2018

Raspberry PI 3 Composite video problem

Si conectando la raspberry al television usando un cable plug - RCA ves una imagen como la siguiente:


es porque el cable que estas usando no es el adecuado y tiene intercambiado el pin de tierra con el de video:


Solución:

Solución cara pero fácil: Comprar un cable que sea compatible que transmita el video por el último segmento (como los de Apple)

Solución fea: Soldar los cables a la rb: https://www.raspberrypi.org/forums/viewtopic.php?t=181288

Solución fácil y barata:  Con un conector dc hembra y otro macho puedes pasar intercambiar la señal de video por la de tierra (Esta me funcionó perfecto)










Pueder ver mas info aquí:

viernes, 2 de marzo de 2018

Usar una Raspberry Pi como programador AVR

En esta entrada veremos el proceso de creación de un Programador Remoto de AVR.


Componentes

Se utilizarán los siguientes componentes:

- Una Raspberry Pi 3 Model B con Raspbian 9 como SO
(También se probó en una Orange Pi con Ubuntu server 16.04)

- Un Arduino Uno o un Mega 2560


Proceso

El proceso sería el siguiente:
1- Un usuario carga el código compilado (hex) a firebase
2- Firebase envía la notificación de cambio a la raspberry (Utilizando la base de datos en tiempo real)
3- La raspberry descarga el código
4- La raspberry sube el código al Arduino




Conexiones

Puedes alimentar el Arduino por USB o por los pines GND y VCC del ICSP.
Puedes cambiar los pines a utilizar, pero no puedes usar el BCM 4 (PIN 7) que por alguna razón da problemas (Ver más info aquí)
Note que las conexiones en la Raspberry son a los pines BCM. 
Arduino ICSP | Raspberry BCM
reset       | 12; # Pin 32
sck         | 11; # Pin 23
mosi        | 10; # Pin 19
miso        | 9;  # Pin 21


Conexiones Arduino -> Raspberry ICSP

Así quedó

Instalando avrdude


La versión 6.2 y 6.3 de avrdude por alguna razón muy rara no está habilitada para usar los GPIO para cargar código (linuxgpio) y no funciona bien. Pude hacerlo funcionar con la versión 6.1

Debes ejecutar lo siguiente:

sudo apt-get install bison flex libusb-dev gcc gcc-avr avr-libc libelf-dev libusb-1.0-0-dev libusb-1.0-0-dev libftdi1-dev libftdi-dev libhidapi-libusb libevent-pthreads-2.0-5 libpthread-workqueue0 -y

wget http://ftp.nchc.org.tw/Unix/NonGNU/avrdude/avrdude-6.1.tar.gz

tar xfv avrdude-6.1.tar.gz

cd avrdude-6.1

./configure --enable-linuxgpio

make -j4

sudo make install


Probando la instalación de avrdude

Copias el fichero avrdude.conf al home del usuario
cp /usr/local/etc/avrdude.conf ~/avrdude_gpio.conf

Luego abres el fichero que acabas de copiar 
nano ~/avrdude_gpio.conf

y le agregas esto al final

programmer 
 id    = "pi_1"; 
 desc  = "Use the Linux sysfs interface to bitbang GPIO lines"; 
 type  = "linuxgpio"; 
 reset = 12; 
 sck   = 11; 
 mosi  = 10; 
 miso  = 9; 
;

Luego probamos la conexión con el Arduino ejecutando lo siguiente:

sudo avrdude -p atmega2560 -C avrdude_gpio.conf -c pi_1 -v

Deberías ver algo así en la consola:


Y el arduino debe parpadear como en el siguiente video:



Probando la carga del código

Primero debemos generar el codigo compilado con extensión .hex.
Para ello abrimos Arduino IDE en cualquier PC (no necesariamente en la raspberry) y entramos en Preferencias y marcamos lo siguiente:


Luego compilamos (Estoy usando el ejemplo de Blink) y buscamos el archivo .hex y lo copiamos y pegamos en el home de la raspberry al lado del fichero avrdude_gpio.conf



Para subir el codigo al Arduino debes ejecutar el siguiente comando:

sudo avrdude -p atmega2560 -C ~/avrdude_gpio.conf -c pi_1 -v -U flash:w:NOMBRE_DEL_HEX:i

En nuestro caso como el fichero se llama Blink.ino.hex:

sudo avrdude -p atmega2560 -C ~/avrdude_gpio.conf -c pi_1 -v -U flash:w:Blink.ino.hex:i


NOTA: Debes tener MUCHO cuidado con ese comando y el parámetro "p". He cargado por error un codigo compilado para atmega2561 en mi atmega2560 y se ha brickeado.


Referencias:
https://learn.adafruit.com/program-an-avr-or-arduino-using-raspberry-pi-gpio-pins
http://ozzmaker.com/program-avr-using-raspberry-pi-gpio/
http://blog.stevemarple.co.uk/2012/07/avrarduino-isp-programmer-using.html

FIX: ImportError: cannot import name 'opentype'

Fix this problem:

File "/usr/local/lib/python3.5/dist-packages/oauth2client/_pure_python_crypt.py", line 24, in <module>
    from pyasn1_modules.rfc2459 import Certificate
  File "/usr/local/lib/python3.5/dist-packages/pyasn1_modules/rfc2459.py", line 20, in <module>
    from pyasn1.type import opentype

ImportError: cannot import name 'opentype'



SOLUTION: 

pip3 install --upgrade pyasn1-modules