Tutoriales de Python

Tutoriales de Python

Después de unos meses escribiendo algo de código Python he decidido crear la sección Tutoriales de Python, no hace falta que os comente las posibilidades de Python como lenguaje de programación.

La idea principal de esta nueva sección es tener ordenados y a mano mis propios scripts.

Tutoriales Python

Intentaré que algunos de estos scripts de Python estén orientados a trabajar con Raspberry Pi, aunque no forzosamente. Hace meses hice ya algunos tutoriales de este estilo, pero decidí guardarlos en la sección Tutoriales de Raspberry Pi.

De momento para los tutoriales voy a utilizar:

  • Raspberry Pi 3 Model B (1 gb de RAM).
  • Raspberry Pi 2 Model B (1 gb de RAM) para hacer las pruebas de conexión GPIO.

Con las versiones de Python que estoy trabajando 2.7.9 y 3.4.2

Si quieres ver qué versión de Python tienes instalada escribe en tu terminal >> $ python -V o bien >> $ python3 -V.

Si todavía no tienes montado un entorno Python para ponerte a trabajar, no esperes más. Aquí te dejo un enlace para que eches un vistazo a este universo >> Python.org

Scripts de Python

Espero que os vayan sirviendo de ayuda estos tutoriales.

¡Saludos!

Untitled.es en redes sociales

11 Tutoriales de Raspberry Pi

11 Tutoriales de Raspberry Pi

En esta entrada voy a preparar una recopilación de todos los tutoriales de Raspberry Pi que tengo hasta el momento terminados.

Tutoriales Raspberry Pi 2

Tutorial RaspberryPi

Espero que os sirvan de ayuda estos tutoriales de Raspi, a mi desde luego me sirven bastante para consultar.

Tutorial Raspi

De nuevo os comento que esta entrada también ha sido escrita desde mi nueva Raspberry Pi3, a la que he adoptado como equipo de trabajo de ahora en adelante.

¡Saludos!

Untitled.es en redes sociales

Cargar script python al arrancar Raspberry Pi

Cargar script python al arrancar Raspberry Pi

En este tutorial de Raspberry Pi vamos a ver como podemos ejecutar un script escrito en python mientras se reinicia nuestra Raspberry Pi. Para el tutorial estoy utilizando mi flamante Raspberry Pi 3.

Twitter con Raspberry Pi

Desde aquí puedes descargar el archivo iniciando.py y envioTuit de una forma muy sencilla. Para descargar basta con que pulses “Descargar con un tuit”, se enviará un tuit de forma automática al mismo tiempo comenzará la descarga.

Pagar con un Tweet para descargar Ejecutar código python al reiniciar Raspberry Pi

Tutorial Raspberry Pi

Comentaros antes de nada, que nuestra Raspberry Pi se puede encontrar en varios estados, aunque nosotros únicamente podamos apreciar visualmente cuando está apagada y cuando está encendida, nuestra Raspberry Pi pasa por estos 7 niveles de ejecución o runlevel:

  • 0 >> Modo Apagada.
  • 1 >> Usuario único (Únicamente da acceso al usuario root sin contraseña para que pueda utilizar un terminal. No configura interfaz de red. Suele utilizarse para hacer pruebas o solucionar errores del sistema).
  • 2 >> Inicia el sistema de forma normal permitiendo logueo de usuarios (No soporta red).
  • 3 >> Inicia el sistema de forma normal permitiendo logueo de usuarios (Soporta red). Modo empleado por casi todos los servidores de Linux.
  • 4 >> No se utiliza para nada.
  • 5 >> Inicia el sistema de forma normal permitiendo logueo de usuario (Soporta red) e incluyendo el entorno gráfico. Por ejemplo cuando nuestra Raspberry Pi cuando ha terminado de cargar nuestra configuración está en este runlevel.
  • 6 >> Como el nivel 0.

Una vez medio entendido esto de los runlevels de Linux, vamos a ver un poco de código. Lo primero será crear una aplicación escrita en Python, que será la que se va a ejecutar una vez que reiniciemos nuestra Raspberry Pi 3. La he creado en el escritorio directamente (/home/pi/Desktop).

