📡 ۳۰ مدار ESP32 با اسم فارسی و انگلیسی — از چشمک‌زن تا اینترنت اشیا

✍️ تیم ووکوی فارسی ·

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

چهار قانون مدارهای ESP32

ESP32 از نظر کد خیلی شبیه آردوینو است، ولی چهار تفاوت سخت‌افزاری دارد که اگر ندانی، مدار درست کار نمی‌کند یا برد آسیب می‌بیند:

  1. منطق ۳٫۳ ولت: پایه‌های ESP32 با ۳٫۳ ولت کار می‌کنند و ورودی‌هایش بیشتر از حدود ۳٫۶ ولت را تحمل نمی‌کنند. پتانسیومتر و سنسورها را به پایه‌ی 3V3 وصل کن، نه 5V. اگر ماژولی خروجی ۵ ولتی دارد، مثل پایه‌ی Echo سنسور HC-SR04، با دو مقاومت ولتاژش را پایین بیاور؛ روشش در بخش «مبدل سطح منطقی» از ۱۵ مدار پایه‌ی الکترونیک آمده است.
  2. ADC1 برای سنسورهای آنالوگ: ADC این برد دوازده‌بیتی است و عدد ۰ تا ۴۰۹۵ می‌دهد. پایه‌های ADC2 (مثل GPIO25 تا ۲۷ و GPIO12 تا ۱۵) با روشن شدن وای‌فای از دسترس خارج می‌شوند؛ پس سنسور آنالوگ را به GPIO32 تا ۳۹ (ADC1) وصل کن. برای خروجی دیجیتال و PWM این محدودیت وجود ندارد.
  3. PWM با ledc: در هسته‌ی نسخه‌ی ۳ آردوینوی ESP32، پایه را با ledcAttach(pin, freq, bits) به PWM وصل می‌کنی و با ledcWrite(pin, duty) مقدار می‌دهی. جزئیات و روش کانالی هسته‌ی نسخه‌ی ۲ در PWM روی ESP32 با ledc آمده است.
  4. پایه‌های حساس: GPIO6 تا ۱۱ به حافظه‌ی فلش وصل‌اند و روی DevKit سی‌پایه بیرون نیامده‌اند. GPIO34 تا ۳۹ فقط ورودی‌اند و مقاومت pull-up داخلی ندارند. GPIO0، ۲، ۱۲ و ۱۵ هم موقع روشن شدن برد نقش دارند و بهتر است قطعه‌ای آن‌ها را بالا یا پایین نکشد. نقشه‌ی کامل در پین اوت ESP32 است.
💡 در شبیه‌ساز چه چیزی کار می‌کند؟ در شبیه‌ساز تینکرکد فارسی، ESP32 به شبکه‌ی مجازی Wokwi-GUEST بدون رمز وصل می‌شود؛ وب‌سرور، WebSocket، MQTT و حافظه‌ی فایل کار می‌کنند و صفحه‌ای که برد می‌سازد در زبانه‌ی «مرورگر» ویرایشگر باز می‌شود. ولی برد به اینترنت واقعی نمی‌رسد؛ پس ساعت NTP، گرفتن داده از یک API واقعی، دیپ اسلیپ، بلوتوث (BLE) و تسک‌های FreeRTOS را روی برد واقعی امتحان کن. توضیح بیشتر در وای‌فای و اینترنت اشیا در شبیه‌ساز.

جدول ۳۰ مدار ESP32

مدارها را در پنج دسته از ساده به پیچیده چیده‌ایم. ستون «در شبیه‌ساز؟» می‌گوید مدار در شبیه‌ساز فارسی کامل اجرا می‌شود یا باید روی برد واقعی امتحانش کنی. ستون آخر آموزشی است که همان مدار، یا نسخه‌ی آردوینوی آن با همان کتابخانه، را درس می‌دهد؛ «پایین همین صفحه» یعنی سیم‌کشی و کدش را در ادامه آورده‌ایم.

۱. مدارهای پایه: GPIO، PWM، ADC و لمس

