آموزش آردوینو برد ESP8266 پروژه های آردوینو

ساخت دستگاه پالس اکسی متر با ESP8266 به همراه نمایش ضربان قلب

نوشته شده توسط معین صابری

در سال گذشته تاکنون، ویروس کرونا باعث مرگ افراد بسیاری در جهان شده است. این ویروس که علائمی بسیار شبیه به سرماخوردگی و آنفولانزا دارد، با سرعت بسیاری زیادی در جهان گسترش یافته و موجب ایجاد یک موج همه گیر شده است. یکی از مهم ترین علائم ابتلا به ویروس کرونا، کاهش میزان اکسیژن خون است. از آنجایی که این ویروس سیستم تنفسی را درگیر می کند، کاهش میزان اکسیژن خون متداول ترین عارضه ابتلا به این بیماری است. مطابق دستور العمل های پزشکی، کاهش میزان اکسیژن خون به زیر ۹۳ درصد، می تواند علایم اولیه ابتلا به کرونا را اثبات نماید. در این پست، روش ساخت یک دستگاه پالس اکسی متر سنجش و نمایش میزان اکسیژن خون به همراه نمایش ضربان قلب آموزش میدهیم. به کمک این دستکاه می توانید در صورت مشکوک بودن به ابتلا، از وضعیت خود آگاه شوید. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


اکسیژن خون و ضربان قلب نرمال


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

ساخت دستگاه پالس اکسی متر با ESP8266 آردوینو - دیجی اسپارک

در رابطه با ضربان قلب، این مقدار در سنین مختلف، متفاوت خواهد بود.  مطابق جدول زیر،  میزان استاندارد ضربان قلب برای سنین مختلف، مشخص شده است.

میزان ضربان قلب و سطح اکسیژن خون در حالت طبیعی - دیجی اسپارک

مطابق جدول فوق، میزان ضربان قلب برای افراد نرمال بالای ۱۰ سال، ۶۰ الی ۱۰۰ در دقیقه است.

 


ماژول ESP8266


ماژول ESP8266، یک میکروکنترلر ۳۲ بیتی، با قابلیت اجرای سیستم عامل FREE RTOS و اتصال به شبکه است. در حقیقت این ماژول، در حکم یک (System On Chip) عمل می کند. از دیگر ویژگی های مثبت این ماژول، برنامه نویسی آن به کمک آردویینو است. به عبارت دیگر، برای کار و راه اندازی این ماژول، نیازی به یادگیری زبان برنامه نویسی جدید نداشته و با همان کدها و دستورات آردویینو می توانید از این ماژول استفاده نمایید. ماژول ESP8266 می تواند از سنسورها و ماژول هایی که با اردویینو راه اندازی می شود، پشتیبانی نماید. سنسور های دما، رطوبت، نمایشگرهای OLED و… همگی به سادگی با این ماژول راه اندازی می شوند.

 


معرفی سنسور MAX30100


سنسور ضربان قلب و پالس اکسی متر MAX30100، یک سنسور با خروجی سریال I2C است. اساس کار این سنسور، اندازی گیری میزان اکسیژن خون و ضربان قلب از طریق IR است. این سنسور دارای بازه تغذیه ولتاژ ۳٫۳ الی ۵ ولت است. این سنسور دارای کتابخانه برای راه اندازی بوده که کار با آن را بسیار جالب می سازد. از طرفی دیگر، مصرف انرژی این سنسور بسیار پایین بوده و به راحتی می توان آن را با باتری، به راه انداخت. سنسور ضربان قلب و پالس اکسی متر، یک سنسور کوچک است که توان مصرفی بسیار پایینی دارد. با توجه به اندازه کوچک سنسور، می توان یک دستگاه پالس اکسی متر کوچک و کارا، ساخت.

ماژول اکسی متر Max30100 راه اندازی با آردوینو - دیجی اسپارک

 


کتابخانه سنسور MAX30100 در آردوینو


در ابتدا نیاز است تا کتابخانه این سنسور را در آردویینو، نصب نمایید. برای این منظور، در ابتدا می بایست مطابق تصویر زیر، ابتدا بر روی گزینه Tools و سپس بر روی Manage libraries کلیک نمایید. پس از کلیک بر روی منوی فوق، با تصویر زیر رو به رو خواهید شد. در قسمت جستجو، عبارت max30100 را وارد نمایید. در ادامه، دو کتابخانه ظاهر می شود، شما کتابخانه ای که به کادر قرمز رنگ مشخص شده را انتخاب و نصب نمایید.

