ソロでたのしむ

キャンプ、電子工作、DIY、乗り物などの趣味を紹介

日常で使えるArduino 作品集。使い方とできることを回路やスケッチ付きで紹介します

Arduino の実用的な使用例と作品紹介〜車とバイク

Arduinoで遊び始めてから、その面白さにはまってしまい、次々に作品をつくってきました。

なるべく普段使えるものを作るようにしてきたので、ほとんどのものは今なお現役で動かしています。

その作品たちを簡単に紹介したいと思いますが、思いのほか作品が多くて、少し長めの記事になってしまいました。

既につくりたいものが決まっている場合は、下の目次をクリックして、その場所に直行していただくと、目的の情報を素早く発見できると思います。

回路図やスケッチ(プログラム)は、制作記事リンクのクリック先で確認していただけます。

日常で使えるArduino 作品集。使い方とできることを回路やスケッチ付きで紹介します

 

はじめに

Arduinoとサンプルスケッチ(プログラム)を使い、ブレッドボード上でLEDやモーターなどを作動させるだけでも楽しいのですが、ある程度扱えるようになってくると実用的なものに応用したい!との想いが強くなってきます。

ここでは、まずはサンプルスケッチでの基本的な動かし方、そして趣味の世界が多いですが、実用している作品例を紹介して、「Arduino を日常生活に活かしたい!」と考えている方に、少しでも参考にして頂ければいいなと思います。

冒頭の繰り返しになりますが、回路図やスケッチ(プログラム)は、それぞれの製作記事内で紹介しています。

参考にしていただけそうなものがあれば、記事へのリンクから、制作記事に直接移動できます。

なお、記事内の回路図作成にはFritzingを使いました。

ArduinoでLEDを光らせる(Lチカ)

 サンプルスケッチでLEDを光らせてみる

Arduino IDEのサンプルスケッチ(ファイル→スケッチ例→01.Basics→Blink)を使いますが、どうせならArduinoのオンボードLEDではなく外付けのLEDを光らせてみます。

LEDの配線

Arduino Lチカ 回路のつなぎかた

上の絵はArduino UNOで、右側の番号がふられているピンがデジタルピンです。光らせるLEDはどのデジタルピンにつないでもいいのですが、今回は7番を使う場合で進めます。

LEDをArduinoに直結すると、LEDに5V電圧が直接かかってしまうので、抵抗を直列でつないでおきます。

5V電圧において一般的な20mAのLEDであれば抵抗は150オーム、不安であれば少し大きめの抵抗値のものでも光ります。

LEDのサンプルスケッチに手を加える 

LEDを7番のデジタルピンにつないでいるので、サンプルスケッチの中に3か所登場する「LED_BUILTIN」を「7」に書き換えて使います。

無事に点滅したら、次は点滅周期を変えてarduinoにスケッチを送りなおして光らせてみるなどのプチ改造を繰り返すと、スケッチを作ってから実際に動かすという一連の操作に慣れてきます。

LEDの実用的な使用例

多数の3色LEDをコントロールすることが簡単に実現できて便利なWS2812Bモジュールを使って、いくつかイルミネーション作品をつくりました。

その1;好きな色で光らせてみる

64個のカラーLEDを使って、いろいろな光り方を選択できるようにして車に装着しました。

実用的とは言えませんが、装着した車内の雰囲気は盛り上げてくれます。

www.solocamptouring.com 

その2;ナイトライダー

ナイトライダーのボイスインジケータのように光るサウンドインジケータも作ってみました。

ドラマでは車内のステアリングホイール前に設置されていましたが、私は天井のコンソールに付けて楽しんでいます。

www.solocamptouring.com

その3;キャンプのテント周りのイルミネーション

キャンプでテントまわりの安全確保をしたいと思い、好みの光り方で、常夜灯を作ってみました。

省電力なのでモバイルバッテリーで一晩中使えて、遠くから自分のテントを発見しやすくなる効果もあり、たいへん便利です。

www.solocamptouring.com

その4;お部屋でキャンプファイヤー気分

家でもキャンプファイヤーの雰囲気が出せたら楽しいに違いない!と思い、フロアーランプにファイヤー フレーム パターンを仕込んでみました。

自分でもびっくりするくらい本物感がでていて、毎晩見入っています。

