مدتی هست که در حال تولید یک برد هوش مصنوعی هستم. البته منظورم بردی نیست که درون خودش محاسبات ماشینی، یادگیری عمیق و این چیزها رو انجام بده، بلکه بردی که بتونه به هوش مصنوعیهای مختلف متصل بشه.
ممکنه الان فکر کنید که خب، این که سادهست! یه برد رزبری پای میگیریم، لینوکس میریزیم روش و با یه API به OpenAI یا هر سرویس دیگهای متصل میشیم و کار تمومه. ولی نه، به این سادگیها هم نیست!
هزینههای بردی مثل رزبری پای برای کاری که من میخوام انجام بدم وحشتناک بالاست. وقتی ابزارهایی مثل ماژول سیمکارت 4G هم بهش اضافه کنیم، قیمت نهایی محصول میره تو مایههای ۱۲ میلیون تومن که اصلاً منطقی نیست. پس چیکار کنیم؟
اینجاست که باید بریم سراغ یه گزینه ارزونتر و در دسترستر: ESP32، برد برندهی شرکت چینی Espressif Systems در حوزهی اینترنت اشیا.
حالا شاید بگید که آموزشهای ESP32 توی اینترنت فراوونه، ولی مشکل اینجاست که بیشترشون با IDE آردوینو نوشته شدن که برای کار من افتضاحه! چرا؟ چون این IDE برای مصارف آموزشی طراحی شده و انجام همزمان کارهایی مثل خواندن از میکروفن، مخابره به سرور و نمایش دادهها روی صفحهنمایش از توانش خارجه و رسماً مرخصش میکنه.
پس چاره چیه؟ باید بریم سراغ ابزارهای توسعهی رسمی ESP یعنی ESP-IDF و از زبان برنامهنویسی قدرتمند و زیبای C++ استفاده کنیم.
حالا شاید بگید که "خب C++ که همه تو دانشگاه یاد گرفتن، مثل خیار میزنی دیگه!" ولی نه عزیز، اینطوری نیست! اون چیزی که تو دانشگاه یاد دادن یه چیز مقدماتی بود. اینجا ما با مدیریت حافظه، تعامل مستقیم با سختافزار، مشکلات همزمانی، چندنخی (Multithreading) و کلی ماجرای دیگه سروکار داریم. خلاصه که کارمون ساخته است !
اما بریم سراغ خود برد. خوشبختانه ESP32 تو بازار مدلهای مختلفی داره، ولی من برد توسعهی LilyGO Camera Plus رو گرفتم که خیلی خفنه! این مدل هم میکروفن داره، هم دوربین و هم صفحهنمایش روش مونتاژ شده.
حالا چالش بعدی: محیط توسعه روی مکبوک M1. سیستمعامل مک یه POSIX-based OS هست، یعنی دستوراتش شبیه یونیکسه و یه هستهی هیبریدی داره. پس باید ابزارهای مختلفی رو نصب کنیم.
من همیشه از پکیج منیجر Homebrew روی مکم استفاده میکنم که خیلی کامله و همهچیزو راحت نصب میکنه. پس بریم سراغ ابزارهایی که برای کدنویسی روی این ماژول نیاز داریم:
ابزار CMake: اگه نمیشناسید، الان بشناسید! یه ابزار بیلد (Build System) که فرایند کامپایل و تولید نهایی نرمافزار رو کنترل و اجرا میکنه. برای برنامههای بزرگ و چندکتابخانهای ضروریه.
ابزار DFU-Util: یه سری ابزار کمکی برای ارتباط با پروگرمرهای سختافزاری، سریال و اینطور چیزها.
ابزار Ninja: یه ابزار بیلد مثل CMake که شرکت Espressif در بعضی جاها ازش استفاده کرده، پس باید اینم نصب کنیم.
برای نصبشون باید این دستور رو اجرا کنیم :
brew install cmake ninja dfu-util
خب تا اینجا کافیه نصبشون یکم طول میکشه و مصرفی که اولین نوشته من در این حوزه رو خوندید حتما نظر بزارید و منتظر قسمت بعدی باشید.