Yo he llamado a la mía iniciando.py

# -*- coding: utf-8 -*-
import tweepy
import time

#Debes conseguir estos datos creando tu app de Twitter.
CONSUMER_KEY = 'xxxxxxxxxxx'
CONSUMER_SECRET = 'xxxxxxxxxxxx'
ACCESS_KEY = 'xxxxxxxxxxx'
ACCESS_SECRET = 'xxxxxxxxxxxx'

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)

x = tweepy.API(auth)
x.update_status('Cargando script #python al reiniciar la #RaspberryPi! >> ' + time.strftime('%X'))

Desde aquí puedes aprender a crear una app de Twitter.

La aplicación .py es bien sencilla, poco tienen que explicarse de estas líneas de código. Cuando se ejecuta nuestra Raspberry Pi publica un tuit de forma automática que dice: “Cargando script #python al reiniciar #RaspberryPi! >> La hora que sea”.

Cargar Python reiniciando Linux

Ahora que tenemos nuestra aplicación creada y funcionando, tenemos que conseguir que la ejecute al reiniciar nuestro sistema. Para esto vamos a seguir los siguientes pasos.

Antes de pasar a crear nuestro archivo envioTuit os cuento que indicando el runlevel para start y para stop, no me ha funcionado en ningún momento. He tenido que dejarlos en blanco como aparece en el código real del tutorial.

Este trozo de código no me ha servido para nada, únicamente es para que lo veas. (No dejes de leer la actualización del día 28)

# Required-Start:   $local_fs $remote_fs
# Required-Stop:    $local_fs $remote_fs
# Default-Start:    2 3 4 5
# Default-Stop:     0 1 6

Ahora sí pasamos a crear nuestro archivo envioTuit desde nuestro terminal.

  • Creamos un archivo llamado envioTuit >>

    sudo nano /etc/init.d/envioTuit

    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides: envioTuit
    # Enconding: UTF-8
    # Required-Start: 
    # Required-Stop: 
    # Should-Start: 
    # Default-Start: S
    # Default-Stop: 
    # Short-Description: Ejecutando script Python al reiniciar Raspberry Pi3.
    # Description: Envia un tuit al reiniciar gracias a iniciando.py
    #
    # X-Interactive: true 
    ### END INIT INFO
    
    sudo /usr/bin/python /home/pi/Desktop/iniciando.py
    exit 0
  • Le damos permisos 755 a este archivo >>

    sudo chmod 755 /etc/init.d/envioTuit

  • Le damos permisos a nuestro archivo .py que vamos a ejecutar al arrancar >>

    sudo chmod 755 /home/pi/Desktop/iniciando.py

  • Ahora nos toca indicarle que arranque de forma automática >>

    sudo update-rc.d envioTuit defaults

    (Si quisiéramos eliminar esta orden de que arranque de forma automática, habría que indicarle >> sudo update-rc.d -f envioTuit remove y eliminar el archivo envioTuit >> sudo rm /etc/init.d/envioTuit)

#[Actualizado 28 de julio a las 23:46]
Después de hacer algunas pruebas nuevas con este ejemplo he descubierto que si no cumplimentamos Default-Start y Default-Stop, nuestro tweet únicamente se envía la primera vez que reiniciamos. Al no indicarle en ningún momento stop al proceso, se queda en start y parece que no vuelve a funcionar start sobre start.
Dejándolo así, una vez que arranca nuestra Raspberry Pi es necesario indicarle desde consola >> sudo /etc/init.d/envioTuit stop Para que al reiniciar vuelva a enviar el tweet.

Para evitar este proceso y que haga start y stop de forma automática, vamos a editar nuestro archivo >> sudo nano /etc/init.d/envioTuit Y modificamos únicamente estas dos líneas de todo el archivo.

# Default-Start: S
# Default-Stop:

Por estas otras

# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6

De esta forma en los runLevels 2, 3, 4 y 5 nuestro archivo pasa al modo “start” y cuando se encuentra en 0, 1 y 6 pasa al modo “stop”.

Si descargas los archivos de código del tutorial recuerda que debes cambiar esas dos líneas para que funcione correctamente.
#[Fin de la actualización]

