Twitter API から Arduino – ESP32 を使ってトレンドツイートを取得してみた

記事公開日:2017年12月6日

スポンサーリンク

こんばんは。

今回は、ちょっとスゴイですよ。
Arduino core for ESP32 を使って、Twitter API を使うことができたので紹介したいと思います。

これを使えば、今現在のトレンド キーワードを取得できるので、災害や緊急時のツイートビッグデータを取得することも可能です。
これは、自分としては念願のプロジェクトでもあったのです。

なぜかというと、インターネット上ではマイコンから自分の呟きをツイートする情報は沢山あり、IFTTT などを使えば比較的簡単にツイート投稿をすることができますが、逆に投稿されたツイートをマイコンで取得する情報があまりありません。
あったとしても、ラズパイを使用した方法です。
ESP8266 では Tweetを取得するライブラリがあったりしますが、ESP32 にはまだありません。

ツイッターのトレンドデータというものはとっても有効なデータだと思います。
今、日本で何が起こっているか、または世界で何が起こっているかを瞬時に把握することができます。
これをパソコンやスマホを開かずに常時画面に表示することができれば、とても便利だろうなぁ、と思っていました。

ところで、以前、ESP8266 ( ESP-WROOM-02 ) を使って、ツイートを取得する記事を書いたことがあります。
Twitter 検索結果のツイートを有機EL ( OLED )に表示させてみた

この記事では、TwitterAPI を使わずに、Web上の記事を解析してツイートを取得していましたが、膨大な文字処理にマイコンの CPU が使われてしまって、メモリを多量に消費してしまいます。
Twitter API が使うことができれば、必要な情報をピンポイントで取得できるので是非とも使いたかったのです。
でも、いろいろ実験をしていましたが、マイコンとの OAuth 認証が必要で、その方法が今までまったく分からなかったのです。

でも、今回、やっとやっとこの OAuth 認証を Arduino IDE – ESP32 で実現できたんです!!
しかも、Time ライブラリ以外は、Arduino core for ESP32 内のライブラリのみで実現できて、その他の外部ライブラリは一切使用していません。
外部ライブラリを使用せずに動作させてみると、OAuth 認証のしくみがある程度理解できるようになってきます。
これは、私の様な独学のアマチュアプログラマにとって、とっても大きな成果なんです。
今後の IoT 開発にいろいろと役立ちそうな気がしています。

OAuth 認証については、最初は sha1.c という外部ライブラリを使って実験していました。
しかし、いちいちスケッチにコピーしなければいけなくて面倒だったので、Arduino core for ESP32 のライブラリに組み込まれている mbedtls ライブラリを流用してみたら、なんと、できてしまいました。
そんなわけで、Twitter API が使えるようになったわけです。
これには我ながら感動してしまいましたね。
やったーーー!
って感じです。

これを使えば、Google Home でツイート結果を喋らせることもできます。
既にもう実証済みなので、後々記事にしたいと思います。
アマチュア電子工作家にとって、IoT 機器開発に幅がグーンと広がりますね。

ということで、Arduino core for ESP32 で Twitter API を使用する方法を紹介したいと思いまが、更にもう一つ言っておかなければなりません。

実は、Twitter API から返って来る文字列はなんと、Unicode ( UTF16 )文字列なのです。
これではディスプレイに日本語表示することはできません。

そこで、いろいろ私なりに調べた結果、なんと、Arduino core for ESP32 に入っている、xtensa-esp32 ライブラリを使えば、それほど苦労せずに UTF-8 文字列に変換できたんです。
これも我ながら大きな成果でした。

ということで、前置きが長くなってしまいましたが、Twitter API の使い方を紹介したいと思います。

準備するもの

以下のESP-WROOM-32 ( ESP32 ) 開発ボードがお勧めです。
ESP-WROOM-32 は Arduino IDE で開発ができる、技適取得済みWi-Fi & Bluetooth 搭載のマイコンです。
それをパソコンにUSB接続できるように使いやすくしたボードが以下のものです。

ESPr Developer 32

まずは、USBホスト機器や ESP-WROOM-32 自体を突入電流や過電流から手厚く保護できる、スイッチサイエンス製の ESP-WROOM-32 ( ESP32 )開発ボードをお勧めします。
これの仕様例は以下の記事を参照してみてください。

