Tienda de electrónica Arduino

Tienda de electrónica Arduino

Hace un par de días hemos terminado la actualización de la tienda de electrónica y productos para Arduino https://PagarPoquito.com, y no encontramos mejor forma de celebrarlo que anunciando este descuento del 20% para cualquier compra en la sección de electrónica.

Descuento 20% >> artDuino20

Hay que hacer el pedido y usar el código artDuino20 al finalizar la compra, se aplicará el descuento de forma automática.

Comprar Arduino

Dentro de la amplia gama de componentes de electrónica cabe destacar la gran cantidad de módulos para Arduino que podemos encontrar.

¿Cómo se te queda el cuerpo si te digo que los gastos de envío son gratis?

Pues como a todos, relajado y feliz de poder hacer pedidos del importe que quiera sin tener que pagar el extra del envío.

Comprar componentes de electrónica

Pues nada, eso os quería contar.

No os olvidéis que el fin de semana que viene tenemos #artDuinoLIVE tutorial práctico en directo, Mex Delgado nos piensa dejar alucinados con The Feather 8266 con ionic.

Estamos en contacto por las redes sociales.

Untitled.es en redes sociales

Feather ESP8266 HUZZAH!

Feather ESP8266 HUZZAH! + LED RGB

[Tutorial de “Mex” Delgado]

Bueno queridos amigos, ya sé que hace bastante tiempo que no subo una entrada al blog, pero como ya saben, soy una persona bastante inquieta que siempre anda metiendose en proyectos nuevos y algunas veces cuelgo un poco jajaja.

Tutorial Feather ESP8266

Tutorial Feather ESP8266

En fin, el proyecto que voy a explicar es un poco largo por lo que tendre que dividirlo en dos partes. En la primera parte vamos a poder ver el funcionamiento, la segunda es opcional, tanto en la forma de desarrollarla como en el modo que quieran hacerlo.

Hace bastante tiempo que quería hacer algo de IOT (Internet Of Things – Internet de las cosas) ya que para mi es un desafío bastante importante. Es un abanico importante de posibilidades.

No hace mucho me llegaron nuevos chiches para experimentar, y uno de ellos es el Feather ESP8266 HUZZAH! de Adafruit, este es un módulo wifi que funciona con el ESP8266-12, y la verdad, no experimente mucho, pero lo poco que lo use me dice que es un módulo bestial.

Tutorial ESP8266

Una de las cosas que noté en Feather ESP8266 es que es demasiado similar al NODEMCU. Se puede trabajar con Arduino IDE, js, micropython, etc. Pueden ver más características en https://learn.adafruit.com/adafruit-feather-huzzah-esp8266?view=all y también tienen las librerías y drivers que vamos a utilizar en el sketch.

Para este proyecto vamos a utilizar:

Recuerda que PagarPoquito.com es nuestra tienda de componentes electrónicos de confianza y tiene GASTOS DE ENVÍO GRATIS todo el año.

  • Led RGB
  • Cables Puente
  • Feather ESP8266 HUZZAH!
  • Protoboard
  • Bateria de litio de 3.7v (esta es opcional, ya que el módulo tiene conexión a batería de litio y a USB)

El equema de conexión es el siguiente:

Conexión Feather ESP8266

Una vez realizada la conexión vamos a crear nuestro sketch en el IDE de arduino o bien pueden descargarlo.

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 Feather ESP8266

Lo primero que vamos hacer es importar las librerías y definir algunas varibles y configuraciones para el proyecto.

// Incluimos las bibliotecas que usaremos en todo el código
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

// Defina el SSID y la contraseña de su red Wi-Fi
const char* ssid = "NOMBRE-DE-LA-RED-WIFI";
const char* password = "CONTRASEÑA-DE-LA-RED-WIFI";

// Instancia la clase ESP8266WebServer, pasando el argumento 80 
// Para el puerto que el servidor escuchará.
ESP8266WebServer server(80);

// Defina las variables con los valores de pin donde están conectados los LED
const int rPin = 14;
const int gPin = 13;
const int bPin = 12;

En este proyecto vamos a tener 3 funciones, 1 de ellas es el seteo del led, y las otras 2 van a ser las respuestas del server.

