Haz un botón fácil Tweet de la manera difícil: 6 pasos

Haz un botón fácil Tweet de la manera difícil: 6 pasos

Tabla de contenido:

Anonim

Hay varias formas de hacer un tweet de microcontrolador. Los métodos fáciles están bien cubiertos en otros instructables.

  1. Conéctelo a una computadora que ejecute un script de Python o similar.
  2. Conéctalo a un enrutador pirateado (bueno, ya sabes quién eres).
  3. Usando un servidor proxy de terceros, por ejemplo. ThingTweet, la biblioteca Arduino de NeoCat, Arduino Tweet Library.
Un método que no está bien cubierto es manejar todo el proceso de generación de un Tweet usando solo el microcontrolador. Este método tiene un par de ventajas sobre los otros métodos.

  • No requiere una computadora / enrutador externo.
  • No tiene los riesgos de seguridad del método tres. Pasar las credenciales de seguridad sobre un transporte no seguro es arriesgado. Si está utilizando un servidor proxy para generar sus Tweets, asegúrese de que comprende los riesgos.
Por supuesto, este método también tiene desventajas en términos de tamaño de código y complejidad; Es por eso que lo he denominado la "manera difícil".

La intención de este instructivo es dar a los demás un marco autónomo básico para generar Tweets desde un microcontrolador. La aplicación en sí es bastante simple; Presiona el botón y genera un tweet semi aleatorio.

Suministros:

Paso 1: Piezas

He utilizado el STM32 Discovery Board (STM32F103RG) para este proyecto, porque estoy familiarizado con él y tenía uno a mano. La mayoría del código por encima del nivel del controlador (easybutton.c, nokia5110.c y wiznet5100.c) debe ser independiente de la plataforma, por lo que la transferencia del código a otros microcontroladores debe ser sencilla.

Solo se requieren algunas partes para este proyecto.

  • Placa de descubrimiento STM32 o similar
  • Desglose del módulo de red WIZnet W5100 -
  • Nokia 5110 gráfico LCD ruptura -
  • Fuente de alimentación Breadboard 5V / 3.3V -
  • Staples® Easy ButtonTM -

Paso 2: Modificar el botón fácil

La modificación del botón Easy de Staples es, para acuñar una frase, fácil.

  1. Retire los cuatro pies de goma y los cuatro tornillos pequeños debajo de ellos.
  2. Desoldar los cables Vss y Vdd que se conectan a los terminales de la batería.
  3. Retire los terminales de la batería.
  4. Suelde cables nuevos a las almohadillas Vss y Vdd.
  5. Suelde un cable a la almohadilla vacía cerca del interruptor de botón (ver imagen).
  6. Perfore un agujero en el compartimiento de la batería y pase los tres cables a través de él.
  7. Vuelva a montar el botón.
Ahora tendrás un botón con tres cables que sobresalen.
  • Vss - tierra
  • Vdd: tensión de alimentación positiva (3 V, aunque parece que funciona con 3.3 V con bastante alegría)
  • Sentido del botón: 0V aumenta a 3V cuando se presiona el botón.

Paso 3: Esquema de hardware

El hardware es bastante básico. Las limitaciones de tiempo han significado que todavía está colocado en una placa de pruebas, pero tengo la intención de crear un circuito más permanente en el que todas las piezas encajen en una pequeña base debajo del botón.

La fuente de alimentación proporciona 5V a la placa Discovery y, a continuación, el regulador de a bordo lo reduce a 3,3 V para ejecutar todos los periféricos.

El botón modificado se conecta al PA1 de la Discovery Board y se suministra con 3.3 V que no parece afectar su funcionamiento estándar (la banda sonora "eso fue fácil").

El módulo de red WIZnet W5100 está conectado al periférico SPI1 (pines PA5, PA6 y PA7) con conexiones adicionales para / Reset (pin PA2) y / Slave Select (pin PA4)

El módulo Nokia 5110 Graphic LCD está conectado al periférico SPI2 (pines PB13 y PB15) con conexiones adicionales para / Reset (pin PB10), Data / Command (pin PB11) y / Slave Select (pin PB12).

Existe una gran variedad de pines y periféricos IO de propósito general que quedan en la Discovery Board para aplicaciones de Twitter más avanzadas en el futuro.

Paso 4: Flujo de trabajo y módulos de código

El módulo main.c contiene el flujo de trabajo para el proyecto (ver imagen). Después de inicializar la placa del microcontrolador, se envía una solicitud al servidor DHCP de la red para obtener una dirección IP y la configuración de red. A continuación, se envía una solicitud a un servidor Simple Network Time Protocol para obtener la fecha y la hora actuales. Luego, el código ingresa a un bucle que espera a que usted busque la dirección IP y establezca los parámetros de Oauth. Una vez que se configuran los parámetros, el código espera a que se presione el Botón Fácil y luego Tweets un mensaje aleatorio de la selección proporcionada.

El archivo binario actualmente tiene un tamaño inferior a 35K. El código no está optimizado actualmente, por lo que debería ser posible obtener el binario bajo 32K con un poco de trabajo; Por supuesto que depende de la plataforma y del compilador.

