簡単なボタンを作る難しい方法をつぶやく:6ステップ

簡単なボタンを作る難しい方法をつぶやく:6ステップ

目次:

Anonim

マイクロコントローラのツイートを作成する方法はいくつかあります。簡単な方法は他のインストラクターでよくカバーされています。

  1. Pythonスクリプトなどを実行しているコンピュータに接続します。
  2. それをハッキングされたルーターに接続してください(いいね - あなたは自分が誰かを知っています)。
  3. サードパーティのプロキシサーバーを使用する。 ThingTweet、NeoCatのArduinoライブラリー、Arduino Tweetライブラリー。
カバーされていない方法は、マイクロコントローラのみを使用してツイートを生成するプロセス全体を処理することです。この方法には、他の方法に比べていくつかの利点があります。

  • 外部のコンピューターやルーターは必要ありません。
  • 方法3のセキュリティ上のリスクはありません。安全でないトランスポートを介してセキュリティ資格情報を渡すことは危険です。ツイートの生成にプロキシサーバーを使用している場合は、必ずリスクを理解してください。
もちろん、この方法もコードサイズと複雑さの点で不利です。それが私がそれを「難しい方法」と呼んだ理由です。

この指示可能なものの意図は、マイクロコントローラからツイートを生成するための基本的なスタンドアロンフレームワークを他の人に提供することです。アプリケーション自体はかなり単純です。ボタンを押すと、半ランダムのツイートが生成されます。

用品:

ステップ1:部品

このプロジェクトにはSTM32 Discovery Board(STM32F103RG)を使いました。ドライバレベルを超えるコード(easybutton.c、nokia5110.c、wiznet5100.c)の大部分はプラットフォームに依存しないため、他のマイクロコントローラにコードを移植するのは簡単です。

このプロジェクトに必要な部品はごくわずかです

  • STM32ディスカバリーボードまたは同様のもの
  • WIZnet W5100ネットワークモジュールの詳細 -
  • ノキア5110グラフィックLCDブレイクアウト -
  • ブレッドボード電源5V / 3.3V -
  • Staples®Easy Button™ -

ステップ2:簡単ボタンを修正する

Staples Easy Buttonを修正することは、フレーズをコインにすることです。 簡単.

  1. 4本のゴム足とその下にある4本の小さなネジを外します。
  2. バッテリ端子に接続されているVssとVddワイヤを外します。
  3. バッテリー端子を外します。
  4. 新しいワイヤをVssパッドとVddパッドに半田付けします。
  5. プッシュボタンスイッチの近くにある空のパッドにワイヤを半田付けします(図を参照)。
  6. バッテリー収納部に穴を開け、それに3本のワイヤーを通します。
  7. ボタンを組み立てます。
3本のワイヤーが突き出ているボタンがあります。
  • Vss - アース
  • Vdd - 正の電源電圧(3.3Vを非常に楽しく扱えるようですが3V)
  • ボタン検出 - ボタンを押すと0Vから3Vに上昇します。

ステップ3:ハードウェア回路図

ハードウェアはかなり基本的です。時間的制約のために、まだブレッドボード上にレイアウトされていることを意味していますが、ボタンの下の小さなベースにすべての部品が収まるように、もう少し恒久的な回路を作る予定です。

電源はディスカバリボードに5Vを供給し、これは内蔵レギュレータによって3.3Vにステップダウンされてすべての周辺機器を動作させます。

修正されたボタンはディスカバリーボードのPA1に接続されており、3.3Vが供給されていますが、これは標準的な操作には影響しません( "簡単だった"サウンドトラック)。

WIZnet W5100ネットワークモジュールは、/ Reset(ピンPA2)および/ Slave Select(ピンPA4)用の追加接続でSPI1ペリフェラル(ピンPA5、PA6、およびPA7)に接続されています。

Nokia 5110グラフィックLCDモジュールは、/ Reset(ピンPB10)、Data / Command(ピンPB11)、および/ Slave Select(ピンPB12)用の追加接続でSPI2ペリフェラル(ピンPB13とPB15)に接続されています。

ディスカバリーボードには、将来のより高度なTwitterアプリケーションのために、多種多様な汎用IOピンと周辺機器が残っています。

ステップ4:ワークフローとコードモジュール

main.cモジュールには、プロジェクトのワークフローが含まれています(画像を参照)。マイクロコントローラボードを初期化した後、IPアドレスとネットワーク設定を取得するための要求がネットワークDHCPサーバーに送信されます。次に、現在の時刻と日付を取得するために、要求がSimple Network Time Protocolサーバーに送信されます。その後、コードはループに入り、IPアドレスを参照してOauthパラメータを設定するのを待ちます。パラメータが設定されると、コードはEasy Buttonが押されるのを待ってから、提供された選択からランダムなメッセージをツイートします。

バイナリファイルのサイズは現在35K未満です。コードは現在最適化されていないので、少しの作業で32K未満のバイナリを取得することが可能になるはずです。もちろんそれはプラットフォームとコンパイラに依存します。

以下は、プロジェクトのソースコードモジュールの概要です。時間的制約はコードが私が通常望むほどコメントされていないことを意味しますが、うまくいけば、このインストラクタブルのドキュメントでモジュールは従うのがかなり簡単であるべきです。

