با توجه به شیوع بیشتر ویروس کرونا، در این پروژه قصد داریم تا شما علاقه مندان به الکترونیک را با سنسور دمای لمسی ESP32 آشنا سازیم. برای اندازه گیری دما هنگامی که فقط جسم نزدیک به 5 سانتی متر نزدیک می شود، یک سنسور فوق صوتی HC-SR04 برای اندازه گیری فاصله استفاده می شود، دما اندازه گیری می شود، DAC شلیک می شود تا نتیجه را همزمان بیان کند و داده ها در ابر بارگذاری می شوند.
فهرست مطالب
چرا باید از ESP32 استفاده کنیم؟
سنسور دمای لمسی ESP32 دارای دو DAC GPIOs – 25 & 26 است. ما بر روی پین 25 تمرکز کرده ایم تا دو فایل WAV 8 کیلوهرتز را بیان کنید [در کد C] بسته به درجه حرارت زیر 99 درجه فارنهایت از یک فایل کتابخانه ویژه برای استقرار این قابلیت استفاده می شود. همچنین تقویت کننده صوتی کوچک 5 ولت – PAM8403 Stereo Audio Amplifier Board برای شنیدن صدا از طریق یک بلندگوی 8 OHM 3 واتی استفاده می شود.
ویژگیها و مشخصات ESP32
هنگامی که دما بیش از یا برابر با 99 درجه فارنهایت باشد، یک زنگ هشدار صوتی نیز در زنگ اخبار peizo تولید می شود و یک LED چشمک می زند. نمای کامل یک مرکز تشخیصی!
همه اینها با استفاده از یک یا دو ESP32، یک آداپتور 5 ولت و یک تقویت کننده صوتی کوچک ساخته شده است. 5 ولت ضروری است زیرا HC-SR04 در تأمین 5 ولت کار می کند. از اینترنت WiFi برای بارگذاری داده ها در سرور ابری [thingspeak.com] استفاده می شود.
درصورتی که دوربینی دارید که می توان با شیر برقی شاتر آن را فعال کرد، ESP32 می تواند با استفاده از تغییرات اندک در کد، آن دوربین را نیز کار کار اندازد! به گونه ای که وقتی دمای بالاتر از 99 را حس کرد، GPIO را فعال می کند تا بر روی شاتر کلیک کرده و از آن عکس فوری گرفته شود.
شبکه های متعددی را می توان با شناسه SS و رمزهای عبور تنظیم کرد که هر کدام از آنها کار کند، برای انتقال داده به ابر متصل شده و استفاده می شود. به بخش SSID و رمز عبور طرح مراجعه کنید. SSID و رمزهای عبور را مانند SSID و گذرواژه های خود جایگزین کنید.
// در اینجا شبکه های معروف را تعریف کنید
const char * KNOWN_SSID [] = {“bera1” ، “bera.” ، “.bera” ، “NTPC_WiFi”}؛
const char * KNOWN_PASSWORD [] = {“12345678” ، “34567890” ، “5566789014” ، “ascdefgh”}؛
const int KNOWN_SSID_COUNT = sizeof (KNOWN_SSID) / sizeof (KNOWN_SSID [0])؛
// تعداد شبکه های شناخته شده
BOM: منبع = [calcuttaelectronics.com robu.in amazon.in]
گرانترین کالا MLX90614 = INR1000 ~ 1500 INR است
ESP32: 500 INR * 2
HC-SR04: 150 INR
TFT ILI9163 = 500 INR
آداپتور 5 ولت = INR150
PAM8403 = INR50
در کمتر از 3000 INR این قابل ساخت است.
اتصالات و شماتیک سنسور دمای لمسی
از آنجا که پخش صدا و نمایش رنگی قدرت محاسباتی زیادی را می طلبد، اگر همه چیز را در یک سنسور دمای لمسی ESP32 قرار دهیم، پخش صدا و نمایشگر هر دو بسیار مختل می شود و کیفیت بهم می خورد. برای حل این مشکل ما از دو ESP32 – Main ESP32 و Voice ESP32 استفاده کرده ایم.
صدای ESP32
ما فقط چند فایل صوتی را بارگیری کرده ایم و آنها را به گونه ای برنامه ریزی کرده ایم که وقتی GPIO های خاص بالا می روند، فایل های صوتی پخش می شوند. در اینجا ما دو فایل صوتی بارگذاری کرده ایم – “شما خوب هستید” و “شما تب دارید”. برای بازی با چندین شرط دیگر می توانید صداهای بیشتری اضافه کنید. با این حال، فقط نمونه برداری را با حجم کم و 8 کیلوبیت انجام دهید.
ESP32 اصلی
این ESP32 اصلی است که به نمایشگر TFT رنگی ILI 9163، رنجر التراسونیک HC-SR04 و سنسور دمای IR MLX90614 متصل است. به صورت اختیاری می توانید آن را با کدهای صوتی و متصل به یک صفحه تقویت کننده و بلندگو PMA8403 بارگیری کنید اما ظرفیت نمایش را به شدت محدود میکند.
فقط یک داده دما میتواند نشان داده شود، نمایش کاراکتر بیشتر محدود می شود. بنابراین، این ESP32 فقط وظیفه سنجش فاصله را دارد و هنگامی که فاصله در محدوده [2 سانتی متر تا 15 سانتیمتر] باشد، دمای بدن را گرفته، آن را می خواند و آن را با “شرایط تب” یا “شرایط خوب” پرچم گذاری می کند. به شبکه WiFi متصل شوید و در cloud بارگذاری کنید. در حین انجام این کار، چند GPIO برای ایجاد یک زنگ اخبار، چند LED روشن می شود و به “Voice ESP32” دستور میدهد تا صدای صوتی مناسبی پخش شود.
دما> = 99 “شرایط تب” و دما <99 “شرایط خوب” است. در شرایط تب، زنگ اخطار می زند و صفحه نمایش قرمز رنگ است. هر دو ESP32 ممکن است از یک آداپتور برق یا از دو منبع تغذیه جداگانه تغذیه شوند. با این حال، خطوط مشترک زمینی آنها قرار است به هم متصل شوند.
اتصال بلندگو از طریق آمپلی بورد PAM8403 از GPIO pin 25 & Gnd گرفته شده است. منبع تغذیه برای آمپلی برد از 5 ولت و Gnd گرفته شده است. خروجی از یک آمپلی برد PAM8403 با بلندگوی 8 OHM پخش می شود. منبع تغذیه 5 ولت DC ترجیحاً 2 آمپر یا بیشتر برای خط تغذیه 5 ولت اعمال شود همانطور که در شماتیک نشان داده شده است. به دلیل تقویت برد PMA8403 به برق بیشتری نیاز است. منبع تغذیه 3.3 ولت توسط تنظیم کننده ولتاژ داخلی ESP32 انجام می شود.
ایجاد پرونده های WAV
بیشتر بارهای سنگین توسط کتابخانه XT_DAC_Audio از xtronical.com انجام می شود. کتابخانه را می توان از این آدرس اینترنتی بارگیری کرد یا می توانید آن را از منابع کتابخانه ای که در این پروژه گنجانده ام دریافت کنید.
کاربران ویندوز
در مرحله بعدی کاری که شما باید انجام دهید این است که انتخاب فایل wav صوتی خود را به پرونده C [8 khz sampled] با فرمت HEX تبدیل کنید. سایت های مبدل صدای آنلاین بسیاری وجود دارد [به عنوان مثال fromtexttospeech.com] که متن شما را می گیرد و آن را به انتخاب فایل های صوتی [mp3 ، wav ، ogg و غیره] تبدیل می کند. لطفاً اطمینان حاصل کنید که این پرونده یک پرونده wav 8 کیلوهرتز PCM است.
پس از آن پرونده wav 8 khz با استفاده از یک نرم افزار دیگر HxD از mh-nexus.de به کد C hexadecimal C تبدیل می شود که در نهایت به یک متن ساده مانند پرونده تبدیل می شود که ما آن را به عنوان fever.h و ok.h. نامگذاری می کنیم.
درصورتی که یک فایل صوتی wav یا mp3 غنی باشد، باید از نرم افزار دیگری استفاده کنید – برای تبدیل آن به فرمت صدای wav 8 کیلوهرتز. سایت audacityteam.org در دسترس است
fever.h می گوید = “شما تب دارید”
ok.h می گوید = “شما خوب هستید”
برای کاربران لینوکس؛ راهی آسان تر …
دو نرم افزار لازم است – gtts-cli [متن Google به نرم افزار صدا] و xxd. با استفاده از دستورات زیر می توان هر دو را از خط فرمان نصب کرد.
sudo pip3 نصب gTTS // ابزار Google Text to Speech python را نصب می کند.
sudio apt-get install xxd // این نرم افزار xxd را نصب می کند
تبدیل متن به پرونده wav مستقیم رو به جلو است و تبدیل آن فایل wav به پرونده C کد hex با یک دستور مستقیم دیگر به جلو انجام می شود.
// gtts-cli “شما تب دارید” -l en -o fever.wav
این فایل را در ویرایشگر موسیقی باز کرده و آن را به صورت فرمت فایل 8 khz PCM wav صادر کنید
// xxd -i fever.wav fever.h
// gtts-cli “شما خوب هستید” -l en -o ok.wav
این فایل را در ویرایشگر موسیقی باز کرده و آن را به صورت فرمت فایل 8 khz PCM wav صادر کنید
// xxd -i ok.wav ok.h
هر دو این پرونده ها را در همان پوشه طرح Arduino رها کنید و اکنون آماده هستید که بخش و همسایگان خود را تحت تأثیر قرار دهید.
عملکرد سنسور دمای لمسی
MLX90614 دستگاهی I2C است. آدرس I2C پیش فرض کارخانه 0x5A است اما برای افزودن MLX90614 بیشتر در همان MCU، باید آدرس I2C را تغییر دهید. یک طرح جداگانه نیز برای مکالمه دستگاه با آدرسهای مختلف I2C اضافه شده است. اگر جسم بیش از 5 سانتی متر باشد، پیشنهاد می شود نزدیک شوید. هنگامی که نزدیک شد، دما را اندازه گیری می کند. بلندگو – بسته به دامنه دمای اندازه گیری شده، “خوب هستید” یا “تب دارید”. پس از نمایش فاصله و دما روی TFT ، 10 ثانیه آینده برای ارسال داده ها به سرور ابری – thingspeak.com استفاده می شود.
برای انجام مداوم و سریع انتقال داده ها، مجبور هستید فضای ابری را از thingspeak.com یا هر سرور ابری دیگری بخرید یا می توانید سرور ابری شرکت خود را برای بارگذاری بدون توقف داشته باشید بر خلاف شکاف های 15 ثانیه ای ابر رایگان چیزها.
صفحه تقویت کننده استریو کوچک PMA8403 روی 5 ولت کار می کند و خروجی آن به یک بلندگوی 8 وات 3 وات می رسد. فقط یک کانال از برد تقویت کننده استفاده می شود.
C = متصل به WiFi ، U = داده بارگذاری شده ، D = فاصله
دما در درجه سانتیگراد نشان داده شده است.
هر شکلی از ESP32 / ESP32S یا ESP32 S2 برای این پروژه کار خواهد کرد. لطفاً هنگام اتصال به شماره های GPIO اطمینان حاصل کنید.
کار با Voice ESP-32
این ESP32 برنامه ریزی شده است تا چند فایل 8 کیلو بیتی PCM صوتی wav را از حافظه RAM خود جمع و پخش کند. در این پروژه ما آن را با سه فایل صوتی بارگذاری کردهایم و به گونه ای برنامه ریزی شدهایم که وقتی GPIO Pin – 17 ساخته می شود HIGH، صدای “You are OK” پخش میشود.
GPIO-17 HIGH از Voice-ESP32 از تراشه GPIO-33 “Main-ESP32” نشات گرفته است. برای جلوگیری از راه اندازی کاذب، توصیه میشود یک مقاومت 5.6K OHM به GPIO-17 و زمین متصل کنید.
به همان روشی که GPIO-5 از “Voice-ESP32” بلند شود، صدای “شما تب دارید” پخش می شود. GPIO-5 HIGH از GPIO-33 تراشه “Main ESP-32” نشات گرفته است. برای جلوگیری از راه اندازی کاذب، توصیه میشود یک مقاومت 5.6K OHM به GPIO-5 و زمین متصل کنید.
اگر GPIO-16 از “Voice ESP-32” ساخته شود، صدای “You are welcome” پخش میشود اما ما از آن در اینجا استفاده نکردیم. اکنون به شما بستگی دارد که نبوغ خود را برای به کار گیری این صدا به کار بگیرید.
Thingspeak cloud در سنسور دمای لمسی
ابر بسیار محبوب IOT برای میزبانی از داده های بازخورد سنسور شما با استفاده از WiFi ارزان قیمت دستگاه ها را قادر می سازد – ESP8266 ، ESP32 ، WiFi Arduino را قادر می سازد و غیره برای انتخاب شما دو نوع عضویت وجود دارد. کاربر تجاری یک کاربر پولی است که می توانید برای آن در هر ثانیه یک داده [حداکثر 8 داده در هر صفحه] بارگذاری کنید در حالی که برای کاربران رایگان می توانید در هر 15 ثانیه یک داده [حداکثر 8 داده در هر صفحه] بارگذاری کنید.
پس از ورود موفقیت آمیز، یک کلید نوشتن مجوز دریافت خواهید کرد، یک کلید بی معنی 16 کاراکتر تند و زننده که می توانید با آن داده ها را به سرور thingspeak ارسال کنید. می توانید صفحه خود را عمومی یا خصوصی اعلام کنید. اگر عمومی اعلام شود، کسی آن URL را در مرورگر خود باز می کند، می تواند منحنی روند هشت داده زیر را ببیند (Val [0] تا Val [7] در 8 منحنی روند)
https://api.thingspeak.com/update.json?api_key=”YourWriteKey” &field1=”.String(val[0]).” &field2=”.String(val[1]).”&field3=”.String(val[2]).”&field4=”.String(val[3]).”&field5=”.String(val[4]).”&field6=”.String(val[5]).”&field7=”.String(val[6]).”&field8=”.String(val[7].”)”;
اگر آن دستور را در مرورگری یا از طریق دستور GET ESP32 اجرا کنید، این بار همزمان 8 داده را به سرور thingspeak منتقل می کند تا میزبان باشد. سپس صفحه مطالب خود را باز کرده و محله خود را تحت تأثیر قرار دهید.