Stwórz prosty przycisk Tweetuj twardą drogę: 6 kroków

Stwórz prosty przycisk Tweetuj twardą drogę: 6 kroków

Spisu treści:

Anonim

Istnieje kilka sposobów na stworzenie tweetera mikrokontrolera. Łatwe metody są dobrze opisane w innych instrukcjach.

  1. Podłącz go do komputera z uruchomionym skryptem Pythona lub podobnym.
  2. Podłącz go do zhakowanego routera (fajnie - wiesz kim jesteś).
  3. Korzystanie z zewnętrznego serwera proxy, np. ThingTweet, biblioteka Arduino NeoCat, Arduino Tweet Library.
Metoda, która nie jest dobrze omówiona, to obsługa całego procesu generowania tweeta za pomocą tylko mikrokontrolera. Ta metoda ma kilka zalet w porównaniu z innymi metodami.

  • Nie wymaga zewnętrznego komputera / routera.
  • Nie ma zagrożeń bezpieczeństwa związanych z metodą trzecią. Przekazywanie poświadczeń bezpieczeństwa przez transport niezabezpieczony jest ryzykowne. Jeśli używasz serwera proxy do generowania tweetów, upewnij się, że rozumiesz ryzyko.
Oczywiście ta metoda ma również wady pod względem rozmiaru kodu i złożoności; dlatego nazwałem to „twardą drogą”.

Intencją tego pouczającego jest zapewnienie innym podstawowego samodzielnego szkieletu do generowania tweetów z mikrokontrolera. Sama aplikacja jest dość prosta; naciśnij przycisk i wygeneruje pół losowy Tweet.

Kieszonkowe dzieci:

Krok 1: Części

Do tego projektu użyłem płyty STM32 Discovery Board (STM32F103RG), ponieważ jestem z nią zaznajomiony i miałem go pod ręką. Większość kodu powyżej poziomu sterownika (easybutton.c, nokia5110.c i wiznet5100.c) powinna być niezależna od platformy, więc przeniesienie kodu do innych mikrokontrolerów powinno być proste.

Do tego projektu potrzeba tylko kilku części

  • STM32 Discovery Board lub podobne
  • WIZnet W5100 Network Module breakout -
  • Nokia 5110 Graphic LCD breakout -
  • Zasilacz Breadboard 5V / 3.3V -
  • Staples® Easy ButtonTM -

Krok 2: Modyfikacja łatwego przycisku

Modyfikowanie łatwego przycisku Zszywki to, aby ująć frazę, łatwy.

  1. Usuń cztery gumowe nóżki i cztery małe śruby pod nimi.
  2. Odlutuj przewody Vss i Vdd, które łączą się z zaciskami akumulatora.
  3. Wyjmij zaciski akumulatora.
  4. Przylutuj nowe przewody do padów Vss i Vdd.
  5. Przylutuj drut do pustej podkładki w pobliżu przełącznika przyciskowego (patrz rysunek).
  6. Wywierć otwór w komorze baterii i przeprowadź przez nią trzy przewody.
  7. Złóż przycisk ponownie.
Teraz będziesz miał przycisk z trzema wystającymi przewodami.
  • Vss - ziemia
  • Vdd - dodatnie napięcie zasilania (3 V, chociaż wydaje się, że poradzi sobie z 3,3 V)
  • Odczyt przycisku - 0 V wzrasta do 3 V po naciśnięciu przycisku.

Krok 3: Schemat sprzętu

Sprzęt jest dość prosty. Ograniczenia czasowe oznaczały, że nadal jest on rozłożony na płytce kuchennej, ale planuję wkrótce uzupełnić bardziej trwały obwód ze wszystkimi częściami dopasowanymi do małej podstawy pod przyciskiem.

Zasilacz zapewnia Discovery Board 5V, a następnie jest obniżany do 3,3V przez wbudowany regulator, aby uruchomić wszystkie urządzenia peryferyjne.