www.solocamptouring.com

その5;夜釣りで使う集魚灯

色や光り方を自由に変えられる点を活かして、魚の方から寄ってきてくれそうな集魚灯を、自作してみたくなりました。

これで爆釣できるか?!

www.solocamptouring.com

Arduinoでステップモーターを動かす 

 ステップモーターは、安価で入手しやすい28BYJ-48とドライバー基板のセットを使います。

安価で入手しやすい28BYJ-48とドライバー基板のセットを使いArduinoで動かす

ステップモーターの使い方

28BYJ-48はユニポーラのステップモーターのため、Arduino IDEのバイポーラモーター用のサンプルスケッチを使う場合は、工夫が必要になります。

そんな苦労をするくらいなら、サンプルスケッチを使わずに動かしてみます。

ステップモーターをシンプルに説明すると、内部の電磁石に順番に電気を流すことで、永久磁石がついている出力軸が回転します。

順番に電気を流す命令を送るのが、ドライバーのIN1~4に接続する4本の信号線です。

この4本の信号線を横に並べて,HIGH(5V)を1、LOW(0V)を0として、

1,0,0,0

1,1,0,0

0,1,0,0

0,1,1,0

0,0,1,0

0,0,1,1

0,0,0,1

1,0,0,1

 の8パターンの信号を順番に、そしてループして出し続ければ、ステップモーターの出力軸が回ります。

4本の信号線をArduinoのデジタルピン4~7につないでモーターを回すだけのスケッチを紹介します。

void setup()

{

  pinMode(4, OUTPUT);  

  pinMode(5, OUTPUT);  

  pinMode(6, OUTPUT);  

  pinMode(7, OUTPUT);  



  int speedL = 10;

}



void loop()

{

  digitalWrite(4, 1);    

  digitalWrite(5, 0);

  digitalWrite(6, 0);

  digitalWrite(7, 0);

  delay(speedL); 



  digitalWrite(4, 1);    

  digitalWrite(5, 1);

  digitalWrite(6, 0);

  digitalWrite(7, 0);

  delay(speedL); 



  digitalWrite(4, 0);    

  digitalWrite(5, 1);

  digitalWrite(6, 0);

  digitalWrite(7, 0);

  delay(speedL); 



  digitalWrite(4, 0);    

  digitalWrite(5, 1);

  digitalWrite(6, 1);

  digitalWrite(7, 0);

  delay(speedL); 



  digitalWrite(4, 0);    

  digitalWrite(5, 0);

  digitalWrite(6, 1);

  digitalWrite(7, 0);

  delay(speedL); 



  digitalWrite(4, 0);    

  digitalWrite(5, 0);

  digitalWrite(6, 1);

  digitalWrite(7, 1);

  delay(speedL); 



  digitalWrite(4, 0);    

  digitalWrite(5, 0);

  digitalWrite(6, 0);

  digitalWrite(7, 1);

  delay(speedL); 



  digitalWrite(4, 1);    

  digitalWrite(5, 0);

  digitalWrite(6, 0);

  digitalWrite(7, 1);

  delay(speedL); 

}

ステップモーターを動かすスケッチは様々な書き方(種類)があります。この次に紹介する実用作品の制作記事では、少し違った書き方になっています。

ここでは配線について詳しく紹介しませんが、一点おすすめしておきたい事があります。

モータードライバーの電源は、Arduinoの5V出力から取るのではなく、外部電源を使うようにしておくと、Arduinoの許容電流を超えて動きがおかしくなったり、故障したりする可能性を減らせます。

ステップモーターの実用的な使用例

その1;車の電動開閉バックモニター

12V用のステップモーター28BYJ-48を使って、リバースギアに連動する電動開閉バックモニターを作成して、車に装着しました。

簡単に速度制御ができる上に静かなので、滑らかに動く作品を目指す場合は、ステップモーターがおすすめです。

www.solocamptouring.com

 

youtu.be

その2;車の電動開閉テーブル

車用としては他にも、普段は格納しておきたい助手席用のテーブルを、電動開閉式で自作してみました。

自重の影響を受けない水平方向の動きなので、5V用のステップモーター28BYJ-48を使っています。

これもステップモーターのおかげで静かに動くので、それだけで高級感がある動きになります。

