Cómo Traducir Vídeos de YouTube a cualquier Idioma 

*(Generar subtítulos en Español)


TALLER DE RASPBERRY PI para PRINCIPIANTES

por Michael

Actualizado el 04 de Diciembre de 2018

(Traducido) 



 

¡Bienvenido al taller de Raspberry Pi para principiantes! Aquí podrá seguir nuestra serie de videos breves que cubren todo lo que necesita saber para comenzar con su Raspberry Pi y comenzar a crear proyectos increíbles. Mi nombre es Michael y soy un entusiasta de la electrónica con un interés particular en la electrónica integrada. A medida que avanzamos en los talleres, encontrará material útil junto a cada video; estos podrían ser fragmentos de código, comandos para emitir, circuitos para construir o enlaces a otros recursos.
Para seguir el taller, por supuesto, necesitará una Raspberry Pi y algunas otras piezas. Estos son:

  •     Una Raspberry Pi (estoy usando una Raspberry Pi 3 Modelo B)
  •     Una tarjeta micro SD (8 GB o más, es preferible con 10 GB)
  •     Una fuente de alimentación para alimentar tu Pi de forma segura
  •     Un teclado y ratón USB
  •     Un monitor con entrada HDMI y un cable HDMI.

Algunos componentes que necesitará son:

  •     Una placa de prueba
  •     Algunos cables de puente macho-hembra
  •     Algunos cables de núcleo sólido adecuados para placas de pruebas.
  •     LED
  •     Pulsadores momentáneos
  •     Resistencias (470 Ohm se pueden usar para todos los circuitos en el taller)

La mayor parte de lo que se requiere está disponible en nuestro kit de inicio.

 

Esquema del curso:
    Capítulo 1 - Primeros pasos
        Comprender qué es una Raspberry Pi
        Configurando tu Raspberry Pi
        Confíe en el uso de su Raspberry Pi como una computadora de escritorio
    Capítulo 2 - Programación con Python
        Empezar a programar en Python
        Escribe tus propias funciones
        Use el GPIO para controlar las salidas y leer las entradas
    Capítulo 3: Secuencias de comandos de Shell
        Comenzar secuencia de comandos de shell
        Más información sobre los permisos de archivo
        Hacer que los programas se ejecuten automáticamente
    Capítulo 4 - Creación de una aplicación de escritorio
        Más información sobre la programación basada en eventos
        Cree una interfaz gráfica de usuario (GUI) simple
    Capítulo 5 - El Internet de las Cosas
        ¿Qué es el IoT y qué se puede hacer con él?
        Configuración de partículas Pi
        Comience con IFTTT
        Controla GPIO a través de Internet

Si tiene algún problema durante este taller, comuníquese con nosotros en nuestro foro. Somos creadores a tiempo completo y estamos aquí para ayudar.
¡Empecemos!


Capítulo 1: PRIMEROS PASOS


1.0 Resumen del capítulo


En este capítulo, vamos a discutir qué es realmente una Raspberry Pi y por qué ha conquistado a la comunidad de creadores. Veremos cómo pasar de una Raspberry Pi recién salida de la caja a instalar un sistema operativo, iniciarlo y jugar un poco.

Al final del capítulo, podrá usar su Raspberry Pi como una computadora de escritorio.

Habremos cubierto:

  •     Qué es una Raspberry Pi
  •     Cómo descargar e instalar un sistema operativo,
  •     Cómo configurar una Pi para que tu teclado funcione correctamente,
  •     Navegar con el entorno de escritorio (la interfaz gráfica de usuario),
  •     Conexión a Wi-Fi
  •     Mantener actualizado su sistema operativo.

 

1.1 ¿Qué es una Raspberry Pi?

En esta sección vamos a hablar de qué es una Raspberry Pi, los diferentes modelos que hay disponibles y sus cualidades.

