Tabla de contenido:
- Suministros:
- Paso 1: Piezas
- Paso 2: Modificar el botón fácil
- Paso 3: Esquema de hardware
- Paso 4: Flujo de trabajo y módulos de código
- Paso 5: Crear una nueva aplicación de Twitter
- Paso 6: Operación
- Conéctelo a una computadora que ejecute un script de Python o similar.
- Conéctalo a un enrutador pirateado (bueno, ya sabes quién eres).
- Usando un servidor proxy de terceros, por ejemplo. ThingTweet, la biblioteca Arduino de NeoCat, Arduino Tweet Library.
- 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.
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.- Retire los cuatro pies de goma y los cuatro tornillos pequeños debajo de ellos.
- Desoldar los cables Vss y Vdd que se conectan a los terminales de la batería.
- Retire los terminales de la batería.
- Suelde cables nuevos a las almohadillas Vss y Vdd.
- Suelde un cable a la almohadilla vacía cerca del interruptor de botón (ver imagen).
- Perfore un agujero en el compartimiento de la batería y pase los tres cables a través de él.
- Vuelva a montar el botón.
- 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.
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 codifica y decodifica.
Conductores
easybutton.c
- Driver para el botón Easy Staples modificado.
- Nokia 5100 Graphic LCD driver (SPI).
- 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.
- 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.
- Resolver una URL dada a una dirección IP correspondiente.
- 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.
- 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
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
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.- Conecte el conector Ethernet a su red / enrutador.
- Compruebe la pantalla LCD para ver qué dirección IP se ha asignado.
- En un navegador web, busque la dirección IP (por ejemplo,
- 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.
- La pantalla LCD ahora mostrará "Listo" y el botón se activará.
- Twittea hasta que estés aburrido o tus amigos dejen de seguirte:)