Ардуино коды және Sharp IR қашықтық модуліне арналған бейне LCD1602 және I2C модулімен
Бұл жоба нұсқаулығы Sharp инфрақызыл (ИҚ) қашықтық сенсорын және LCD1602 дисплейін пайдаланып қарапайым, бірақ тиімді қашықтықты өлшеу жүйесін құруға көмектеседі. Бұл қондырғы белгілі бір диапазондағы қашықтықтарды дәл өлшеуге және оларды экранда тікелей көрсетуге мүмкіндік береді, бұл оны әртүрлі DIY электроника қосымшалары үшін өте қолайлы етеді.
Sharp аналогтық шығыс модульдері:
2-ден 15 см-ге дейін GP2Y0A51SK0F
4-тен 30 см-ге дейін GP2Y0A41SK0F / GP2Y0AF30 сериясы
10-нан 80 см-ге дейін GP2Y0A21YK0F
10-нан 150 см-ге дейін GP2Y0A60SZLF
20-дан 150 см-ге дейін GP2Y0A02YK0F
100-ден 550 см-ге дейін GP2Y0A710K0F

Бұл жүйеге арналған практикалық қолдану мысалдары мен жоба идеялары:
- Бампердің зақымдалуын болдырмау үшін автоматты тұрақ көмек жүйесін құру.
- Резервуарлар немесе ұңғымалар үшін қарапайым су деңгейі сенсорын жасау.
- Жанаспайтын сұйықтық диспенсерін жасау.
- Жақындықты анықтау арқылы қарапайым қауіпсіздік дабылын енгізу.
- Бункерлер немесе контейнерлер үшін толтыру деңгейінің индикаторын жасау.
- Кішкентай роботтар немесе RC көліктері үшін соқтығысуды болдырмау жүйесін жобалау.
Аппараттық құралдар/Компоненттер
Бұл жобаны аяқтау үшін сізге келесі компоненттер қажет:
- Arduino Uno немесе үйлесімді плата
- Sharp инфрақызыл қашықтық сенсоры (GP2Y0A41SK0F моделі, 4-тен 30 см-ге дейін өлшейді)
- I2C модулі бар LCD1602 (оңай қосу үшін)
- Макет тақтасы (қажет болса, прототип жасау үшін)
- Жалғау сымдары
- Arduino қуаты мен бағдарламалау үшін USB кабелі
Қосу нұсқаулығы