Ha habido varias generaciones de Raspberry Pi desde que se lanzaron por primera vez en 2012. Recomendamos el modelo "de gran tamaño" más reciente, el Raspberry Pi 3 Model B porque creemos que es la mejor plataforma de aprendizaje: funciona rápido y tiene muchas opciones de conectividad.

 

1.2 Descarga e instalación de NOOBS

Si compró una tarjeta SD que ya viene con NOOBS preinstalado, como la que se incluye en nuestro kit de inicio, vale la pena ver esta sección para que sepa cómo volver a flashear una instalación limpia de NOOBS u otro sistema operativo. sistema.

NOOBS significa Nuevo software listo para usar. NOOBS es un paquete de instalación del sistema operativo elaborado por la Fundación Raspberry Pi. Viene con un sistema operativo ya instalado y ofrece la opción de descargar varios sistemas operativos, conveniente para los usuarios primerizos que desean probar su Pi.


Puede descargar NOOBS desde la Fundación Raspberry Pi.

 

1.3 Primer encendido y revisión

Estamos encendiendo nuestra Pi por primera vez. Echemos un vistazo y configuremos algunas cosas. Esto incluye configurar el teclado y WiFi, explorar los menús y las capacidades de Pi, y echar un vistazo a algunas herramientas que usaremos para programar.

Si desea instalar un sistema operativo que no sea Raspbian usando NOOBS, deberá tener su Raspberry Pi conectada a Internet a través de su puerto Ethernet. Con esta conexión, verá otras opciones disponibles para descargar e instalar.

Para apagar su Pi, puede encontrar la opción de apagado en el menú Pi o emitir este comando en la terminal:

          sudo shutdown -h now

La luz de encendido permanecerá encendida para indicar que la energía está conectada, pero la luz de actividad permanecerá apagada.

Nunca intente desconectar la energía de su Pi sin hacer alguna de estas cosas primero. Una pérdida inesperada de energía puede dañar su tarjeta SD.

 

1.4 Introducción al Shell

El Shell es un programa que procesa nuestros comandos y devuelve resultados. Interactuamos con el

 

Shell a través de una terminal. Esto podría ser con un terminal emulado en el escritorio gráfico de Pi, o a

 

través de una conexión remota para usuarios más avanzados. Sentirse cómodo con el shell es un paso

 

importante, porque nos brinda herramientas poderosas para controlar cómo funciona nuestra Pi.

 

 

COMANDOS BÁSICOS

 

DESCRIPCIÓN

 

 

Listar el contenido del directorio

 

Cambiar al directorio: <dir>

 

Crear un nuevo directorio llamado

<dir>

 

Eliminar el directorio vacío,

<dr>

 

 

Eliminar el archivo, <archivo>

 

Ejecutar el programa editor de texto

nano

1.5 Mantenerse actualizado

Actualizaciones diarias

 

La ejecución de estos comandos mantendrá sus programas y paquetes actualizados. Actualizar, descarga las listas de paquetes para los repositorios. Así es como su Pi sabe desde dónde instalar el software. Actualizar realmente descarga los paquetes actualizados.

 

sudo apt-get update

sudo apt-get upgrade

 

Actualizaciones de distribución

 

Estos comandos realizan actualizaciones de distribución más grandes. Pueden ser útiles en el futuro cuando se publiquen distribuciones más nuevas, o si está actualizando una tarjeta SD NOOBS que se actualizó hace más de unos meses.

 

Los comandos de actualización de distribución

 

sudo apt-get update

sudo apt-get dist-upgrade

 

Instrucciones específicas para actualizar de Jessie a Jessie PIXEL

 

Si compró una tarjeta SD precargada con NOOBS, es probable que haya sido flasheada hace algún tiempo y contenga Raspbian Jessie sin la actualización PIXEL. PIXEL es una actualización principalmente estética, pero aún viene con algunas características interesantes. No necesitará seguir este paso si configuró su propia tarjeta SD (Sección 1.2) porque ya estará actualizado.

 

