ESP32 چیست؟
به نظر می رسید ESP32 الان همه جا هست! سادهسازی اتصال با شبکههای Wi-Fi و دستگاههای بلوتوث، به یکی از اجزای اصلی جامعه سازندگان تبدیل شده است. ما در این پست، نگاهی به تاریخچه مختصر ESP32، نحوه شروع، و پشتیبانی ارائه شده می اندازیم.
ESP32 در طیف وسیعی از بردها و تراشههای توسعهدهنده با قابلیت Wi-Fi فراگیر شده است که متکی به سیلیکون از Espressif هستند، یک فروشنده سیلیکون افسانه ای مستقر در چین که در سال ۲۰۰۸ تأسیس شد. اولین محصول آن، یک سیستم وای فای روی تراشه ۲.۴ گیگاهرتزی (SoC)، در سال ۲۰۱۳ به بازار عرضه شد که ESP8089 نام گرفت و برای تبلتها و برنامه های ست تاپ باکس استفاده شد. اما ESP8266 عرضه شده در سال ۲۰۱۴، مورد توجه جامعه سازندگان قرار گرفت.
چشم انداز Espressif بر روی ارائه راه حل های پیشرفته هوش مصنوعی اشیا (AIoT) به بازار از طریق فناوری بی سیم و کم مصرف متمرکز است. ESP8266 این رشته ها را با ارائه یک دستگاه تک تراشه ای با کاربری آسان و همراه با نرم افزار برای برقراری ارتباط از طریق شبکه های Wi-Fi به هم نزدیک کرد.
اگر علاقمند به یادگیری راه انداژی ماژول ESP32 هستید دوره های ویدیویی آن را در مدرسه آنلاین نیراسیستم مشاهده نمایید.
چه چیزی ESP32 را تغذیه می کند؟
در ESP8266 از یک پردازنده ۳۲ بیتی RISC Tensilica Xtensa L106 استفاده شده که این معماری نسبتاً عجیب و غریب به عنوان مالکیت معنوی قابل مجوز (IP)توسط Cadence ارائه شده و طبق یک بیانیه مطبوعاتی از سال ۲۰۰۷، عملکرد بیشتری از نظر Dhrystone MIPS نسبت به Arm Cortex-M3 ارائه می دهد. علاوه بر این، آنها ادعا کردند که هسته با کمترین mW در هر MHz عمل می کند که در برنامه های اینترنت اشیاء (IoT) با باتری جذاب خواهد بود.
اولین بار جامعه سازندگان از این دستگاه در سال ۲۰۱۴ مطلع شدند، Hackaday ماژول جدید وای فای ۵ دلاری را معرفی کرد که از طریق استودیو Seeed به فروش می رسید. این ماژول که با نام ESP-01 شناخته می شد، توسط سازنده شخص ثالث Ai-Thinker که در چین است، ساخته شد. تنها با هشت پین که دو تای آنها یک رابط UART برای کنترل ماژول از طریق دستورات AT ارائه میدهند، ماژول به راحتی با پلتفرم آردوینو ادغام شده و حتی برای بردهای سادهای مانند Arduino Uno اتصال به اینترنت را به ارمغان میآورد. تنها نکته مهم: تمام اسناد به زبان چینی نوشته شده بود. با این حال، این یک مانع جزئی برای جامعه سازندگان بود زیرا داوطلبان به دنبال ترجمه اسناد موجود با استفاده از Google Translate و نوشتن کتابخانه های نرم افزاری بودند.
چگونه ESP32 می تواند ارزان باشد؟
زیبایی ماژول های مبتنی بر ESP8266 ( شکل ۱) برای ساخت یک ماژول WIFI به تعداد محدودی از اجزای نیاز داشت. با فرض اینکه منبع ۳.۳ ولت داشته باشیم ، طرح ها فقط به تعداد انگشت شماری مقاومت و خازن، آنتن PCB، فلاش سریال QSPI خارجی و یک کریستال که بین ۲۴ تا ۵۲ مگاهرتز کار می کرد نیاز داشت. هنگام روشن شدن، ESP8266 سیستم عامل خود را از فلش بیرون کشید و سپس آن را در SRAM داخلی از جایی که اجرا می شود کپی می کند.
البته واضح بود که ماژول ها نیز راه حل کاملی برای میکروکنترلر هستند. این پردازنده دارای ورودی/خروجی های همه منظوره (GPIO)، خروجی های مدوله شده با عرض پالس (PWM)، مبدل آنالوگ به دیجیتال (ADC) و همچنین تمام رابطهای سریال استاندارد بود. بنابراین، چرا باید برای یک آردوینو یا یک پردازنده دیگر کد بزنید در حالی که می توانید واسطه ها را حذف کرده و به سادگی خود ESP8266 را راه اندازی کنید؟
در پایان سال ۲۰۱۴، Espressif کیت توسعه نرم افزار (SDK) را منتشر کرد که به کاربر امکان ساخت کدهایی را می داد که در کنار نرم افزار Wi-Fi اجرا می شد. در نهایت، برنامه های کاربردی از نوع اینترنت اشیا می توانستند به صورت مستقل روی ماژول هایی مانند ESP-01 اجرا شوند. SDK در دو نوع عرضه شد: نسخه ای مبتنی بر سیستم عامل بلادرنگ FreeRTOS و دیگری که به تماس ها و تایمرها متکی بود تا اطمینان حاصل شود که کد کاربر زمان پردازش را به طور عادلانه با stack نرم افزار Wi-Fi به اشتراک می گذارد. با توجه به دیتاشیت، توسعه دهندگان حدود ۵۰ کیلوبایت حافظه برای کد خود باقی گذاشته اند.
محصولات جدید ESP32 وارد بازار شدند
از آن زمان، Espressif بر موفقیت SoC های بی سیم خود پایدار است. آنها نه تنها سیلیکون را تامین می کنند، بلکه طیف وسیعی از ماژول های آماده برای استفاده را نیز ارائه می دهند که سازندگان و توسعه دهندگان را قادر می سازد تا برنامه های خود را به سرعت نمونه سازی کنند.
در حال حاضر، دستگاه های سری ESP32 دارای یک ریزپردازنده دو هسته ای Tensilica Xtensa LX6 ، ۳۲بیتی هستند. با ۴۸ پین، ۵۲۰ کیلوبایت SRAM و برای برخی از دستگاه ها بین ۴ تا ۸ مگابایت حافظه فلش ارائه میدهند. WIFI 2.4 گیگاهرتزی و بلوتوث/بلوتوث LE نسخه ۴.۲ در قسمت اتصال موجود است. یک پردازنده کمکی بسیار کم مصرف از نوع (ULP ) که اساساً یک ماشین حالت متناهی (FSM) که قابلیت برنامه نویسی را دارد، نیز موجود است. این می تواند برخی از لوازم جانبی را در حالت خواب نظارت کند که برای تشخیص سیگنال های بیداری از حسگرها در برنامه های کاربردی با باتری، ایده آل است.
در سری ESP32-S2 با ۵۶ پین (تک هسته ای) و ESP-S3 (دو هسته ای)، توسعه دهندگان از پردازنده ۳۲ بیتی Xtensa LX7 سود می برند. این هسته ۲۴۰ مگاهرتز دستورالعملهای برداری و برای کدهای مورد استفاده توسط شبکههای عصبی و پردازش سیگنال شتاب ارائه میدهد. هر دو Wi-Fi و بلوتوث روی برد هستند، اگرچه دومی به نسخه ۵.۰ ارتقا یافته است. با اضافه شدن USB (OTG) و ماژول TWAI™ یا Two-Wire Automotive Interface، لوازم جانبی رابط کما بیش یکسان باقی می مانند. دومی با ISO 11898-1 سازگار است که با نام CAN شناخته می شود. همچنین امنیت با راهاندازی امن مبتنی بر RSA، رمزگذاری فلش و شتابدهنده کد احراز هویت پیام مبتنی بر هش (HMAC) افزایش مییابد.
اخیراً، این خط تولید شاهد معرفی پردازنده های RISC-V بوده است. در حالی که ESP32-C3 فقط یک گزینه تک هسته ای و عملکرد تا ۱۶۰ مگاهرتز را ارائه می دهد (شکل ۲)، عملکرد ۲.۵۵ CoreMark/MHz آن اساساً با Xtensa LX7 سری ESP32-S یکسان است. در غیر این صورت، از نظر تجهیزات جانبی و حافظه، مجموعه ویژگی تقریباً با ESP32-S مطابقت دارد اما تعداد پین ها به ۳۲ محدود می شود.
ساخت برنامه های ESP32
به عنوان یک توسعه دهنده، طیف گسترده ای از گزینه ها در مورد ساختار کد برنامه در دسترس هستند. برای سازندگان با تجربه در آردوینو، سادهترین مکان برای شروع نصب Arduino IDE است. به سادگی مکان بسته های Arduino-ESP32 را از طریق File -> Preferences اضافه کنید، سپس ESP32 را از Tools -> Board -> Board Manager انتخاب کنید (شکل ۳). پس از تکمیل، مجموعهای از نمونهها در زیر File -> Examples مانند هر پلتفرم استاندارد آردوینو نشان داده میشوند. سورس کد با پسوند استاندارد ‘.ino’ ذخیره می شود و برنامه شما در توابع setup و loop که به آنها عادت دارید نوشته می شود.
یکی از مشکلاتی که در توسعه میکروکنترلرهای معمولی وجود دارد، نیاز به کامپایل و سپس دانلود کد، قبل از بررسی عمل کرد آن هست. این می تواند به زمان زیادی نیاز داشته باشد و فقط به این دلیل که یک خط کد را تغییر داده اید. اگر می خواهید یک تجربه کدنویسی بهتری داشته باشید، ممکن است بخواهید به گزینه BASIC ارائه شده توسط Annex WiFi RDS نگاه کنید که یک محیط توسعه مبتنی بر مرورگر وب است. به این صورت که محیطی در دستگاه ESP32 مورد نظر شما دانلود می شود که پس از فلش کد با ابزار آن به Wi-Fi شما متصل می شود. پس از اتصال، می توانید کد خود را با استفاده از مرورگر انتخابی خود نوشته و به دلیل اینکه به جای کامپایل تفسیر می شود، کد شما به محض اتمام کار اجرا می شود.
البته، نمیتوانید از پشتوانه زیاد اشخاص ثالث برای ایجاد راهحلهای اینترنت اشیا چشمپوشی کنید. Espressif همراه با آمازون AWS یک راه حل کامل هوش مصنوعی برای تشخیص تصویر و پردازش صدا با برد توسعه ESP-EYE خود ارائه می دهد. یا اگر به دنبال پشتیبانی آمازون الکسا هستید، بردهای ESP32-Vaquita نیز بر اساس سری ماژول های ESP32-WROVER-E وجود دارند.
چه چیزی خواهید ساخت؟
موفقیت Espressif با تراشه ها و ماژول های ESP32 خود در چنین مدت زمان کوتاهی بیش از حد چشمگیر بوده است. با مقایسه آنها با برخی از فروشندگان معتبر MCU اروپایی و آمریکایی، به نظر می رسد که آنها با مستندات خوب به جزئیات توجه واقعی نشان داده اند، نرم افزار لازم را برای عملی کردن دستگاه های جانبی و طیف قابل توجهی از نمونه های کاربردی را نیز ارائه دادهاند.
و ما فقط در مورد یک LED چشمک زن و خواندن یک ADC صحبت نمی کنیم – برخی از برنامه ها حتی برای یک تیم مهندسی حرفه ای نیز دشوار و چالش برانگیز هستند. چیزی که برای سازندگان جالب است، گستره پلتفرمهای توسعه موجود برای توسعه کد هست که همراه با جامعه بزرگی که پشت این تراشههای کوچک قدرتمند قرار دارد. بنابراین، صرف نظر از آنچه می خواهید بسازید، اگر به اتصال بی سیم نیاز دارید، با ESP32 خیلی اشتباه نخواهید کرد.