Sharp ИҚ сенсорын және I2C модулі бар LCD1602-ні Arduino-ға қосу оңай, себебі I2C модулі LCD үшін қажетті сымдар санын азайтады.
Sharp ИҚ сенсорының үш сымы бар: Қызыл (5V), Қара (Жер), және Сары (Шығыс). Қызыл сымды Arduino-ның 5V түйреуішіне, Қара сымды Arduino-дағы кез келген GND түйреуішіне, ал Сары шығыс сымын Arduino-ның A0 аналогтық түйреуішіне қосыңыз (бейнеде 03:55).
I2C модулі бар LCD1602 төрт сымнан тұрады: 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 коды екі негізгі кітапхананы пайдаланады: Wire.h I2C байланысы үшін және LiquidCrystal_I2C.h LCD-ді басқару үшін, және SharpIR.h Sharp ИҚ сенсоры үшін. Кодтың пайдаланушы конфигурациялайтын бөліктері негізінен сенсорды анықтауға және LCD инициализациясына қатысты.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// 16 таңба және 2 жолды дисплей үшін LCD мекенжайын 0x27 мәніне орнатыңыз
LiquidCrystal_I2C lcd(0x27, 16, 2);
LiquidCrystal_I2C lcd(0x27, 16, 2); жолы LCD нысанын инициализациялайды. Бірінші параметр, 0x27 (бейнеде 03:26), көптеген PCF8574 негізіндегі I2C LCD модульдерінің әдепкі I2C мекенжайы болып табылады. Егер LCD жұмыс істемесе, оның дұрыс мекенжайын табу қажет болуы мүмкін (жалпы баламалар 0x3F). Екінші параметр, 16, LCD-де әр жолда 16 таңба бар екенін көрсетеді, ал үшінші параметр, 2, оның 2 жолы бар екенін көрсетеді.
#include <SharpIR.h>
#define IR A0 // Sharp IR сигнал түйреуішін анықтаңыз
#define model 430 // IR модулінің моделі
// Robojax.com үшін Sharp IR коды
// ir: сенсорыңыз жалғанған түйреуіш
// model: сенсорыңызды анықтайтын бүтін сан:
/*
* GP2Y0A02YK0F --> "20150"
GP2Y0A21YK --> "1080"
GP2Y0A710K0F --> "100500"
GP2YA41SK0F --> "430"
*/
SharpIR SharpIR(IR, model);
Бұл жолдар Sharp ИҚ сенсорын орнатады. #define IR A0 Sharp ИҚ сенсорының шығыс сымы қосылған Arduino аналогтық түйреуішін анықтайды. #define model 430 (бейнеде 04:27) өте маңызды, себебі ол Sharp ИҚ сенсорыңыздың нақты моделін көрсетеді. Кітапхана сенсордың аналогтық кернеу шығысынан сантиметрдегі қашықтыққа дұрыс математикалық түрлендіруді қолдану үшін осы модель нөмірін пайдаланады. Түсініктеме блогы әртүрлі Sharp ИҚ модельдерін және осы жерде қолданылуы тиіс сәйкес бүтін мәндерді тізімдейді. Мысалы, егер сіз GP2Y0A21YK пайдалансаңыз, 430 мәнін 1080 мәніне өзгертуіңіз керек.
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); // 2-ші жолдың басына өтіңіз
int dis=SharpIR.distance();// қашықтықты см-мен алады
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);курсорды екінші жолдың басына жылжытады (0 — бірінші баған, 1 — екінші жол, өйткені жолдар 0-ден бастап саналады).int dis=SharpIR.distance();SharpIR кітапханасынанdistance()функциясын шақырып, сенсордың мәнін оқиды және оны сантиметрдегі қашықтықты білдіретін бүтін санға түрлендіреді (бейнеде 05:06). Бұл өлшеуді алудың негізгі функциясы.String distance = String(dis);бүтін қашықтықты жолға түрлендіреді, өйткені басып шығару үшін бүтін сандарды жолдармен тікелей біріктіру мүмкін емес.distance ="Distance: "+distance+"cm";мәннің алдына "Distance: " және одан кейін "cm" қосу арқылы жолды пішімдейді.lcd.print(distance);пішімделген қашықтық жолын LCD-де көрсетеді.delay(500);500 миллисекундтық үзіліс енгізеді (бейнеде 06:00). Бұл үзіліс Sharp сенсорының дәлдігі мен тұрақтылығы үшін маңызды. Бұл мәнді реттеуге болады: оны арттыру дәлдікті жақсартуы мүмкін, бірақ жаңартуларды баяулатады, ал азайту жаңартуларды жылдамдатады, бірақ дәлдікті төмендетуі мүмкін.
Тірі Жоба/Демонстрация
Компоненттер жалғанғаннан және код Arduino-ға жүктелгеннен кейін, жүйе қашықтықтарды өлшеп, көрсете бастайды. Жоба жақын қашықтықтарда дәл өлшеулерді көрсетеді, мысалы, нысан 12 см болғанда 12 см көрсетеді (бейнеде 00:31) және 10 см үшін 10 см (бейнеде 00:37).
Дегенмен, нысан алысырақ, әсіресе 15-20 см-ден ары қарай жылжығанда, дәлдік төмендеуі мүмкін. Мысалы, 20 см-де дисплей 21 см көрсетуі мүмкін (бейнеде 07:06), ал 25 см-де 28 немесе 29 см көрсетуі мүмкін (бейнеде 07:32). Бұл мінез-құлық осы инфрақызыл сенсорларға тән. Sharp IR сенсоры қашықтыққа қарай өзгеретін аналогтық кернеу шығарады: қашықтық артқан сайын, шығыс кернеуі төмендейді (бейнеде 07:56).
Қашықтық пен кернеу шығысы арасындағы байланыс сызықтық емес, әсіресе сенсор диапазонының шеткі нүктелерінде. Осы сызықтық еместік `SharpIR` кітапханасының пайдалы болуының себебі, өйткені ол осы өзгермелі кернеулерді дәлірек қашықтық көрсеткіштеріне түрлендіру үшін калибрлеу деректерін қамтиды. Ұзағырақ қашықтықтарда жоғары дәлдікті қажет ететін қолданбалар үшін осы қашықтықтарға арналған басқа Sharp IR моделін таңдау немесе арнайы калибрлеу қисықтарын енгізу қажет болуы мүмкін.
Бөлімдер
- [00:06] Жобаның кіріспесі және шолуы
- [01:10] Sharp IR сенсорының мәліметтері және қосқыштар
- [02:09] LCD I2C модулінің сымдарын жалғау
- [02:58] Arduino кодын түсіндіру
- [06:36] Қашықтықты өлшеу демонстрациясы
- [07:47] Сенсор сипаттамалары және дәлдік шектеулері
- [08:48] Қорытынды ескертулер және ресурстар
/*
* Sharp IR 555 (infrared) distance measurement module with LCD1602 and I2C for Arduino
* Measures the distance in cm.
* Watch the video https://youtu.be/RHgMwtKLEnE
* *
Original library: https://github.com/guillaume-rico/SharpIR
// Written and updated by Ahmad for Robojax.com
// on January 3, 2018 at 20:01 in Ajax, Ontario, Canada
// Get this code and other Arduino codes from Robojax.com
// Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
// all in one place.
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#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);
///////////////////***** start of Sharp IR
#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);
/////////////////////**** end of Sharp IR
void setup()
{
// Robojax code for LCD with I2C
// initialize the LCD,
lcd.begin();
// Turn on the backlight and print a message.
lcd.backlight();
// Robojax code for LCD with I2C
}
void loop()
{
//start of loop Robojax code for LCD with I2C
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);
//lcd.print(millis() / 1000);
delay(500);
//end of loopcode Robojax code for LCD with I2C
}
Сізге қажет болуы мүмкін нәрселер
-
АмазонкаBuy LCD1602-I2C from Amazonamzn.to
-
Амазонка
Ресурстар мен сілтемелер
Әлі ресурстар жоқ.
Файлдар📁
Arduino кітапханалары (zip)
-
Arduino library for sharp IR distance sensor
robojax-sharp_IR-master.zip
Техникалық сипаттама (pdf)
-
Sharp IR GP2Y0A21YK Infrared distance sensor datasheet
robojax_sharp_IR_GP2Y0A21YK_datasheet.pdf0.36 MB
Fritzing файлы
-
LCD LCD1602-I2C module with 4 wires
LCD1602-I2C.fzpz0.01 MB -
sharp ir sensor GP2Y0A02YK0F
sharp ir sensor GP2Y0A02YK0F .fzz
Басқа файлдар
-
Sharp GP2Y0A41SK0F Infrared distance sensor datasheet
robojax_sharp_IR_GP2Y0A41SK0F_datasheet.pdf0.84 MB -
Sharp GP2Y0A710K0F Infrared distance sensor datashee
robojax_sharp_IR_GP2Y0A710K0F_datasheet.pdf0.33 MB