IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中...

43
IoT-BOOSTER-R1 利用マニュアル マイクロファン http://www.microfan.jp/ https://store.shopping.yahoo.co.jp/microfan/ https://www.amazon.co.jp/s?merchant=A28NHPRKJDC95B 2017 11 Copyright c 2017 MicroFan, All Rights Reserved.

Transcript of IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中...

Page 1: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

IoT-BOOSTER-R1

利用マニュアル

マイクロファン

http://www.microfan.jp/

https://store.shopping.yahoo.co.jp/microfan/

https://www.amazon.co.jp/s?merchant=A28NHPRKJDC95B

2017年 11月

Copyright c⃝ 2017 MicroFan, 

All Rights Reserved.

Page 2: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

i

目次

第 1章 IoT-BOOSTERの紹介 1

1.1 製品概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Blynk: IoTシステム開発ソフトウェア . . . . . . . . . . . . . . . . . . 2

1.3 Arduinoでのスケッチ . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.4 マニュアルの記載内容に関して . . . . . . . . . . . . . . . . . . . . . . 3

第 2章 部品一覧 4

2.1 部品表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.2 別売品 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.2.1 Arduino UNO R3 . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.2.2 オプション部品 . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

第 3章 IoT-BOOSTERの作成手順 9

3.1 抵抗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.2 FET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.3 赤外線レシーバー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.4 セラミックコンデンサ . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.5 発光ダイオード、明るさセンサー . . . . . . . . . . . . . . . . . . . . . 10

3.6 環境センサー GY-BME280 . . . . . . . . . . . . . . . . . . . . . . . . 11

3.7 圧電スピーカー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.8 トランジスタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.9 赤外線発光ダイオード . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.10 電解コンデンサ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.11 タクトスイッチ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.12 ピンソケット CN8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.13 ピンヘッダー CN10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.14 ピンヘッダー CN2/CN3,CN4/CN5,CN6/CN7 . . . . . . . . . . . . 12

3.15 ピンヘッダ SV1-SV4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.16 IoT-BOOSTERの作成例 . . . . . . . . . . . . . . . . . . . . . . . . . 12

第 4章 環境整備とサンプルスケッチ 14

Page 3: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

目次 ii

4.1 Arduinoボードとの接続 . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4.2 ライブラリのインストール . . . . . . . . . . . . . . . . . . . . . . . . . 14

4.2.1 BME280のライブラリ . . . . . . . . . . . . . . . . . . . . . . . 14

4.2.2 赤外線 LEDと赤外線レシーバーのライブラリ . . . . . . . . . . . 15

4.2.3 OLEDディスプレイのライブラリ . . . . . . . . . . . . . . . . . 16

4.2.4 DS3231リアルタイムクロックライブラリ . . . . . . . . . . . . . 18

4.2.5 WS2812/NeoPixel カラー LED . . . . . . . . . . . . . . . . . . 18

4.3 サンプルスケッチの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4.3.1 スイッチと圧電スピーカー . . . . . . . . . . . . . . . . . . . . . 19

4.3.2 BLINK:LEDの単純な点滅 . . . . . . . . . . . . . . . . . . . . . 20

4.3.3 明るさセンサーの利用 . . . . . . . . . . . . . . . . . . . . . . . . 21

4.3.4 BME280環境センサー . . . . . . . . . . . . . . . . . . . . . . . 21

4.3.5 OLEDディスプレイ . . . . . . . . . . . . . . . . . . . . . . . . 24

4.3.6 リアルタイムクロック . . . . . . . . . . . . . . . . . . . . . . . . 25

4.3.7 超音波距離センサー . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.3.8 RCサーボ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

第 5章 資料 31

5.1 IoT-BOOSTERの回路図 . . . . . . . . . . . . . . . . . . . . . . . . . 31

5.2 Arduinoボードのピン接続 . . . . . . . . . . . . . . . . . . . . . . . . 32

5.3 ハードウェア拡張用コネクタ . . . . . . . . . . . . . . . . . . . . . . . 33

5.3.1 CN2/CN3端子 . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

5.3.2 CN4/CN5端子 . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

5.3.3 CN6: I2C端子 (3.3V) . . . . . . . . . . . . . . . . . . . . . . . 34

5.3.4 CN7: I2C端子 (5V) . . . . . . . . . . . . . . . . . . . . . . . . 34

5.3.5 CN8: 超音波センサー/アナログ信号端子 . . . . . . . . . . . . . . 34

5.3.6 CN9: 加速度・ジャイロセンサ MPU6050端子 . . . . . . . . . . 35

5.3.7 CN10: リアルタイムクロック . . . . . . . . . . . . . . . . . . . . 36

5.3.8 CN11: デジタル信号端子 . . . . . . . . . . . . . . . . . . . . . . 36

第 6章 購入および問い合わせ先 37

6.1 ご協力のお願い . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6.2 販売:ネットショップ . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6.3 製品情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6.4 問い合わせ先 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6.5 所在地 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

Page 4: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

iii

図目次

2.1 部品:写真 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.2 OLEDディスプレイ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.3 加速度・ジャイロセンサー . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.4 DS3231リアルタイムクロックモジュール . . . . . . . . . . . . . . . . . 8

2.5 HC-SR04 超音波距離センサー . . . . . . . . . . . . . . . . . . . . . . . 8

3.1 IoT-BOOSTERの作成例 . . . . . . . . . . . . . . . . . . . . . . . . . 13

4.1 ライブラリマネージャを利用した BME280ライブラリの導入 . . . . . . 15

4.2 ライブラリマネージャを利用した U8g2ライブラリの導入 . . . . . . . . 17

4.3 OLEDディスプレイ (SSD1306)用のコンストラクタ . . . . . . . . . . 17

4.4 OLEDディスプレイ (SSD1306)用の文字表示専用コンストラクタ . . . 17

4.5 カラー LEDライブラリ . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4.6 スイッチと圧電スピーカーのサンプルスケッチ . . . . . . . . . . . . . . 20

4.7 BLINK:LEDの単純な点滅 . . . . . . . . . . . . . . . . . . . . . . . . 21

4.8 明るさセンサー値のシリアル出力 . . . . . . . . . . . . . . . . . . . . . 21

4.9 BME280環境センサーのサンプルスケッチ . . . . . . . . . . . . . . . . 22

4.10 BME280環境センサーの計測結果を OLEDに表示するサンプルスケッチ 23

4.11 OLEDディスプレイのサンプルスケッチ . . . . . . . . . . . . . . . . . 24

4.12 OLEDディスプレイの文字専用出力 . . . . . . . . . . . . . . . . . . . 25

4.13 リアルタイムクロックのサンプルスケッチ . . . . . . . . . . . . . . . . 26

4.14 リアルタイムクロックのサンプルスケッチ . . . . . . . . . . . . . . . . 27

4.15 超音波距離センサーのサンプルスケッチ . . . . . . . . . . . . . . . . . . 29

4.16 RCサーボのサンプルスケッチ . . . . . . . . . . . . . . . . . . . . . . . 30

