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

Crear Bot Telegram – Parte 1

Crear Bot Telegram – Parte 1

En este tutorial de RaspberryPi vamos a crear un bot de Telegram para interactuar con él mediante Python y una RaspberryPi 2 Model B (a partir de ahora mi RaspberryPi).

Bot Telegram Python

Para evitar tener que conectar un teclado y un monitor a mi RaspberryPi, voy a comunicarme con ella de forma remota mediante -ssh. Puedes ver un tutorial de RaspberryPi para conectar con ella de forma remota.

Crear bot Telegram

Doy por hecho que el tema de conexión remoto ya está solucionado y que sabes qué es un bot y algunas de sus aplicaciones en las redes sociales.

Para realizar este tutorial de RaspberryPi estoy utilizando un MacBook Pro con OS X Yosemite 10.10.5 + RaspberryPi 2 Model B con la distribución Noobs y con el programa VNC (incluye versión de escritorio para Mac, iOS y extensión de Chrome) + Mi cuenta de Telegram.

Bot Telegram con Python

Lo primero que vamos a hacer es abrir nuestra app de Telegram y buscar a un usuario llamado BotFather que será el “bot” que va a guiarnos en nuestro proceso de creación de bot Telegram.

Una vez encontrado abrimos una conversación con él, BotFather es simpático y buena persona :)

Bot Telegram

Nos va enviar un comentario con los comandos que debemos utilizar.

Bot Telegram

En este tutorial no vamos a ver todos en detalle, pero sí los principales para crear un bot básico.

Seleccionamos el primero ->> /newbot:

  • /newbot Primero nos va a solicitar un nombre para el bot, le voy a poner UntitBot. Seguidamente nos pedirá un nombre de usuario para nuestro bot, voy a darle el mismo UntitBot.

Con esto ya tendríamos creado nuestro bot, BotFather se encarga de mostrar en pantalla nuestro token para acceder al HTTP API.

Bot Telegram

Ahora vamos a configurar algunos detalles más de nuestro bot seleccionando diferentes comandos.

  • /setdescription desde aquí vamos a introducir una descripción.
    A mi va a pedirme que seleccione en qué bot quiero cambiar la descripción (tengo dos bots creados).

    Bot Telegram

    Una vez tengo seleccionado @UntitBot paso a escribir la descripción.
    Yo en mi caso he escrito lo siguiente: “Este bot ha sido creado por Eneakao para el Tutorial de Untitled.es, no tengas miedo es inofensivo.”

    Bot Telegram

  • /setabouttext desde aquí vamos a escribir el About.
    He escrito lo siguiente: “Este bot es inofensivo, ha sido creado por Eneakao para un tutorial. ¡Entra a saludar!”

    Bot Telegram

  • /setuserpic desde aquí vamos a colocar una imagen de nuestro bot, que será con la que apareceremos en las búsquedas.

    Bot Telegram

    Selecciono la imagen de mi iPadMini4 y la envío.

    Bot Telegram

  • /setcommands desde aquí vamos a incluir los comandos hola y adios. La razón por la que hay que crear estos dos comandos lo vamos a ver en la siguiente entrada, la parte 2 de este tutorial.

    hola – Saludo con hola
    chao – Saludo con chao

    Bot Telegram

Con esto ya tendríamos la Parte 1 terminada. Aunque la idea inicial era de crear este tutorial en una sola entrada, dejaré para la Parte 2 la forma de trabajar con este bot mediante Python y la RaspberryPi.

[Actualizado 11 de enero 2016 a las 20:01]
Ya está terminada la Parte 2 de este tutorial.

¡Saludos!

Untitled.es en redes sociales

Programar ATMega 328P

Programar ATMega 328P

En esta entrada vamos a ver una recopilación de tres tutoriales de Arduino que nos van a servir para poder incluir directamente microcontroladores ATMega 328P en nuestros proyectos.

Programar ATMEGA328

Antes de nada debemos saber que los ATMega 328P trabajan con un voltaje de 5V y que para poder alimentar nuestro proyecto de Arduino podremos utilizar baterías de diferentes voltajes.
Yo en los tutoriales trato siempre de usar baterías de 9V que son muy fáciles de conseguir.

Tutorial Arduino

¿Qué pasa con esto? ¿ATMega 328P trabaja con 5V pero mi pila es de 9V? ¿Se quemará?
Ahí es donde toma protagonismo nuestro primer tutorial, vamos a crear un regulador de 5V.

Para crear un regulador de 5V vamos a necesitar lo siguiente:

  • 1 Mini protoboard
  • 1 Condensador 100 uF
  • 1 Regulador 7805
  • Algunos cables de conexión

Te recuerdo que puedes encontrar todos estos componentes en la tienda online de electrónica PagarPoquito.com.

Una vez que tenemos el regulador funcionando correctamente, vamos a ver cómo podemos grabar nuestro primer Sketch en ATMega328P.