// Función definida por el usuario que se llamará cuando un cliente acceda 
// A la ruta del directorio raíz del host ESP8266
void handleRoot() {
  // Simplemente envía una respuesta 'OK' (200) al cliente,
  // y una cadena de texto sin formato con uso.
  server.send(200, "text/plain", String("Hola desde el ESP8266! Uso: navegar por") +
              String(" /setleds?r=XX&g=YY&b=ZZ cambiar XX/YY/ZZ por 1 o 0."));
}

// Función definida por el usuario que se llamará cuando un cliente acceda 
// a la ruta /setleds del host ESP8266
void handleSetLeds() {
  // Podemos leer el estado deseado de los LEDs de los parámetros esperados que se deben pasar en la URL. 
  // Esperamos dos parámetros "r", "g" y "b".
  String rStatus = server.arg("r");
  String gStatus = server.arg("g");
  String bStatus = server.arg("b");
  
  // Compruebe si la URL incluye un cambio del estado del LED
  bool url_check = false;
  if( (rStatus == "1") || (rStatus == "0") || (gStatus == "1") || (gStatus == "0") || (bStatus == "1") || (bStatus == "0") )
    url_check = true;

  // Verificamos los estados recibidos para saber que pin activar y cual desactivar 
  // dependiendo del valor enviado por el cliente
  if(rStatus == "1")
    digitalWrite(rPin, HIGH);
  else
    digitalWrite(rPin, LOW);

  if(gStatus == "1")
    digitalWrite(gPin, HIGH);
  else
    digitalWrite(gPin, LOW);

  if(bStatus == "1")
    digitalWrite(bPin, HIGH);
  else
    digitalWrite(bPin, LOW);

  if (url_check)
    // Si hemos configurado el LED en el estado solicitado, el servidor web devolvera una respuesta "OK" (200). 
    // También incluimos el número de milisegundos desde que el programa comenzó a ejecutarse.
    // Nota: Este número se reseteara (volverá a cero), después de aproximadamente 50 días.
    server.send(200, "text/plain", "LED status changed! (" + String(millis()) + ")");
  else
    server.send(200, "text/plain", "LED status unchanged! (" + String(millis()) + ")");
}

// Si el cliente solicita otra URL que no sea el directorio raíz o la ruta /setled:
void handleNotFound() {
  // Construimos un mensaje para ser devuelto al cliente
  String message = "File Not Found\n\n";
  // Que incluye lo que URI fue solicitado
  message += "URI: ";
  message += server.uri();
  // Qué método se utilizó
  message += "\nMethod: ";
  message += (server.method() == HTTP_GET) ? "GET" : "POST";
  // Y qué parámetros se pasaron
  message += "\nArguments: ";
  message += server.args();
  message += "\n";
  for (uint8_t i = 0; i < server.args(); i++) {
    message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  }
  // La respuesta, como se esperaba, es un error "Not Found" (404)
  server.send(404, "text/plain", message);
}

Ahora vamos crear setup del código, definiendo los pines digitales, el estado inicial del led y conexion al wifi.


// En la función de configuración inicializamos las diferentes cosas 
// que serán necesarias en nuestro programa, así como configurar el hardware
void setup(void) {
  // Configure los pines del LED para que actúen como salidas digitales
  // e inicializandolo apagado (LOW)
  pinMode(rPin, OUTPUT);
  pinMode(gPin, OUTPUT);
  pinMode(bPin, OUTPUT);
  digitalWrite(rPin, LOW);
  digitalWrite(gPin, LOW);
  digitalWrite(bPin, LOW);

  // Inicio la comunicación serie para fines de depuración
  Serial.begin(115200);
  // Inicializar el cliente WiFi e intentar conectarse a la red
  WiFi.begin(ssid, password);
  Serial.println("");

  // Esperar una conexión correcta
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // Para propósitos de depuración, imprima el ID de red y la dirección IP asignada
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  // Asociar las URL con las funciones que van a manejar las solicitudes del cliente
  server.on("/", HTTP_GET, handleRoot);
  server.on("/setleds", HTTP_GET, handleSetLeds);
  server.onNotFound(handleNotFound);

  // Empezar a ejecutar el servidor web
  server.begin();
  Serial.println("HTTP server started");
}

y por último, el loop que va a estar escuchando constantemente el server.


// La funcion loop, simplemente escucha las peticiones entrantes 
// del cliente a nuestro servidor web alojado en el ESP8266
void loop(void) {
  server.handleClient();
}