La Fundación Raspberry Pi ha publicado una publicación sobre qué es PIXEL y cómo actualizarlo.

 



Capítulo 2: PROGRAMACIÓN CON PYTHON


2.0 Resumen del capítulo

En este capítulo aprenderemos sobre:

 

  •     Cómo escribir un programa simple en Python
  •     Usar variables
  •     Declarar funciones para organizar nuestro código
  •     Usar Python para conectarnos al mundo real a través de GPIO

 

Recursos del capítulo:

 

La biblioteca estándar de Python: muy útil para referencias de sintaxis y para explorar qué funciones preconstruidas tenemos disponibles. 

 

Biblioteca Raspberry Pi GPIO: esto es lo que usaremos para interactuar con el mundo exterior. Hay múltiples ejemplos útiles.

 

2.1 Introducción a Python

IDLE es el entorno de Python. Es útil para probar comandos en tiempo real. Podemos escribir un script de Python, que es solo una secuencia de comandos de Python.

 

He tratado de incluir tantas funciones de Python como pude en este breve script. Compare el script con el resultado que ve cuándo se ejecuta.

¡Definitivamente hay algunos trucos que vale la pena conocer!

 

Código para esta sección:

Desafío: cambia el bucle for que cuenta de dos en dos para que cuente de -5 a 25 en pasos de 5.

 

Recuerda que tienes disponible la Documentación de la biblioteca estándar de Python, intenta buscar rango.

 

2.2 Conexión con el mundo exterior con GPIO

GPIO  (General Purpose Input/Output) es un pin genérico en un chip que permite que la Raspberry Pi se conecte al mundo. Los pines pueden generar voltaje, absorber corriente y leer niveles de voltaje. Las comunicaciones digitales complejas también pueden tener lugar en el GPIO.

 

Antes de comenzar, una aclaración sobre la conexión a GPIO: los pines en el encabezado de GPIO están conectados directamente al procesador Broadcom que es el corazón de una Raspberry Pi. Nunca debemos crear prototipos de circuitos mientras su Raspberry Pi está encendida porque un cortocircuito, por breve que sea, podría freír inmediatamente nuestra PI.

 

Apagaremos nuestra PI de manera segura, como se describe en la Sección 1.3, antes de desconectar la alimentación, ¡entonces estaremos listos para crear prototipos de algunos circuitos!

 

Hemos preparado un gran repaso sobre cómo usar una placa de prueba, si no ha usado una antes (en inglés).

 

Sparkfun tiene un tutorial completo sobre cómo funcionan las resistencias pull-up (en inglés), si estamos interesado en leer más.

 

Necesitaremoss:

  •     una placa de pruebas
  •     2x LED
  •     2 resistencias de 470 ohmios
  •     un botón provisional
  •     cable de conexión/cables de puente macho-hembra

Código para esta sección:

2.3 Pretty Demo: uso de matemáticas y funciones

Vamos a animar una bonita onda sinusoidal en nuestra interfaz. Para hacer esto escribiremos una función simple.

 

Código para esta sección:

2.4 Efecto LED de respiración

Reutilizaremos la configuración del botón LED de la Sección 2.2 para esta sección.

 

Código para esta sección:

La documentación de RPi.GPIO también tiene un ejemplo que ilumina/atenua un LED (en inglés). Para lograr ese fin, podemos usar algunos bucles for. Os animamos a comprobar cómo lo hicieron.

¡Asegurarse de cambiar el número pin GPIO en el código al que estemos usando!

 

2.5 Uso de HAT y el emulador Sense HAT

Todos los ejemplos de esta sección provienen directamente del Sense Hat Emulator. Podemos acceder a ellos seleccionando Archivo > Abrir ejemplo.

 

Tengamos en cuenta que cuando abrimos un ejemplo desde este menú, se guarda una copia del ejemplo en su directorio de inicio ( /home/pi ).

 

Así podemos acceder a la Demo de Rainbow (rainbow.py):


 

