ソロでたのしむ

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

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

 

スポンサーリンク

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

Arduinoで遊び始めてから、多くの作品をつくってきました。

その作品たちを簡単に紹介していますが、長めの記事になっていますので、もしArduinoで制御したい目的のものがあれば、下の目次をクリックして直行してみてください。

はじめに

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

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

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

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

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

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

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

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

配線

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

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

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

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

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

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

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

実用的な使用例

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

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

www.solocamptouring.com

 

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

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

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

 

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

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

 

実用的な使用例

表示したい文字数に応じて、これまでに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モジュール、加速度センサーモジュール、温湿度センサーから情報を得ています。

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扇風機を作ってみました。

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

www.solocamptouring.com

 

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

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

www.solocamptouring.com

 

Arduinoの電源について

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

車のアクセサー電源(普通はおおよそ12~14V)でもArduinoUNOやNanoは動く事になっていますが、高い電圧をかけ続けるとArduinoが熱を持つので、極力5~6V付近(種類によっては3.3V)で使用したいと思います。

私は、電圧安定化もかねて12Vから6Vへの電圧コンバーターを使い、さらに+側(12V側)の上流にはヒューズを入れて、Arduinoやモジュール類の電源として使っています。

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