Idea:

  • Use ESP8266 to talk to Twitter
  • Get User Data or Tweet or Search Twitter
  • Display the data on a Dot-Matrix display

Implementation

I created an Arduino library to talk to Twitter using its Web API made for ESP8266. There are other approaches like using a bearer token arduino-twitter-api, but comes with limitations in terms of not being able to send tweet. This Arduino library TwitterWebAPI can both search/read and post tweets.

All the instructions and usage of library is described on my GitHub library page Github: debsahu/TwitterWebAPI


TwitterWebAPI

An Arduino library to talk to Twitter using Twitter Web API made for ESP8266. This is based on a sketch posted here. There are other approaches like using a bearer token arduino-twitter-api, but there are limitations in terms of not being able to send tweet. This can both search/read and post tweets.

Consumer Key, Consumer Secret, Access Token & Access Token Secret

In order to talk to Twitter,

  • Goto https://apps.twitter.com/app/new and sign in (if you havent already).
  • Fill in the fields, For website you can enter any webpage (e.g. http://google.com), and create your app
  • Then click on the Keys & Tokens tab. Your Consumer Key and Consumer Secret will be there, if not click on Generate.

Fill the obtained Consumer Key, Consumer Secret, Access Token and Access Token Secret inside the sketch.

Using the Library

  • Download this GitHub library.
  • In Arduino, Goto Sketch -> Include Library -> Add .ZIP Library… and point to the zip file downloaded.
  • Install TimeLib library and NTPClient library using the same procedure.

To use in your sketch include these lines.

#include <TwitterWebAPI.h>
#include <NTPClient.h>
#include <WiFiUdp.h>

Define Twitter GET request timeout (optional, default is 1500ms)

#define TWI_TIMEOUT 2000  // in msec

Setup correct timezone to correct the time obtained from NTP server.

const char *ntp_server = "pool.ntp.org";  // time1.google.com, time.nist.gov, pool.ntp.org
int timezone = -5;                        // US Eastern timezone -05:00 HRS

You WILL need Consumer Key, Consumer Secret, Access Token and Access Token Secret that can be obtained from the above steps.

// Values below are just a placeholder
// Obtain these by creating an app @ https://apps.twitter.com/
  static char const consumer_key[]    = "gkyjeH3EF32NJfiuheuyf8623";
  static char const consumer_sec[]    = "HbY5h$N86hg5jjd987HGFsRjJcMkjLaJw44628sOh353gI3H23";
  static char const accesstoken[]     = "041657084136508135-F3BE63U4Y6b346kj6bnkdlvnjbGsd3V";
  static char const accesstoken_sec[] = "bsekjH8YT3dCWDdsgsdHUgdBiosesDgv43rknU4YY56Tj";

Declare clients before setup().

WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, ntp_server, timezone*3600, 60000);  // NTP server pool, offset (in seconds), update interval (in milliseconds)
TwitterClient tcr(timeClient, consumer_key, consumer_sec, accesstoken, accesstoken_sec);

In setup make sure to start NTP connection. A correct time is required to be able to post/search on Twitter.

tcr.startNTP();

Search for a key word

std::string search_str;
String tmsg = tcr.searchTwitter(search_str);

Search Twitter User Info (eg follower count)

std::string search_str;
tcr.searchUser(search_str);

Post to Twitter

std::string twitter_post_msg;
tcr.tweet(twitter_post_msg);

Example: TwitterTweetSearchFSWiFiMgr

In addition to TwitterWebAPI, make sure that TimeLib library and NTPClient library is installed, and install the following libraries

For display you can either install

Previous idea

  • Too many variables on the pathway
  • IFTTT is not the most responsive