Цепь датчика парковки заднего хода с сигнализацией

Попробуйте наш инструмент устранения неполадок





В этом посте мы собираемся построить цепь сигнализации датчика парковки заднего хода с использованием Arduino, ультразвукового датчика и модуля приемопередатчика 2,4 ГГц. Этот проект может быть дополнением к вашему автомобилю, если он не имеет встроенного парктроника.

Вступление

Предлагаемый проект имеет те же функции, что и традиционный датчик парковки, например, расстояние между автомобилем и препятствием на ЖК-дисплее и звуковой сигнал.



Предлагаемый проект можно использовать в качестве стационарного датчика парковки, то есть датчика, установленного на вашем гараже, или датчика мобильной парковки, то есть датчика, размещенного на задней части вашего автомобиля, если вы готовы пойти на небольшой риск подключения проекта к электрической системе автомобиля.

Однако мотивация этого проекта заключается в том, чтобы построить стационарный датчик парковки которые можно построить с нулевым риском.



Проект сигнализации датчика парковки с использованием Arduino состоит из двух частей: передатчика, который состоит из ультразвукового датчика, Arduino, зуммера и модуля приемопередатчика 2,4 ГГц. Эта схема будет измерять расстояние между автомобилем и препятствием.

Приемник состоит из модуля приемопередатчика 2,4 ГГц, Arduino и ЖК-дисплея 16x2.

Цепь приемника будет размещена внутри автомобиля с батареей 9В в качестве источника питания. Приемник отобразит расстояние между автомобилем и препятствием в метрах.

Передатчик будет передавать данные датчика на приемник в автомобиле по каналу 2,4 ГГц. Канал связи устанавливается с помощью модуля NRF24L01.

Теперь посмотрим на обзор модуля NRF24L01.

Иллюстрация NRF24L01:

Модуль NRF24L01

Этот модуль предназначен для установления двунаправленного канала связи между двумя микроконтроллерами. Он работает по протоколу связи SPI. Он имеет 125 различных каналов и максимальную скорость передачи данных 2 Мбит / с. Теоретически максимальная дальность полета составляет 100 метров.

Конфигурация контактов:

Он работает от 3,3 В, поэтому 5 В на клемме Vcc могут его убить. Однако он может принимать сигналы данных 5В от микроконтроллеров.

А теперь перейдем к передатчику проекта.

Цепь передатчика сигнализации датчика парковки

Схема соединена с модулем NRF24L01 с 5 проводами, подключенными к цифровым контактам ввода / вывода Arduino, а остальные два - к 3,3 В и заземлению. Контакт №2 подключен к базе транзистора, который запитывает зуммер.

Клеммы питания ультразвукового датчика подключены к 5 В, а GND, A0 подключен к контакту триггера, а A1 подключен к контакту эхо-сигнала датчика.

Данные о расстоянии датчика передаются через модуль NRF24L01 на приемник.

-------------------------------------------------- ----------------------------------------- Загрузите файл библиотеки по следующей ссылке: github.com/nRF24/RF24.git----------------------------------------- -------------------------------------------------- ---

Программа для передатчика:

//----------Program Developed by R.Girish-------------//
#include
#include
RF24 radio(7,8)
const byte address[][6] = {'00001', '00002'}
const int trigger = A0
const int echo = A1
const int buzzer = 2
float distance
float result
long Time
boolean state = false
boolean dummystate = 0
void setup()
{
pinMode(trigger, OUTPUT)
pinMode(buzzer, OUTPUT)
pinMode(echo, INPUT)
radio.begin()
radio.openWritingPipe(address[1])
radio.openReadingPipe(1, address[0])
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.startListening()
while(!radio.available())
radio.read(&dummystate, sizeof(dummystate))
radio.stopListening()
if(dummystate == HIGH)
{
for(int j = 0 j <10 j++)
{
const char text[] = 'Connection:OK !!!'
radio.write(&text, sizeof(text))
delay(100)
}
}
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
delay(1000)
}
void(* resetFunc) (void) = 0
void loop()
{
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result > 2.00)
{
const char text[] = 'CAR NOT IN RANGE'
radio.write(&text, sizeof(text))
}
if(result 1.90)
{
const char text[] = 'Distance = 2.0 M'
radio.write(&text, sizeof(text))
}
if(result 1.80)
{
const char text[] = 'Distance = 1.9 M'
radio.write(&text, sizeof(text))
}
if(result 1.70)
{
const char text[] = 'Distance = 1.8 M'
radio.write(&text, sizeof(text))
}
if(result 1.60)
{
const char text[] = 'Distance = 1.7 M'
radio.write(&text, sizeof(text))
}
if(result 1.50)
{
const char text[] = 'Distance = 1.6 M'
radio.write(&text, sizeof(text))
}
if(result 1.40)
{
const char text[] = 'Distance = 1.5 M'
radio.write(&text, sizeof(text))
}
if(result 1.30)
{
const char text[] = 'Distance = 1.4 M'
radio.write(&text, sizeof(text))
}
if(result 1.20)
{
const char text[] = 'Distance = 1.3 M'
radio.write(&text, sizeof(text))
}
if(result 1.10)
{
const char text[] = 'Distance = 1.2 M'
radio.write(&text, sizeof(text))
}
if(result 1.00)
{
const char text[] = 'Distance = 1.1 M'
radio.write(&text, sizeof(text))
}
if(result 0.90)
{
state = true
const char text[] = 'Distance = 1.0 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(700)
digitalWrite(buzzer, LOW)
delay(700)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 1.0)
{
state = false
}
}
}
if(result 0.80)
{
state = true
const char text[] = 'Distance = 0.9 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(600)
digitalWrite(buzzer, LOW)
delay(600)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.90)
{
state = false
}
}
}
if(result 0.70)
{
state = true
const char text[] = 'Distance = 0.8 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(500)
digitalWrite(buzzer, LOW)
delay(500)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.80)
{
state = false
}
}
}
if(result 0.60)
{
state = true
const char text[] = 'Distance = 0.7 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(400)
digitalWrite(buzzer, LOW)
delay(400)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.70)
{
state = false
}
}
}
if(result 0.50)
{
state = true
const char text[] = 'Distance = 0.6 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(300)
digitalWrite(buzzer, LOW)
delay(300)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.60)
{
state = false
}
}
}
if(result 0.40)
{
state = true
const char text[] = 'Distance = 0.5M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(200)
digitalWrite(buzzer, LOW)
delay(200)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.50)
{
state = false
}
}
}
if(result 0.30)
{
state = true
const char text[] = 'Distance = 0.4 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(100)
digitalWrite(buzzer, LOW)
delay(100)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.40)
{
state = false
}
}
}
if(result <= 0.30)
{
const char text[] = ' STOP!!!'
radio.write(&text, sizeof(text))
digitalWrite(buzzer, HIGH)
delay(3000)
digitalWrite(buzzer, LOW)
resetFunc()
}
delay(200)
}
//----------Program Developed by R.Girish-------------//