Capítulo 3: SECUENCIA DE COMANDOS DE SHELL CON BASH

En este capítulo aprenderemos sobre:

  •     Cómo escribir un script BASH simple
  •     Uso de variables y argumentos
  •     Programación de tareas
  •     Cómo usar el manual de comandos para que puedas usar los nuevos comandos correctamente.

3.1 Permisos de archivo, argumentos y nuestro primer script

Los argumentos son piezas de información que pasamos a un programa o función. Cuando ejecuta un comando como cd /home/pi, aquí el comando es cd y hay un argumento, /home/pi.

 

En BASH, se accede a los argumentos en el orden en que se pasaron con $x, donde x es el número del argumento. Esto significa que $1 se refiere al primer argumento y $4 se refiere al cuarto argumento (si lo hay). El nombre del comando emitido es $0.

 

Código para esta sección:

Listar archivos y sus permisos con

          ls  -l

Los permisos determinan quién puede leer, escribir (modificar o eliminar) y ejecutar (ejecutar) un archivo. Dado que probablemente solo haya un usuario en una Raspberry Pi, modificaremos los permisos solo para el propietario del archivo (que somos nosotros).

 

Agregue permisos de ejecución a un archivo de su propiedad con

 

          chmod u x <archivo>

Por supuesto, siempre podemos editar los permisos de archivos desde el escritorio gráfico haciendo clic con el botón derecho en un archivo y seleccionando Propiedades > Permisos > Control de acceso.

 

3.2 Variables y toma de decisiones

Para crear una variable, todo lo que necesitamos hacer es asignarla, por ejemplo a=5. ¡No usar ningún espacio! Para hacer algo de aritmética con la variable a, debemos envolver la expresión entre paréntesis dobles y agregar el símbolo $.

P.ej. para hacer que b sea igual a 5 veces a, escribiremos b=$(($a*5))

 

Código para esta sección:

Aquí hay algunas expresiones de ejemplo que podemos usar en enunciados IF:

 

3.3 Escribir un script de copia de seguridad útil

Vamos a escribir un script de archivo útil ahora. Este script tomará cualquier directorio o archivo que le demos y lo copiará en un directorio de archivo predeterminado.

 

Código para esta sección:

 

3.4 Mejorando el Backup-Script (Usando el Manual)

 

Vamos a mejorar nuestra secuencia de comandos de archivo para incluir la copia de archivos de entrada en un directorio con sello de fecha. Para lograr este fin, tendremos que repasar el uso del comando de fecha date leyendo su página del manual.

Esta será una habilidad útil para investigar comandos para usar en futuros scripts.

 

Código para esta sección:

 

3.5 Programación de tareas y ejecución al inicio

Utilizaremos siempre rutas de archivo absolutas cuando trabajemos con estas herramientas. Esto significa que la mayoría de los directorios que especifiquemos comenzarán con /home/pi. No usar sólo ~ o ./

 

Ejecutar comandos/programas al inicio:

 

Las entradas en /etc/rc.local se ejecutan al inicio.

 

Debemos editar este archivo con permisos de root, por ejemplo:

 

          sudo nano /etc/rc.local

 

Podemos agregar comandos debajo de la sección citada, pero asegurándonos de que la última línea se deje como salida 0

 

¡Advertencia!

 

Si un comando se ejecuta continuamente, como un script de Python con un ciclo infinito (while 1:) o algo que nunca sale, debe terminar la entrada con un carácter de  ( & ), por ejemplo:

 

          python3 /home/pi/script.py &

 

¡Si no hacemos esto, su Pi no arrancará porque está atascado en una secuencia de comandos de bucle infinito!

 

Todos los scripts de shell ingresados en rc.local deben terminar con una salida 0 para indicar que se completaron con éxito.

 