A continuación se ofrece una descripción general de los módulos de código fuente para el proyecto. Las restricciones de tiempo significan que el código no está tan bien comentado como a menudo me gustaría, pero con suerte con la documentación en este instructivo, los módulos deberían ser bastante fáciles de seguir.

Común

diccionario.c

  • una clase de ayuda útil que controla una lista enlazada ordenada de pares nombre / valor.
Cifrado

sha1.c

hmacsha1.c

  • Se utiliza para crear un hash de la solicitud OAuth y luego cifrarla con el Secreto del consumidor y el Secreto de token de acceso.
  • No puedo tomar crédito por estos módulos; vienen en gran parte inalterados de la biblioteca de criptografía AVR (http://www.das-labor.org/wiki/Crypto-avr-lib).
base64.c
  • Base64 codifica y decodifica.

Conductores

easybutton.c

  • Driver para el botón Easy Staples modificado.
nokia5110.c
  • Nokia 5100 Graphic LCD driver (SPI).
wiznet5100.c
  • Controlador de módulo de red WIZnet W5110 (SPI).

Protocolos

Transporte

udp.c

tcp.c

  • El módulo WIZnet se encarga de estos dos protocolos de la capa de transporte, por lo que técnicamente también se encuentran dentro de los módulos controladores, pero se han separado para mayor claridad.

Solicitud

formdata.c

  • Métodos de cliente HTTP para realizar solicitudes GET y POST a un servidor web.
  • Métodos del servidor HTTP para aceptar llamadas GET y POST entrantes.
dhcp.c
  • Obtenga una dirección IP, una máscara de subred, una puerta de enlace y una IP del servidor DNS desde el servidor DHCP de la red.
dns.c
  • Resolver una URL dada a una dirección IP correspondiente.
sntp.c
  • OAuth exige una marca de tiempo precisa; este módulo solicita la hora actual de un servidor de Protocolo simple de tiempo de red.

Servidor web

servidor web.c

  • Un oyente para peticiones HTTP GET y POST.
  • Permite configurar la clave de consumidor OAuth, el secreto del consumidor, el token de acceso y el secreto de token de acceso.

Gorjeo

twitter.c

  • Implementación de la API de Twitter (actualmente solo se usa actualización de estado).
  • La mayor parte del trabajo pesado es manejado por el módulo OAuth.
oauth.c
  • El módulo principal del marco de Twitter.
  • Generar un identificador único para la solicitud (nonce).
  • Generar la marca de tiempo para la solicitud.
  • Genere la base de firmas para la solicitud OAuth.
  • Calcular un hash de la base de la firma (SHA1).
  • Firme el hash usando el secreto del consumidor y el secreto de token de acceso (HMAC-SHA1).
  • Envíe la solicitud firmada al servidor web (HTTP GET o POST).

Paso 5: Crear una nueva aplicación de Twitter

Para twittear necesitas tener los siguientes
  • Clave del consumidor
  • Secreto del consumidor
  • Token de acceso
  • Secreto de acceso
La Clave del consumidor le dice a Twitter qué aplicación está enviando el Tweet.

El token le dice a Twitter lo que el usuario está twitteando.

Consumer Secret y Token Secret no se envían a la API de Twitter, pero se utilizan para calcular un hash criptográfico de la solicitud que se utiliza como una firma para evitar la manipulación. La solicitud incluye un identificador único (nonce) y una marca de tiempo que debe estar dentro de los cinco minutos de la hora UTC. Solo se aceptará una solicitud para un emparejamiento nonce / timestamp determinado.

Para obtener estas claves / secretos necesitas crear una nueva aplicación de Twitter.

Vaya a http://dev.twitter.com/apps: use sus credenciales de Twitter para iniciar sesión.

Seleccione "Registrar una nueva aplicación".

Ingrese los detalles de la aplicación

  • Nombre de la aplicación - lo que quieras
  • Descripción - lo que quieras
  • Sitio web de la aplicación - (requerido) lo que quieras
  • Organización - (opcional) lo que quieras
  • Tipo de aplicación - Cliente
  • Tipo de acceso predeterminado: lectura y escritura
  • Icono de la aplicación: utilice el valor predeterminado o cargue su
Esto creará una nueva aplicación y le dará una Clave de consumidor y un Secreto de consumidor.

Normalmente para las aplicaciones, usted solicitaría un token de acceso y un secreto de token de acceso para cada usuario; en este caso, ya que solo habrá un usuario para la aplicación, hay un acceso directo. Desde la página de configuración de la aplicación, seleccione "Mi token de acceso" para obtener un token de acceso y un secreto de token de acceso.

Enhorabuena, ya estás listo para hacer tu primer tweet.

Paso 6: Operación

El funcionamiento de este proyecto es sencillo.
  1. Conecte el conector Ethernet a su red / enrutador.
  2. Compruebe la pantalla LCD para ver qué dirección IP se ha asignado.
  3. En un navegador web, busque la dirección IP (por ejemplo,
  4. Ingrese la Clave del consumidor, el Secreto del consumidor, el token de acceso y el secreto del token de acceso que obtuvo y haga clic en Establecer.
  5. La pantalla LCD ahora mostrará "Listo" y el botón se activará.
  6. Twittea hasta que estés aburrido o tus amigos dejen de seguirte:)