@_mojolovichさんのツイート(https://twitter.com/_mojolovich/status/602461233837543425?s=09)をチェック
日: 2015年5月24日
団欒と馬鹿親父
今日の晩飯は鉄板焼きだった。団欒の楽しさ、ホットプレートを囲み、肉や野菜を焼いて、家族で喋りながら食べるうち、テレビの話だったかスポーツの話だったか、長女と妻が連想で、
「そういえばさ、ジャパン、ジャパンって言うけど、なんで日本のことを『ジャパン』って言うんだろ?」
と言った。
ぬぅ、ここだッ!妻子をして愛国者ならしめんとするところ、ここに他ならずッ!、と、4~5センチは体が前に出る私である。
漢字の呉音読みと漢音読み、日本の「日」は「ニチ」とも「ジツ」とも読むことは「本日(ほんじつ)」などの語からも
「さあーってとっ、宿題やんなくちゃ、ごちそうさまぁ~」「後片付けしようかしらねえ」
……すぅ~っ、と妻子は退散していくのであった。
ぬぅ。
デジカメのシャッターを押す重さは
で、ソレノイドをとっかえひっかえ適当にやると無駄遣いだから、ちょっと考えてみよう。
キッチン秤を持ってきた。ストローで短いつっかえ棒をこしらえて、それを使ってカメラのシャッターをキッチン秤に押し当てるようにしてみる。
そうすると、200グラムくらいでデジカメのシャッターが押せることがわかった。300グラムで押せば、余裕・確実にシャッターが押せる。
それで、300gfというような力のあるソレノイドをネットで探すのだが、これがなかなか、ない。
よく考えたら、シャッターの引きしろなんて何ミリもないから、あ、そうか、テコで力を強くすればよいと思いついた。
そこで工作してみたのがコレなのだが……。

結局、引きしろも力も足りず、シャッターは落とせないのであった。
待て次号!(笑)
次に、ETHERNET SHIELD 2というやつを…
次に、昨日FETやソレノイドと一緒に買っておいた「イーサネットシールド」というやつを試す。
これを買ったのは、簡単なウェブインターフェイスで、例えばフォームのボタンをクリックするとデジカメのシャッターが落ちる、みたいなのをやりたかったからだ。千石電商で3240円だったが、多分、もっと安い互換品などもあるのだろう。
ともかく、こんな箱に入っている、こういう形のブツである。

この方のサイトなどを勝手に参考にさせていただきつつ、いじくってみる。
Arduinoに取り付けるとこのようになる。

で、ArduinoのIDEにサンプルプログラムが入っているから、それをタッチアップして目的を達する。
注意しなければならないのは、私の買ったのは「ETHERNET SHIELD 2」という最新のもので、ネットで多く紹介されている「ETHERNET SHIELD R3」というものとは違うということだ。
私の買った「ETHERNET SHIELD 2」は、最新のArduino IDE 1.7.3でないと、サンプルコードなども違い、扱えない。私が使っているIDEは1.6.4なので、アップグレードしなければならない。
アップグレードしたIDEで、次のように「ファイル」→「スケッチの例」→「Ethernet2」とメニューを操作していくとサンプルコードが出てくる。

- AdvancedChatServer
- BarometricPressureWebServer
- ChatServer
- DhcpAddressPrinter
- DhcpChatServer
- TelnetClient
- UdpNtpClient
- UDPSendReceiveString
- WebClient
- WebClientRepeating
- WebServer
……このように、けっこういろいろなものが入っている。今日は一番下の「WebServer」を選ぶ。
このソースのMACアドレスとIPアドレスを、先達サイトを参考に現況に合わせて書き換える。MACアドレスはシールドの基板の裏にシールで貼ってある。
出来上がったらそのへんにのたくっているカテ5のモジュラーをえいっとつっこみ、ブラウザにIPアドレスを入れれば、すぐにミニWebサーバとして動き出す。

これは、各アナログピンの現在の値を5秒毎にモニタしている。何かセンサをピンにつなげば、即、ネット温度計やネット照度計の出来上がりである。
さて、次に、コイツで「POST」を受け取る段取りだ。コイツにアクセスして、フォームのボタンを押すと、ソレノイドが動く、という機構を作るためである。
本当ならクライアントから来る文字列を標準入力で受ける段取りが必要だが、今日は簡略化して、ブラウザがPOSTを投げたら、内容はなんでもいいから、とりあえずソレノイドを動かす、というふうにする。
そのソースコードはこんな感じだ。
//
// WebServerでソレノイドを動かす。
// 佐藤俊夫
// 27.5.24(日)1352~
//
#include <SPI.h>
#include <Ethernet2.h>
const int FET = 9;
byte mac[] = {
0x90, 0xA2, 0xDA, 0x0F, 0xF6, 0x74
};
IPAddress ip(192, 168, 1, 129);
EthernetServer server(80);
void setup() {
Ethernet.begin(mac, ip);
server.begin();
pinMode(FET, OUTPUT);
}
void loop() {
String recvbuf;
EthernetClient client = server.available();
if (client) {
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
recvbuf += c;
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head></head>");
client.println("<body>");
client.println("<center><h3>Drive solenoid.</h3>");
client.println("<hr>");
client.println("<form method=\"POST\">");
client.println("<input type=\"submit\" value=\"Do!\">");
client.println("</form>");
client.println("</center>");
client.println("</body>");
client.println("</html>");
if (c == '\n' && currentLineIsBlank) {
break;
}
if (c == '\n') {
currentLineIsBlank = true;
if(recvbuf.indexOf("POST") == 0){
digitalWrite(FET, HIGH);
delay(2000);
digitalWrite(FET, LOW);
}
recvbuf = "";
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
}
}
次に、ちょっと仕掛けを作る。本当はカメラのシャッターを切りたいのだが、買ってきたソレノイドの力があんまりなくて、シャッターが切れない。それで、ガラスのコップをソレノイドで叩いて音を出す。
ソレノイドは、午前中やったように、電流がちょいとばかり多く流れるので、FETでリレーしてやる。
こんな仕掛けにする。

こんなフォームを作り、携帯電話にロードする。「Do!」というボタンをクリックすると、ソレノイドが動く。

で、ガラスのコップにソレノイドの軸を近づけて……。

操作するとこんな風になる。
買ってきたソレノイド
昨日千石電商で5Vのソレノイドを見つけ、買ってきた。ソレノイドは「引き」の製品が多く、電圧も6Vとか12Vが多い。「5Vで押し」のは珍しいので、650円で高かったのだが、買った。
何がしたいかと言うと、デジカメのシャッターをソレノイドで押したりしたいのである。
とりあえず、小さいからそんなに何アンペアも流れるもんじゃないだろ、適当なFETか何かでスイッチしてやればいいんだろ、くらいの考えで、東芝の2SK2232、こちらは130円くらいのモンで、それも一緒に買った。
家へ帰って千石電商のサイトにあるソレノイドのデータシートを見たが、中国製で、どうも要領を得ない。何アンペア流せまっせ、とか書いてない。
うーん、計れ、ってかい(笑)。
適当にテスター当てると、35Ω。E=IR、I=E/R。140ミリアンペア。……って、んなわけあるかい(笑)。
中国のメーカーのサイトのデータシートを見ると、4.5Ω、1.1Aと書いてあるから、多分そうなんだろう。しかし、ソレノイドって、「押しはじめ」と、「押し持続」で、電流が違うように思うんだが、……まあ、いいか。
一方、買ったFET、2SK2232は、というと、東芝製だからデータシートはちゃんと日本語。
で、えーっと……ドレイン電流は……

25アンペアと書いてあるから、まあ、余裕でオッケーなんだろ、……多分w。
ぶっつけで繋いで壊すのもアレだから、まあ、一応回路図とか書いてみてですね……

それでまあ、ブレッドボードはこうなりますわな……。

で、そうだなあ……。他に給電回路もないから、Arduinoでテスト。まず、コードはこうして、2秒に1回くらい、ソレノイドをビクンビクンさせてみよう、と。
//
// 買ってきたソレノイドをドライブする。
// 佐藤俊夫
// 27.5.24(日) 1044~
//
const int FET = 9; // 2SK2232をデジタル9番に。
void setup() {
// put your setup code here, to run once:
pinMode(FET, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(FET, HIGH);
delay(1000);
digitalWrite(FET, LOW);
delay(1000);
}
で、コンパイルしてロード、Arduinoにつなぐと、まあ、こういう感じで、……
……調子よくカッチコッチと動く。
ところが、ここで大問題が(笑)。
こうやって、ソレノイドをデジカメのシャッターに押し当てると、……
……力不足で、シャッターが押せないのである。ええい、この根性なしソレノイドが!(笑)。

次は、電源を変えて、もうちっと力のあるソレノイドで押してみてやろうかい。うーん、デジカメのシャッターの押し強さって、秤かなにかで計るしかないな。うーむ。
昨日、日本ITストラテジスト協会関東支部の月例会をすっぽかしてしまった。
昨日、日本ITストラテジスト協会関東支部の月例会があり、テーマ別ディスカッションが私の仕事にもつながる内容だったので出たかったのだが、どういうわけだか日にちをすっかり来週の30日(土)と取り違えていて、出そびれてしまった。
しかし、昨日は次女の運動会だったので、仮に日にちを取り違えていなくても、月例会には出られなかったと思う。
来月もまたスケジュールが合わず、出られない。うーん、最近忙しいのう。