2016年12月08日

Raspberry Piカメラ用ケースの作成 -第1回:概要、完成物

はじめに

お久しぶりです。今はRaspberry PiRaspberry Pi公式のカメラモジュールを使って、あれこれ試しています。
 

Raspberry Pi カメラモジュール V2

価格:4,680円
(2016/12/6 10:22時点)
感想(0件)

 

Raspberry Pi PiNoir カメラモジュール V2

価格:4,896円
(2016/12/6 10:24時点)
感想(0件)

 
公式カメラモジュールは普通の写真が撮れるPiカメラモジュールと赤外線も写せるPiNoIRカメラモジュールの2種類があります。私は夜間にも撮影ができるようPiNoIRカメラモジュールを買いました。図1がそのカメラで撮影した写真です。
 
blog01.jpg
図1 PiNoIRカメラモジュールにて撮影した写真
 
赤外線も写せるので色がおかしくなっていますが、カメラモジュールがあればRaspberry Piで写真を撮ることができます
 
カメラモジュールはRaspberry Pi基板上のコネクタと接続することで使うことができます。
ただ、カメラモジュールは基板がむき出しとなっており、Raspberry Pi公式ケースにカメラモジュールを取り付ける仕組みはありません。ですので、何も工夫をしなければカメラはどこにも固定されていない状態で使うことになります(図2)。
 
P2280857.jpg
図2 カメラモジュールの使用状態 
 
この状態ですとカメラの位置が固定されませんし、基板がむき出しなので破損の恐れもあります。ですので、3Dプリンターを使ってカメラ用ケースを作ります
 

目次

 

1. 概要、完成物

早速ですが、完成したカメラ用ケースが図3と図4、それをRaspberry Pi公式ケースに取り付けた状態が図5と図6です。
 
P2280859-2.jpg
図3 カメラ用ケース表 
 
P2280860-2.jpg
図4 カメラ用ケース裏
 
P2280848-2.jpg
図5 取り付け時1 
 
P2280847-2.jpg
図6 取り付け時2
 
カメラケースはRaspberry Pi公式ケースに取り付けられるよう作りました。
カメラケースを作るに当たって、以下のようなことを決めていました。
  • カメラの動作確認が出来ればよいので、カメラアングルは固定式とする
  • 持ち運びが容易となるように、公式ケースと一体化でき、突起物などは極力なくす
  • カメラケースは容易に着脱可能とし、公式ケースに加工は行わない
 
カメラケースの容易な着脱以外は条件を満たす物を作ることが出来ました。
理想はカメラケースの寸法が公式ケースの開口部にぴったりはまり、道具不要で着脱可能なことでした。ですがカメラケースの寸法を上手く調整できなかったため、結局テープを使って固定しました。
 

2. 部品構成

カメラケースを分解した状態が図7です。
 
P2280854.jpg
図7 カメラケース分解時
 
部品構成は表1の通りです。
 
表1 カメラケース部品一覧
名称 数量 備考
1 本体 1 3Dプリンターにて作成
2 スペーサー 4 3Dプリンターにて作成
3 ネジ 4 既製品 M2 8mm
4 六角ナット 4 既製品 M2
5 レンズ保護用フィルタ 1 既製品 iPhone6用
 
出来れば全ての部品を3Dプリンターで自作したかったのですが、カメラケースとカメラの固定はネジとナットを使いました。今思えば、カメラケースと公式ケースの固定もネジとナットですればよかった気もします。
カメラモジュールのキリ穴が2.2mmなので、ネジはM2のものを使用しました。長さは8mmとしましたが、10mmでもよかった気がします。
 
スペーサーの役割は高さ調整です。カメラモジュールとカメラケース本体の間に挟んで使います(図8)。
 
P2280869.jpg
図8 スペーサー拡大
 
カメラケース本体には六角ナットやフィルタ用のくぼみがあるので、ナットやフィルタはここに入れて使います。こうすることで、カメラケースから飛び出ることはありません(図9)。
 
P2280866.jpg
図9 レンズフィルタ・六角ナット拡大
 

