ESP32 Basic Starter
کیت
لیست بسته بندی
ESP32 مقدمه
آیا با ESP32 جدید هستید؟ از اینجا شروع کنید! ESP32 مجموعه ای از میکروکنترلرهای کم هزینه و کم مصرف سیستم روی تراشه (SoC) است که توسط Espressif توسعه یافته است که شامل قابلیت های بی سیم Wi-Fi و بلوتوث و پردازنده دو هسته ای است. اگر با ESP8266 آشنایی دارید، ESP32 جانشین آن است که دارای بسیاری از ویژگی های جدید است.مشخصات ESP32
اگر می خواهید کمی فنی تر و خاص تر شوید، می توانید به مشخصات دقیق زیر ESP32 نگاهی بیندازید (منبع: http://esp32.net/) - برای جزئیات بیشتر، دیتاشیت را چک کنید):
- اتصال بی سیم WiFi: نرخ داده 150.0 مگابیت بر ثانیه با HT40
- بلوتوث: BLE (بلوتوث کم انرژی) و بلوتوث کلاسیک
- پردازنده: ریزپردازنده 32 بیتی LX6 دو هسته ای Tensilica Xtensa با فرکانس 160 یا 240 مگاهرتز
- حافظه:
- رام: 448 کیلوبایت (برای بوت کردن و توابع اصلی)
- SRAM: 520 KB (برای داده ها و دستورالعمل ها)
- RTC fas SRAM: 8 کیلوبایت (برای ذخیره سازی داده ها و CPU اصلی در هنگام بوت RTC از حالت خواب عمیق)
- SRAM کند RTC: 8 کیلوبایت (برای دسترسی مشترک پردازنده در حالت خواب عمیق) eFuse: 1 کیلوبیت (که 256 بیت برای سیستم استفاده می شود (آدرس MAC و پیکربندی تراشه) و 768 بیت باقی مانده برای برنامه های مشتری، از جمله رمزگذاری Flash و Chip-ID رزرو شده است.
فلاش جاسازی شده: فلاش به صورت داخلی از طریق IO16، IO17، SD_CMD، SD_CLK، SD_DATA_0 و SD_DATA_1 در ESP32-D2WD و ESP32-PICO-D4 متصل می شود.
- 0 مگابایت (تراشه های ESP32-D0WDQ6، ESP32-D0WD و ESP32-S0WD)
- 2 مگابایت (تراشه ESP32-D2WD)
- 4 مگابایت (ماژول ESP32-PICO-D4 SiP)
کم مصرف: تضمین میکند که همچنان میتوانید از تبدیلهای ADC برای مثال استفاده کنیدampدر هنگام خواب عمیق
ورودی/خروجی محیطی:
- رابط محیطی با DMA که شامل لمس خازنی است
- ADC (مبدل آنالوگ به دیجیتال)
- DAC (تبدیل دیجیتال به آنالوگ)
- I²C (مدار یکپارچه)
- UART (گیرنده/فرستنده ناهمزمان جهانی)
- SPI (رابط سریالی جانبی)
- I²S (صدای یکپارچه بین تراشه)
- RMII (رابط مستقل از رسانه کاهش یافته)
- PWM (مدولاسیون عرض پالس)
امنیت: شتاب دهنده های سخت افزاری برای AES و SSL/TLS
تابلوهای توسعه ESP32
ESP32 به تراشه ESP32 لخت اشاره دارد. با این حال، اصطلاح "ESP32" همچنین برای اشاره به بردهای توسعه ESP32 استفاده می شود. استفاده از تراشه های برهنه ESP32 آسان یا عملی نیست، به خصوص هنگام یادگیری، آزمایش و نمونه سازی. بیشتر اوقات، شما می خواهید از یک برد توسعه ESP32 استفاده کنید.
ما از برد ESP32 DEVKIT V1 به عنوان مرجع استفاده خواهیم کرد. تصویر زیر برد ESP32 DEVKIT V1 را نشان می دهد، نسخه با 30 پین GPIO.مشخصات – ESP32 DEVKIT V1
جدول زیر خلاصه ای از ویژگی ها و مشخصات برد ESP32 DEVKIT V1 DOIT را نشان می دهد:
تعداد هسته ها | 2 (دو هسته ای) |
وای فای | 2.4 گیگاهرتز تا 150 مگابیت بر ثانیه |
بلوتوث | BLE (بلوتوث کم مصرف) و بلوتوث قدیمی |
معماری | 32 بیت |
فرکانس ساعت | تا 240 مگاهرتز |
RAM | 512 کیلوبایت |
پین ها | 30 (بسته به مدل) |
لوازم جانبی | لمس خازنی، ADC (مبدل آنالوگ به دیجیتال)، DAC (مبدل دیجیتال به آنالوگ)، 12C (مدار یکپارچه)، UART (گیرنده/فرستنده ناهمزمان جهانی)، CAN 2.0 (شبکه منطقه کنترل)، SPI (رابط داخلی محیطی سریال)، 12S (Inter-Integrate) صدا)، RMII (رابط مستقل از رسانه کاهش یافته)، PWM (مدولاسیون عرض پالس)، و موارد دیگر. |
دکمه های داخلی | دکمه های RESET و BOOT |
LED های داخلی | LED آبی داخلی متصل به GPIO2؛ ال ای دی قرمز داخلی که نشان می دهد برد در حال روشن شدن است |
USB به UART پل |
CP2102 |
این دارای یک رابط microUSB است که می توانید از آن برای اتصال برد به رایانه خود برای آپلود کد یا اعمال برق استفاده کنید.
از تراشه CP2102 (USB به UART) برای برقراری ارتباط با رایانه شما از طریق پورت COM با استفاده از رابط سریال استفاده می کند. تراشه محبوب دیگر CH340 است. بررسی کنید مبدل تراشه USB به UART روی برد شما چیست زیرا باید درایورهای مورد نیاز را نصب کنید تا رایانه شما بتواند با برد ارتباط برقرار کند (اطلاعات بیشتر در مورد این موضوع در ادامه این راهنما).
این برد همچنین دارای یک دکمه RESET (ممکن است با برچسب EN باشد) برای راه اندازی مجدد برد و یک دکمه BOOT برای قرار دادن برد در حالت چشمک زن (برای دریافت کد موجود است). توجه داشته باشید که ممکن است برخی از بردها دکمه BOOT نداشته باشند.
همچنین دارای یک LED آبی داخلی است که به صورت داخلی به GPIO 2 متصل است. این LED برای اشکال زدایی مفید است تا نوعی خروجی فیزیکی بصری ارائه دهد. همچنین یک LED قرمز رنگ وجود دارد که هنگام تامین برق برد روشن می شود.پین اوت ESP32
لوازم جانبی ESP32 عبارتند از:
- 18 کانال مبدل آنالوگ به دیجیتال (ADC).
- 3 رابط SPI
- 3 رابط UART
- 2 رابط I2C
- 16 کانال خروجی PWM
- 2 مبدل دیجیتال به آنالوگ (DAC)
- 2 رابط I2S
- 10 GPIO حسگر خازنی
ویژگی های ADC (مبدل آنالوگ به دیجیتال) و DAC (مبدل دیجیتال به آنالوگ) به پین های استاتیک خاصی اختصاص داده شده است. با این حال، شما می توانید تصمیم بگیرید که کدام پین ها UART، I2C، SPI، PWM و غیره باشند – فقط باید آنها را در کد اختصاص دهید. این امر به دلیل ویژگی مالتی پلکسی تراشه ESP32 امکان پذیر است.
اگرچه میتوانید ویژگیهای پینها را روی نرمافزار تعریف کنید، اما طبق شکل زیر، پینهایی بهطور پیشفرض اختصاص داده شدهاند.علاوه بر این، پین هایی با ویژگی های خاص وجود دارد که آنها را برای یک پروژه خاص مناسب یا غیر مناسب می کند. جدول زیر نشان میدهد که از کدام پینها به عنوان ورودی، خروجی بهتر است استفاده کنید و کدام یک باید محتاط باشید.
پین هایی که با رنگ سبز مشخص شده اند برای استفاده مناسب هستند. مواردی که با رنگ زرد مشخص شده اند برای استفاده مناسب هستند، اما باید توجه داشته باشید زیرا ممکن است رفتار غیرمنتظره ای عمدتا در هنگام بوت داشته باشند. پین هایی که با رنگ قرمز مشخص شده اند برای استفاده به عنوان ورودی یا خروجی توصیه نمی شوند.
GP IO | ورودی | خروجی | یادداشت ها |
0 | بالا کشیده | OK | خروجی سیگنال PWM در هنگام بوت، برای وارد شدن به حالت چشمک زن باید LOW باشد |
1 | پین TX | OK | خروجی اشکال زدایی در هنگام بوت |
2 | OK | OK | متصل به LED روی برد، باید شناور یا LOW باقی بماند تا وارد حالت چشمک زن شود |
3 | OK | پین RX | بالا در بوت |
4 | OK | OK | |
5 | OK | OK | سیگنال PWM را در هنگام بوت، پین تسمه ای خروجی می دهد |
12 | OK | OK | چکمه شکست می خورد اگر بالا کشیده شود، پین بند |
13 | OK | OK | |
14 | OK | OK | سیگنال PWM را در هنگام بوت خروجی می دهد |
15 | OK | OK | سیگنال PWM را در هنگام بوت، پین تسمه ای خروجی می دهد |
16 | OK | OK | |
17 | OK | OK | |
18 | OK | OK | |
19 | OK | OK | |
21 | OK | OK | |
22 | OK | OK | |
23 | OK | OK | |
25 | OK | OK | |
26 | OK | OK | |
27 | OK | OK | |
32 | OK | OK | |
33 | OK | OK | |
34 | OK | فقط ورودی | |
35 | OK | فقط ورودی | |
36 | OK | فقط ورودی | |
39 | OK | فقط ورودی |
برای تجزیه و تحلیل دقیق تر و عمیق تر GPIO های ESP32 و عملکردهای آن به خواندن ادامه دهید.
فقط پین ها را وارد کنید
GPIO های 34 تا 39 GPI هستند - فقط پین های ورودی. این پین ها دارای مقاومت کششی یا کششی داخلی نیستند. آنها را نمی توان به عنوان خروجی استفاده کرد، بنابراین از این پین ها فقط به عنوان ورودی استفاده کنید:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
فلاش SPI روی ESP-WROOM-32 یکپارچه شده است
GPIO 6 تا GPIO 11 در برخی از بردهای توسعه ESP32 قرار دارند. با این حال، این پین ها به فلاش SPI یکپارچه در تراشه ESP-WROOM-32 متصل هستند و برای استفاده های دیگر توصیه نمی شوند. بنابراین، از این پین ها در پروژه های خود استفاده نکنید:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
GPIO های لمسی خازنی
ESP32 دارای 10 سنسور لمسی خازنی داخلی است. اینها می توانند تغییرات را در هر چیزی که دارای بار الکتریکی است، مانند پوست انسان، حس کنند. بنابراین آنها می توانند تغییرات ناشی از لمس کردن GPIO ها را با انگشت تشخیص دهند. این پین ها را می توان به راحتی در لنت های خازنی ادغام کرد و جایگزین دکمه های مکانیکی کرد. از پین های لمسی خازنی نیز می توان برای بیدار کردن ESP32 از خواب عمیق استفاده کرد. این حسگرهای لمسی داخلی به این GPIO متصل هستند:
- T0 (GPIO 4)
- T1 (GPIO 0)
- T2 (GPIO 2)
- T3 (GPIO 15)
- T4 (GPIO 13)
- T5 (GPIO 12)
- T6 (GPIO 14)
- T7 (GPIO 27)
- T8 (GPIO 33)
- T9 (GPIO 32)
مبدل آنالوگ به دیجیتال (ADC)
ESP32 دارای کانال های ورودی ADC 18×12 بیتی است (در حالی که ESP8266 فقط دارای 1×10 بیت ADC است). اینها GPIO هایی هستند که می توانند به عنوان ADC و کانال های مربوطه استفاده شوند:
- ADC1_CH0 (GPIO 36)
- ADC1_CH1 (GPIO 37)
- ADC1_CH2 (GPIO 38)
- ADC1_CH3 (GPIO 39)
- ADC1_CH4 (GPIO 32)
- ADC1_CH5 (GPIO 33)
- ADC1_CH6 (GPIO 34)
- ADC1_CH7 (GPIO 35)
- ADC2_CH0 (GPIO 4)
- ADC2_CH1 (GPIO 0)
- ADC2_CH2 (GPIO 2)
- ADC2_CH3 (GPIO 15)
- ADC2_CH4 (GPIO 13)
- ADC2_CH5 (GPIO 12)
- ADC2_CH6 (GPIO 14)
- ADC2_CH7 (GPIO 27)
- ADC2_CH8 (GPIO 25)
- ADC2_CH9 (GPIO 26)
توجه: هنگام استفاده از Wi-Fi نمی توان از پین های ADC2 استفاده کرد. بنابراین، اگر از Wi-Fi استفاده می کنید و در دریافت مقدار از یک GPIO ADC2 مشکل دارید، ممکن است به جای آن از یک ADC1 GPIO استفاده کنید. این باید مشکل شما را حل کند.
کانال های ورودی ADC دارای وضوح 12 بیتی هستند. این بدان معنی است که شما می توانید خوانش های آنالوگ از 0 تا 4095 را دریافت کنید که در آن 0 مربوط به 0 ولت و 4095 تا 3.3 ولت است. همچنین می توانید وضوح کانال های خود را روی کد و محدوده ADC تنظیم کنید.
پین های ADC ESP32 رفتار خطی ندارند. احتمالاً نمی توانید بین 0 و 0.1 ولت یا بین 3.2 و 3.3 ولت تمایز قائل شوید. هنگام استفاده از پین های ADC باید این را در نظر داشته باشید. رفتاری مشابه آنچه در شکل زیر نشان داده شده است، دریافت خواهید کرد.مبدل دیجیتال به آنالوگ (DAC)
بر روی ESP2 دو کانال DAC 8 بیتی برای تبدیل سیگنال های دیجیتال به حجم آنالوگ وجود دارد.tage خروجی های سیگنال اینها کانال های DAC هستند:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
RTC GPIO
پشتیبانی از RTC GPIO در ESP32 وجود دارد. هنگامی که ESP32 در خواب عمیق است، میتوان از GPIOهای هدایتشده به زیرسیستم کم مصرف RTC استفاده کرد. این GPIO های RTC را می توان برای بیدار کردن ESP32 از خواب عمیق در زمان بسیار کم استفاده کرد
پردازنده کمکی برق (ULP) در حال اجرا است. GPIO های زیر را می توان به عنوان منبع بیدار کردن خارجی استفاده کرد.
- RTC_GPIO0 (GPIO36)
- RTC_GPIO3 (GPIO39)
- RTC_GPIO4 (GPIO34)
- RTC_GPIO5 (GPIO35)
- RTC_GPIO6 (GPIO25)
- RTC_GPIO7 (GPIO26)
- RTC_GPIO8 (GPIO33)
- RTC_GPIO9 (GPIO32)
- RTC_GPIO10 (GPIO4)
- RTC_GPIO11 (GPIO0)
- RTC_GPIO12 (GPIO2)
- RTC_GPIO13 (GPIO15)
- RTC_GPIO14 (GPIO13)
- RTC_GPIO15 (GPIO12)
- RTC_GPIO16 (GPIO14)
- RTC_GPIO17 (GPIO27)
PWM
کنترلر LED PWM ESP32 دارای 16 کانال مستقل است که می توان آنها را برای تولید سیگنال های PWM با ویژگی های مختلف پیکربندی کرد. همه پین هایی که می توانند به عنوان خروجی عمل کنند می توانند به عنوان پین های PWM استفاده شوند (GPIO های 34 تا 39 نمی توانند PWM تولید کنند).
برای تنظیم سیگنال PWM، باید این پارامترها را در کد تعریف کنید:
- فرکانس سیگنال؛
- چرخه وظیفه؛
- کانال PWM;
- GPIO جایی که می خواهید سیگنال را خروجی کنید.
I2C
ESP32 دارای دو کانال I2C است و هر پین را می توان به عنوان SDA یا SCL تنظیم کرد. هنگام استفاده از ESP32 با Arduino IDE، پین های پیش فرض I2C عبارتند از:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
اگر میخواهید هنگام استفاده از کتابخانه سیم از پینهای دیگر استفاده کنید، فقط باید تماس بگیرید:
Wire.begin (SDA، SCL);
SPI
به طور پیش فرض، نگاشت پین برای SPI به صورت زیر است:
SPI | MOSI | میسو | CLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
قطع می کند
همه GPIO ها را می توان به عنوان وقفه پیکربندی کرد.
پین های تسمه ای
تراشه ESP32 دارای پین های تسمه ای زیر است:
- GPIO 0 (برای ورود به حالت بوت باید LOW باشد)
- GPIO 2 (باید در هنگام بوت شناور یا LOW باشد)
- GPIO 4
- GPIO 5 (باید در هنگام بوت بالا باشد)
- GPIO 12 (باید در هنگام بوت کم باشد)
- GPIO 15 (باید در هنگام بوت بالا باشد)
اینها برای قرار دادن ESP32 در حالت بوت لودر یا فلاشینگ استفاده می شوند. در اکثر بردهای توسعه با USB/Serial داخلی، لازم نیست نگران وضعیت این پین ها باشید. برد پین ها را در حالت مناسب برای چشمک زدن یا حالت بوت قرار می دهد. اطلاعات بیشتر در مورد ESP32 Boot Mode Selection را می توانید در اینجا بیابید.
با این حال، اگر دستگاههای جانبی به آن پینها وصل شدهاید، ممکن است در تلاش برای آپلود کد جدید، فلش کردن ESP32 با سیستمافزار جدید یا تنظیم مجدد برد مشکل داشته باشید. اگر تعدادی لوازم جانبی به پینهای تسمهبندی وصل شدهاید و در آپلود کد یا فلش کردن ESP32 با مشکل مواجه میشوید، ممکن است به این دلیل باشد که آن لوازم جانبی مانع از ورود ESP32 به حالت مناسب میشوند. مستندات Boot Mode Selection را بخوانید تا شما را در مسیر درست راهنمایی کند. پس از بازنشانی، چشمک زدن یا بوت شدن، آن پین ها همانطور که انتظار می رود کار می کنند.
پین های HIGH در Boot
برخی از GPIO ها حالت خود را به HIGH تغییر می دهند یا سیگنال های PWM را هنگام راه اندازی یا تنظیم مجدد خروجی می دهند.
این به این معنی است که اگر خروجیهای متصل به این GPIO داشته باشید، ممکن است هنگام بازنشانی یا راهاندازی ESP32 نتایج غیرمنتظرهای دریافت کنید.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6 به GPIO 11 (متصل به حافظه فلش SPI یکپارچه ESP32 - استفاده از آن توصیه نمی شود).
- GPIO 14
- GPIO 15
فعال کردن (EN)
Enable (EN) پین فعال رگولاتور 3.3 ولت است. بالا کشیده شده است، بنابراین برای غیرفعال کردن رگولاتور 3.3 ولت به زمین متصل شوید. این بدان معنی است که می توانید از این پین متصل به یک دکمه فشاری برای راه اندازی مجدد ESP32 خود استفاده کنیدampله
جریان GPIO کشیده شده است
حداکثر جریان مطلق گرفته شده به ازای هر GPIO مطابق با بخش "شرایط عملیاتی توصیه شده" در برگه داده ESP40 32 میلی آمپر است.
سنسور جلوه هال داخلی ESP32
ESP32 همچنین دارای حسگر داخلی جلوه هال است که تغییرات میدان مغناطیسی محیط اطراف خود را تشخیص می دهد
ESP32 Arduino IDE
یک افزونه برای Arduino IDE وجود دارد که به شما امکان می دهد ESP32 را با استفاده از Arduino IDE و زبان برنامه نویسی آن برنامه ریزی کنید. در این آموزش به شما نحوه نصب برد ESP32 را در Arduino IDE نشان خواهیم داد، چه از ویندوز، مک او اس ایکس یا لینوکس استفاده می کنید.
پیش نیاز: Arduino IDE نصب شده است
قبل از شروع این روش نصب، باید Arduino IDE را روی رایانه خود نصب کرده باشید. دو نسخه از Arduino IDE وجود دارد که می توانید نصب کنید: نسخه 1 و نسخه 2.
با کلیک بر روی لینک زیر می توانید Arduino IDE را دانلود و نصب کنید: arduino.cc/en/Main/Software
کدام نسخه Arduino IDE را پیشنهاد می کنیم؟ در حال حاضر، تعدادی وجود دارد plugins برای ESP32 (مانند SPIFFS FileSystem Uploader Plugin) که هنوز در Arduino 2 پشتیبانی نمی شوند. بنابراین، اگر قصد دارید در آینده از پلاگین SPIFFS استفاده کنید، توصیه می کنیم نسخه قدیمی 1.8.X را نصب کنید. برای پیدا کردن آن کافیست در صفحه نرم افزار آردوینو به پایین اسکرول کنید.
نصب افزونه ESP32 در Arduino IDE
برای نصب برد ESP32 در Arduino IDE خود، دستورالعمل های زیر را دنبال کنید:
- در آردوینو IDE خود، به File> ترجیحات
- موارد زیر را در «مدیر هیئت مدیره اضافی» وارد کنید URLفیلد s:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
سپس روی دکمه "OK" کلیک کنید:توجه: اگر از قبل بردهای ESP8266 را دارید URL، می توانید جدا کنید URLs با کاما به صورت زیر است:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json,
http://arduino.esp8266.com/stable/package_esp8266com_index.json
مدیر تابلوها را باز کنید. به Tools > Board > Boards Manager بروید…جستجو برای ESP32 and press install button for the “ESP32 by Espressif Systems“:
همین است. پس از چند ثانیه باید نصب شود.
کد تست را بارگذاری کنید
برد ESP32 را به کامپیوتر خود وصل کنید. با باز بودن IDE آردوینو، مراحل زیر را دنبال کنید:
- برد خود را در منوی Tools > Board انتخاب کنید (در مورد من ماژول DEV ESP32 است)
- پورت را انتخاب کنید (اگر پورت COM را در Arduino IDE خود نمی بینید، باید درایورهای CP210x USB to UART Bridge VCP را نصب کنید):
- مثال زیر را باز کنیدampزیر File > مثالamples > WiFi
(ESP32) > WiFiScan - یک طرح جدید در Arduino IDE شما باز می شود:
- دکمه Upload را در Arduino IDE فشار دهید. چند ثانیه صبر کنید تا کد کامپایل و در برد شما آپلود شود.
- اگر همه چیز طبق انتظار پیش رفت، باید «آپلود انجام شد» را ببینید. پیام
- مانیتور سریال Arduino IDE را با نرخ باود 115200 باز کنید:
- دکمه ESP32 on-board Enable را فشار دهید و باید شبکه های موجود در نزدیکی ESP32 خود را ببینید:
عیب یابی
اگر سعی کنید یک طرح جدید را در ESP32 خود آپلود کنید و با این پیغام خطا مواجه شدید: "یک خطای مرگبار رخ داد: اتصال به ESP32 انجام نشد: زمان تمام شد... در حال اتصال...". یعنی ESP32 شما در حالت فلش / آپلود نیست.
با انتخاب نام برد مناسب و COM por، مراحل زیر را دنبال کنید:
دکمه "BOOT" را در برد ESP32 خود نگه دارید
- برای آپلود طرح خود، دکمه "آپلود" را در Arduino IDE فشار دهید:
- پس از مشاهده "اتصال…" در Arduino IDE خود پیام دهید، انگشت را از دکمه "BOOT" رها کنید:
- پس از آن، باید پیام "بارگذاری انجام شد" را مشاهده کنید
همین. ESP32 شما باید طرح جدید در حال اجرا باشد. دکمه "ENABLE" را فشار دهید تا ESP32 مجددا راه اندازی شود و طرح جدید آپلود شده اجرا شود.
همچنین باید هر بار که میخواهید طرح جدیدی را آپلود کنید، دنباله دکمهها را تکرار کنید.
پروژه 1 ESP32 ورودی های خروجی
در این راهنمای شروع، شما یاد خواهید گرفت که چگونه ورودی های دیجیتال را مانند سوئیچ دکمه ای بخوانید و خروجی های دیجیتال را مانند LED با استفاده از ESP32 با Arduino IDE کنترل کنید.
پیش نیازها
ما ESP32 را با استفاده از Arduino IDE برنامه ریزی می کنیم. بنابراین، قبل از ادامه، مطمئن شوید که افزونه بردهای ESP32 را نصب کرده اید:
- نصب افزونه ESP32 در Arduino IDE
خروجی های دیجیتال کنترل ESP32
ابتدا باید GPIO را که می خواهید کنترل کنید به عنوان یک OUTPUT تنظیم کنید. از تابع pinMode() به صورت زیر استفاده کنید:
pinMode (GPIO، OUTPUT)؛
برای کنترل یک خروجی دیجیتال فقط باید از تابع digitalWrite() استفاده کنید که به عنوان آرگومان، GPIO (شماره int) که به آن اشاره می کنید و وضعیت، HIGH یا LOW را می پذیرد.
digitalWrite (GPIO، STATE)؛
همه GPIO ها را می توان به عنوان خروجی استفاده کرد به جز GPIO های 6 تا 11 (متصل به فلش SPI یکپارچه) و GPIO های 34، 35، 36 و 39 (فقط GPIO ورودی).
درباره ESP32 GPIO بیشتر بیاموزید: ESP32 GPIO Reference Guide
ESP32 خواندن ورودی های دیجیتال
ابتدا با استفاده از تابع pinMode() به صورت زیر GPIO را که می خواهید بخوانید تنظیم کنید:
pinMode (GPIO، INPUT)؛
برای خواندن یک ورودی دیجیتال، مانند یک دکمه، از تابع digitalRead() استفاده می کنید که GPIO (شماره int) مورد نظر شما را به عنوان آرگومان می پذیرد.
digitalRead (GPIO)؛
همه GPIO های ESP32 را می توان به عنوان ورودی استفاده کرد، به جز GPIO های 6 تا 11 (متصل به فلش SPI یکپارچه).
درباره ESP32 GPIO بیشتر بیاموزید: ESP32 GPIO Reference Guide
پروژه پیشینample
برای اینکه به شما نشان دهیم چگونه از ورودی های دیجیتال و خروجی های دیجیتال استفاده کنید، ما یک پروژه ساده می سازیمampبا یک دکمه فشاری و یک LED. ما وضعیت دکمه فشاری را می خوانیم و LED را مطابق شکل زیر روشن می کنیم.
قطعات مورد نیاز
در اینجا لیستی از قطعاتی که برای ساخت مدار نیاز دارید آمده است:
- ESP32 DEVKIT V1
- LED 5 میلی متر
- مقاومت 220 اهم
- دکمه ی فشار
- مقاومت 10 کیلو اهم
- تخته نان
- سیم های جامپر
نمودار شماتیک
قبل از ادامه، باید یک مدار را با یک LED و یک دکمه فشاری جمع کنید.
ما LED را به GPIO 5 و دکمه فشاری را به GPIO وصل می کنیم 4.کد
کد Project_1_ESP32_Inputs_Outputs.ino را در آردوینو IDE باز کنیدکد چگونه کار می کند
در دو خط زیر، متغیرهایی را برای اختصاص پین ایجاد می کنید:
دکمه به GPIO 4 و LED به GPIO 5 وصل می شود. هنگام استفاده از Arduino IDE با ESP32، 4 مربوط به GPIO 4 و 5 مربوط به GPIO 5 است.
بعد، یک متغیر برای نگه داشتن حالت دکمه ایجاد می کنید. به طور پیش فرض، 0 است (فشر نشده است).
int buttonState = 0;
در setup()، دکمه را به عنوان INPUT و LED را به عنوان OUTPUT مقداردهی می کنید.
برای آن، از تابع pinMode() استفاده میکنید که پین مورد نظر را میپذیرد و حالت: INPUT یا OUTPUT را میپذیرد.
pinMode (buttonPin، INPUT)؛
pinMode (ledPin، OUTPUT)؛
در حلقه () جایی است که وضعیت دکمه را می خوانید و LED را مطابق با آن تنظیم می کنید.
در خط بعدی وضعیت دکمه را می خوانید و آن را در متغیر buttonState ذخیره می کنید.
همانطور که قبلا دیدیم، شما از تابع digitalRead() استفاده می کنید.
buttonState = digitalRead (buttonPin);
دستور if زیر، بالا بودن وضعیت دکمه را بررسی می کند. اگر اینطور باشد، LED را با استفاده از تابع digitalWrite() روشن می کند که ledPin و حالت HIGH را به عنوان آرگومان می پذیرد.
اگر (buttonState == HIGH)اگر وضعیت دکمه HIGH نباشد، LED را خاموش می کنید. فقط LOW را به عنوان آرگومان دوم در تابع digitalWrite() تنظیم کنید.
در حال آپلود کد
قبل از کلیک بر روی دکمه آپلود، به Tools > Board بروید و برد :DOIT ESP32 DEVKIT V1 را انتخاب کنید.
به Tools > Port بروید و پورت COM که ESP32 به آن متصل است را انتخاب کنید. سپس دکمه آپلود را فشار دهید و منتظر پیام "بارگذاری انجام شد".توجه: اگر نقاط زیادی (در حال اتصال…__…__) در پنجره اشکالزدایی مشاهده کردید و پیام «وصل نشد به ESP32: زمان انتظار برای سرصفحه بسته تمام شد» را مشاهده کردید، به این معنی است که باید دکمه BOOT روی ESP32 را بعد از نقطهها فشار دهید.
شروع به ظاهر شدن کنید. عیب یابی
تظاهرات
پس از آپلود کد، مدار خود را تست کنید. هنگامی که دکمه فشاری را فشار می دهید LED شما باید روشن شود:و وقتی آن را رها کردید خاموش کنید:
پروژه 2 ورودی های آنالوگ ESP32
این پروژه نحوه خواندن ورودی های آنالوگ با ESP32 را با استفاده از Arduino IDE نشان می دهد.
خواندن آنالوگ برای خواندن مقادیر از مقاومت های متغیر مانند پتانسیومترها یا حسگرهای آنالوگ مفید است.
ورودی های آنالوگ (ADC)
خواندن یک مقدار آنالوگ با ESP32 به این معنی است که می توانید حجم های مختلف را اندازه گیری کنیدtagسطوح e بین 0 ولت و 3.3 ولت.
جلدtage اندازه گیری شده سپس به مقداری بین 0 و 4095 اختصاص داده می شود که در آن 0 ولت مربوط به 0 و 3.3 ولت مربوط به 4095 است.tage بین 0 ولت و 3.3 ولت مقدار متناظر در این بین داده می شود.ADC غیر خطی است
در حالت ایده آل، هنگام استفاده از پین های ESP32 ADC انتظار رفتار خطی را دارید.
با این حال، این اتفاق نمی افتد. چیزی که به دست می آورید رفتاری است که در نمودار زیر نشان داده شده است:این رفتار به این معنی است که ESP32 شما قادر به تشخیص 3.3 ولت از 3.2 ولت نیست.
مقدار یکسانی را برای هر دو جلد دریافت خواهید کردtages: 4095.
همین اتفاق برای حجم بسیار پایین می افتدtagمقادیر e: برای 0 ولت و 0.1 ولت یک مقدار را دریافت خواهید کرد: 0. هنگام استفاده از پین های ADC ESP32 باید این را در نظر داشته باشید.
تابع analogRead().
خواندن ورودی آنالوگ با ESP32 با استفاده از Arduino IDE به اندازه استفاده از تابع analogRead() ساده است. GPIO را که می خواهید بخوانید به عنوان آرگومان می پذیرد:
analogRead (GPIO)؛
فقط 15 مورد در DEVKIT V1board (نسخه با 30 GPIO) موجود است.
پایه برد ESP32 خود را بگیرید و پین های ADC را پیدا کنید. در شکل زیر با حاشیه قرمز مشخص شده اند.این پایه های ورودی آنالوگ دارای وضوح 12 بیتی هستند. این بدان معناست که وقتی یک ورودی آنالوگ را می خوانید، محدوده آن ممکن است از 0 تا 4095 متغیر باشد.
توجه: هنگام استفاده از Wi-Fi نمی توان از پین های ADC2 استفاده کرد. بنابراین، اگر از Wi-Fi استفاده میکنید و در دریافت مقدار از یک ADC2 GPIO مشکل دارید، ممکن است به جای آن از یک ADC1 GPIO استفاده کنید، که باید مشکل شما را حل کند.
برای اینکه ببینیم چگونه همه چیز به هم مرتبط است، یک سابق ساده می سازیمample برای خواندن یک مقدار آنالوگ از یک پتانسیومتر.
قطعات مورد نیاز
برای این سابقample، به قطعات زیر نیاز دارید:
- برد ESP32 DEVKIT V1
- مقسم ولتاژ
- تخته نان
- سیم های جامپر
نموداری
یک پتانسیومتر به ESP32 خود سیم بزنید. پایه وسط پتانسیومتر باید به GPIO 4 متصل شود. می توانید از نمودار شماتیک زیر به عنوان مرجع استفاده کنید.کد
ما ESP32 را با استفاده از Arduino IDE برنامه ریزی می کنیم، بنابراین قبل از ادامه، مطمئن شوید که افزونه ESP32 را نصب کرده اید: (اگر قبلاً این مرحله را انجام داده اید، می توانید به مرحله بعدی بروید.)
نصب افزونه ESP32 در Arduino IDE
کد Project_2_ESP32_Inputs_Outputs.ino را در آردوینو IDE باز کنیداین کد به سادگی مقادیر را از پتانسیومتر می خواند و آن مقادیر را در مانیتور سریال چاپ می کند.
در کد، با تعریف GPIO که پتانسیومتر به آن متصل است، شروع می کنید. در این سابقample، GPIO 4.در setup()، یک ارتباط سریال را با نرخ باود 115200 مقداردهی کنید.
در حلقه() از تابع analogRead() برای خواندن ورودی آنالوگ از potPin استفاده کنید.
در نهایت، مقادیر خوانده شده از پتانسیومتر را در مانیتور سریال چاپ کنید.
کد ارائه شده را در ESP32 خود آپلود کنید. مطمئن شوید که برد مناسب و پورت COM را در منوی Tools انتخاب کرده اید.
تست قبلیample
پس از آپلود کد و فشار دادن دکمه تنظیم مجدد ESP32، مانیتور سریال را با نرخ باود 115200 باز کنید. پتانسیومتر را بچرخانید و مقادیر تغییر یافته را مشاهده کنید.حداکثر مقداری که دریافت می کنید 4095 و حداقل مقدار 0 است.
بسته بندی
در این مقاله یاد گرفتید که چگونه ورودی های آنالوگ را با استفاده از ESP32 با Arduino IDE بخوانید. به طور خلاصه:
- برد ESP32 DEVKIT V1 DOIT (نسخه با 30 پین) دارای 15 پایه ADC است که می توانید از آنها برای خواندن ورودی های آنالوگ استفاده کنید.
- رزولوشن این پین ها 12 بیت است که به این معنی است که می توانید مقادیری از 0 تا 4095 را دریافت کنید.
- برای خواندن یک مقدار در Arduino IDE، به سادگی از تابع analogRead() استفاده کنید.
- پین های ADC ESP32 رفتار خطی ندارند. احتمالاً نمی توانید بین 0 و 0.1 ولت یا بین 3.2 و 3.3 ولت تمایز قائل شوید. هنگام استفاده از پین های ADC باید این را در نظر داشته باشید.
Project 3 ESP32 PWM (خروجی آنالوگ)
در این آموزش به شما نشان خواهیم داد که چگونه با استفاده از Arduino IDE سیگنال های PWM را با ESP32 تولید کنید. به عنوان یک سابقampما یک مدار ساده می سازیم که با استفاده از کنترلر LED PWM ESP32 یک LED را کم نور می کند.کنترلر PWM LED ESP32
ESP32 دارای یک کنترلر LED PWM با 16 کانال مستقل است که می تواند برای تولید سیگنال های PWM با ویژگی های مختلف پیکربندی شود.
برای کم کردن نور LED با PWM با استفاده از Arduino IDE مراحلی که باید دنبال کنید در اینجا آمده است:
- ابتدا باید یک کانال PWM انتخاب کنید. 16 کانال از 0 تا 15 وجود دارد.
- سپس، باید فرکانس سیگنال PWM را تنظیم کنید. برای یک LED، استفاده از فرکانس 5000 هرتز مناسب است.
- همچنین باید رزولوشن چرخه وظیفه سیگنال را تنظیم کنید: وضوح 1 تا 16 بیت دارید. ما از وضوح 8 بیتی استفاده خواهیم کرد، به این معنی که می توانید روشنایی LED را با استفاده از مقدار 0 تا 255 کنترل کنید.
- بعد، باید مشخص کنید که سیگنال روی کدام GPIO یا GPIO ظاهر شود. برای آن از تابع زیر استفاده خواهید کرد:
ledcAttachPin (GPIO، کانال)
این تابع دو آرگومان را می پذیرد. اولی GPIO است که سیگنال را تولید می کند و دومی کانالی است که سیگنال را تولید می کند. - در نهایت، برای کنترل روشنایی LED با استفاده از PWM، از عملکرد زیر استفاده می کنید:
ledcWrite (کانال، چرخه وظیفه)
این تابع کانالی که سیگنال PWM را تولید می کند و چرخه وظیفه را به عنوان آرگومان می پذیرد.
قطعات مورد نیاز
برای دنبال کردن این آموزش به این قسمت ها نیاز دارید:
- برد ESP32 DEVKIT V1
- LED 5mm
- مقاومت 220 اهم
- تخته نان
- سیم های جامپر
نموداری
مانند نمودار شماتیک زیر یک LED را به ESP32 خود سیم بزنید. LED باید به GPIO متصل شود 4.توجه: شما می توانید از هر پینی که می خواهید استفاده کنید، تا زمانی که بتواند به عنوان یک خروجی عمل کند. تمام پایه هایی که می توانند به عنوان خروجی عمل کنند می توانند به عنوان پایه های PWM استفاده شوند. برای اطلاعات بیشتر در مورد ESP32 GPIO ها، بخوانید: ESP32 Pinout Reference: کدام پین های GPIO را باید استفاده کنید؟
کد
ما ESP32 را با استفاده از Arduino IDE برنامه ریزی می کنیم، بنابراین قبل از ادامه، مطمئن شوید که افزونه ESP32 را نصب کرده اید: (اگر قبلاً این مرحله را انجام داده اید، می توانید به مرحله بعدی بروید.)
نصب افزونه ESP32 در Arduino IDE
کد Project_3_ESP32_PWM.ino را در آردوینو IDE باز کنیدشما با تعریف پینی که LED به آن وصل شده است، شروع کنید. در این حالت LED به GPIO 4 متصل می شود.
سپس، ویژگی های سیگنال PWM را تنظیم می کنید. شما فرکانس 5000 هرتز را تعریف می کنید، کانال 0 را برای تولید سیگنال انتخاب می کنید و وضوح 8 بیت را تعیین می کنید. برای تولید سیگنالهای PWM مختلف، میتوانید ویژگیهای دیگری، متفاوت از اینها را انتخاب کنید.
در setup()، باید LED PWM را با ویژگیهایی که قبلاً تعریف کردهاید، با استفاده از تابع ledcSetup() که بهعنوان آرگومان، ledChannel، فرکانس و وضوح را میپذیرد، به صورت زیر پیکربندی کنید:
در مرحله بعد، باید GPIO را انتخاب کنید که سیگنال را از آن دریافت خواهید کرد. برای این کار از تابع ledcAttachPin () استفاده کنید که GPIO را که می خواهید سیگنال را دریافت کنید و کانالی که سیگنال را تولید می کند به عنوان آرگومان می پذیرد. در این سابقampما سیگنال را در ledPin GPIO دریافت خواهیم کرد که مربوط به GPIO 4 است. کانالی که سیگنال را تولید می کند ledChannel است که با کانال 0 مطابقت دارد.
در حلقه، چرخه کار را بین 0 تا 255 تغییر می دهید تا روشنایی LED را افزایش دهید.
و سپس، بین 255 و 0 برای کاهش روشنایی.
برای تنظیم روشنایی LED، فقط باید از تابع ledcWrite () استفاده کنید که کانالی که سیگنال را تولید می کند و چرخه وظیفه را به عنوان آرگومان می پذیرد.
از آنجایی که ما از وضوح 8 بیتی استفاده می کنیم، چرخه وظیفه با استفاده از مقدار 0 تا 255 کنترل می شود. توجه داشته باشید که در تابع ledcWrite() از کانالی استفاده می کنیم که سیگنال را تولید می کند، نه از GPIO.
تست قبلیample
کد را در ESP32 خود آپلود کنید. مطمئن شوید که برد و پورت COM مناسب را انتخاب کرده اید. به مدارت نگاه کن شما باید یک LED کم نور داشته باشید که روشنایی را کم و زیاد می کند.
سنسور حرکتی PIR پروژه 4 ESP32
این پروژه نحوه تشخیص حرکت با ESP32 را با استفاده از حسگر حرکتی PIR نشان میدهد. زنگ هشدار هنگامی که حرکت تشخیص داده میشود، زنگ هشدار را به صدا در میآورد و زمانی که هیچ حرکتی برای مدت زمان از پیش تعیین شده (مانند 4 ثانیه) تشخیص داده نشود، زنگ هشدار را متوقف میکند.
سنسور حرکتی HC-SR501 چگونه کار می کند
.اصل کار سنسور HC-SR501 مبتنی بر تغییر تابش مادون قرمز بر روی جسم متحرک است. برای شناسایی توسط سنسور HC-SR501، جسم باید دو شرط را داشته باشد:
- جسم از راه مادون قرمز ساطع می کند.
- جسم در حال حرکت یا تکان است
بنابراین:
اگر جسمی در حال ساطع اشعه مادون قرمز باشد اما حرکتی نداشته باشد (مثلاً شخصی بدون حرکت ثابت می ایستد)، توسط سنسور تشخیص داده نمی شود.
اگر جسمی در حال حرکت باشد اما اشعه مادون قرمز ساطع نکند (مثلاً ربات یا وسیله نقلیه)، توسط سنسور تشخیص داده نمی شود.
معرفی تایمرها
در این سابقampهمچنین تایمرها را معرفی خواهیم کرد. ما می خواهیم LED برای تعداد ثانیه های از پیش تعیین شده پس از تشخیص حرکت روشن بماند. به جای استفاده از تابع delay() که کد شما را مسدود می کند و به شما اجازه نمی دهد برای چند ثانیه معینی کار دیگری انجام دهید، باید از یک تایمر استفاده کنیم.تابع delay().
شما باید با تابع delay() آشنا باشید زیرا به طور گسترده استفاده می شود. استفاده از این تابع بسیار ساده است. یک عدد int را به عنوان آرگومان می پذیرد.
این عدد نشان دهنده مدت زمانی است که برنامه باید منتظر بماند تا به خط بعدی کد منتقل شود.وقتی تاخیر (1000) انجام می دهید، برنامه شما به مدت 1 ثانیه در آن خط متوقف می شود.
()delay یک تابع مسدود کننده است. توابع مسدود کردن، برنامه را از انجام هر کار دیگری تا زمانی که آن کار خاص کامل نشده است، باز می دارد. اگر نیاز دارید که چندین کار همزمان انجام شوند، نمی توانید از delay() استفاده کنید.
برای اکثر پروژه ها باید از تاخیر استفاده نکنید و به جای آن از تایمر استفاده کنید.
تابع millis().
با استفاده از تابعی به نام millis() میتوانید تعداد میلیثانیههایی را که از اولین شروع برنامه گذشته است را برگردانید.چرا آن تابع مفید است؟ زیرا با استفاده از مقداری ریاضی، می توانید به راحتی بررسی کنید که چقدر زمان گذشته است بدون اینکه کد خود را مسدود کنید.
قطعات مورد نیاز
برای دنبال کردن این آموزش به قسمت های زیر نیاز دارید
- برد ESP32 DEVKIT V1
- سنسور حرکت PIR (HC-SR501)
- وزوز فعال
- سیم های جامپر
- تخته نان
نموداریتوجه: جلد کارtage HC-SR501 5 ولت است. برای روشن کردن آن از پین Vin استفاده کنید.
کد
قبل از ادامه این آموزش، باید افزونه ESP32 را در Arduino IDE خود نصب کنید. برای نصب ESP32 در آردوینو IDE یکی از آموزش های زیر را دنبال کنید، اگر قبلاً این کار را نکرده اید. (اگر قبلاً این مرحله را انجام داده اید، می توانید به مرحله بعدی بروید.)
نصب افزونه ESP32 در Arduino IDE
کد Project_4_ESP32_PIR_Motion_Sensor.ino را در آردوینو IDE باز کنید.
تظاهرات
کد را روی برد ESP32 خود آپلود کنید. مطمئن شوید که برد و پورت COM مناسب را انتخاب کرده اید. مراحل مرجع کد آپلود.
مانیتور سریال را با نرخ باود 115200 باز کنید.دست خود را جلوی سنسور PIR حرکت دهید. زنگ باید روشن شود و پیام در مانیتور سریال چاپ می شود که "حرکت شناسایی شد! زنگ هشدار".
بعد از 4 ثانیه زنگ باید خاموش شود.
سوئیچ پروژه 5 ESP32 Web سرور
در این پروژه شما یک مستقل ایجاد خواهید کرد web سرور با ESP32 که خروجی ها (دو LED) را با استفاده از محیط برنامه نویسی Arduino IDE کنترل می کند. را web سرور پاسخگوی تلفن همراه است و می توان با هر دستگاهی که به عنوان مرورگر در شبکه محلی به آن دسترسی داشت. ما به شما نحوه ایجاد آن را نشان خواهیم داد web سرور و نحوه عملکرد کد گام به گام.
پروژه تمام شدview
قبل از رفتن مستقیم به پروژه، مهم است که آنچه را که ما داریم مشخص کنیم web سرور این کار را انجام می دهد، به طوری که بعداً انجام مراحل آسان تر است.
- را web سروری که میسازید، دو LED متصل به ESP32 GPIO 26 و GPIO 27 را کنترل میکند.
- می توانید به ESP32 دسترسی داشته باشید web سرور با تایپ آدرس IP ESP32 در یک مرورگر در شبکه محلی؛
- با کلیک بر روی دکمه های خود web سرور شما می توانید فوراً وضعیت هر LED را تغییر دهید.
قطعات مورد نیاز
برای این آموزش به قسمت های زیر نیاز دارید:
- برد ESP32 DEVKIT V1
- ال ای دی 2×5 میلی متر
- مقاومت 2×200 اهم
- تخته نان
- سیم های جامپر
نموداری
با ساخت مدار شروع کنید. همانطور که در نمودار شماتیک زیر نشان داده شده است، دو LED را به ESP32 وصل کنید - یک LED به GPIO 26 و دیگری به GPIO 27 متصل است.
توجه: ما از برد ESP32 DEVKIT DOIT با 36 پین استفاده می کنیم. قبل از مونتاژ مدار، مطمئن شوید که پین اوت بردی را که استفاده می کنید بررسی کنید.کد
در اینجا ما کدی را ارائه می دهیم که ESP32 را ایجاد می کند web سرور کد Project_5_ESP32_Switch _ را باز کنیدWeb_Server.ino در آردوینو IDE، اما هنوز آن را آپلود نکنید. باید تغییراتی ایجاد کنید تا برای شما کارساز باشد.
ما ESP32 را با استفاده از Arduino IDE برنامه ریزی می کنیم، بنابراین قبل از ادامه، مطمئن شوید که افزونه ESP32 را نصب کرده اید: (اگر قبلاً این مرحله را انجام داده اید، می توانید به مرحله بعدی بروید.)
نصب افزونه ESP32 در Arduino IDE
تنظیم اعتبار شبکه شما
شما باید خطوط زیر را با اعتبار شبکه خود تغییر دهید: SSID و رمز عبور. کد به خوبی در مورد جایی که باید تغییرات را اعمال کنید توضیح داده شده است.در حال آپلود کد
اکنون می توانید کد و و را آپلود کنید web سرور بلافاصله کار خواهد کرد.
برای آپلود کد در ESP32 مراحل بعدی را دنبال کنید:
- برد ESP32 خود را به رایانه وصل کنید.
- در Arduino IDE برد خود را در Tools > Board انتخاب کنید (در مورد ما از برد ESP32 DEVKIT DOIT استفاده می کنیم).
- پورت COM را در Tools > Port انتخاب کنید.
- دکمه آپلود را در Arduino IDE فشار دهید و چند ثانیه صبر کنید تا کد کامپایل و در برد شما آپلود شود.
- منتظر پیام "بارگذاری انجام شد" باشید.
پیدا کردن آدرس IP ESP
پس از آپلود کد، مانیتور سریال را با نرخ باود 115200 باز کنید.دکمه ESP32 EN را فشار دهید (تنظیم مجدد). ESP32 به Wi-Fi متصل می شود و آدرس IP ESP را در مانیتور سریال خروجی می دهد. آدرس IP را کپی کنید، زیرا برای دسترسی به ESP32 به آن نیاز دارید web سرور
دسترسی به Web سرور
برای دسترسی به web سرور، مرورگر خود را باز کنید، آدرس IP ESP32 را پیست کنید و صفحه زیر را مشاهده خواهید کرد.
توجه: مرورگر شما و ESP32 باید به یک LAN متصل باشند.اگر نگاهی به مانیتور سریال بیندازید، می توانید ببینید که در پس زمینه چه اتفاقی می افتد. ESP یک درخواست HTTP از یک کلاینت جدید (در این مورد، مرورگر شما) دریافت می کند.
همچنین می توانید سایر اطلاعات مربوط به درخواست HTTP را مشاهده کنید.
تظاهرات
حالا می توانید تست کنید که آیا web سرور به درستی کار می کند برای کنترل LED ها روی دکمه ها کلیک کنید.در همان زمان، می توانید نگاهی به مانیتور سریال بیاندازید تا ببینید در پس زمینه چه اتفاقی می افتد. برای مثالampوقتی روی دکمه روشن کردن GPIO 26 کلیک میکنید، ESP32 یک درخواست در /26/on دریافت میکند. URL.
هنگامی که ESP32 آن درخواست را دریافت کرد، LED متصل به GPIO 26 را روشن می کند و وضعیت آن را در دستگاه به روز می کند. web صفحه
دکمه GPIO 27 به روشی مشابه کار می کند. تست کنید که به درستی کار می کند.
کد چگونه کار می کند
در این بخش کدها را با دقت بیشتری بررسی می کنیم تا نحوه عملکرد آن را مشاهده کنیم.
اولین کاری که باید انجام دهید این است که کتابخانه WiFi را اضافه کنید.همانطور که قبلا ذکر شد، شما باید ssid و رمز عبور خود را در خطوط زیر داخل کوتیشن های دوبل وارد کنید.
سپس، خود را تنظیم می کنید web سرور به پورت 80
خط زیر یک متغیر برای ذخیره هدر درخواست HTTP ایجاد می کند:
در مرحله بعد، متغیرهای کمکی را برای ذخیره وضعیت فعلی خروجی های خود ایجاد می کنید. اگر می خواهید خروجی های بیشتری اضافه کنید و وضعیت آن را ذخیره کنید، باید متغیرهای بیشتری ایجاد کنید.
همچنین باید به هر یک از خروجی های خود یک GPIO اختصاص دهید. در اینجا ما از GPIO 26 و GPIO 27 استفاده می کنیم. می توانید از هر GPIO مناسب دیگری استفاده کنید.
راه اندازی ()
حالا بیایید وارد setup() شویم. ابتدا یک ارتباط سریالی را با نرخ باود 115200 برای اهداف اشکال زدایی شروع می کنیم.شما همچنین GPIO های خود را به عنوان OUTPUT تعریف کرده و آنها را روی LOW قرار می دهید.
خطوط زیر اتصال Wi-Fi را با WiFi.begin (ssid، رمز عبور) شروع می کنند، منتظر اتصال موفق باشید و آدرس IP ESP را در مانیتور سریال چاپ کنید.
حلقه ()
در حلقه () ما برنامه ریزی می کنیم که چه اتفاقی می افتد زمانی که یک کلاینت جدید با آن ارتباط برقرار می کند web سرور
ESP32 همیشه با خط زیر به مشتریان ورودی گوش می دهد:وقتی درخواستی از مشتری دریافت میشود، دادههای دریافتی را ذخیره میکنیم. حلقه while که در ادامه می آید تا زمانی که کلاینت متصل بماند، اجرا می شود. توصیه نمی کنیم قسمت زیر از کد را تغییر دهید، مگر اینکه دقیقاً بدانید که چه کاری انجام می دهید.
بخش بعدی دستورات if و else بررسی می کند که کدام دکمه در شما فشار داده شده است web صفحه، و بر این اساس خروجی ها را کنترل می کند. همانطور که قبلا دیدیم، ما یک درخواست در مورد مختلف ارائه می دهیم URLبسته به دکمه فشرده شده است.
برای مثالampاگر دکمه GPIO 26 ON را فشار داده باشید، ESP32 یک درخواست در /26/ON دریافت می کند. URL (میتوانیم این اطلاعات را در هدر HTTP در مانیتور سریال ببینیم). بنابراین، میتوانیم بررسی کنیم که آیا هدر عبارت GET /26/on را دارد یا خیر. اگر حاوی باشد، متغیر output26state را به ON تغییر می دهیم و ESP32 LED را روشن می کند.
این برای دکمه های دیگر به طور مشابه عمل می کند. بنابراین، اگر میخواهید خروجیهای بیشتری اضافه کنید، باید این قسمت از کد را تغییر دهید تا آنها را شامل شود.
نمایش HTML web صفحه
کار بعدی که باید انجام دهید، ایجاد آن است web صفحه ESP32 پاسخی را با مقداری کد HTML برای ساختن به مرورگر شما ارسال می کند web صفحه
را web صفحه با استفاده از این بیانگر client.println() برای مشتری ارسال می شود. باید آنچه را که می خواهید برای مشتری ارسال کنید به عنوان آرگومان وارد کنید.
اولین چیزی که باید ارسال کنیم همیشه خط زیر است که نشان می دهد ما در حال ارسال HTML هستیم.سپس خط زیر باعث می شود web صفحه پاسخگو در هر web مرورگر.
و موارد زیر برای جلوگیری از درخواست در فاویکون استفاده می شود. - لازم نیست نگران این خط باشید.
استایل دادن به Web صفحه
در مرحله بعد، مقداری متن CSS برای استایل دادن به دکمه ها و دکمه ها داریم web ظاهر صفحه
فونت Helvetica را انتخاب می کنیم، محتوایی را که به صورت بلوک نمایش داده می شود و در مرکز تراز می شود، تعریف می کنیم.دکمه های خود را با رنگ #4CAF50، بدون حاشیه، متن به رنگ سفید و با این بالشتک: 16px 40px استایل می کنیم. همچنین تزیین متن را روی هیچ تنظیم می کنیم، اندازه فونت، حاشیه و مکان نما را روی یک اشاره گر تعریف می کنیم.
همچنین استایل دکمه دوم را با تمام خصوصیات دکمه ای که قبلاً تعریف کرده بودیم، اما با رنگ متفاوت تعریف می کنیم. این سبک برای دکمه خاموش خواهد بود.
تنظیم کردن Web عنوان صفحه اول
در خط بعدی می توانید عنوان اول خود را تنظیم کنید web صفحه در اینجا ما "ESP32" را داریم Web سرور»، اما می توانید این متن را به هر چیزی که دوست دارید تغییر دهید.نمایش دکمه ها و وضعیت مربوطه
سپس، یک پاراگراف برای نمایش وضعیت فعلی GPIO 26 می نویسید. همانطور که می بینید، ما از متغیر output26State استفاده می کنیم، به طوری که با تغییر این متغیر، وضعیت فوراً به روز می شود.سپس، بسته به وضعیت فعلی GPIO، دکمه روشن یا خاموش را نمایش می دهیم. اگر وضعیت فعلی GPIO خاموش باشد، دکمه ON را نشان می دهیم، اگر نه، دکمه OFF را نمایش می دهیم.
ما از همین رویه برای GPIO 27 استفاده می کنیم.
بستن اتصال
در نهایت، هنگامی که پاسخ به پایان می رسد، متغیر هدر را پاک می کنیم و ارتباط با کلاینت را با () client.stop متوقف می کنیم.
بسته بندی
در این آموزش ما به شما نشان دادیم که چگونه a را بسازید web سرور با ESP32. ما یک سابق ساده را به شما نشان دادیمampکه دو LED را کنترل می کند، اما ایده این است که آن LED ها را با یک رله یا هر خروجی دیگری که می خواهید کنترل کنید جایگزین کنید.
Project 6 RGB LED Web سرور
در این پروژه به شما نشان خواهیم داد که چگونه یک LED RGB را از راه دور با برد ESP32 با استفاده از یک web سرور با انتخابگر رنگ
پروژه تمام شدview
قبل از شروع، بیایید ببینیم این پروژه چگونه کار می کند:
- ESP32 web سرور یک انتخابگر رنگ را نمایش می دهد.
- وقتی رنگی را انتخاب می کنید، مرورگر شما درخواستی را روی یک درخواست می کند URL که شامل پارامترهای R، G و B رنگ انتخاب شده است.
- ESP32 شما درخواست را دریافت می کند و مقدار را برای هر پارامتر رنگ تقسیم می کند.
- سپس یک سیگنال PWM با مقدار مربوطه به GPIOهایی که LED RGB را کنترل می کنند ارسال می کند.
LED های RGB چگونه کار می کنند؟
در یک LED RGB کاتد مشترک، هر سه LED یک اتصال منفی (کاتد) به اشتراک میگذارند. همه این کیت RGB کاتد مشترک است.چگونه رنگ های مختلف ایجاد کنیم؟
البته با LED RGB می توانید نور قرمز، سبز و آبی تولید کنید و با تنظیم شدت هر LED می توانید رنگ های دیگری را نیز تولید کنید.
برای مثالampبرای تولید نور کاملاً آبی، LED آبی را روی بیشترین شدت و LED های سبز و قرمز را روی کمترین شدت تنظیم کنید. برای نور سفید، هر سه LED را روی بالاترین شدت تنظیم کنید.
مخلوط کردن رنگ ها
برای تولید رنگ های دیگر می توانید سه رنگ را در شدت های مختلف ترکیب کنید. برای تنظیم شدت هر LED می توانید از سیگنال PWM استفاده کنید.
از آنجایی که ال ای دی ها بسیار نزدیک به هم هستند، چشم ما نتیجه ترکیب رنگ ها را می بیند نه اینکه سه رنگ را به صورت جداگانه ببینیم.
برای داشتن ایده ای در مورد نحوه ترکیب رنگ ها، به نمودار زیر نگاه کنید.
این ساده ترین نمودار ترکیب رنگ است، اما به شما ایده می دهد که چگونه کار می کند و چگونه رنگ های مختلف را تولید کنید.قطعات مورد نیاز
برای این پروژه به قطعات زیر نیاز دارید:
- برد ESP32 DEVKIT V1
- RGB LED
- مقاومت 3×220 اهم
- سیم های جامپر
- تخته نان
نموداریکد
ما ESP32 را با استفاده از Arduino IDE برنامه ریزی می کنیم، بنابراین قبل از ادامه، مطمئن شوید که افزونه ESP32 را نصب کرده اید: (اگر قبلاً این مرحله را انجام داده اید، می توانید به مرحله بعدی بروید.)
- نصب افزونه ESP32 در Arduino IDE
پس از مونتاژ مدار، کد را باز کنید
Project_6_RGB_LED_Web_Server.ino در آردوینو IDE.
قبل از آپلود کد، فراموش نکنید که اعتبار شبکه خود را وارد کنید تا ESP بتواند به شبکه محلی شما متصل شود.نحوه کار کد
طرح ESP32 از کتابخانه WiFi.h استفاده می کند.خطوط زیر متغیرهای رشته ای را برای نگه داشتن پارامترهای R، G و B از درخواست تعریف می کنند.
از چهار متغیر بعدی برای رمزگشایی درخواست HTTP بعدا استفاده می شود.
سه متغیر برای GPIO ایجاد کنید که پارامترهای نوار R، G و B را کنترل می کنند. در این مورد ما از GPIO 13، GPIO 12 و GPIO 14 استفاده می کنیم.
این GPIO ها نیاز به خروجی سیگنال های PWM دارند، بنابراین ابتدا باید ویژگی های PWM را پیکربندی کنیم. فرکانس سیگنال PWM را روی 5000 هرتز تنظیم کنید. سپس، یک کانال PWM برای هر رنگ مرتبط کنید
و در نهایت رزولوشن کانال های PWM را روی 8 بیت قرار دهید
در setup()، ویژگی های PWM را به کانال های PWM اختصاص دهید
کانال های PWM را به GPIO مربوطه وصل کنید
بخش کد زیر انتخابگر رنگ را در شما نمایش می دهد web صفحه و بر اساس رنگی که انتخاب کرده اید درخواست می کند.
وقتی رنگی را انتخاب می کنید، درخواستی با فرمت زیر دریافت می کنید.
بنابراین، ما باید این رشته را برای بدست آوردن پارامترهای R، G و B تقسیم کنیم. پارامترها در متغیرهای redString، greenString و blueString ذخیره می شوند و می توانند مقادیری بین 0 تا 255 داشته باشند.برای کنترل نوار با ESP32، از تابع ledcWrite() برای تولید سیگنال های PWM با مقادیر رمزگشایی شده از HTTP استفاده کنید. درخواست کنید.
توجه: درباره PWM با ESP32 بیشتر بیاموزید: Project 3 ESP32 PWM (خروجی آنالوگ)
برای کنترل نوار با ESP8266، فقط باید از آن استفاده کنیم
تابع analogWrite() برای تولید سیگنال های PWM با مقادیر رمزگشایی شده از درخواست HTPP.
analogWrite(redPin، redString.toInt());
analogWrite(greenPin، greenString.toInt());
analogWrite(bluePin، blueString.toInt())
از آنجایی که مقادیر یک متغیر رشته را دریافت می کنیم، باید آنها را با استفاده از متد toInt() به اعداد صحیح تبدیل کنیم.
تظاهرات
پس از وارد کردن اعتبار شبکه خود، برد و پورت COM مناسب را انتخاب کنید و کد را در مراحل مرجع کد آپلود ESP32 خود آپلود کنید.
پس از آپلود، مانیتور سریال را با نرخ باود 115200 باز کنید و دکمه ESP Enable/Reset را فشار دهید. شما باید آدرس IP برد را دریافت کنید.مرورگر خود را باز کنید و آدرس IP ESP را وارد کنید. اکنون، از انتخابگر رنگ برای انتخاب رنگ برای LED RGB استفاده کنید.
سپس، باید دکمه «تغییر رنگ» را فشار دهید تا رنگ تأثیر بگذارد.برای خاموش کردن LED RGB، رنگ مشکی را انتخاب کنید.
قوی ترین رنگ ها (در بالای انتخابگر رنگ)، آنهایی هستند که نتایج بهتری را ایجاد می کنند.
رله پروژه 7 ESP32 Web سرور
استفاده از رله با ESP32 یک راه عالی برای کنترل لوازم خانگی AC از راه دور است. این آموزش نحوه کنترل ماژول رله با ESP32 را توضیح می دهد.
ما به نحوه کار یک ماژول رله، نحوه اتصال رله به ESP32 و ساخت یک ماژول نگاهی خواهیم انداخت. web سرور برای کنترل یک رله از راه دور.
معرفی رله ها
رله کلیدی است که با برق کار می کند و مانند هر کلید دیگری می توان آن را روشن یا خاموش کرد و اجازه داد جریان عبور کند یا خیر. می توان آن را با حجم کم کنترل کردtages، مانند 3.3 ولت ارائه شده توسط ESP32 GPIO ها و به ما اجازه می دهد تا صدای بالا را کنترل کنیم.tagمانند 12 ولت، 24 ولت یا ولتاژ برقtage (230 ولت در اروپا و 120 ولت در ایالات متحده).در سمت چپ، دو مجموعه از سه سوکت برای اتصال high vol وجود داردtages و پین های سمت راست (کم حجمtagه) به GPIO های ESP32 متصل شوید.
منبع جلدtage اتصالاتماژول رله نشان داده شده در عکس قبلی دارای دو کانکتور است که هر کدام دارای سه سوکت است: معمولی (COM)، معمولی بسته (NC) و معمولی باز (NO).
- COM: جریانی را که می خواهید کنترل کنید وصل کنید (حجم اصلی).tagالف)
- NC (به طور معمول بسته): پیکربندی معمولاً بسته زمانی استفاده می شود که می خواهید رله به طور پیش فرض بسته شود. پین های NC هستند COM متصل هستند، به این معنی که جریان در جریان است مگر اینکه سیگنالی از ESP32 به ماژول رله ارسال کنید تا مدار باز شود و جریان جریان متوقف شود.
- NO (به طور معمول باز): پیکربندی معمولی باز برعکس عمل می کند: هیچ ارتباطی بین پین های NO و COM وجود ندارد، بنابراین مدار خراب می شود مگر اینکه سیگنالی از ESP32 برای بستن مدار ارسال کنید.
پین های کنترلکم حجمtage side مجموعه ای از چهار پین و مجموعه ای از سه پایه دارد. مجموعه اول شامل VCC و GND برای روشن کردن ماژول و ورودی 1 (IN1) و ورودی 2 (IN2) به ترتیب برای کنترل رله های پایین و بالایی است.
اگر ماژول رله شما فقط یک کانال دارد، فقط یک پین IN خواهید داشت. اگر چهار کانال دارید، چهار پین IN و غیره خواهید داشت.
سیگنالی که به پین های IN ارسال می کنید، فعال بودن یا نبودن رله را مشخص می کند. رله زمانی فعال می شود که ورودی کمتر از 2 ولت باشد. این به این معنی است که شما سناریوهای زیر را خواهید داشت:
- پیکربندی به طور معمول بسته (NC):
- سیگنال بالا - جریان در حال جریان است
- سیگنال LOW - جریان جریان ندارد
- پیکربندی به طور معمول باز (NO):
- سیگنال بالا - جریان جریان ندارد
- سیگنال LOW - جریان در حال جریان است
شما باید از یک پیکربندی به طور معمول بسته استفاده کنید، زمانی که جریان باید در بیشتر مواقع جریان داشته باشد، و فقط میخواهید گاهی اوقات آن را متوقف کنید.
هنگامی که می خواهید جریان گهگاهی جریان داشته باشد از یک پیکربندی معمولی باز استفاده کنید (مثلاًample، al را روشن کنیدamp گاهی اوقات).
انتخاب منبع تغذیهمجموعه دوم پین ها از پایه های GND، VCC و JD-VCC تشکیل شده است.
پین JD-VCC آهنربای الکتریکی رله را تغذیه می کند. توجه داشته باشید که ماژول دارای یک کلاهک جامپر است که پین های VCC و JD-VCC را به هم متصل می کند. رنگی که در اینجا نشان داده شده زرد است، اما رنگ شما ممکن است رنگ دیگری داشته باشد.
با درپوش جامپر، پین های VCC و JD-VCC به هم متصل می شوند. این بدان معناست که آهنربای الکتریکی رله مستقیماً از پایه برق ESP32 تغذیه می شود، بنابراین ماژول رله و مدارهای ESP32 از نظر فیزیکی از یکدیگر جدا نیستند.
بدون درپوش جامپر، باید یک منبع تغذیه مستقل برای تغذیه آهنربای الکتریکی رله از طریق پین JD-VCC تهیه کنید. این پیکربندی به صورت فیزیکی رله ها را از ESP32 با اپتوکوپلر داخلی ماژول جدا می کند، که از آسیب دیدن ESP32 در صورت بروز میخ های الکتریکی جلوگیری می کند.
نموداریهشدار: استفاده از حجم بالاtagمنبع تغذیه ممکن است صدمات جدی ایجاد کند.
بنابراین از ال ای دی های 5 میلی متری به جای ولتاژ بالا استفاده می شودtagلامپ های الکترونیکی در آزمایش اگر با نسخه اصلی آشنا نیستیدtagاز کسی بخواهید که به شما کمک کند. هنگام برنامهریزی ESP یا سیمکشی مدار، مطمئن شوید که همه چیز از برق جدا شده استtage.نصب کتابخانه برای ESP32
برای ساختن این web سرور، ما از ESPAsync استفاده می کنیمWebکتابخانه سرور و کتابخانه AsyncTCP.
نصب ESPAsyncWebکتابخانه سرور
مراحل بعدی را برای نصب دنبال کنید ESPAsyncWebسرور کتابخانه:
- برای دانلود ESPAsync اینجا را کلیک کنیدWebکتابخانه سرور باید داشته باشی
یک پوشه .zip در پوشه دانلودها - پوشه .zip را از حالت فشرده خارج کنید و باید ESPAsync را دریافت کنیدWebپوشه سرور-مستر
- نام پوشه خود را از ESPAsync تغییر دهیدWebسرور سرور به ESPAsyncWebسرور
- ESPAsync را حرکت دهیدWebپوشه سرور به پوشه کتابخانه های نصب Arduino IDE شما
از طرف دیگر، در Arduino IDE خود، می توانید به Sketch > Include بروید
Library > افزودن کتابخانه .ZIP… و کتابخانه ای را که به تازگی دانلود کرده اید انتخاب کنید.
نصب کتابخانه AsyncTCP برای ESP32
را ESPAsyncWebسرور کتابخانه نیاز به AsyncTCP کتابخانه به کار دنبال کنید
مراحل بعدی برای نصب آن کتابخانه:
- برای دانلود کتابخانه AsyncTCP اینجا را کلیک کنید. شما باید یک پوشه .zip در پوشه Downloads خود داشته باشید
- پوشه .zip را از حالت فشرده خارج کنید و باید پوشه AsyncTCP-master را دریافت کنید
1. نام پوشه خود را از AsyncTCP-master به AsyncTCP تغییر دهید
3. پوشه AsyncTCP را به پوشه کتابخانه های نصب Arduino IDE خود منتقل کنید
4. در نهایت، Arduino IDE خود را دوباره باز کنید
از طرف دیگر، در Arduino IDE خود، می توانید به Sketch > Include بروید
Library > افزودن کتابخانه .ZIP… و کتابخانه ای را که به تازگی دانلود کرده اید انتخاب کنید.
کد
ما ESP32 را با استفاده از Arduino IDE برنامه ریزی می کنیم، بنابراین قبل از ادامه، مطمئن شوید که افزونه ESP32 را نصب کرده اید: (اگر قبلاً این مرحله را انجام داده اید، می توانید به مرحله بعدی بروید.)
نصب افزونه ESP32 در Arduino IDE
پس از نصب کتابخانه های مورد نیاز، کد Project_7_ESP32_Relay_ را باز کنید.Web_Server.ino در آردوینو IDE.
قبل از آپلود کد، فراموش نکنید که اعتبار شبکه خود را وارد کنید تا ESP بتواند به شبکه محلی شما متصل شود.تظاهرات
پس از انجام تغییرات لازم، کد را در ESP32 خود آپلود کنید. مراحل مرجع کد آپلود.
مانیتور سریال را با نرخ باود 115200 باز کنید و دکمه ESP32 EN را فشار دهید تا آدرس IP آن را دریافت کنید. سپس یک مرورگر در شبکه محلی خود باز کنید و آدرس IP ESP32 را تایپ کنید تا به آن دسترسی پیدا کنید. web سرور
مانیتور سریال را با نرخ باود 115200 باز کنید و دکمه ESP32 EN را فشار دهید تا آدرس IP آن را دریافت کنید. سپس یک مرورگر در شبکه محلی خود باز کنید و آدرس IP ESP32 را تایپ کنید تا به آن دسترسی پیدا کنید. web سرورتوجه: مرورگر شما و ESP32 باید به یک LAN متصل باشند.
شما باید چیزی به شرح زیر با دو دکمه به عنوان تعداد رله هایی که در کد خود تعریف کرده اید دریافت کنید.اکنون می توانید از دکمه ها برای کنترل رله های خود با استفاده از گوشی هوشمند خود استفاده کنید.
Project_8_Output_State_Synchronization_ Web_سرور
این پروژه نحوه کنترل خروجی های ESP32 یا ESP8266 را با استفاده از a نشان می دهد web سرور و یک دکمه فیزیکی به طور همزمان. وضعیت خروجی در به روز رسانی می شود web صفحه که آیا از طریق دکمه فیزیکی تغییر کرده است یا web سرور
پروژه تمام شدview
بیایید نگاهی گذرا به نحوه عملکرد پروژه بیندازیم.ESP32 یا ESP8266 میزبان a web سروری که به شما امکان می دهد وضعیت یک خروجی را کنترل کنید.
- وضعیت خروجی فعلی بر روی صفحه نمایش داده می شود web سرور؛
- ESP همچنین به یک دکمه فیزیکی متصل است که همان خروجی را کنترل می کند.
- اگر وضعیت خروجی را با استفاده از دکمه فیزیکی تغییر دهید، وضعیت فعلی آن نیز روی دکمه بهروزرسانی میشود web سرور
به طور خلاصه، این پروژه به شما امکان می دهد همان خروجی را با استفاده از a کنترل کنید web سرور و یک دکمه فشاری به طور همزمان. هر زمان که وضعیت خروجی تغییر کند، web سرور به روز می شود
قطعات مورد نیاز
در اینجا لیستی از قطعاتی که برای ساخت مدار نیاز دارید آمده است:
- برد ESP32 DEVKIT V1
- LED 5 میلی متر
- مقاومت 220 اهم
- دکمه ی فشار
- مقاومت 10 کیلو اهم
- تخته نان
- سیم های جامپر
نمودارینصب کتابخانه برای ESP32
برای ساختن این web سرور، ما از ESPAsync استفاده می کنیمWebکتابخانه سرور و کتابخانه AsyncTCP. (اگر قبلاً این مرحله را انجام داده اید، می توانید به مرحله بعدی بروید.)
نصب ESPAsyncWebکتابخانه سرور
مراحل بعدی را برای نصب ESPAsync دنبال کنیدWebکتابخانه سرور:
- برای دانلود ESPAsync اینجا را کلیک کنیدWebکتابخانه سرور باید داشته باشی
یک پوشه .zip در پوشه دانلودها - پوشه .zip را از حالت فشرده خارج کنید و باید ESPAsync را دریافت کنیدWebپوشه سرور-مستر
- نام پوشه خود را از ESPAsync تغییر دهیدWebسرور سرور به ESPAsyncWebسرور
- ESPAsync را حرکت دهیدWebپوشه سرور به پوشه کتابخانه های نصب Arduino IDE شما
از طرف دیگر، در Arduino IDE خود، می توانید به Sketch > Include بروید
Library > افزودن کتابخانه .ZIP… و کتابخانه ای را که به تازگی دانلود کرده اید انتخاب کنید.
نصب کتابخانه AsyncTCP برای ESP32
ESPAsyncWebکتابخانه سرور برای کار کردن به کتابخانه AsyncTCP نیاز دارد. مراحل بعدی را برای نصب آن کتابخانه دنبال کنید:
- برای دانلود کتابخانه AsyncTCP اینجا را کلیک کنید. شما باید یک پوشه .zip در پوشه Downloads خود داشته باشید
- پوشه .zip را از حالت فشرده خارج کنید و باید پوشه AsyncTCP-master را دریافت کنید
- نام پوشه خود را از AsyncTCP-master به AsyncTCP تغییر دهید
- پوشه AsyncTCP را به پوشه کتابخانه های نصب Arduino IDE خود منتقل کنید
- در نهایت، Arduino IDE خود را دوباره باز کنید
از طرف دیگر، در Arduino IDE خود، می توانید به Sketch > Include بروید
Library > افزودن کتابخانه .ZIP… و کتابخانه ای را که به تازگی دانلود کرده اید انتخاب کنید.
کد
ما ESP32 را با استفاده از Arduino IDE برنامه ریزی می کنیم، بنابراین قبل از ادامه، مطمئن شوید که افزونه ESP32 را نصب کرده اید: (اگر قبلاً این مرحله را انجام داده اید، می توانید به مرحله بعدی بروید.)
نصب افزونه ESP32 در Arduino IDE
پس از نصب کتابخانه های مورد نیاز، کد را باز کنید
Project_8_Output_State_Synchronization_Web_Server.ino در آردوینو IDE.
قبل از آپلود کد، فراموش نکنید که اعتبار شبکه خود را وارد کنید تا ESP بتواند به شبکه محلی شما متصل شود.
کد چگونه کار می کند
حالت دکمه و وضعیت خروجی
متغیر ledState حالت خروجی LED را نگه می دارد. برای پیش فرض، زمانی که web سرور شروع می شود، پایین است.
دکمهState و lastButtonState برای تشخیص اینکه آیا دکمه فشاری فشرده شده است یا نه استفاده می شود.دکمه (web سرور)
ما HTML را برای ایجاد دکمه روی متغیر index_html وارد نکردیم.
دلیلش این است که میخواهیم بسته به وضعیت LED فعلی که میتوان با دکمه فشاری نیز تغییر داد، آن را تغییر دهیم.
بنابراین، ما یک مکان نگهدار برای دکمه %BUTTONPLACEHOLDER% ایجاد کردهایم که با متن HTML جایگزین میشود تا دکمه بعداً روی کد ایجاد شود (این کار در تابع ()processor انجام میشود).پردازنده ()
تابع ()processor هر مکان نگهدارنده روی متن HTML را با مقادیر واقعی جایگزین می کند. ابتدا بررسی می کند که آیا متون HTML حاوی هر کدام هستند یا خیر
متغیرهایی %BUTTONPLACEHOLDER%.سپس تابع ()theoutputState را فراخوانی کنید که وضعیت خروجی فعلی را برمی گرداند. ما آن را در متغیر outputStateValue ذخیره می کنیم.
پس از آن، از آن مقدار برای ایجاد متن HTML برای نمایش دکمه با حالت مناسب استفاده کنید:
درخواست HTTP GET برای تغییر وضعیت خروجی (جاوا اسکریپت)
وقتی دکمه را فشار می دهید، تابع ()thetoggleCheckbox فراخوانی می شود. این تابع در موارد مختلف درخواست می دهد URLs برای روشن یا خاموش کردن LED.برای روشن کردن LED، درخواستی را در /update?state=1 ارسال می کند URL:
در غیر این صورت، در /update?state=0 درخواست می دهد URL.
درخواست HTTP GET برای بهروزرسانی وضعیت (جاوا اسکریپت)
برای به روز نگه داشتن وضعیت خروجی در web سرور، تابع زیر را فراخوانی می کنیم که یک درخواست جدید در وضعیت / می دهد URL هر ثانیهرسیدگی به درخواست ها
سپس، باید بررسی کنیم که وقتی ESP32 یا ESP8266 درخواستهایی را دریافت میکند چه اتفاقی میافتد. URLs.
وقتی درخواستی در روت دریافت شد /URL، صفحه HTML و همچنین پردازنده را ارسال می کنیم.خطوط زیر بررسی می کنند که آیا درخواستی در /update?state=1 یا /update?state=0 دریافت کرده اید URL و بر این اساس ledState را تغییر می دهد.
هنگامی که درخواستی در /state دریافت می شود URL، وضعیت خروجی فعلی را ارسال می کنیم:
حلقه ()
در حلقه()، دکمه فشاری را باز می کنیم و LED را بسته به مقدار ledState روشن یا خاموش می کنیم. متغیرتظاهرات
کد را در برد ESP32 خود آپلود کنید. مراحل مرجع کد آپلود.
سپس، مانیتور سریال را با نرخ باود 115200 باز کنید. دکمه EN/RST روی برد را فشار دهید تا آدرس IP را دریافت کنید.یک مرورگر در شبکه محلی خود باز کنید و آدرس IP ESP را تایپ کنید. شما باید دسترسی داشته باشید web سرور مطابق شکل زیر
توجه: مرورگر شما و ESP32 باید به یک LAN متصل باشند.شما می توانید دکمه روی را تغییر دهید web سرور برای روشن کردن LED
همچنین می توانید همان LED را با دکمه فیزیکی کنترل کنید. وضعیت آن همیشه به طور خودکار در به روز می شود web سرور
پروژه 9 ESP32 DHT11 Web سرور
در این پروژه، نحوه ساخت ESP32 ناهمزمان را یاد خواهید گرفت web سرور با DHT11 که دما و رطوبت را با استفاده از Arduino IDE نمایش می دهد.
پیش نیازها
را web سرور ما بهروزرسانیهای خواندنی را بهطور خودکار و بدون نیاز به رفرش ایجاد میکنیم web صفحه
با این پروژه یاد خواهید گرفت:
- نحوه خواندن دما و رطوبت از سنسورهای DHT.
- یک ناهمزمان بسازید web سرور با استفاده از ESPAsyncWebکتابخانه سرور;
- خوانش های سنسور را به طور خودکار و بدون نیاز به به روز رسانی به روز کنید web صفحه
ناهمزمان Web سرور
برای ساختن web سروری که از آن استفاده خواهیم کرد ESPAsyncWebکتابخانه سرور که یک راه آسان برای ساختن یک ناهمزمان فراهم می کند web سرور ساخت ناهمزمان web سرور دارای چندین Advan استtagهمانطور که در صفحه کتابخانه GitHub ذکر شده است، مانند:
- "به طور همزمان بیش از یک اتصال را مدیریت کنید"؛
- "هنگامی که پاسخ را ارسال می کنید، بلافاصله آماده رسیدگی به سایر اتصالات هستید، در حالی که سرور در حال مراقبت از ارسال پاسخ در پس زمینه است"؛
- "موتور پردازش قالب ساده برای رسیدگی به الگوها"؛
قطعات مورد نیاز
برای تکمیل این آموزش به قسمت های زیر نیاز دارید:
- برد توسعه ESP32
- ماژول DHT11
- تخته نان
- سیم های جامپر
نمودارینصب کتابخانه ها
برای این پروژه باید چند کتابخانه نصب کنید:
- را DHT و سنسور یکپارچه Adafruit کتابخانه های درایور برای خواندن از حسگر DHT.
- ESPAsyncWebسرور و TCP ناهمگام کتابخانه ها برای ساخت ناهمزمان web سرور
دستورالعمل های بعدی را برای نصب آن کتابخانه ها دنبال کنید:
نصب کتابخانه سنسور DHT
برای خواندن از حسگر DHT با استفاده از Arduino IDE، باید آن را نصب کنید کتابخانه حسگر DHT. مراحل بعدی را برای نصب کتابخانه دنبال کنید.
- برای دانلود کتابخانه سنسور DHT اینجا را کلیک کنید. شما باید یک پوشه .zip در پوشه Downloads خود داشته باشید
- پوشه .zip را از حالت فشرده خارج کنید و باید پوشه DHT-sensor-library-master را دریافت کنید.
- نام پوشه خود را از DHT-sensor-library-master به DHT_sensor تغییر دهید
- پوشه DHT_sensor را به پوشه کتابخانه های نصب Arduino IDE خود منتقل کنید
- در نهایت، Arduino IDE خود را دوباره باز کنید
نصب درایور سنسور یکپارچه Adafruit
شما همچنین باید نصب کنید کتابخانه Adafruit Unified Sensor Driver برای کار با سنسور DHT مراحل بعدی را برای نصب کتابخانه دنبال کنید.
- برای دانلود کتابخانه Adafruit Unified Sensor اینجا را کلیک کنید. شما باید یک پوشه .zip در پوشه Downloads خود داشته باشید
- پوشه .zip را از حالت فشرده خارج کنید و باید پوشه Adafruit_sensor-master را دریافت کنید
- نام پوشه خود را از Adafruit_sensor-master به Adafruit_sensor تغییر دهید
- پوشه Adafruit_sensor را به پوشه کتابخانه های نصب Arduino IDE خود منتقل کنید
- در نهایت، Arduino IDE خود را دوباره باز کنید
نصب ESPAsyncWebکتابخانه سرور
مراحل بعدی را برای نصب دنبال کنید ESPAsyncWebسرور کتابخانه:
- برای دانلود ESPAsync اینجا را کلیک کنیدWebکتابخانه سرور باید داشته باشی
یک پوشه .zip در پوشه دانلودها - پوشه .zip را از حالت فشرده خارج کنید و باید
ESPAsync را دریافت کنیدWebپوشه سرور-مستر - نام پوشه خود را از ESPAsync تغییر دهیدWebسرور سرور به ESPAsyncWebسرور
- ESPAsync را حرکت دهیدWebپوشه سرور به پوشه کتابخانه های نصب Arduino IDE شما
نصب کتابخانه TCP Async برای ESP32
را ESPAsyncWebسرور کتابخانه نیاز به AsyncTCP کتابخانه به کار مراحل بعدی را برای نصب آن کتابخانه دنبال کنید:
- برای دانلود کتابخانه AsyncTCP اینجا را کلیک کنید. شما باید یک پوشه .zip در پوشه Downloads خود داشته باشید
- پوشه .zip را از حالت فشرده خارج کنید و باید پوشه AsyncTCP-master را دریافت کنید
- نام پوشه خود را از AsyncTCP-master به AsyncTCP تغییر دهید
- پوشه AsyncTCP را به پوشه کتابخانه های نصب Arduino IDE خود منتقل کنید
- در نهایت، Arduino IDE خود را دوباره باز کنید
کد
ما ESP32 را با استفاده از Arduino IDE برنامه ریزی می کنیم، بنابراین قبل از ادامه، مطمئن شوید که افزونه ESP32 را نصب کرده اید: (اگر قبلاً این مرحله را انجام داده اید، می توانید به مرحله بعدی بروید.)
نصب افزونه ESP32 در Arduino IDE
پس از نصب کتابخانه های مورد نیاز، کد را باز کنید
Project_9_ESP32_DHT11_Web_Server.ino در آردوینو IDE.
قبل از آپلود کد، فراموش نکنید که اعتبار شبکه خود را وارد کنید تا ESP بتواند به شبکه محلی شما متصل شود.کد چگونه کار می کند
در پاراگراف های بعدی نحوه عملکرد کد را توضیح خواهیم داد. اگر میخواهید بیشتر بدانید به خواندن ادامه دهید یا به بخش نمایش بروید تا نتیجه نهایی را ببینید.
واردات کتابخانه ها
ابتدا کتابخانه های مورد نیاز را وارد کنید. WiFi، ESPAsyncWebسرور و ESPAsyncTCP برای ساختن مورد نیاز است web سرور Adafruit_Sensor و کتابخانههای DHT برای خواندن از حسگرهای DHT11 یا DHT22 مورد نیاز هستند.تعریف متغیرها
GPIO را که پین داده DHT به آن متصل است، تعریف کنید. در این حالت به GPIO 4 متصل است.سپس، نوع سنسور DHT مورد استفاده خود را انتخاب کنید. در سابق ماampلی، ما از DHT22 استفاده می کنیم. اگر از نوع دیگری استفاده میکنید، فقط باید حسگر خود را حذف کنید و بقیه را نظر دهید.
یک شی DHT را با نوع و پینی که قبلاً تعریف کردیم، نمونه سازی کنید.یک Async ایجاد کنیدWebشی سرور در پورت 80.
توابع دما و رطوبت را بخوانید
ما دو تابع ایجاد کرده ایم: یکی برای خواندن دما ما دو تابع ایجاد کرده ایم: یکی برای خواندن دما (readDHTTemperature()) و دیگری برای خواندن رطوبت (readDHTHumidity()).دریافت خوانش حسگر به همان سادگی است که استفاده از آن دریافت خوانش حسگر به همان سادگی استفاده از روشهای readTemperature() و readHumidity() در شی dht است.
همچنین شرطی داریم که در صورتی که سنسور نتواند خوانش ها را دریافت کند، دو خط تیره (–) برمی گرداند.
قرائت ها به صورت رشته ای برگردانده می شوند. برای تبدیل یک float به رشته، از تابع String() استفاده کنید
به طور پیش فرض، ما دما را بر حسب درجه سانتیگراد می خوانیم. برای دریافت دما بر حسب درجه فارنهایت، دما را بر حسب سانتیگراد کامنت کنید و دما را بر حسب فارنهایت از نظر خارج کنید، به طوری که موارد زیر را داشته باشید:
کد را آپلود کنید
اکنون کد را در ESP32 خود آپلود کنید. مطمئن شوید که برد و پورت COM مناسب را انتخاب کرده اید. مراحل مرجع کد آپلود.
پس از آپلود، مانیتور سریال را با نرخ باود 115200 باز کنید. دکمه تنظیم مجدد ESP32 را فشار دهید. آدرس IP ESP32 باید در سریال چاپ شود نظارت کنید.تظاهرات
یک مرورگر باز کنید و آدرس IP ESP32 را تایپ کنید. شما web سرور باید آخرین قرائت سنسور را نمایش دهد.
توجه: مرورگر شما و ESP32 باید به یک LAN متصل باشند.
توجه داشته باشید که خوانش دما و رطوبت به طور خودکار بدون نیاز به تازه کردن به روز می شود web صفحه
Project_10_ESP32_OLED_Display
این پروژه نحوه استفاده از صفحه نمایش 0.96 اینچی SSD1306 OLED با ESP32 را با استفاده از Arduino IDE نشان می دهد.
نمایشگر 0.96 اینچی OLED را معرفی می کنیم
را صفحه نمایش OLED که در این آموزش از آن استفاده خواهیم کرد، مدل SSD1306 است: یک صفحه نمایش تک رنگ، 0.96 اینچی با 128×64 پیکسل همانطور که در شکل زیر نشان داده شده است.صفحه نمایش OLED نیازی به نور پس زمینه ندارد که منجر به کنتراست بسیار خوبی در محیط های تاریک می شود. علاوه بر این، پیکسل های آن تنها زمانی که روشن هستند انرژی مصرف می کنند، بنابراین نمایشگر OLED در مقایسه با سایر نمایشگرها انرژی کمتری مصرف می کند.
از آنجایی که صفحه نمایش OLED از پروتکل ارتباطی I2C استفاده می کند، سیم کشی بسیار ساده است. می توانید از جدول زیر به عنوان مرجع استفاده کنید.
پین OLED | ESP32 |
وین | 3.3 ولت |
GND | GND |
SCL | GPIO 22 |
SDA | GPIO 21 |
نمودارینصب SSD1306 OLED Library – ESP32
چندین کتابخانه برای کنترل نمایشگر OLED با ESP32 وجود دارد.
در این آموزش از دو کتابخانه Adafruit استفاده خواهیم کرد: کتابخانه Adafruit_SSD1306 و کتابخانه Adafruit_GFX.
مراحل بعدی را برای نصب آن کتابخانه ها دنبال کنید.
- Arduino IDE خود را باز کنید و به Sketch > Include Library > Manage Libraries بروید. مدیر کتابخانه باید باز شود.
- "SSD1306" را در کادر جستجو تایپ کنید و کتابخانه SSD1306 را از Adafruit نصب کنید.
- پس از نصب کتابخانه SSD1306 از Adafruit، "GFX" را در کادر جستجو تایپ کرده و کتابخانه را نصب کنید.
- پس از نصب کتابخانه ها، آردوینو IDE خود را مجددا راه اندازی کنید.
کد
پس از نصب کتابخانه های مورد نیاز، Project_10_ESP32_OLED_Display.ino را در arduino IDE باز کنید. کد
ما ESP32 را با استفاده از Arduino IDE برنامه ریزی می کنیم، بنابراین مطمئن شوید که افزونه ESP32 را قبل از ادامه نصب کرده اید: (اگر قبلاً این مرحله را انجام داده اید، می توانید به مرحله بعدی بروید.)
نصب افزونه ESP32 در Arduino IDEکد چگونه کار می کند
واردات کتابخانه ها
ابتدا باید کتابخانه های لازم را وارد کنید. کتابخانه Wire برای استفاده از I2C و کتابخانه های Adafruit برای نوشتن روی نمایشگر: Adafruit_GFX و Adafruit_SSD1306.صفحه نمایش OLED را راه اندازی کنید
سپس عرض و ارتفاع OLED خود را مشخص می کنید. در این سابقampما از صفحه نمایش 128×64 OLED استفاده می کنیم. اگر از اندازه های دیگری استفاده می کنید، می توانید آن را در متغیرهای SCREEN_WIDTH و SCREEN_HEIGHT تغییر دهید.سپس، یک شیء نمایشی را با عرض و ارتفاعی که قبلاً با پروتکل ارتباطی I2C (&Wire) تعریف شده است، مقداردهی اولیه کنید.
پارامتر (-1) به این معنی است که صفحه نمایش OLED شما پین RESET ندارد. اگر صفحه نمایش OLED شما دارای پین RESET است، باید به GPIO متصل شود. در این صورت باید شماره GPIO را به عنوان پارامتر ارسال کنید.
در setup()، مانیتور سریال را با سرعت باود 115200 برای اهداف اشکال زدایی مقداردهی کنید.صفحه نمایش OLED را با متد ()fill به صورت زیر راه اندازی کنید:
این قطعه همچنین پیامی را در مانیتور سریال چاپ می کند، در صورتی که قادر به اتصال به نمایشگر نباشیم.
در صورتی که از صفحه نمایش OLED دیگری استفاده می کنید، ممکن است نیاز باشد آدرس OLED را تغییر دهید. در مورد ما، آدرس 0x3C است.
پس از مقداردهی اولیه نمایشگر، یک تاخیر دو ثانیه ای اضافه کنید تا OLED زمان کافی برای مقداردهی اولیه قبل از نوشتن متن داشته باشد:
صفحه نمایش را پاک کنید، اندازه فونت، رنگ و متن را تنظیم کنید
پس از مقداردهی اولیه نمایشگر، بافر نمایشگر را با روش clearDisplay() پاک کنید:
قبل از نوشتن متن، باید اندازه متن، رنگ و محل نمایش متن در OLED را تعیین کنید.
اندازه فونت را با استفاده از متد setTextSize() تنظیم کنید:رنگ فونت را با متد setTextColor() تنظیم کنید:
WHITE فونت سفید و پس زمینه سیاه را تنظیم می کند.
محل شروع متن را با استفاده از متد setCursor(x,y) تعیین کنید. در این مورد، متن را به گونه ای تنظیم می کنیم که از مختصات (0,0) - در گوشه بالا سمت چپ شروع شود.در نهایت می توانید با استفاده از روش println() متن را به صورت زیر به نمایشگر ارسال کنید
سپس، باید متد display() را فراخوانی کنید تا در واقع متن روی صفحه نمایش داده شود.
کتابخانه OLED Adafruit روش های مفیدی را برای اسکرول کردن متن ارائه می دهد.
- startscrollright (0x00، 0x0F): متن را از چپ به راست اسکرول کنید
- startscrollleft(0x00, 0x0F): متن را از راست به چپ اسکرول کنید
- startscrolldiagright(0x00, 0x07): متن را از گوشه پایین سمت چپ به گوشه بالا سمت راست اسکرول کنید startscrolldiagleft(0x00, 0x07): متن را از گوشه پایین سمت راست به گوشه بالا سمت چپ اسکرول کنید
کد را آپلود کنید
اکنون، کد را در ESP32 خود آپلود کنید. مراحل مرجع کد آپلود.
پس از آپلود کد، OLED متن اسکرول را نمایش می دهد.
اسناد / منابع
![]() |
کیت اولیه LAFVIN ESP32 [pdfدفترچه راهنما ESP32 Basic Starter Kit, ESP32, Basic Starter Kit, Starter Kit |