Lav en nem knap Tweet den hårde vej: 6 trin

Lav en nem knap Tweet den hårde vej: 6 trin

Indholdsfortegnelse:

Anonim

Der er flere måder at lave en microcontroller tweet på. De nemme metoder er godt dækket af andre instrukser.

  1. Slut det til en computer, der kører et python script eller lignende.
  2. Slut det til en hacket router (nice - du ved hvem du er).
  3. Brug af en tredjeparts proxyserver, f.eks. ThingTweet, NeoCats Arduino bibliotek, Arduino Tweet Library.
En metode, der ikke er godt dækket, er at håndtere hele processen med at generere en Tweet kun ved hjælp af mikrocontrolleren. Denne metode har et par fordele i forhold til de andre metoder.

  • Det kræver ikke en ekstern computer / router.
  • Det har ikke sikkerhedsrisikoen ved metode tre. At overføre sikkerhedsoplysninger om en usikker transport er risikabelt. Hvis du bruger en proxyserver til at generere dine tweets, skal du sørge for at forstå risiciene.
Selvfølgelig har denne metode også ulemper med hensyn til kodestørrelse og kompleksitet; Derfor har jeg kaldt det den "hårde vej".

Formålet med dette instruerbare er at give andre en grundlæggende selvstændig ramme for at generere Tweets fra en microcontroller. Programmet selv er ret simpelt; Tryk på knappen, og den genererer en semi tilfældig Tweet.

forsyninger:

Trin 1: Dele

Jeg har brugt STM32 Discovery Board (STM32F103RG) til dette projekt, fordi jeg er bekendt med det, og jeg havde en til rådighed. Det meste af koden over driverniveauet (easybutton.c, nokia5110.c og wiznet5100.c) skal være platform uafhængigt, så porten til koden til andre mikrocontrollere skal være ligetil.

Der kræves kun et par dele til dette projekt

  • STM32 Discovery Board eller lignende
  • WIZnet W5100 Network Module breakout -
  • Nokia 5110 grafisk LCD-pause -
  • Brødbræt Strømforsyning 5V / 3.3V -
  • Staples® Easy ButtonTM -

Trin 2: Ændring af den nemme knap

At ændre Staples Easy Button er at coin en sætning, let.

  1. Fjern de fire gummifødder og de fire små skruer under dem.
  2. Afmonter Vss- og Vdd-ledningerne, som forbinder batteriterminalerne.
  3. Fjern batteripolerne.
  4. Lodde nye ledninger til Vss og Vdd pads.
  5. Lod en ledning til den tomme pude i nærheden af ​​trykknappen (se billede).
  6. Bore et hul i batterirummet og passere de tre ledninger gennem det.
  7. Monter knappen igen.
Du vil nu have en knap med tre ledninger stikker ud.
  • Vss - jorden
  • Vdd - positiv forsyningsspænding (3V selv om det ser ud til at håndtere 3.3V ganske lykkeligt)
  • Knapfølelse - 0V stiger til 3V, når knappen trykkes.

Trin 3: Hardware Schematisk

Hardware er ret grundlæggende. Tidsbegrænsninger har betydet, at den stadig er lagt på et brændebræt, men jeg planlægger hurtigt at lave et mere permanent kredsløb med alle de dele, der passer ind i en lille base under knappen.

Strømforsyningen giver Discovery Board med 5V, og dette trækkes derefter ned til 3.3V ved indbygget regulator til at køre alle de eksterne enheder.

Den ændrede knap er forbundet til PA1 på Discovery Board og leveres med 3.3V, som ikke synes at påvirke standardfunktionen (det "det var let" soundtrack).

WIZnet W5100-netværksmodulet er forbundet til SPI1-perifert (stifter PA5, PA6 og PA7) med yderligere tilslutninger til / Reset (pin PA2) og / Slave Select (PIN PA4)

Nokia 5110 Graphic LCD-modulet er forbundet til SPI2-periferien (ben PB13 og PB15) med yderligere tilslutninger til / Reset (pin PB10), Data / Kommando (pin PB11) og / Slave Select (pin PB12).

Der er en bred vifte af generelle formål IO-ben og periferiudstyr, der tilbage i Discovery Board for mere avancerede Twittering-applikationer i fremtiden.

Trin 4: Workflow og kode moduler

Main.c-modulet indeholder arbejdsgangen til projektet (se billede). Efter initialisering af mikrokontrolkortet sendes en anmodning til netværks-DHCP-serveren for at få en IP-adresse og netværksindstillingerne. Dernæst sendes en forespørgsel til en simpel netværkstidsprotokolserver for at få den aktuelle tid og dato. Koden indtaster derefter en loop, der venter på, at du søger efter IP-adressen og indstiller Oauth-parametrene. Når parametrene er indstillet, venter koden, at der trykkes på den nemme knap, og derefter tweets en tilfældig besked fra det valgte valg.

Den binære fil står for øjeblikket på lige under 35K i størrelse. Koden er i øjeblikket ikke optimeret, så det bør være muligt at få binæret under 32K med lidt arbejde; Det afhænger selvfølgelig af platformen og kompilatoren.