Cuando el proyecto esté corriendo, y se haya conectado al wifi, en la consola nos va a mostrar los mensajes creados, devolviendonos la IP del server.

A modo esquemático la IP que me devuelve en mi caso es 192.168.0.4 (esta puede variar) por lo que podremos acceder desde cualquier browser, sea desktop o mobile, y nos mostrará el mensaje de bienvenida configurado en la funcion handleRoot()

Tutorial ESP8266 HUZZAH!

Ya solo queda testear que este funcionando la función que obtiene las variables y setea el led, lo podemos testear escribiendo en la barra de direcciones http://192.168.0.4/setleds?r=1&g=0&b=0 y como resultado tendríamos el color rojo en el led.

Bien, en la segunda parte de este tutorial, lo que voy a explicar es como crear una app híbrida (básico, muy básico) utilizando el framework Ionic 2, para poder interactuar con el seteo del led desde un dispositivo móvil.

Acá pueden surgir algunas discusiones entre nativo es mejor, o híbrido o webapp, la verdad es una discusión bastante extensa, pero yo particularmente, al ser desarrollador web, me siento muy agusto desarrollando apps de casi el mismo calibre que una nativa, sólo utilizando js, html y css.

A lo que, ustedes pueden realizar esta segunda parte de la manera más cómoda, puede ser desde una web, desde nativo de ios o android, o una webapp, etc. Siempre y cuando impacte en la url y del método apropiado.

Acá les dejo el link de mi Instagram el cual tiene este proyecto funcionando.

La version de ionic 2 esta corriendo tanto en android como en ios y tiene todos los colores generados por el RGB.

Saludos!

Untitled.es en redes sociales

ParlaBytes 2016

ParlaBytes 2016

Que pena no haber podido asistir a ParlaBytes 2016.

ParlaBytes 2016

Hubiese sido un evento magnífico para pasar el día con la familia (hermana, cuñado y sobrinos) rodeados del ambientazo que imagino se habrá vivido en ParlaBytes 2016. Aun así he conseguido que me fuesen enviado algunas fotos y vídeos. Aquí os los dejo por si os apetece echarle un ojo.

Fotografías ParlaBytes

Ni que decir tiene que si apareces en alguna fotografía o vídeo y quieres que la elimine, me lo dices y la quito lo antes posible.

Espero que os sirva para haceros una idea.

#artDuino – Interacción con Processing

ENTRADA ACTUALIZADA CON VIDEOTUTORIAL COMPLETO, CÓDIGO PARA DESCARGAR Y ENLACES

#artDuinoLIVE – Interacción con Processing

Tutorial en vivo de Processing.

El sábado 26 de noviembre a las 10:00 MX – 14:00 AR – 18:00 ES estaremos haciendo ejemplos en vivo desde Untitled.es en la sección #artDuinoLIVE.

Alejandro Cortés estará enseñándonos algunas cosas de Processing.

¡Sí, estás en lo cierto! Como su nombre indica, vas a poder disfrutar cada pocos días de tutoriales en directo relacionados con el mundo maker. Vídeotutoriales en directo repletos de información interesante, ejemplos de Electrónica, impresión 3D, Arduino, Raspberry Pi y mucho más.

Podrás participar de forma directa con tus preguntas o aportaciones por Twitter con el hashtag #artDuinoLIVE.

¡Esperamos que os esté gustando la iniciativa!

[ACTUALIZADO 26 noviembre 2016]

artDuinoLIVE - Interacción con Processing

Os dejo puesto el código que ha escrito Alejandro durante el tutorial.

/* 
  Nombre: Mario Alejandro Cortes
  Facebook: Alexander Höfflich
  Twitter: Mrhöfflich
  Github: mrhofflich
  
  Libro: Learning processing a beginner´s guide 
  Autor: Daniel Shiffman
  
*/

color c1 = color(255,255,255,100);
color c2 = color(255,0,0, 100);
color c3 = color(0,150,0,100);
color c4 = color(0,0,150,100);
color c5 = color(130,40,200, 100);
int colorIndex;
color colorParaAsignar;
color colorAsignado;

int colorSelectorX;
int colorSelectorY;
int colorSelectorW = 250;
int colorSelectorH = 60;

void setup(){
  size(600,600); // (ancho,alto)
  background(0);  // Fondo negro  (escala grises) , (R,G,B) 
  
   colorSelectorX = width/2 - colorSelectorW/2;
   colorSelectorY = height - 30;
   colorAsignado = c1;   
}

