買ってきたソレノイド

投稿日:

 昨日千石電商で5Vのソレノイドを見つけ、買ってきた。ソレノイドは「引き」の製品が多く、電圧も6Vとか12Vが多い。「5Vで押し」のは珍しいので、650円で高かったのだが、買った。

 何がしたいかと言うと、デジカメのシャッターをソレノイドで押したりしたいのである。

 とりあえず、小さいからそんなに何アンペアも流れるもんじゃないだろ、適当なFETか何かでスイッチしてやればいいんだろ、くらいの考えで、東芝の2SK2232、こちらは130円くらいのモンで、それも一緒に買った。

 家へ帰って千石電商のサイトにあるソレノイドのデータシートを見たが、中国製で、どうも要領を得ない。何アンペア流せまっせ、とか書いてない。

 うーん、計れ、ってかい(笑)。

 適当にテスター当てると、35Ω。E=IR、I=E/R。140ミリアンペア。……って、んなわけあるかい(笑)。

 中国のメーカーのサイトデータシートを見ると、4.5Ω、1.1Aと書いてあるから、多分そうなんだろう。しかし、ソレノイドって、「押しはじめ」と、「押し持続」で、電流が違うように思うんだが、……まあ、いいか。

 一方、買ったFET、2SK2232は、というと、東芝製だからデータシートはちゃんと日本語。

 で、えーっと……ドレイン電流は……


2SK2232定格

 25アンペアと書いてあるから、まあ、余裕でオッケーなんだろ、……多分w。

 ぶっつけで繋いで壊すのもアレだから、まあ、一応回路図とか書いてみてですね……

IMG_2873

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

IMG_2874

 で、そうだなあ……。他に給電回路もないから、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につなぐと、まあ、こういう感じで、……

……調子よくカッチコッチと動く。

 ところが、ここで大問題が(笑)。

 こうやって、ソレノイドをデジカメのシャッターに押し当てると、……

……力不足で、シャッターが押せないのである。ええい、この根性なしソレノイドが!(笑)。

DSC_0130

 次は、電源を変えて、もうちっと力のあるソレノイドで押してみてやろうかい。うーん、デジカメのシャッターの押し強さって、秤かなにかで計るしかないな。うーむ。

gooブログと雨だれ

投稿日:

 そういや、気に入らなくてやめたgooブログ。

 前にOCNブログ人が廃止されてしまって、仕方なしにgooブログへ行ったのだが、演奏データやファイルが扱えなかったりして気に入らないのでやめてしまった。

 その検索インデックスなんかがまだGoogleに残っていたりして気に入らないが、どうにもしようがない。

 しかしその時に、一応「記念動画撮っとこう」と思って、雨だれ弾いて上げてはいたのであった。



 ところどころ間違っているのだが、「まあ、ええわ(笑)」ぐらいのユルい弾きっぷりである。

労働讃歌

投稿日:

 「埼玉ゴズニーランド」など聴いていて、そこからつながって知ったのだが、次女が好きな「ももいろクローバーZ」が歌い踊る「労働讃歌」という曲は、大槻ケンヂの作曲であるそうな。

 確かに言われてみればなにやら筋少的世界観だな、と思われる。



3色LEDをパルス幅変調

投稿日:

 Arduinoの入門キットには3色LEDがついているので、これを光らせて遊ぶ。チカチカでは面白くないから、各色にパルス幅変調をかける。変調は正弦波でかけ、各色の位相をちょっとづつずらしていろんな色にする。



で、それじゃ、IoT風味で

投稿日:

 で、私がやりたかったのはコレなんである。

……つまり、このオモチャを、インターネットにつなぐ。これがやりたかった。

 あとはもう、

「メールが来たら旗があがる」

とか、

「録画が終わったら、人形が手を上げる」

とか、もう、なんぼでもアレンジ可能である。

 チナミに、Linuxだとこういうことをするのに大したことは書かなくてよく、

tail -n 0 -f /var/log/httpd/access_log | grep --line-buffered 'HTTP/1.1\" 200' | sed --unbuffered -e 's/..*/1/' >/dev/ttyACM0

……ぐらいの「ワン・ライナー」で済んでしまう。

 Arduino側のソースコードは、結局最終的には

//
//  シリアルからサーボを制御
//    佐藤俊夫
//    27.05.01(金) 0946~
//
#include <Servo.h>
//
Servo flag;
int incomingByte = 0;
const int FLAGOFF = 5;
const int FLAGON = 90;
//
void setup() {
  flag.attach(9);
  flag.write(FLAGOFF);
  Serial.begin(9600);
}

void loop() {
  if(Serial.available() > 0){  //  もし受信したデータが存在したら
    incomingByte = Serial.read();
    if(incomingByte == '1'){
      flag.write(FLAGON);
    }else if(incomingByte =='0'){
      flag.write(FLAGOFF);
    }
    Serial.flush();
    delay(1000);
  }    
}

……ぐらいの、お気楽な感じのモノになった。



サーボが動かせたら、次は……

投稿日:

 次も、やることは決まっている。サーボが動かせたら、今度はそれをPCにつなぎ、シリアルから制御するのだ!

 ここでは、キャラクタ「’1’」を送信したら旗が立ち、それ以外だったら旗が降りる。

 やり方はカンタンだ。

  1.  サーボをArduinoにつなぐ。教科書通り電源をVinに、黄色をデジタル9番ピンに、茶色をアースに
  2.  プログラムを書く。
    //
    //  シリアルからサーボを制御
    //    佐藤俊夫
    //    27.05.01(金) 0946~
    //
    #include <Servo.h>
    //
    Servo flag;
    int incomingByte = 0;
    const int FLAGOFF = 0;
    const int FLAGON = 90;
    //
    void setup() {
      flag.attach(9);
      flag.write(10);
      Serial.begin(9600);
    }
    
    void loop() {
      if(Serial.available() > 0){  //  もし受信したデータが存在したら
        incomingByte = Serial.read();
        if(incomingByte == '1'){
          flag.write(FLAGON);
          Serial.println(incomingByte, DEC);
        }else{
          flag.write(FLAGOFF);
          Serial.println(incomingByte, DEC);
        }
        Serial.flush();
      }    
    }
    
    
  3.  IDEのシリアルモニタから「1」やその他の文字を入力・送信する。