がじぇっとるねさす

ホビーとエレクトロニクスを繋げるサイト

がじぇるね工房

作品タイトル:GR-CITRUSでTwitter

表示名:ksekimoto

GR-CITRUSでTwitter

コンセプト・作品説明
Ruby(mRuby)が簡単に使える「GR-CITRUS」と、WiFi通信やマイクロSDカードをサポートした「WA-MIKAN」と組み合わせて、Twitterにつぶやくガジェットを作ってみました。
「WA-MIKAN」には、ESP8266を搭載していますが、このFiremwareが2017年5月に更新され、SSL通信がサポートされました。SSL通信がサポートされたことで、Twitter(やその他クラウドサービスの)APIアクセスに必要なOAuth認証の実装をしやすくなりました。
そこで、Twitterのドキュメントを参照しながら、OAuth認証関連の手続きを、GR-CITRUSのFirmwareとmRubyのプログラムで実装してみました。
####

用意するもの

このガジェットに必要なものは、以下の通りです。

  • 「GR-CITRUS」ボード
  • 「WA-MIKAN」ボード
    • SD-CARD (Max:2GB) 通信ログの一時記憶のため
  • Twitterアカウント

Twitterのアカウントは、よくあるWebページを参考にしながら、予め作成しておいてください。

####

作成手順

このガジェットを作成する手順は、以下の通りです。

1. 「WA-MIKAN」のESP8266のFirmwareの更新
2. Twitter APIアクセスに必要な情報の取得
3. 「GR-CITRUS」のFiremwareの更新
4. mRubyのプログラムの実行

 

####

「WA-MIKAN」のESP8266のFirewareの更新

「WA-MIKAN」のESP8266のfirmwareの更新には
* ESP8266のFirmware 書き込みツール、
* USBシリアル変換モジュール、
* 「WA-MIKAN」のJP1ピンをショートするための部品、

が必要になります。

こちらのページ(WA-MIKAN(和みかん)をGR-CITRUSから使える状態に戻す方法)に詳細が掲載されていますので、参考にしながら、以下の作業を実施します

ESP8266のFirmware 書き込みツール

ESP8266の書き込みツールを以下のページからダウンロードします。

 

USBシリアル変換モジュール

USBシリアル変換モジュールは、例えば、秋月電子の FT-232RQ USBシリアル変換モジュールなどが使用できます。

「WA-MIKAN」のJP1ピンのショート

「WA-MIKAN」のJP1ピンのショートには前述の参考ページでは、ワイヤーを使用していますが、私の方では、以下のピンヘッダとジャンパピンを使用しました。
* 1.27mmピッチピンヘッダ 1×40 (40P)
* 1.27mmピッチジャンパーピン (黒)(5個入)
 

 

書き込むFirmwareファイル

書き込みFirmwareファイルは、NON-OS SDKのZIPファイルに含まれています。以下のサイトよりダウンロードして、解凍します。


書き込みFirmwareファイルは以下の図の通りです。
* ESP8266_NONOS_SDK-2.1.0\bin\boot_v1.7.bin                      (0x000000)
* ESP8266_NONOS_SDK-2.1.0\bin\at\1024+1024\user1.2048.new.5.bin  (0x001000)
* ESP8266_NONOS_SDK-2.1.0\bin\blank.bin                          (0x0fe000)
* ESP8266_NONOS_SDK-2.1.0\bin\esp_init_data_default.bin          (0x3fc000)
* ESP8266_NONOS_SDK-2.1.0\bin\blank.bin                          (0x3fe000)
* ESP8266_NONOS_SDK-2.1.0\bin\blank.bin                          (0x3fb000)

書き込みツールを起動して、Firmwareファイルと書き込むアドレスは以下の図のように設定いたします。

書き込み開始はStartボタンを押します。数十秒で書き込みが終了します。これで、ESP8266でSSL通信が可能になりました。

 

####

Twitter APIアクセスの準備

次にTwitter APIにアクセスするために、Twitter APIのアプリケーションの登録をして、comsuer_keyとcomsumer_secretを取得し、さらにTwitter APIのアクセストークンの取得をします。
* Twitter APIのアプリケーションの登録 (consumer_keyおよびcomsumer_secret)
* Twitter APIのアクセストークンの取得 (access_tokenおよびaccess_token_secret)

* アプリケーション登録などを参照し、comsuer_keyとcomsumer_secretを取得してください。

* アクセストークンの取得などを参照し、access_token_keyとaccess_token_secretを取得してください。

####

「GR-CITRUS」のFiremwareの更新

「GR-CITRUS」のFiremwareの更新は、「GR-CITRUS」のリセットボタンを押してUSBメモリとして認識後、firemwareファイルをUSBメモリにコピーすること行います。
Twitter APIのためのfirmwareファイルは、以下のgithubのレポジトリよりダウンロードしてください。
* https://github.com/ksekimoto/wrbb-v2lib-firm/blob/dev/firmware_develop/citrus_sketch.bin

ソースファイルもこのgithubのレポジトリ(devブランチ)に格納されています。

####

mRubyファイルの実行

Twitter APIを使用したつぶやきのプログラムは、以下のgithhubのレポジトリに格納されています。
* https://github.com/ksekimoto/wrbb-v2lib-firm/blob/dev/samples/VSCode-Rubic/WiFi_Samples/Twitter/main.rb

ダウントードして、エディタあるいはVisual Studio Codeなどで開いてください。まず、WiFi環境のSSIDとPASSを設定します。次に、前段階で取得したTwitter APIアクセスに必要なconsumer_key, consumer_secret, access_token, access_token_sceretを設定します。

@SSID = "xxxxxxxxxxxxxx"
@PASS = "xxxxxxxxxxxxxx"
@consumer_key = "xxxxxxxxxxxxxxxxxxxxxxxxx"
@consumer_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
@access_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
@access_token_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

つぶやく内容は、以下のstrに設定します。

main.rbの抜粋


str = "GR-CITRUSからのつぶやき"
test_twitter_statuses_update str

 

mRubyのプログラムの実行方法は、以下のWebページを参照してください。
以下は実行結果の一例です。

ボードに接続します: GR-CITRUS @ COM9
ファイル書き込み中: main.mrb ..................................
転送が完了しました
プログラム実行開始: main.mrb
----------------------------------------------------------------
WiFi connected
Sun Dec 17 00:08:32 2017
oauth_params = Authorization: OAuth oauth_consumer_key=A8KABu5e2COxFZQknhbxxxxxx,oauth_nonce=1513469302,oauth_signature_method=HMAC-SHA1,oauth_timestamp=1513469302,oauth_token=940756171-eYdBKfqOp6RIeWE5s5yrxDIOIKBC121pL3xxxxxx,oauth_version=1.0,oauth_signature=0nTo3Ff2FUNsG2WWTPg8S504xxxxxx,status=GR-CITRUS%E3%81%8B%E3%82%89%E3%81%AE%E3%81%A4%E3%81%B6%E3%82%84%E3%81%8D
data = status=GR-CITRUS%E3%81%8B%E3%82%89%E3%81%AE%E3%81%A4%E3%81%B6%E3%82%84%E3%81%8D

1
GR-CITRUSからのつぶやき
WiFi disconnect
HTTP/1.1 200 OK
cache-control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0
content-disposition: attachment; filename=json.json
content-length: 2023
content-type: application/json;charset=utf-8
date: Sun, 17 Dec 2017 00:08:23 GMT
expires: Tue, 31 Mar 1981 05:00:00 GMT
last-modified: Sun, 17 Dec 2017 00:08:23 GMT
pragma: no-cache
server: tsa_m
set-cookie: personalization_id="v1_/42yN2xeHNCqzusLFyIEug=="; Expires=Tue, 17 Dec 2019 00:08:23 UTC; Path=/; Domain=.twitter.com
set-cookie: lang=en; Path=/
set-cookie: guest_id=v1%3A151346930334717553; Expires=Tue, 17 Dec 2019 00:08:23 UTC; Path=/; Domain=.twitter.com
status: 200 OK
strict-transport-security: max-age=631138519
x-access-level: read-write
x-connection-hash: 04e49cd5838217e767c51908776a752d
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-response-time: 263
x-transaction: 000a26740058b0ab
x-tsa-request-body-time: 0
x-twitter-response-tags: BouncerCompliant
x-xss-protection: 1; mode=block

 

 

ksekimoto

週末に趣味で電子工作を楽しんでいます。

ちょっとしたものをいろんなCPUに移植することに特にはまっています。

よろしくお願いいたします。

フォローする

share

ページトップへ