Tags:

土の中の水分をつぶやく

By 文系なArduino 2014年8月23日土曜日
昨日のArduinoに土壌の水分を検出させるコードをいじって、検出した水分の値をツイッターにつぶやかせてみました





使ったのは

Arduino Uno

Arduino Ethernet Shield Rev3 without PoE Module

TP-LINK TL-WR702N


難しいことは良くわからないので、Arduino+twitterで検索していたら「Stewitter」という便利なものを発見

なんでも作っちゃう、かも。のStewitterの使い方とコードの書き方を参考に書いてみた。
そしたら簡単に書き込めた。

Stewitterの作者のarms22さん、ありがとうございます。

#include <SPI.h>
#include <Ethernet.h>
#include <Stewitter.h>
// MACアドレスを↓に書く
byte mac[] = {
  0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF };
// "YourToken"を先ほど手に入れたトークンを書く。
Stewitter twitter("ここにトークンを入力");
// メッセージ(日本語もOK)
char msg1[] = "upupu";
char msg2[] = "gahahaha";
void setup()
{
  delay(1000);
  Ethernet.begin(mac);
  Serial.begin(9600);
  Serial.println("connecting ...");

  // twitterに接続して、メッセージを送信
  if (twitter.post(msg1)) {
    // 完了を待つ
    int status = twitter.wait();
    // status が 200なら正常に完了
    if (status == 200) {
      // レスポンスを表示
      Serial.println(twitter.response());
    delay(1000);}
 
  if (twitter.post(msg2)) {
    int status = twitter.wait();
    if (status == 200) {
      Serial.println(twitter.response());
    }}
    else {
      Serial.print("failed : code ");
      Serial.println(status);
    }
  }
  else {
    Serial.println("connection failed.");
  }
}

void loop() {
}
これでTwitterに書き込み成功!

そして、このコードを利用して「約200円で土壌水分センサーを作ってみた」のコードを流用して定期的に水分の値をつぶやくようにしてみた。



void loopの中に

 if (twitter.post(msg)) {
    // 完了を待つ
    int status = twitter.wait();
    // status が 200なら正常に完了
    if (status == 200) {
      // レスポンスを表示
      Serial.println(twitter.response());
    delay(1000)
を入れるだけだと、エラーが出てします。C言語が良くわからないので調べながら試行錯誤。。。でもできなかった

わからないことがあったらArduino forumで聞けってメーカーズ(Makers)のクリスアンダーソンが言っていたのを思い出した。そして実際に聞いてみたら、イギリス紳士が丁寧に教えてくれた!

そしてできたコードがこちら

#include <SPI.h>

#include <Ethernet.h>

#include <Stewitter.h>
//ここにMacアドレスを入力↓
byte mac[] = {   0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA }; 
// stewgate.appspot.comで入手したトークンを入力 
Stewitter twitter("ここに入力");
int moistureSensor = 0; 
int moisture_val; 
void setup() 
{  delay(1000);
  Ethernet.begin(mac); 
Serial.begin(9600); //open serial port
} 
void loop() 
{moisture_val = analogRead(moistureSensor); // read the value from the moisture-sensing probes

Serial.print("moisture sensor reads ");

Serial.println( moisture_val );delay(120000);//2分間停止させます。Twitterは同じ内容のつぶやきを連続して書き込めないらしい

char text[32]; // make sure this is long enough to hold your entire message, including the null terminators

printf(text, "My sensor reading is %d", moisture_val);

if (twitter.post(text)) {    // 投稿の完了を待つ    int status = twitter.wait();}    //If status is 200, it means succeed    

if (twitter.wait() == 200) {      // 返信を読む      

Serial.println(twitter.response());
 } }
プログラムのことはよくわかりませんが、イギリス紳士?な方のおかげでちゃんとできました!
RubyもPHPも挫折した文系ですが、調べて、質問して、試行錯誤すればArduinoを使えるんですね。オープンソースの恩恵ですね。

今からArduinoを始めたい人は、これを買うといいですね。自分もこれを使っています



Post Tags:

文系なArduino

Aduinoとraspberry PiとWebサービスで食べている「文系」です。マレーシアとシンガポールを拠点としてITコンサルタントとしても活躍し、中国語教師としても活躍中の身でもあります。IT農業をシンガポールで始めようと計画中です。

No Comment to " 土の中の水分をつぶやく "