2014/05/29

西陽と窓

とあるビルの階段室にある窓。
造形がキレイなところへ、梅雨の晴れ間を突いて西陽が差し込んできたので、逃すまいと、周りに誰も居ないことを確認して(気にする必要があったのかな?)、慌ててパチリと撮った画像が1枚目。



2枚目は自宅の西向きの窓。
メルちゃんというお人形に後光が差し込んでいたので、思わずパチリ。

西陽というのは暑くて長くて、断熱されてないRC造の家では、ブロックやコンクリが、日が沈んだ後に徐々に熱を放射していくので夜の暑苦しさの主な原因である。
19才までいた実家の、西陽と暑さの皮膚に染み付いた記憶は中々覆せないものだが、梅雨空の中休み、束の間の晴れ間に覗く太陽に文句は言うまい。
(もっとも、今の我が家は断熱塗料を使っているし、南風の通しも良いので、西陽の影響がそれほどでもないのは幸いである)

====

画像はいずれもiPhone5で撮影し、ツイッターで投稿したもの再掲。

2014/05/27

観仮実考(かんかじっこう) - 科学的一手法の浸透のために

NHKに「考えるカラス」という番組があるらしくて(TVが無いので見たことはない)、そこのオープニングが、
察(かんさつ)し、説(かせつ)を立て、験(じっけん)し、察(こうさつ)する。科学の考え方を学べ。『考えるカラス』。
であることを知った。
科学的手法を浸透させるために、この考え方をすぐ思い出せるような略語にするといいのではないかと閃いた。品質管理におけるPDCAのような。
例えば、「観察」「仮説」「実験」「考察」の頭をそれぞれとって
観仮実考 (かんかじっこう)
というもの。
ブログのタイトルらしく思いつきでしかないけど、どうでしょうかね?

----

画像はカメラ目線をあえて避ける自意識過剰な猫。
レンズが目玉に見えて怖いので視線を合わせない、という説もあるけど、仮説の域を出ないので、対照実験でもするかな。

2014/05/22

Arduino 始めてみた

1号(♂14才)がロボット関連の会に通っている関係で遅ればせながら、Arduinoに手を出してみた。
元々興味はあったのだが、センサー類のための回路を組まなければいけないのかな、と尻込みをしていたら、まず、保護者から一緒にやりましょうよというプッシュがあって気持ちが動き、調べていくうちにシールドと呼ばれる拡張ボードがあって回路周りはなんとかなりそうだと踏ん切りがついたのと、Macにも開発環境があるのも大きかった。

まず、感想
ちょっとやってみての感想は、
  • Rapsberry Piと同じく安価でしかも無料の開発環境や、各種周辺装置が整っているので教材として最適(いい時代だ)
  • Raspberry PiはPCだが、Arduinoは制御系
  • プログラミン言語としてC言語(C++)の知識が必要になるので学生はやっておいて損はなさそう
  • いじってるうちにセンサーやデバイスにも詳しくなりそう
  • 実生活には各種センサーをお手軽に使えそうだという実感がわいた
  • IDE(開発環境)にシリアルモニタが用意されているのでセンサーの動きが分かり易い
  • 情報を得るためには英語が読めた方がはるかにいい
などである。

入門書
ネットだけでは全体像がつかめなくて、まずは、教科書として「みんなのArduino入門」(高本孝頼著、リックテレコム)(リンク先はアマゾン。画像クリックでもOK)。
ハードもソフトも、ある程度網羅しているので、入門にはとても良いと思う。
もっとも、最終的にはプログラムは本家Referenceに当たる必要があるけど。

ハードウェア
会の活動内容から、ロボットサッカーをイメージしているので、ハードウェアはメインのArduinoと、センサー類を揃える必要がある。
購入は、横着してモーター以外は全てアマゾンで揃えた。
メインのArduino基板は入出力ポートが足りないんじゃないかと思ったのでMEGA2560で、レビューを信じて安いSainSmartの互換製品を選択した。
センサー類(赤外線、超音波、コンパス)とシールド類(センサーシールドと4chモーターシールド)は、どれも紙の説明書などはついていないので、情報はネットから、しかも日本語サイトにはない場合が多く、英語から探すのが手っ取り早い。
以下はご参考。

サンプルコードで試運転
まずは、各センサーの動作を確かめるために、というか、センサーが動くのかどうかも不安だったので、各センサーの製造元にあるサンプルコードをダウンロードし、動かしてみた。
で最初から躓いた。
振り返ってみると大したこと無いのだけれど、わからないというのはこういうことなのだなと思った次第。