#اسم فارسیEnglish nameقطعه‌هامفهومدر شبیه‌ساز؟آموزش
۱چشمک‌زن دو LEDTwo-LED BlinkLED، مقاومت ۲۲۰ اهمdigitalWrite، LED داخلی روی GPIO2بلهاولین پروژه‌ی ESP32
۲کلید تاگل با دکمهPush-button Toggleدکمه، LED، مقاومتINPUT_PULLUP و رفع لرزش دکمهبلهبخش مقاومت بالاکش در مدارهای پایه
۳چراغ نفس‌کشBreathing LED (LEDC Fade)LED، مقاومتledcAttach و ledcWriteبلهPWM با ledc
۴دیمر با پتانسیومترPotentiometer Dimmerپتانسیومتر، LEDADC دوازده‌بیتی و ledcبلهanalogRead در ESP32
۵کلید لمسی خازنیCapacitive Touch Switchیک سیم یا تکه فویل، LEDtouchRead و انتخاب آستانهنیمه: کد اجرا می‌شود ولی لمس حس نمی‌شودپین لمسی ESP32
۶لامپ رنگی RGBRGB Mood LampLED RGB، سه مقاومت، پتانسیومترسه خروجی ledc و چرخه‌ی رنگبلهپایین همین صفحه
۷چراغ راهنماییTraffic Lightسه LED، سه مقاومتماشین حالت با millisبلهپایین همین صفحه
۸سروو با ولومServo Knobسروو، پتانسیومترکتابخانه‌ی ESP32Servo و PWM پنجاه هرتزبلهسروو با ESP32

۲. مدارهای سنسور

#اسم فارسیEnglish nameقطعه‌هامفهومدر شبیه‌ساز؟آموزش
۹چراغ خواب خودکار با فتوسلLDR Auto Night LightLDR، مقاومت ۱۰ کیلواهم، LEDمقسم ولتاژ روی ADC1بلهپایین همین صفحه
۱۰دماسنج و رطوبت‌سنجDHT22 Thermometerسنسور DHT22کتابخانه‌ی DHT و بررسی خطا با isnanبلهDHT22 با آردوینو
۱۱فاصله‌سنج اولتراسونیکUltrasonic Distance Meter (HC-SR04)HC-SR04، دو مقاومت برای EchopulseIn و مقسم ۵ به ۳٫۳ ولتبلهفاصله‌سنج HC-SR04
۱۲دزدگیر حرکتیPIR Motion Alarmسنسور PIR، بازر، LEDورودی دیجیتال و زمان‌سنج millisبلهسنسور حرکت PIR
۱۳رطوبت‌سنج خاک گلدانSoil Moisture Monitorسنسور رطوبت خاکADC و کالیبره کردن خشک و خیسبلهسنسور رطوبت خاک
۱۴هشدار نشت گازGas Leak Alarm (MQ-2)سنسور MQ-2، بازرآستانه و زمان گرم شدن سنسوربلهسنسور گاز MQ-2

۳. مدارهای نمایشگر

#اسم فارسیEnglish nameقطعه‌هامفهومدر شبیه‌ساز؟آموزش
۱۵دماسنج با نمایشگر OLEDOLED Thermometer (SSD1306 + DHT22)OLED، DHT22I2C روی GPIO21 و GPIO22بلهپایین همین صفحه
۱۶نمایشگر LCD با ماژول I2CI2C LCD 16×2LCD 16×2 با ماژول I2CLiquidCrystal_I2C و آدرس 0x27بلهLCD I2C
۱۷حلقه‌ی رنگین‌کمان نئوپیکسلNeoPixel Ring Rainbowحلقه‌ی ۱۲تایی WS2812Adafruit_NeoPixel و رنگ HSVبلهرنگین‌کمان نئوپیکسل
۱۸کرنومتر چهاررقمیTM1637 Stopwatchنمایشگر TM1637نمایش عدد و دونقطه با دو سیمبلهنمایشگر TM1637
۱۹ماتریس LED هشت در هشت8×8 LED Matrix (MAX7219)ماتریس با MAX7219SPI، شکلک و متن متحرکبلهماتریس MAX7219