Una alternativa al uso de rc.local es usar el crontab (archivo de texto que guarda una lista de comandos a ejecutar en un tiempo especificado por el usuario), que se trata a continuación. El crontab es quizás un poco más seguro de usar que las ediciones en rc.local.

 

Programación de comandos/programas para que se ejecuten periódicamente:

 

    Las tareas se pueden programar introduciéndolas en el crontab. Edite el crontab con

 

               crontab -e

 

Aquí hay algunos ejemplos de cómo ejecutar algunas tareas cron:


 

Capítulo 4: APLICACIONES DE ESCRITORIO

En este capítulo aprenderemos sobre:

 

  •     Cómo crear interfaces gráficas de usuario (GUI)
  •     Programación basada en eventos

 

Comenzaremos con la creación de una interfaz muy simple y poco a poco ampliaremos su funcionalidad. Al final del capítulo, tendremos una interfaz gráfica de usuario ordenada que puede controlar el GPIO, útil si desea probar un poco de automatización del hogar o crear una interfaz dedicada para un proyecto.

 

Recursos del capítulo:

 

Documentación de Tkinter (en inglés)

 

4.1 Introducción a Tkinter

 

4.2 Nuestra primera GUI

Vamos a crear una GUI (Interfaz Gráfica de Usuario) muy sencilla para alternar un pin GPIO. Esto nos familiarizará con el flujo de trabajo de Tkinter:

 

  1.     Crear la ventana principal de la GUI
  2.     Crear widget, variable(s) requerida(s)
  3.     Posicionar el widget
  4.     Crear y adjuntar una función de evento
  5.     Programa la función para que haga lo que queramos
  6.    Repetir los pasos 2-6 según sea necesario

 

Aquí está la documentación de gpiozero (en inglés) si  preferiremos usarla en lugar de RPi.GPIO.

 

Usaremos este circuito LED simple,  *(estoy usando una resistencia de 470 ohmios):

 

4.3 Un recorrido por otros widgets

La programación de GUI es bastante repetitiva, por lo que podemos pensar en esta sección como una

 

referencia útil para copiar código e implementar rápidamente un widget.

 

4.4 Centro de comando LED con cuadro de entrada de texto

 

4.5 Barras de menú y ventanas adicionales

 

4.6 Eventos y enlaces

En ejemplos que usan GPIO, hemos estado capturando el evento WM_DELETE_WINDOW que ocurre si el

 

usuario hace clic en el botón de cerrar ventana (x). Aquí, demostraremos cómo capturar un evento de

 

doble clic y convertirlo en una interfaz de menú genial.

 

Hay muchos otros eventos que podemos utilizar.


Capítulo 5: INTERNET DE LAS COSAS


2.0 Resumen del capítulo

En el Capítulo 5, analizaremos qué es Internet de las cosas (IoT) y qué podemos hacer con él.

 

Exploraremos algunos servicios de IoT fáciles de usar que nos ayudarán a despegar con un mínimo de complicaciones.

 

 

Al final de este capítulo, podremos usar nuestra Raspberry Pi como una "cosa" conectada a la web que podemos controlar desde cualquier parte del planeta con una conexión a Internet.

 

5.1 Introducción a los servicios de IoT

IFTTT: If This, Then That se basa en applets y servicios. Los servicios son cosas que usamos todos los días, como correo electrónico, Twitter, Dropbox, Spotify, Instagram... y la lista continúa. Los applets son la forma en que IFTTT conecta nuestros servicios para cumplir nuestras órdenes. La estructura de una aplicación IFTTT es simple: si se detecta una determinada condición en un servicio, realice una acción que afecte a otro servicio. Si suena abstracto, no se preocupe. Pronto veremos un ejemplo aclaratorio.

 

Particle es una empresa de IoT que produce placas de microcontroladores conectadas a Internet. También mantienen Particle Cloud, un servicio que hace que sea muy fácil conectar dispositivos  a través de Internet. Recientemente, Particle agregó compatibilidad con Raspberry Pi a su servicio en la nube, lo que significa que podemos poner nuestra Pi en Particle Cloud de forma gratuita.

 