Con esto terminado, si reiniciamos nuestra Raspberry Pi debería ejecutar iniciando.py de forma automática. Aunque existe una forma para ver si está correctamente creado nuestro archivo envioTuit.
Desde consola le decimos >>

sudo /etc/init.d/envioTuit start

y si está correcto debería enviar el tuit. En el caso de querer detener el proceso si fuese más largo que enviar un tuit emplearíamos desde consola también >>

sudo /etc/init.d/envioTuit stop

Esto no es más que una forma de verificar que el escript envioTuit llama correctamente a inciando.py.
Ahora toca hacer la prueba de fuego reiniciando desde el escritorio o escribiendo en consola >>

sudo reboot

Espero que os sirva de ayuda esta entrada.

Muy a tener en cuenta en nuestro archivo envioTuit:

  • La ruta de nuestro archivo.py.
  • Indicarle que abra python con sudo.
  • Mantener intactos los comentarios de la cabecera.

Bueno, y comentaros que esta entrada ha sido escrita desde mi nueva Raspberry Pi3, a la que he adoptado como equipo de trabajo de ahora en adelante.

¡Saludos!

Untitled.es en redes sociales

Enviar SMS con Arduino y SIM800L

Enviar SMS con Arduino y SIM800L

Otro tutorial de Arduino en el que vuelve a estar presente este nuevo amigo de los proyectos, el módulo SIM800L.

Vamos a enviar un SMS al pulsar un botón.

Si estás en España, te recomiendo que compres exactamente este módulo SIM800L, ya que lo he probado y te puedo garantizar que funciona con tarjetas de Movistar, Vodafone, Yoigo, Pepephone, etc.

Recuerda que PagarPoquito.com tiene gastos de envío gratis todo el año.

Arduino SIM800L

Tutorial SIM800L

Desde aquí puedes descargar el archivo de conexión y de código de una forma muy sencilla. Para descargar basta con que pulses “Descargar con un tuit”, se enviará un tuit de forma automática al mismo tiempo comenzará la descarga.

Pagar con un Tweet para descargar Tutorial SMS con SIM800L Arduino

Lo primero que tenemos que hacer, es activar el modo de envío SMS en nuestro módulo SIM800L si no lo tenemos activo.

¿Cómo hacemos esto?

Una vez que tengamos hecha la conexión y el código subido a nuestro Arduino, abrimos el Monitor Serial y le vamos a introducir el siguiente comando AT >> AT+CMGF?

Nos contestará 0 si no está activado, y tendremos que activarlo escribiendo de nuevo en el Monitor Serial >> AT+CMGF=1

Una vez terminado este proceso, nuestro módulo SIM800L estaría configurado correctamente.

Vamos a por el código.

Antes de la función setup () vamos a incluir:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
int contador = 0;