5.1 IoT-BOOSTERの回路図 . . . . . . . . . . . . . . . . . . . . . . . . . 31

Page 5: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

iv

表目次

2.1 部品表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

5.1 Arduinoボードのピン接続 . . . . . . . . . . . . . . . . . . . . . . . . 32

5.2 CN2ピン配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

5.3 CN3ピン配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

5.4 CN4ピン配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

5.5 CN5ピン配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

5.6 CN6ピン配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

5.7 CN7ピン配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5.8 CN8ピン配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5.9 CN9ピン配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5.10 CN10ピン配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5.11 CN11ピン配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Page 6: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

1

第 1章

IoT-BOOSTERの紹介

1.1 製品概要

近年様々なものをインターネットに接続してサービスの高度化を図るモノのインター

ネット「IoT *1」が注目されており、IoTサービスを実現するための様々な開発や実験が、

企業はもちろん個人でも行われています。

IoT-BOOSTERは身近な Arduino UNO R3で IoTシステムの実験や開発を手軽に行

うためのシールドキットです。IoT-BOOSTER は 家庭用の IoT 機器の開発や実験の中

核となる機能をコンパクトな基板にまとめており、IoT機器の試作や実験を行う人が、高

機能な IoT装置を手軽に作成するために利用できます。

IoT-BOOSTERの特徴を以下に示します。

• BME280を用いた温度、湿度、気圧センサーを搭載し、I2Cインターフェースで信

号線 2本のみで制御できます。

*1 Internet of Things

Page 7: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 1章 IoT-BOOSTERの紹介 2

• 赤外線 LEDを搭載し、家電製品を赤外線リモコン機能で制御することができます。

• 赤外線レシーバーを搭載し、家電製品のリモコンの制御信号を受信することができます。

• 明るさセンサーを搭載しています。• 4個のタクトスイッチを搭載しています。

• 2個の LEDを搭載しています。

• 圧電スピーカーを装備し、ビープ音などの電子音の出力を行えます。• 128X64ピクセルのOLEDディスプレイの接続端子を装備しており、I2Cインター

フェースで信号線 2本のみで制御できます。

• 加速度・ジャイロセンサーMPU6050モジュール、リアルタイムクロック DS3231

モジュール、超音波距離センサー HR-SR04 モジュールの接続端子を装備してい

ます。

• 5Vの I2C機器を接続する端子を装備しています。

• I2Cの信号を 3.3Vに変換する回路を搭載しており、3.3Vの I2C機器を接続する

端子を装備しています。

• 焦電センサ(人感センサ)などの外部デバイスを接続できる端子を装備しています。• RCサーボや NeoPixel/WS2812カラー LEDを接続できる端子を2個装備してい

ます。

• Arduino UNO R3に接続して利用できます。

• 電子工作で広く利用されている Arduinoのシールドとして開発されており、手軽

に利用できる Arduinoの IDEを利用して独自のスケッチを行えます。

1.2 Blynk: IoTシステム開発ソフトウェア

IoT システムの中でも、外から家庭の温度や湿度のモニタリングをしたり、家庭の家

電機器を遠隔で操作するなどのホームオートメーション系の応用は、IoT-BOOSTERと

Blynkソフトウェアを利用することで、手軽に開発することができます。

• https://www.blynk.cc/

IoTシステムを動作させるためにはネットワーク接続が必要なため、Arduino UNO R3

を利用する場合は通常イーサネットシールドなども接続する必要があります。しかしなが

ら Blynkでは、USBで接続されている PCをネットワーク接続装置として利用できるた

め、Arduino UNO R3, IoT-BOOSTER, PCのみで IoTシステムの実験を行うことがで

きます。

Page 8: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 1章 IoT-BOOSTERの紹介 3

1.3 Arduinoでのスケッチ

本製品は、Arduinoのシールドとして開発されています。このためプログラミングは、

多くの利用者が親しんでいる Arduino の IDE を利用して手軽に行うことができます。

IoT-BOOSTER を操作するための基本的な機能はライブラリとして提供しているため、

利用者自身で様々なパターンを表示するスケッチを手軽に作成することができます。

1.4 マニュアルの記載内容に関して

本文書の一部もしくは全部を無断で複写、複製、配布することは、法律で認められた場

合を除き、著作権の侵害となります。

本文書に記載されている製品名などは、一般的にそれぞれの権利者の登録商標または商

標です。

お伝えする内容と本質的な問題がないと判断した場合には、本マニュアルには、旧バー

ジョンの製品の写真や他製品の写真などがそのまま使用されている場合がありますのでご

承知おきください。

本文書は最善の注意を払って作成されていますが、本書に記載されている内容の誤り、

本書に記載されている内容に基づく作業、運用などにおいて、いかなる損害が生じても、

弊社および著者をはじめとする本文書作成関連者は、一切の責任を負いませんのであらか

じめご了承ください。

Page 9: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

4

第 2章

部品一覧

2.1 部品表

IoT-BOOSTERキットの部品一覧を表 2.1,図 2.1に示します。部品が不足、破損して

いる場合には、キットを組み立てる前にマイクロファンに問い合わせてください。

図 2.1 部品:写真

2.2 別売品

2.2.1 Arduino UNO R3

本製品には、以下の製品が含まれていませんので、別途ご用意ください。

• Arduino UNO R3あるいはその互換品(必須)

Page 10: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 2章 部品一覧 5

表 2.1 部品表

部品 シンボル 規格等 個数

プリント基板 IoT-BOOSTER Rev.1 1

IC IC1 VS1838B 1

環境センサー CN1 GY-BM280 1

加速度センサー CN9 GY521:MPU6050 別売り

FET Q1, Q2 2N7000 2

トランジスタ Q3 S8050 1

明るさセンサー Q4 3mm 灰緑 1

発光ダイオード LED1, LED2 3mm 青 2

赤外線発光ダイオード LED3 5mm 透明 1

抵抗 R1, R2, R5, R7 1KΩ 4

R3, R4, R6, R8, R12 10KΩ 5

R9 33Ω 1

R10 22KΩ 1

R11 100Ω 1

R13, R14 330Ω 2

OLEDディスプレイ OLED1 0.96インチ I2C 別売り

セラミックコンデンサ C1, C2 0.1μ F 2

電解コンデンサ C3, C4 100μ F 2

タクトスイッチ SW1-SW4 4

圧電スピーカー X1 1

ピンヘッダ SV1-SV4 1列 1x40PIN 1

CN2-CN7 2列 2x10PIN 1

ピンソケット CN8 4PIN 1

CN11 6PIN 別売り

本製品は Arduino UNO R3のシールドとして開発されています。このため、本製品を

利用するためには、Arduino UNO R3あるいはその互換品が別途必要です。

Arduinoには、R2以前の製品もありますが、それらは、SCL,SDAや IOREFなどのピ

ンソケットの信号が不足しているため IoT-BOOSTERでは使用することはできません。

2.2.2 オプション部品

本製品には、以下の製品が含まれていませんので、必要に応じて別途ご用意ください。

• OLEDディスプレイ

https://store.shopping.yahoo.co.jp/microfan/oled096-128x64-i2c-blue.