www.solocamptouring.com

その3;キャンプ用の電動ロティサリー(回転焼き器)

シンプルに回すだけですが、自在に回転数を変えられるステップモーターの利点を生かして、ロティサリーを作ってみました。

ソロキャンプで食べきれる具材の大きさは限られているので、持って行きやすいコンパクトなロティサリーを、モバイルバッテリーで動かしています。

食材が自動でクルクル回りながら焼かれているのを見ているだけで、自作した達成感に満たされます。

www.solocamptouring.com

その4;釣り竿のガイド取り付け用フィニッシングモーター

釣り竿DIY用のフィニッシングモーターは、エポキシ系の塗料が硬化するまでの間に垂れてしまわない為の、

  • 長い時間
  • ゆっくりと

釣り竿を回し続けるためのものです。

この条件、ステップモーターにピッタリ!!!と思いつき、フィニッシングモーターも自作してみました。

www.solocamptouring.com

 

Arduinoでサーボモーターを動かす

f:id:solocamptouring:20181007050128j:plain

ラジコンでよく使われる、DCサーボモーターを動かしてみます。

写真の2種類のサーボモーターは、どちらも3本の電線がついていて、その配線配列は同じです。

  • オレンジ色 ; PWM信号
  • 赤色    ; プラス電源
  • 茶色    ; マイナス電源(GND)

サーボモーターは電力を使うので、Arduinoで使う電源の電流量が少ない場合は、サーボモーターは別電源にしてマイナス電源をArduinoのGNDと繋ぎます。

PWM(Pulse width modulation、パルス幅変調)信号は、Arduinoのスケッチ(プログラム)で作ることもできますが、わざわざ複雑なスケッチを作るよりも、Arduino IDEに準備されているライブラリやスケッチを使う方が楽です。

サンプルスケッチでサーボモーターを動かす

Arduino IDEの、

ファイル → スケッチ例 → Servo → Knob

を選択します。

サーボモーター用のライブラリが使われているので、スケッチの最初の部分に、

#include <Servo.h>

が記載されています。

サンプルスケッチの配線は、

  • ポテンショメーター(ボリューム)は、A0
  • サーボモーターへのPWM信号は、D9

に接続するものになっています。

短いスケッチですが、ボリュームから得られる0~5Vの電圧に応じて、サーボモーターの出力軸角度が変わります。

後ほど紹介する実用的な使用例の作品も、ピン番号は違いますが、配線方法と動かし方は同じです。

ライブラリでサーボモーターを動かす

速度も制御したい場合は、GitHubのVarSpeedServoライブラリが便利です。

Arduino IDEに準備されている<Servo.h>ライブラリは、

  myservo.write(角度);  

で、フルスピードで目標角度まで動くものですが、<VarSpeedServo.h>ライブラリは、

  myservo1.write(角度, 速度, true);

で、動く速度を変えつつ、"true"で目標角度になるまで次のコマンドに移行しないように制限をかけることもできます。

サーボモーターの実用的な使用例:半自動飯盒炊飯器

キャンプ用のガスバーナー(コンロ)の火力をサーボモーターで制御して、自動炊飯器を作りました。

記事内で配線図やスケッチも紹介しているので、サーボモーターの具体的な配線や制御方法の参考にしてみてください。

www.solocamptouring.com

 

ArduinoでLCDに表示する

サンプルスケッチでLCDに表示する(hello world)

液晶ディスプレイ(Liquid Crystal Display、LCD)を初めて試してみる場合、「hello world」が有名です。

 Arduino IDEの、たいへん短いサンプルスケッチ(ファイル→スケッチ例→LiquidCrystal→HelloWorld)で動かすだけですが、LCDとの配線に少し手間がかかります。

f:id:solocamptouring:20171218192148j:plain

ブレッドボード上の配線(サンプルスケッチのピン選択とは異なります)

 

LCDの実用的な使用例

表示したい文字数に応じて、これまでに2種類の大きさのLCDを使ってみました。それぞれの使用例を、制作記事とともに紹介します。

f:id:solocamptouring:20171218161817j:plain

上が16x2文字、下が20x4文字のLCD

16x2文字LCDの実用例