۴. مدارهای وای‌فای و وب

#اسم فارسیEnglish nameقطعه‌هامفهومدر شبیه‌ساز؟آموزش
۲۰وصل شدن به وای‌فایWi-Fi Station Connectفقط بردWiFi.begin، گرفتن IP و وصل شدن دوبارهبله (Wokwi-GUEST)اتصال ESP32 به وای‌فای
۲۱وب‌سرور کنترل LEDWeb Server LED ControlLED (و ولوم در نسخه‌ی پایین صفحه)کتابخانه‌ی WebServer و مسیرهابلهوب‌سرور ESP32
۲۲وب‌سرور بدون مودمAccess Point Web ServerLEDWiFi.softAPبلهESP32 در حالت Access Point
۲۳صفحه‌ی وب دما و رطوبتDHT Weather Web PageDHT22ساختن HTML در کدبلهصفحه‌ی وب دما
۲۴داده‌ی زنده با WebSocketLive WebSocket Dashboardپتانسیومتر، LEDارتباط دوطرفه بدون رفرشبلهWebSocket روی ESP32

۵. پروژه‌های اینترنت اشیا (IoT)

#اسم فارسیEnglish nameقطعه‌هامفهومدر شبیه‌ساز؟آموزش
۲۵گره‌ی سنسور MQTTMQTT Sensor Nodeپتانسیومتر، LEDPubSubClient، تاپیک و بروکربلهپروژه‌ی MQTT
۲۶داشبورد خانه‌ی هوشمندSmart Home DashboardDHT، LED، ترانزیستور NPN، موتور، دیودوب‌سرور و سرعت فن با PWMبلهداشبورد خانه‌ی هوشمند
۲۷گلخانه‌ی هوشمندSmart Greenhouseسنسور رطوبت خاک، DHT22، رله، فنمنطق کنترلی و صفحه‌ی وببلهگلخانه هوشمند با ESP32
۲۸ساعت اینترنتیNTP Internet Clockبرد (و یک نمایشگر)configTime و وقت تهراننه؛ اینترنت واقعی لازم استساعت NTP
۲۹گزارش آب‌وهوا از APIHTTP Weather Clientبرد (و یک نمایشگر)HTTPClient و خواندن JSONنه؛ فقط بخش JSONHTTPClient در ESP32
۳۰سنسور باتری‌دار با خواب عمیقDeep-Sleep Battery SensorDHT22، باتریخواب عمیق و بیدار شدن با تایمرنه؛ برد واقعیدیپ اسلیپ ESP32

چرا برای بعضی سنسورها و نمایشگرها آموزش آردوینو را گذاشته‌ایم؟ چون کتابخانه‌های DHT، Adafruit_SSD1306، LiquidCrystal_I2C، Adafruit_NeoPixel و TM1637 روی ESP32 هم بدون تغییر کار می‌کنند. فقط سه چیز را عوض کن: شماره‌ی پایه‌ها، باس I2C که روی ESP32 پایه‌های GPIO21 (SDA) و GPIO22 (SCL) است، و تغذیه‌ی سنسورهایی که با ۳٫۳ ولت هم کار می‌کنند. سرعت سریال را هم ۱۱۵۲۰۰ بگذار.

پنج مدار ESP32 با سیم‌کشی و کد کامل

همه‌ی کدهای زیر برای هسته‌ی نسخه‌ی ۳ آردوینوی ESP32 نوشته شده‌اند و برد مرجع، ESP32 DevKit سی‌پایه است که در شبیه‌ساز هم همین است. شماره‌ی هر مدار همان شماره‌ی جدول بالاست.

مدار ۷: چراغ راهنمایی بدون delay (Non-blocking Traffic Light)

چراغ راهنمایی اولین «ماشین حالت» هر کسی است: سبز، زرد، قرمز و دوباره سبز. این‌جا به‌جای delay زمان را با millis می‌سنجیم تا loop هیچ‌وقت نایستد. این عادت در ESP32 حیاتی است، چون بعداً همین برنامه باید هم‌زمان به وب‌سرور یا دکمه‌ی عابر هم جواب بدهد.

