さえずり季題【244】は「立秋」です。二十四節気の一つで、旧暦七月の初め、現在の新暦で言うと8月8日前後。暦の上では秋となり手紙も「暑中御見舞」から「残暑御見舞」に。「秋たつや川瀬にまじる風の音」(飯田蛇笏)皆様ご自愛ご健吟。 #saezuriha #saezuriha_odai
— June,born in Apr. (@no_ra_co) August 8, 2015
月: 2015年8月
ネット便器
時代はIoTである。モノをネットに接続することは、もはや正義を通り越して神の啓示であるとすら言えるほどだ(笑)。
やろうやろうと思ってやっていない一事はこのことだ。すなわち、「Arduino」を使用して、直接モノにツイートさせること、これである。モノがツイートするのはきっと面白いに違いない。
「Twitter Arduino」あたりで検索すると、ライブラリが出てくる。今回はこれ(Tweet Library 1.3)をありがたく使わせていただく。
さて、そうと決まれば何をネットに接続するか、である。ここはやはり、自宅の便器をネットに接続するという、これを一度やってみるべきであろう。
やはり、IoT時代であるから、便器もネットにつないでやらなければ面白くないだろう。便器だって平等に扱ってやらねば、他の物品との差別感を覚えてひがむようになり、性格が曲がってしまうかもしれない。このように性格の歪んだ便器は、人間様が用を足すときに局部に噛みついてくるようなことが万に一つはないとも限らない。便器にも時々はインターネットと会話をさせてやるべきだ。
とりあえず、便所のフタの開閉を検知するため、「チルトスイッチ」を使用する。
これは、傾けるとスイッチが入るというもので、Arduinoを買ったときに一緒に買った「Seeedstudio SIDEKICK BASIC KIT」というセットに入っていたものだ。
回路は簡単である。下図のように、行儀よく10kΩほどプルダウンしておけば誤動作は少ない。
スケッチのほうは、ライブラリの導入に多少手間取った。使用させていただいた「Tweet Library」は、「ETHERNET SHIELD」のほうに対応しており、私が持っている「ETHERNET SHIELD 2」にはそのままでは対応していない。
基本的にヘッダファイルのインクルードを「#include <Ethernet.h>」から「#include <Ethernet2.h>」に書き換えるだけでいいのでは、と思ったのだが、どうもうまくいかない。さっぱりお手上げだったのだが、いろいろといじくりまわしているうち、エラーメッセージをよく見てみると、「クラスの2重定義」という意味のエラーが出ていることがわかった。なぜか、「libraries\Ethernet2\srcの下にあるやつと重なっている」みたいなメッセージが出ている。ハテ、とライブラリのあるディレクトリを見てみると、「libraries\Ethernet2\src」の下に、なぜか「Twitter.h」と「Twitter.cpp」がある。
なんだかわかんないけどいいや、消しちゃえ!と、それをぞんざい適当に消したら、うまくコンパイルできるようになった。しかし、そのことで5~6時間ほどハマッてしまった。
ETHERNET SHIELD 2とプロトタイプシールドを、先日買った「継ぎ足しピンヘッダ」を介して積み重ね、次のようにしていつもの100円ショップのアクリル枠にねじ止めする。
手前に緑色のチルトスイッチが取り付けられていることがわかるだろう。
Twitterに専用アカウントをとり、Tweet Libraryの説明にしたがってトークンを取得する。専用アカウントは、その名も「佐藤家の物」である(笑)。
それから、スケッチを次のように書く。
// // つぶやき便所 tweetToilet.ino // 27.08.08(土) 1000~ // 佐藤俊夫 // チルトスイッチで便所のふたの動きを検出し、呟かせる。 // #include <SPI.h> #include <Ethernet2.h> #include <Twitter.h> #include <stdio.h> // byte MAC[] = { 0x90, 0xA2, 0xDA, 0x0F, 0xF6, 0x74 }; IPAddress IP(192, 168, 1, 129); Twitter TWITTER("hogehogehoge-hagehagehagehage......"); // トークン const int TILTSW = 9; // void setup() { pinMode(TILTSW, INPUT); delay(1000); Ethernet.begin(MAC, IP); delay(1000); } void loop() { static int tiltSwStatus = LOW, prevStatus = LOW; int i = 0; tiltSwStatus = tiltSw(); if(tiltSwStatus != prevStatus){ prevStatus = tiltSwStatus; tweetMsg(tiltSwStatus); delay(1000); }else{ ; } } // int tiltSw(){ // チルトスイッチの読み取りを安定させるため、100回連続して同じ値が返るまで読む。 int i = 0, prevStatus = LOW, nowStatus = LOW; prevStatus = digitalRead(TILTSW); do{ nowStatus = digitalRead(TILTSW); if(nowStatus == prevStatus){ i ++; }else{ i = 0; } prevStatus = nowStatus; }while(i < 100); return(nowStatus); } // void tweetMsg(int tiltStatus){ const char openMsg[] = "%e3%82%84%e3%81%82%e3%80%82%e4%bf%ba%e3%81%af%e4%bd%90%e8%97%a4%e5%ae%85%e3%81%ae%e4%be%bf%e5%99%a8%e3%81%a0%e3%80%82%e4%bb%8a%e3%83%95%e3%82%bf%e3%81%8c%e9%96%8b%e3%81%84%e3%81%a6%e3%81%84%e3%82%8b%e3%80%82", // 'やあ。俺は佐藤宅の便器だ。今フタが開いている。' closeMsg[] = "%e4%bf%ba%e3%81%af%e4%bd%90%e8%97%a4%e5%ae%85%e3%81%ae%e4%be%bf%e5%99%a8%e3%81%a0%e3%80%82%e4%bb%8a%e3%83%95%e3%82%bf%e3%81%8c%e9%96%89%e3%81%be%e3%81%a3%e3%81%9f%e3%80%82"; // '俺は佐藤宅の便器だ。今フタが閉まった。' char tweetStr[256]; if(tiltStatus == HIGH){ sprintf(tweetStr, "%s \r\n %ld", openMsg, millis()); // Twitterは同じ文字列を繰り返し書き続けられないので、起動時間を付けて書き、重複を防ぐ。 }else{ sprintf(tweetStr, "%s \r\n %ld", closeMsg, millis()); } TWITTER.post(tweetStr); TWITTER.wait(); }
うまく動くようになったら、ホット・グルーでプロトタイプを便器のフタに取り付ける。
便所にLAN工事を施しておしまいだ。
上記動画のように便器のふたを開け閉めすると、やおら便器が次のように呟きだすのである。
やあ。俺は佐藤宅の便器だ。今フタが開いている。
49360— 佐藤家の物 (@SatoGoods) August 8, 2015
俺は佐藤宅の便器だ。今フタが閉まった。
31517— 佐藤家の物 (@SatoGoods) August 8, 2015
あれほどうまく行かなかったのに……?
昨日あれほどうまくいかなかったのに、一夜明けて気を取り直して試してみると、Tweetライブラリがうまく動くようになっている。うーむ。さっぱりわからん(笑)。
変だなあ
Twetterライブラリ、うまく行ったり行かなかったり。なんでだろう。不安定だ。
呻吟
「ETHERNET SHIELD 2」でTwitterに投稿しようとすると、よく知られているライブラリがそのままでは使えないということがわかり、呻吟する。
しかしまあ、所詮ウェブであるから、TCP/IPソケットさえあれば、低いレイヤから積み上げることでツイートはできるだろう。
……それをやる気があるかどうかの問題だな。うーん。どうしよう。
星奈津美先生
引き続きLチカ
引き続きLEDで遊ぶ。
100円ショップのプラスチック・ビーズにLEDを埋め込むという武蔵野電波のマネはなかなか楽しく、それをたくさん作ったのだが、この前のやり方だといまいち個数が少なく、寂しい感じが否めない。
この前のLED生け花
それはなぜかというと、小さいブレッドボード上に電流制御抵抗をLEDごとに付けようとすると、どうしてもLEDか抵抗のどちらかを「ラインまたぎ」に横向けにしなければならず、最低2ラインが消費されてしまうからだ。このブレッドボードだと、電源回路を入れると、どうしても5個しかLEDが配置できない。
ブレッドボードの中身は、タテのラインが下のように一列づつ内部で接続されており、真ん中の横一文字の仕切りで分けられている。抵抗かLEDのどちらかしか真ん中をまたげないから、どちらかは横向きになるのである。
そこで、便利なものがある。「集合抵抗」だ。
これは、抵抗を集めてワン・パッケージにしたものだ。この写真のものは、「8素子9ピン」というもので、内部はこうなっている。
秋葉原千石電商なら、本店地下の、レジから一番遠い、奥の抽斗で売られている。ひとつ20円だ。
表面にはカラーコードではなく、「103」等と数字が刻まれている。これはセラコンの読み方と似ていて、「103」であれば である。今回は「331」、すなわち のものを買ってきた。
足のピッチはちょうど2.54mmなので、ブレッドボードにピッタリ挿すことができる。これを使うと、ブレッドボード上、LEDと抵抗の組み合わせで2ピッチ消費していたところを1ピッチですませることができる。
こうすると、LEDは真ん中の仕切りをまたぐだけでよいから、LEDビーズの花を8個植えることができる。
紙コップに活けると、前回より多少華やかになった。
さて、LEDビーズが増えたので、これを16個ほど量産し、「TLC5940NT」とArduinoの回路に取り付けてみよう。スケッチやブレッドボードは前に試したのと同じでいい。
動かすとこんな感じだ。
パルス幅変調がうまくかかって、1個1個のLEDの消え具合になかなか余韻があってよい。また、よく見ていただくと、赤いビーズが必ずしも赤く光るわけではなく、緑や青に変化して光るのも、面白いところだ。
ほほー……
http://www.j-cast.com/2015/08/02241730.html?p=all
夏の雷
雷が鳴りだした。
花火
#kigo #jhaiku #haiku #saezuriha (季語は「花火」)