Zmodyfikowany przycisk jest podłączony do PA1 Discovery Board i dostarczany z 3.3V, co nie wydaje się wpływać na jego standardowe działanie (ścieżka dźwiękowa „to była łatwa”).

Moduł sieciowy WIZnet W5100 jest podłączony do urządzenia peryferyjnego SPI1 (piny PA5, PA6 i PA7) z dodatkowymi połączeniami dla / Reset (pin PA2) i / Slave Select (pin PA4)

Moduł graficzny Nokia 5110 LCD jest podłączony do urządzenia peryferyjnego SPI2 (piny PB13 i PB15) z dodatkowymi połączeniami dla / Reset (pin PB10), Data / Command (pin PB11) i / Slave Select (pin PB12).

Istnieje szeroka gama pinów IO ogólnego przeznaczenia i urządzeń peryferyjnych pozostających w Discovery Board dla bardziej zaawansowanych aplikacji Twittering w przyszłości.

Krok 4: Przepływ pracy i moduły kodu

Moduł main.c zawiera przepływ pracy dla projektu (patrz obraz). Po zainicjowaniu karty mikrokontrolera do sieci serwera DHCP wysyłane jest żądanie uzyskania adresu IP i ustawień sieciowych. Następnie wysyłane jest żądanie do serwera Simple Network Time Protocol, aby uzyskać aktualną godzinę i datę. Kod następnie przechodzi do pętli czekającej na przejście do adresu IP i ustawienie parametrów Oauth. Po ustawieniu parametrów kod czeka na naciśnięcie łatwego przycisku, a następnie wpisuje losową wiadomość z podanego wyboru.

Plik binarny ma obecnie rozmiar nieco poniżej 35 KB. Kod nie jest obecnie zoptymalizowany, więc powinno być możliwe uzyskanie pliku binarnego poniżej 32K przy odrobinie pracy; oczywiście zależy to od platformy i kompilatora.

Poniżej przedstawiono przegląd modułów kodu źródłowego projektu. Ograniczenia czasowe oznaczają, że kod nie jest tak dobrze komentowany, jak bym zwykle chciał, ale mam nadzieję, że dzięki dokumentacji w tym podręczniku moduły powinny być dość łatwe do naśladowania.

Pospolity

słownik.c

  • użyteczna klasa pomocnicza, która kontroluje posortowaną połączoną listę par nazwa / wartość.
Szyfrowanie

sha1.c