Para el resto de este capítulo, usaremos IFTTT y Particle, así que podemos registrarnos para obtener una cuenta con ambos servicios. También necesitaremos una cuenta de Gmail. Voy a crear una cuenta de Gmail especial solo para este capítulo. Si desea mantener su correo electrónico personal separado de sus experimentos de IoT, no estará de más hacer lo mismo.

 

En el momento de escribir este artículo, Particle Pi está en Beta, por lo que es posible que deba seguir este enlace después de configurar su cuenta de Particle.

 

MQTT es un protocolo de mensajería ligero para dispositivos IoT. Funciona como una interfaz de publicación -> suscripción. Simplemente, los dispositivos IoT se suscriben a un tema que les interesa. Un editor publica datos en un tema y esos datos se envían a todos los suscriptores de ese tema. Si desea obtener más información, hemos preparado un tutorial sobre cómo comenzar con MQTT en una Raspberry Pi. Adafruit también alberga un servidor MQTT gratuito llamado Adafruit IO.

 

Sparkfun ha creado su propio servidor de datos de uso gratuito en data.sparkfun.com. Aquí podemos crear flujos de datos, almacenar datos e incluso crear un servidor de datos privado.

 

5.2 Particle Pi y IFTTT

Al final de este vídeo seremos capaces de controlar un GPIO por correo electrónico. Dejemos que eso se asimile.

  1. Construya el siguiente circuito

    2. Configurar el particle-agent en su Pi

 

Puedes encontrar la documentación completa de instalación de particle-agent aquí.

 