Page 11: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 2章 部品一覧 6

html

• MPU6050 加速度・ジャイロセンサー

https://store.shopping.yahoo.co.jp/microfan/gy-521.html

• DS3231 リアルタイムクロック

https://store.shopping.yahoo.co.jp/microfan/ds3231-rtc-module.

html

• US-015 超音波距離センサー

https://store.shopping.yahoo.co.jp/microfan/us-015.html

• HC-SR04 超音波距離センサー

https://store.shopping.yahoo.co.jp/microfan/hc-sr04.html

• HC-SR501 焦電センサー

https://store.shopping.yahoo.co.jp/microfan/hc-sr501.html

• WS2812B カラー LEDリング

https://store.shopping.yahoo.co.jp/microfan/cjmcu-ws2812-ring-12.

html

https://store.shopping.yahoo.co.jp/microfan/cjmcu-ws2812-ring-24.

html

OLEDディスプレイ

図 2.2に示す別売りの OLEDディスプレイを専用の接続端子に接続することができま

す。OLEDディスプレイは、128x64ドットのグラフィックディスプレイになっており、

様々な情報やメッセージを表示することができるようになります。

図 2.2 OLEDディスプレイ

IoT-BOOSTERでは、基板上に OLEDディスプレイを搭載できるため、様々な情報を

OLEDに表示し確認することができます。

Page 12: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 2章 部品一覧 7

MPU6050 加速度・ジャイロセンサー

IoT-BOOSTER は、MPU6050 を搭載したセンサーセンサーモジュール (図 2.3) を

装着できます。MPU6050 は加速度センサーとジャイロセンサーが組み込まれた IC で、

XYZの 3方向の加速度と、3方向の回転角を調べることができます。この機能により、特

別な操作をする必要なく IoT-BOOSTERの傾きや回転などの動きを取得することができ

ます。また、付加機能として、温度センサーも内蔵しています。

図 2.3 加速度・ジャイロセンサー

MPU6050の概要は、下記のWEBページに掲載されています。

http://www.invensense.com/products/motion-tracking/6-axis/mpu-6050/

また、このWEBページからMPU6050のデータシートをダウンロードできます。

DS3231リアルタイムクロック

IoT-BOOSTER は、左上部の CN10 に DS3231 にバックアップ電池を付加したモ

ジュール (図 2.4)を搭載することができます。

DS3231は、秒、分、時間、曜日、日付、月、および年の情報を管理する高精度のリア

ルタイムクロック ICです。

DS3231の概要は、下記のWEBページに掲載されています。

https://www.maximintegrated.com/jp/products/digital/real-time-clocks/

DS3231.html

HC-SR04 超音波距離センサー

IoT-BOOSTERは、右下部の CN8に HC-SR04(図 2.5)を搭載することができます。

HC-SR04は計測に超音波を利用した距離センサーです。

Page 13: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 2章 部品一覧 8

図 2.4 DS3231リアルタイムクロックモジュール

図 2.5 HC-SR04 超音波距離センサー

Page 14: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

9

第 3章

IoT-BOOSTERの作成手順

IoT-BOOSTERキットの標準的な作成手順を以下に示します。基本的には、一般的な

電子工作の手順と同様で、背の低い部品から実装していきます。

• 抵抗の実装• FETの実装

• 赤外線レシーバーの実装• セラミックコンデンサの実装• 発光ダイオード、明るさセンサーの実装• 環境センサー GY-BME280の実装

• 圧電スピーカーの実装• トランジスタの実装• 赤外線発光ダイオード• 電解コンデンサ• タクトスイッチの実装• ピンソケットの実装• ピンヘッダーの実装

実際の作成作業に入る前に、一度作成手順全体に目を通しておくことをお勧めします。

抵抗、コンデンサ、発光ダイオード、圧電スピーカー、FET、 トランジスタ,、赤外線

レシーバーなどの 2/3本足の部品のはんだ付けは、まず一つの足をはんだ付けし、部品の

取り付け姿勢などを必要に応じて修正してから残りの足をはんだ付けすると、部品の配置

をきれいに整えて取り付けることができます。はんだ付け後に、基板裏面から伸びて余っ

ている足をニッパーなどで切り取ります。

ピンソケット、ピンヘッダー、ICなどの複数の端子を持つ部品のはんだ付けは、端子

の端の1ピン、もしくは両端か対角上の2ピンをはんだ付けし、部品の取り付け姿勢など

を必要に応じて修正してから残りの端子をはんだ付けすると、部品の姿勢をきれいに整え

て取り付けることができます。

Page 15: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 3章 IoT-BOOSTERの作成手順 10

3.1 抵抗

抵抗をプリント基板上の所定の位置に取り付けはんだ付けします。抵抗は、数種類の抵

抗値があるため、部品表 2.1で確認して取り付けてください。

3.2 FET

FET Q1, Q2を所定の位置に取り付けはんだ付けします。

FETは、その上に OLEDディスプレイを取り付ける可能性があるので、切欠き面が基

板側になるように、ラジオペンチなどで事前に足を曲げるとともに足の間の幅を広げて基

板に取り付けてください。

3.3 赤外線レシーバー

赤外線レシーバーの端子の根元に近いところをラジオペンチなどで挟んで L 字型に折

り曲げ、赤外線レシーバーの本体が基板に張り付くような姿勢で基板上の所定の位置に取

り付けはんだ付けします。

3.4 セラミックコンデンサ

セラミックコンデンサを所定の位置に取り付けはんだ付けします。

3.5 発光ダイオード、明るさセンサー

発光ダイオード LED1, LED2、明るさセンサー Q4を所定の位置に取り付けはんだ付

けします。

発光ダイオードの端子には極性があり,長い脚のほうがアノード (+)、短い脚のほうが

カソード (-)で、カソード側のプラスティックモールドに切り欠きがあります。

青色の発光ダイオードは、切り欠きを基板のシルク印刷の切り欠き(下)に合わせて取

り付けはんだづけします。

明るさセンサー(フォトトランジスタ)の端子には極性があり,長い脚のほうがアノー

ド (+)、短い脚のほうがカソード (-)で、カソード側のプラスティックモールドの基部に

切り欠きがあります。その切り欠きを基板のシルク印刷の切り欠き(下)に合わせて取り

付けはんだづけします。

Page 16: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 3章 IoT-BOOSTERの作成手順 11

3.6 環境センサー GY-BME280

環境センサー GY-BME280にまずピンヘッダをはんだ付けします。次に、ピンヘッダ

が付けられた GY-BME280を基板の所定の位置に取り付けはんだ付けします。

3.7 圧電スピーカー

圧電スピーカーを所定の位置に取り付けはんだ付けします。

3.8 トランジスタ

トランジスタ Q3を所定の位置に取り付けはんだ付けします。

トランジスタは、取り付け穴の間隔に合うように、本体に大きな力が加わらないように

注意してラジオペンチなどで事前に足の幅を広げて基板に取り付けてください。トランジ

スタ本体の切りかけ部分とシルクの切りかけ部分の方向を合わせて取り付けてください。

