LCD1602とI2Cモジュールを使ったSharp製赤外線距離モジュールのArduinoコードとビデオ

LCD1602とI2Cモジュールを使ったSharp製赤外線距離モジュールのArduinoコードとビデオ

このプロジェクトガイドでは、Sharp製赤外線(IR)距離センサーとLCD1602ディスプレイを使って、シンプルでありながら効果的な距離測定システムを構築する方法を案内します。このセットアップにより、特定の範囲内の距離を正確に測定し、その結果を画面に直接表示できるため、さまざまなDIY電子工作に最適です。

Sharpt IR distance sensor

このシステムの実用的な使用例およびプロジェクトのアイデアには、次のようなものがあります:

  • バンパーの損傷を防ぐ自動駐車支援システムを構築する。
  • タンクや井戸用の簡単な水位センサーを作る。
  • 非接触式液体ディスペンサーを開発中。
  • 近接検知による基本的な防犯アラームの実装
  • ホッパーやビンの充填レベル表示器を作る。
  • 小型ロボットやラジコン車両向けの衝突回避システムの設計

ハードウェア/コンポーネント

このプロジェクトを完了するには、以下のコンポーネントが必要です:

  • Arduino Uno または互換ボード
  • シャープ 赤外線距離センサー(型番 GP2Y0A41SK0F、測定距離4〜30cm)
  • LCD1602(I2Cモジュール付き、配線が簡単)
  • ブレッドボード(任意、試作用)
  • ジャンパー線
  • Arduinoの電源供給およびプログラミング用USBケーブル

配線ガイド

Arduino wiring for Sharp IR sensor with LCD1602
Arduino wiring for Sharp IR sensor with LCD1602

シャープ製赤外線センサーとI2Cモジュール付きLCD1602をArduinoに接続するのは、I2CモジュールがLCDに必要な配線の数を減らしてくれるため簡単です。

SharpのIRセンサーには3本の配線があります:赤(5V)、黒(GND)、黄(出力)。赤い線をArduinoの5Vピンに、黒い線をArduinoの任意のGNDピンに、黄色の出力線をArduinoのアナログピンA0に接続してください(ビデオでは03:55)。

I2Cモジュール付きのLCD1602には4本の配線があります:VCC、GND、SDA、SCL。VCCピンをArduinoの5Vに、GNDピンをArduinoのGNDに接続してください。SDA(Serial Data Line)はArduinoのアナログピンA4に、SCL(Serial Clock Line)はArduinoのアナログピンA5に接続してください(動画の02:42)。

コードの説明

提供されたArduinoコードは、2つの主要なライブラリを利用しています:Wire.hI2C通信およびLiquidCrystal_I2C.hLCDを制御するため、そしてSharpIR.hSharpの赤外線センサー用です。コードのユーザー設定可能な部分は、主にセンサー定義とLCDの初期化に関するものです。

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

その線LiquidCrystal_I2C lcd(0x27, 16, 2);LCDオブジェクトを初期化します。最初のパラメータは、0x27(in video at 03:26)は、ほとんどのPCF8574ベースのI2C LCDモジュールのデフォルトのI2Cアドレスです。もしあなたのLCDが動作しない場合は、正しいアドレスを見つける必要があるかもしれません(一般的な代替は0x3F)。2番目のパラメータ、16, あなたのLCDが1行あたり16文字であることを指定し、3番目のパラメータは、2, は2行あることを示します。

#include <SharpIR.h>

#define IR A0 // define Sharp IR signal pin
#define model 430 // the model of the IR module
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
// model: an int that determines your sensor:
/*
 * GP2Y0A02YK0F --> "20150"
 GP2Y0A21YK --> "1080"
 GP2Y0A710K0F --> "100500"
  GP2YA41SK0F --> "430"
 */

SharpIR SharpIR(IR, model);

これらの行はシャープ製赤外線センサーを設定します。#define IR A0Sharp IRセンサーの出力線が接続されているArduinoのアナログピンを定義します。#define model 430(ビデオの04:27で)は重要です。なぜならそれがあなたのSharp IRセンサーの正確な型番を指定するからです。ライブラリはこのモデル番号を使って、センサーのアナログ電圧出力から距離(センチメートル)への正しい数学的変換を適用します。コメントブロックにはここで使うべき各種Sharp IRモデルとそれに対応する整数値が列挙されています。例えば、GP2Y0A21YKを使用している場合は、変更します。4301080

