6 posts tagged with "説明資料"

View All Tags

回路図 説明資料

回路図とは、電子部品同士をどのように繋ぐのか図解したものです。

回路図があることで自分が見たときはもちろん、他の人に伝える時に間違えることなく電子回路を組み立てることができます。

回路図をみてみよう

回路図にもいろいろと種類があり、線と簡単な図形で描かれたものが一般的です。

このような回路図を読むことが出来るとインターネットにある様々な回路を組むことができます。 しかし、この様な回路図を初めて見るような方には難易度が高いです。 上の様な回路図を読みたい場合、他に説明してくれるサイトもありますのでそちらをご覧ください。

今回は、『Frizing』と呼ばれる回路図作成ソフトの回路図を見てみようと思います。 このソフトで描かれた回路図の特徴は、電子部品をイラストで表してくれるところです。

ボタンを押すとLEDが光る回路を組んでみました。

実は上のシンプルな図形の回路図とこのFrizingで書いた回路図は同じ意味をもっています。 多くの場合はシンプルな図形の方で表記されるため理解できるとよいとは思いますがこの図形ってなんだっけ?と思うことがあれば検索するようにすればよいと思います。

回路図でよくみる図

名称回路図記号説明
電源電池やUSBなどから供給される電気の供給源です。プラスとマイナスがあり、回路図では横に2本線があるうちの長い方がプラス、短い方がマイナスとなります。
コンデンサコンデンサは電気を蓄えたり放出したりする電子部品です。プラスマイナスの極性が決まっているものもあるので注意が必要です。
抵抗電流の流れを抑えることができます。LEDと一緒に使うことでLEDが焼けることを保護するこことができます。
スイッチオン、オフを切り替えすることができるものです。スイッチは様々なものがあり、どのようなことがしたいかでスイッチを変えるとよいです。
LED小さい電力で操作でき、光らせることができます。明るいものやマトリックス状になったものなどがあります。

デジタル、アナログ 説明資料

アナログ、デジタルと聞いて何が思い浮かぶでしょうか?

テレビもありますが、今回は電気的にデジタル、アナログの違いについて説明していきます。

アナログデジタルの違いって?

一番の違いはグラフにしたときに分かります。 これは電圧の変化のことを指します。

デジタルはある(1)ない(0)のどちらかでの表現のためシンプルなデータになっています。 これによってあるかないかはハッキリと見て分かるのですがもともとの値がどれくらい大きかったのか、小さかったのかは分からなくなってしまいました。

アナログであればどれだけ大きい、小さいのかは分かるのですがデータとしては大きいという状態になります。

マイコンでみるアナログ、デジタル

アナログ、デジタルがどの様なものか分かったところで、マイコン(Arduinoなど)でその値を取得する方法を説明します。

マイコンの種類により詳細な手順は変わるので注意してください。

アナログ、デジタルの入出力については、指定されたピンでやりとりします。

今回のプログラムについての説明は全てArduino Unoを対象にさせていただきます。

デジタル

入力

Arduino Unoで例えるとdigitalRead関数により、ある(HIGH)ない(LOW)を取得できます。 このときに注意しないといけないのが閾値の値です。

Arduino Unoの場合、閾値は2.5v以上になるとHIGHになり、それ以下はLOWとなります。この閾値はマイコンより異なるので注意が必要です。

スイッチなどを付けて、押された押されてないという状態を取得する場合、ノイズによって押していないのに押したと誤検知することがあります。 その時にはプルアップという方法をすることで誤検知を減らすことができます。

出力

Arduino Unoで例えるとdigitalWrite関数により、ある(HIGH)ない(LOW)を出力できます。

Arduino UnoではHIGHのとき5vが出力され、LOWのとき0vが出力されます。

アナログ

入力

Arduino Unoで例えるとanalogRead関数により、0(0v)-1023(5v)の1024段階で値を取得できます。

入力する電圧が5vを超える場合、抵抗で分圧をすることで入力することができます。

分圧については、検索していただくと計算してくれるサイトなどあるので参考にしてください。

出力

Arduino Unoではアナログ出力はできません。 しかしPWMと呼ばれる方式により、擬似的にアナログ出力をすることができます。 

PWMの出力方法はanalogWrite関数により可能となります。0(0v)-255(5v)の256段階で指定することが可能です。

それによりLEDをふんわり付けたりすることが可能です。

Grove 説明資料

Groveとは

Groveとは、seeed studioが開発している統一された端子で扱えるセンサーなどがあるモジュールのことです。

どのモジュールも端子に凹凸があるため初心者でも向きを間違えることなく扱えるメリットや手軽に差し替えることが出来るのでプロトタイピングするときにピッタリのものとなっております。

どんなものがあるの?

2017/2/1現在100以上もの周りの環境を取得するためのセンサ、サーボやファンなど動きのあるアクチュエータなどがあります。