نصب کتابخانه سنسور MAX30100 در آردویینو - دیجی اسپارک

 


نمایشگر OLED


نمایشگرهای OLED نسل جدید از نمایشگرها در حوزه الکترونیک و کامپیوتر هستند. این نمایشگر ها در اندازه های ۳۲*۱۲۸ و یا بزرگتر ساخته می شوند. از این نمایشگر ها در ساعت های هوشمند، گجت های پوشیدنی و… به وفور استفاده می گردد. در این آموزش ما هم از این نمایشگر برای نمایش اطلاعات مربوط به میزان ضربان قلب و اکسیژن خون کاربر، استفاده می نماییم. برای راه اندازی و نحوه کار با این نمایشگر، پیشنهاد می کنم آموزش های منتشر شده در دیجی اسپارک(لینک آموزش ها، کلیک کنید) را به طور کامل مطالعه نمایید.

 


مبدل کاهنده ولتاژ lm2596


مبدل کاهنده LM2596، یک مبدل ولتاژ DC به DC است. به کمک این مبدل می توانید ولتاژ ورودی خود را به ولتاژ دلخواه خود در خروجی، تبدیل نمایید. با توجه به وجود یک مولتی ترن(ولوم) جهت تنظیم ولتاژ، می توان ولتاژ خروجی را بر مبنای نیاز خود، روی ولتاژ های ۳٫۳، ۵، ۳، ۱٫۸ و به طور کلی هر ولتاژی که مد نظر شماست، تنظیم نمایید. راه اندازی و کار با این ماژول بسیار ساده بوده و کافیست در ورودی تغذیه را متصل کرده و با ولوم، خروجی را تنظیم نمایید. این ماژول می تواند تا ۳ آمپر جریان به خروجی، بار دهد.

بخش تغذیه ساخت دستگاه پالس اکسی متر با آردوینو - دیجی اسپارک

 


رفع اشکال سطح منطقی سنسور پالس بدون نیاز به تغییر فیزیکی


سنسورهای MAX30100 دارای تغذیه ۱٫۸ ولتی هستند. به همین دلیل، بر روی این سنسور، یک رگولاتور قرار گرفته که می تواند تعذیه ۵ ولت و یا ۳٫۳ را به ولتاژ مورد نیاز این سنسور، تبدیل نماید. اما یک اشکال عمده در این سنسور، اینست که پایه های دیتای این سنسور، SCL و SDA، با مقاومت به پایه ۱٫۸ و نه ۵ ولت، پول آپ شده اند. به عبارت دیگر، سطح یک منطقی پایه های SCL و SDA این سنسور، ۱٫۸ ولت است. از طرفی، بردهای آردیینو با پردازنده AVR مثل برد آردویینو UNO، یک منطقی را از ۳ به بالا(در تغذیه ۵ ولت) در نظر می گیرند. بنابراین، در این حالت مشکل تداخل در سطوح منطقی را خواهیم داشت.

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 

 


اتصالات مدار پالس اکسی متر


در این قسمت به بررسی شماتیک و اتصالات مدار پالس اکسی متر می پردازیم. در ابتدا تصویر شماتیک را مشاهده می نماییم.

اتصالات مدار پالس اکسی متر با ESP8266 و ماژول Max30100 - دیجی اسپارک

 

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

پایه vin سنسور max30100 به پایه ۲٫۵ ولت خروجی مبدل ولتاژ lm2596

پایه GND سنسور MAX30100 به پایه GND خروجی مبدل ولتاژ

پایه SCL سنسور MAX30100 به پایه GPIO5 ماژول ESP8266

پایه SDA سنسور MAX30100 به پایه  GPIO4 ماژول ESP8266

همچنین، اتصالات نمایشگر OLED را به صورت زیر، در نظر بگیرید.

پایه VCC به پایه خروجی ۲٫۵ ولت مبدل ولتاژ LM2596

پایه GND به پایه GND خروجی مبدل ولتاژ

پایه SCL به پایه GPIO12 ماژول ESP8266

