Ультразвуковые датчики расстояния, или как их еще по-другому называют - сонары, активно используются в робототехнике для определения дистанции до препятствия, а также в различных проектах, таких как терменвокс, электронная рулетка, системах сигнализации и умного дома.
Ультразвуковой датчик позволяет оценить расстояние до объекта. Принцип работы сенсора заключается в следующем: на плате датчика установлены ультразвуковые приемник и передатчик, а также микросхема - обработчик данных. Передатчик излучает ультразвуковой импульс определенной длительности и в этот же момент микроконтроллер запускает таймер, сигнал отражается от ближайшего объекта и возвращается в приемник, на этом моменте таймер останавливается. Зная скорость распространения ультразвука в воздухе и время, за которое сигнал достиг препятствия и вернулся, можно найти расстояние, но поскольку сигнал на самом деле прошел расстояние два раза (до объекта и обратно), то полученное значение микросхема делит на 2 и выдает в качестве цифрового сигнала.
В датчике Geegrow используется два вида подключения к микроконтроллеру: по стандартному способу через пины trig и echo, либо по шине данных I2C. Если используется первый тип, то выводы trig и echo должны приходить на обычные цифровые пины. В случае же обмена данными по I2C нужно задействовать соответствующий разъем с выводами SCL и SDA.
Подключение модуля осуществляется с помощью разъема XH-2.54-4P, выводы которого имеют следующие назначения:
Разъем trig/echo
VCC - питание +3.3...+5V
ECHO - вывод данных с датчика
TRIG - передачик, излучает ультразвуковой сигнал
GND - земля (общий)
Разъем I2C
VCC - питание +3.3...+5V
SCL - подключается к одноименному порту контроллера
SDA - подключается к одноименному порту контроллера
GND - земля (общий)
Чтобы начать работу с датчиком его необходимо подключить к микроконтроллеру по схеме ниже, в зависимости от типа подключения. Для быстрого и надежного подключения используйте QuatroPort A050.
Необходимо подключить провод в нижний разъем датчика, а второй конец к шилду к обычным портам, например в разъем №3, соответственно к портам контроллера 11 и 13.
В качестве trig используется порт 13, в качестве echo - 11.
Далее необходимо загрузить программу в микроконтроллер, предварительно скачав и установив библиотеку для работы с ультразвуковым датчиком отсюда: https://github.com/geegrow/GW_US04 (папку с библиотекой необходимо переименовать в "GW_US04" и поместить в папку Документы - Arduino - libraries). Как устанавливать библиотеки описано здесь: https://geegrow.ru/wiki/programming/libraries/
Так как код предусматривает возможность работы по обоим каналам, необходимо убрать комментарий в строчке с тем методом, который используете, и закомментировать строчку со вторым подключением, как указано ниже.
#include "GW_US04.h" #define TRIG_PIN 13 #define ECHO_PIN 11 #define I2C_ADDR 14 /* 2 способа подключения: trig-echo и i2c. Раскомментируйте, который используете. */ //Работа по trig-echo: GW_US04 sonar = GW_US04(TRIG_PIN, ECHO_PIN); //Работа по i2c: //GW_US04 sonar = GW_US04(I2C_ADDR); void setup() { Serial.begin(9600); delay(2000); } void loop() { Serial.println(sonar.scan()); delay(100); }
Теперь если открыть монитор порта, в него будут выводиться даннные с датчика в миллиметрах.
Подключение осуществляется по данной схеме. Необходимо подключить провод в верхний разъем датчика с контактами SDA и SCL, а второй конец к шилду в один из разъемов линии I2C, например в разъем №1.
Далее необходимо загрузить программу в микроконтроллер. Так как код предусматривает возможность работы по обоим каналам, необходимо убрать комментарий в строчке с тем методом, который используете, и закомментировать строчку со вторым подключением, как указано ниже.
#include "GW_US04.h" #define TRIG_PIN 13 #define ECHO_PIN 11 #define I2C_ADDR 14 /* 2 способа подключения: trig-echo и i2c. Раскомментируйте, который используете. */ //Работа по trig-echo: //GW_US04 sonar = GW_US04(TRIG_PIN, ECHO_PIN); //Работа по i2c: GW_US04 sonar = GW_US04(I2C_ADDR); void setup() { Serial.begin(9600); delay(2000); } void loop() { Serial.println(sonar.scan()); delay(100); }
Теперь если открыть монитор порта, в него будут выводиться даннные с датчика в миллиметрах.