قطعهپایه‌ی قطعهپایه‌ی ESP32
LED قرمزآند، از راه مقاومت ۲۲۰ اهمGPIO18
LED زردآند، از راه مقاومت ۲۲۰ اهمGPIO19
LED سبزآند، از راه مقاومت ۲۲۰ اهمGPIO23
هر سه LEDکاتد (پایه‌ی کوتاه)GND

با ۳٫۳ ولت و LED قرمز با افت حدود ۲ ولت، جریان هر LED تقریباً (3.3 − 2) ÷ 220 ≈ ۶ میلی‌آمپر است؛ برای دیدن کافی است و به پایه‌ها فشار نمی‌آورد.

// Traffic light on ESP32 without delay(): a tiny state machine.
const int RED = 18;
const int YELLOW = 19;
const int GREEN = 23;

const int GO = 0;      // green
const int SLOW = 1;    // yellow
const int STOP = 2;    // red
const unsigned long DURATION[3] = {4000, 1500, 5000};   // ms for GO, SLOW, STOP

int phase = STOP;
unsigned long phaseStart = 0;

void show(int p) {
  digitalWrite(GREEN,  p == GO   ? HIGH : LOW);
  digitalWrite(YELLOW, p == SLOW ? HIGH : LOW);
  digitalWrite(RED,    p == STOP ? HIGH : LOW);
}

void setup() {
  Serial.begin(115200);
  pinMode(RED, OUTPUT);
  pinMode(YELLOW, OUTPUT);
  pinMode(GREEN, OUTPUT);
  show(phase);
  phaseStart = millis();
}

void loop() {
  if (millis() - phaseStart >= DURATION[phase]) {
    if (phase == STOP) phase = GO;
    else if (phase == GO) phase = SLOW;
    else phase = STOP;
    show(phase);
    phaseStart = millis();
    Serial.print("phase: ");
    Serial.println(phase == GO ? "GREEN" : (phase == SLOW ? "YELLOW" : "RED"));
  }
  // free time: read a button, update a display, serve a web page...
}

همین مدار با آردوینو اونو به‌صورت رایگان در پروژه‌ی آماده‌ی چراغ راهنمایی هست. تمرین: یک دکمه روی GPIO4 با INPUT_PULLUP اضافه کن که با فشردنش، حالت سبز زودتر تمام شود.

مدار ۶: لامپ رنگی RGB با ledc (RGB Mood Lamp)

یک LED RGB سه LED قرمز، سبز و آبی در یک بدنه است. با سه خروجی PWM رنگ‌ها را ترکیب می‌کنیم و یک چرخه‌ی رنگین‌کمانی آرام می‌سازیم. یک ولوم هم سرعت چرخش را تعیین می‌کند.

قطعهپایه‌ی قطعهپایه‌ی ESP32
LED RGB (کاتد مشترک)پایه‌ی قرمز، از راه ۲۲۰ اهمGPIO25
LED RGBپایه‌ی سبز، از راه ۲۲۰ اهمGPIO26
LED RGBپایه‌ی آبی، از راه ۲۲۰ اهمGPIO27
LED RGBپایه‌ی بلند (کاتد مشترک)GND
پتانسیومتردو پایه‌ی کناری / پایه‌ی وسط3V3 و GND / GPIO34
// RGB mood lamp: three LEDC outputs, a knob on GPIO34 sets the speed (core 3.x)
const int R_PIN = 25;
const int G_PIN = 26;
const int B_PIN = 27;
const int KNOB = 34;     // ADC1: keeps working when Wi-Fi is on

int hue = 0;             // 0..359 degrees on the colour wheel

void setColor(int r, int g, int b) {   // 0..255 each
  ledcWrite(R_PIN, r);
  ledcWrite(G_PIN, g);
  ledcWrite(B_PIN, b);
}