(1) サンプルコードはIDE1.0へのバージョンアップに伴う変更に対応していない場合がある。
ウチのは1.0.5だったので、いくつか引っかかった。
大きい修正箇所は次の2つ。
  • 拡張子変更(*.pde -> *.ino)   例:  graphicstest.pde → graphicstest.ino
  • ヘッダーファイル変更 (#include <WProgram.h> → #include <Arduino.h>) (例: int8_tなどの宣言がエラーとなってしまう)
1番目は割合すぐ対処できた。
2番目は次の(2)との合わせ技でちょっとハマった。

(2) IDEのライブラリファイルの扱いがよくわかっていなかった。
次の(4)-a)の例だが、ロボット制作には関係ないのに面白そうだからと買ってしまった1.8インチのTFTディスプレイでハマった。
サンプルコードをコンパイルすると"ST7735.h"にエラーが出まくりで、エラーコード(ある関数の引数int8_tの次の文字列で")"が期待されてる、など)を確かめつつ、怪しそうなところを文字列を置換したり(int8_t → char)しても動かない。
ネットで情報をあさっているうちに、IDEのバージョンでヘッダファイルが変更になっているのを突き止めたので(上の(1))、"ST7735.h"の#include文を"Arduino.h"に書き換えたりしてもダメ。
結論から言うと、"ST7735.h"をプログラムファイルと同じディレクトリに置いており、そのファイルだけを修正していたので、IDE立ち上げ時に読み込まれる正しい場所に置かれた"ST7735.h"には何も変更が反映されていないので、何度も同じエラーメッセージを見ては「合ってるはずだけどなぁ」と呟きつつ、反映されない修正を繰り返す、というドツボにはまった。
時間を置いて冷静にIDEの気持ちになって考えてみたらあっさり解決した。
つまり、読み込むライブラリはそのライブラリを登録するときに指定されているので、そのライブラリの”ST7735.h"を修正しないといけなかったのだ。

(3) ピン番号
サンプルコードには指定のピン番号が書かれている。
基板(UNOやMEGA)によってピン番号を書き換える必要がある、とコード内のコメントに書いてあるのでよく確認する必要があった。

(4) サンプルコード修正実例
いくつかのサンプルコードを修正したら動作したので記念に修正箇所を記す。

a) 1.8" TFTカラーディスプレイ
ライブラリヘッダファイルである "ST7735.h" のinclude文を書き換える。
#include <WProgram.h>

//#include <WProgram.h>
#include <Arduino.h>
b)  3軸デジタルコンパス HMC5833L
リンク先記述されている "Arduino demo code" の配列(51行目)を修正する ( outputData → outputData[i])。
if(6 <= Wire.available()) // If the number of bytes available for reading be <=6.
    {
        for(i=0;i<6;i++)
        {
            outputData=Wire.receive();  //Store the data in outputData buffer
        }
    }
 ↓
if(6 <= Wire.available()) // If the number of bytes available for reading be <=6.
    {
        for(i=0;i<6;i++)
        {
            outputData[i]=Wire.receive();  //Store the data in outputData buffer
        }
    }
最初に基板と手に入れてから1ヶ月、「ネットを漁るだけでは駄目だ」「そういえば、どうやってつなぐの」と気づいて教科書とジャンパワイヤーを入手してから3週間が経過した。
とりあえず、今はここまででハードの動作試験終了といたっところ。

(2014/5/22追記)
本の紹介のように思えたのでタイトルを「Arduino入門」から「Arduino始めてみた」に変えました。



2014/05/07

かくれんぼの教訓

小学校の3年から6年の間は親戚同士で模合い(もあい、頼母子講、無尽講)をやっていたようで、今にして思えば最低でも1ヶ月に1度はオジーオバーの家に家族総出で遊びに行っていた。
オジーとオバーの家に集まる「いとこ達」も私と同じような年齢で、夕ごはん(たいていの場合は刺し身、シブイ(冬瓜)と豚肉のお汁にご飯)が済むと、子どもたちは模合いや大人の話には興味が無いから、かくれんぼなどをして遊ぶのである。
かくれんぼをしていると、あるいとこ「XXX」が雑談をしている大人達に「ここにいるって言わないでよ!」と周囲の同意を取らずに念だけを押して座卓の下に隠れてしまった。彼が声を潜めて隠れていると、探しに来たオニに向かってある大人が「XXXが『ここにいるって言わないでよ!』って言ってたよ」と告げ、オニは首尾よくXXXを発見するのであった。
あのXXXの念押しの言葉は大人にとっては約束じゃなかったんだ、事実を述べるのは常に強いのだな、とひどく感心したことをよく覚えている。

かくれんぼの隠れる側の番になったので、いつもとは違った場所に隠れようと、暗い廊下の片隅に隠れたことがある。
この身を隠してくれるものは暗闇だけなので「オニから見えるんじゃないか」と相当不安だったが、その暗闇に身をひそめていると、電灯で照らされた廊下の向こう側からは、なかなか見えないことがわかった。
結局その時は見つからずに隠し通せて、もう何度もやったかくれんぼで隠れる場所など無いはずなのに一体オマエはどこに隠れてたのか? と疑問に思われたのでウキウキと隠れ場所を教えてしまった。
学習したオニは次の番からは懐中電灯を持って探しまわるのである。
当然、暗いところを明るい光で照らせば見えるようになって、あえなく見つかってしまうのである。

そういう訳で、かくれんぼで得た教訓。
  • 相手の同意のない約束は約束にならない
  • 事実は常に強い
  • 明るいところから、暗いところは見えない
  • 暗いところも、光で照らせば見えるようになる
何か真理めいた大発見をしたんじゃないか、と小学生だった自分は思ったのであった。
これらの教訓を得て以来、日の当たらないマイナーな人々の声や物々の中に探しているものがあるかもよ、と時々思い出すようにしている。

====

画像は隣家の屋上で反射する月明かり(2014/4/19撮影)。

2014/05/06

明日はこどもの日

さて、もう4連休も半ば。明日はこどもの日。
子どもたちに映画にでも行きませんかと提案したところ、1号(♂14才)は、映画が子供っぽいからなのか拒否したので一人お留守番。
お年ごろだから仕方がないが、提案した映画が「あ、納豆行きの情報」に聞こえたのかもしれない。

画像上は鯉のぼりをベランダにロープでぶら下げてみたの図。
画像下は、その1号制作の洗濯バサミ魚。目がポイント。


zenback