Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Система напоминания о социальной дистанции на Arduino для COVID-19

Компоненты и материалы

Программное обеспечение

О проекте

Что это?

Наиболее надежный способ замедлить распространение коронавируса — держать дистанцию; предупреждение лучше лечения. Но постоянно оглядываться раздражает. Нужен прибор, предупреждающий окружающих держать 2-метровую дистанцию. Это 2-в-1 устройство: термистор не только повышает точность измерения расстояния (скорость звука зависит от температуры), но и позволяет переключать режимы кнопкой/сенсором касания:

Как это работает?

В режиме 1:

В режиме 2: на LCD сверху расстояние, снизу температура.

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

Как собрать?

Соберите схему согласно диаграмме ниже. Импортируйте библиотеки (HCSR04 и LiquidCrystal) через Arduino IDE: Sketch → Include Library → Add .ZIP Library. Затем загрузите код.

Код

Основной скетч (Arduino)

#include <HCSR04.h>
#include <LiquidCrystal.h>
#define trigPin 7
#define echoPin 6
#define buzzer 9
#define backlight 10
LiquidCrystal lcd(12, 11, 5, 4, 3, 8);
UltraSonicDistanceSensor distanceSensor(trigPin, echoPin);
int tempReading;
double tempK;
float tempC;
int rounded;
int temp_round;
volatile boolean modes = 0;
double distance;
void setup() {
  lcd.begin(16, 2);
  attachInterrupt(0, changeMode, FALLING);
  pinMode(2, INPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(backlight, OUTPUT);
  digitalWrite(backlight, HIGH);
  backlightOn();
}
void loop() {
  tempReading = analogRead(A0);
  tempK = log(10000.0 * ((1024.0 / tempReading - 1)));
  tempK = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * tempK * tempK)) * tempK);
  tempC = tempK - 273.15;
  distance = distanceSensor.measureDistanceCm(tempC);
  temp_round = round(tempC);
  if (modes == 1) {
    backlightOn();
    if (distance >= 300 || distance <= 0) {
      rounded = 0;
      lcd.clear();
      lcd.print("Out of range");
      lcd.setCursor(0, 1);
      lcd.print("Temperature:" + String(temp_round) + " C");
    } else {
      rounded = round(distance);
      lcd.clear();
      lcd.print("Distance: ");
      lcd.print(rounded);
      lcd.print(" cm");
      lcd.setCursor(0, 1);
      lcd.print("Temperature:" + String(temp_round) + " C");
    }
  } else {
    if (distance >= 300 || distance <= 0) {
      rounded = 0;
      lcd.clear();
      backlightOff();
    } else {
      rounded = round(distance);
      if (distance >= 200) {
        backlightOff(); lcd.clear();
      } else if (distance <= 200 && distance > 100) {
        backlightOn(); lcd.clear();
        lcd.print("Please keep away");
        lcd.setCursor(0, 1);
        lcd.print("Distance:"); lcd.print(rounded); lcd.print(" cm");
      } else if (distance <= 100 && distance > 50) {
        backlightOn(); lcd.clear();
        lcd.print("Keep away");
        lcd.setCursor(0, 1);
        lcd.print("Distance:"); lcd.print(rounded); lcd.print(" cm");
        delay(200); buzz(); backlightOff(); delay(100); unbuzz(); backlightOn(); delay(100);
      } else if (distance <= 50) {
        backlightOn(); lcd.clear();
        lcd.print("STAY AWAY!");
        lcd.setCursor(0, 1);
        lcd.print("Distance:"); lcd.print(rounded); lcd.print(" cm");
        delay(200); buzz(); backlightOff(); delay(200); unbuzz(); backlightOn(); delay(200);
        buzz(); backlightOff(); delay(200); unbuzz(); backlightOn();
      }
    }
  }
  delay(700);
}
void changeMode() { modes = !modes; }
void backlightOn() { digitalWrite(backlight, HIGH); }
void backlightOff() { digitalWrite(backlight, LOW); }
void buzz() { digitalWrite(buzzer, HIGH); }
void unbuzz() { digitalWrite(buzzer, LOW); }

Библиотеки

Схемы

Файл схемы Fritzing: coronavirus_distancing_WQxTcxgmYm.fzz

Производственный процесс

  1. Интерактивная кукла «Игра в кальмара» на Arduino UNO: DIY-проект
  2. Часы реального времени на Arduino с расчётом времени намаза
  3. Робот для поиска людей на базе Arduino Uno: пошаговая интеграция датчиков
  4. Веб-сервер на Arduino Uno WiFi: управление LED через браузер
  5. Простой калькулятор на Arduino UNO — базовый проект для начинающих
  6. Вывод изображений на 1.17-дюймовый TFT LCD с Arduino UNO
  7. Сборка портативного дисплея на основе эффекта сохранения изображения с Arduino UNO и ATtiny85
  8. Arduino-таймер для мытья рук: простое DIY-устройство для борьбы с COVID‑19
  9. Мастерство 8×8 LED-матрицы с Arduino Uno: Пошаговое руководство
  10. Управление 4-пиновым PWM-вентилятором 25 кГц на Arduino Uno — Сборка, код и тесты