今回はその中からどのようなセンサやアクチュエータなどがあるのか解説していこうと思います。

センサ(I2C)

I2C デジタル光センサ

GROVEシステムのI2C接続デジタル光センサです。

このセンサーの特徴は明るさを照度の単位であるlux(ルクス)でとれるところです。

アナログのセンサーでも明るさを取得する事はできますが、こちらは明確に数値として取得出来るので机の上が適切な明るさかアドバイスすることができたり、植物にちゃんと光があたっているかなど見ることができます。

TSL2561を搭載し、光強度をデジタル信号に変換します。 検出する光のスペクトラムを、赤外線,フルスペクトラム,人間の可視光の3つのモードから選択できます。

  • 検出モード選択可能
  • 高分解能16bitデジタル出力 400KHz I2Cファストモード
  • ダイナミックレンジ 0.1~40,000LUX
  • プログラム可能な割り込み機能(ユーザー設定可能な上下閾値)

I2C カラーセンサ

GROVEシステムのI2C接続カラーセンサです。

このセンサーの特徴は色を取得することが出来ることです。

色を識別して、果物を見分ける仕組みを作ってみたり、色によって処理を分けたりするものを作成する事ができます。

2行8列のフィルターされたフォトダイオードと16bitのADコンバータを内蔵しています。

  • 16bitデジタル出力 I2C 400KHz
  • SYNC拡張ピンによる外部光源とのシンクロ可能
    • プログラム可能な割り込み機能(ユーザー設定可能な上下閾値)

I2C 三軸加速度センサ

GROVEシステムの三軸加速度センサです。 ADXL345搭載。

通信方式はI2Cです。 特徴

  • 電源電圧:3V~5V DC
    • 高感度三軸加速度センサ
    • スタンバイモード時消費電力:0.1μA

センサ(アナログ)

水分センサ

GROVEシステムの水分センサです。 水分量による土中の抵抗値変化に応じてアナログ電圧を出力します。

※増幅回路やケーブルコネクタ部などがむき出しになっています。

使用される際は、センサ部分以外が濡れないようにご注意下さい

特徴

  • 電源電圧:3.3V~5V

音センサ

GROVEシステムの音センサーです。 マイクで拾った音声をオペアンプで増幅して出力します。

特徴

  • 電源電圧:4V~12V(標準5V)
  • 低自己消費電流:4mA(電源5V時)
  • ゲイン調整可能

センサ(デジタル)

PIRモーションセンサ

GROVEシステムのPIRモーションセンサです。 検出範囲内で動きがあると、SIGピンがHIGHになります。

  • 電源電圧:3~5V
  • 検出角度:120度
  • 検出距離:最大6m
  • 検出距離、ホールド時間調整可能

アクチュエータ

I2C OLEDディスプレイ128×64

これはOLEDと呼ばれる仕組みで作られたディスプレイです。 特徴としては明るく見やすいディスプレイとなっており、文字だけでなく図形などの表示も可能です。 通信方式はI2Cです。

##ジョイスティック

これはゲームなどでよく見られるジョイスティック型のセンサです。 前後、左右はもちろんクリックにも対応しており、ゲームのコントローラーとしてはもちろん、ラジコンやロボットの 制御の入力として扱うことができます。

X軸、Y軸がそれぞれの位置に応じたアナログ電圧で出力されます。 ステックを押し込んだ(ボタンが押された)場合、X軸に電源電圧が出力されます。 その間、X軸の位置は不明になります。

赤外線送受信

これは赤外線を制御できるものです。

今使われているテレビやエアコンなどのリモコンは赤外線で操作するため、赤外線を制御できるこれを使えば自分好みの学習リモコンを作成することができます。

受信

こちらで赤外線の信号を受けることができます。

送信

こちらで赤外線の信号を送信することができます。

MP3

これは、mp3の音楽を再生できるものです。

電子工作で音楽を流すのはひと手間かかるのですがこれは手軽に音楽を流せるため、普通の音楽はもちろん、警告音や説明音声を流すことができます。

なにと繋げられるの?

seeed studioから様々な変換基板が販売されており、変換基板を介して接続する時ことができます。

接続できるモノの一例です。

  • Arduino
  • Raspberry pi
  • mbed
  • Nefry
  • wio node
  • konashi

多くの基板が変換基板を介してではあるものの接続することができます。

センサー 説明資料

センサについて

センサとは、人の目や耳などの代わりに機械が周りの状況を取得するために使われる部品です。 音量を取得するものや明るさを取得するものなどその種類は多種多様で人が感じられるものはもちろん、人の感知することのできない微弱な信号を取得することができます。

1.どんなものを取得することができるのか