На этом завершается передатчик.

Приемник:

Приемник имеет ЖК-дисплей 16x2 для отображения измеренных расстояний. Подключение дисплея показано ниже:

Цепь ЖК-дисплея сигнализации датчика парковки

Отрегулируйте потенциометр 10K для лучшего просмотра контраста.

Вышеупомянутая схема является остальной частью схемы приемника. Предусмотрена кнопка для сброса Arduino в случае, если соединение 2,4 ГГц не установлено.

Схема приемника находится внутри автомобиля, она может питаться от батареи 9 В. Приемник можно положить в мусорный ящик, что может улучшить внешний вид вашего автомобиля. Ящик для мусора можно разместить в автомобиле над комбинацией приборов или в любом удобном месте.

Программа для получателя:

//--------Program Developed by R.Girish-------//
#include
#include
#include
LiquidCrystal lcd(7, 6, 5, 4, 3, 2)
RF24 radio(9,10)
const byte address[][6] = {'00001', '00002'}
const int dummy = A0
boolean dummystate = 0
void setup()
{
Serial.begin(9600)
lcd.begin(16, 2)
pinMode(dummy , INPUT)
digitalWrite(dummy, HIGH)
radio.begin()
radio.openReadingPipe(1, address[1])
radio.openWritingPipe(address[0])
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.stopListening()
dummystate = digitalRead(dummystate)
radio.write(&dummystate, sizeof(dummystate))
delay(10)
radio.startListening()
if(!radio.available())
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Connection not')
lcd.setCursor(0,1)
lcd.print('established')
delay(50)
}
}
void loop()
{
if(radio.available())
{
char text[32] = ''
radio.read(&text, sizeof(text))
lcd.clear()
lcd.setCursor(0,0)
lcd.print(text)
lcd.setCursor(0,1)
lcd.print('----------------')
}
}
//--------Program Developed by R.Girish-------//

Теперь, что завершает приемник.

Как разместить датчик как стационарный датчик парковки:

Как разместить датчик в качестве датчика мобильной парковки:

В датчике мобильной парковки ультразвуковой датчик передатчика размещается с задней стороны автомобиля, питание осуществляется от аккумулятора автомобиля. Он должен быть подключен таким образом, чтобы при выключении зажигания ардуино должно было отключиться от питания.

Приемник может быть размещен внутри, как упоминалось ранее.

Как управлять этим проектом датчика парковки (стационарного типа)

• Сначала включите передатчик, подойдите к машине и включите приемник. Если соединение между передатчиком и приемником установлено, отобразится «Соединение: ОК» и будет показано расстояние между автомобилем и датчиком.

• Если отображается «Соединение не установлено», нажмите кнопку на приемнике.

• Может отображаться сообщение «Автомобиль вне зоны действия», если ваша банка находится далеко от ультразвукового датчика.

• Осторожно переместите машину назад или вперед к парковке.

• Когда расстояние между автомобилем и датчиком становится меньше 1,0 метра, раздается звуковой сигнал.

• По мере приближения к датчику частота звуковых сигналов увеличивается, когда автомобиль достигает 1 фута или 0,3 метра, дисплей предлагает остановить автомобиль, и вы должны остановиться.

• Передатчик перезагрузится и автоматически перейдет в режим ожидания. Выключите приемник в машине. Если вы питали передатчик от батареи, выключите и его.

Как управлять этой схемой сигнализации датчика парковки (датчик мобильной парковки)

• Аналогично ранее изложенной инструкции, если приемник показывает «Автомобиль вне зоны действия», ваша машина находится далеко от препятствия.

• Когда вы выключаете двигатель, цепь передатчика должна отключаться. Выключите цепь приемника вручную.

Авторский прототип:

Передатчик:

Приемник:

Прототип сигнализации датчика парковки


Предыдущая: Универсальная схема ESC для двигателей BLDC и генератора переменного тока Далее: Схема управления сильноточным двигателем с использованием Arduino