3.9 赤外線発光ダイオード

透明の赤外線発光ダイオード LED3 を所定の位置に取り付けはんだ付けします。赤外

線発光ダイオードの端子には極性があり,長い脚のほうがアノード (+)、短い脚のほうが

カソード (-)で、カソード側のプラスティックモールドに切り欠きがあります。その切り

欠きを基板のシルク印刷の切り欠き(上)に合わせて取り付けはんだづけします。

3.10 電解コンデンサ

電解コンデンサをプリント基板に取り付けはんだ付けします。電解コンデンサの端子に

は極性があり、本体の白い帯と基板のシルクの白塗り部分が合致するように取り付けてく

ださい。

3.11 タクトスイッチ

はじめてタクトスイッチの取り付けを行う際には,タクトスイッチの足がそのままでは

プリント基板に刺さりにくいように思えますが、タクトスイッチの 4本の足を基板の穴に

あてがった状態で、タクトスイッチを基板に強く押し込むとタクトスイッチの足が基板の

穴に入って固定されます。その後、それぞれの足をはんだ付けします。

Page 17: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 3章 IoT-BOOSTERの作成手順 12

3.12 ピンソケット CN8

4ピンのピンソケットをプリント基板の右下の所定の位置 CN8に取り付けはんだ付け

します。

3.13 ピンヘッダー CN10

ピンヘッダーから、ニッパーなどで 5ピン切り取り、プリント基板の上部の所定の位置

CN10に取り付けはんだ付けします。

3.14 ピンヘッダー CN2/CN3,CN4/CN5,CN6/CN7

2 列のピンヘッダーから、ニッパーなどで 2x3 ピン 2 個と、2x4 ピンを切り取り、

CN2/CN3と CN4/CN5に 2x3ピンのピンヘッダを、CN6/CN7に、2x4ピンのピンヘッ

ダを取り付けはんだ付けします。

3.15 ピンヘッダ SV1-SV4

ピンヘッダから、ニッパーなどで 8ピン2組と、10ピン,6ピンを切り取り、SV1-SV4

の基板の裏面に、それぞれのピンヘッダを取り付け、表面ではんだ付けします。

ピンヘッダのはんだ付けは、まず、それぞれのピンヘッダーの片端の端子をはんだ付け

し、ピンヘッダの取り付け姿勢などを必要に応じて修正してから残りの端子をはんだ付け

すると、ピンヘッダの配置をきれいに整えて取り付けることができます。

3.16 IoT-BOOSTERの作成例

IoT-BOOSTERの作成例を図 3.1に示します。お疲れ様でした。

Page 18: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 3章 IoT-BOOSTERの作成手順 13

図 3.1 IoT-BOOSTERの作成例

Page 19: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

14

第 4章

環境整備とサンプルスケッチ

4.1 Arduinoボードとの接続

IoT-BOOSTERの背面に延びているピンソケットの足を利用して、Arduino UNO R3

ボードに接続します。

4.2 ライブラリのインストール

IoT-BOOSTER の環境センサー BME280 や赤外線リモコン機能を手軽に利用するた

めには、Arduino IDEに制御用のライブラリをインストールする必要があります。

• 環境センサー GY-BME280

• 赤外線 LEDと赤外線レシーバー

• OLEDディスプレイ

• DS3231リアルタイムクロック

• WS2812/NeoPixel カラー LED

Arduino IDEへのライブラリの一般的なインストール法は、下記のWEBページに説

明されています。

https://www.arduino.cc/en/Guide/Libraries

4.2.1 BME280のライブラリ

BME280用のライブラリは、Arduino IDEのライブラリマネージャを利用してインス

トールすることができます。ライブラリマネージャの検索フィルタに [BME280] を入力

して絞り込むと、BME280 用のライブラリは、この文書の作成時点では3個ほど列挙さ

れます。

ここでは、[BME280 by Tyler Glenn] とタイトルが付けられているライブラリを選択

してインストールする例を示します。

ライブラリマネージャのダイアログ上でインストールするライブラリの欄をクリックす

Page 20: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 4章 環境整備とサンプルスケッチ 15

ると、インストールボタンが表示されるので、最新バージョンを選択して、ライブラリを

インストールします。

このライブラリは、以下の URLで取得することもできます。

https://github.com/finitespace/BME280

図 4.1 ライブラリマネージャを利用した BME280ライブラリの導入

ライブラリのインストール後、Arduino IDE メニューから [ファイル] ⇒ [スケッチ

の例] を選択すると、リストに BME280 フォルダが追加されているのが確認できます。

BME280フォルダの中を確認するといくつかのサンプルスケッチがあり、選択して実行

することができます。

IoT-BOOSTER では、BME280 モジュールは I2C で接続されているので、サンプル

スケッチのうち [BME 280 I2C Test]を選択します。このサンプルスケッチは、温度、湿

度、気圧およびそれらから算出できる値を 0.5秒ごとに取得してシリアルモニタに出力し

ます。

サンプルスケッチはこのままコンパイル、書き込んで実行させることができますが、

温度が華氏であったり標高がフィートだったりするので、サンプルスケッチの 46 行の

boolmetric = false;の falseを trueに変更します。この変更により、温度は摂氏で、標

高がメートルで表示されるようになります。

シリアルモニタの出力が文字化けする場合には、setup() 内で指定したボーレートと、

シリアルモニタの右下で選択できるボーレートが合致していることを確認してください。

4.2.2 赤外線 LEDと赤外線レシーバーのライブラリ

赤外線 LEDと赤外線レシーバーは、IRremoteライブラリを使用すると手軽に利用で

きます。IRremoteは、以下の URLで公開されています。

https://github.com/z3t0/Arduino-IRremote

Page 21: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 4章 環境整備とサンプルスケッチ 16

ライブラリのインストール

IRremoteは、ライブラリマネージャを利用して簡単にインストールできます。

Arduino IDEのメニューから、[スケッチ] => [ライブラリをインクルード] => [ライ

ブラリを管理...] を選択すると、ライブラリマネージャのダイアログウィンドウが表示さ

れ、インストール可能なライブラリの一覧が表示されます。この中から、IRremoteを選

択すると、リストの右下に [インストール] ボタンが表示されるのでそれをクリックしま

す。ライブラリマネージャの検索フィルタに [IRremote]を入力して絞り込むと、簡単に

見つけることができるでしょう。

ライブラリの利用

Arduino IDE メニューから、[ファイル] => [スケッチの例] を選択すると、リストに

IRremote フォルダが追加されているのが確認できます。IRremote フォルダの中を確認

すると、いくつかのサンプルスケッチがあり、選択して実行することができます。

赤外線リモコンが送信するコードを解析するには、サンプルスケッチ IRrecvDumpV2

を利用するとよいでしょう。赤外線レシーバーでリモコンコードを受信する場合には、赤

外線レシーバーが割り当てられている 11番ピンを指定して irrecv(11)コンストラクタを

使用してスケッチを作成します。

赤外線 LED でリモコンコードを送信する場合には、サンプルスケッチ IRsendDemo

