آموزش ESP32 43/55 - ایستگاه هواشناسی اینترنتی IoT | کیت یادگیری IoT ESP32 سانفاندر
در این آموزش، ما یک ایستگاه هواشناسی متصل به اینترنت را با استفاده از ESP32 و برد توسعه دوربین آن از سانفاندِر میسازیم. این پروژه به ESP32 این امکان را میدهد که دادههای آب و هوایی بهروز شامل دما و رطوبت را دریافت کرده و آن را بر روی یک صفحه نمایش LCD نمایش دهد. این برنامه نه تنها تواناییهای ESP32 را به نمایش میگذارد بلکه نشان میدهد چگونه دادهها را از یک API خارجی دریافت و تجزیه کنیم.

همانطور که در حال پیشرفت در آموزش هستیم، اجزاء را سیمکشی میکنیم، شِفر (کود) را پیکربندی میکنیم و اطمینان حاصل میکنیم که همه چیز به طور یکپارچه با هم کار میکند. نتیجه نهایی یک ایستگاه هوای کامل است که هر 10 ثانیه خوانشهای خود را بهروزرسانی میکند و نمایشی واضح و مختصر از شرایط کنونی آب و هوا ارائه میدهد (در ویدیو در 00:30).
توضیح سختافزار
اجزای اصلی استفاده شده در این پروژه شامل میکروکنترلر ESP32، یک نمایشگر LCD و سیم کشی لازم است. ESP32 با Wi-Fi و Bluetooth داخلی مجهز شده است که به آن اجازه میدهد به اینترنت متصل شده و دادهها را دریافت کند. نمایشگر LCD اطلاعات وضعیت فعلی هوا، از جمله دما و رطوبت را نشان خواهد داد.
LCD که ما استفاده میکنیم یک نمایشگر 16x2 کاراکتری است، به این معنی که میتواند دو خط از 16 خصیصه را نمایش دهد. این برای خروجی اطلاعات آب و هوایی ما کافی خواهد بود. ESP32 از طریق I2C با LCD ارتباط برقرار میکند که با استفاده از فقط دو خط داده، سیمکشی را سادهتر میکند.
جزئیات برگه داده
| تولیدکننده | اسپرسيف |
|---|---|
| شماره قطعه | ESP32-WROOM-32 |
| ولتاژ منطقی/ورودی و خروجی | 3.3 ولت |
| ولتاژ تغذیه | ۳.۰-۳.۶ ولت |
| جریان خروجی (به ازای هر کانال) | ۱۲ میلی آمپر حداکثر |
| جریان اوج (به ازای هر کانال) | ۴۰ میلیآمپر |
| راهنمایی فرکانس PWM | 1 کیلوهرتز |
| آستانههای منطق ورودی | ۰.۳ ولت (پایین)، ۰.۷ ولت (بالا) |
| افت ولتاژ / RDS(on)/ اشباع | ۰.۵ ولت |
| محدودیتهای حرارتی | -۴۰ تا ۸۵ درجه سلسیوس |
| بسته | QFN48 |
| یادداشتها / واریانتها | شامل چندین نوع مختلف برای کاربردهای مختلف است |
- اطمینان حاصل کنید که ESP32 با یک منبع 3.3 ولت پایدار تغذیه میشود.
- از یک زمین مشترک برای همه اجزاء استفاده کنید تا از مشکلات ارتباطی جلوگیری شود.
- آدرس I2C LCD را با استفاده از یک اسکنر I2C بررسی کنید.
- وضعیت اتصال Wi-Fi را تحت نظر داشته باشید تا از قطع شدن در هنگام دریافت دادهها جلوگیری کنید.
- خطاهای تجزیه JSON را برای افزایش استحکام در بازیابی دادهها مدیریت کنید.
دستورالعملهای سیمکشی