先ほど例に挙げた音量や明るさなどはもちろん、手のジェスチャーを取得するものやモノの色を取得するものなど本当に多種多様です。 センサによっては簡単に入手できないものもありしますので、今回はネットや秋葉原で電子部品を販売している秋月電子通商さんで扱っているものを基準にリストにまとめてみました。

  • 音量センサ
  • 距離センサ
  • 方位センサ
  • アルコールセンサ
  • 角度センサ
  • 圧力センサ
  • 放射線センサ
  • 加速度センサ
  • カラーセンサ
  • 明るさセンサ
  • 温度センサ
  • 湿度センサ
  • ジェスチャセンサ

秋月電子通商で扱っているセンサはこれだけではありませんが、目立ったセンサだけでもこれだけあります。 一般的にはこれらのセンサからの入力を使って他のモノを制御します。

2.センサの選び方

次にセンサの選び方について簡単に説明します。

例として 『大体100cm以内に人やモノが来たことを発見したい』 という前提で説明していきます。

まずはどのようなことを取得したいかをはっきりとさせ、目的の種類のセンサを探します。 今回は距離を測る目的のため今回は距離センサのページを開きます。 距離センサといっても複数の種類があります。 80cmまでしかはかれないものや5.5mまではかれるものなど様々です。 この中から今回の目的に向いたものを選んでみましょう。

この時に見るのがデータシートと呼ばれるセンサの性能が記載されている書類です。

それを読むのが一番詳しいことが書いてありよいのですが、とても詳しく書かれており、その内容を理解するのはなかなか難しいです。

もちろんデータシートを読めるようになるのは大切ですが、初心者の方にオススメする方法は秋月電子通商さんのセンサーごとのページに書かれている概要を読み、このセンサーで出来そうなモノにおおざっぱに目星を付け、センサの名前(例えば ○○) + 使いたいボード(例えばArduino)で検索をかけることをお勧めします。

そのような検索でサンプルプログラムや回路図が記載されているブログなどのサイトが見つかると思うのでその内容を読み問題なく使えそうであればよいと思われます。 全く見つからない場合はプログラムを1から作らないといけないので、そのようなものはなかなか扱えるようにするまでが大変ですのでオススメできません。 見つからない場合は、先ほどのデータシートをよく読みプログラムや回路を作成することで扱えるようになるのですが、少し難易度は上がりますので興味があれば試してみるのも面白いと思います。

先ほどの選び方で秋月電子通商で扱っている距離センサの中から、シャープ製のGP2Y0A02YKという型番のセンサをえらんでみました。

距離も0.2mから1.5mまで読めますし、検索すると複数のサイトが見つかりますので問題なく作成出来るでしょう。

他にもありますがこのセンサは距離の精度やお値段も安いのでこれでいいでしょう。

距離に精度が必要であれば別のセンサを使えばいいと思います。

3.センサーとマイコンのつなぎ方

センサを選んだあと、普通はセンサとマイコン(センサのデータを処理するところ)を繋げてプログラムを書き、他のモノと連携させていきます。

その繋げるということですが、どんな風に繋げることができるのか簡単に紹介していきます。

そもそもマイコンがなぜ必要かと言うと、様々なセンサで取得した値は電気信号であるので何らかの形で私たちが分かるようにしないと扱うことができません。 センサの値を受け取るのにお勧めなのはArduinoとよばれるマイコンボードが本やインターネットの情報が多くて困ったときに助かるので良いです。

先ほどセンサから電気信号で出ているといいましたが、アナログの値で出力されているものやある規則に沿って通信するものもあるので順に説明していきます。

アナログ

これはシンプルな圧力センサや明るさセンサでよくみられるものです。 電圧が徐々に変化するためこの情報を取得するのには多くは指定されたアナログ入力ピンに接続するのが前提になります。

##デジタル

これはHIGH or LOWの2つの状態を持つセンサです。 スイッチや人感センサなどで見られます。この情報はデジタル入力ピンで取得することができます。

I2C,SPIなど

これは特定の規格で通信できるセンサで、規格によっては複数のセンサを少ない制御線で制御出来たり、アナログのセンサなどに比べて明確な数値でセンサの値を入力出来るなどメリットがあります。 しかしプログラムが少し複雑になるためセンサごとにライブラリーが出回っていることが多いです。

USB 説明資料

USBはUSBメモリやスマートフォンの接続など様々なところで使われています。 その便利さゆえ電子工作でも多く使われています。

規格としてのusb

USBにはいろいろと規格があります。その中からよく使われるものを軽く説明していきます。

USB2.0

現在よく使われている規格です。 今後はUSB3.0などの次の規格が普及すると思いますが、電子工作でつかわれるとしては当分USB2.0になると思います。 USB3.0とは通信速度や供給電流などが異なります。

USB Type C

最近のスマートフォンやmacなどで採用され、普及しています。 裏表を気にすることなく扱える点が特徴です。

