Принцип работы ультразвукового датчика и способы измерить расстояние

3Получение дистанции до объекта с датчика HC-SR04

Теперь напишем скетч, определяющий расстояние до препятствия и выводящий его в последовательный порт. Сначала задаём номера выводов TRIG и ECHO – это 12 и 11 пины. Затем объявляем триггер как выход, а эхо – как вход. Инициализируем последовательный порт на скорости 9600 бод. В каждом повторении цикла loop() считываем дистанцию и выводим в порт.

const int trigPin = 12; const int echoPin = 11;void setup() { pinMode(trigPin, OUTPUT); // триггер — выходной пин pinMode(echoPin, INPUT); // эхо — входной digitalWrite(trigPin, LOW); Serial.begin(9600); // инициализация послед. порта}void loop() { long distance = getDistance(); // получаем дистанцию с датчика Serial.println(distance); // выводим в последовательный порт delay(100);} // Определение дистанции до объекта в смlong getDistance() { long distacne_cm = getEchoTiming() * 1.7 * 0.01; return distacne_cm;} // Определение времени задержкиlong getEchoTiming() { digitalWrite(trigPin, HIGH); // генерируем 10 мкс импульс запуска delayMicroseconds(10); digitalWrite(trigPin, LOW); // определение на пине echoPin длительности уровня HIGH, мкс: long duration = pulseIn(echoPin, HIGH); return duration;} Функция getEchoTiming() генерирует импульс запуска. Она как раз создаёт тот 10-микросекундный импульс, который является триггером для начала излучения дальномером звукового пакета в пространство. Далее она запоминает время от начала передачи звуковой волны до прихода эха.

Функция getDistance() рассчитывает дистанцию до объекта. Из школьного курса физики мы помним, что расстояние равно скорость умножить на время: S = V×t Скорость звука в воздухе 340 м/сек, время в микросекундах мы знаем (переменная duration). Чтобы получить время duration в секундах, нужно разделить его на 1 000 000. Так как звук проходит двойное расстояние – до объекта и обратно – нужно ещё разделить результат пополам. Вот и получается, что расстояние до объекта S = 34000 см/сек × duration / 1 000 000 сек / 2 = 1,7 см/сек / 100, что мы и написали в скетче.

Операцию умножения микроконтроллер выполняет быстрее, чем операцию деления, поэтому :100 я заменил на эквивалентное ×0,01.

Выбор дальномера для подключения к arduino

Для определения расстояния есть несколько способов – инфракрасный датчик приближения, лазерный дальномер и ультразвуковой дальномер. Возможно, есть еще какие-то варианты, но я их сходу не нашел. Поэтому выбирал из трех вариантов. Датчик приближения был сразу забракован, поскольку он не умеет измерять, а только настраивается на определение конкретных расстояний. Лазерный датчик умеет делать измерения и довольно точно, но стоит он не мало, из-за этого выбор был остановлен на ультразвуковом датчике, который стоит в 8-10 раз дешевле лазерного, а точность измерения отличается не на много.
Очевидно, что выбор пал на более дешевый датчик HC-SR04, который стоит 50 руб и способен измерять расстояние от 2 до 400 см с точностью до 3 мм, а эффективный угол наблюдения 15 градусов.

Важно: не все VPN подойдут для нашей задумки

Совсем недавно мы делали подборку 10 самых скачиваемых VPN в русском App Store. Они все хороши, но к сожалению, они не могут работать с приложением «Команды», поэтому для наших целей не годятся.

После долгих поисков я нашёл самый оптимальный вариант: приложение AdGuard VPN, которое можно скачать в App Store, от создателей известного блокировщика рекламы в браузере AdGuard.

После регистрации прямо в приложении доступно 3 Гб бесплатного трафика в месяц.

Лицензия на использование этого VPN стоит 999 рублей в месяц или 4090 рублей в год. Но также есть и бесплатный пакет, включающий в себя 3 Гб в месяц. Для того чтобы зайти в приложение и проверить новые сообщения этого вполне хватит.

Никто не мешает иметь на своем смартфоне сразу несколько VPN, если вы уже пользуетесь каким-то другим. Пусть этот AdGuard работает для конкретно одного-двух приложений.

Итак, вы зарегистрировались в AdGuard VPN, получили свои 3 Гб, а теперь приступаем к созданию автоматизированной команды.

Датчик расстояния в проектах Arduino

Способность ультразвукового датчика определять расстояние до объекта основано на принципе сонара – посылая пучок ультразвука, и получая его отражение с задержкой, устройство определяет наличие объектов и расстояние до них. Ультразвуковые сигналы, генерируемые приемником, отражаясь от препятствия, возвращаются к нему через определенный промежуток времени. Именно этот временной интервал становится характеристикой помогающей определить расстояние до объекта.

Описание датчика HC SR04

Датчик расстояния Ардуино является прибором бесконтактного типа, и обеспечивает высокоточное измерение и стабильность. Диапазон дальности его измерения составляет от 2 до 400 см. На его работу не оказывает существенного воздействия электромагнитные излучения и солнечная энергия. В комплект модуля с HC SR04 arduino также входят ресивер и трансмиттер.

Ультразвуковой дальномер HC SR04 имеет такие технические параметры:

  • Питающее напряжение 5В;
  • Рабочий параметр силы т ока – 15 мА;
  • Сила тока в пассивном состоянии -6 с.

Датчик оснащен четырьмя выводами (стандарт 2, 54 мм):

  • Контакт питания положительного типа – +5В;
  • Trig (Т) – выход сигнала входа;
  • Echo (R) – вывод сигнала выхода;
  • GND – вывод «Земля».

Схема взаимодействия с Arduino

Для получения данных, необходимо выполнить такую последовательность действий:

  • Подать на выход Trig импульс длительностью 10 микросек;
  • В ультразвуковом дальномере hc sr04 подключенном к arduino произойдет преобразование сигнала в 8 импульсов с частотой 40 кГц, которые через излучатель будут посланы вперед;
  • Когда импульсы дойдут до препятствия, они отразятся от него и будут приняты приемником R, что обеспечит наличие входного сигнала на выходе Echo;
  • На стороне контроллера полученный сигнал при помощи формул следует перевести в расстояние.

При делении ширины импульса на 58.2, получим данные в сантиметрах, при делении на 148 – в дюймах.

Подключение HC SR04 к Arduino

Выполнить подключение ультразвукового датчика расстояния к плате Arduino достаточно просто. Схема подключения показана на рисунке.

Контакт земли подключаем к выводу GND на плате Arduino, выход питания соединяем с 5V. Выходы Trig и Echo подсоединяем к arduino на цифровые пины. Вариант подключения с помощью макетной платы:

Библиотека для работы с HC SR04

Для облегчения работы с датчиком расстояния HC SR04 на arduino можно использовать библиотеку NewPing. Она не имеет проблем с пинговыми доступами и добавляет некоторые новые функции.

К особенностям библиотеки можно отнести:

  • Возможность работы с различными ультразвуковыми датчиками;
  • Может работать с датчиком расстояния всего через один пин;
  • Отсутствие отставания на 1 секунду при отсутствии пинга эха;
  • Для простой коррекции ошибок есть встроенный цифровой фильтр;
  • Максимально точный расчет расстояния.

Скачать бибилотеку NewPing можно здесь

Точность измерения расстояния датчиком HC SR04

Точность датчика зависит от нескольких факторов:

  • температуры и влажности воздуха;
  • расстояния до объекта;
  • расположения относительно датчика (согласно диаграммы излучения);
  • качества исполнения элементов модуля датчика.

В основу принципа действия любого ультразвукового датчика заложено явление отражения акустических волн, распространяющихся в воздухе. Но как известно из курса физики, скорость распространения звука в воздухе зависит от свойств этого самого воздуха (в первую очередь от температуры). Датчик же, испуская волны и замеряя время до их возврата, не догадывается, в какой именно среде они будут распространяться и берет для расчетов некоторую среднюю величину. В реальных условиях из-за фактора температуры воздуха HC-SR04 может ошибаться от 1 до 3-5 см.

Фактор расстояния до объекта важен, т.к. растет вероятность отражения от соседних предметов, к тому же и сам сигнал затухает с расстоянием.

Также для повышения точности надо правильно направить датчик: сделать так, чтобы предмет был в рамках конуса диаграммы направленности. Проще говоря, “глазки” HC-SR04 должны смотреть прямо на предмет.

Для уменьшения ошибок и погрешности измерений обычно выполняются следующие действия:

  • усредняются значения (несколько раз замеряем, убираем всплески, потом находим среднее);
  • с помощью датчиков (например, DHT11 или DHT22) определяется температура и вносятся поправочные коэффициенты;
  • датчик устанавливается на серводвигатель, с помощью которого мы “поворачиваем голову”, перемещая диаграмму направленности влево или вправо.

Примеры использования датчика расстояния

Давайте рассмотрим пример простого проекта с платой Arduino Uno и датчиком расстояния HC SR04. В скетче мы будем получать значение расстояния до предметов и выводить их в монитор порта в среде Arduino IDE. Вы сможете легко изменить скетч и схему подключения, чтобы датчик сигнализировал о приближении или отдалении предмета.

Подключение датчика к ардуино

При написании скетча использовалась следующий вариант распиновки подключения датчика:

  • VCC: +5V
  • Trig – 12 пин
  • Echo – 11 пин
  • Земля (GND) – Земля (GND)

Пример скетча

Начнем работу с датчиком сразу с относительного сложного варианта – без использования внешних библиотек.

В данном скетче мы выполняем такую последовательность действий:

  • Коротким импульсом (2-5 микросекунды) переводим датчик расстояния в режим эхолокации, при котором в окружающее пространство высылаются ультразвуковые волны с частотой 40 КГц.
  • Ждем, пока датчик проанализирует отраженные сигналы и по задержке определит расстояние.
  • Получаем значение расстояния. Для этого ждем, пока HC SR04 выдаст на входе ECHO импульс, пропорциональный расстоянию. Мы определяем длительность импульса с помощью функции pulseIn, которая вернет нам время, прошедшее до изменения уровня сигнала (в нашем случае, до появления обратного фронта импульса).
  • Получив время, мы переводим его в расстояние в сантиметрах путем деления значения на константу (для датчика SR04 это 29.1 для сигнала «туда», столько же для сигнала «обратно», что в сумме даст 58.2).

Если датчик расстояния не выполняет считывание сигнала, то преобразование выходного сигнала никогда не примет значения короткого импульса – LOW. Так как у некоторых датчиков время задержки варьируется в зависимости от производителя, рекомендуется при использовании указанных скетчей выставлять его значение вручную (мы это делаем в начале цикла).

Если расстояние составляет более 3 метров, при котором HC SR04 начинает плохо работать, время задержки лучше выставлять более 20 мс, т.е. 25 или 30 мс.

Скетч с использованием библиотеки NewPing

Теперь давайте рассмотрим вариант скетча с использованием библиотеки NewPing. Код существенно упростится, т.к. все описанные ранее действия спрятаны внутри библиотеки. Все, что нам нужно сделать – создать объект класса NewPing, указав пины, с помощью которых мы подключаем датчик расстояния и использовать методы объекта. В нашем примере для получения расстояния в сантиметрах нужно использовать ping_cm().

Пример подключения ультразвукового дальномера HC SR04 с одним пином

Подключение HC-SR04 к Arduino может быть выполнено посредством использования одного пина. Такой вариант пригодится, если вы работаете с большим проектом и вам не хватает свободных пинов. Для подключения вам нужно просто установить между контактами TRIGи ECHO резистор номиналом 2.2K и подключить к ардуино контакт TRIG.

Общие сведения

Ультразвуковой датчик HC-SR04 использует точно такую же технологию, что и летучие мыши (ультразвук). Если не вдаваться в подробности, то описать принцип работы можно, датчик посылает звуковые импульсы частотой 40 кГц и прослушивает эхо. В отличии от других датчиков, HC-SR04 не реагирует на солнечный свет или черные предметы, но может давать ложные показания от ткани или тонких предметов.
На передней части HC-SR04 расположено два ультрозвуковых датчика, первый с надписью T (Transmiter) — это передатчик ультрозвуковых волн (TCT40-16T), а второй с надписью R (Receive) — это приемник отраженных ультрозвуковых волн (TCT40-16R), по центру расположен выводной кварцевый генератор на 27 МГц.

С другой стороны датчика HC-SR04, расположена электрическая обвязка, в которой выделяется три основных микросхема и электрическая обвязка. Для взаимодействия с контроллером Arduino установлен четырех выводной разъем, назначение контактов можно посмотреть ниже.

Назначение контактов:
► VCC: «+» питание модуля
► Trig : вход триггера
► Echo: выход, эхо.
► GND: «-» питание модуля

Альтернативы

Ультразвуковые датчики не единственные, которые позволяют определять расстояние до объекта. Есть более точные лазерные дальномеры Laser Sensor предназначенные для работы в паре с ардуино. К сожалению, и цена у них различается в несколько десятков раз от датчика расстояния HC SR04, который стоит в среднем около 70 рублей. Лазерный же обойдется от суммы в 1200 р. Если же требуется определение только присутствия человека или животного в поле зрения контроллера, то тут лучшим станет инфракрасный сенсор. К примеру, такой, как GP2Y0A21YK0F.

Суть проблемы заключается в том, что большая часть ложных срабатываний, ультразвуковых сенсоров связана с попаданием в контролируемое ими поле мелких летящих соринок или насекомых. Не зря в «характеристиках» была сделана пометка о чувствительности к предметам в поле зрения сонара размером от 3 мм. То есть, грубо говоря, использовать их на улице бессмысленно. Снег, дождь, мусор, насекомые — все эти факторы приведут к неверным показаниям прибора. Другое дело инфракрасное устройство. Оно реагирует только на нагретые предметы. Хотя, конечно, все упирается в конкретную сферу жизни. Для сигнализаторов расстояния от багажника автомобиля до стены тепловой детектор подходит мало. Да и на ультразвуковой в таких случаях меркантильный хозяин надеяться не будет. Тут нужен лазерный датчик расстояния из-за своей надежности и точности. Как раз тот случай, когда переплатить стоит того.

Как пользоваться прибором

Ничего сложного нет. Вот что нужно сделать:

  1. Нажмите на кнопку, расположенную на рукоятке, включите устройство и дотроньтесь палочкой до сетки. Вы слышите характерный треск? Всё в порядке, чудо-ракетка работает.
  2. Если на улице или в комнате недостаточное освещение, сразу включите фонарик при помощи другой кнопки.
  3. Сделайте несколько взмахов ракеткой в том месте, где вы заметили насекомое. Возможно, его вы плохо видите, слышен лишь противный писк? Не беда, машите смело, и комары попадутся в ловушку.
  4. Когда муха или другое насекомое застряло в сетке, нажмите специальную кнопку. Тотчас же на металлическую поверхность подаётся разряд, мелкие насекомые погибают. и шмели лишь оглушаются и падают на землю. Вы легко уничтожите их.

Вот видите, как всё легко и просто! Ни одно даже самое крошечное насекомое не ускользнёт от чудо-ракетки.

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

Настройка автоматического выключения VPN

Нажмите на «+» в верхнем правом углу экрана и повторите все шаги выше до окна с выбором приложения. Здесь вам нужно активировать чекбокс на значение «Закрыто», а со значения «Открыто» снять отметку.

Далее также выбирайте приложение Telegram, жмите «Далее», «Добавить действие», выбирайте AdGuard VPN и жмите «Настроить VPN-соединение».

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

Далее также отключаем пункт «Спрашивать до запуска» и подтверждаем свой выбор. Далее жмёте «Готово» в верхнем углу экрана.

В результате у вас появилось два сценария. Можете сворачивать приложение «Команды» и проверять, как работает автоматическое включение и выключение VPN при открытии и закрытии Telegram. Спойлер: работает

Напоминаю, что вместо Telegram вы можете выбрать любое другое приложение.

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

iPhones.ru

Приложение может быть любое.

Рассказать

Микк Сид

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

Глушилка электроники

Впервые мир увидел реально действующий прототип электромагнитного оружия на выставке вооружений ЛИМА-2001 в Малайзии. Там был представлен экспортный вариант отечественного комплекса «Ранец-E». Он выполнен на шасси МАЗ-543, имеет массу около 5 тонн, обеспечивает гарантированное поражение электроники наземной цели, летательного аппарата или управляемого боеприпаса на дальностях до 14 километров и нарушения в её работе на расстоянии до 40 км. Несмотря на то, что первенец произвел настоящий фурор в мировых СМИ, спецалисты отметили ряд его недостатков. Во-первых, размер эффективно поражаемой цели не превышает 30 метров в диаметре, а во-вторых, оружие одноразовое — перезарядка занимает более 20 минут, за которые чудо-пушку уже раз 15 подстрелят с воздуха, а работать по целям она может только на открытой местности, без малейших визуальных преград. Возможно по этим причинам американцы и отказались от создания подобного ЭМИ-оружия направленного действия, сконцентрировавшись на лазерных технологиях. Наши оружейники решили испытать судьбу и попытаться «довести до ума» технологию направленного ЭМИ-излучения.

Интересны и другие разработки НИИРП. Исследуя воздействие мощного СВЧ-излучения с земли на воздушные цели, специалисты этих учреждений неожиданно получили локальные плазменные образования, которые получались на пересечении потоков излучения от нескольких источников. При контакте с этими образованиями воздушные цели претерпевали огромные динамические перегрузки и разрушались. Согласованная работа источников СВЧ-излучения, позволяла быстро менять точку фокусировки, то есть производить перенацеливание с огромной скоростью или сопровождать объекты практически любых аэродинамических характеристик. Опыты показали, что воздействие эффективно даже по боевым блокам МБР. По сути, это даже не просто СВЧ-оружие, а боевые плазмоиды. Возможно, именно это подтолкнуло американцев к созданию на Аляске комплекса HAARP (High freguencu Active Auroral Research Program) — научно-исследовательский проект по изучению ионосферы и полярных сияний. Отметим, что тот мирный проект почему-то имеет финансирование агентства DARPA Пентагона.

Подключение к Arduino

Если вы планируете использовать ультразвуковой дальномер HC-SR04 с Arduino вы можете воспользоваться существующими библиотеками:

  • Ultrasonic — самая популярная библиотека для HC-SR04.
  • NewPing — отличается большей точностью и скоростью работы.
  • Ультразвуковой дальномер URM37

Распиновка:

  • Vcc — положительный вывод питания
  • TRIG — вход TRIG
  • ECHO — выход ECHO
  • GND — ноль питания

На выводы питания подается постоянное напряжение 5 В, потребляемый ток в рабочем режиме около 15 мА.

Вход TRIG подключается к любому выводу микроконтроллера. На этот вывод нужно подавать импульсный цифровой сигнал длительностью 10 мкс. По сигналу на входе TRIG датчик посылает ультразвуковые импульсы.

После приема отраженного сигнала, датчик формирует на выводе ECHO импульсный сигнал, длительность которого пропорционально расстоянию до преграды.

Контакты датчика можно соединить с макетной платой или Arduinoпроводами «мама-папа». А с Troyka Shield через провода «мама-мама».

Гаражный парктроник

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

Ультразвуковой дальномер Arduino HC-SR04

Ультразвуковой датчик (ещё его часто называют сонаром или ультразвуковым дальномером) определяет расстояние до объекта так же, как это делают летучие мыши или дельфины. Датчик HC-SR04 генерирует узконаправленный сигнал на частоте 40 кГц и ловит отраженный сигнал (эхо). По времени распространения звука до объекта и обратно можно достаточно точно определить расстояние до него.

По этому же принципу работает множество приборов для исследования пространства — эхолот, сонар, радиолокатор и даже полицейский радар для определения скорости автомобиля. Все эти приборы излучают узконаправленный ультразвуковой сигнал и получают обратно отраженный сигнал. В отличии от инфракрасных дальномеров (IR), на показания ультразвукового датчика (сонара) не влияет цвет объекта.


Принцип работы ультразвукового дальномера HC-SR04

Но при настройке ультразвукового датчика на Ардуино могут возникнуть трудности с определением расстояния до звукопоглощающих объектов, поскольку они способны полностью погасить излучаемый сигнал. Для идеальной точности измерения расстояния, поверхность изучаемого объекта должна быть ровной и гладкой. Принцип работы ультразвукового датчика hc-sr04 показан на рисунке выше.

Практическое применение

Практическим применением здесь можно сделать автоматическое открытие дверей. Но, к сожалению, в домашних условиях такая схема не нужна. Будет весьма глупо смотреться двигающая створкой дверь при чьем-то приближении в квартире. Особенно, если есть домашние животные. Остановимся на ручной системе определения расстояния, которую легко получить, присоединив HC SR04 к Arduino. Она весьма пригодится, чтобы отмерить относительно точные промежутки между предметами обихода, стенами или иными поверхностями. Кроме того, устройство в сборе можно использовать как своеобразный парктроник. Оно сигнализирует, при слишком малой дистанции.

Что понадобится: сам контроллер Arduino UNO, двухстрочный LCD 1602A, ультразвуковой дальномер HC SR04.

Соединяются компоненты по схеме выше. Далее идет скетч, который будет управлять всей конструкцией в целом:

Особенности чтения схем

В принципиальных схемах проводники (или дорожки) обозначаются линиями.

Так обозначаются проводники, которые пересекаются, но они не имеют общего соединения и электрически друг с другом не связаны.

А вот так они выглядят, если между ними есть соединение. Черная точка — это узел в схеме. Узел — это соединение нескольких проводников или деталей вместе. Они электрически друг с другом связаны.

Общая точка

Часто у начинающих радиолюбителей возникает вопрос — что это за символ на схеме?
Это общая точка (GND, земля). Раньше ее называли общим проводом. Так обозначается единый провод питания. Обычно это минус питания. Раньше на схемах могли сделать общим проводом и плюс питания. В данном случае схема без общей точки выглядела бы вот так:
Общая точка с однополярным питанием визуально лучше и компактнее выглядит, чем если просто сделать единую линию между ними.

Почему она может называться землей (GND)? Раньше в качестве общего провода могло использоваться шасси корпуса прибора. Из-за этого возникла путаница между заземлением и землей. Оно интерпретируется в контексте схемы. Та схема, что была разобрана выше — общая точка (земля) это просто минус питания. Другое дело это двуполярные источники тока и заземление.

Заземление

Примером заземления может послужить фильтр в компьютерных блоках питания.
С конденсаторного фильтра помехи идут на корпус блока питания. Это и есть заземление. А с блока питания они должны уходить в розетку, если у вас есть заземление, иначе сам корпус блока питания может быть под напряжением. Токи там не большие, они не опасны для жизни. Это делается с целью уменьшения импульсных помех в блоке питания и безопасности.

Иногда в блоках питания вместо корпуса помехи с конденсатора идут на общую точку. Это все зависит от конструкции и схемотехники. В этом случае помех будет больше, чем с заземлением.

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

Ультразвуковой датчик HC-SR04

Ультразвуковой датчик HC-SR04 — Ultrasonic Ranging Module HC — SR04 — Ultrasonic Sensor Distance Measuring Module — Sonar

Ультразвуковой дальномер HC SR04 самый известный датчик для применения в Arduino, Raspberry

Pi, ESP8266 и ESP32 модулях. Позволяет измерять расстояние до объекта в диапазоне от 2 до 400 (180) см. Например, если вы хотите собрать робота, который объезжает преграды, то данный дальномер прекрасно подойдет для ваших задач. Датчик имеет небольшие габариты и простой интерфейс. Рис. 4 Внешний вид ультразвукового датчика (сонара, ультразвукового сенсора, ультразвукового модуля) HC-SR04

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Семинар по технике
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: