» » » Простой дальномер на Arduino

Простой дальномер на Arduino


Добрый день любители самоделок! Сегодня мы соберём простой дальномер на Arduino Pro Mini. Прибор способен измерять расстояние от 2 до 400 см. Погрешность данного устройства доходит всего до +/- 1-5 см, в зависимости от измеряемого расстояния.

Инструменты и материалы
-Arduino Pro mini
-Датчик hc-04
-Индикатор на tm1637
-Провода ( у меня - МГТФ 0,12 )
-Программатор
-Пластмассовый корпус
-Li-on аккумулятор
-Маленький выключатель
-Плата зарядки на TP4056
-Суперклей
-Паяльник
-Припой
-Канифоль
-Дрель, свёрла и т.д.

Шаг первый.Схема:
По схеме всё просто, без дополнений.


Шаг второй.Подготовка корпуса:
Сначала примеряем датчик и сверлом на 15 мм высверливаем два отверстия.

Далее сверлом на 3-3,5 мм делаем отверстие для micro-usb разъёма.

Подбираем сверло под диаметр выключателя и сверлим.

На крышке делаем "окошко" для семисегментного индикатора(на фото без обработки), и все неровности дорабатываем напильником.


Шаг третий.Прошивка:
В скетче выделены переменные которые можно подстроить для себя. Весь код закоментирован.

#include <Arduino.h>  // библиотеки для работы 
#include <GyverTM1637.h>
//-------------Для настройки-----------------------------------------------------------------
bool Long = 0; // 0 - измеряем длину от датчика 
               // 1 - измеряем длину от стенки корпуса, которая противоположна датчику
unsigned int corpus = 10; // растояние от датчика до противоположной стенки корпуса (в сантиметрах)

#define CLK 2   //пины для подключения
#define DIO 3
#define TRIG 4
#define ECHO 5
//----------------------------------------------------------------------------------------------
unsigned int impulse=0; // переменные для расчёта 
unsigned int sm=0; 

GyverTM1637 disp(CLK, DIO);
void setup() {
 pinMode(TRIG, OUTPUT); //задаём как выход 
 pinMode(ECHO, INPUT); //задаём как вход 
 disp.brightness(7); // яркость 0-7
 disp.point(0);   //выключаем двоеточие
  disp.clear();  //очищаем индикатор
}

void loop() {
 digitalWrite(TRIG, HIGH); //подаём 5 вольт
  delayMicroseconds(10); // задержка 10 микросекунд 
  digitalWrite(TRIG, LOW); // подаём 0
 
  impulse=pulseIn(ECHO, HIGH); // замеряем длину импульса 
  sm=impulse/58; // переводим в сантиметры 

  if(Long == 1){  // проверка настроек 
    sm = sm+corpus;
  }

  if(sm <= 2){  // обнуляем ложные значения 
    sm=1;
  }
  if(sm >= 405){
    sm=1;
  }

  int integer = sm / 10;
  int decimal = sm % 10;
  decimal = decimal*10;
 disp.displayClock(integer,decimal); // вывод на индикатор

  delay(300); // задержка 0,3 сек. между выводом значений
}

Далее подключаем программатор и прошиваем МК.


Шаг четвёртый.Сборка:
Так как устройство работает от аккумулятора,то лишние расходы заряда нам не нужны. Поэтому на плате Arduino выпаиваем светодиоды и кнопочку reset (для уменьшения размеров).

Приклеиваем на суперклей аккумулятор к корпусу. На АКБ приклеиваем плату зарядки, устанавливаем выключатель и спаиваем всё по схеме.

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


Шаг пятый.Тест:
Примечание: четвёртый сегмент всегда будет отображать 0. Это сделано для того, чтобы последний сегмент не был пустым. Получается если показание равно 270, то это означает, что расстояние равно 27 см.

Для уверенности, показания можно сверить с линейкой.
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

Как сделать сейф с электронным замком

Система автополива для комнатных растений на Arduino

7.4
Идея
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
7.6
Описание
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
6.8
Исполнение
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
Итоговая оценка: 7.27 из 10 (голосов: 5 / История оценок)

Добавить комментарий

    • smilesmilesxaxaokdontknowyahoonea
      bossscratchfoolyesyes-yesaggressivesecret
      sorrydancedance2dance3pardonhelpdrinks
      stopfriendsgoodgoodgoodwhistleswoontongue
      smokeclappingcraydeclarederisivedon-t_mentiondownload
      heatirefullaugh1mdameetingmoskingnegative
      not_ipopcornpunishreadscarescaressearch
      tauntthank_youthisto_clueumnikacuteagree
      badbeeeblack_eyeblum3blushboastboredom
      censoredpleasantrysecret2threatenvictoryyusun_bespectacled
      shokrespektlolprevedwelcomekrutoyya_za
      ya_dobryihelperne_huliganne_othodifludbanclose
3 комментария
  1. Лев
    Много экспериментировал с этим датчиком, к сожалению точность его измерения сильно зависит от перпендикулярности плоскости измерения к плоскости прибора.
  2. Иван_Похмельев
    Сперва
    лишние расходы заряда нам не нужны. Поэтому на плате Arduino выпаиваем светодиоды
    , однако потом бездарно тратим гораздо больше сэкономленого
    четвёртый сегмент всегда будет отображать 0.

    Для уверенности, показания можно сверить с линейкой.
    И каковы результаты?

    Сам проект в представленном виде чисто учебный, практического значения не имеющий.
  3. Гость Георгий
    Проект был украден у "АлексГайвер", поэтому автор "крыса"!!!

Привет, Гость!


Зарегистрируйтесь

Или войдите на сайт, если уже зарегистрированы...

Войти

Добавьте самоделку

Добавьте тему

Онлайн чат

Опрос
А Вы знаете, что на сайте оплачиваются отчеты о создании самоделок?

Последние комментарии

Все комментарии
Новые самоделки на почту

Введите электронную почту и получайте письма с новыми самоделками. Не более одного письма в день.