ESPr Developer 32 ( スイッチサイエンス製 ) を使ってみました

その他、Espressif Systems 社純正の以下のボードもあります。

ESP32-DevKitC

Wi-Fi環境

インターネットにつながっている Wi-Fi ルーター環境が必要です。
事前に ESP-WROOM-32 がネットに接続できるように、Macアドレスフィルタリングなどの設定を済ませておいてください。

特に注意していただきたいのは、IoT機器や その他 Wi-Fi 機器が増えると、Wi-Fiルーター設定の DHCP ユーザー最大数をいつの間にか超えている場合があります。
その場合はなぜか Wi-Fiに繋がらないという症状が出ますので、ユーザー数を増やすなどの設定にしておいてください。

パソコン、USBケーブル等

Arduino core for ESP32 のインストールおよび設定

Arduino IDE は 1.8.5 で動作確認しています。

Arduino core for ESP32 は最新版を使用してください。
そのインストール方法や設定は以下の記事を参照してください。

Arduino core for the ESP32 のインストール方法

Time ライブラリのインストール

Arduino 標準の Timeライブラリを予めインストールしておいてください。
インストール方法は以下の記事を参照して最新版をインストールしておいてください。

https://www.mgo-tec.com/blog-entry-1616shinonome-ws-oled-news.html

Twitter APIs に登録し、Access Token を生成する

まず、ご自分のTwitter アカウントを作って置いて下さい。
Twitter アカウントができていれば、ログインした状態にしておいてください。

次にTwitter Developers のページで登録します。
以下のリンクをクリックしてください。

https://developer.twitter.com/

開くと、こんな感じのページが表示されますので、右上端の「Apply」をクリックしてください。
なお、この登録方法は 2017/12/05 時点ですので、今後変更される可能性があります。

TwitterAPI_01

すると、以下のページが表示されるので、
「 Get started with standard access 」
をクリックしてください。

TwitterAPI_02

すると、下図の様なページになるので、「 apps.twitter.com 」をクリックしてください。

TwitterAPI_03

次の画面になるので、「 Create New App 」をクリック。

TwitterAPI_04

すると、下図の画面になるので、必要事項を入力してください。
必ずアルファベットで入力してください。
特に注意していただきたいのは、「 Callback URL 」欄に入力することです。
ここは必須事項ではないのですが、OAuth 認証ができないという情報がネットで上がっていたので、そこに適当な URL を入力しておきます。
ご自分の Webサイトが無ければ、ツイッターの URL
https://twitter.com

とでも入力しておけば良いと思います。

TwitterAPI_05

そうしたら、そのページの一番下方の同意をチェックして、
「 Create your Twitter application 」をクリックしてください。

TwitterAPI_06

すると、下図の様な画面になるので、
「 Keys and Access Tokens 」をクリックしてください。

TwitterAPI_07

すると、下図の様な画面になります。
Consumer Key ( API Key ) と Consumer Secret ( API Secret )が Twitter APIs を動かすために必要です。
その他に、Access Token が必要なので、このページの一番下方の「 Taken Actions 」をクリックします。

TwitterAPI_08

すると、下図の様に Access Taken (アクセストークン)が生成されます。
※これらのキーは他者に見られないように十分注意してください

TwitterAPI_09

以上、Twitter APIs を使用するには、以下の4つのキーが必要になります。

Consumer Key ( API Key )
Consumer Secret ( API Secret )
Access Token
Access Token Secret

次では、Twitter APIs への HTTP リクエスト方法の流れを説明します。

スポンサーリンク


mgo-tec電子工作 関連コンテンツ ( 広告含む )

投稿者:

mgo-tec

Arduino , ESP32 ( ESP-WROOM-32 ) , ESP8266 ( ESP-WROOM-02 )等を使って、主にスマホと連携した電子工作やプログラミング記事を書いてます。ライブラリも作ったりしてます。趣味、独学でやってますので、動作保証はしません。
電子回路やプログラミングの専門家ではありません。
畑違いの仕事をしてます。
でも、少しだけ電気の知識が必要な仕事なので、電気工事士や工事担任者等の資格は持ってます。

コメントを残す

メールアドレスが公開されることはありません。

*画像の文字を入力してください。(スパム防止の為)