برد Esp32 میکروپایتون Micropython

راه‌اندازی سنسور دما رطوبت DHT11 با میکروپایتون و برد ESP32

نوشته شده توسط CiferTech
در این آموزش یاد می گیریم که با استفاده از Micropython سنسور DHT11 را با ESP32 راه‌اندازی کنیم. در این آموزش ابتدا با استفاده از آپلود کتابخانه مربوط به سنسور ابتدا DHT11 را راه‌اندازی می‌کنیم و در ادامه با نوشتن کد برای سناریو اصلی یک وب‌سرور برای مانیتورینگ دما اینجا می‌کنیم. سنسور های DHT11 همواره در پروژه های مختلف مورد استفاده قرار می‌گیرند و با توجه به قیمت و دقت مناسب، گزینه خوبی برای استفاده در پروژه های IoT می‌باشند. لازم به ذکر است در این پروژه برای کدنویسی از نرم‌افزار upycraft استفاده خواهیم کرد. در ادامه آموزش DHT11 با میکروپایتون روش اتصالات چندین سنسور DHT با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
DHT11 با میکروپایتون و برد esp32 - دیجی اسپارک

سنسور 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 هم گفته می‌شود.

 


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


برد ESP32

سنسور DHT11

 


شرح پروژه DHT11 با میکروپایتون


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

برد esp32 و کدنویسی میکروپایتون سنسور dht11 - دیجی اسپارک

 


شماتیک پروژه


سنسور DHT از چهار پین تشکیل شده است. اما در ماژول‌های DHT تنها سه پین در معرض استفاده ماژول قرار می‌گیرند و مقاومت pull-up 10k به پایه ۲ متصل خواهد شد. اولین پایه برای هر دو سنسور یک پایه Vcc است، آن را به پایه ۳٫۳ ولت ESP32 وصل کنید. داده‌ های خروجی از طریق پین دیتا، دما و رطوبت را از سنسور DHT در اختیار ما قرار می‌دهد. این پین را به GPIO4 وصل می‌کنیم و همچنین پین دیتا را با یک مقاومت pull-up 10k کنید.
DHT11 با میکروپایتون و برد esp32 - دیجی اسپارک

 


کد های پروژه 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 خواهید بود.

نتیجه نهایی DHT11 با میکروپایتون و برد ESP32 - دیجی اسپارک

 


کلام آخر با سایفر


در آموزش DHT11 با میکروپایتون توانستیم یک وب سرور راه‌اندازی کنیم تا مقادیر محاسبه شده توسط esp32 و میکروپایتون از سنسور DHT11  را نمایش دهیم. مقادیر نمایشی وب سرور را به راحتی می‌توانید تغییر دهید تا پروژه را به سلیقه خود سفارشی سازی کنید. دستورات مهم مورد استفاده در برنامه نویسی میکروپایتون با ESP32 پیش از این در آموزش های مربوطه منتشر شده است. در اینجا صرفا سنسور دما رطوبت DHT11 را راه اندازی کردیم.
سنسور دما رطوبت DHT11 با میکروپایتون esp32 - دیجی اسپارک

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

 

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

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

CiferTech

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