それで、デジカメの電池がなくなるまでベランダ写真をとり、雲の流れる動画にした。
しかし、今日は良く晴れていて、雲があまりないので、いまいち雲が流れる感じはしないのであった(笑)。
オッサンは生きている。
それで、デジカメの電池がなくなるまでベランダ写真をとり、雲の流れる動画にした。
しかし、今日は良く晴れていて、雲があまりないので、いまいち雲が流れる感じはしないのであった(笑)。
先週、Arduinoを使ってデジカメのシャッターを切る遊びがやりたくて、ソレノイドでやろうとしたら、ソレノイドの力不足でうまくいかなかった。
よく考えてみたら、最初に買った入門キットの中に小さいサーボがあり、これは力があるからシャッターぐらい押せるだろう、と思って工夫した。
そうしたら、うまくいった。こんな具合である。
ネットワーク経由で動くようになっており、そのプログラムは次の通りである。
// // WebServerでサーボを動かし、カメラのシャッターを切る。 // 佐藤俊夫 // 27.5.30(土)1300~ // #include <SPI.h> #include <Ethernet2.h> #include <Servo.h> byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0xF6, 0x74 }; IPAddress ip(192, 168, 1, 129); EthernetServer server(80); Servo shutter; const int SERVO = 9; void setup() { Ethernet.begin(mac, ip); server.begin(); shutter.attach(SERVO); shutter.write(90); } void loop() { String recvbuf; EthernetClient client = server.available(); if (client) { boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); recvbuf += c; if (c == '\n' && currentLineIsBlank) { 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>"); break; } if (c == '\n') { currentLineIsBlank = true; if(recvbuf.indexOf("POST") == 0){ shutter.write(50); delay(5000); shutter.write(90); } recvbuf = ""; } else if (c != '\r') { currentLineIsBlank = false; } } } // give the web browser time to receive the data delay(1); client.stop(); } }
Google AdSenseから「PINを送信してチョ」という案内状が来たので、へいへい、という具合でログインしたら、先月のYoutubeの収益が9千円ほどあるから受け取れい、と表示された。
ほほー、これはありがたい、と思ったが、どの動画がそんなに見られたのか、よくわからない。
次に、昨日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」とメニューを操作していくとサンプルコードが出てくる。
……このように、けっこういろいろなものが入っている。今日は一番下の「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につなぐと、まあ、こういう感じで、……
……調子よくカッチコッチと動く。
ところが、ここで大問題が(笑)。
こうやって、ソレノイドをデジカメのシャッターに押し当てると、……
……力不足で、シャッターが押せないのである。ええい、この根性なしソレノイドが!(笑)。
次は、電源を変えて、もうちっと力のあるソレノイドで押してみてやろうかい。うーん、デジカメのシャッターの押し強さって、秤かなにかで計るしかないな。うーむ。
素晴らしい芸。
そういや、気に入らなくてやめたgooブログ。
前にOCNブログ人が廃止されてしまって、仕方なしにgooブログへ行ったのだが、演奏データやファイルが扱えなかったりして気に入らないのでやめてしまった。
その検索インデックスなんかがまだGoogleに残っていたりして気に入らないが、どうにもしようがない。
しかしその時に、一応「記念動画撮っとこう」と思って、雨だれ弾いて上げてはいたのであった。
ところどころ間違っているのだが、「まあ、ええわ(笑)」ぐらいのユルい弾きっぷりである。
「埼玉ゴズニーランド」など聴いていて、そこからつながって知ったのだが、次女が好きな「ももいろクローバーZ」が歌い踊る「労働讃歌」という曲は、大槻ケンヂの作曲であるそうな。
確かに言われてみればなにやら筋少的世界観だな、と思われる。
朝っぱらから筋肉少女帯のなつメロを聴いて茫然自失していたが、気を取り直して、デフォルトのモードに移行だ(笑)。