一般

dictionary.c

  • 名前と値のペアのソートされたリンクリストを制御する便利なヘルパークラス。
暗号化

sha1.c

hmacsha1.c

  • OAuthリクエストのハッシュを作成し、それをConsumer SecretとAccess Token Secretで暗号化するために使用されます。
  • 私はこれらのモジュールを信用することはできません。それらはAVR Crypto Library(http://www.das-labor.org/wiki/Crypto-avr-lib)からほとんど変更されていません。
base64.c
  • Base64エンコードおよびデコード。

運転者

easybutton.c

  • 修正ステープルズイージーボタン用のドライバー。
nokia5110.c
  • ノキア5100グラフィックLCDドライバ(SPI)。
wiznet5100.c
  • WIZnet W5110ネットワークモジュールドライバ(SPI)。

プロトコル

輸送

udp.c

tcp.c

  • WIZnetモジュールはこれら2つのトランスポート層プロトコルを処理するので、技術的にはこれらもドライバモジュールに分類されますが、明確にするために分離されています。

応用

formdata.c

  • Webサーバーに対してGETおよびPOST要求を発行するためのHTTPクライアントメソッド。
  • 着信GETおよびPOST呼び出しを受け入れるためのHTTPサーバーメソッド。
dhcp.c
  • ネットワークDHCPサーバーからIPアドレス、サブネットマスク、ゲートウェイ、およびDNSサーバーのIPを取得します。
dns.c
  • 特定のURLを対応するIPアドレスに解決します。
sntp.c
  • OAuthは正確なタイムスタンプを要求します。このモジュールは、Simple Network Time Protocolサーバーに現在時刻を要求します。

Webサーバー

webserver.c

  • HTTP GETおよびPOST要求のリスナー
  • OAuthコンシューマキー、コンシューマシークレット、アクセストークン、およびアクセストークンシークレットを設定できます。

Twitter

twitter.c

  • Twitter APIの実装(現在はステータスの更新のみが使用されています)。
  • 重い作業のほとんどは、OAuthモジュールによって処理されます。
oauth.c
  • Twitterフレームワークのコアモジュール。
  • 要求に一意の識別子を生成します(nonce)。
  • リクエストのタイムスタンプを生成します。
  • OAuthリクエスト用の署名ベースを生成します。
  • 署名ベース(SHA1)のハッシュを計算します。
  • Consumer SecretとAccess Token Secret(HMAC-SHA1)を使用してハッシュに署名します。
  • 署名付きリクエストをWebサーバーに送信します(HTTP GETまたはPOST)。

ステップ5:新しいTwitterアプリケーションを作成する

ツイートするには、次のものが必要です。
  • 消費者キー
  • 消費者の秘密
  • アクセストークン
  • アクセストークンの秘密
コンシューマキーは、どのアプリケーションがツイートを送信しているのかをTwitterに伝えます。

トークンはTwitterにどのユーザーがツイートしているのかを伝えます。

Consumer SecretとToken SecretはTwitter APIに送信されませんが、改ざんを防ぐための署名として使用される要求の暗号化ハッシュを計算するために使用されます。要求はUTC時間の5分以内でなければならないユニークな識別子(一回だけ)とタイムスタンプを含んでいます。与えられた一回だけ/タイムスタンプペアリングのために1つの要求だけが受け入れられるでしょう。

これらの鍵/秘密を入手するには、新しいTwitterアプリケーションを作成する必要があります。

http://dev.twitter.com/appsにアクセスします - ログインにはTwitterの認証情報を使用してください。

「新しいアプリを登録する」を選択してください。

アプリケーションの詳細を入力してください

  • アプリケーション名 - 好きなもの
  • 説明 - あなたが好きなもの
  • アプリケーションWebサイト - (必須)あなたが好きなもの
  • 組織 - (オプション)あなたが好きなもの
  • アプリケーションの種類 - クライアント
  • デフォルトのアクセスタイプ - 読み取りと書き込み
  • アプリケーションアイコン - デフォルトを使用するか自分でアップロードする
これは新しいアプリケーションを作成し、あなたにConsumer KeyとConsumer Secretを与えます。

通常、アプリケーションでは、各ユーザーにアクセストークンとアクセストークンシークレットを要求します。この場合、アプリケーションには単一のユーザーしかいないため、ショートカットがあります。アプリケーション設定ページから「アクセストークン」を選択して、アクセストークンとアクセストークンシークレットを取得します。

おめでとうございます。これで最初のツイートができました。

ステップ6:操作

このプロジェクトの運営は簡単です
  1. イーサネットジャックをあなたのネットワーク/ルーターに接続します。
  2. LCDをチェックして、どのIPアドレスが割り当てられているかを確認します。
  3. WebブラウザでIPアドレスを参照してください(例:http://192.168.0.13)。
  4. 取得したConsumer Key、Consumer Secret、Access Token、およびAccess Token Secretを入力して、「設定」をクリックします。
  5. LCDに「Ready」と表示され、ボタンが有効になります。
  6. 退屈するか友達があなたをフォローしなくなるまでツイートしてください。