USB micro B

スマートフォンでよく見られる端子です。 注意点として充電専用のケーブルなどが出回っており、通信が出来ないことがあります。

USB B

プリンターやスキャナーでよく見られる端子です。 他の端子と比べ、大きいのが特徴です。

電子工作としてのusb

電子工作でUSBを扱う理由としては、主にpcなどの外部端末と通信するためです。 どのように扱うのか注意点を併せて説明していきます。

シリアル通信する

Arduinoなどで使われてるマイクロコンピューター(マイコン)でUSBを通じてプログラムの書き換えやデバッグなどの理由で通信する際には、マイコンがUSBと直接通信できる機能を持っていないことが大半です。

なので、USBとマイコンの間を取り持つモノが必要となります。 メジャーなのはFT232Cと呼ばれるICで通信することでPCからプログラムを書き込みが出来るようになります。

このあたりの詳しい内容はシリアル通信のページをご覧ください。

電源として使う

USBは5Vの電圧で動いており、モバイルバッテリーなどで1Aの電流を供給することが出来ます。 しかし、PCなどと接続する際には注意が必要になります。 なぜなら、PCなどのUSBでは最大500mAの電流までしか規格上対応しておらず、過電流などの万が一の場合にはPCに対して深刻な影響を与える可能性があるので気をつけて使用してください。

Arduino勉強会資料

ArduinoIDEをダウンロードする

https://www.arduino.cc/

こちらからダウンロードしましょう

早速Lチカしてみよう

ハードウエア入門しよう

// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}

LEDを繋いでみよう

向きを間違えないように!

本当はちゃんと抵抗を入れましょう。 LED 制限抵抗 で検索!

プログラムの解説 setup

起動したときやリセットを押した時に一度だけ呼び出されるのがsetup()の内容

// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}

プログラムの解説 loop

電源が入ってる時に何度も呼び出されるのがloop()の内容

// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}

プログラムの解説 digitalWrite

digitalWrite関数は、ピンの出力をHIGH or LOWに変更することができます。

digitalWrite(13, HIGH);

delay関数は、次のコードまで待つことができます。時間の単位はミリ秒です。 1000ミリ秒=1秒

delay(1000);

pinMode関数は、そのピンを入力ピンか出力ピンに指定することができます。

pinMode(13, OUTPUT);

for文を使ってみよう!

for文とは何度か繰り返したい処理をするプログラムを作成する時に便利なものです!

for(int i=1;i<=5;i++){繰り返したい処理}
for(初期値;継続条件;繰り返すたびに変化させたい値){繰り返したい処理}

ほかにもwhile文やdo~while文などが繰り返しさせることができます。

プログラム

実際に試してみようと思います。

for(初期値;継続条件;繰り返すたびに変化させたい値){繰り返したい処理}

リセットしたときにLEDを20回点滅させるプログラム

// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
for (int i = 1; i <= 20; i++) {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(100);
}
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}

if文を使ってみよう!

if文とは、Arduinoに指定した条件になったときだけある処理をしたいといった分岐したいときに使うものです。

if(条件式){実行したいもの}

プログラムはif文やfor文などの組み合わせでできています。 言語が違うもののスマホのアプリなども同じようにしてできています。

プログラム

スイッチが押されたときだけLEDが点滅するものをつくってみよう

// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
pinMode(8, INPUT_PULLUP);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait for a second
if (digitalRead(8) == LOW) {
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(100); // wait for a second
}
}

サーボを動かしてみる

サーボとは角度を指定して回すことができるモータです。 線にそれぞれ意味があるのでArduinoと接続を間違えないように!

プログラム

ArduinoIDEにプログラムを書いてみましょう

#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
for(pos = 0; pos <= 180; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for(pos = 180; pos>=0; pos-=1) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}

RGBLEDを動かしてみよう!

前もって、ライブラリをインストールしておきましょう!

プログラム

#include <Adafruit_NeoPixel.h>
// RGBLEDに出力するピン番号
#define RGBLED_OUTPIN 2
// Arduinoにぶら下がっているRGBLEDの個数
#define NUMRGBLED 1
// RGBLEDのライブラリを生成する(色指定はRGBの並びで行う、LEDの速度は800KHzとする)
Adafruit_NeoPixel RGBLED = Adafruit_NeoPixel(NUMRGBLED, RGBLED_OUTPIN, NEO_RGB + NEO_KHZ800);
void setup()
{
RGBLED.begin() ; // RGBLEDのライブラリを初期化する
RGBLED.setBrightness(50) ; // 明るさの指定(0-255)を行う
RGBLED.setPixelColor(0, 0,150,0) ; // 適度に明るい緑の色。(R=0,G=150,B=0)
RGBLED.show() ; // LEDにデータを送り出す
}
void loop()
{
}