پایه SDA به پایه GPIO13 ماژول ESP8266

همچنین، تغذیه ماژول ESP8266 نیز ۲٫۵ ولت بوده و از همان خروجی مبدل کاهنده ولتاژ، تامین می شود.

 


کدهای ساخت پالس اکسی متر


در این قسمت، به بررسی کدهای پروژه، می پردازیم. برای آپلود کدهای زیر، حتما در نظر داشته باشید که باید از مبدل سریال به USB برای پروگرام کردن ماژول ESP8266 استفاده نمایید. همچنین، جهت آپلود کد، ابتدا پایه GPIO0 را به گراند متصل کرده و سپس ماژول را از طریق پایه ریست(با اتصال پایه ریست به گراند برای یک لحظه و سپس جداسازی آن از گراند)، پروگرام نمایید. همچنین، حتما در نظر داشته باشید که برد ESP8266 را در نرم افزار آردویینو انتخاب کرده باشید.

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 

 


اجرای پروژه پالس اکسی متر


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

مقادیر سنسور Max30100 در سریال مانیتور آردوینو - دیجی اسپارک

 

در ادامه شکل صحیح قرار گیری انگشت بر روی سنسور را مشاهده می نمایید. برای عملکرد بهتر، انگشت دست چپ را مشابه تصویر زیر، بر روی سنسور قرار دهید.

راه اندازی سنسور Max30100 با برد ESP8266 آردوینو - دیجی اسپارک

در ادامه، با اندازه گیری ضربان قلب و میزان اکسیژن خون، این دو پارامتر بر روی نمایشگر نشان داده خواهد شد. با توجه به تصویر زیر، پارامتر s بیانگر میزان اکسیژن خون و یا همان SPO2 و پارامتر h بیانگر ضربان قلب و یا herat rate است.

پروژه پالس اکسی متر با ESP8266 و نمایشگر OLED - دیجی اسپارک

 


تحلیل کدهای برنامه


در این قسمت به بررسی کدهای برنامه می پردازیم. البته، درون کدهای این پروژه، به میزان کافی کامنت قرار گرفته و کدها کامل تشریح شده اند. در اینجا نیز، به طور خلاصه به بررسی کدهای به کار رفته در پروژه می پردازیم.  در ابتدا می بایست کتابخانه های مربوط به نمایشگر و سنسور پالس را به پروژه، اضافه نماییم. پس از این مورد، نوبت به تنظیمات اولیه نمایشگر و سنسور پالس در تابع set up می رسد. همانطور که پیشتر بیان شد، دستگاه برای خواندن اطلاعات مربوط به پالس، ۲۵ ثانیه صبر می کند تا اطلاعات کالیبره شده و دقیقتر را نمایش دهد. این مقدار، توسط متغیر زیر، در ابتدا برنامه، کنترل می گردد.

پس از طی این زمان، داده های مربوط به پالس و ضربان قلب، نمایش داده خواهد. البته در نظر داشته باشید که با قرار گرفتن انگشت بر روی سنسور، عبارت BEAT در سریال مانیتور، نمایش داده خواهد شد.

 


قطعات مورد نیاز


ماژول ESP8266

ماژول پالس اکسی متر MAX30100

مبدل ولتاژ  کاهنده LM2596

نمایشگر OLED

 


جمع بندی


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

 

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

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

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

