© Presentation Design
© Presentation Design
© PUREYES © PUREYES
はじめての電子工作&プログラミング
UNO R3 速習キット
[ 学習教材 V116 ]
https://www.pureyes.net/
はじめに
はじめてのUNO R3速習キットをお買い上げいただき誠に有難うございます。
この解説書は初学者の方がすばやく学習できるように、実験主体で解説しています。
ぜひ、どんどん見て触って、ときにはいじくり回して進めていっていただければ著者といたしましても本望 です。
LINEサポート窓口
≫ https://lin.ee/3qvAwiFGB
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
2
Lessonは0~
14
までございますが、キットの種類によってご参照いただくLesson
が 異なりますので、下記より対象のレッスンをご確認ください。キット名 適応
Lesson
関連書籍はじめての
UNOR3
速習キット(
Part1
)Lesson0
~Lesson8 Arduino
をはじめよう第3
版はじめての
UNOR3
速習キット(
Part2
)Lesson0
~lesson3
※
Part
2にはボールスイッチが 付属しませんのでボールス イッチの配線は不要です。ス ケッチはそのままご利用くださ い。Lesson5
Lesson9
~Lesson14
Arduino
ではじめる電子工作超 入門Part
1のキットは“Arduino
をはじめよう第3
版”
(オライリージャパン社発行)Part2
のキットは“Arduino
で始める電子工作超入門“
(オーム社発行)で扱われている部品を集めておりますのでこの書籍と合わせて学習することで、より深い学習が可能で す。
部品はすべてハンダ付け済、またリレーや温度センサ等は周辺部品を実装済のモジュール品を採用す ることで最小の作業で学習を進められるようになっています。
必要な部品と解説書(本誌)がそろっています。
次に、キットの特徴である【簡単】【すぐにはじめられる】【深く学べる】について 解説いたします。
【簡単】
【すぐにはじめられる】
【深く学べる】
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
4
Arduinoについて
Arduino(アルデュイーノ)は、ハードウェアである「Arduinoボード」、と
ソフトウェアである「スケッチ」、スケッチを作製しハードに書き込むための環境としての「 Arduino IDE 」から構成されるシステムです。
Arduinoシリーズには Arduino Nano や Arduino MEGA などたくさんの種類があり、Arduino UNO R3 はもっとも標準的なボードです。
≪
Arduino
公式ボード≫また、Arduinoはハードウェア設計もソフトウェア製品もオープンソースであるため多くのArduino 互換機が 存在します。
このキットに付属するUNO R3ボードはArduino UNO R3ボードの完全互換品です。
≪ アルディーノIDEとスケッチ ≫
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
6
目次
はじめに ・・・・・・・・・・・・・・・・・・・・・・・・・・・
1 Arduino
について ・・・・・・・・・・・・・・・・・・・・・・・4
目次 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・7
Lesson 0 Arduino IDE
のインストールと初期設定をしよう ・・・・・9 Lesson 1 “UNO“
を動かしてみよう ・・・・・・・・・・・・・・・19
Lesson 2
外部LED
を光らせよう ・・・・・・・・・・・・・・・・・29 Lesson 3
光センサでLED
光量を変化させよう ・・・・・・・・・・40 Lesson 4
ファンモータを動かそう・・・・・・・・・・・・・・・・49
Lesson 5 RGB_LED
の色を変化させよう ・・・・・・・・・・・・・58 Lesson 6
温度センサと通信してみよう ・・・・・・・・・・・・・66
Lesson 7 RTC
で時間を取得する ・・・・・・・・・・・・・・・・82
Lesson 8 RTC
を使って好きな時間に水を流す ・・・・・・・・・・90
Lesson 9
サーボモーターを動かそう ・・・・・・・・・・・・・・100
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
8
Lesson 10
人体検知をやってみよう ・・・・・・・・・・・・・・・106
Lesson 11
モーター駆動IC
を使って正転、逆転の制御をやってみよう ・111 Lesson 12 I2C
通信で温度と湿度を取得表示してみよう ・・・・・・・119 Lesson 13 LCD
で文字を表示させよう ・・・・・・・・・・・・・・127
Lesson 14
イーサネットシールドを使ってウエブサーバーを構築しよう ・132
LESSON 0ARDUINO IDEのインストールと初期設定をしよう
Arduino のプログラム(スケッチ)を作成し、書き込むためのソフトウェアをダウンロードしましょう。
https://www.arduino.cc/en/software
から、対応OSに合わせたファイルをクリックします。© Presentation Design
© Presentation Design
© PUREYES © PUREYES
LESSON 0ARDUINO IDEのインストールと初期設定をしよう
10
寄付をするか尋ねられるので、どちらかを選んでダウンロードします。
JUST DOWNLOAD
を選べば寄付なしでも使用できます。LESSON 0ARDUINO IDEのインストールと初期設定をしよう
ダウンロートドしたArduino***.exeファイルを開くとインストールが開始されます。 下記画面が出てきたら Closeボタンを押してインストール完了です。
5)
それでは先程インストールしたArduino IDEを開いて初期設定を行いましょう。© Presentation Design
© Presentation Design
© PUREYES © PUREYES
LESSON 0ARDUINO IDEのインストールと初期設定をしよう
12
まずはUNO基板をUSBケーブルでPCと接続します。
Arduino IDEのアイコンがデスクトップにできていますのでこれを開きます。
LESSON 0ARDUINO IDEのインストールと初期設定をしよう
英語表記になっている場合は日本語に変更しておきましょう。
メニューからFile
→ Preference → Editor language
のリストから日本語を選択します。一度Arduino IDEを閉じてからもう一度起動すると日本語表記に変わっています。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
ボードの選択
14
次にボードの選択です。
実はArduinoはUNOの他にも様々な種類のボードが有りますので、まずこれを選択
しなければなりません。
メニューからツール→ボードとポイントしていきArduino/Genuino Unoまたは
ArduinoUnoを見つけてクリックしてください。
ボードの選択
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
ボードの選択
16
最後にシリアルポートの設定です。
メニューからツール→シリアルポートとポイントしていきArduino/Genuino Uno の表記があるCOMポートを見 つけてクリックしてください。
これで初期設定は終わりです。 次はいよいよ実際にUNOを動かしてみましょう。
ARDUINO IDE 公式ヘルプ
Arduino IDEのヘルプにはインストール方法、ソフトの使い方、トラブルシューティング、リファレンス(Arduino のプログラム言語であるスケッチについての説明)がまとめられていて非常に有益です。困った時やもっとい ろいろ知りたいと思った時はぜひこちらを参照されることをおすすめします。
ただしこれらはすべて英語で提供されていますのでGoogle Chrome ブラウザをお使いの方はページ翻訳機 能を使って日本語にすると楽に読み進められます。
ヘルプ
Google Chromeブラウザの翻訳機能
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
ARDUINO IDE 公式ヘルプ
18
≪
ARDUINO
公式ホームページ≫https://www.arduino.cc/
≪ARDUINO公式資料 日本語版リンク≫
http://www.musashinodenpa.com/arduino/ref/
LESSON 1 “UNO”を動かしてみよう
Lesson0でインストールしたArduino IDEというソフトにはじめから入っているサンプルスケッチを実際に UNOに書き込んでUNO基板上のLEDをon/offさせてみましょう。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
部品解説
20
UNO R3ボード
USB端子 電源入力(7~12V)
USB端子を使用していないときにここ から電源を供給することでPC無しで 動作させることができます。
TX, RX
プログラム書き込み時等、
通信をしている時に光る LEDランプです。
TX :送信 RX:受信
電源端子
50mAまでの電流を 供給できます。
アナログ入力端子
A4,A5はI2C通信にも 使用できます。
A4 :SDA A5 :SCL
リセットボタン L
LEDランプです。
デジタル13番出力端子と連動し ています。
デジタル入出力端子
各ピンはソフトの設定で入力にも 出力にも設定ができます。
また、~マークが付いている 3,5,6,9,10,11番はPWM出 力が可能です。
出力として使用するときは
40mAまでの負荷を駆動できます
部品解説
今回の接続はPCとUNO基板をUSBケーブルで接続するだけです。
接続図
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
22
それでは Arduino IDE に含まれているサンプルスケッチの呼び出しと、UNO への書き込みについて解 説していきます。
サンプルスケッチの読み込み
メニューからファイル→スケッチ例→01.Basics→Blinkをクリックしてください。
スケッチ
UNOへの書き込み
Arduino IDEの ボタンを押すとボードへスケッチが書き込まれます。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
24
指定された時間待機します。単位はミリ秒(1/1000 秒)ですので、delay(1000); は 1 秒の待機になりま す。
≪エラーが出たときの対応≫
コンパイルエラーが発生する場合
・この場合多くはプログラムに全角の文字やスペースが含まれている場合です。
全角が含まれている場合は半角に変更してください。
(後述する // や /* */ を使った注記部分は全角でも問題有りません)
書き込めない場合は下記点を確認して下さい。
・正しいシリアルポートが選択されているか?
・ボードに Arduino/Genuino UNO が選択されているか?
それでもエラーとなる場合、下記を試してみて下さい。
・Arduino を接続している USB ケーブルを抜き差しする。 可能であれば別のケーブルに変更する。
・Arduino IDE を閉じて起動しなおす。
・PC を再起動する。
スケッチ
スケッチ解説
はじめにスケッチの基本について説明します。
・スケッチには動作の説明やメモ書きといった、コメントを書いておく事が出来ます。
// に続けてテキストを書くと、// 以降行末までがコメントになります。
/* */ でテキストを囲む事で、その間のテキストがコメントになります(間のテキストは複数行記述でき ます)
・各命令の最後には必ず「;」を付けます。
・setup() は Arduino 起動時に一度だけ実行されます。ここで初期化等の準備のための命令を記述してお きます。Arduino は setup()を一度実行した後、loop() を繰り返し実行します。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
26
スケッチ
スケッチ
サンプルスケッチの Blink の内容について説明します。
setup関数は{ }の間に書かれた命令をArduino起動時一度だけ実行します。
PinMode関数は指定したピンをインプット用にするかアウトプット用にするかを設定します。
※ LED_BUILTIN は LED が接続されているデジタルピン 13 を表しており、
pinMode(13, OUTPUT) ; と同等です。
loop関数は{ }に書かれた命令を繰り返し実行します。
digitalWriteコマンドは指定したピンをHIGH(5V)にするかLOW(0V)にするかを設定します。
delay関数は指定された時間待機します。
単位はミリ秒(1/1000 秒)ですので、delay(1000); は } 1 秒の待機になります。
※ ここを変更することで簡単に点滅時間を変更できます。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
28
動作確認
接続とスケッチの書き込みが終わって基板上のLと書かれたオレンジ色のLEDが点滅していたら成功で す。
また、スケッチのdelay(1000)の1000を500や2000に変更するとLEDの点滅間隔が変わりますのでやって みましょう。
LESSON 2外部LEDを光らせよう
概要
外付けLEDを光らせることを通じてDIGITAL出力ピンの使い方を学びましょう。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
部品の説明
30
LED(Light Emitting Diode 発光ダイオード)
足の長さに違いが有り、長い方がアノード、短い方をカソードと呼びます。
アノードをプラス、マイナスをプラスに繋いで使用しますが直接接続すると定格電流を超えてしまいます ので必ず直列に抵抗を入れましょう。
抵抗値はLEDの順方向電圧、定格電流、電源電圧の3つがわかれば下記のように計算できます。
順方向電圧2V、定格電流0.02A、電源電圧5Vの場合、
(5V-2V)÷ 0.02A=160Ωで160Ω以上の抵抗をつければOKです。
今回は入手性の良い220Ωを選択します。
ちなみに220Ωの場合電流は(5V-2V)÷ 220Ω=13.6mAになります。
Anode(+) Cathode(-)
オームの法則
名前 式 単位
I(電流) I=V/R A(アンペア)
R(抵抗) R=V/I Ω(オーム)
V(電圧) V=IR V(ボルト)
V
I
R
÷ ÷
×
部品の説明
抵抗値が大きければ暗くなり小さければ明るくなります。
壊れますので定格より小さい抵抗はダメですよ。
順方向電圧(VF):LED の両端に加わる電圧 定格電流(IF):LED に流す電流
電源電圧:Arduinoの電源ピンから出力される電圧 5V
電子部品の特性はインターネットに多数公開されているデータシートを見ると わかりますので検索してみてください。
順方向電圧:LED の両端に加わる電圧 定格電流:LED に流す電流
電源電圧:Arduino のピンから出力される電圧、
常に 5V
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
部品の説明
32
ブレッドボード
GNDに利用
電源ラインに利用
たくさんの穴が2.54mm間隔で空いていてここに電子部品を差し込むことでハンダ付け等無しで電気配 線ができる、電子工作の実験に便利なボードです。
内部は電気的に下記の様につながっています。外側
2
列は横方向につながっており、主に電源用とし て利用します。上下は横一列が つながっている
横の列が つながっている
上下は別
信号線に利用
部品の説明
抵抗
電気回路の電流や電圧を変えたりと地味だけど実は重要な部品です。
このレッスンではLEDに流す電流を決めています。
【 本キットで使用している抵抗 】
200Ω(Part2) 220Ω(共通) 470Ω(共通) 1KΩ(共通) 5.1KΩ(共通) 10KΩ(共通)
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
部品の説明
34
抵抗にはカラーコードと呼ばれる帯が付いておりこれを読むことで抵抗値や抵抗値のばらつき精度や温度特 性が分かります。
カラーコードは帯が4つ、5つ、6つのものが有り、それぞれ下図のように読むことができます。
接続図
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
回路図
36
スケッチ
※お気づきの方もおられるかもしれませんが、このスケッチでもLesson1の時 に見た基板上のLと書かれたオレンジLEDも光ります。なぜでしょうか?
実は13番ピンと基板上のL(LED)はつながっているのです。
試しにLesson1で使ったスケッチをもう一度書き込んでみてください。
13番ピンの記述はスケッチ上なにも有りませんが13番と接続したLEDは光りましたね。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
38
“int”は2バイト整数(-32,768~32,767)の変数を扱う時に使うデータ型です。
この場合変数名LEDが13と指定されています。
よってこれ以降LEDという文字が出てきたものはすべて13と置き換えられます。
※Lesson1のスケッチにあるLED_BUILTIN はArduino IDE内部で13と定義されています。
どちらのスケッチも「pinMode(13, OUTPUT);」と同等になっています。
動作確認
接続とスケッチの書き込みが終わって13番ピンとつながっているLEDが点滅していたら成功です。
また、スケッチ1行目の int LED = 13 ; の13を他の出力ピンの番号に変更してLEDの位置も変更すると別の 出力からもLEDを制御できますので練習にやってみましょう。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
LESSON 3光センサでLED光量を変化させよう
40
概要
光の量によって抵抗が変わるCdSセルをアナログ入力に、LEDをアナログ出力に接続します。
CdSセルを手で覆って暗くしたり強い光を当てたりしてLED光量を変化させましょう。
また、シリアルモニタを使ってアナログ入力の数値の変化を確認します。
部品の説明
CdSセル
光の量で抵抗値が変わる素子です。
これに抵抗と電源をつなげてその分圧される電圧を測定することで光の強弱を知ることができます。
昔のフィルムカメラで光量の測定によく使われていました。
ボールスイッチ ※Starterkit Part2には付属しません 傾けるとスイッチが開になるスイッチです。
中に鉄球等が入っていてこれが移動することで接点が開になったり閉になったりします。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
接続図
42
※Starterkit Part2にはボールスイッチは付属しませんのでR1は直接D9に接続してください。
回路図
※Starterkit Part2をご購入の方はボー ルスイッチが付属しませんのでR1は直 接D9に接続してください。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
44
回路とスケッチの書き込みが終わったらシリアルモニタを起動してみましょう。
Arduino IDEの上右にある虫めがねのようなアイコンをクリックするとシリアルモニタが開きます。
まずはシリアルモニタ下にあるボーレートのリストから9600bpsを選びましょう。
するとCdSセルとつながっているUNO基板のA0端子の値がどんどん表示されていくのが見えると思い ます。
スケッチ解説
このレッスンの最後で解説するシリアル通信をする際の通信速度設定です。
9600bps(bits_per_second)で通信します。
val の値をシリアルモニタに表示させる設定です。
アナログ入力ピンに 0 を指定してこの値を val という変数に代入しています。
9 番のピンをアナログ出力として val ÷ 4 の値を出力値として設定しています。
アナログ出力に設定可能な範囲は 0~255 です。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
シリアルモニタ
46
回路とスケッチの書き込みが終わったらシリアルモニタを起動してみましょう。
Arduino IDEの上右にある虫めがねのようなアイコンをクリックするとシリアルモニタが開きます。
シリアルモニタ右下にあるボーレートのリストから9600bpsを選ぶとCdSセルとつながっているUNO基板のA0端 子の値がどんどん表示されていくのが見えると思います。
シリアルモニタ起動アイコン
シリアルモニタ
シリアル通信速度設定 アナログ入力0(
CdS
セル出力)の値0
~1023
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
動作確認
48
接続とスケッチの書き込みが終わったらCdSセルを手で覆って光をさえぎってみましょう。
シリアルモニタの値は小さくなりましたでしょうか?
今回のスケッチではこの値が小さくなるとLEDとつながっているD9端子の出力が弱くなるようにプログラムしま したのでCdSセルに入る光量に従ってLEDの光量が変化することを確認してみてください。
また、おまけでボールスイッチも付けましたのでボールスイッチを傾けたときにLEDが消灯することも合わせて 確認してください。
※Starterkit Part2にはボールスイッチは付属しません。
スケッチはそのままご使用になれます。
LESSON 4ファンモータを動かそう
概要
大きな電流が必要なファンモータを駆動させる方法を学びます。
また、ボリュームを回してファンの風量を変えてみましょう。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
部品の説明
50
130FA DCモーター
モーター&プロペラ
DC3V 0.2A 定格のモーターです。最大6Vまでの電圧で使えます。
部品の説明
FET(2SK2232)
モーター等大電流が必要な場所に使う半導体スイッチです。
1番(ゲート)-3番(ソース)ピン間に電圧をかけると2番(ドレイン)
-3番ピン(ソース)間が導通し、最大25Aの電流を流すことができます。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
部品の説明
52
可変抵抗(10kΩ)
ノブを回すことで0~10kΩの間で抵抗値を自在に変化させることのできる可変抵抗です。
下の回路の通り、ボリュームノブを回すと抵抗値が1-2番間と3-2番間の抵抗値が逆向きの変化量で0 ⇔ 10KΩに変化します。
例えば1-2番間を3KΩにすると2-3番間は7KΩになります。
接続図
※コンデンサとダイオードはノイズ対策用ですので無くても動作します。
※コンデンサは足が短いのでオスメスのケーブルを足して接続してください。
※電池ボックスのリード線は線径が細いのでICクリップ経由でブレッドボードに
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
回路図
54
スケッチ
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ解説
56
可変抵抗とつながっているアナログ入力の値をvalという変数に格納します。
モーターとつながっている 9番ピンの出力を上記valの値から決めています。
動作確認
接続とスケッチの書き込みが終わったらボリュームを回してモーターの回転数が変化するか確認してみてくださ い。
また、シリアルモニタを開くとボリュームとつながっているアナログ入力の値が表示されるのでモニタしてみましょ う。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
LESSON 5RGB_LEDの色を変化させよう
58
概要
RGB_LEDは赤、緑、青を発光させることのできる素子です。
これは光の3原色といってこれらの色を混ぜ合わせることによって様々な色を作り出すことができま す。テレビの画面なんかも同じ原理ですね。
Arduinoのアナログ出力を3つ使っていろいろな色をつくってみましょう。
光の3原色
部品の説明
RGB_LED
マイナス接続用の端子と3本の端子が出ています。
それぞれの端子から電流を流すと、それぞれR(赤)G(緑)B(青)の色に発光します。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
接続図
60
回路図
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
62
スケッチ
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
64
スケッチ
void setColor(int red,int green,int blue); は今回独自に作成した関数です。
関数はプログラムを見やすくしたり同じ処理を何度も記述するのを避けるのに使われます。
独自の関数はsetup関数の前で宣言し、loop関数の後ろで関数の処理内容を記述します。
動作確認
接続とスケッチの書き込みが終わったらRGB_LEDの光が様々な色に変わっていくのが分かると思います。
今回は赤、緑、青の3色をArduinoの出力を0か255だけの組み合わせで色を作りました。
スケッチのsetcolor関数の値を20等の途中の光量にするとさらにたくさんの色を作れますのでぜひ試して みてください。
スケッチ解説
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
LESSON 6温度センサと通信してみよう
66
概要
温湿度センサDHT11を使って、これまで行ってきたアナログ入力ではなくシリアル通信によって温度や湿度 を取得する方法を学びましょう。
部品の説明
DHT11温湿度センサモジュール
温度と湿度を計測できるセンサです。温度と湿度の情報はシリアル通信によって取得します。
DATAシリアル通信用 VCC 5V GND
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
部品の説明
68
DATAシリアル通信用 VCC 5V GND
※コロナウイルスの影響により上記DHT11の供給不足となった 2020年4月に発送された一部のキットで
上記のような中央部に丸い穴が開いたDHT11を使用しております。
この部品が入っていた場合は GND DATA VCC それぞれのピン位置が異なりますので 右図の配線をお願いします。
接続図
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
回路図
70
ライブラリのダウンロードとインクルード
温湿度センサDHTシリーズを使用するには、まず下記URLからライブラリのzipファイルを ダウンロードしてください。
①DHT Sensor Library:
https://github.com/adafruit/DHT-sensor-library ②Adafruit Unified Sensor Lib:
https://github.com/adafruit/Adafruit_Sensor
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
ライブラリのダウンロードとインクルード
72
2種類のZipファイルがダウンロードできたら次はそれぞれについてインクルードを行い、IDEで使える状態にしま す。
スケッチ→ライブラリをインクルード→.ZIP形式のライブラリをインクルードを選び、画面の指示に従ってライブラ リをインストールします。
ライブラリのダウンロードとインクルード
インクルードが終わったら
ファイル
→
スケッチ例→DHTsensor library→
DHTtester
を選択します。© Presentation Design
© Presentation Design
© PUREYES © PUREYES
ライブラリのダウンロードとインクルード
74
主要なライブラリはライブラリマネージャからインストールすることもでき、こちらのほうが簡単です。
メニューバーのツール→ライブラリを管理をポイントするとライブラリマネージャーが開きます。
補足
例えば今回使用したDHT11を検索するとDHTライブラリがヒットしますのでこれをクリックしてインストールボタ ンを押すだけでライブラリのインストールが完成します。
インストール済のライブラリは下のスクリーンショットのように緑色で“INSTALLED“と表示されます。
スケッチ
スケッチは先程のライブラリに付属する
DHTtester
を使用します。PUREYES
のスケッチではなくライブラリに付属のスケッチをそのまま使 用する場合は温度センサの変更が 必要です。
16
行目に温湿度センサの種類を選 択する部分が有りますのでDHT11
を選択してください。選択の方法は
16
行目の先頭の//
を 消してDHT11
を使用できるようにし ます。これに
17
行目の先頭に//
を追記しDHT22
を使用しないようにします。© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
76
スケッチ
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ解説
78
インストールしたDHTライブラリをスケッチから使える状態にしています。
DHT11の通信を行うピンを2に定義しています。
使用するDHTをDHT11と定義しています。
※DHT11の行を//でコメントにし、DHT22やDHT21の行のコメントを外す事で他の種類の センサーも使える様になっています。
dhtと言う名前の変数で、通信のピンとセンサーのタイプを指定しDHT11のセンサーを使う宣言をしていま す。
DHT(温湿度センサ)の使用を開始します。
スケッチ解説
float は小数点を含む数値を変数として扱うときに使用します。
この場合 h にhumidity(湿度)を代入するように設定しています。
snanはデータを受け取れなかったときに nan を返します。
また、 || は or の演算子です。
全体としては h 湿度 t 摂氏温度 f 華氏温度のいずれかの情報取得を失敗したことを知らせています。
dht.computeHeatindexでは f 華氏温度と h 湿度から体感温度を計算しています。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
シリアルモニタ
80
シリアルモニタはCdSセルを使ったレッスンで使いましたが覚えていますでしょうか?
CdSセルのときはアナログ入力の電圧と連動している0~1023の値を表示しましたが、
今回のDHT11(温湿度センサ)ではDHT11がシリアル通信によって送ってくれた温度や湿度を表示します。
シリアル通信を始めるには、前回同様 Arduino IDE の上右にある虫めがねのようなアイコンをクリックしてシリア ルモニタを開きます。通信速度は9800になっていることを確認ください。
動作確認
シリアル通信が始まるとHumidity(湿度)、Temperature(摂氏および華氏の温度)、
Heat index(摂氏および華氏の体感温度)が表示されます。
息を吹きかけたりエアコンの近くに置いたりして温湿度が変化するか確認してみてください。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
LESSON 7RTCで時間を取得する
82
概要
UNO基板には時計が無いので目覚まし時計のようなものを作ろうとする時など、時計情報が必要なと きはRTCという部品を使います。
RTCからは時間の他日付も取得できます。また、コイン電池を取り付ければUNO基板等からの電源が 途絶えても時間を刻み続けてくれます。
ここではまずRTCの初期設定として時計合わせの方法を学びます。
部品の説明
RTC(Real Time Clock)
通信機能のついた時計です。
year,month,day,week,hour,min,sec等の時計情報をArduino等の電子機器に送信できます。
DHT11 は信号線 1 本でシリアル通信によりデータのやりとりをしていましたが、RTC は 2 本の信号線で I2C と呼ばれる方式でデータのやりとりをします。I2C 通信では同じ 2 本の信号線上に複数の異なる部品を繋げ る事が出来る為、接続が簡単で、使用するピンを節約する事が出来ます。
※本製品にはコイン電池(LIR2032)は付属しておりません。VCC、GND端子からの電源供給が 有る間は動作しますが、電源供給が無くなると時刻が初期値にリセットされ、再度時刻合わせが 必要です。
SCL通信用端子 SDA通信用端子 VCC(5V)通信用端子
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
時計合わせ
84
1.
Lesson6 DHT11のときと同じ要領で RTClib.ZIPをダウンロードしてインストールします。ダウンロードURL https://github.com/adafruit/RTClib
2.
前述の通りライブラリマネージャからもインストールできます。RTCはまず時計合わせが必要です。
<時計合わせの手順>
時計合わせ
3.
スケッチを開く
Arduino IDEのメニューから ファイル→スケッチ例→RTClib→DS1307を選択
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
時計合わせ
86
4.
時計合わせをしないと全く違う時間で進んでいくだけなのでまずは時計合わせが必要です。時計合わせは、DS1307スケッチ内にある下記の黄色でハイライトした記述で行われます。
ここの先頭の
//
を消すとこの行が有効になります。あとはスケッチを書き込んで
UNO
を起動すると、その時間に時計が合います。時計合わせが終わったら
//
を元に戻しておきましょう。5. スケッチを書き込みます。
時計合わせ
6.
シリアルモニタを開いて右下にあるボーレートリストから57600 baud
を選びます。すると時刻が表示されるので、1行目に表示されている時刻が
PC
の時計とおおよそ合っていることを確認します。
※書き込み時間分の数秒のズレは有ります。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
接続図
88
回路図
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
LESSON 8RTCを使って好きな時間に水を流す
90
概要
前のレッスンで時計合わせをしたRTCと水流電磁弁を使って決まった時間に水やりをする装置を作ってみ ましょう。
部品の説明
水流電磁弁
電気的にon/offできる水流弁です。on/offさせるには9V_0.4Aが必要です。
白いカバーを外すとM3のビスが2本有りますのでここに配線してください。
極性は無いのでどちらが+でもOKです。
コストの関係上キット付属の006P角形マンガン電池では十分な電力を供給できないためポコポコという音で の動作確認までしかできません。
実際に散水にご使用される際は別途DC9Vで0.4A以上の電源をご用意ください。
◇電磁弁の仕様 9V品◇
接続部ネジ:管用平行ネジG1/2 定格電圧:9V
定格電流:0.4A
水圧範囲:0.02~0.8Mpa 温度範囲:1~50度
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
部品の説明
92
◇電磁弁の仕様 12V品◇
接続部ネジ:管用平行ネジG1/2 定格電圧:12V 定格電流:0.3A
水圧範囲:0.02~0.8Mpa 温度範囲:1~50度
※コロナウイルスの影響により 上記9V品の供給不足となった
2020年4月に発送された一部のキットで端子部分が灰色の 12V仕様の電磁弁を使用しております。
12V品をお付けしているキットには12V用
電池ボックス及び電池も同梱されていますので
9V角形電池の代わりにこちらをお使いくださいませ。
灰色=12V品
リレーモジュール
大きな電流のon/offができる電磁スイッチです。
通常リレーをArduinoで駆動するには電流が足りないのでトランジスタ等が必要ですが、
このリレーモジュールはトランジスタを内蔵しているので直接Arduinoの出力を接続できます。
NO(Normally Closed 常時開)
コモン
NO(Normally Open 常時閉)
S(Arduinoの出力と接続)
VCC(5V)
GND
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
接続図
94
※電池ボックスのリード線は線径が細いのでICクリップ経由でブレッドボードに接続してください。
回路図
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
96
※
Lesson
7RTC
で時間を取得するでインストールした
RTClib.h
ライブラリをまだインストールされていない
場合は
Lesson7
に戻ってインストールを行ってください。
スケッチ
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ解説
98
“wire.h“と
”RTClib.h”
ライブラリをインクルードします。使用するRTCの型式を指定します。
タイマーの作動時間と継続時間を指定する場所です。
“ Int ”は2バイト整数(-32,768~32767)の変数を扱う時に使うデータ型です。
“ long “は4バイト整数(-2,147,483,648~2,147,483,647)の変数を扱う時に使うデータ型です。
“ == “ は前後が一致する場合成立する比較演算子です。
“ && ” はANDの演算子です。前後がどちらも成立している場合成立します。
この場合RTCから受け取った時間とalmHourとalmMinuteが一致した場合if分の内容が 実行されます。
動作確認
スケッチ解説で説明したスケッチ上部のタイマー設定部分に現在時刻に近い時間を設定してその時間に水流 電磁弁がonして待機時間分onし続けることを確認してください。
実際にホースを繋いで花壇に設置すれば自動水やり機の完成です。
これで速習キットPart1の学習内容は終わりです。
それぞれのレッスンで学んだことを組み合わせたりしてご自分のオリジナルガジェットにも挑戦してみてくださ い。
Lesson8で作成した水やり機に光センサや温湿度計も組み合わせると晴れた日で温度が高くて湿度が低い 日だけ水やりする、というような動きにすることもできますね。健闘を祈ります!
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
LESSON 9サーボモーターを動かそう
100
概要
サーボモーターを使って決めた角度に移動する方法を学びましょう。
サーボモーターはロボットやラジコンの方向やスピードの制御によく使われる、動かす角度を決められる部 品です。
オレンジの線に与えるPWMパルスの数で角度が決まります。
SG-90
部品の説明
接続図
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
回路図
102
スケッチ
Arduino IDEに標準でついているサンプル スケッチを使用します。
ファイル → スケッチ例 → servo → sweep を選択しましょう。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
104
次にservoライブラリをインクルードします。
スケッチ → ライブラリをインクルード → Servo
スケッチ
サーボモーターが0度~180度へ移動 したあと180度~0度に戻ったでしょう か?
Forループの中の角度指定している部 分(pos)を変更すると自由に角度を変 更することができますのでやってみて ください。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
LESSON 10 人体検知をやってみよう
106
概要
人感センサという人が来たら感知するセンサを使ってみましょう。
人感センサの信号を受け取ったら数秒間LEDを光らせます。
部品の説明
人体検知センサー
人体検知センサーは人体から出ている熱(赤外線)を検知して、人がいる、いないを判断するセンサーです。
人がいないとOUTからHIGHの信号を出します。
検知時間調整 5分(左いっぱい)
~
検知距離調整 3m(左いっぱい)
~
VCC 5V
OUT HIGH/LOW
GND
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
接続図
108
回路図
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
110
プログラムを実行してみましょう。
センサに近づくとLEDが光り、離れ て待つと消灯します。
※延長時間が長すぎたり検知距 離が遠すぎたりすると待った り離れたりするのが辛いので センサについている2つのボ リュームは共に右いっぱいの 状態から実験をはじめるとい いでしょう。このボリューム 設定時は3m以上離れて約5 秒待つと消灯します。
Lesson3で学んだCDsセルと組み合わせれば、夜間だけ光る LEDライトも作れますのでトライしてみてください。
LESSON 11 モーター駆動ICを使って正転、逆転の制御をやってみよう
概要
TA7291PというモータードライバICを使って高出力モータ-を制御(正転、逆転、PWMによる速度変更)する 方法を学びます。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
部品の説明
112
TA7291P
このICは2Aまでのモーターを正転、逆転、速度変更制御を行えます。
IN1,IN2端子にかける電圧の組み合わせで正転逆転の切り替え、Vref端子のPWMデューティー比で速度変 化が可能です。
① GND GND
② OUT1 モーターと接続
③ 未使用 -
④ Vref ArduinoのPWM出力と接続(Vsより小さい電圧が必 要)
⑤ IN1 Arduinoのデジタル出力と接続
⑥ IN2 Arduinoのデジタル出力と接続
⑦ Vcc ICの電源(5V)
⑧ Vs モーター駆動用電源
⑨ 未使用 -
⑩ OUT2 モーターと接続
部品の説明
ファンクション表
入力 出力
IN1 IN2 OUT1 OUT2 モード
0 0 ∞ ∞ ストップ 1 0 H L モーター正転 0 1 L H モーター逆転 1 1 L L ブレーキ
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
部品の説明
114
≪≪ PWM(Pulse Width Modulation)って何?? ≫≫
スイッチオン/オフの比率を変化させてモーターの速度やLED等の光の強さを変化させることができる方法 です。
オン/オフの比率のことをデューティー比といいます。
接続図
※電池ボックスのリード線は線径が細いのでICクリップ経由でブレッドボードに接続 してください。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
回路図
116
スケッチ
モーターの 中速正転→全速正転→ブレーキ→中速逆転
→STOP を繰り返します。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
118
TA7291Pモータードライバの2つのINPUTの組み合わせで 正転―逆転―ストップーブレーキを、VrefにかけるPWM信 号によって速度を制御しています。
部品説明ページに記載の表とスケッチをしっかり見て動作 原理を自分のものにしてください。
LESSON 12 I2C通信で温度と湿度を取得表示してみよう
概要
SHT31という温度センサーから受け取った温度や湿度の情報をシリアルモニタに表示させます。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
部品の説明
120
SHT31
温度、湿度をI2C通信で取得ができるセンサーです
ArduinoのI2C端子(A4,A5)をSCL,SDA端子に接続して使用します。
SCL SDA GND VCC
接続図
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
回路図
122
スケッチ
まずは、SHT31 ライブラリをダウンロードして取り込みます。
※ライブラリの使い方についてはLesson6をご参照ください。
https://github.com/adafruit/Adafruit_SHT31
次にArduino IDEに標準でついているサンプルスケッチを使用します。
ファイル
→
スケッチ例→ Adafruit_SHT31
・・・→
SHT31test
を選択しましょう。© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
124
スケッチ
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
126
書き込みが終わったらシリアルモニタを起動して温度と湿度が取得できているのを確認しましょう。
LESSON 13 LCDで文字を表示させよう
概要
LCDディスプレイに文字を表示させる方法を学びましょう。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
部品の説明
128
1602LCD
16列2行の文字を表示できる液晶ディスプレイです。
ArduinoからI2C通信で情報を送信します。
接続は裏面の4本ピンのみです。
LCDコントラスト調整用ボリューム抵抗
※LCDの文字が見えない、見えづらいという ときはこれを回して調整してください。
GND VCC(5V) SDA SCL
接続図
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
回路図
130
スケッチ
まずは、LiquidCrystal_I2C ライブラリをダウンロードして取り込みます。
※ライブラリの使い方についてはLesson6をご参照ください。
https://github.com/marcoschwartz/LiquidCrystal_I2C
Lesson13_LCD_PurEyes.inoを開きます。
LCDにHello,world!!が表示されたらOKです。
コメントをよく見て文字の表示内容や表示位置を 色々変えてみて使い方を学びましょう。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
LESSON 14 イーサネットシールドを使ってウエブサーバーを構築しよう。
132
概要
イーサネットシールドを使うとインターネットに情報を公開することができます。
今回は温度センサの値をインターネットに公開してみます。
部品の説明
イーサネットシールド
シールドとは、Arduinoの上にちょうど積み重ねるようにするだけでArduinoにいろいろな機能を付加できる部 品です。
今回使用するイーサネットシールドはLANケーブルをルーター等に接続することでArduinoをサーバーやクラ イアントにしたりすることができます。
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
接続図
134
1.
Arduinoの上にイーサネットシールドの足を差し込みます。2.
人感センサを接続します。3.
LANケーブルでご自身のネットワークルーターに接続します。※
UNO
基板はEthernet
シールドに重ねる回路図
※UNO基板はEthernetシールドに重ねます
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
136
Arduinoのサンプルスケッチから、
スケッチ例 – Ethernet – WebServer を選びます。
スケッチ
0x02, 0x00, 0x00, 0x00, 0x00, 0x00に変更 ご自分のネットワークに合わせて変更
(スケッチ説明のはじめの部分をご参照ください)
MacAddresstとIPAddressの部分を下記に書き換えま す。
MacAddress:
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED → 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
IPAddress:
ご自分のローカルネットワークで使用しているアドレ スを確認して使用していない番号にします。(次ページ
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
138
コマンドプロンプトで IPCONFIG を打ち込んで実行する と IPv4アドレス 行に192.168.から始まるアドレスが出てきま す。192.168のあとの数字までを同じにして最後の3桁の数 字を0~255のうちご自身のネットワーク環境で使われてい ない数字に変更して前ページスケッチのIPAddress欄に入 力してください。(わからない場合は下記の通り171を入力)
例1:ご自分のネットワーク機器の アドレスが192.168.0.1の場合 →192.168.0.171等
例2:ご自分のネットワーク機器の アドレスが192.168.1.1の場合 →192.168.1.171等
スケッチ
AnalogInput0~6の値をwebに公開してい ます
© Presentation Design
© Presentation Design
© PUREYES © PUREYES
スケッチ
140
このスケッチでは人感センサの値を読んでwebに公開しています。
ご自分のPCのブラウザ(GoogleChrome、MicrosoftEdge、Firefox等)に先程スケッチに打ち込んだIPアドレスを 打ち込むと数秒ごとにこの値を見ることができますよ。
アナログインプットの0~6の値がすべて出力されますので他にも温度センサやスイッチをつければそれらの値 を公開することもできますのでいろいろやってみるとおもしろいです。
以上でレッスンは終わりです。Arduinoに慣れてきましたでしょうか?
インターネットを検索するとArduinoでルービックキューブを解いたりドローンを作ったりしている強者たちが作 品の紹介や説明を行ってくれていますので是非これらを参考に学び続けていただければと思います。がん ばってください!
本書中の会社名や商品名は、該当する各社の商標または登録商標です 本書中では TM 及び R は省略させていただいております
Revision history :
2019.8.2 v103 Lesson6 接続図および回路図を修正
2019.11.5 v104 Lesson6 スケッチ中の DHT11 選択部分説明追加 2019.11.5 v105 Lesson9~14を追加
2019.11.11 v106 Lesson3についてStarterKitPart2の場合の配線方法を追記 2019.12.16 v107 Lesson13 LCDのコントラスト調整方法を追記
2020.1.4 v108 Lesson6 接続図および回路図を修正(A0→D2)
2020.1.9 v109 Lesson2抵抗器の説明方法変更Lesson4回路図に部品写真を追加 Lesson5接続図、回路図修正(G:D10 B:D11)
2020.1.17 v110 Lesson10スケッチの中の全角スペースを削除 2020.2.14 V111 Lesson8電磁弁部品仕様を追記
2020.4.5 V112 Lesson8 void setup に8番ピンの設定を追加 2020.4.7 V113 Lesson12 回路図を修正
PUREYES UNO R3速習キット解説書 2019年7月11日発行 著者 中村光宏