آموزش آردوینو اینترنت اشیا IOT برد ESP8266 برد Nodemcu برد ویموس Wemos

ساخت دستگاه فاصله گذاری اجتماعی کرونا ویروس با SRF در دوران قرنطینه

نوشته شده توسط CiferTech

در چند ماه اخیر نه تنها کشور ما بلکه تمام کشورهای دنیا درگیر ویروسی به نام کرونا یا COVID-19 بوده‌اند، حتما توصیه های پزشکی درباره رعایت پروتکل های بهداشتی را شنیده‌اید که یکی از مهم ترین آن ها فاصله گذاری اجتماعی است که به اعضای جامعه یادآوری می کند با رعایت فاصله‌ای مشخص در ارتباط با دیگران می‌توانند درصد ابتلا و شیوع ویروس را بطور قابل توجهی کاهش دهند، در این آموزش با چند ماژول ساده و برد ESP8266 اقدام به ساخت یک دستگاه ساده با هدف فاصله اجتماعی می کنیم. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 

دستگاه فاصله گذاری اجتماعی دوران کرونا - دیجی اسپارک

 


برد ESP8266


ماژول های ESP32 و ESP8266 ساخت شرکت Espressif Systems از در دسترس ترین تراشه های اینترنت اشیا هستند. و همچنین قیمت پایین تری نسبت به دیگر تراشه های اینترنت اشیا دارند و برای توسعه کد های آن میتوانیم از نرم افزار Arduino استفاده کنیم که دسترسی آسان تری را برای کاربر فراهم میکند.

برخی از ویژگی های ESP8266

  • ماژول شبکه و میکروکنترولر ESP8266 یکی از معروفترین و ارزان ترین و دردسترس ترین تراشه های اینترنت اشیا میباشد.
  • این ماژول با دارا بودن میکروکنترولر قدرتمند بهمراه ارتباط شبکه WIFI داخلی،
  • پشتیبانی کامل فول استک TCP/IP
  • و همچنین با ارائه رابط های سخت افزاری کافی گزینه مناسبی برای کاربرد های کوچک و کم مصرف اینترنت اشیا میباشد.
  • این میکروکنترولر در سال ۲۰۱۴ به بازار عرضه گردید.

 


ماژول فاصله سنج SRF


این نوع از ماژول های فاصله سنج در انواع مختلفی تولید می شوند، که از محبوب ترین آن ‌ها می‌توان SRF-04 و SRF-05 را نام برد، نحوه کارکرد این ماژول ها به این صورت است که با استفاده دو نوع قطعه التراسونیک که بر روی ماژول قرار دارد، امواج التراسونیک و همچنین محاسبات بر اساس زمان ارسال بازخورد امواج، قادر به محاسبه فاصله خواهیم بود، همان طور که ذکر شد در این ماژول دو نوع قطعه التراسونیک وجود دارد که یکی از آن ها از نوع T یا فرستنده و دیگری از نوع R یا دریافت کننده می باشد. پس ماژول به این صورت کار می کند که با ارسال و دریافت امواج التراسونیک فاصله با اجسام را در نهایت قابل محاسبه می کند.


وسایل مورد نیاز


ماژول فاصله سنج SRF04

برد ESP8266

ماژول Neopixel ring

وسایل ساخت فاصله سنج کرونا با SRF - دیجی اسپارک

 


نحوه کار پروژه


در این پروژه با استفاده از ماژول فاصله سنج SRF فاصله بین دو شخص را محاسبه و همچنین با استفاده از ماژول LED RING میزان فاصله مجاز را به فرد مقابل اطلاع می‌دهیم، به این صورت که اگر فاصله کمتر یک متر باشد led ها شروع به روشن شدن می‌کنند و همینطور بیزر نیز با کاهش بیش از حد فاصله به صدا در خواهد آمد.

دستگاه فاصله اجتماعی با سنسور فاصله سنج SRF دوران کرونا - دیجی اسپارک

 


نصب کتابخانه مورد نیاز


ابتدا در نرم افزار Arduino IDE اقدام به نصب کتابخانه مرجع Adafruit_NeoPixel می پردازیم. مراحل زیر را دنبال کنید.

  1. این مسیر را دنبال کنید Sketch Include Library > Manage Libraries
  2. کلمه Adafruit_NeoPixel را جستجو کنید.
  3. کتابخانه را نصب کنید.

شماتیک و اتصالات


اتصالات را مانند تصاویر زیر برقرار کنید، توجه داشته باشید که مدار از دو بخش مختلف تشکیل شده، یعنی فاصله سنج و بخش هشداردهنده فاصله مجاز که متشکل از بیزر و LED RING است. در مرحله اول اتصالات ماژول SRF را برقرار خواهیم کرد.

اتصال ماژول فاصله سنج SRF به برد Nodemcu با تراشه ESP8266 - دیجی اسپارک

 

شماتیک اتصال ماژول فاصله سنج SRF به برد Nodemcu - دیجی اسپارک

 

  • در مرحله بعد مطابق تصویر زیر اتصالات ماژول نئوپیکسل را برقرار کنید.

اتصال حلقه ال ای دی نئوپیکسل به برد Nodemcu - دیجی اسپارک

شماتیک اتصال حلقه ال ای دی نئوپیکسل به برد Nodemcu - دیجی اسپارک

 

  • در نهایت اتصالات مربوط به قطعه بیزر را برقرار کنید.

اتصال Buzzer به برد Nodemcu - دیجی اسپارک

شماتیک اتصال Buzzer به برد Nodemcu - دیجی اسپارک

 

  • اتصالات کامل پروژه به شرح زیر است.