まとめ

3Dプリンターと既製品を組み合わせて、カメラケースを作ることが出来ました。完成度は低いですが、カメラモジュールの動作確認くらいには十分使えます。
次回はカメラケースの設計過程の説明をしようと思います。
 

RaspberryPi3スターターキット!(本体 RS製)

価格:12,400円
(2016/12/8 13:06時点)
感想(1件)

posted by ました at 14:11| Comment(0) | TrackBack(0) | 電子工作の実践 | このブログの読者になる | 更新情報をチェックする

2016年09月26日

Raspberry Pi始めました。

お久しぶりです。
しばらくブログを更新していませんが、今はRaspberry Pi(ラズベリーパイ)を使って何かを作ろうとしています。
Raspberry PiはArduinoと似ている面があり、自分でプログラムを書いて、電子部品を動かすことができます。
 
図1と図2がRaspberry PiとArduinoの写真です。
 
P2280618.jpg
図1 Raspberry Pi(左)とArduino(右)の表面
 
P2280619.jpg
図2 Raspberry Pi(左)とArduino(右)の裏面
 
Raspberry PiをArduinoの違いを簡単にいうと、Raspberry Piはパソコンを小さくして入出力端子を付けたもの、Arduinoはマイコンに入出力端子を付けたものです。
Raspberry Piはパソコンですので、Linux OSなどを動かせます。そのため様々なプログラムを動かすことができ、ネットワーク経由の通信なども簡単にもできます。
一方、Arduinoはマイコンですので、省電力やリアルタイム性などの利点があります。
 
今まではArduinoだけを使ってきましたが、それだと作れる物の幅に限界があります。そのためRaspberry Piも使ってみようと思いました。
とはいえ、LinuxやWebなどの今までやったことのない知識が必要になるので、まだRaspberry Piを使った物は作れていません。
何か作れたら、ブログを更新しようと思います。
 

posted by ました at 17:49| Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする

2016年07月02日

フルカラーLED -第3回:カラーLEDの制御

はじめに

前回はカラーLED PL9823を動かすための回路を調べました。今回はPL9823を動かして見ます。
 

目次

 

1. 回路

図1がPL9823の基本的な回路です。
 
July01_回路図.png
図1 PL9823動作回路
 
電源ピンにはパスコンとして0.1[uF]のコンデンサ、データ入力ピンにはダンピング抵抗として33[Ω]の抵抗器を入れています。
あとはそれぞれのピンをArduinoと接続すれば動きます。
 

2. スケッチ

PL9823をArduinoで動かすにはGitHubに公開されているAdafruit NeoPixcel Libraryを使います。あとはサンプルスケッチをカラーLEDのRGBを指定すれば光らせることが出来ます。
とりあえずシリアル通信でRGBを設定できるスケッチを書きました。"R255"や"G064"、"B002"などとシリアル通信で送信すればRGBを設定できます。
 
// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// released under the GPLv3 license to match the rest of the AdaFruit NeoPixel library

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>
#endif

// Which pin on the Arduino is connected to the NeoPixels?
// On a Trinket or Gemma we suggest changing this to 1
#define PIN            6

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS      1

// When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals.
// Note that for older NeoPixel strips you might need to change the third parameter--see the strandtest
// example for more information on possible values.
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800); //NEO_GRBをNEO_RGBへ変更

char type, buf_val[4]="000";
int i, red, green, blue; //LED関連

void setup() {

  /*
  // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket
#if defined (__AVR_ATtiny85__)
  if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
  // End of trinket special code
  */
  Serial.begin(9600);

  red = 0;
  green = 0;
  blue = 0;
  pixels.begin(); // This initializes the NeoPixel library.
  pixels.setPixelColor(0, pixels.Color(red, green, blue)); // Moderately bright green color.
  pixels.show(); // This sends the updated pixel color to the hardware.
}

