Ультразвуковой влагозащищенный сенсор 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) Подключаем питание к плате управления, светодиод не мигает. Это второй вариант, код для проверки смотрите ниже:
а может купить датчики от парктроника и с ними баловать?
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 см от него?
Есть сейчас где в наличии в Москве? Кто знает?