شماتیک دستگاه فاصله گذاری اجتماعی کرونا ویروس با SRF - دیجی اسپارک

 


کد پروژه دستگاه فاصله اجتماعی


در این مرحله بخش های مختلف کد این پروژه و همچنینی قابلیت های آن را بررسی خواهیم کرد. در اولین خط اقدام به معرفی کتابخانه مورد نیاز برای راه‌اندازی ماژول LEDring می‌کنیم.

#include<Adafruit_NeoPixel.h>

 

در ادامه اقدام به نام‌گذاری پایه های مد نظر و مقداردهی به مواردتعریف شده برای مثال تعداد LED های موجود خواهیم کرد.

#define ledPin D1
#define buzzerPin D2
#define echoPin D5
#define trigPin D6
#define ledNo 20

 

در این قسمت دو متغیر از نوع int تعریف و از آن ها به عنوان حداقل و حداکثر فاصله در ادامه پروژه استفاده خواهیم کرد.

int minDistance = 50, maxDistance = 80;

 

در قسمت Void setup تننظیمات اولیه موردنیاز را مشخص می‌کنیم از جمله حالت ورودی یا خروجی بودن پایه های مورد نیاز و همچنین وضعیت اولیه ماژول LED Ring.

void setup() 
{
  pinMode(buzzerPin, OUTPUT);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  ring.begin();
  for(int i = 0; i < ledNo; i++)
  {
    ring.setPixelColor(i,ring.Color(0,0,0));
  }
  ring.show();
}

 

این قسمت مربوط به ترتیب روشن شدن led ها در ماژول LED Ring است، که می‌توانید به دلخواه آن هارا تغییر دهید.

    if(i < 6)
    {
      ring.setPixelColor(i,ring.Color(50,0,0));//g,r,b
    }
    else if(i >= 6 && i < 12)
    {
      ring.setPixelColor(i,ring.Color(50,0,0));//g,r,b
    }
    else if(i >= 12 && i < 16)
    {
      ring.setPixelColor(i,ring.Color(0,50,0));//g,r,b
    }

 

کد کامل پروژه دستگاه فاصله اجتماعی دوران کرونا

#include<Adafruit_NeoPixel.h>

#define ledPin D1
#define buzzerPin D2
#define echoPin D5
#define trigPin D6
#define ledNo 20

Adafruit_NeoPixel ring = Adafruit_NeoPixel(ledNo,ledPin,NEO_RGB+NEO_KHZ800);

int minDistance = 50, maxDistance = 80;

void setup() 
{
  pinMode(buzzerPin, OUTPUT);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  ring.begin();
  for(int i = 0; i < ledNo; i++)
  {
    ring.setPixelColor(i,ring.Color(0,0,0));
  }
  ring.show();
}

void loop() 
{
  int distance = calcDistance();
  int ledsToGlow = map(distance, minDistance, maxDistance, ledNo, 1);
  if(ledsToGlow == 16)
  {
    digitalWrite(buzzerPin, HIGH);
  }
  else
  {
    digitalWrite(buzzerPin, LOW);
  }
  for(int i = 0; i < ledsToGlow; i++)
  {
    if(i < 6)
    {
      ring.setPixelColor(i,ring.Color(50,0,0));//g,r,b
    }
    else if(i >= 6 && i < 12)
    {
      ring.setPixelColor(i,ring.Color(50,0,0));//g,r,b
    }
    else if(i >= 12 && i < 16)
    {
      ring.setPixelColor(i,ring.Color(0,50,0));//g,r,b
    }
  }
  for(int i = ledsToGlow; i < ledNo; i++)
  {
    ring.setPixelColor(i,ring.Color(0,0,0));
  }
  ring.show();
  delay(150);
}

int calcDistance()
{
  long distance,duration;
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = duration/29/2;
  if(distance >= maxDistance)
  {
    distance = maxDistance;
  }
  if(distance <= minDistance)
  {
    distance = minDistance;
  }
  return distance;
}

 

دستگاه فاصله گذاری اجتماعی دوران کرونا - دیجی اسپارک

 


جمع بندی


در پروژه فاصله اجتماعی با استفاده از قطعاتی مانند LED ring، بیزر، فاصله سنج SRF و همچنین برد ESP8266 یک دستگاه بسیار مفید و کاربردی برای دوران شیوع ویروس کرونا ساختیم که فاصله مجاز بین افراد در مکان های عمومی را به آن ها یادآوری و در صورت نیاز هشدار می‌دهد. با توجه به قطعات این پروژه با استفاده از یک برد هزار سوراخ می توانید قطعات را در یک مدار کنار هم نگه داشته و از آن در هرمکانی استفاده نمایید.

  • تنظیمات منوی tools در نرم افزار آردوینو نیز مانند تصویر زیر است.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

CiferTech

تبادل نظر و رفع عیب با ثبت دیدگاه

۳ دیدگاه

  • سلام ببخشید من با این ارور مواجه میشم ، میشه راهنمایی کنید
    Executable segment sizes:
    IROM : 230056 – code in flash (default or ICACHE_FLASH_ATTR)
    IRAM : 27012 / 32768 – code in IRAM (ICACHE_RAM_ATTR, ISRs…)
    DATA : 1256 ) – initialized variables (global, static) in RAM/HEAP
    RODATA : 696 ) / 81920 – constants (global, static) in RAM/HEAP
    BSS : 24896 ) – zeroed variables (global, static) in RAM/HEAP
    Sketch uses 259020 bytes (24%) of program storage space. Maximum is 1044464 bytes.
    Global variables use 26848 bytes (32%) of dynamic memory, leaving 55072 bytes for local variables. Maximum is 81920 bytes.