void loop() {

  if (Serial.available() >= 4) {
//  if (Serial.available() >= 5) {  //終端文字有りの場合
    type = Serial.read();
    for( i=0; i<3; i++ ){
      buf_val[i] = Serial.read();
    }
//    Serial.read(); //終端文字有りの場合
    switch(type){
      case 'R':
        red = atoi(buf_val);
        break;
        
      case 'G':
        green = atoi(buf_val);
        break;
        
      case 'B':
        blue = atoi(buf_val);
        break;
        
      default:
        Serial.println("Error");
        break;
        
    }

    Serial.print("R:");
    Serial.print(red);
    Serial.print(" G:");
    Serial.print(green);
    Serial.print(" B:");
    Serial.println(blue);

    pixels.setPixelColor(0, pixels.Color(red, green, blue));
    pixels.show(); // This sends the updated pixel color to the hardware.

  }

}
 
上記のスケッチでカラーLEDを光らせた写真を何枚か載せます。
 
P2280454.jpg
図2 R:255 G:255 B:255
 
P2280456.jpg
図3 R:255 G:0 B:0
 
P2280457.jpg
図4 R:16 G:0 B:0
 
P2280461.jpg
図5 R:16 G:16 B:0
 
このようにArduinoでPL9823の色や明るさを自由にいじることができました。
 

3. 活用

せっかくなのでカラーLEDを活用したインテリアっぽいものをつくりました(図6)。
 
P2280467.jpg
図6 作成物外観
 
外装は3Dプリントの造形物に塗装などを行い、作成しました。中にはカラーLEDを4つ入れています(図7)。
 
P2280463.jpg
図7 作成物中身
 
また、色をいちいち指定するのは面倒なので、電源を入れると勝手にフェード点灯/消灯を繰り返すようスケッチを書き換えました。
 
// NeoPixel Ring simple sketch (c) 2013 Shae Erisson
// released under the GPLv3 license to match the rest of the AdaFruit NeoPixel library

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>
#endif

// Which pin on the Arduino is connected to the NeoPixels?
// On a Trinket or Gemma we suggest changing this to 1
#define PIN            6

// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS      4

// When we setup the NeoPixel library, we tell it how many pixels, and which pin to use to send signals.
// Note that for older NeoPixel strips you might need to change the third parameter--see the strandtest
// example for more information on possible values.
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800); //NEO_GRBをNEO_RGBへ変更

char type, buf_val[4]="000";
int i, led, red, green, blue; //LED関連

void setup() {

  /*
  // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket
#if defined (__AVR_ATtiny85__)
  if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
  // End of trinket special code
  */
  Serial.begin(9600);

  red = 0;
  green = 0;
  blue = 0;
  pixels.begin(); // This initializes the NeoPixel library.
  for(led=0; led<NUMPIXELS; led++)
    pixels.setPixelColor(led, pixels.Color(0, 0, 0));
  pixels.show(); // This sends the updated pixel color to the hardware.
}

void loop() {

  i=0;
  while(i<256){
    Serial.println(i);
    red=i;
    green=i;
    blue=0;
    for(led=0; led<NUMPIXELS; led++)
      pixels.setPixelColor(led, pixels.Color(red, green, blue)); // Moderately bright green color.
    pixels.show(); // This sends the updated pixel color to the hardware.
    delay(100);
    if(i<16) i=i+1;
    else if(i<32) i=i+2;
    else if(i<64) i=i+4;
    else if(i<128) i=i+8;
    else i=i+16;
  }

  i=255;
  while(i>-1){
    Serial.println(i);
    red=i;
    green=i;
    blue=0;
    for(led=0; led<NUMPIXELS; led++)
      pixels.setPixelColor(led, pixels.Color(red, green, blue)); // Moderately bright green color.
    pixels.show(); // This sends the updated pixel color to the hardware.
    delay(100);
    if(i<16) i=i-1;
    else if(i<32) i=i-2;
    else if(i<64) i=i-4;
    else if(i<128) i=i-8;
    else i=i-16;
  }
  
  i=0;
  while(i<256){
    Serial.println(i);
    red=i;
    green=0;
    blue=i;
    for(led=0; led<NUMPIXELS; led++)
      pixels.setPixelColor(led, pixels.Color(red, green, blue)); // Moderately bright green color.
    pixels.show(); // This sends the updated pixel color to the hardware.
    delay(100);
    if(i<16) i=i+1;
    else if(i<32) i=i+2;
    else if(i<64) i=i+4;
    else if(i<128) i=i+8;
    else i=i+16;
  }

  i=255;
  while(i>-1){
    Serial.println(i);
    red=i;
    green=0;
    blue=i;
    for(led=0; led<NUMPIXELS; led++)
      pixels.setPixelColor(led, pixels.Color(red, green, blue)); // Moderately bright green color.
    pixels.show(); // This sends the updated pixel color to the hardware.
    delay(100);
    if(i<16) i=i-1;
    else if(i<32) i=i-2;
    else if(i<64) i=i-4;
    else if(i<128) i=i-8;
    else i=i-16;
  }
  
}
 