En la función void setup () {

   Serial.begin(9600);
   mySerial.begin(9600);
   pinMode (12, OUTPUT);
   pinMode (8, INPUT);
   delay(1000);

En la función void loop () {

   if((digitalRead(8) == 1)&&(contador == 0)){
      mySerial.print("AT+CMGS="+xxxxxxxxxxx"\r");
      delay(100);
      mySerial.print("Enviado desde el tutorial de Untitled.es");
      delay(100);
      mySerial.print(char(26));        
      delay(100);
      mySerial.println();
    
      contador = 1;
   }

   if (mySerial.available()){
      Serial.write(mySerial.read());
   }
   if (Serial.available()){
      while(Serial.available()) {
         mySerial.write(Serial.read());
      }
      mySerial.println();
   }

SMS SIM800L

He creado un contador para asegurarme que únicamente va a enviar un SMS. Una vez que envía el SMS, pone contador = 1 y ya no entra más en el if. No olvides colocar este contador, por el bien del saldo de tu tarjeta.

Obviamente >> +xxxxxxxxxxx hay que sustituirlo por el numero de teléfono. Recuerda que en España empieza por +34xxxxxxxxx, cada país tiene su prefijo.

Listado de todos prefijos telefónicos mundiales.

Enviar SMS con Arduino

Aquí tienes un vídeo de este tutorial funcionando.

Espero que os sirva de ayuda el tutorial.
Saludos!

Creo que te pueden interesar también estos dos tutoriales sobre el SIM800L.

Untitled.es en redes sociales

Detectar llamada entrante SIM800L Arduino

Detectar llamada entrante SIM800L Arduino

En este tutorial de Arduino vuelve a estar implicado el módulo SIM800L. Mediante código vamos a detectar que número está llamando a la tarjeta SIM que tenemos en nuestro módulo GSM.

Si estás en España, te recomiendo que compres exactamente este módulo SIM800L, ya que lo he probado y te puedo garantizar que funciona con tarjetas de Movistar, Vodafone, Yoigo, Pepephone, etc.

Recuerda que PagarPoquito.com tiene gastos de envío gratis todo el año.

Arduino SIM800L

Tutoriales Arduino

Desde aquí puedes descargar el archivo de conexión y de código de una forma muy sencilla. Para descargar basta con que pulses “Descargar con un tuit”, se enviará un tuit de forma automática al mismo tiempo comenzará la descarga.

Pagar con un Tweet para descargar Tutorial llamada entrante SIM800L Arduino

Antes de intentar averiguar mediante código qué número nos está llamando, debemos verificar si tenemos activada esta posibilidad en nuestro módulo SIM800L.

¿Cómo hacemos esto?

Tal y como dejamos nuestro proyecto anterior, el de llamar con Arduino y SIM800L, abrimos el Monitor Serial y le vamos a introducir el siguiente comando AT >> AT+CLIP?

Nos contestará lo siguiente >> +CLIP: 0,1

Comandos AT SIM800L

Esto quiere decir que no tiene activada la posibilidad para detectar el número entrante, y siempre que nos llamen va a mostrarnos >> RING.

Obviamente, tenemos que configurar nuestro SIM800L para que nos identifique la llamada. Para esto vamos a utilizar un comando AT >> AT+CLIP=1

Comandos AT SIM800L

Veremos que si hacemos la comprobación nuevamente >> AT+CLIP? ya va a indicarnos que lo tenemos activado con >> +CLIP: 1,1

Una vez que hemos verificado la configuración del SIM800L, pasamos a ver el código.

Tutorial SIM800L

Antes de la función setup vamos a declarar lo que necesitamos y a importar la librería necesaria.

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11);
String quienLlama;

En la función void setup () {

   pinMode(8, OUTPUT);
   pinMode(7, OUTPUT);
   pinMode (12, OUTPUT);

   Serial.begin(9600);
   mySerial.begin(9600);
   delay(1000);
   mySerial.println("AT\r\n");
   delay(1000);

Tutorial de Arduino

En la función void loop () {

   quienLlama = "";
  
   while (mySerial.available()>0){
      delay(10);
      quienLlama += (char)mySerial.read(); 
   }
  
   Serial.print(quienLlama);
 
   if (quienLlama.indexOf("RING")>-1){
      delay(1000);
      String num;
      int inicio=quienLlama.indexOf('"')+1;
      int fin=inicio+9;
      num=quienLlama.substring(inicio,fin);    
      if (num=="xxxxxxxxx"){
         Serial.print("NUMERO ACERTADO");
         digitalWrite(8, HIGH);
         delay(100);
         digitalWrite(8, LOW);
         delay(100);
         digitalWrite(8, HIGH);
         delay(100);
         digitalWrite(8, LOW);
         delay(100);
      }else{
         Serial.print("NUMERO ERRONEO");
         digitalWrite(7, HIGH);
         delay(100);
         digitalWrite(7, LOW);
         delay(100);
         digitalWrite(7, HIGH);
         delay(100);
         digitalWrite(7, LOW);
      }
  }   

La variable num es la que guarda el número de teléfono que nos está llamando.

num=quienLlama.substring(inicio,fin);

Seguidamente está la estructura if que vas a tener que modificar por el número de teléfono que quieres filtrar, sustituyendo las xxxxxxxxx por el número real.

if (num=="xxxxxxxxx"){

Y con esto doy por terminado este nuevo tutorial de Arduino, espero que os sirva de ayuda en vuestros proyectos.
Saludos!

[Actualizado 07-04-2016]
Desde esta entrada puedes enviar un SMS desde el SIM800L y Arduino.

Aquí puedes ver un vídeo del ejemplo. Cuando llamo desde mi teléfono móvil se enciende el led rojo, ya que considera el número incorrecto, cuando llamo desde el teléfono fijo (inalámbrico) se enciende el led verde al considerar que es el correcto.

Untitled.es en redes sociales

SIM800L con Arduino

SIM800L con Arduino

En este tutorial de Arduino vamos a realizar una llamada con nuestro módulo SIM800L. Utilizaremos comandos AT desde el Monitor Serial.

Arduino SIM800L

Desde aquí puedes descargar el archivo de conexión y de código de una forma muy sencilla. Para descargar basta con que pulses “Descargar con un tuit”, se enviará un tuit de forma automática al mismo tiempo comenzará la descarga.

Pagar con un Tweet para descargar Tutorial módulo SIM800L Arduino

Turorial SIM800L

Qué vamos a necesitar para llevar a cabo esta entrada:

  • Módulo SIM800L.
  • Arduino UNO.
  • Tarjeta SIM con saldo y sin PIN (se puede utilizar con PIN también, pero en este tutorial no vamos a ver el comando para meter PIN).
  • Diodo IN4007.
  • Algunos cables de conexión.

Antes de meternos con el código, vamos a ver cómo tenemos que hacer la conexión de nuestro GSM SIM800L con Arduino.

Imagino que habrá diferentes formas de conectar este módulo SIM800L, yo incluyo en esta entrada (después de darle muchas vueltas) la que me funciona perfectamente. Para nada estoy diciendo con esto que sea la mejor forma de hacerlo, sí una de ellas en la que funciona correctamente este módulo GSM SIM800L

Revisa el esquema de conexión del módulo SIM800L que has descargado y conecta todo como indica el archivo. Verás que la conexión es muy sencilla de hacer. Presta especial atención a la colocación del diodo que sale del pin VCC, recuerda que tiene positivo y negativo.

Tutoriales Arduino

Una vez que hemos conectado todo, nos ponemos manos a la obra con el código.

Antes de la función setup.

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11);

En la función void setup () {

   Serial.begin(9600);
   mySerial.begin(9600);
   pinMode (12, OUTPUT);

Tutorial de Arduino

En la función void loop () {

   if (mySerial.available()){
      Serial.write(mySerial.read());
   }
   if (Serial.available()){
      while(Serial.available()) {
         mySerial.write(Serial.read());
      }
      mySerial.println();
   }

Código Tutorial Arduino

Con el código ya cargado en nuestro Arduino, abrimos el Monitor Serial para comunicarnos con nuestro módulo SIM800L mediante comandos AT.

Nosotros utilizaremos en este tutorial únicamente tres comandos AT.

AT >> Verificar el estado de nuestro SIM800L
ATDxxxxxxxxx; >> Hace una llamada al número que le indiquemos con las xxxxxxxxx;
ATH; >> Cuelga la llamada que tenemos activa.

Aquí puedes ver un video del ejemplo.

Espero que os sirva de ayuda este tutorial.
Saludos!

[Actualizado 06-04-2016]
Desde esta entrada puedes detectar llamadas entrantes con SIM800L y Arduino.
[Actualizado 07-04-2016]
Desde esta entrada puedes enviar un SMS desde el SIM800L y Arduino.

Untitled.es en redes sociales

LCD Nokia con Arduino y Python

LCD Nokia con Arduino y Python

No es la primera entrada que dedico a la comunicación serial entre Arduino y Python.
En este tutorial de Arduino vamos a mover a Evaristo por un LCD de Nokia 5110.

Python con Nokia y Arduino

Leyendo Python con Arduino

Si tienes ganas y tiempo, puedes echar un vistazo también a:

Desde aquí puedes descargar el archivo de conexión y los de código de una forma muy sencilla. Para descargar basta con que pulses “Descargar con un tuit”, se enviará un tuit de forma automática al mismo tiempo comenzará la descarga.

Pagar con un Tweet para descargar Leyendo Python con Arduino

Enviar datos con Python

Primero vamos a crear nuestro archivo .py que será el encargado interceptar la tecla que pulsamos (mediante la librería readChar) y enviarla serialmente a nuestro Arduino.

Arduino con Python

Código para nuestro archivo LCD-grafico.py

Importamos lo necesario.

#!/usr/bin/python
# -*- coding: utf-8 -*-

import serial
import readchar

Creamos la conexión serial.

arduinoPort = serial.Serial('/dev/cu.wchusbserialfa130', 115200, timeout=1)
datoParaEnviar = 'x'

Chorrada gráfica para que muestre.

print("┌-----------------------┐")
print("│     Evaristo Power    │")
print("└-----------------------┘")

Le indicamos que ejecute nuestra aplicación siempre que no se pulse la tecla s. La aplicación está detectando el valor de las teclas presionadas y las envía a nuestro Arduino.

while True:
	if(datoParaEnviar != 's'):
		datoParaEnviar = readchar.readkey()
		arduinoPort.write(datoParaEnviar.encode('utf-8'))
	else:
		break

Con esto ya estaría terminado nuestro código en Python.

Únicamente te recuerdo que la ruta /dev/cu.wchusbserialfa130 la tendrás que modificar por la tuya (puedes verla desde el IDE de Arduino en >> Herramientas >> Puerto).

La velocidad va a depender de otros factores, te recomiendo que hagas varias pruebas, a mi me va genial con 115200, otras equipos funcionan perfectamente con 9600.

Obviamente puedes eliminar las tres líneas que imprimen en pantalla Evaristo Power.

Ahora vamos al IDE de Arduino para escribir nuestro archivo .ino, antes de la función setup() vamos a escribir lo siguiente.

int valor = 0;
int pX = 35;
int pY = 12;

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 7, 6);

#define LOGO16_GLCD_HEIGHT 16
#define LOGO16_GLCD_WIDTH  16

static const unsigned char PROGMEM Evaristo[] =
{ 
  B00001111, B11110000,
  B00010000, B00001000,
  B00010110, B01101000,
  B00110010, B01001100,
  B00110000, B00001100,
  B00011111, B11111000,
  B00010000, B00001000,
  B00011110, B01111000,
  B00001111, B11110000,
  B00111111, B11111100,
  B01010101, B01011010,
  B01011010, B10101010,
  B01011111, B11111010,
  B01011111, B11111010,
  B00011000, B00011000,
  B00011000, B00011000
};

Dentro de la función setup () { vamos a escribir lo siguiente.

Serial.begin(115200);
display.begin();
display.setContrast(50);
display.clearDisplay();

display.drawBitmap(35, 12, Evaristo, 16, 16, BLACK);
  
display.setTextSize(1);
display.setCursor(6,40);
display.print("Evaristo Crew");
display.display();

Y por último, dentro de la función loop () { lo siguiente.

if (Serial.available() != 0) {
    valor = Serial.read();
    display.clearDisplay();
      
    if (valor == 'q') {
        display.drawBitmap(pX, pY, Evaristo, 16, 16, WHITE);
        display.drawBitmap(pX, pY-1, Evaristo, 16, 16, BLACK);
        display.setCursor(10,40);
        display.print("Untitled.es");
        display.display();
        pY = pY - 1;
    }
    if (valor == 'a') {
        display.drawBitmap(pX, pY, Evaristo, 16, 16, WHITE);
        display.drawBitmap(pX, pY+1, Evaristo, 16, 16, BLACK);
        display.setCursor(10,40);
        display.print("Untitled.es");
        display.display();
        pY = pY + 1;
    }
    if (valor == 'o') {
        display.drawBitmap(pX, pY, Evaristo, 16, 16, WHITE);
        display.drawBitmap(pX-1, pY, Evaristo, 16, 16, BLACK);
        display.setCursor(10,40);
        display.print("Untitled.es");
        display.display();
        pX = pX - 1;
    }
    if (valor == 'p') {
        display.drawBitmap(pX, pY, Evaristo, 16, 16, WHITE);
        display.drawBitmap(pX+1, pY, Evaristo, 16, 16, BLACK);
        display.setCursor(10,40);
        display.print("Untitled.es");
        display.display();
        pX = pX + 1;
    }
}

Una vez terminado el código hacemos la conexión (según el esquema que has descargado anteriormente con los archivos) de nuestro LCD Nokia con el Arduino Nano y ejecutamos nuestra aplicación Python.

Python con Arduino

En este vídeo puedes ver el resultado.

Espero que disfrutéis este tutorial.
Saludos!

Puedes seguir Untitled.es desde las redes sociales

Historia de la web de Arduino.cc

Historia de la web de Arduino.cc

Llevo unos días recopilando capturas de pantalla del sitio web de Arduino, desde sus inicios en 2006.

Las capturas de pantalla van aproximadamente de año en año.

Enero 2006

Arduino 2006

Diciembre 2007

Arduino Diciembre 2007

Diciembre 2008

Arduino Diciembre 2008

Diciembre 2009

Arduino Diciembre 2009

Diciembre 2011

Arduino Diciembre 2011

Diciembre 2012

Arduino Diciembre 2012

Enero 2013

Arduino Enero 2013

Diciembre 2013

Arduino Diciembre 2013

Enero 2014

Arduino Enero 2014

Diciembre 2014

Arduino Diciembre 2014

Enero 2016

Arduino Enero 2016

¡Saludos!

Untitled.es en redes sociales

De paso por Makespace Madrid

De paso por Makespace Madrid

Dando un paseo por Madrid con mi hermana y mi sobrino aproveché para conocer el MakeSpace Madrid y una obra de arte que llevaba años con ganas de visitar, la firma de Muelle en la calle de la Montera (creo que la última que queda).

Makespace Madrid

MakeSpace Madrid

Podría decir que fue una coincidencia o que casualmente pasaba por allí, pero no, después de llevar unos meses siguiendo casi todas sus publicaciones de Facebook y de leer algunas de las secciones de su manual de supervivencia maker, allí estaba en Madrid, más exactamente en la puerta del Makespace Madrid.

Fuera del horario de visitas (sin saberlo), con mi hermana y mi sobrino, pero allí, en la puerta del Makespace Madrid.

Makespace Madrid

Allí conocí a Jairo y a Enrique, que nos estuvieron enseñando algunos proyectos en los que están trabajando. Esa tarde estaban dando forma a la impresora 3d Everext.

Makespace Madrid

Maker Space Madrid

Estuvimos charlando un rato, haciendo un recorrido rápido de las instalaciones y hojeando el manual de supervivencia maker.

Maker Madrid

Aproveché para sacar estas fotografías.

No conozco ni los nombres ni las características técnicas de estos proyectos e impresoras 3D, si tenéis curiosidad o alguna pregunta sobre algo, podéis dejar un comentario y les consulto a ellos.

Nos dieron unos llaveros y un muñeco para mi sobrino, la verdad que encantadores.

La idea era echar un vistazo de la maquinaría y los trabajos en marcha, no queríamos quitarles mucho tiempo.
El rato de visita fue breve pero muy ameno, yo salí encantado de allí. Me lleve una impresión de grupo de trabajo, de ganas de crear y de colaboración.

Antes de salir me dieron una Miniblip, que es una placa que construyó CircoLab mientras viajaban por España en una furgoneta maker, la semana que viene os la presento por aquí en forma de entrada con algo de código.

Después de eso… Pues a ver la firma de Muelle y a casa.

Muelle Madrid

¡Saludos!

Untitled.es en redes sociales

Bot Telegram con Python – Parte 2

Bot Telegram con Python – Parte 2

En este tutorial de Raspberry Pi vamos a controlar mediante Python y una Raspberry Pi, un Bot de Telegram que hemos creado en la entrada anterior.

Echa un vistazo si todavía no lo tienes creado: Crear Bot Telegram.

Bot Telegram Python

Tutorial Raspberry Pi

El último paso en la creación de mi bot de Telegram fue añadir dos comandos con /setcommands.

  • hola – Saludo con hola
  • chao – Saludo con chao

En esta Parte 2 del tutorial va a ser donde tomen importancia estos dos comandos. Aunque todavía no.

Bot Telegram Python

Por fin llega la hora de ponernos a escribir un poco de código.

De forma remota, o con el monitor, ratón y teclado conectados a nuestra Raspberry Pi, vamos a crear un archivo de texto que se llame “bot-telegram.py”.

Aunque antes de nada, si no tenemos la librería pyTelegramBotAPI instalada, tendremos que instalarla. Muy sencillo, abrimos una consola.

$ pip install pyTelegramBotAPI

(Si estás en MAC y no tienes la posibilidad de instalar con pip, ejecuta en consola ->> sudo easy_install pip).

O bien de la otra forma que conocemos.

$ git clone https://github.com/eternnoir/pyTelegramBotAPI.git
$ cd pyTelegramBotAPI
$ python setup.py install

Con la librería instalada nos ponemos a escribir el código de bot-telegram.py.

bot-telegram.py

Comenzamos por importar la librería y definir algunos datos.

# -*- coding: utf-8 -*-
import telebot
from telebot import types

TOKEN = 'XXXXXXXXXXXXXXXXXXXXXXXX'
bot = telebot.TeleBot(TOKEN)

Ten en cuenta que el valor de TOKEN te lo envió por Telegram BotFather, debes saberlo del tutorial anterior, cuando creaste tu bot.

Para visualizar con nuestro script todos los mensajes que nos envíen los diferentes usuarios de Telegram, podemos añadir el siguiente código (no es obligatorio).

def listener(mensajes):
    for m in mensajes:
        chat_id = m.chat.id
        texto = m.text
        print('ID: ' + str(chat_id) + ' - MENSAJE: ' + texto)    
        
bot.set_update_listener(listener)

Voy a escribir a modo de ejemplo un texto a nuestro bot de Telegram.

Bot Telegram Python

Desde nuestra Raspberry Pi estaremos recibiendo estos valores.

Bot Telegram Python

Por fin llegamos al tema comandos (hola y chao).

Para hacer el bot interactivo volvemos a recordar los comandos que escribimos en la entrada anterior y que hemos nombrado en las primeras líneas de esta.

  • hola – Saludo con hola
  • chao – Saludo con chao

Como ves en esta imagen, al escribir / en nuestro textbox de Telegram nos aparece para seleccionar alguno de nuestros comandos que definimos.

Bot Telegram Python

En esta parte de nuestro código Python es donde le indicamos qué mensaje queremos que nos muestre dependiendo del comando que seleccionemos.

@bot.message_handler(commands=['hola'])
def comando_hola(mensaje):
    chat_id = mensaje.chat.id
    bot.send_message(chat_id, 'Te digo Hola desde el UntitBot')

@bot.message_handler(commands=['chao'])
def comando_chao(mensaje):
    chat_id = mensaje.chat.id
    bot.send_message(chat_id, 'Te digo Chao desde el UntitBot')

bot.polling(none_stop = True)

En el vídeo se puede ver que en la parte de la izquierda ejecuto el script que hemos creado en Python. Una vez que se ejecuta se queda a la espera escuchando si alguien envía un mensaje a UntitBot, en caso de que alguien envíe algo, lo muestra de forma inmediata.

Esta es la línea que imprime en pantalla (yo he puesto un IF y si detecta mi ID muestra Eneakao).

print('ID: ' + str(chat_id) + ' - MENSAJE: ' + texto)  

En la parte de la derecha tenemos un iPad Mini 4, desde dónde le estoy enviando mensajes a UntitBot. Siempre que le envíe algo que no esté definido en los comandos lo ignora, no hace nada. En cambio cuando selecciono uno de los comandos, contesta de forma automática con lo que hemos establecido por código. Si selecciono el comando /hola lo procesa y responde “Te digo Hola desde el UntitBot” y cuando pulsamos sobre el comando /chao lo mismo.

Bot Telegram

Pues ya está terminada la Parte 2 de este tutorial para Raspberry Pi.
Espero haber sido claro siguiendo los pasos, de todas formas cualquier duda que tengas ya sabes, pregunta que es gratis.

¡Saludos!

Untitled.es en redes sociales