を参考にするのがよいでしょう。

4.2.3 OLEDディスプレイのライブラリ

IoT-BOOSTERの OLED1に OLEDディスプレイを搭載することができます。

OLEDディスプレイを利用するためのライブラリとして、U8g2ライブラリを使用する

例を示します。U8g2ライブラリは、Arduino IDEのライブラリマネージャを利用してイ

ンストールすることができます。ライブラリマネージャの検索フィルタに [U8g2]を入力

して絞り込むと、図 4.2のように表示されます。

ライブラリマネージャのダイアログ上でインストールするライブラリの欄をクリックす

ると、インストールボタンが表示されるので、最新バージョンを選択して、ライブラリを

インストールします。

このライブラリは、以下の URLで取得することもできます。

https://github.com/olikraus/u8g2

また、マニュアルは、以下の URLで参照することができます。

https://github.com/olikraus/u8g2/wiki

ライブラリのインストール後、Arduino IDEメニューから [ファイル] ⇒ [スケッチの

例] を選択すると、リストに U8g2 フォルダが追加されているのが確認できます。U8g2

フォルダの中を確認するといくつかのサンプルスケッチがあり、選択して実行することが

できます。

Page 22: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 4章 環境整備とサンプルスケッチ 17

図 4.2 ライブラリマネージャを利用した U8g2ライブラリの導入

デモ用のスケッチの中には、[full buffer]、[page buffer]の分類があります。[full buffer]

に分類されているデモは、RAM メモリが十分にある MEGA などを対象にしたもので、

[page buffer] に分類されているデモは、RAM メモリが少ない UNO を対象にしたもの

です。

例として [u8g2] ⇒ [page buffer] ⇒ [GraphicsTest] を選択します。このスケッチは、

デモ用のグラフィック表示を行うものです。

このサンプルスケッチをコンパイル・実行するためには、コメントアウトされたリスト

の中から適切な u8g2コンストラクタを選択するか、自分自身で追加する必要があります。

ここで利用する OLEDディスプレイは、コントローラとして SSD1306を使用しており、

I2Cインターフェースで接続されているので、サンプルスケッチの 60行あたりに、以下

のコンストラクタを追加してください。� �U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE) ;� �

図 4.3 OLEDディスプレイ (SSD1306)用のコンストラクタ

OLED ディスプレイに文字しか表示しない場合には、軽量な U8x8 ライブラリを使用

することができます。U8x8libは U8g2libに組み込まれていますが、両者で利用できるコ

ンストラクタやメソッドは異なっていますので、別のライブラリと考えて利用する必要が

あります。

U8x8ライブラリを利用する場合には、以下のコンストラクタを使用します。� �U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(U8X8_PIN_NONE) ;� �

図 4.4 OLEDディスプレイ (SSD1306)用の文字表示専用コンストラクタ

Page 23: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 4章 環境整備とサンプルスケッチ 18

このコンストラクタの追加により、文字表示専用のライブラリを使用したスケッチのコ

ンパイル、実行ができるようになります。

4.2.4 DS3231リアルタイムクロックライブラリ

DS3231 を利用するためには下記の URL から入手できる RtcDS3231 ライブラリを

Arduino IDEにインストールして利用します。

https://github.com/Makuna/Rtc

4.2.5 WS2812/NeoPixel カラー LED

WS2812/NeoPixelは CN2/CN3に接続して利用することができます。

IoT-BOOSTER で利用できるカラー LED:WS2812B には、LED の発光制御用の IC

が組み込まれています。この ICのおかげで、カラー LEDの色や明るさを 1本の信号線

で制御できるのですが、その制御信号として、高速かつ正確なタイミングの制御信号を生

成する必要があります。このようなプログラムを作成するためには、MCU(Arduinoのマ

イクロコントローラ:ATmega328P)のマシン語を用いたプログラミングの知識なども必

要になり少々面倒なのですが、Adafruit 社がオープンソースライセンスで公開している

NeoPixel ライブラリ*1を利用すると、WS2812B を簡単に制御することができるように

なります。

NeoPixelライブラリは以下の URLで公開されています。

https://github.com/adafruit/Adafruit_NeoPixel

Adafruitの NeoPixelに関するWebページは次のとおりです。

https://learn.adafruit.com/adafruit-neopixel-uberguide/overview

ライブラリのインストール

NeoPixelライブラリは、Arduino IDEのライブラリ管理機能を利用して簡単にインス

トールすることができます。

Arduino IDEのメニューバーから、[スケッチ] ⇒ [ライブラリをインクルード] ⇒ [ラ

イブラリを管理...] を選択します。図 4.5に示すような [ライブラリマネージャ]ダイアロ

グが開きますので、[Adafruit NeoPixel Library] の項目を見つけてクリックします。な

お、項目をスクロールして見つけるのが面倒であれば、ダイアログの右上の [検索をフィ

ルタ...]と表示されている入力枠に [NeoPixel]と入力すると、候補が絞られます。項目の

右下に [インストール]ボタンが出てきますので、それをクリックするとライブラリがイン

ストールされます。

*1 高機能で利便性の高いライブラリをオープンライセンスで公開されている Adafruit 社に感謝いたします。

Page 24: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 4章 環境整備とサンプルスケッチ 19

図 4.5 カラー LEDライブラリ

ライブラリの利用

ライブラリがインストールされると、メニューバーの [ファイル] ⇒ [スケッチの例...]

を選択すると、インストールされた NeoPixelライブラリに関する項目が追加されている

ことがわかります。その項目を選択すると、いくつかのデモプログラムが表示されます。

ライブラリのテストとしては、カラー LEDの鮮やかな色の変化を楽しめる strandtest

を使用するとよいでしょう。スケッチを開いたら、#defineで 6が設定されている信号線

PINを 9もしくは 10に設定します。また、Adafruit NeoPixelコンストラクタの1番目

の引数の 60を、実際に接続するカラー LEDの個数に変更します。

4.3 サンプルスケッチの実行

IoT-BOOSTERの利用例として、以下のようなサンプルスケッチを示します。

• スイッチと圧電スピーカー• BLINK:LEDの単純な点滅

• 明るさセンサーの利用• OLEDディスプレイ

• リアルタイムクロック• 超音波距離センサー• RCサーボ

4.3.1 スイッチと圧電スピーカー

SW1-SW3を押すと、それぞれ異なる音を鳴らすスケッチを以下に示します。タクトス

イッチにはプルアップ抵抗がついていないので、対応するデジタルピンの初期化の際に、

Page 25: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 4章 環境整備とサンプルスケッチ 20

INPUT PULLUPを使用して信号端子の内蔵プルアップを有効にしてください。� �#define SW1 2

#define SW2 4

#define SW3 7

#define SW4 8

#define SOUNDER 13

void setup() {

pinMode(SW1, INPUT_PULLUP) ;

pinMode(SW2, INPUT_PULLUP) ;

pinMode(SW3, INPUT_PULLUP) ;

}