// hue 0..359 -> a fully saturated colour, in six 60-degree sectors
void hueToRgb(int h) {
  int x = (h % 60) * 255 / 60;   // a 0..255 ramp inside each sector
  int sector = h / 60;
  if (sector == 0)      setColor(255, x, 0);
  else if (sector == 1) setColor(255 - x, 255, 0);
  else if (sector == 2) setColor(0, 255, x);
  else if (sector == 3) setColor(0, 255 - x, 255);
  else if (sector == 4) setColor(x, 0, 255);
  else                  setColor(255, 0, 255 - x);
}

void setup() {
  Serial.begin(115200);
  ledcAttach(R_PIN, 5000, 8);   // 8-bit resolution: duty 0..255
  ledcAttach(G_PIN, 5000, 8);
  ledcAttach(B_PIN, 5000, 8);
}

void loop() {
  int knob = analogRead(KNOB);            // 0..4095
  int wait = map(knob, 0, 4095, 2, 40);   // ms per step: the knob is the speed
  hueToRgb(hue);
  hue = (hue + 1) % 360;
  delay(wait);
}
💡 اگر LED تو آند مشترک است، پایه‌ی بلند را به 3V3 بزن و در setColor هر عدد را برعکس بنویس: ledcWrite(R_PIN, 255 - r).

مدار ۹: چراغ خواب خودکار با فتوسل (LDR Auto Night Light)

هر چه اتاق تاریک‌تر شود، LED پرنورتر می‌شود. فتوسل (LDR) مقاومتی است که در نور کم می‌شود و در تاریکی زیاد. با یک مقاومت ۱۰ کیلواهم آن را به مقسم ولتاژ تبدیل می‌کنیم تا ESP32 بتواند ولتاژش را بخواند.

قطعهپایه‌ی قطعهپایه‌ی ESP32
فتوسل LDRیک پایه3V3
فتوسل LDRپایه‌ی دیگرGPIO35 (ADC1)
مقاومت ۱۰ کیلواهمبین GPIO35 و GNDGPIO35 / GND
LEDآند از راه ۲۲۰ اهم / کاتدGPIO4 / GND

حساب مقسم: ولتاژ پایه‌ی ۳۵ برابر است با 3.3 × 10k ÷ (RLDR + 10k). در نور اتاق که LDR حدود ۱ کیلواهم است، 3.3 × 10 ÷ 11 ≈ ۳ ولت و عدد ADC حدود ۳۷۰۰ می‌شود. در تاریکی که LDR به حدود ۱۰۰ کیلواهم می‌رسد، 3.3 × 10 ÷ 110 = ۰٫۳ ولت و عدد حدود ۳۷۰ است.

// Automatic night light: the darker the room, the brighter the LED (core 3.x)
const int LDR_PIN = 35;   // ADC1, input-only pin: perfect for a sensor
const int LED = 4;

const int DARK = 800;     // reading we call "dark" (tune it with the Serial Monitor)
const int BRIGHT = 3000;  // reading we call "bright"

void setup() {
  Serial.begin(115200);
  ledcAttach(LED, 5000, 8);
}

void loop() {
  long sum = 0;
  for (int i = 0; i < 16; i++) {
    sum += analogRead(LDR_PIN);   // average 16 samples to calm the noise
  }
  int light = sum / 16;           // 0..4095

  int level = constrain(light, DARK, BRIGHT);
  int duty = map(level, DARK, BRIGHT, 255, 0);   // dark -> 255, bright -> 0
  ledcWrite(LED, duty);

  Serial.print("light:");
  Serial.print(light);
  Serial.print(",led:");
  Serial.println(duty);
  delay(100);
}

مدار ۱۵: دماسنج با OLED و DHT22 (OLED Thermometer)

دما و رطوبت را با سنسور DHT22 می‌خوانیم و با عدد درشت روی یک نمایشگر OLED کوچک ۱۲۸ در ۶۴ نشان می‌دهیم. این مدار دو پروتکل را کنار هم یاد می‌دهد: I2C برای نمایشگر و ارتباط تک‌سیمه‌ی DHT.

