Ультразвуковой влагозащищенный сенсор DYP-ME007Y
- Войдите на сайт для отправки комментариев
Втр, 22/07/2014 - 18:00
Доброе время суток всем.
Пришли из китая ультразвуковые влагозащищенные сенсоры DYP-ME007Y.

Все мой попытки найти работоспособный код для проверки этих сенсоров ни к чему не привели. Зато нашел datasheet, правда на китайском языке :-).
В итоге родился код, может кому-нибудь пригодиться:
#include <SoftwareSerial.h>
SoftwareSerial mySerial = SoftwareSerial(10,11);
#define echoPin 10
#define trigPin 11
unsigned int reading;
byte readByte;
byte read_buffer[4];
byte crcCalc;
word distance;
String outText;
void setup() {
//
// Настройка портов
//
mySerial.begin (9600);
Serial.begin (9600);
Serial.println("start");
//
// Очищаем буфер чтения
//
for (byte loopstep = 0; loopstep <= 3; loopstep++) {
read_buffer[loopstep] = 0;
}
}
void loop() {
//
// Проверка наличия данных в COM порту
//
if (mySerial.available() < 1) {
return;
}
//
// Читаем в буфер
//
readByte = mySerial.read();
for (byte loopstep = 0; loopstep <= 2; loopstep++) {
read_buffer[loopstep] = read_buffer[loopstep + 01];
}
read_buffer[03] = readByte;
//
// Анализ буфера
//
if (read_buffer[00] != 0xff) {
return; // это не начало данных
};
crcCalc = read_buffer[00] + read_buffer[01] + read_buffer[02];
if (read_buffer[03] != crcCalc) {
return; // контрольная сумма пакета данных не совпала
};
//
// расчет расстояния
//
distance = (read_buffer[01] * 0xff) + read_buffer[02];
//
// вывод
//
outText = "bytes: ";
outText = String(outText + read_buffer[00]);
outText = String(outText + "+");
outText = String(outText + read_buffer[01]);
outText = String(outText + "+");
outText = String(outText + read_buffer[02]);
outText = String(outText + "+");
outText = String(outText + read_buffer[03]);
outText = String(outText + " = ");
outText = String(outText + distance);
outText = String(outText + " mm");
Serial.println(outText);
//
// пауза - 1 секунда, можно любое значение
//
delay(1000);
//
// удаляем из буфера данные, которые во время паузы туда залезли
//
while (mySerial.available() > 0) {
readByte = mySerial.read();
}
}
Результат работы кода:

Дополнение:
1) Сенсоры чувствительны к напряжению питания, если оно меньше 4,8 вольта, могут показывать всякую чушь. Я их запитывал с отдельного блока питания. Ардуина получала питание от USB порта. Использовал Arduino UNO.
2) Есть вариант сенсора подключенный кабелем к блоку управления, в принципе, кому нужно, можно сделать парктроник для авто.

Буду рад, если кому-то помог.
А ссылочку на ебей? :)
Брал на aliexpress, ссылка: http://www.aliexpress.com/item/2PCS-X-DC-5V-Waterproof-Ultrasonic-Sensor-Distance-Measuring-Module-30cm-3-5m-FREE-SHIPPING/1649087988.html
Стоят конечно не совсем адекватно,только если очень припрет....
В Росии что-то отдаленно похожее на эти сенсоры начинается со 150$...
Делаю для друзей управление воротами на автомойке, по цене эти сенсоры оказались самыми оптимальными...
Здравствуйте, MickeySL!
Датчик постоянно показывает разные значения, при этом неправильно. Питание подается от Arduino = 5.1 вольта. Почему так может быть?
Возможные варианты:
1) Был у меня один такой датчик в партии. Была неисправна катушка (которую можно отверткой регулировать).
2) Посмотри по "даташиту" диаграмму направленности, возможно в стороне от датчика есть препятствия которые он периодически ловит.
3) Проверь показания направив датчик на твердое и большое препятствие (бетонную стену например), если расстояние правильное, значит датчик исправен. Ультразвук не на всех поверхностях дает правильное значение расстояния до объекта.
а может купить датчики от парктроника и с ними баловать?
http://ru.aliexpress.com/item/Rear-or-Front-View-Car-Parking-Sensor-Reve...
http://ru.aliexpress.com/item/Wholesale-4pcs-Assistance-Reversing-Radar-...
Китайцы, они такие китайцы... :-)
Пришла следующая партия датчиков. Плата управления абсолютно идентична, отлицаются прошивкой микроконтроллера. Значит на сегодня есть два варианта:
1) Подключаем питание к плате управления, светодиод (на плате) начинает часто мигать. Это первый вариант, для тестирования подходит код из первого поста этой темы.
2) Подключаем питание к плате управления, светодиод не мигает. Это второй вариант, код для проверки смотрите ниже:
#define Distance_Trig 11 #define Distance_Echo 10 int impulseTime; int Distance; String outText; void setup() { // Serial.begin (9600); Serial.println("start"); // pinMode(Distance_Trig ,OUTPUT); pinMode(Distance_Echo ,INPUT); digitalWrite(Distance_Echo ,HIGH); } void loop() { // digitalWrite(Distance_Trig, HIGH); delayMicroseconds(10); digitalWrite(Distance_Trig, LOW); impulseTime = pulseIn(Distance_Echo, HIGH); Distance = impulseTime/58; // delay(1000); // outText = "distance: "; outText = String(outText + Distance); outText = String(outText + " mm"); Serial.println(outText); }а может купить датчики от парктроника и с ними баловать?
http://ru.aliexpress.com/item/Rear-or-Front-View-Car-Parking-Sensor-Reve...
http://ru.aliexpress.com/item/Wholesale-4pcs-Assistance-Reversing-Radar-...
Потратил пару дней на поиск готовых решений или изысканий на подключение к ардуине датчиков от автомобиля. Результат - 0
да ну
http://compcar.ru/forum/showthread.php?t=7309&page=6
http://arduino.ru/forum/apparatnye-voprosy/rebyata-pomogite-podklyuchit-datchiki-parkovki-ot-parktronika-k-arduino
хотя первая более продуктивная как по мне
а вот что стоит посмотреть
http://compcar.ru/forum/showthread.php?t=7309&p=81212&viewfull=1#post81212
там кстати код еще прикладывался для ардуины чтобы считать
а конвертируется по последнеей ссылке просто. для A датчика первый байт разворачиваем и получаем расстояние в сантиметрах
хотя для датчика A на расстоянии 2м либо ошибка, либо датчик там врет
видел эти темки. Но как мне показалось до конечного результата там еще не дошли. А времени ковыряться в протоколе передачи данных от датчика нету.
К тому же возможно датчики от производителя к производителю могут меняться по своим техническим характеристикам, а следовательно и обрабатывать сигнал от них надо по разному. Для этого хорошо иметь готовую библиотеку с кучей настроек
Китайцы указывают что минимальная дистанция для подобного сенсора около 30 см. А в реальности он может видеть ближе? Т.е. что он выдает при припятствии в 5 см от него?
Есть сейчас где в наличии в Москве? Кто знает?