Para esta operación podemos utilizar un programador externo o hacerlo directamente con Arduino. Yo suelo utilizar un Arduino UNO para escribir en los ATMega328P.

¡Muy importante y a tener en cuenta!

Segundo tutorial a seguir: Para poder hacerlo con Arduino tendremos que cargar el Bootloader en el ATMega328P.

Una vez que hemos cargado el Bootloader correctamente, ya sólo nos hace falta grabar el Sketch en ATMega328P en nuestro Arduino UNO.

Tutoriales Arduino

Resumiendo un poco:

  • Creamos el regulador de 5V.
  • Preparamos el microcontrolador ATMega328P cargándole el Bootloader.
  • Grabamos nuestro Sketch en el microcontrolador ATMega328P.

Espero que os sirva de utilidad esta recopilación.
¡Saludos!

Untitled.es en redes sociales

Enviar tweet con Raspberry Pi 2

Enviar tweet con Raspberry Pi 2

En este tutorial de Raspberry Pi2 vamos a enviar un tweet de forma automática desde nuestra Raspberry Pi 2. Utilizaremos como base del ejemplo un tutorial anterior, en el que estuvimos trabajando con un sensor LDR con Raspberry Pi2

Twitter con Raspberry Pi

Te cuento lo que hacíamos en el anterior tutorial de Raspberry Pi.

  • Conectamos un sensor LDR a nuestra Raspberry Pi.
  • Mediante un archivo de Python, con la ayuda de la librería pygame, leíamos el valor del sensor LDR y cuando llegaba a determinado valor abría una ventana con una fotografía.
  • Podías cerrar el proceso pulsando la tecla Escape y cerrando la ventana.

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 enviar tweets con Raspberry Pi2

Tutoriales Raspberry Pi

En este tutorial de Raspberry Pi vamos a utilizar ese mismo archivo Python, el sensor LDR y el esquema de conexión. La novedad viene en que cuando este sensor alcance un determinado valor, enviará un tweet de forma automática.

No hay mejor forma para verificar el funcionamiento de este tutorial que enviar un tweet.

Envio tweet Raspberry Pi

Antes de seguir avanzando te recomiendo que eches un ojo a esta entrada en la que te cuento cómo crear una app de Twitter. La vas a necesitar para enviar el tweet y es muy sencillo hacerlo. Te proporcionará unos datos de configuración.

Enviar Tweet Raspberry Pi

Una vez con la aplicación creada vamos a pasar a ver el código escrito en Python.

import RPi.GPIO as GPIO, time
import sys
import tweepy

GPIO.setmode(GPIO.BOARD)
linterna = False

CONSUMER_KEY = '' 
CONSUMER_SECRET = ''
ACCESS_KEY = ''
ACCESS_SECRET = ''

def timer (pin):
   reading = 0
   GPIO.setup(pin, GPIO.OUT)
   GPIO.output(pin, GPIO.LOW)
   time.sleep(0.1)
   GPIO.setup(pin, GPIO.IN)
   while (GPIO.input(pin) == GPIO.LOW):
      reading += 1
   return reading

while not linterna:
   valor = timer(10)

if valor<30:
   auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
   auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
   envioTuit = tweepy.API(auth)
   texto = ("Envío el tuit porque el valor de LDR es: ") + str(valor)
   envioTuit.update_status(valor)
print (valor)

Twitter Raspberry Pi2

El código de este tutorial de Raspberry Pi es muy sencillo, de todas formas vamos a separar las cuatro partes fundamentales para explicarlo un poco.

Importamos librerías y módulos necesarios.

import RPi.GPIO as GPIO, time
import sys
import tweepy

Definimos pines, variables y constantes. Recuerdas que los valores de CONSUMER_KEY, CONSUMER_SECRET, ACCESS_KEY y ACCESS_SECRET te los van a proporcionar cuando hayas creado tu app de Twitter.

GPIO.setmode(GPIO.BOARD)
linterna = False

CONSUMER_KEY = '' 
CONSUMER_SECRET = ''
ACCESS_KEY = ''
ACCESS_SECRET = ''

Detecto el valor del sensor LDR que tengo conectado y lo imprimo en pantalla.

def timer (pin):
   reading = 0
   GPIO.setup(pin, GPIO.OUT)
   GPIO.output(pin, GPIO.LOW)
   time.sleep(0.1)
   GPIO.setup(pin, GPIO.IN)
   while (GPIO.input(pin) == GPIO.LOW):
      reading += 1
   return reading

while not linterna:
   valor = timer(10)
   print (valor)

Mediante un IF, si detecto que el valor es inferior a 30 lanzo el tweet de forma automática.

if valor<30:
   auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
   auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
   envioTuit = tweepy.API(auth)
   texto = ("Envío el tuit porque el valor de LDR es: ") + str(valor)
   envioTuit.update_status(valor)

Poco más que añadir, tutorial terminado. Os dejo un vídeo para que veais el funcionamiento.

¡Saludos!

Untitled.es en redes sociales