ソロでたのしむ

DIY、電子工作、キャンプ用品などの趣味を紹介します。

日常で使える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の許容電流を超えて動きがおかしくなったり故障したりする可能性を減らせます。

実用的な使用例

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

簡単に速度可変ができる上に静かなので、滑らかに動く作品を目指す場合はおすすめの組み合わせです。

www.solocamptouring.com

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

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

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

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です。なるべく多くの情報を20x4文字LCDに表示する目的で、GPSモジュール、加速度センサーモジュール、温湿度センサーから情報を得ています。

www.solocamptouring.com

 

Arduinoで距離を測る

Arduinoで距離を測る

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

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

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

www.solocamptouring.com

 

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

 

www.solocamptouring.com

 

Arduinoの電源について

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

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

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

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