سنسور DHT11
سنسور دما و رطوبت DHT11 سنسوری ارزان قیمت جهت اندازه گیری دما و رطوبت هوا است. اندازه، مصرف کم انرژی آن را به یکی از بهترین گزینهها جهت استفاده در پروژههای مختلف، تبدیل کرده است. سنسور DHT11 کالیبره شده و دارای خروجی دیجیتال است. محدوده اندازه گیری رطوبت بین ۲۰ تا ۹۰% RH و محدودهی دما از ۰ تا ۵۰ درجه سانتی گراد میباشد. ولتاژ کاری ماژول DHT بین ۳٫۳ تا ۵ ولت DC است. فاصله انتقال سیگنال در ماژول DHT11 تا ۲۰ متر میباشد. ماژول دما و رطوبت DHT11 بسیار مقرون به صرفه، دارای کیفیت عالی و واکنش سریع نسبت به تغییر دمای محیط است. ماژول DHT11 به ترتیب دارای ۳ پایه GND, VCC, Signal میباشد.
تراشه ESP32
ESP32 می تواند به عنوان یک سیستم کامل مستقل یا به عنوان یک دستگاه MCU عمل کند و بار اضافی ارتباطات را در پردازنده اصلی برنامه کاهش دهد. ESP32 می تواند با سیستم های دیگر ارتباط برقرار کند تا از طریق SPI عملکرد Wi-Fi و بلوتوث را ارائه دهد. ESP32 با سوئیچ های آنتن داخلی، RF balun، تقویت کننده قدرت، تقویت کننده دریافت، فیلترها و ماژول های مدیریت توان یکپارچه شده است. ESP32 با حداقل الزامات برد مدار چاپی (PCB) ، عملکرد و تطبیق پذیری بی نظیری را به برنامه های شما اضافه می کند. برد ESP32 نسل پیشرفته ESP8266 است. یکی از تفاوتهای آن بلوتوث داخلیاش میباشد. همچنین دارای هسته وایفای ۲,۴ گیگا هرتزی و بلوتوث داخلی تولید شده با تکنولوژی ۴۰ نانومتری شرکت TSMC میباشد. این ماژول دارای بهترین پرفورمنس در مصرف انرژی میباشد یعنی با کمترین مصرف انرژی بهترین نتیجه را برای ما به همراه دارد. اگر بخواهیم دقیقتر به این برد نگاه کنیم باید بگوییم که این یک chip است که پلتفرم NodeMCU در اون پیاده سازی شده که به این نوع چیپ ها System on a chip microcontrollers هم گفته میشود.
شرح پروژه DHT11 با میکروپایتون
در پروژه DHT11 با میکروپایتون مقادیر دما توسط سنسور DHT11 محاسبه میشود و در ادامه به کمک یک وبسرور به کاربر نمایش میدهیم، تمام پردازش و سناریو ها با استفاده از میکروپایتون اجرا خواهند شد همچنین در بستر برد ESP32. در وبسرور مقادیر دما و رطوبت را در صفحه وب که از طریق یک آدرس IP در دسترس است خواهیم دید. همه دستگاههایی که به همان روتری متصل هستند که دستگاه ESP32 به آن متصل است، میتوانند با استفاده از یک آدرس IP به این صفحه وب دسترسی داشته باشند.
شماتیک پروژه
کد های پروژه DHT11 با میکروپایتون
این پروژه دارای دو فایل کد است که به ترتیب باید در برنامه مورد نظر ساخته و در برد آپلود شود، اولین فایل را با نام boot.py ایجاد کنید و کد های زیر را در آن پیست کنید و در برد ESP32 خود آپلود کنید.
try: import usocket as socket except: import socket import network from machine import Pin import dht import esp esp.osdebug(None) import gc gc.collect() ssid = 'Bilal' password = 'mominmomin' station = network.WLAN(network.STA_IF) station.active(True) station.connect(ssid, password) while station.isconnected() == False: pass print('Connection successful') print(station.ifconfig()) dht_pin = dht.DHT11(Pin(4))
در فایل boot.py، ما روش های برنامه نویسی سوکت MicroPython را برای اتصال ESP32 به شبکه های WiFi قرار می دهیم. علاوه بر این، ما همچنین کلاس Pin و dht را از ماژول ماشین MicroPython وارد می کنیم تا پین GPIO4 را برای خواندن دما و رطوبت از DHT11 تنظیم کنیم. سوکت ها ارتباط سرتاسری بین سرور و کلاینت را بر روی اتصال فراهم می کنند. این به این معناست که یک سرور و یک کلاینت باید قبل از انتقال داده ها بین یکدیگر، ارتباط برقرار کنند.
-
ما دو متغیر تعریف می کنیم که نام و رمز عبور شبکه وای فای را نگه می دارد. موار زیر را مطابق با اطلاعات خود تغییر دهید.
ssid= 'Name' password = 'Passoword'
در ادامه فایلی با نام Main.py میسازیم و کد های زیر را وارد میکنیم و در برد ESP32 آپلود میکنیم.
def read_dht(): global temp, hum temp = hum = 0 try: dht_pin.measure() temp = dht_pin.temperature() hum = dht_pin.humidity() if (isinstance(temp, float) and isinstance(hum, float)) or (isinstance(temp, int) and isinstance(hum, int)): msg = (b'{0:3.1f},{1:3.1f}'.format(temp, hum)) # uncomment for Fahrenheit #temp = temp * (9/5) + 32.0 hum = round(hum, 2) return(msg) else: return('Invalid sensor readings.') except OSError as e: return('Failed to read sensor.') def web_page(): html = """<html><head> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> body { padding: 20px; margin: auto; width: 50%; text-align: center; } .progress { background-color: #F5F5F5; } .progress.vertical { position: relative; width: 25%; height: 60%; display: inline-block; margin: 20px; } .progress.vertical > .progress-bar { width: 100% !important; position: absolute;bottom: 0; } .progress-bar { background: linear-gradient(to top, hsl(352, 51%, 62%) 0%, #f12711 100%); } .progress-bar-hum { background: linear-gradient(to top, #9CECFB 0%, hsl(256, 100%, 51%) 50%, hsl(217, 94%, 20%) 100%); } .progress-bar-temp { background: linear-gradient(to top, #9CECFB 0%, hsl(256, 100%, 51%) 50%, hsl(217, 94%, 20%) 100%); } p { position: absolute; font-size: 1.5rem; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 5; } </style> </head><body> <h1>MicroPython ESP DHT11/DHT22 Web Server</h1> <div class="progress vertical"> <p>"""+str(temp)+"""°C<p> <div role="progressbar" style="height: """+str(temp)+"""%;" class="progress-bar progress-bar-temp, "></div> </div> <div class="progress vertical"> <p>"""+str(hum)+"""%</p> <div role="progressbar" style="height: """+str(hum)+"""%;" class="progress-bar progress-bar-hum"></div> </div> </body></html>""" return html s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('', 80)) s.listen(5) while True: conn, addr = s.accept() print('Got a connection from %s' % str(addr)) request = conn.recv(1024) print('Content = %s' % str(request)) sensor_readings = read_dht() print(sensor_readings) response = web_page() conn.send('HTTP/1.1 200 OK\n') conn.send('Content-Type: text/html\n') conn.send('Connection: close\n\n') conn.sendall(response) conn.close()
نتیجه نهایی
پس انجام مراحل ذکر شده، آپلود کتابخانه و کد اصلی پروژه در نهایت اگر تمامی مراحل به درستی انجام شده باشد و اتصال وایفای بین برد ESP32 و شبکه وایفای معرفی شده برقرار باشد، در ترمینال نرمافزار upycraft یک آدرس IP برای شما نمایش داده خواهد شد که با جستجو این ip در مرورگر خود قادر به دسترسی به وبسرور و تماشای مقادیر بدست آمده از سنسور DHT خواهید بود.
کلام آخر با سایفر
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.