実際に動かしたものがこちらです。
 
 

まとめ

カラーLED PL9823をArduinoで制御でき、また3Dプリントと組み合わせることでインテリアっぽい物が作れました。
これでカラーLEDのシリーズは終わりです。また何かネタが出来るまでブログの更新はお休みします。
 

はじめての「123D Design」 [ nekosan ]

価格:2,700円
(2016/7/2 11:49時点)
感想(3件)

タグ:Led Arduino
posted by ました at 11:56| Comment(0) | TrackBack(0) | 電子工作の実践 | このブログの読者になる | 更新情報をチェックする

2016年06月30日

フルカラーLED -第2回:PL9823の調査2

はじめに

前回はカラーLED PL9823を動かすには電源ラインに外付け抵抗が必要なのか不要なのか分からないという話をしました。
今回は実験を行って、外付け抵抗の有無を調べます。
 

目次

 

1. 外付け抵抗有り

とりあえず外付け抵抗を付けた状態でカラーLEDを点灯させ、カラーLEDの電源波形を観察します。測定箇所は図1の通りです。
カラーLEDの色はRGBで指定できますのでR:192 G:128 B:64としました。
 
June30_カラーLED調査.png
図1 電源波形測定箇所
 
まずは100[Ω]を外付けして、波形を観察します。結果は図2です。
 
100orhm.png
図2 外付け抵抗100[Ω]時電源波形
 
図2より分かることはPL9823はPWMで色を調整しているということです。電圧が4段階ありますが、最も低い電圧のときは赤・緑・青が点灯、次に低いときは赤・緑が点灯、その次は赤のみ点灯、最も高いときは全て消灯しているものと思われます。
 
さて、次は外付け抵抗を47[Ω]にして波形を観察します。結果は図3です。
 
47orhm.png
図3 外付け抵抗47[Ω]時電源波形
 
電圧が4段階なのは100[Ω]時と同じです。しかし電圧が100[Ω]時と異なります。LED点灯時の電圧は100[Ω]時が2.8[V]〜3.4[V]なのに対して、47[Ω]時は3.2[V]〜4.1[V]と高いです。
仮にPL9823が抵抗を内蔵しておらずLEDだけであれば、外付け抵抗の値にかかわらず降下時の電圧は一定となるはずです。しかし、実験では外付け抵抗の値によって電圧に差が生まれました。
 
よってPL9823は抵抗を内蔵しており、外付け抵抗は不要の可能性が高いです。
 

2. 外付け抵抗無し

外付け抵抗は不要の可能性が高いので、外付け抵抗無しで実験を行います。とはいえ、外付け抵抗無しで実験を行って、過電流が流れると怖いです。
そこで、外付け抵抗有りの状態と無しの状態で電流値を測定し、過電流が流れないことを確認します。その結果が表1です。
 
表1 外付け抵抗と電流
 抵抗[Ω] 電流[mA] 
100  15.1 
47  16.5 
10  17.3 
17.5 
 
表1のように外付け抵抗無し(=0[Ω])でも過電流は流れませんでした。またPL9823に使われているカラーLED制御IC WS2811は18.5[mA]が標準ですので、外付け抵抗無しでの電流が標準に近いです。
ですので、PL9823は外付け抵抗無しで動かして問題なさそうです。
 