۱۶ دیدگاه

    • سلام
      چنانچه دقت کنید، پارامتر ضربان قلب را مشاهده خواهید کرد. در نمایشگر oled, عدد قرارگرفته بعد از h, بیانگر ضربان قلب است. در متن آموزش نیز کامل اشاره شده است!!

    • سلام و ممنونم
      ضربان قلب، میزان و نرخ تپندگی قلب را نشان می دهد. اکسی متر و یا همان اکسیژن سنج خون، میزان اکسیژن موجود در خون را نشان می دهد. چنانچه میزان اکسیژن خون از حدی کمتر شود، خطر درگیر شدن ریه وجود دارد.

  • سلام
    من داخل کد هیچ خطی ندیدم که متوجه بشم پایه های ماژول پالس اکسی متر به پایه های شماره چند از ماژول ESP8266 وصل شده؟
    از شماتیک مشخصه اتصال پایه ها ولی مسیه اینه که داخل کد چطور تعریف شده این قضیه؟

    • سلام
      از آنجاییکه ارتباط سنسور پالس اکسی متر با ESP8266 از طریق پورت I2C سخت افزاری برقرار می گردد، لذا نیاز به تعریف پایه های I2C درون کدها نیست. کتابخانه این سنسور به صورت خودکار از طریق پورت I2C سخت افزاری ارتباط را برقرار می سازد. پورت I2C سخت افزاری در بردهای ESP8266 نیز مطابق تصویر شماتیک، GPIO4 و GPIO5 هستند.

  • سلام
    ببخشید یک سوال
    اگر بخواهیم به اردوینو uno دو ماژول که هر دو با پروتکل i2c کار می کنند متصل کنیم، با توچه به این که فقط دو پایه برای اتصال i2c رو برد ارپوینو داریم، چگونه باید اتصالات سخت افزاری را انجام دهیم و در نوشتن برنامه باید چه نکاتی را اعمال کنیم؟
    بابت این که سوالم ارتباط مستقیمی به این اموزش ندارد، عدر خواهی میکنم
    سپااااااس

    • سلام و خواهش میکنم
      در نظر داشته باشید که شما از طریق پورت I2C، تا ۱۲۸ دستگاه را می توانید درایو کنید. به عبارت دیگر، بر روی یک پورت I2C و تنها با استفاده از همان دو پایه، می توان تعداد زیادی دستگاه را متصل نمود. در نظر داشته باشید که هر دستگاه I2C، دارای یک آدرس منحصر به فرد است. بنابراین، دستگاه ها باید جهت اتصال، آدرس های متفاوت داشته باشند. جهت اطلاعات بیشتر، پیشنهاد می کنم آموزش زیر ا مطالعه نمایید.
      آموزش پورت I2C آردوینو

  • سلام و خسته نباشید
    کدهای ارسال شده رو تو سیستم وارد کردم اما چند تا سئوال دارم:
    ۱- درستور ESP.restart در کامپایل کردن پیام خطا میده. پطور باید رفع کنیم؟
    ۲- آیا نیاز به اضافه کردن کتابخانه esp8266 به برنامه نیست؟
    ۳-وقتی دستور ESP.restart رو حذف می کنم ، خطایی رو پیدا نمی کنه اما پیام زیر رو میده:
    Erorr compiling for board arduino uno.
    global variables use 2056 bytes (100%) of dnamic memory,leaving -17 yte for local variables. maximum is 2048 bytes
    این مشکل رو چطور میتونیم رفع کنیم؟
    ۴- از نظر سخت افزاری این پروژه به برد اردینو وصل میشه؟ اگر نه پس چطور باید پروژه رو پروگرام بکنیم؟
    ممنون محبت تون

    • سلام
      دلیل خطاها این است که شما برای برد اردوینو قصد کامپایل دارید، حال اینکه این پروژه برای ESP8266 توسعه یافته است. دلیل این موضوع هم بحث تفاوت سطح منطقی سنسور است که در آموزش به آن پرداخته شده. همچنین، با توجه به خطای ارسالی از سوی شما، کدهای این پروژه مناسب اردوینو UNO نیست چراکه ۱۰۰ درصد فضای حافظه آردوینو را اشغال کرده و عملا برد در این حالت از پایداری خارج می شود.

      • ممنون از وقتی که گذاشتید
        اگه زحمت نیست راهنمایی م کنید که چطور باید این مشکل رو حل کنم؟
        مراحل کاری که باید انجام بدم رو توضیح بدید ممنونتون میشم
        تو آموزش تون متوجه نشدم چطور باید esp8266 رو پروگرام کنم
        ممنون که راهنمایی م می کنید
        در پناه حق

        • سلام و از لطف شما ممنونم
          جهت پروگرام کردن ماژول ESP8266، پیشنهاد می کنم آموزش زیر را مطالعه نمایید:
          آموزش پروگرام کردن ESP8266، کلیک کنید
          توجه داشته باشید که برای برنامه نویسی ESP8266 در آردوینو، می بایست ESP8266 را در نرم افزا آردوینو نصب کرده باشید.
          موارد را تست و بررسی کرده و نتیجه را از همین طریق، جهت راهنمایی های بیشتر، اطلاع رسانی کنید.