برای سیمکشی اجزا، ابتدا LCD را به ESP32 متصل کنید. LCD از رابط I2C استفاده خواهد کرد، بنابراین پایه SDA LCD را به GPIO21 روی ESP32 و پایه SCL را به GPIO22 متصل کنید. اطمینان حاصل کنید که پایههای تغذیه و زمین LCD را به ترتیب به پایههای 5V و GND روی ESP32 متصل کنید.
سپس، اطمینان حاصل کنید که ESP32 به درستی با استفاده از باتری لیتیومی شامل شده یا از طریق اتصال USB تغذیه میشود. باتری امکان حمل و نقل را فراهم میآورد، در حالی که اتصال USB برای برنامهنویسی و عیبیابی مفید است. در نهایت، تمامی اتصالات را بررسی کنید تا از مشکلات سیمکشی شل که میتواند عملکرد را مختل کند، جلوگیری شود.
نمونههای کدنویسی و راهنما
در مرحله راهاندازی برنامه ما، ارتباط سریال را راهاندازی کرده و با استفاده از SSID و کلمه عبور ارائهشده به شبکه Wi-Fi متصل میشویم. قطعه شِفر (کود) زیر ارتباط Wi-Fi را مدیریت میکند:
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());این شِفر (کود) اطمینان میدهد که ESP32 قبل از ادامه به هرگونه دریافت داده، به شبکه Wi-Fi مشخص شده متصل شود. اگر اتصال شکست بخورد، به طور مداوم تلاش خواهد کرد تا دوباره متصل شود.
بعدی، ما نیاز داریم یک درخواست HTTP GET ارسال کنیم تا دادههای آب و هوا را بازیابی کنیم. این کار با استفاده از شِفر (کود) زیر انجام میشود:
String serverPath = "http://api.openweathermap.org/data/2.5/weather?q=" + city + "," + countryCode + "&units=metric" + "&APPID=" + openWeatherMapApiKey;
jsonBuffer = httpGETRequest(serverPath.c_str());در اینجا، ما URL درخواست API را تشکیل میدهیم که شامل نام شهر، شِفر (کود) کشور و کلید API ما است.httpGETRequestسپس تابع فراخوانی میشود تا دادههای آب و هوا را دریافت کند.
در نهایت، پاسخ JSON را تجزیه کرده و دادههای مربوطه را بر روی LCD نمایش میدهیم:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(time);
lcd.print(" ");
lcd.print(myObject["weather"][0]["main"]);
lcd.setCursor(0, 1);
lcd.print("T:");
lcd.print(myObject["main"]["temp"]);
lcd.print("\xDF"); // "°" char
lcd.print("C ");
lcd.print("H:");
lcd.print(myObject["main"]["humidity"]);
lcd.print("%");این قطعه شِفر (کود) نمایشگر LCD را با زمان جاری، وضعیت آب و هوا، دما و رطوبت بهروز میکند. این شِفر (کود) صفحه قبلی را پاک کرده و نشانگر را در موقعیتهای مناسب برای هر خط قرار میدهد.
نمایشگاه / چه انتظاری باید داشته باشید
پس از سیمکشی و برنامهریزی موفقیتآمیز، ایستگاه هواشناسی شما به Wi-Fi متصل شده و هر ۱۰ ثانیه دادههای آب و هوا را دریافت خواهد کرد. شما دما، رطوبت و شرایط آب و هوایی کنونی را بر روی صفحه نمایش LCD خواهید دید. اگر ESP32 نتواند به Wi-Fi متصل شود، یک پیام خطا در نمایشگر مسلسل چاپ خواهد کرد.
به محدودیتهای تماس API توجه داشته باشید تا از مسدود شدن از خدمات OpenWeatherMap جلوگیری کنید. اگر با مشکلی در بازیابی دادهها مواجه شدید، کلید API خود را بررسی کنید و اطمینان حاصل کنید که شِفر (کود) شهر و کشور شما بهدرستی مشخص شده است (در ویدیو در ساعت ۱۵:۴۵).
زمانبندی ویدیو
- ۰۰:۰۰ شروع
- ۲:۰۰ معرفی پروژه
- اکانت OpenWeather 5:04
- ۶:۱۱ سیمکشی
- شِفر (کود) آردوینو در ساعت ۸:۰۵ توضیح داده شده است
- ۱۴:۱۳ جیسون عناصر در شِفر (کود)
- ۲۰:۲۳ انتخاب برد ESP32 و پورت COM در Arduino IDE
- ۲۲:۰۵ نمایش ایستگاه هواشناسی بر روی LCD1602
- نمایش ایستگاه آب و هوا روی LCD2004 در ساعت 23:45
Common Course Links
Common Course Files
منابع و مراجع
-
مستنداتآموزش ESP32 43/55- صفحه مستندات SunFounder برای ایستگاه هوایی اینترنت اشیاءdocs.sunfounder.com
فایلها📁
هیچ فایلی موجود نیست.