外付け抵抗無しでの波形が図4です。ノイズは多少乗っているものの5[V]で安定しており、特に問題はなさそうです。
 
0orhm_01.png
図4 外付け抵抗無し電源波形
 

まとめ

実験で外付け抵抗の必要性を調べたところ、PL9823に外付け抵抗は不要という結果が得られました。また、100[Ω]を外付けしたときはたまにカラーLEDが白く点灯しました。おそらく電圧降下によってカラーLEDの動作が不安定になっているものと思われます。
PL9823の外部回路が分かりましたので、次回はカラーLEDを動かします。
 

タグ:Led 回路検討
posted by ました at 16:41| Comment(0) | TrackBack(0) | 電子工作の実践 | このブログの読者になる | 更新情報をチェックする

2016年06月21日

フルカラーLED -第1回:PL9823の調査1

はじめに

今回からフルカラーLEDを3〜4回ほどかけて扱っていきます。フルカラーLEDとはその名の通り、様々な色を出すことができるLEDです。
今回は使うカラーLEDについて調べていきます。
 

目次

 

1. 部品の概要

使用するフルカラーLEDはPL9823-F5です(図1)。
 
I-08411.jpg
図1 フルカラーLED PL9823(秋月電子通商 通販コード:I-08411)
 
PL9823はWS2811(3ch LEDコントローラIC)を内蔵していると商品ページに書いてあります。おそらくPL9823はコントローラIC以外にもRGB各色のLEDなども内蔵しており、それらをパッケージ化して砲弾型LEDにしたのだと思われます。
PL9823をArduinoで制御するにはAdafruit製フルカラーLED NeoPixelのライブラリを使います。NeoPixelはWS2811を内蔵しているWS2812を使っているため、同じライブラリでPL9823を制御することができます。
  

2. 回路の矛盾

PL9823を使うには回路を組むようがありますが、PL9823のデータシートがよく分かりません。
図2の特徴の欄には一番下の行に「外付け部品は不要」と書いてあります。
 
2016-06-20.png
図2 PL9823の特徴(データシートより抜粋)
 
一方、図3の参考回路では抵抗器とコンデンサを外付けしています。
 
2016-06-20 (1).png
図3 PL9823の参考回路(データシートより抜粋)
 
電源(VCC)-GND間のコンデンサはパスコンだと思われますので、0.1[uF]程度を外付けすれば問題はないと思います。
問題は抵抗器です。外付け部品不要と謳っていて、ここに抵抗器を接続するのは不可解です。
 
そこでコントローラIC WS2811のデータシートを確認しました。すると、図4のように確かに電源ラインに外付け抵抗があります。
 
2016-06-20 (2).png
図4 WS2811の参考回路(データシートより抜粋)
 
ただ、図4を見てもPL9823の電源ラインに外付け抵抗が必要かどうかはわかりません。なぜなら図3のように外付け抵抗を接続しても図4と同じ回路にならないからです。
仮にPL9823が各LEDのみ内蔵し抵抗器を内蔵しておらず、外付け抵抗を接続したとすると、図5のような回路になります。
 
June20_カラーLED.png
図5 PL9823に外付け抵抗を接続した場合の予想図
 
図4では各LEDは+5[V]と直接接続されていますが、PL9823に外付け抵抗を接続すると図5のように+5[V]とLEDの間に抵抗器が挟まれることが推測できます。
 
PL9823の外付け抵抗が必要なのか不要なのかの調査が必要です
 

まとめ

フルカラーLED PL9823を使おうとしましたが、データシートからでは正しい回路が分かりませんでした。
次回は実験などからPL9823が動く正しい回路を調べます。
 

Adafruit NeoPixel Ring 12連フルカラーシリアルLED 【1643】

価格:1,128円
(2016/6/21 21:27時点)
感想(0件)

タグ:Led 回路検討
posted by ました at 21:27| Comment(0) | TrackBack(0) | 電子工作の実践 | このブログの読者になる | 更新情報をチェックする