電子工作

なかよしぼっと

  • 閲覧数: 2769
  • 11

作品画像

  • C.120x80.44ae663178903ab43ecc618f90a6ec49
  • C.120x80.8ddd37b0a903603fe37756e6fa202046
  • C.120x80.f862ecb43a0c8bbd1189d5b530743dde

作品説明

概要
先日itopoidさんとやりとりする機会があったので親愛の情を込めてインターネットに対してなかよし的視点からアプローチしてみました。

動作はかんたん、なかよしフィギュアをなでてやると「インターネットと『なかよし』になれた瞬間」になかよしツィートが投稿されます。

仕組み
こんな感じです(´ω`)っ

なかよしぼっとの構成

なかよしぼっとの構成


中のコードはAnalogInputでトリガかけるとこと日本語をUTF-8の16進数にバラして無理やり詰め込んでるとことツィート回数のカウントしてるとこ以外はHTTPClient_Twitterそのまんまです(´ω`)

レシピ

1. なかよしフィギュアを厚紙でつくります
2. 導線をフチに沿わせます
3. mbedの基板をつくります(RJ-45コネクタがくっつけばいいです)
4. HTTPClient_Twitterのプロジェクトをパク Importさせて頂きます
5. 適当になかよし仕様にします
6. なででつぶやきゃみんなしあわせ

[2012/11/13 追記] 
HTTPClient_Twitterをimportしたのちいろいろ書き換えたソースです(´ω`)っアレな感じですがご勘弁を

// --------------------------------------------------------------
// main.c / mbed Project: NakayoshiInternet
// --------------------------------------------------------------
#include "mbed.h"
#include "EthernetInterface.h"
#include "HTTPClient.h"

EthernetInterface eth;
HTTPClient http;

AnalogIn ain(p20);

Serial pc(USBTX, USBRX);

char ret;
const char *TOKEN = "あなたのトークン"; //ここで登録すればもらえます(っ´ω`)っ http://mbedtweet.appspot.com/

int main() {
  float currentValue = 0.0;   // for AnalogInput

  // 日本語でつぶやく -> UTF-8 の16進数なバイトデータをそのまま使う
  // "な" = {0xE3, 0x81, 0xAA} (UTF-8)
  // "か" = {0xE3, 0x81, 0x8B}
  // "よ" = {0xE3, 0x82, 0x88}
  // "し" = {0xE3, 0x81, 0x97}

  char header = 0xe3;
  char secondHeader = 0x81;
  char thirdHeader = 0x82;

  char message[15];

  message[0] = header;    // "な"
  message[1] = secondHeader;
  message[2] = 0xaa;

  message[3] = header;    // "か"
  message[4] = secondHeader;
  message[5] = 0x8b;

  message[6] = header;    // "よ"
  message[7] = thirdHeader;
  message[8] = 0x88;

  message[9] = header;    // "し"
  message[10] = secondHeader;
  message[11] = 0x97;

  message[12] = 0x30;   // 3桁のカウント用変数
  message[13] = 0x30;   // 000 -> 999まで、[12]は百の位、[13]は十の位、[14]は一の位
  message[14] = 0x30;   // UTF-8だと 0x30 -> 0x39 == '0' -> '9' (ASCII Codeと同じ)

  printf( "mbed booted.\r\n");
  printf( "Ethernet Setting...\r\n");
  eth.init(); //Use DHCP
  eth.connect();
  printf( "Done.\r\n");

  //POST data
  HTTPMap map;
  HTTPText inText(str, 512);
  map.put("token", TOKEN);
  map.put("status", message);

  // Loop
  while (1){
    // AnalogInputポートの値を取得
    currentValue = ain.read();

    // なかよしフィギュアをなでた?
    if(currentValue > 0.7){

      // Twitter APIプロキシ経由でPost
      printf( "\r\n");
      printf( "Char bytes: %d\r\n", sizeof(message[0]));
      printf( "Analog Input Value: %f\r\n", currentValue);
      printf("\r\nSending server tweet...\r\n");
      ret = http.post("http://mbedtweet.appspot.com/update", map, &inText);

      if (!ret){
        printf("Executed POST successfully - read %d characters\r\n", strlen(str));
        printf("Result: %s\r\n", str);
      }else{
        printf("Error - ret = %d - HTTP return code = %d\r\n", str, http.getHTTPResponseCode());
      }

      // なかよしツィートの回数をカウントアップ(重複ツィート対策)
      message[14]++;  // 1の位++

      if(message[14] > 0x39){ // 桁上げ?
        message[14] = 0x30; // 一の位 = '0'
        message[13]++;    // 十の位++

          if(message[13] > 0x39){ // 十の位桁上げ?
            message[13] = 0x30; // 十の位 = '0'
            message[12]++;    // 百の位++

              if(message[12] > 0x39){ // 桁上げ?
                message[14] = 0x30; // 全部 = '0'
                message[13] = 0x30;
                message[12] = 0x30;
              }
          }
      }
    }
    wait(0.1);
  }

  return 0;
}

コメント (4件)

みくそんたんだーヾ(*´ω`*)ノシ LANにとどまらずWANまでアクセスできるようになるとwktkにょす(*´ω`*)あとはマイコンにもやさしく応対してくれるサービスとかフレームワークとかがもっと増えてくれるといいねー(*´ω`*)b

2012/11/19 17:06

電子工作もEthernetにつなぐと可能性ひろがりんぐですね!

2012/11/18 17:08

itopoidさんだ!ヾ(*´ω`*)ノシ うれしいコメントありがとうございにょすー (*´ω`*)AM1:00くらいから6:00ぐらいまででヒョポイとつくってみましたが好評なようでなによりですす

2012/11/13 14:22

これすごい夢あるので作品コネクションしてわたしも作りたいです

2012/11/13 14:09