Følgende giver et overblik over kildekoden moduler til projektet. Tidsbegrænsninger betyder, at koden ikke er så godt kommenteret som jeg gerne vil, men forhåbentlig med dokumentationen i denne vejledende skal modulerne være ret nemme at følge.

almindelige

dictionary.c

  • en nyttig hjælperklasse, der styrer en sorteret sammenkædet liste over navn / værdi par.
Kryptering

sha1.c

hmacsha1.c

  • Bruges til at oprette en hash af OAuth-anmodningen og derefter kryptere den med forbrugerhemmeligheden og adgangstokenhemmeligheden.
  • Jeg kan ikke tage æren for disse moduler; de kommer stort set uændret fra AVR Crypto Library (http://www.das-labor.org/wiki/Crypto-avr-lib).
base64.c
  • Base64 kode og afkode.

chauffører

easybutton.c

  • Driver til den ændrede stifter Easy Button.
nokia5110.c
  • Nokia 5100 Grafisk LCD-driver (SPI).
wiznet5100.c
  • WIZnet W5110 Network Module driver (SPI).

protokoller

Transportere

udp.c

tcp.c

  • WIZnet-modulet tager sig af disse to transportlagsprotokoller, så teknisk set falder disse også under drivermodulerne, men de er blevet udskilt for klarhed.

Ansøgning

formdata.c

  • HTTP klient metoder til at lave GET og POST anmodninger til en webserver.
  • HTTP-server metoder til at acceptere indgående GET og POST opkald.
dhcp.c
  • Få en IP-adresse, subnetmaske, gateway og DNS server IP fra netværks DHCP serveren.
dns.c
  • Løs en bestemt URL til en tilsvarende IP-adresse.
sntp.c
  • OAuth kræver en præcis tidsstempel; Dette modul anmoder om den aktuelle tid fra en Simple Network Time Protocol-server.

Webserver

webserver.c

  • En lytter til HTTP GET og POST anmodninger.
  • Gør det muligt at indstille OAuth Consumer Key, Consumer Secret, Access Token og Access Token Secret.

Twitter

twitter.c

  • Implementering af Twitter-API'et (i øjeblikket kun statusopdatering anvendes).
  • Det meste af det tunge løft håndteres af OAuth-modulet.
oauth.c
  • Kernemodulet for Twitter-rammerne.
  • Generer en unik identifikator for anmodningen (nonce).
  • Generer tidsstempel for anmodningen.
  • Generer signaturbasen til OAuth-anmodningen.
  • Beregn en hash af signaturbasen (SHA1).
  • Signer hash ved hjælp af Forbrugerhemmelig og Access Token Secret (HMAC-SHA1).
  • Send den underskrevne forespørgsel til webserveren (HTTP GET eller POST).

Trin 5: Opret en ny Twitter-applikation

For at tweet skal du have følgende
  • Forbruger nøgle
  • Forbrugerhemmelighed
  • Adgangst Token
  • Access Token Secret
Forbrugernøglen fortæller Twitter, hvilken applikation der sender Tweet.

Token fortæller Twitter, hvilken bruger der er Tweeting.

Forbrugerhemmelig og Tokenhemmeligheden sendes ikke til Twitter-API'et, men bruges til at beregne en kryptografisk hash af anmodningen, der bruges som en underskrift for at forhindre manipulation. Anmodningen indeholder en unik identifikator (nonce) og en tidsstempel, der skal være inden for fem minutter efter UTC-tiden. Kun en anmodning vil blive accepteret for en given nonce / timestamp pairing.

For at få disse nøgler / hemmeligheder skal du oprette en ny Twitter-applikation.

Gå til http://dev.twitter.com/apps - brug dine Twitter-legitimationsoplysninger til at logge ind.

Vælg "Registrer en ny app".

Indtast programoplysningerne

  • Ansøgningsnavn - alt hvad du kan lide
  • Beskrivelse - alt hvad du kan lide
  • Application Website - (påkrævet) alt hvad du kan lide
  • Organisation - (valgfrit) alt hvad du kan lide
  • Applikationstype - klient
  • Standardadgangstype - læs og skriv
  • Application Icon - brug standard eller upload din egen
Dette vil oprette en ny applikation og give dig en forbrugernøgle og forbrugerhemmelighed.

Normalt for ansøgninger vil du anmode om en adgangst Token og Access Token Secret for hver bruger; i dette tilfælde, da der kun vil være en enkelt bruger til applikationen, er der en genvej. På siden for programindstillinger skal du vælge "My Access Token" for at få et adgangstoken og en adgangstokenhemmelighed.

Tillykke med, du er nu klar til at lave din første tweet.

Trin 6: Operation

Driften af ​​dette projekt er ligetil
  1. Tilslut Ethernet-stikket til dig netværk / router.
  2. Kontroller LCD'et for at se, hvilken IP-adresse der er blevet tildelt.
  3. I en webbrowser gennemse IP-adressen (f.eks.
  4. Indtast forbrugernøgle, forbrugerhemmelig, adgangstoken og adgangstokenhukommelse, du har opnået, og klik på Indstil.
  5. LCD'et viser nu "Klar", og knappen vil blive bevæbnet.
  6. Tweet væk, indtil du keder dig eller dine venner holder op med at følge dig:)