GPSモジュールから、位置・高度・速度情報をArduinoに取り込んで、16x2文字のLCDに表示する作品を、車とバイクに装着しました。

f:id:solocamptouring:20180211222201j:plain

GPSモジュール

GPSモジュールは、緯度経度だけ扱うのであれば比較的に簡単ですが、高度などの計算に時間がかかる情報を取り出す場合は「その情報があるならば読み込む」ような命令文をスケッチに入れる工夫が必要です。

まずは16x2文字LCDと組み合わせた試作品で、試行錯誤しながらスケッチを修正して、GPSモジュールの使い方について勉強しました。

<車に装着した例>

www.solocamptouring.com

 

<バイクに装着した例>

車に取り付けた作品がたいへん便利に使えることがわかったので、コンパクトで防水性を考慮した作品も作って、オフロードバイクに取り付けました。

www.solocamptouring.com

 

20x4文字LCDの実用例:オーバーヘッド マルチモニター

 現在も車に装着しているLCDです。

一個のArduinoで、複数のセンサーからの情報を処理してみることを試してみたくなり、情報表示可能量を増やすために、20x4文字LCDを使いました。

現状では、GPSモジュール、加速度センサーモジュール、温湿度センサーから、8種類の情報を表示しています。

www.solocamptouring.com


Arduino project #1「GPSマルチモニター 」Multi-information monitor with GPS module

 

Arduinoで傾きや加速度を測る

f:id:solocamptouring:20180818065644j:plain

加速度センサーは、加速度や軸加速度、傾きを計測できるセンサーで、自律してバランスをとるロボットやドローンを自作する場合などに使われています。

実用的な使用例は、先述の「20x4文字LCDの使用例」の記事内に記載されているので、ここでは少し趣向を変えて、お試しで使ってみた記事を紹介しておきます。

www.solocamptouring.com

加速度センサーの実用的な使用例:クライノメーター(傾斜計)

安く入手できるセンサーなので、ドローンのような高度な作品でなくても実用してみたいと思い、簡易クライノメーター(傾斜計)のセンサーとして使って、先述の20x4文字LCDに車の傾きを表示しています。

簡易クライノメーター(傾斜計)を自作して、車の傾きを表示

Arduinoで距離を測る

Arduinoで距離を測る

測距センサーは、「距離を測る」というシンプルなものですが、近い将来にもっと様々な物が自動化されていくのに欠かせないセンサーです。

価格に応じて、測定時間、範囲、距離や精度が良くなりますが、趣味のArduino作品、おもちゃ、お掃除ロボットでは、数百円程度までのものを使うのが、一般的です。

手軽に入手できるものの中でもよく使われている、超音波センサーモジュール赤外線センサーモジュールについて、別の記事で性能を比較しながらまとめてみました。

www.solocamptouring.com

 

測距センサーの実用的な使用例

1/fゆらぎ風のUSB扇風機

測距センサーの弱点でもある、衣服などの柔らかい対象物の測定ではバラツキ幅が大きくなる特徴を逆に活かして、1/fゆらぎ風を起こすUSB扇風機を作ってみました。

仕事中に使っていますが、高原のような風で、眠気に襲われることもある!ほどの気持ち良さです。

www.solocamptouring.com

 

トイラジコンを自動走行させてみる

扱いやすい超音波モジュールとArduinoをトイラジコンと接続して、自動走行に挑戦しています。実用的ではありませんが、動きを見ていると癒されるようなものを目指しています。

まだ粗削りな動きしかできていないので、随時更新していきたいと思います。

www.solocamptouring.com

 

(おまけ) 車でArduinoを使う際の電源について

 最後に、車でArduino を使う場合の電源についての紹介です。

車のアクセサー電源(普通はおおよそ12~14V)でも、ArduinoUNOやNanoは動きますが、このような高い電圧をかけ続けるとArduinoが熱を持ちます。

できることなら5~6V付近(種類によっては3.3V)で使用したいので、電圧安定化もかねて12Vから6Vへの電圧コンバーターを使い、上流の+側(12V側)にはヒューズを入れて、Arduinoやモジュール類の電源として使っています。

自作した電子回路を車で使うための安定化電源

車でArduino作品を動かすための電源として、5年以上使っていますが、駆動系と表示系の作品ともに、トラブルなく使えています。