Instala particle-agent ejecutando:

 

             bash <( curl -sL https://particle.io/install-pi )

 

Una vez que el agent se ha instalado, se le pedirá que introduzca su nombre de usuario y contraseña para vincular su Pi a la nube  (Tendremos la oportunidad de dar a nuestra Pi un nombre que aparecerá en la nube). Una vez completado esto, podremos iniciar sesión en build.particle.io y ver nuestra PI listada y mostrada como "online".

 

   3. Crear una Particle APP

 

En build.particle.io, seleccionar "Create New App" y copiar el código en nuestra aplicación. Tenemos que cambiar la cadena "unique_event_name" por una cadena única de nuestra elección (no la hagas corta y sencilla). Hacer clic en el icono del "rayo" para que la aplicación aparezca en nuestra Pi. (Así es, estamos desarrollando código para nuestra Pi desde un navegador de Internet, y podremos cargar nuestro código a través de Internet. Podemos estar haciendo esto desde cualquier parte del mundo. Momento para tomarnos un descanso y recuperarnos, tal vez sea hora de una taza de té).

// -----------------------------------------

// Demonstrate Particle and IFTTT

/* -----------------------------------------

This program subscribes to a a particle event.

An IFTTT app monitors inbox activity of a Gmail account and publishes events to the Particle Cloud.

------------------------------------------*/

 

int led = D1;

int boardLed = D7;

 

// setup() is run only once, it's where we set up GPIO and initialise peripherals

void setup() {

    

  // Setup GPIO

  pinMode(led,OUTPUT); // Our LED pin is output (lighting up the LED)

  pinMode(boardLed,OUTPUT); // Our on-board LED is output as well

  digitalWrite(led,LOW);

  digitalWrite(boardLed,LOW);

  

  // Subscribe to an event published by IFTTT using Particle.subscribe

  Particle.subscribe("unique_event_name", myHandler);

  // TODO:

  // Subscribe will listen for the event unique_event_name and, when it finds it, will run the function myHandler()

  // (Remember to replace unique_event_name with an event name of your own choosing. Make it somewhat complicated to make sure it's unique.)

  // myHandler() is declared later in this app.

}

 

// loop() runs continuously, it's our infinite loop. In this program we only want to repsond to events, so loop can be empty.

void loop() {

 

}

 

// Now for the myHandler function, which is called when the Particle cloud tells us that our email event is published.

void myHandler(const char *event, const char *data)

{

  /* Particle.subscribe handlers are void functions, which means they don't return anything.

  They take two variables-- the name of your event, and any data that goes along with your event.

  In this case, the event will be "buddy_unique_event_name" and the data will be "on" or "off"

  */

 

  if (strcmp(data,"led-off")==0) {

    // if subject line of email is "off"

    digitalWrite(led,LOW);

    digitalWrite(boardLed,LOW);

  }

  else if (strcmp(data,"led-on")==0) {

    // if subject line of email is "on"

    digitalWrite(led,HIGH);

    digitalWrite(boardLed,HIGH);

  }

 

}

4. Construya un nuevo subprograma IFTTT

 

Nuestra Pi está quieta pacientemente, esperando algún evento desencadenante. Démosle uno.

 

Iniciemos sesión en IFTTT y creemos un nuevo subprograma (Mis subprogramas > Nuevo subprograma)

 

Haga clic en éste y seleccione o busque 'Gmail'; Se le pedirá que autorice a IFTTT para acceder a su cuenta de Gmail. A continuación, seleccione Nuevo correo electrónico en la bandeja de entrada de la búsqueda. Este es un propósito que podemos refinar en el próximo paso.

 

Ahora tenemos que introducir nuestra condición de búsqueda. Queremos verificar el campo de asunto de un correo electrónico entrante para los asuntos led-on (activados) y led-off (desactivados). Podemos hacer clic para ver otros operadores de búsqueda útiles, pero para este ejemplo vamos a ingresar {subject:led-on subject:led-off} que verifica cualquier tema.

 

De vuelta en el menú del subprograma, veremos que gmail se ha colocado en la condición if. Ahora seleccione  "that". Aquí es donde vinculamos nuestro servicio de correo electrónico a Particle Cloud. Seleccione o busque 'Partícle' y seleccione la opción Publish an even. En el cuadro Event name, ingrese el nombre único del evento que eligimos anteriormente. Dejamos el campo de datos como Subjet  (así es cómo pasaremos la información a nuestra Pi).

 

5. Envíémonos un correo electrónico a nosotros mismos

 

Envíe un correo electrónico con el asunto led-on desde cualquier dirección a la que configuró como activador de IFTTT. (En mi caso, solo voy a enviarme un correo electrónico).

 

Podemos hacer que IFTTT verifique manualmente su activación abriendo el applet y haciendo clic en check now. Esto es útil para cuando estamos depurando, porque el tiempo de respuesta para IFTTT puede variar enormemente, de segundos a minutos.

 

¡Tu LED debería encenderse! Y cuando envíe un correo electrónico con el asunto como led apagado, el led debería apagarse. ¿¡Qué genial es esto!?

 

Particle Pinout Reference

 

Paricle fabrica su propio hardware, por lo que han mantenido su propia nomenclatura GPIO en su servicio Particle Pi. Esto es bastante bueno, porque significa que puede cambiar fácilmente en qué tipo de dispositivo (Pi <==> Particle) se ejecuta su código si lo desea.

 

Aquí tenemos una tabla muy útil para realizar un seguimiento del GPIO, según lo definido por Particle.

5.3 Comunicaciones Pi a Pi con Particle Pi

En la última sección nos pondremos al día con IFTTT, un servicio súper versátil. IFTTT es flexible, pero a veces no se activa instantáneamente. Si nuestro proyecto es sensible al tiempo, nos comunicaremos directamente a través de Particle Cloud. Aquí, publicaremos y nos suscribiremos a eventos en dos Raspberry Pi.

Editor

 

Publisher

 

Circuito

Particle App

// -----------------------------------------

// Publisher Code Demo

/* -----------------------------------------

    Each time a button is pressed, publish

    the total number of button-presses to

    an event. 

------------------------------------------*/

 

// GPIO Definitions

int pwr3_3 = D12; // 3.3V supply for button

int flashButton = D13;

int resetButton = D16;

int boardLed = D7;

int pressCount = 0; // Stores the number of times the flash-button is pressed

 

// Setup GPIO

void setup() {

    pinMode(flashButton, INPUT);

    pinMode(resetButton, INPUT);

    pinMode(boardLed, OUTPUT);

    pinMode(pwr3_3, OUTPUT);

    

    digitalWrite(boardLed, HIGH); // Start the onboard LED as OFF (boardLed is inverted)

    digitalWrite(pwr3_3, HIGH);

}

 

// Poll the button status, increment or reset the counter, publish the count.

void loop() {

    if (digitalRead(flashButton) == HIGH) {// HIGH when pressed

    

        pressCount  ;

        String dataString = String(pressCount);

        

        Particle.publish("buttonPressed",dataString,60,PRIVATE);

        // And flash the on-board LED on and off.

        digitalWrite(boardLed,LOW); // On

        delay(500);

        digitalWrite(boardLed,HIGH); // Off

 

    }

    

    if (digitalRead(resetButton) == HIGH) pressCount = 0; // Reset the press-counter

    

}

 

Subscriber

Particle App

// -----------------------------------------

// Subscriber Code Demo

/* -----------------------------------------

    Subscribe to an event and assume all 

    data that comes in is numeric.

    Convert the string data to an integer

    and flash an LED that number of times.

------------------------------------------*/

 

int led = D1;

volatile int blinkCount = 0;

volatile bool trigger = 0;

 

void setup() {

    

  // Setup GPIO

  pinMode(led,OUTPUT); // Our LED pin is output (lighting up the LED)

  digitalWrite(led,LOW);

  

  // Subscribe to an event published by our second Raspberry Pi (or other device!)

  Particle.subscribe("buttonPressed", myHandler, MY_DEVICES);

  // The MY_DEVICES argument means that only events published by devices registered to this Particle Cloud account will be accepted.

}

 

 

void loop() {

    if (trigger) { // trigger is set TRUE in the event handler

        for(int i = 0; i < blinkCount; i  ){

            digitalWrite(led, HIGH);

            delay(350);

            digitalWrite(led, LOW);

            delay(350);

        }

        trigger = 0; // Need to reset the trigger

    }

 

}

 

void myHandler(const char *event, const char *data)

{

    String dataVar = data;       // Load data, which is a constant into a string variable

    blinkCount = dataVar.toInt(); // Now we can call a special function which converts the numberic data in the string, to an integer

    trigger = 1; // Trigger the blink loop

 

}

 

5.4 Cierre del taller: ¿Hacia dónde desde aquí?

 

Hemos cubierto varios temas a lo largo de este taller, y realmente sólo hemos arañado la superficie de cada uno. A estas alturas, hemos reunido una caja de herramientas, de habilidades útiles y somos conscientes de los tipos de tareas que nuestra Raspberry PI puede manejar.

 

Dónde encontrar inspiración:

 

Un buen lugar para comenzar con una nueva pieza de hardware es encontrar un proyecto bien documentado y copiarlo. Hay un montón de proyectos geniales en instructables.comhackaday.io, y en nuestra propia página de proyectos.

 

Dónde obtener ayuda:

 

Raspberry Pi Stack Exchange (en inglés) es el lugar indicado para preguntas específicas sobre Raspberry Pi.

 

The Unix and Linux Stack Exchange  (en inglés) es el lugar al que debe responder sus preguntas sobre Linux, como el uso de comandos, secuencias de comandos de shell y otras tareas del sistema operativo.

 

*(Para recibir respuestas de calidad en Stack Exchange, asegúrese de hacer preguntas de calidad. Proporcione información sucinta en sus preguntas, y siempre ayuda haber buscado un poco en Google primero).

 

Por supuesto, siempre hay nuestros propios foros (en inglés).