hmacsha1.c

  • Służy do tworzenia skrótu żądania OAuth, a następnie szyfrowania go za pomocą Tajemnicy konsumenta i Token dostępu Tajny.
  • Nie mogę zaliczyć tych modułów; pochodzą w dużej mierze z biblioteki Crypto AVR (http://www.das-labor.org/wiki/Crypto-avr-lib).
base64.c
  • Kodowanie i dekodowanie Base64.

Kierowcy

easybutton.c

  • Sterownik zmodyfikowanego łatwego przycisku Staples.
nokia5110.c
  • Sterownik graficzny Nokia 5100 (SPI).
wiznet5100.c
  • Sterownik modułu sieciowego WIZnet W5110 (SPI).

Protokoły

Transport

udp.c

tcp.c

  • Moduł WIZnet dba o te dwa protokoły warstwy transportowej, więc technicznie są one również objęte modułami sterownika, ale zostały one wyodrębnione ze względu na przejrzystość.

Podanie

formdata.c

  • Metody klienta HTTP do wysyłania żądań GET i POST do serwera WWW.
  • Metody serwera HTTP do przyjmowania przychodzących wywołań GET i POST.
dhcp.c
  • Uzyskaj adres IP, maskę podsieci, bramę i adres IP serwera DNS z sieciowego serwera DHCP.
dns.c
  • Rozwiąż dany adres URL na odpowiedni adres IP.
sntp.c
  • OAuth wymaga dokładnego znacznika czasu; moduł ten żąda aktualnego czasu z serwera Simple Network Time Protocol.

Serwer internetowy

webserver.c

  • Listener dla żądań HTTP GET i POST.
  • Umożliwia ustawienie klucza konsumenta OAuth, tajnego klucza konsumenta, tokenu dostępu i tajnego tokenu dostępu.

Świergot

twitter.c

  • Implementacja interfejsu API Twittera (obecnie używana jest tylko aktualizacja statusu).
  • Większość ciężkiego podnoszenia jest obsługiwana przez moduł OAuth.
oauth.c
  • Podstawowy moduł struktury Twittera.
  • Wygeneruj unikalny identyfikator dla żądania (nonce).
  • Wygeneruj znacznik czasu dla żądania.
  • Wygeneruj bazę sygnatur dla żądania OAuth.
  • Oblicz hash bazy sygnatur (SHA1).
  • Podpisz hash używając Secret Consumer i Secret Token Access (HMAC-SHA1).
  • Wyślij podpisane żądanie do serwera WWW (HTTP GET lub POST).

Krok 5: Utwórz nową aplikację Twitter

Aby ćwierkać, musisz mieć następujące informacje
  • Klucz klienta
  • Tajemnica konsumenta
  • Token dostępu
  • Token dostępu Tajny
Klucz konsumenta informuje Twitter, która aplikacja wysyła Tweet.

Token informuje Twittera, jakiego użytkownika używa Tweeting.

Tajemnica konsumenta i Token Secret nie są wysyłane do interfejsu API Twittera, ale są używane do obliczenia kryptograficznego skrótu żądania, który jest używany jako podpis zapobiegający manipulacji. Żądanie zawiera unikalny identyfikator (nonce) i znacznik czasu, który musi znajdować się w ciągu pięciu minut od czasu UTC. Tylko jedno żądanie zostanie zaakceptowane dla danego parowania nonce / timestamp.

Aby uzyskać te klucze / tajemnice, musisz utworzyć nową aplikację Twitter.

Przejdź do http://dev.twitter.com/apps - użyj danych logowania Twittera, aby się zalogować.

Wybierz „Zarejestruj nową aplikację”.

Wprowadź szczegóły aplikacji

  • Nazwa aplikacji - wszystko, co lubisz
  • Opis - wszystko, co lubisz
  • Strona aplikacji - (wymagane) wszystko, co lubisz
  • Organizacja - (opcjonalnie) wszystko, co lubisz
  • Typ aplikacji - klient
  • Domyślny typ dostępu - Odczyt i zapis
  • Ikona aplikacji - użyj domyślnego lub prześlij własne
Spowoduje to utworzenie nowej aplikacji i udostępnienie klucza konsumenta i tajemnicy konsumenta.

Zwykle dla aplikacji żądasz Token dostępu i Token dostępu Secret dla każdego użytkownika; w tym przypadku, ponieważ dla aplikacji będzie tylko jeden użytkownik, istnieje skrót. Na stronie ustawień aplikacji wybierz „My Access Token”, aby uzyskać Token dostępu i Token dostępu Secret.

Gratulacje, jesteś gotowy, aby zrobić swój pierwszy tweet.

Krok 6: Operacja

Działanie tego projektu jest proste
  1. Podłącz gniazdo Ethernet do swojej sieci / routera.
  2. Sprawdź na wyświetlaczu LCD, jaki adres IP został przypisany.
  3. W przeglądarce internetowej przejdź do adresu IP (np.
  4. Wprowadź Klucz Konsumenta, Sekret Konsumenta, Token Dostępu i Token Dostępu, które uzyskałeś i kliknij Ustaw.
  5. Na wyświetlaczu pojawi się „Ready”, a przycisk zostanie uzbrojony.
  6. Tweetuj, dopóki się nie nudzisz, albo twoi znajomi przestaną Cię śledzić