void draw(){
   rect(colorSelectorX,colorSelectorY, colorSelectorW, colorSelectorH);
  
  for ( int i = 0; i < colorSelectorW ; i = i+ 50) {
    fill(colorParaAsignar);
    rect(colorSelectorX+i, colorSelectorY, 50, colorSelectorH);
    
      if(mousePressed){
        noStroke();
        fill(colorAsignado);
        ellipse(mouseX,mouseY,50,50);
        if(mouseX>colorSelectorX+i && mouseX<colorSelectorX+i+ 50 && mouseY > colorSelectorY && 
        mouseY < colorSelectorY+ colorSelectorH) {
         colorAsignado = colorParaAsignar; 
        }
  
      }  
    switch (i) {
     case 0:
       colorParaAsignar = c1;
       break;
     case 50:
       colorParaAsignar = c2;
       break;
     case 100:
       colorParaAsignar = c3;
       break;
     case 150:
       colorParaAsignar = c4;
       break;
     case 200:
       colorParaAsignar = c5;
       break;
     }  
}
}

void keyPressed() {
 
  if( key == 'c') {
    background(0);
  }
  
}

Para descargar Processing o conocer un poco más de este proyecto.

#artDuinoLIVE Introducción a J5 con Raspberry Pi y Arduino

ENTRADA ACTUALIZADA CON VIDEOTUTORIAL COMPLETO Y ENLACES

#artDuinoLIVE – Introducción a J5 con Raspberry Pi y Arduino

Agárrate a la silla que este sábado a las 20:00 horas de España – 16:00 horas de Argentina – 13:00 México inauguramos en Untitled.es la sección #artDuinoLIVE.

¡Sí, estás en lo cierto! Como su nombre indica, vas a poder disfrutar cada pocos días de tutoriales en directo relacionados con el mundo maker. Vídeotutoriales en directo repletos de información interesante, ejemplos de Electrónica, impresión 3D, Arduino, Raspberry Pi y mucho más.

Johnny Five J5 - #artDuinoLIVE

Podrás participar de forma directa con tus preguntas o aportaciones por Twitter con el hashtag #artDuinoLIVE.

Para esta primera emisión el argentino Mex Delgado va a mostrarnos una introducción a J5 con Raspberry Pi y Arduino. Podrás ver el directo #artDuinoLIVE desde mi canal de Youtube o directamente desde este blog.

#artDuinoLIVE

Desde aquí puedes ponerte al día con nuestros tutoriales de Arduino o con los Tutoriales de Raspberry Pi.

¡Esperamos que os guste la iniciativa!
Nos vemos el sábado 19 de noviembre (13:00 MX – 16:00 AR – 20:00 ES) en directo desde Barbate en la provincia de Cádiz (un servidor) y Buenos Aires (Mex Delgado).

[ACTUALIZADO 20 noviembre 2016]

Lo prometido es deuda.

Aquí tenéis el videotutorial completo y editado + los enlaces vistos durante #artDuinoLIVE “Introducción a Johnny Five”.

PagarPoquito.com es nuestra tienda de electrónica de confianza

Enlaces vistos en #artDuinoLIVE

Esperamos que os sirva de ayuda.

Untitled.es de nuevo a la carga

Untitled.es de nuevo a la carga

Antes de nada, quería pediros perdón por esta inmensa pausa de casi tres meses creando tutoriales de Arduino y tutoriales de RaspberryPi.

Tutoriales Arduino

Esta semana que viene tengo pensado ir respondiendo los comentarios y dudas que me habéis dejado durante estos días:

Prometo que poco a poco iré contestando todo.

De camino os cuento en esta entrada varias cosas que tengo en mente para los próximos meses, el orden que vas a leer no tiene nada que ver con la realidad, imagino que todo fluirá un poco por rachas y por la motivación del momento, como siempre.

Os lo cuento con algunas imágenes y vídeos de mi cuenta de Instagram @artDuino.

Así está el tema. Eso que os contaba + algún sorteo de cosas que no utilizo es lo que os espera por el blog.
Por cierto, me mudé, ya no vivo en Salobreña (Granada), ahora estoy por una de las zonas más bonitas de España.

Un abrazo desde Barbate (Cádiz).

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