void loop() {

int hz = 0 ;

if (digitalRead(SW1) == LOW)

hz += 200 ;

if (digitalRead(SW2) == LOW)

hz += 400 ;

if (digitalRead(SW3) == LOW)

hz += 800 ;

if (hz != 0)

tone(SOUNDER, hz) ;

else

noTone(SOUNDER) ;

delay(100) ;

}� �図 4.6 スイッチと圧電スピーカーのサンプルスケッチ

4.3.2 BLINK:LEDの単純な点滅

電子工作界の hello world、LEDの点滅スケッチを実行しましょう。

Arduino IDEの [ファイル] ⇒ [スケッチの例] ⇒ [01.Basics]から Blinkを選択してく

ださい。IoT-BOOSTERの LEDは 5番ピンと 6番ピンに接続されているので、スケッ

チの pinMode(),digitalWrite()の第 1引数を 5もしくは 6に変更します。

Page 26: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 4章 環境整備とサンプルスケッチ 21

� �// the setup function runs once when you press reset or power the board

void setup() {

// initialize digital pin 13 as an output.

pinMode(5, OUTPUT);

}

// the loop function runs over and over again forever

void loop() {

digitalWrite(5, HIGH); // turn the LED on (HIGH is the voltage level)

delay(1000); // wait for a second

digitalWrite(5, LOW); // turn the LED off by making the voltage LOW

delay(1000); // wait for a second

}� �図 4.7 BLINK:LEDの単純な点滅

4.3.3 明るさセンサーの利用

明るさセンサーの値は、analogRead(0) で簡単に読み取ることができます。analo-

gRead(0)の値は、0~1023で、暗いときに 0となります。� �void setup(void)

{

Serial.begin(115200) ;

}

void loop(void)

{

Serial.println(analogRead(0)); // 明るさセンサーの値

delay(1000);

}� �図 4.8 明るさセンサー値のシリアル出力

スケッチがコンパイルされ IoT-BOOSTERに正しく書き込まれたら、シリアルモニタ

を開いてください。シリアルモニタに明るさの計測値が出力されます。

4.3.4 BME280環境センサー

BME280環境センサーを使用する際には、BME280I2C ライブラリを使用します。

BME280I2C ライブラリを使用したサンプルスケッチを図 4.9に示します。ライブラリ

Page 27: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 4章 環境整備とサンプルスケッチ 22

のサンプルスケッチ BME 280 I2C Testの簡略版です。� �#include <BME280I2C.h>

BME280I2C bme;

#define PRESSURE_HPA 1 // ヘクトパスカル

void setup()

{

Serial.begin(115200) ;

while (!bme.begin()) {

delay(1000) ;

}

}

void loop()

{

float temp ; // 温度float hum ; // 湿度float pres ; // 気圧

// 気圧 (hPa)、温度 (摂氏)、湿度を取得bme.read(pres, temp, hum, true, PRESSURE_HPA) ;

Serial.println("---") ;

Serial.print("Temp: ") ;

Serial.print(temp) ;

Serial.println(" C") ;

Serial.print("Humidity: ") ;

Serial.print(hum) ;

Serial.println(" % RH") ;

Serial.print("Pressure: ") ;

Serial.print(pres) ;

Serial.println(" hPa") ;

delay(1000) ;

}� �図 4.9 BME280環境センサーのサンプルスケッチ

BME280の計測結果を OLEDに表示するサンプルスケッチを図 4.10に示します。

Page 28: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 4章 環境整備とサンプルスケッチ 23

� �#include <U8x8lib.h>

#include <BME280I2C.h>

// SSD1306をテキストディスプレイとして利用するためのコンストラクタU8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(U8X8_PIN_NONE) ;

BME280I2C bme;

#define PRESSURE_HPA 1 // ヘクトパスカル

void setup()

{

u8x8.begin() ;

u8x8.setFont(u8x8_font_artossans8_r) ;

while (!bme.begin()) {

delay(1000) ;

}

}

void loop()

{

float temp ; // 温度float hum ; // 湿度float pres ; // 気圧

// 気圧 (hPa)、温度 (摂氏)、湿度を取得bme.read(pres, temp, hum, true, PRESSURE_HPA) ;

u8x8.clear() ; // 画面をクリアしカーソルを左上に戻す

u8x8.println("BME280\nEnv. Sensor\n");

u8x8.print(temp);

u8x8.println(" C");

u8x8.print(hum);

u8x8.println(" % RH");

u8x8.print(pres);

u8x8.println(" hPa");

delay(1000);

}� �図 4.10 BME280環境センサーの計測結果を OLEDに表示するサンプルスケッチ

Page 29: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 4章 環境整備とサンプルスケッチ 24

4.3.5 OLEDディスプレイ

OLEDディスプレイを使用する際には、U8g2libライブラリを使用します。U8g2libラ

イブラリの使用法は、以下のWEBページに紹介されています。

https://github.com/olikraus/u8g2/wiki/u8g2reference

U8g2lib ライブラリを使用したサンプルスケッチを図 4.11 に示します。U8g2lib ライ

ブラリを使用する際には、まず、ヘッダーファイル [U8g2lib.h]をインクルードします。� �#include <U8g2lib.h>

U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE) ;

void setup(void)

{

u8g2.begin() ;

u8g2.setFont(u8g2_font_ncenB10_tr) ;

}

void loop(void)

{

u8g2.firstPage() ;

do {

u8g2.drawStr(0, 30, "Hello, MicroFan!") ;

u8g2.setCursor(50, 50) ;

u8g2.print(millis()/100) ;

} while( u8g2.nextPage() ) ;

delay(100) ;

}� �図 4.11 OLEDディスプレイのサンプルスケッチ

OLED ディスプレイに文字しか表示しない場合には、メモリの使用量が少ない軽量な

U8x8ライブラリを使用することができます。U8x8ライブラリの詳細な使用法は、以下

のWEBページに紹介されています。

https://github.com/olikraus/u8g2/wiki/u8x8reference

U8x8ライブラリを使用したサンプルスケッチを図 4.12に示します。U8x8ライブラリ

を使用する際には、まず、ヘッダーファイル [U8x8lib.h]をインクルードします。

Page 30: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 4章 環境整備とサンプルスケッチ 25

� �#include <U8x8lib.h>

// SSD1306をテキストディスプレイとして利用するためのコンストラクタU8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(U8X8_PIN_NONE) ;

void setup(void)

