و خب این هم از قصه این پروژه :))
چیزی که از این ماجرا یاد گرفتم این بود که همیشه پیچیدهترین یا ترندترین راهحل، بهترین راهحل نیست.
اولین چیزی که به ذهنم رسید OCR و مدلهای Machine Learning بود؛ ولی وقتی مسئله رو دقیقتر شکستم، دیدم با یک فضای کاملا محدود طرفیم: فونت ثابته، تعداد کاراکترها مشخصه، شکل تایلها تغییر نمیکنه و همهچیز قابل پیشبینیه.
اینجا یک راهحل سادهتر مثل Template Matching، هم سریعتر بود، هم دقیقتر، هم سبکتر و هم دردسر کمتری داشت.
بخش جالب دیگه برام این بود که تقریبا هیچکدوم از مشکلات اصلی پروژه، اون جایی نبودن که اول انتظارش رو داشتم.
پیدا کردن Grid یا نوشتن DFS خیلی زودتر از چیزی که فکر میکردم انجام شد؛ ولی یک نقطه کوچک روی حرف «خ»، چند پیکسل سایه گوشه تایل، تفاوت
بزرگترین چالش پروژه هم دقیقا همین بود: ساختن الگوریتمی که روی یک اسکرینشات درست کار کنه زیاد سخت نیست؛ سختی اصلی اینه که روی رزولوشنهای مختلف، حروف مشابه، Thresholdهای متفاوت، محدودیتهای Android 14 و تمام Edge Caseهای ریز همچنان پایدار بمونه.
از نظر فنی، این پروژه باعث شد خیلی بهتر با پردازش تصویر، Connected Componentها، Template Matching، ساختار Trie، Prefix Pruning، MediaProjection و محدودیتهای Overlay در اندروید آشنا بشم.
ولی فارغ از بخش فنی، حسی که نسبت بهش دارم بیشتر از جنس رضایت ساختنه.
این پروژه از یک بیحوصلگی وسط خاموشی دیجیتال و یک بازی رندوم شروع شد و کمکم تبدیل شد به چیزی که چند حوزه مختلف رو به هم وصل میکرد؛ از پردازش تصویر و الگوریتم گرفته تا توسعه اندروید و طراحی یک ابزار واقعی که همون لحظه قابل استفاده بود.
و فکر کنم جذابترین بخش برنامهنویسی برای من دقیقا همینه...
اینکه یک مسئله کاملا معمولی و حتی یکم مسخره رو ببینی، با خودت بگی «میشه براش یه چیزی ساخت»، و چند روز بعد ببینی یک دکمه شناور روی صفحه داری که در چند میلیثانیه ۵۲ هزار کلمه رو زیر و رو میکنه تا کمکت کنه یک نفر ناشناس رو توی یک بازی موبایلی رنده کنی :))
ارزشش رو داشت؟ از نظر منطقی و اقتصادی احتمالا نه چون فقط ۳ ۴ روز ازش استفاده کردم؛ ولی از نظر چیزهایی که یاد گرفتم و لذتی که از ساختنش بردم، قطعا آره...
امیدوارم برای شما هم جالب بوده باشه و مرسی که تا اینجا خوندید این رشته پیام رو و تحمل کردید 😁❤️
چیزی که از این ماجرا یاد گرفتم این بود که همیشه پیچیدهترین یا ترندترین راهحل، بهترین راهحل نیست.
اولین چیزی که به ذهنم رسید OCR و مدلهای Machine Learning بود؛ ولی وقتی مسئله رو دقیقتر شکستم، دیدم با یک فضای کاملا محدود طرفیم: فونت ثابته، تعداد کاراکترها مشخصه، شکل تایلها تغییر نمیکنه و همهچیز قابل پیشبینیه.
اینجا یک راهحل سادهتر مثل Template Matching، هم سریعتر بود، هم دقیقتر، هم سبکتر و هم دردسر کمتری داشت.
بخش جالب دیگه برام این بود که تقریبا هیچکدوم از مشکلات اصلی پروژه، اون جایی نبودن که اول انتظارش رو داشتم.
پیدا کردن Grid یا نوشتن DFS خیلی زودتر از چیزی که فکر میکردم انجام شد؛ ولی یک نقطه کوچک روی حرف «خ»، چند پیکسل سایه گوشه تایل، تفاوت
ک و ك در Unicode یا یک null بیسروصدا از JNI میتونست کل پایپلاین رو خراب کنه.بزرگترین چالش پروژه هم دقیقا همین بود: ساختن الگوریتمی که روی یک اسکرینشات درست کار کنه زیاد سخت نیست؛ سختی اصلی اینه که روی رزولوشنهای مختلف، حروف مشابه، Thresholdهای متفاوت، محدودیتهای Android 14 و تمام Edge Caseهای ریز همچنان پایدار بمونه.
از نظر فنی، این پروژه باعث شد خیلی بهتر با پردازش تصویر، Connected Componentها، Template Matching، ساختار Trie، Prefix Pruning، MediaProjection و محدودیتهای Overlay در اندروید آشنا بشم.
ولی فارغ از بخش فنی، حسی که نسبت بهش دارم بیشتر از جنس رضایت ساختنه.
این پروژه از یک بیحوصلگی وسط خاموشی دیجیتال و یک بازی رندوم شروع شد و کمکم تبدیل شد به چیزی که چند حوزه مختلف رو به هم وصل میکرد؛ از پردازش تصویر و الگوریتم گرفته تا توسعه اندروید و طراحی یک ابزار واقعی که همون لحظه قابل استفاده بود.
و فکر کنم جذابترین بخش برنامهنویسی برای من دقیقا همینه...
اینکه یک مسئله کاملا معمولی و حتی یکم مسخره رو ببینی، با خودت بگی «میشه براش یه چیزی ساخت»، و چند روز بعد ببینی یک دکمه شناور روی صفحه داری که در چند میلیثانیه ۵۲ هزار کلمه رو زیر و رو میکنه تا کمکت کنه یک نفر ناشناس رو توی یک بازی موبایلی رنده کنی :))
ارزشش رو داشت؟ از نظر منطقی و اقتصادی احتمالا نه چون فقط ۳ ۴ روز ازش استفاده کردم؛ ولی از نظر چیزهایی که یاد گرفتم و لذتی که از ساختنش بردم، قطعا آره...
امیدوارم برای شما هم جالب بوده باشه و مرسی که تا اینجا خوندید این رشته پیام رو و تحمل کردید 😁❤️
👏6🔥2👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤🔥1
Armin's Notes 🪴
Photo
این، سری ششم از نُهمین سریِ یک لگوی خیلی باحال و Cozy هست
داستانش از این قراره که ۹ بخش یک خونه رو توی ۹ سِری عرضه کردن و همه اینا قابلیت plug شدن به پارت بعدی / قبلی رو دارن
درست کردنش خیلی راحته و توی کمتر از ۱ ساعت انجام میشه
یه چراغ سقفی داخلش داره که با باتری سکهای کار میکنه و میتونید با پیچوندن لامپ توی هُلدرش چراغ سقفی رو روشن کنید
درکل که حس خیلی خوبی میده و درست کردنش هم کلی باحاله =) میتونید بگیرید و به عنوان یه ایتم دکوراتیو توی خونه ازش استفاده کنید
هم فال و هم تماشا :))
داستانش از این قراره که ۹ بخش یک خونه رو توی ۹ سِری عرضه کردن و همه اینا قابلیت plug شدن به پارت بعدی / قبلی رو دارن
درست کردنش خیلی راحته و توی کمتر از ۱ ساعت انجام میشه
یه چراغ سقفی داخلش داره که با باتری سکهای کار میکنه و میتونید با پیچوندن لامپ توی هُلدرش چراغ سقفی رو روشن کنید
درکل که حس خیلی خوبی میده و درست کردنش هم کلی باحاله =) میتونید بگیرید و به عنوان یه ایتم دکوراتیو توی خونه ازش استفاده کنید
هم فال و هم تماشا :))
🔥3
درود - من نیازمند یاری سبز اکانتهای گیتهابتون هستم 🌱
لطفا اگه براتون امکانپذیره لینک این issue رو باز کنید و پایینش یک 👍 بزنید.
پیشاپیش بابت کمکتون مچکرم🙏
https://github.com/espressif/esp-sr/issues/247
لطفا اگه براتون امکانپذیره لینک این issue رو باز کنید و پایینش یک 👍 بزنید.
پیشاپیش بابت کمکتون مچکرم
https://github.com/espressif/esp-sr/issues/247
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
[Custom wake word request] ESP32-S3 / WakeNet9 or WakeNet10: “Hey BUDI” (English) · Issue #247 · espressif/esp-sr
Checklist Checked the issue tracker for similar issues to ensure this is not a duplicate. Provided a clear description of your suggestion. Included any relevant context or examples. Issue or Sugges...
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
شب ۱ از ۶۰ | پروژه #BUDI 🚀
بالاخره بعد از کلی کلنجار رفتن، ریسرچ کردن، تست کردن، اشتباه رفتن و دوباره برگشتن رسیدم به یه نقطه نسبتاً استیبل که میتونم بگم پروژه از اینجا به بعد واقعاً شروع شده.
تا اینجای مسیر شاید از بیرون خیلی به چشم نیاد، ولی برای خودم واقعاً پیچیده بود. با کلی چیز جدید آشنا شدم که قبلش حتی نمیدونستم چطوری کار میکنن؛ دربارهشون خوندم، سرچ کردم، دوباره سرچ کردم، با آدمهای مختلف صحبت کردم، مشورت گرفتم، توی کلی سایت گشتم و کلی قطعه سفارش دادم 📦🔧
یه بخش قابل توجهی از ریسرچها هم با کمک AI بود و فکر کنم سهم خودم رو در گرمایش زمین هم با موفقیت ادا کردم :))
از اون طرف یکی از قطعات اصلی بعد از تحویل خراب بود و من تقریباً دو روز کامل فقط درگیر دیباگ کردن همون یه قطعه با مولتیمتر بودم 🫠
بالاخره امشب قطعه جایگزین رسید، درست کار کرد و تونستم پینمپ نهایی سیستم رو دربیارم و برای شروع پروتوتایپ آماده بشم.
و
از اینجا به بعد رسماً مسیر BUDI شروع میشه 🤖❤️
طبق ددلاینی که برای خودم گذاشتم، ۶۰ روز فرصت دارم اولین پروتوتایپ قابل ارائه رو بسازم و امیدوارم وسط راه کم نیارم :))
امشب بالاخره پینمپهای سختافزار نهایی شد ✅
از تیم Espressif هم جواب گرفتم و مرسی بابت لایکهاتون روی اون Issue؛ قطعاً کمک کرد این پروسه سریعتر جلو بره 🙌
احتمالاً بهزودی Wake Word اختصاصی BUDI هم آماده میشه و اون رو هم وارد پروژه میکنم 🎙✨
🌑🌘🌗🌖🌕🌔🌓🌒🌑
و ۵۹ شب باقی مانده... :) 🔥
بالاخره بعد از کلی کلنجار رفتن، ریسرچ کردن، تست کردن، اشتباه رفتن و دوباره برگشتن رسیدم به یه نقطه نسبتاً استیبل که میتونم بگم پروژه از اینجا به بعد واقعاً شروع شده.
تا اینجای مسیر شاید از بیرون خیلی به چشم نیاد، ولی برای خودم واقعاً پیچیده بود. با کلی چیز جدید آشنا شدم که قبلش حتی نمیدونستم چطوری کار میکنن؛ دربارهشون خوندم، سرچ کردم، دوباره سرچ کردم، با آدمهای مختلف صحبت کردم، مشورت گرفتم، توی کلی سایت گشتم و کلی قطعه سفارش دادم 📦🔧
یه بخش قابل توجهی از ریسرچها هم با کمک AI بود و فکر کنم سهم خودم رو در گرمایش زمین هم با موفقیت ادا کردم :))
از اون طرف یکی از قطعات اصلی بعد از تحویل خراب بود و من تقریباً دو روز کامل فقط درگیر دیباگ کردن همون یه قطعه با مولتیمتر بودم 🫠
بالاخره امشب قطعه جایگزین رسید، درست کار کرد و تونستم پینمپ نهایی سیستم رو دربیارم و برای شروع پروتوتایپ آماده بشم.
و
از اینجا به بعد رسماً مسیر BUDI شروع میشه 🤖❤️
طبق ددلاینی که برای خودم گذاشتم، ۶۰ روز فرصت دارم اولین پروتوتایپ قابل ارائه رو بسازم و امیدوارم وسط راه کم نیارم :))
امشب بالاخره پینمپهای سختافزار نهایی شد ✅
از تیم Espressif هم جواب گرفتم و مرسی بابت لایکهاتون روی اون Issue؛ قطعاً کمک کرد این پروسه سریعتر جلو بره 🙌
احتمالاً بهزودی Wake Word اختصاصی BUDI هم آماده میشه و اون رو هم وارد پروژه میکنم 🎙✨
🌑🌘🌗🌖🌕🌔🌓🌒🌑
و ۵۹ شب باقی مانده... :) 🔥
🔥8👾1
شب ۲ از ۶۰ | پروژه #BUDI 🚀
امشب تمرکزم کامل روی مرتبکردن وایرینگ breadboard و راهاندازی درست صفحهنمایش بود.
برای ریلهای GND و 3V3 سعی کردم بهجای جامپرهای بلند و Dupont، سیمها رو کوتاه کنم و با پینهدر روی برد فیکسشون کنم. نتیجه نسبتاً خوب شد و برد خیلی تمیزتر و قابلمدیریتتر از قبل دراومد 🔧✨
بعد رفتم سراغ صفحهنمایش؛ پروگرامش کردم و فعلاً با استفاده از مموری داخلی ESP، انیمیشن idle رو روی نمایشگر آوردم.
کنترل شدت نور صفحه با پین BLK هم تست شد و خوشبختانه اونم خیلی خوب جواب داد، پس از این به بعد میتونم brightness رو مستقیم از داخل firmware کنترل کنم 👍
ماژول SD Card رو گذاشتم برای فردا شب که جدا و با حوصله تستش کنم.
امشب هم تموم شد.
🌑🌘🌗🌖🌕🌔🌓🌒🌑
و ۵۸ شب باقی مانده... :) 🔥
امشب تمرکزم کامل روی مرتبکردن وایرینگ breadboard و راهاندازی درست صفحهنمایش بود.
برای ریلهای GND و 3V3 سعی کردم بهجای جامپرهای بلند و Dupont، سیمها رو کوتاه کنم و با پینهدر روی برد فیکسشون کنم. نتیجه نسبتاً خوب شد و برد خیلی تمیزتر و قابلمدیریتتر از قبل دراومد 🔧✨
بعد رفتم سراغ صفحهنمایش؛ پروگرامش کردم و فعلاً با استفاده از مموری داخلی ESP، انیمیشن idle رو روی نمایشگر آوردم.
کنترل شدت نور صفحه با پین BLK هم تست شد و خوشبختانه اونم خیلی خوب جواب داد، پس از این به بعد میتونم brightness رو مستقیم از داخل firmware کنترل کنم 👍
ماژول SD Card رو گذاشتم برای فردا شب که جدا و با حوصله تستش کنم.
امشب هم تموم شد.
🌑🌘🌗🌖🌕🌔🌓🌒🌑
و ۵۸ شب باقی مانده... :) 🔥
🔥5👏4👾1