قطعهپایه‌ی قطعهپایه‌ی ESP32
DHT22VCC / DATA / GND3V3 / GPIO15 / GND
OLED SSD1306VCC / GND3V3 / GND
OLED SSD1306SDA / SCLGPIO21 / GPIO22

اگر سنسور DHT22 تو ماژول نیست و خودِ قطعه‌ی چهارپایه است، یک مقاومت ۱۰ کیلواهم بین DATA و 3V3 بگذار. سه کتابخانه لازم است: DHT sensor library، Adafruit SSD1306 و Adafruit GFX.

// DHT22 + SSD1306 OLED thermometer on ESP32 (I2C on GPIO21 / GPIO22)
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>

#define DHT_PIN 15
#define DHT_TYPE DHT22

Adafruit_SSD1306 display(128, 64, &Wire, -1);
DHT dht(DHT_PIN, DHT_TYPE);

void setup() {
  Serial.begin(115200);
  Wire.begin(21, 22);                       // SDA, SCL: the ESP32 defaults
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println("OLED not found at 0x3C");
    while (true) delay(1000);
  }
  dht.begin();
  display.setTextColor(SSD1306_WHITE);
}

void loop() {
  float t = dht.readTemperature();          // Celsius
  float h = dht.readHumidity();             // percent

  display.clearDisplay();
  display.setTextSize(1);
  display.setCursor(0, 0);
  display.println("ESP32 thermometer");

  if (isnan(t) || isnan(h)) {
    display.setCursor(0, 24);
    display.println("Sensor error");
    Serial.println("DHT read failed");
  } else {
    display.setTextSize(2);
    display.setCursor(0, 20);
    display.print(t, 1);
    display.println(" C");
    display.setCursor(0, 44);
    display.print(h, 0);
    display.println(" %");
    Serial.print("t=");
    Serial.print(t, 1);
    Serial.print(" h=");
    Serial.println(h, 0);
  }
  display.display();                        // nothing shows until this line
  delay(2000);                              // DHT22: one reading per 2 seconds at most
}

توضیح کامل دستورهای OLED در OLED SSD1306 با آردوینو آمده و روی ESP32 هم عیناً همان است.

مدار ۲۱ (نسخه‌ی کامل‌تر): صفحه‌ی وب LED و ولوم (Web LED and Knob Page)

حالا وای‌فای را اضافه می‌کنیم. ESP32 به شبکه وصل می‌شود و یک صفحه‌ی وب می‌سازد که وضعیت LED روی برد و عدد یک ولوم را نشان می‌دهد و با یک لینک LED را روشن و خاموش می‌کند. این مدار دقیقاً جایی است که قانون ADC1 خودش را نشان می‌دهد.

قطعهپایه‌ی قطعهپایه‌ی ESP32
LED آبی روی برداز قبل وصل استGPIO2
پتانسیومتردو پایه‌ی کناری / پایه‌ی وسط3V3 و GND / GPIO34 (ADC1)
// Wi-Fi web page: toggle the on-board LED and read a knob (ESP32)
#include <WiFi.h>
#include <WebServer.h>

const char* SSID = "Wokwi-GUEST";   // the simulator's virtual network, no password
const char* PASS = "";

const int LED = 2;      // the blue on-board LED
const int KNOB = 34;    // ADC1 only! ADC2 pins stop reading while Wi-Fi is on

WebServer server(80);
bool ledOn = false;

String page() {
  String html = "<!DOCTYPE html><html><head><meta charset='utf-8'>";
  html += "<meta name='viewport' content='width=device-width'></head><body>";
  html += "<h1>ESP32</h1><p>LED: ";
  html += ledOn ? "ON" : "OFF";
  html += "</p><p>Knob: ";
  html += String(analogRead(KNOB));
  html += " / 4095</p><p><a href='/toggle'>Toggle LED</a> | <a href='/'>Refresh</a></p>";
  html += "</body></html>";
  return html;
}

void handleRoot() {
  server.send(200, "text/html", page());
}