void setup()
{
  lcd.begin();
  lcd.backlight();
}

その中でsetup()関数,lcd.begin()LCDを初期化し、lcd.backlight()バックライトを点灯させ、画面が見えるようにします。

void loop()
{
  lcd.clear();
  lcd.print("Robojax IR Test");
  lcd.setCursor (0,1); // go to start of 2nd line
  int dis=SharpIR.distance();// gets the distance in cm
  String distance = String(dis);
  distance ="Distance: "+distance+"cm";
  lcd.print(distance);
  delay(500);
}

その中でloop()関数:

  • lcd.clear();ディスプレイ上の以前のテキストをすべて消去します。
  • lcd.print("Robojax IR Test");最初の行に静的なメッセージを出力します。
  • lcd.setCursor (0,1);カーソルを2行目の先頭に移動します(行は0から始まるため、0は1行目、1は2行目です)。
  • int dis=SharpIR.distance();〜を呼ぶdistance()センサーの値を読み取り、センチメートル単位の距離を表す整数に変換するためのSharpIRライブラリの関数(ビデオでは05:06)。これは測定値を取得するための中核的な関数です。
  • String distance = String(dis);印刷のために整数を文字列と直接連結できないので、整数値 distance を文字列に変換します。
  • distance ="Distance: "+distance+"cm";値の前に "Distance: " を、後に "cm" を付けるように文字列をフォーマットします。
  • lcd.print(distance);LCDに整形された距離文字列を表示します。
  • delay(500);500ミリ秒の一時停止を導入します(動画の06:00で)。この遅延はSharpセンサーの精度と安定性にとって重要です。値は調整できます: 増やすと精度が向上するかもしれませんが更新が遅くなり、減らすと更新は速くなりますが精度が低下する可能性があります。

ライブプロジェクト/デモンストレーション

部品が配線され、コードをArduinoにアップロードすると、システムは距離の測定と表示を開始します。プロジェクトは近距離での正確な測定を示しており、例えば物体が12 cmの位置にあるときに12 cmと表示され(ビデオの00:31)、10 cmの位置にあるときに10 cmと表示されます(ビデオの00:37)。

しかし、物体がさらに遠ざかると、特に15-20 cmを超えると、精度が低下することがあります。例えば、20 cmでは表示が21 cmになることがあり(ビデオの07:06で)、25 cmでは28 cmや29 cmと表示されることがあります(ビデオの07:32で)。この挙動はこれらの赤外線センサーの特性です。SharpのIRセンサーは、距離に応じて変化するアナログ電圧を出力します: 距離が増すと出力電圧は低下します(ビデオの07:56で)。

距離と電圧出力の関係は非線形であり、特にセンサーの測定範囲の端では顕著です。この非線形性のためにSharpIRライブラリが有用で、変動する電圧をより正確な距離に変換するためのキャリブレーションデータが含まれています。より長い距離で高精度を要求する用途では、その距離向けに設計された別のSharpIRモデルを選ぶか、カスタムのキャリブレーション曲線を実装する必要があるかもしれません。

  • [00:06] プロジェクトの紹介と概要
  • [01:10] Sharp製赤外線センサーの詳細とピン配列
  • [02:09] LCD I2Cモジュールの配線
  • [02:58] Arduinoコードの説明
  • [06:36] 距離測定の実演
  • [07:47] センサーの特性と精度の限界
  • [08:48] まとめと参考資料

画像

LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
Sharpt IR distance sensor GP2Y0A21YK0F
Sharpt IR distance sensor GP2Y0A21YK0F
Sharpt IR distance sensor
Sharpt IR distance sensor GP2Y0A21YK0F
Arduino wiring for Sharp IR sensor with LCD1602
Arduino wiring for Sharp IR sensor with LCD1602
70-This is the Arduino code and video for a Sharp Infrared Sensor Module with LCD1602 and I2C.
言語: C++
コピーしました!

必要かもしれないもの

リソースと参考文献

まだリソースはありません。

ファイル📁

Arduinoライブラリ(zip)

フリッツィングファイル

他のファイル