روشهای کلی راه اندازی بردهای esp
شناخت و بررسی بردهای ESP تمامی ندارد! یکی از بردها و تراشههای بسیار کاربردی در زمینه اینترنت اشیا و بسیاری سناریوهای تجاری، بردهای خانواده ESP هستند. در این پست چند روش معمول و استاندارد را برای پروگرام کردن، برنامه نویسی و راه اندازی از بردهای ESP را معرفی و بررسی میکنیم. همانطور که پیشتر صحبت کردیم بردهای ESP مدلهای مختلفی دارند. هر مدل هم در نسخههای مختلفی تولید میشود. این دسته بندی ریز و دقیق کمک میکند که به هنگام پیاده سازی یک پروژه بتوانید دقیقترین گزینهها را انتخاب کنید.
ولی معمولترین مدل برای پروژههای تجاری تراشه ESP12 است. که در پست قبلی راجع به سه نسخه از این مدل صحبت کردیم. در ادامه این مطلب با بلاگ دانشجو کیت همراه باشید. همچنین اگر این مطلب برای شما ارزشمند بود و به اطلاعاتتان اضافه کرد، آنرا با دیگران به اشتراک بگذارید تا دانش فنی مدیرها و کاربران فارسی زبان در این حوزه و IoT رشد پیدا کند.
کمی درباره تراشههای خانواده ESP
تراشههای ESP (Espressif Systems) مجموعهای از میکروکنترلرهای مبتنی بر معماری Xtensa است که برای اینترنت اشیاء (IoT) و برنامهریزی میکروکنترلرها طراحی شدهاند. تراشههای ESP برای کاربردهای مختلفی مانند سنسورها، کنترلرهای دستگاهها، سیستمهای خانه هوشمند و سیستمهای نظارت و کنترل استفاده میشوند. معروفترین تراشههای ESP شامل ESP8266 و ESP32 هستند.
ESP8266 تراشهای کوچک با هزینه پایین است که قدرت پردازش محدودی دارد اما از قابلیت اتصال به شبکههای Wi-Fi برخوردار است. ESP32 تراشهای قدرتمندتر است که قابلیتهایی مانند Wi-Fi، بلوتوث، پردازش چند هستهای و حافظه بیشتر را داراست. هر دو تراشه امکانات و سختافزارهای مختلفی را برای برنامهنویسان فراهم میکنند. تراشههای ESP به همراه کتابخانهها و ابزارهای متنوعی که برای آنها توسعه داده شدهاند، برنامهریزی و توسعه برنامههای IoT را آسان میکنند. آردوینو (Arduino)، Micropython و IDF (IoT Development Framework) از جمله محیطها و زبانهای برنامهنویسی معروفی هستند که برای توسعه برنامههای ESP استفاده میشوند. تراشههای ESP به دلیل سادگی استفاده، هزینه مناسب و امکانات گستردهای که ارائه میدهند، در صنعت IoT و پروژههای هوشمند محبوبیت زیادی پیدا کردهاند.
تراشههای ESP چگونه پروگرام میشوند؟
کلیهی تراشههای خانواده ESP دارای رابط سریال هستند. رابط سریال یا UART نوعی ارتباط دو سیمه است که با RX و TX مشخص میشوند. توسط ارتباط سریال میتوان فرامین و دستورهای برنامه نویسی شده را روی تراشههای ESP بارگذاری کرد. از اینرو در نظر داشته باشید که مهمترین نکته در برنامه نویسی بردهای خانواده ESP در اختیار داشتن رابط سریال است. این رابط سریال را میتوانید توسط یک مبدل USB به UART یا کابلهای سریال به USB فراهم کنید. یا اینکه از ارتباط سریال بردهای میکروکنترلر مانند آردوینو استفاده کنید. به این روش دستورهای مد نظر را میتوانید به صورت مستقل روی تراشههای ESP بارگذاری کنید. البته میتوانید در کنار این تراشهها از بردهای میکروکنترلر هم استفاده کنید. در این حالت برنامهی اصلی روی برد میکروکنترلر اجرا میشود و فقط برخی از فرامین توسط آن به تراشه ESP منتقل میشوند.
در مرحله بعدی به یک محیط برنامه نویسی نیاز دارید. این محیط میتواند Arduino IDE یا هر محیط برنامه نویسی دیگری باشد. پس از اینکه برنامه مورد نظر را نوشتید. همانطور که در پستهای قبلی توضیح دادیم. میتوانید از دستورات AT Command یا استفاده از کتابخانهها برای پروگرام کردن تراشههای ESP استفاده کنید. پس ضمن اینکه ارتباط سریالی را با تراشه ESP برقرار میکنید. از طریق یک محیط برنامه نویسی IDE میتوانید دستورها و فرامین مورد نظر را روی تراشه آپلود کنید. اگر از محیط برنامه نویسی آردوینو استفاده میکنید، به زبان C++ میتوانید برنامهی مورد نظر را نوشته و از طریق ارتباط سریالی روی تراشه آپلود کنید. البته تراشههای ESP با تغییر فریمور قابلیت برنامه نویسی به زبان میکروپایتون را هم دارا هستند.
زبانهای برنامه نویسی و راه اندازی بردهای ESP
زبانهای برنامهنویسی مختلفی برای تراشههای ESP وجود دارند. به عبارت دیگر با توجه به اینکه تراشههای خانواده ESP قابلیت MCU شدن را هم دارا هستند. منظور این است که تراشه ESP نقش میکروکنترلر را هم دارد. میتوانید به چند زبان مختلف روی آنها کدنویسی کنید. در ادامه به برخی از زبانهای معروف برای برنامهنویسی تراشههای ESP اشاره میکنیم.
1- زبان برنامه نویسی C/C++: زبان C و C++ از زبانهای برنامهنویسی پرطرفداری برای توسعه برنامههای ESP هستند. با استفاده از زبانهای C/C++ میتوان به صورت مستقیم با سطح پایین سختافزار تعامل کرده و کنترل کامل بر عملکرد تراشه را داشت.
2- زبان برنامه نویسی Micropython: میکروپایتون یک زبان برنامهنویسی مبتنی بر Python است که برای میکروکنترلرها و تراشههای محدود منابع طراحی شده است. با استفاده از Micropython میتوانید برنامههایی را برای ESP توسعه داده و از قابلیتهای زبان Python در زمینه برنامهنویسی استفاده کنید.
3- برنامه نویسی در محیط Arduino: آردوینو یک سکوی برنامهریزی متنباز است که برای توسعه سریع و آسان برنامههای میکروکنترلرها مورد استفاده قرار میگیرد. با استفاده از بردهای ESP و محیط برنامهریزی Arduino میتوانید برنامههایی برای کنترل و ارتباط با دستگاههای مختلف توسعه دهید. در این IDE میتوانید نوع برد ESP و نسخهی دقیق آنرا مشخص کنید.
4- زبان برنامه نویسی Lua: لوآ یک زبان اسکریپتی کوچک و سبک است که برای امبدد سیستمها و محیطهای محدود منابع طراحی شده است. تراشههای ESP از زبان Lua پشتیبانی میکنند و با استفاده از آن میتوانید برنامههایی برای این تراشهها توسعه دهید.
تمام این زبانها ابزارها و کتابخانههای مختلفی را برای توسعه برنامههای ESP ارائه میدهند و به برنامهنویسان امکان کنترل سختافزار و استفاده از قابلیتهای مختلف تراشه را میدهند. انتخاب زبان برنامهنویسی به وابستگی به تجربه شما، نیازهای پروژه و سطح کنترلی که میخواهید بر روی سختافزار داشته باشید، متفاوت خواهد بود.
در کنار تراشههای ESP به چه میکروکنترلری نیاز داریم؟
تراشههای ESP در واقع میکروکنترلرهایی هستند که در خودشان قابلیتهای سختافزاری و برنامهریزی را دارند و به صورت یکپارچه قابل استفاده هستند. بنابراین، برای استفاده از تراشههای ESP نیاز به یک میکروکنترلر جداگانه ندارید. تراشههای ESP برای کاربردهای اینترنت اشیا (IoT) و اتصال به شبکهها طراحی شدهاند و مجهز به واحد بیسیم (Wi-Fi یا بلوتوث) هستند تا امکان ارتباط بیسیم را فراهم کنند. با استفاده از تراشههای ESP، میتوانید برنامههایی برای کنترل و ارتباط با دستگاهها و سرویسهای اینترنتی توسعه دهید. با این حال اگر نیاز دارید در کنار تراشههای ESP یک میکروکنترلر مجزا در پروژهتان استفاده کنید، میتوانید از بردهای میکروکنترلری مختلف استفاده کنید. بردهای میکروکنترلری معروفی مانند Arduino، STM32، PIC، AVR و ... در این زمینه مناسب هستند. با استفاده از این بردها، میتوانید وظایف مربوط به سنسورها، عملگرهای خارجی، موتورها و سایر اجزای سختافزاری را بر عهده بگیرید و با استفاده از تراشههای ESP برای ارتباط بیسیم و اتصال به شبکهها استفاده کنید. با ترکیب این دو نوع برد، میتوانید پروژههایی را با قابلیتهای گستردهتر و کاربردیتر ایجاد کنید. در ادامه چند نمونه از بردهای امبدد مناسب برای کارکردن در کنار تراشههای ESP را معرفی میکنیم.
- Arduino Uno: برد Arduino Uno یکی از معروفترین و پرکاربردترین بردهای میکروکنترلری است که قابلیتهای گستردهای در زمینه کاربردهای الکترونیکی دارد. با استفاده از کتابخانههای ESP، میتوانید آن را به صورت همزمان با ESP استفاده کنید.
- Arduino Mega: برد Arduino Mega دارای پینها و منابع بیشتری نسبت به Arduino Uno است. این برد مناسب برای پروژههایی است که نیاز به تعداد بیشتری پورتها و منابع دارند.
- Raspberry Pi: اگر نیاز به یک سیستم کامل تر است که علاوه بر میکروکنترلر، قابلیتهای کامپیوتری و عملکرد سیستمی دیگر نیز داشته باشد، میتوانید از بردهای Raspberry Pi استفاده کنید. Raspberry Pi به عنوان یک کامپیوتر تک بردی با سیستم عامل لینوکس و قابلیتهای شبکهای و اتصال به اینترنت، با تراشه ESP ترکیب میشود و میتوانید برنامههای کاربردی IoT پیچیدهتر را پیادهسازی کنید.
- STM32: سری بردهای STM32 از شرکت STMicroelectronics با میکروکنترلرهای قدرتمند ARM Cortex-M است. این بردها عملکرد بالا و قابلیتهای گستردهای دارند و میتوانند در پروژههایی که نیاز به پردازش سریع داده و کنترل پیچیده دارند، مورد استفاده قرار بگیرند.
- PIC: بردهای میکروکنترلری سری PIC از شرکت Microchip با میکروکنترلرهای کوچک و قدرتمند است. این بردها مناسب برای کاربردهای الکترونیکی ساده تا متوسط و پروژههایی که نیاز به کنترل سیگنالها و ارتباط با سایر دستگاهها دارند، هستند.
- Arduino Due: برد Arduino Due با میکروکنترلر ARM Cortex-M3 بهصورت همزمان با تراشه ESP قابل استفاده است. این برد دارای سرعت بالا، پورتهای بیشتر و حافظه بزرگتری نسبت به بردهای Arduino Uno است.
- BeagleBone Black: یک برد تک بردی قدرتمند است که بر پایه پردازنده ARM Cortex-A8 از شرکت Texas Instruments ساخته شده است. این برد دارای امکانات شبکهای و عملکرد سیستمی بیشتری نسبت به تراشه ESP دارد و برای پروژههای IoT پیچیده و برنامههای کاربردی سیستمی قدرتمندتر مناسب است.
- Teensy: بردهای Teensy از شرکت PJRC با میکروکنترلرهای ARM Cortex-M قدرتمند است. این بردها دارای اندازه کوچک، سرعت بالا و قابلیتهای گستردهای هستند و برای پروژههایی با نیاز به عملکرد سریع و کاربردهای مختلف در صنعت، هنر و سایر حوزهها مناسب هستند.
- Particle Photon: بردهای Particle Photon دارای میکروکنترلر STM32 و قابلیت اتصال به اینترنت از طریق شبکه Wi-Fi هستند. آنها برای پروژههای IoT و ارتباط با سرورهای ابری مورد استفاده قرار میگیرند.
این تنها چند نمونه از بردهای میکروکنترلری هستند که میتوانید در کنار تراشه ESP استفاده کنید. نوع برد مورد نیازتان بستگی به نیازها و سناریوهای خاص پروژه شما دارد. در نهایت، انتخاب برد میکروکنترلری مناسب در کنار تراشه ESP بستگی به نیازها و خواستههای پروژه شما دارد. برای هر برد، به مشخصات فنی و منابع موجود برای آن مراجعه کرده و نیازهای خاص خود را در نظر بگیرید تا انتخابی مناسب داشته باشید. این موارد گزینههایی بود که ما جمع آوری کردیم و به این معنی نیست که با بردهای میکروکنترلر دیگر سازگاری وجود نداشته باشد.
تجهیزات مورد نیاز برای پروگرام کردن تراشههای ESP
همانطور که پیشتر اشاره کردیم. برای پروگرام کردن تراشههای ESP از رابط سریال UART بایستی استفاده شود. بنابراین ابتداییترین گزینه برای پروگرام کردن آن مبدل USB به سریال است. اما برخی از تراشههای ESP از جمله ESP12 یا تراشههای ESP32 در پکیجهای SMD طراحی و تولید میشوند. از اینرو برای این موارد خاص به مبدلهای PCB هم نیاز خواهید داشت. در ادامه لیست وسایل و تجهیزات مورد نیاز برای پروگرام کردن تراشههای ESP را معرفی میکنیم.
1- مبدل USB به سریال
انتخابهای متنوعی برای این تجهیز وجود دارد. از آنجایی که تراشههای مبدل USB به سریال متنوع هستند. ماژولهای متنوعی هم با این موارد طراحی و تولید شده است. از جمله انتخابهای این دسته کالایی میتوان به مبدل CH340، مبدل CP2102، مبدل FT232، مبدل PL2303 و... اشاره کرد. تمامی این موارد به صورت ماژول و یا به صورت کابل در فروشگاه دانشجو کیت و در شاخه مبدل پروتکل در دسترس هستند. در تصویر زیر چند نمونه مبدل USB به UART ساخت WaveShare را مشاهده میکنید.
2- بردهای راه انداز و مبدل PCB
همانطور که پیشتر اشاره شد میتوانید از بردهای راه انداز و مبدل PCB برای دسترس پذیری پایههای تراشههای ESP استفاده کنید. به عنوان مثال تراشه ESP8266-01 با توجه به اینکه دو ردیف چهارتایی پین هدر دارد، نمیتواند به صورت مستقیم روی برد بورد قرار گیرد. بنابراین برای این مورد نیازمند برد تبدیل ESP01 مدل CIY-M063 برای برد بورد خواهید بود. یا برای بردهای ESP12 که دارای پایههای SMD هستند به مبدل برد راه انداز ESP8266 تبدیل SMD به DIP نیاز خواهید داشت. برای تراشههای ESP32 هم به همین مبدل PCB نیاز خواهید داشت. با توجه به اینکه تعداد پایههای ESP32 بیشتر است، مبدل آن هم متفاوت است و لحیم کاری پیچیدهتری خواهد داشت. این مبدل دارای پین هدر نری استاندارد است و میتوانید به سادگی اتصالات را توسط کابلهای جامپر پیاده سازی کنید. در تصویر زیر برد ESP12 را به همراه برد مبدل PCB مشاهده میکنید که به سادگی روی برد بورد قرار گرفته شده است.
بررسی حافظه داخلی مدلهای مختلف ESP
بردهای خانواده ESP به واسطه حافظه داخلی که دارند بسیار حائز اهمیت هستند. در کنار تراشه ESP معمولا یک تراشه حافظه فلش از مدل W25Qxxx قرار دارد. این تراشه بسته به مدلی که دارد میزان حافظه مشخص دارد. در ادامه، حافظه داخلی مدلهای مختلف تراشههای ESP که بایستی به صورت استاندارد شامل مقادیر معرفی شده باشند، را لیست کردهایم.
حافظه داخلی بردهای ESP مدل ESP8266
ESP8266-01: حافظه فلش 1 مگابایت (8 مگابیت)
ESP8266-01s: حافظه فلش 8 مگابایت (64 مگابیت)
ESP8266-12E: حافظه فلش 4 مگابایت (32 مگابیت)
ESP8266-12F: حافظه فلش 4 مگابایت (32 مگابیت)
ESP8266-12S: حافظه فلش 4 مگابایت (32 مگابیت)
حافظه داخلی بردهای ESP مدل ESP32
ESP32-WROOM-32: حافظه فلش 4 مگابایت (32 مگابیت)
ESP32-WROOM-32D: حافظه فلش 4 مگابایت (32 مگابیت)
ESP32-WROVER: حافظه فلش 4 مگابایت (32 مگابیت)
ESP32-WROVER-B: حافظه فلش 4 مگابایت (32 مگابیت)
ESP32-PICO-D4: حافظه فلش 4 مگابایت (32 مگابیت)
ESP32-S2-WROOM: حافظه فلش 4 مگابایت (32 مگابیت)
ESP32-S2-WROVER: حافظه فلش 4 مگابایت (32 مگابیت)
توجه داشته باشید که حافظه فلش در تراشههای ESP مورد استفاده برای ذخیره برنامهها و دادههای کاربری است. همچنین، در برخی مدلها قابلیت افزایش حافظه با استفاده از کارت حافظه (SD Card) نیز وجود دارد. البته این اطلاعات قطعی نیستند ممکن است تراشهی حافظه فلش هر مدل توسط تولید کننده از نوع متفاوتی استفاده شده باشد. ولی این مقادیری که اشاره شد به صورت استاندارد هستند. بهترین گزینه کسب اطلاعات از فروشنده قبل تامین کالاهاست.
راهکار افزایش پایههای GPIO تراشههای ESP
راهکار افزایش پایههای GPIO در تراشههای ESP شامل استفاده از ماژولها و تراشههای الحاقی میشود. بستگی به اینکه چه پایههایی در پروژه نیاز است و یا چه میزان نیازمند افزایش پایهها هستیم، گزینههای مختلفی را باید به عنوان الحاقی انتخاب کنید. در ادامه، چند راهکار معمول برای افزایش پایههای GPIO تراشههای ESP را توضیح میدهیم.
- استفاده از ماژولهای GPIO Expanders: ماژولهای GPIO Expanders میتوانند پایههای GPIO را افزایش دهند. این ماژولها معمولاً از رابطهای I2C, SPI یا Serial برای ارتباط با تراشه استفاده میکنند.
- استفاده از ماژولهای Multiplexer (MUX): ماژولهای Multiplexer به شما امکان میدهند تا با استفاده از تعداد کمی پایه GPIO، بیش از یک دستگاه را به تراشه ESP متصل کنید. این ماژولها معمولاً از رابطهای I2C, SPI یا Serial برای ارتباط با تراشه استفاده میکنند.
- استفاده از ماژولهای آنالوگ به دیجیتال ADC: برای تبادل ارتباط بین میکروکنترلر و دیگر دستگاهها به درگاه دیجیتال یا آنالوگ نیاز است. برای تبدیل این موارد میتوانید از مبدل ADC یا همان آنالوگ به دیجیتال استفاده کرد.
- استفاده از تراشههای الحاقی (External Chips): برخی تراشههای الحاقی مانند تراشههای shift register و I/O expander در افزایش پایههای GPIO به کمک پروتکلهای SPI یا I2C بسیار مفید هستند.
این راهکارها به شما امکان میدهند تا پایههای GPIO را در تراشههای ESP افزایش داده و تعداد دستگاهها و سنسورهای متصل به آن را بیشتر کنید. قبل از استفاده از هر راهکاری، دقت کنید که تراشههای الحاقی و ماژولها با تراشه ESP سازگاری داشته باشند و پروتکل ارتباطی آنها با ESP سازگاری داشته باشد. همچنین، باید دقت کنید که استفاده از تراشههای الحاقی برای افزایش پایههای GPIO نیازمند برنامهنویسی و تنظیمات مناسب است.
از چه نرم افزارهایی برای راه اندازی بردهای ESP استفاده کنیم؟
برای ارسال دستورات به تراشههای ESP میتوانید از نرمافزارهایی مانند Arduino IDE و PlatformIO استفاده کنید. این نرمافزارها ابزارهای برنامهنویسی حاکم بر محیط توسعه میکروکنترلرها را فراهم میکنند و به شما اجازه میدهند کدهای برنامهنویسی را بر روی تراشههای ESP بارگذاری و اجرا کنید. در ادامه کلیه انتخابهای مناسب این بردهای را معرفی میکنیم.
1- Arduino IDE: یک محیط توسعه متنباز است که ابزارهایی برای برنامهنویسی تراشههای ESP فراهم میکند. شما میتوانید کدهای برنامهنویسی خود را با استفاده از زبان C/C++ در Arduino IDE بنویسید و به تراشه ESP بارگذاری کنید.
2- PlatformIO: یک محیط توسعه متقابل است که برای برنامهنویسی تراشههای ESP و سایر میکروکنترلرها مناسب است. این محیط توسعه مبتنی بر پلاگین است و ابزارهای کاربردی برای برنامهنویسی، اجرا و پیکربندی تراشههای ESP را فراهم میکند. از طریق PlatformIO، شما میتوانید کدهای برنامهنویسی خود را با استفاده از زبان C/C++ یا میکروپایتون بنویسید و به تراشه ESP بارگذاری کنید.
3- ESP-IDF (Espressif IoT Development Framework): این یک محیط توسعهٔ رسمی است که توسط شرکت Espressif برای برنامهنویسی تراشههای ESP ارائه شده است. این محیط ابزارها، کتابخانهها و منابع بسیاری برای توسعه برنامههای پیشرفته در ESP فراهم میکند. با استفاده از این محیط توسعه، میتوانید به طور مستقیم با APIها و کتابخانههای Espressif برای برنامهنویسی تراشههای ESP کار کنید.
4- Mongoose OS: یک سیستم عامل کامل برای اینترنت اشیا است که محیطی مناسب برای برنامهنویسی تراشههای ESP فراهم میکند. این سیستم عامل با استفاده از زبان C و Lua قابلیت برنامهنویسی را فراهم میکند.
5- Arduino Core for ESP32: نسخهای از Arduino IDE است که برای برنامهنویسی تراشههای ESP32 ایجاد شده است. این محیط توسعهٔ آسان برای کار با ESP32 و کتابخانههای آردوینو فراهم میکند.
6- Zerynth: یک پلتفرم برنامهنویسی کامل برای توسعه اینترنت اشیا است که میتواند بر روی تراشههای ESP اجرا شود. این پلتفرم از زبانهایی مانند Python و C برای برنامهنویسی پشتیبانی میکند.
7- FreeRTOS: یک سیستم عامل برای میکروکنترلرها است که به طور معمول در تراشههای ESP32 استفاده میشود. این سیستم عامل قابلیت مدیریت چند وظیفه را فراهم میکند و برای پروژههای پیچیدهتر مناسب است.
8- Micropython: یک زبان برنامهنویسی مبتنی بر پایتون است که برای میکروکنترلرها بهینه شده است. با استفاده از Micropython، میتوانید به طور مستقل کدهای پایتونی خود را بر روی تراشههای ESP اجرا کنید. این گزینه برای برنامهنویسانی که با زبان پایتون آشنایی دارند و دنبال یک زبان سطح بالا و ساده برای برنامهنویسی ESP هستند مناسب است.
9- Lua: یک زبان برنامهنویسی سبک و قابل توسعه است که برای تراشههای ESP نیز پشتیبانی میشود. با استفاده از زبان برنامهنویسی Lua، میتوانید کدهای ساده و سریع را برای تراشههای ESP بنویسید و اجرا کنید. این گزینه مناسب برای برنامهنویسانی است که به دنبال یک زبان ساده و کوچک برای برنامهنویسی ESP هستند.
تمامی این نرم افزارها و محیطها دارای ویژگیهایی مانند سازگاری با تراشههای ESP، ابزارهای مفید برای کدنویسی، کامپایل و بارگذاری کد، پشتیبانی از کتابخانهها و ابزارهای اضافی و دسترسی به ابزارهای پیکربندی و رفع اشکال میباشند. با استفاده از این نرمافزارها، شما میتوانید به راحتی با تراشههای ESP کار کنید و برنامههای خود را پیاده سازی کنید.