void handleToggle() {
  ledOn = !ledOn;
  digitalWrite(LED, ledOn ? HIGH : LOW);
  server.send(200, "text/html", page());
}

void setup() {
  Serial.begin(115200);
  pinMode(LED, OUTPUT);
  WiFi.begin(SSID, PASS);
  Serial.print("Connecting");
  while (WiFi.status() != WL_CONNECTED) {
    delay(250);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("Open http://");
  Serial.println(WiFi.localIP());
  server.on("/", handleRoot);
  server.on("/toggle", handleToggle);
  server.begin();
}

void loop() {
  server.handleClient();   // answer the browser; never block this loop
}

نسخه‌ی آماده با دکمه‌های ON و OFF در پروژه‌ی روشن کردن LED از صفحه‌ی وب هست و درس وب‌سرور: LED از مرورگر آن را با تمرین درس می‌دهد.

این مدارها را کجا بسازی؟

اشکال‌های رایج در مدارهای ESP32

همه‌ی مقاله‌های این مجموعه، از ساخت مدار تا شبیه‌سازی، در بخش مدار و شبیه‌سازی مدار جمع شده‌اند. اگر با رزبری پای پیکو کار می‌کنی، ۲۵ مدار رزبری پای پیکو با میکروپایتون را ببین، و برای مدارهای آردوینو اونو فهرست مدارهای آردوینو در تینکرکد فارسی آماده است.

وب‌سرور ESP32 را در تینکرکد فارسی باز کن 📡

سؤال‌های رایج

مدار ESP32 با مدار آردوینو اونو چه فرقی دارد؟

منطق پایه‌های ESP32 سه و سه‌دهم ولت است نه پنج ولت، ADC آن دوازده‌بیتی است و عددی بین ۰ تا ۴۰۹۵ می‌دهد، PWM با واحد ledc ساخته می‌شود و وای‌فای دارد. مقاومت‌ها و بیشتر سنسورها همان‌اند، ولی هیچ سیگنال پنج‌ولتی را مستقیم به پایه‌ی ESP32 وصل نکن.

کدام مدارهای ESP32 در شبیه‌ساز اجرا نمی‌شوند؟

هر مداری که به اینترنت واقعی، NTP، دیپ اسلیپ، بلوتوث (BLE) یا FreeRTOS نیاز دارد. وای‌فای با شبکه‌ی مجازی Wokwi-GUEST، وب‌سرور، WebSocket، MQTT و حافظه‌ی فایل کار می‌کنند. touchRead هم اجرا می‌شود ولی لمس انگشت را حس نمی‌کند.

چرا وقتی وای‌فای روشن است analogRead درست کار نمی‌کند؟

پایه‌هایی که روی ADC2 هستند، مثل GPIO25 تا ۲۷ و GPIO12 تا ۱۵، با روشن شدن وای‌فای در دسترس نیستند. سنسورهای آنالوگ را به پایه‌های ADC1 یعنی GPIO32 تا ۳۹ وصل کن.

اجرای مدارهای ESP32 در شبیه‌ساز فارسی رایگان است؟

باز کردن پروژه‌ها و خواندن کد و مدارشان رایگان است. اجرای ESP32 جزو اشتراک Plus تینکرکد فارسی است. مدارهای پایه مثل LED، دکمه و پتانسیومتر را می‌توانی رایگان با آردوینو اونو تمرین کنی.

مقاله‌های مرتبط

🍓

۲۵ مدار رزبری پای پیکو با میکروپایتون، با اسم فارسی و انگلیسی

🔌

۱۵ مدار پایه‌ی الکترونیک که هر آردوینوکار باید بلد باشد (با اسم انگلیسی)

🧮

مدار منطقی و دیجیتال: ساخت و شبیه‌سازی گیت AND، OR، NOT و XOR تا شمارنده

📱

ووکوی روی گوشی: شبیه‌سازی آردوینو و ESP32 با موبایل، بدون نصب برنامه

همه‌ی آموزش‌های مدار و شبیه‌سازی مدار ← · همه‌ی مقاله‌ها