{

u8x8.begin() ;

u8x8.setFont(u8x8_font_artossans8_r) ; // フォントの指定}

void loop(void)

{

u8x8.clear() ; // 画面をクリアしカーソルを左上に戻す

u8x8.println("MicroFan") ; // println()は文字列の表示後に改行u8x8.println("IoT-BOOSTER\n") ;

u8x8.print("OLED") ; // print() は改行しないので文字列を継続表示できるu8x8.print(" 128x64\n") ; // print()で改行したい場合には\nを指定u8x8.println(millis()) ; // 整数値の表示u8x8.println(123.45) ; // 実数値の表示

delay(1000);

}� �図 4.12 OLEDディスプレイの文字専用出力

4.3.6 リアルタイムクロック

CN10にリアルタイムクロック DS3231を接続して日時表示するスケッチを以下に示し

ます。時間をシリアルモニタに出力する例を 4.13 に、OLED に表示する例を 4.14 に示

します。

リアルタイムクロックモジュールは、最初の状態では適切な日時が設定されておらず、

でたらめな日時が表示されるようです。私の例では、2000年の適当な日時が表示されま

した。

リアルタイムクロックモジュールに正確な日時を設定するのは少し面倒ですが、おお

ざっぱな時間を設定するのは簡単にできます。上記のスケッチの setup()中の2行のコメ

ントを外して実行できるようにしてコンパイルし、スケッチを Arduinoボードに書き込

んで実行すると、コンパイルを行った日時がリアルタイムクロックに設定されます。ス

ケッチのコンパイルとスケッチの実行では少し時間差があるので、リアルタイムクロック

モジュールに 10-20秒程度遅れた時間を設定することになりますが、それなりの日時を簡

Page 31: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 4章 環境整備とサンプルスケッチ 26

� �#include <RtcDS3231.h>

RtcDS3231 Rtc ;

void setup(void){

Serial.begin(115200) ;

Rtc.Begin() ;

// DS3231の日時を「それなりの値」に設定する場合に、以下の2行をコメントアウト// RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__) ;// Rtc.SetDateTime(compiled) ;}

void loop (){

char dbuff[12], tbuff[12] ;

RtcDateTime dt = Rtc.GetDateTime() ;

sprintf(dbuff, "%04u/%02u/%02u", dt.Year(), dt.Month(), dt.Day()) ;sprintf(tbuff, " %02u:%02u:%02u", dt.Hour(), dt.Minute(), dt.Second()) ;

Serial.println("---") ;Serial.println(dbuff) ;Serial.println(tbuff) ;

delay(1000) ;}� �

図 4.13 リアルタイムクロックのサンプルスケッチ

単に設定できます。この方法は、ライブラリのデモプログラムの中に記載されていたもの

です。

一度リアルタイムクロックに日時を設定すると、リアルタイムクロックは電池でバック

アップされているため、Arduino本体の電源を切っても日時は自動的に更新されます。

Page 32: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 4章 環境整備とサンプルスケッチ 27

� �#include <U8g2lib.h>#include <RtcDS3231.h>

U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE) ;RtcDS3231 Rtc ;

void setup(void){

u8g2.begin() ;u8g2.setColorIndex(1) ; // pixel onu8g2.setFont(u8g_font_unifont) ;

Rtc.Begin() ;

// DS3231の日時を「それなりの値」に設定する場合に、以下の2行をコメントアウト// RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__) ;// Rtc.SetDateTime(compiled) ;}

void loop (){

char dbuff[12], tbuff[12] ;

RtcDateTime dt = Rtc.GetDateTime() ;

sprintf(dbuff, "%04u/%02u/%02u", dt.Year(), dt.Month(), dt.Day()) ;sprintf(tbuff, " %02u:%02u:%02u", dt.Hour(), dt.Minute(), dt.Second()) ;

u8g2.firstPage() ;do {u8g2.drawStr( 20, 32, dbuff) ;u8g2.drawStr( 20, 48, tbuff) ;

} while( u8g2.nextPage() ) ;

delay(100) ;}� �

図 4.14 リアルタイムクロックのサンプルスケッチ

Page 33: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 4章 環境整備とサンプルスケッチ 28

4.3.7 超音波距離センサー

CN8 に超音波距離センサー HC-SR04 を接続して計測した距離を表示するスケッチを

以下に示します。

HC-SR04の利用には特別なライブラリは必要ありません。Arduinoの pulseIn関数を

利用して、超音波の反射時間を計測して、距離を求めます。

Page 34: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 4章 環境整備とサンプルスケッチ 29

� �#include <U8x8lib.h>

U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(U8X8_PIN_NONE) ;

#define USDS_TRIG 16 // A2

#define USDS_ECHO 17 // A3

#define USDS_TIMEOUT (100*1000) // us

#define ONSOKU (340.0*100) // cm

void setup()

{

u8x8.begin() ;

u8x8.setFont(u8x8_font_artossans8_r) ;

pinMode(USDS_TRIG, OUTPUT);

digitalWrite(USDS_TRIG, LOW) ;

pinMode(USDS_ECHO, INPUT);

}

void loop()

{

int duration ;

float distance ;

digitalWrite(USDS_TRIG, HIGH) ;

delayMicroseconds(10) ;

digitalWrite(USDS_TRIG, LOW) ;

duration = pulseIn(USDS_ECHO, HIGH, USDS_TIMEOUT) ;

if (duration > 0) {

// 音速: 340m/s = 34000cm/s = 0.034cm/us

distance = duration / 2.0 * ONSOKU / 1000000 ;

u8x8.clear() ; // 画面をクリアしカーソルを左上に戻す

u8x8.println("HC-SR04\n");

u8x8.print(duration);

u8x8.println(" us ");

u8x8.print(distance);

u8x8.println(" cm");

}

delay(200) ;

}� �図 4.15 超音波距離センサーのサンプルスケッチ

Page 35: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 4章 環境整備とサンプルスケッチ 30

4.3.8 RCサーボ

RCサーボも、WS2812/NeoPixelと同様に、CN2/CN3に接続して利用することがで

きます。

RCサーボ用の Servoライブラリは、基本的なライブラリとして Arduino IDEに組み

込まれており、改めてライブラリをインストールしなくても利用できます。

サーボライブラリの詳細は以下の URLを参照してください。

https://www.arduino.cc/en/Reference/Servo� �#include <Servo.h>

Servo myservo;

void setup()

{

myservo.attach(9); // RCサーボを接続する CN2は 9番端子

}

void loop()

{

int pos;

for(pos = 0; pos <= 180; pos += 1) { // 0度から 180度へ

myservo.write(pos);

delay(15);

}

for(pos = 180; pos>=0; pos-=1) { // 180度から 0度へ

myservo.write(pos);

delay(15);

}

}� �図 4.16 RCサーボのサンプルスケッチ

Page 36: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

31

第 5章

資料

5.1 IoT-BOOSTERの回路図

IoT-BOOSTERの回路図を図 5.1に示します。

図 5.1 IoT-BOOSTERの回路図

Page 37: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 5章 資料 32

タクトスイッチにプルアップ抵抗が配置されていませんので、タクトスイッチを利用す

る場合には、対応するデジタルピンの内蔵プルアップ機能を利用する設定を行ってくださ

さい。

5.2 Arduinoボードのピン接続

IoT-BOOSTERに接続する Arduino UNO R3のピン接続を表 5.1に示します。

表 5.1 Arduinoボードのピン接続

ピン番号 CLCD STACKでの利用 備考

D0 - RX: USBインターフェースに接続

D1 - TX: USBインターフェースに接続

D2 SW1

D3 赤外線 LED

D4 SW2

D5 LED1 PWM

D6 LED2 PWM

D7 SW3

D8 SW4

D9 CN2 PWM

D10 CN3 PWM

D11 赤外線レシーバー

D12 CN5

D13 圧電スピーカー

AREF -

SDA I2Cデバイスへ 3.3Vにも変換

SCL I2Cデバイスへ 3.3Vにも変換

A0 明るさセンサー

A1 CN4

A2 CN8:HCSR-04:TRIG

A3 CN8:HCSR-04:ECHO

A4 - SDAとして使用

A5 - SCLとして使用

Page 38: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 5章 資料 33

5.3 ハードウェア拡張用コネクタ

IoT-BOOSTERには、ハードウェアの拡張を行えるように、Arduinoの信号線の引き

出しコネクタが用意されています。信号線は、CN1-CN2としてまとめられています。

5.3.1 CN2/CN3端子

CN2/CN3端子には、5Vの電源と信号を使用する RCサーボやWS2812カラー LED

を接続することができます。

表 5.2 CN2ピン配置

ピン番号 信号線 備考

1 GND

2 5V

3 D9 デジタル

表 5.3 CN3ピン配置

ピン番号 信号線 備考

1 GND

2 5V

3 D10 デジタル

5.3.2 CN4/CN5端子

CN2/CN3端子と信号線の配置が異なっています。

CN4/CN5 端子には、5V の電源と 3.3V の信号を使用する焦電(人感)センサー

HC-SR501を接続することができます。

また、CN4はアナログ入力として利用することもできます。

表 5.4 CN4ピン配置

ピン番号 信号線 備考

1 GND

2 A1 デジタル/アナログ

3 5V

Page 39: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 5章 資料 34

表 5.5 CN5ピン配置

ピン番号 信号線 備考

1 GND

2 D12 デジタル

3 5V

5.3.3 CN6: I2C端子 (3.3V)

CN6は、3.3Vの I2Cデバイスを接続するための端子です。多様なセンサーや機器を接

続できるため、システムの機能強化に活用することができます。

I2C信号線にはプルアップ抵抗が必要ですが、CN1に標準で装備されている BME280

モジュールにプルアップ抵抗が組み込まれているため、CN6に接続する I2Cデバイスに

プルアップ抵抗は必要ありません。

CN6のピン配置を表 5.6に示します。

表 5.6 CN6ピン配置

ピン番号 信号線 備考

1 GND

2 3V3

3 SDA 3.3V

4 SCL 3.3V

5.3.4 CN7: I2C端子 (5V)

CN7 は、5V の I2C デバイスを接続するための端子です。多様なセンサーや機器を接

続できるため、システムの機能強化に活用することができます。

I2C信号線にはプルアップ抵抗が必要ですが、IoT-BOOSTERにはプルアップ抵抗が

組み込まれているため、CN7 に接続する I2C デバイスにプルアップ抵抗は必要ありま

せん。

CN7のピン配置を表 5.7に示します。

5.3.5 CN8: 超音波センサー/アナログ信号端子

CN8には、IoT-BOOSTERキットとは別途調達した超音波距離センサー HC-SR04を

接続できます。CN8のピン配置を表 5.8に示します。

CN8は、超音波センサーを利用しない場合には、アナログ信号端子として利用するこ

ともできます。

Page 40: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 5章 資料 35

表 5.7 CN7ピン配置

ピン番号 信号線 備考

1 GND

2 5V

3 SDA 5V

4 SCL 5V

表 5.8 CN8ピン配置

ピン番号 信号線 備考

1 5V

2 A2 HC-SR04:TRIG

3 A3 HC-SR04:ECHO

4 GND

5.3.6 CN9: 加速度・ジャイロセンサ MPU6050端子

CN9は、加速度・ジャイロセンサMPU6050を搭載したサブボードを接続するための

コネクタで、別途調達したセンサーモジュールを接続します。CN9 のピン配置を表 5.9

に示します。

Arduinoボードとの接続は I2Cで、スレーブアドレスは 0x69です。

電源は 5Vを供給していますが、センサーボードに 3.3Vに変換する電源レギュレータ

が搭載されており、センサーと I2C信号線は 3.3Vで駆動されます。

表 5.9 CN9ピン配置

ピン番号 信号線 備考

1 5V

2 GND

3 SCL 3.3V

4 SDA 3.3V

5 -

6 -

7 AD0 3.3Vに固定

8 -

Page 41: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 5章 資料 36

5.3.7 CN10: リアルタイムクロック

CN10は、リアルタイムクロック (RTC)の DS3231とバックアップ用の電池を搭載し

たサブボードを接続するためのコネクタで、IoT-BOOSTER キットとは別途調達した

DS3231モジュールを接続することができます。CN10のピン配置を表 5.10に示します。

Arduinoボードとの接続は I2Cで、スレーブアドレスは 0x3Eです。

DS3231は 3.3Vで駆動されます。

表 5.10 CN10ピン配置

ピン番号 信号線 備考

1 3V3

2 SDA 3.3V

3 SCL 3.3V

4 -

5 GND

5.3.8 CN11: デジタル信号端子

CN11は、CN2-CN5で信号端子が不足する際に利用することができるデジタル信号端

子です。CN11のピン配置を表 5.11に示します。

CN11 の信号と SW1-SW4 の信号は共用となっているため、CN11 の信号線を利用す

る際には、該当する信号線に接続されているタクトスイッチの使用を控える必要があり

ます。

タクトスイッチの信号線と CN11の信号線は共用となっていますが、プロアップ抵抗は

接続されていないため、タクトスイッチを押さない限りは、冗長な外部回路が接続されて

いない入出力端子として利用できます。

表 5.11 CN11ピン配置

ピン番号 信号線 備考

1 GND

2 IOREF 5V

3 D2

4 D4

5 D7

6 D8

Page 42: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

37

第 6章

購入および問い合わせ先

6.1 ご協力のお願い

製品をより良くし、多くの方々にお楽しみいただけるよう、製品の向上に努めて参り

ます。問題点やお気づきの点、あるいは製品の企画に対するご希望などございましたら、

[email protected]までご連絡いただけますようよろしくお願いいたします。

末永くご愛顧いただけますよう、お願いいたします。

6.2 販売:ネットショップ

製品の販売はネットショップで行っています。対面販売は行っておりません。

• マイクロファン Yahoo!ショップ

WEBアドレス:https://store.shopping.yahoo.co.jp/microfan/

• アマゾンWEBアドレス:https://www.amazon.co.jp/s?merchant=A28NHPRKJDC95B

6.3 製品情報

マイクロファン ラボ

WEBアドレス:http://www.microfan.jp/

マイクロファンの製品情報や活用情報を紹介しています。

6.4 問い合わせ先

株式会社ピープルメディア マイクロファン事業部

E-Mail: [email protected]

TEL: 092-938-0450

お問い合わせは基本的にメイルでお願いいたします。

Page 43: IoT-BOOSTER-R1IoT-BOOSTER は家庭用のIoT 機器の開発や実験の中 核となる機能をコンパクトな基板にまとめており、IoT 機器の試作や実験を行う人が、高

第 6章 購入および問い合わせ先 38

6.5 所在地

株式会社ピープルメディア マイクロファン事業部

〒811-2316 福岡県糟屋郡粕屋町長者原西 2-2-22-503