السبت، 16 مايو 2026

باث فايندر



باث فايندر هو جهاز محمول يُرتدى على الجسم، ويحتوي على خريطة لمدينتي، ويمكن عرضها والتنقل فيها باستخدام أزرار لوحة التحكم.

المواد المستخدمة في هذا المشروع

المكونات المادية

DFRobot UNIHIKER M10 - كمبيوتر لوحي أحادي مزود بشاشة لمس، يدعم برمجة بايثون لإنترنت الأشياء

PCBWay لوحات الدوائر المطبوعة المخصصة

تطبيقات البرامج والخدمات عبر الإنترنت

أوتوديسك فيوجن

الأدوات اليدوية وآلات التصنيع

طابعة ثلاثية الأبعاد (عامة)

قصة

تحية طيبة أيها المسافرون الأعزاء، وأهلاً بكم من جديد


هذا هو PathFinder، جهاز خريطة رقمية يمكنك صنعه بنفسك، يعمل بلوحة UNIHIKER M10، مصمم لمساعدتك في إيجاد طريقك.


أمارس رياضة ركوب الدراجات في المناطق الجبلية القريبة من مسقط رأسي، وهناك، غالبًا ما أواجه انقطاعًا في شبكة الإنترنت في بعض المناطق. الاعتماد كليًا على خرائط جوجل غير عملي؛ ففي بعض الأحيان، وبسبب مشاكل في البيانات، لا يتم تحميل الخرائط بالكامل، وقد يُسبب ذلك مشكلة كبيرة إذا علقت في مكان ما.


يمكن حل كل هذا لو كان لدينا خريطة ورقية وبعض مهارات الملاحة. لا أملك خريطة ورقية، لكنني صنعت خريطة رقمية يتم تحميلها على لوحة UNIHIKER M10. يمكننا التنقل في الخريطة باستخدام أزرار الاتجاهات. وبهذا، يمكن لأي شخص أن يساعد نفسه إذا علق في مكان ما.


لاختبار هذه الخريطة، ذهبت إلى منطقة نائية في الجبال بالقرب من مسقط رأسي واستخدمتها للتنقل في طريق لم أزره من قبل. اتبعت الخريطة وتمكنت من إيجاد طريقي دون أي مشاكل.

تتناول هذه المقالة عملية بناء هذا المشروع بالكامل، بدءًا من تصنيع لوحات الدوائر المطبوعة (PCBs) وصولًا إلى البرمجة وتجميع الجهاز، فلنبدأ إذًا.

المواد المطلوبة

هذه هي المواد المستخدمة في هذا المشروع:

لوحات دوائر مطبوعة مخصصة (مقدمة من PCBWAY)

لوحة تطوير Unihiker M0

أجزاء مطبوعة بتقنية الطباعة ثلاثية الأبعاد

دائرة متكاملة لإدارة الطاقة IP5306

مكثفات 10 ميكروفاراد 1206

منفذ من النوع C

زر ضغط رأسي

مصباح LED أخضر 0603

ملف حث 1 ميكروهنري SMD

أزرار ضغط بحجم 4x4 مم.

معدات - يونيهايكر إم 1



يُعدّ جهاز UNIHIKER M10 نجم مشروعنا، وهو حاسوب لوحي فريد من نوعه. يأتي مزودًا بشاشة لمس مدمجة بحجم 2.8 بوصة، بالإضافة إلى تقنيتي Wi-Fi وBluetooth.

ما يُميّز هذا الجهاز حقًا هو المعالج والمعالج المساعد. فهو يعمل بمعالج RK3308 ARM 64 بت، رباعي النواة، بتردد 1.2 جيجاهرتز. ويحتوي على ذاكرة وصول عشوائي DDR3 بسعة 512 ميجابايت، بالإضافة إلى شريحة eMMC مدمجة بسعة 16 جيجابايت.

للتحكم في منافذ الإدخال/الإخراج العامة (GPIO)، يحتوي الجهاز على معالج مساعد، هو GD32VF103C8T6. قد يبدو الاسم طويلًا، ولكنه معالج RISC-V بتردد 108 ميجاهرتز، مزود بذاكرة فلاش بسعة 64 كيلوبايت وذاكرة SRAM بسعة 32 كيلوبايت.

لا يستطيع المعالج المركزي التحكم المباشر في منافذ الإدخال/الإخراج العامة، لذا أُضيف معالج مساعد يُمكننا التحكم به باستخدام لغة بايثون. يتحكم النظام بالمعالج المساعد باستخدام مكتبة PinPong.

صُنعت اللوحة بواسطة شركة DFRobot، ويمكنكم الاطلاع على المزيد من التفاصيل عنها عبر صفحة ويكي الخاصة بهم.

هنــــــــــــــــــــــــــــا



يعمل جهاز UNIHIKER M10 بنظام Debian Linux كامل. يتم التحكم بكل مكوناته، بما في ذلك الشاشة ومنافذ GPIO والمستشعرات، عبر لغة Python، لذا لا يدعم بيئة تطوير Arduino، وللأسف، لا يدعم لغة C.

استلهمتُ تصميم الخريطة من واجهة Pip-Boy 3000 في لعبة Fallout: New Vegas، والتي تتميز بلونها الكهرماني. فالخرائط العادية مملة، وبصفتي من مُحبي سلسلة Fallout، كان من واجبي تصميم خريطة مستوحاة من Pip-Boy.

يُستخدم مكتبتان. الأولى هي برنامج تشغيل UNIHIKER، الذي يتحكم بشاشة العرض المدمجة بدقة 240×320. أما الثانية فهي مكتبة PinPong، التي تُستخدم لقراءة وكتابة منافذ GPIO.

عرض الإطارات


نقوم أولاً بإنشاء عنصر واجهة المستخدم للص

gui = GUI()

# Create once
display_img = gui.draw_image(x=0, y=0, image="/tmp/frame.png")

# Every frame: save new image, then update the same widget
frame.save("/tmp/frame.png")
display_img.config(image="/tmp/frame.png")

تُنشأ جميع الرسومات في الذاكرة باستخدام Pillow - بدون إطار عرض أو Pygame. تمر كل إطار بالمراحل التالية:


قص جزء من الخريطة بحجم 2000×2000 لعرض 320×240 بكسل

تطبيق لون كهرماني

رسم شبكة CRT مع أيقونات نقاط الاهتمام

تركيب خطوط المسح الضوئي

تحريك مؤشر التصويب

رسم أشرطة واجهة المستخدم الرسومية

تدوير الخريطة إلى الوضع الأفقي

حفظها ورفعها

```python
from PIL import Image, ImageDraw

viewport = self._map.crop((x0, y0, x0 + VIEWPORT_W, y0 + VIEWPORT_H))
frame = viewport.convert("RGBA")
draw = ImageDraw.Draw(frame)
```

لون كهرماني

يتم تحميل الخريطة بنظام ألوان RGB عادي. وللحصول على مظهر فسفور Pip-Boy، تُستخدم القناة الحمراء كمصدر سطوع للقنوات الثلاث جميعها.

r, g, b = img.split()
img = Image.merge("RGB", (
r,
r.point(lambda v: int(v * 0.71)), # amber green
r.point(lambda v: int(v * 0.26)), # amber blue
))

Ratios `(1.0, 0.71, 0.26)` match the target amber `(255, 182, 66)`.

الأزرار المادية

تُوصَّل الأزرار بدبابيس GPIO باستخدام مقاومات سحب داخلية. عند الضغط عليها، ينخفض ​​مستوى إشارة الدبوس، لذا فإن قراءة القيمة `0` تعني "مضغوط".

from pinpong.board import Board, Pin

Board("unihiker").begin()
btn_up = Pin(Pin.P3, Pin.IN, Pin.PULLUP)

if btn_up.read_digital() == 0:
move_y = -PAN_SPEED

if not hasattr(Pin, "PULLUP") and hasattr(Pin, "PULL_UP"):
Pin.PULLUP = Pin.PULL_UP

عرض أفقي على شاشة عمودية

شاشة العرض الفعلية بحجم ٢٤٠×٣٢٠ بكسل (عمودي). أرسم على لوحة رسم بحجم ٣٢٠×٢٤٠ بكسل (أفقي) وأقوم بتدوير كل إطار قبل الحفظ.

frame = frame.rotate(-90, expand=True)
# result: 240×320 — fills the screen when held sideways

حلقة العرض

حلقة قياسية ذات خطوة زمنية ثابتة — توقف مؤقتًا للمدة المتبقية في ميزانية الإطار

target_fps = 15
frame_time = 1.0 / target_fps

while True:
t0 = time.time()
# ... read buttons, render, push frame ...
sleep_t = frame_time - (time.time() - t0)
if sleep_t > 0:
time.sleep(sleep_t)

المكتبات

| Library | Install | Purpose |
|---|---|---|
| `pillow` | `pip install pillow` | All image rendering |
| `unihiker` | pre-installed | Push frames to the screen |
| `pinpong` | pre-installed | GPIO buttons and buzzer |
| `math`, `time`, `os` | standard library | Animation, timing, file checks |


بعد ضبط إعدادات الخريطة، انتقلنا إلى مشكلة مصدر الطاقة في لوحة UNIHIKER. تستخدم لوحة UNIHIKER M10 منفذ USB من النوع C كمصدر للطاقة، مما يوفر جهدًا ثابتًا قدره 5 فولت لتشغيلها. تكمن المشكلة في هذه اللوحة في عدم وجود موصل بطارية مدمج.

بالقرب من منفذ النوع C، نجد طرفين. الطرف الأول موصول بجهد VCC الخاص بمنفذ USB من النوع C، والطرف الآخر موصول بالأرضي (GND).

بتوفير جهد 5 فولت لهذين الطرفين، يمكننا تشغيل اللوحة، ولكننا نحتاج إلى مصدر طاقة ثابت.

تصميم ثلاثي الأبعاد


في هذا المشروع، كانت فكرتي تصميم جهاز بشاشة وأربعة أزرار بجانبها، مستوحى من أدب الخيال العلمي السايبربانك، حيث يبرز التركيز على الشاشات، ويتميز التصميم بشكله الصندوقي المتناظر.

ولتحسين التصميم، أضفتُ غطاءً للشاشة، له وظيفة عملية أيضًا. فعند استخدام الجهاز في الهواء الطلق، يوفر الغطاء ظلًا للشاشة، مما يُسهّل رؤيتها.

كما أضفتُ مقبضًا كبيرًا، وهو ليس جزءًا عمليًا أو وظيفيًا، وإنما وُضع لأغراض جمالية بحتة. بالإضافة إلى ذلك، أضفتُ قطعة أخرى في الجهة الأمامية لأغراض جمالية.

بإضافة هذه القطع المختلفة، كان هدفي استخدام ثلاثة خيوط طباعة ثلاثية الأبعاد ملونة، الأحمر والأبيض والأسود، لطباعة المكونات، مما يُنتج مزيجًا لونيًا رائعًا.

يحتو النموذج على تخطيط دوائر كهربائية مُنظم، بما في ذلك لوحة الأزرار. ولكل دائرة نقاط تثبيت خاصة بها، حيث نضع اللوحات ونثبتها باستخدام براغي M2.

أضفنا أيضًا فتحات على أحد جانبي الجهاز للوصول إلى منفذ USB الخاص بـ UNIHIKER M10 في حال رغبنا في إعادة برمجة الجهاز. كما أضفنا فتحات للوصول إلى منفذ USB الخاص بوحدة الطاقة وزر التشغيل/الإيقاف.

ولتركيب حزام بطاقة الهوية، أضفنا قطعة على شكل خطاف في أحد طرفي الحزام.

أزاء مطبوعة بتقنية الطباعة ثلاثية الأبعاد


بعد الانتهاء من تصميم النموذج، قمنا بطباعة جميع الأجزاء بتقنية الطباعة ثلاثية الأبعاد باستخدام خيوط Hyper PLA بنفس الإعدادات، والتي تضمنت ارتفاع طبقة 0.2 مم، ونسبة تعبئة 25%، ودعامات شجرية بمسافة 0.3 مم على المحور Z.

طُبع الهيكل الأمامي بخيوط Hyper PLA بيضاء. أما الهيكل الخلفي، وغطاء الشاشة، والجزء الزخرفي، فطُبعت جميعها بخيوط Hyper PLA سوداء.

استُخدمت خيوط Hyper PLA حمراء لطباعة المفاتيح الأربعة ومقبض الجهاز.

تصميم لوحة الدوائر المطبوعة - لوحة الطاقة


هنا، نعيد استخدام الدائرة المستخدمة في مشروع الشاشة المحمولة.

في هذه الدائرة، تسحب دائرة إدارة الطاقة IP5306 تيارًا ثابتًا قدره 5 فولت/2 أمبير من بطارية ليثيوم أيون 3.7 فولت. تمنع خصائص قطع التيار العالي والمنخفض فيها الشحن الزائد والتفريغ الزائد للبطارية.

منفذ الشحن المستخدم هو منفذ من النوع C ذو فتحات توصيل، ويتصل بمنفذ شحن الدائرة المتكاملة. بالإضافة إلى منفذ الشحن والأرضي (GND)، أضفنا مكثف ترشيح سعته 10 ميكروفاراد، ومجموعة مكثفات سعتها 10 ميكروفاراد مع مقاومة 2 أوم.

كما أضفنا أربعة مصابيح LED، تعمل كمؤشرات امتلاء البطارية، إلى منفذ LED الخاص بالدائرة المتكاملة.

أضفنا زر ضغط لتشغيل وإيقاف هذا الجهاز.

كما أضفنا مكثفَي ترشيح إضافيين إلى مخرجي الدائرة المتكاملة والأرضي (GND).

خدمة PCBWAY





في عملية تجميع لوحة الدوائر المطبوعة هذه، نستخدم محقنة لتوزيع معجون اللحام. نضع معجون اللحام على كل نقطة توصيل للمكونات لبدء عملية تجميع الدائرة الرئيسية. نستخدم هنا معجون لحام Sn/Pb بنسبة 63/37، والذي تبلغ درجة انصهاره 190 درجة مئوية.

بعد ذلك، نختار كل مكون من مكونات SMD ونضعه في مكانه الصحيح.

ثم تُثبّت جميع المكونات بشكل دائم على نقاط التوصيل الخاصة بها عند وضع الدائرة بأكملها على صفيحة التسخين بالتدفق، والتي تُسخّن لوحة الدوائر المطبوعة إلى درجة انصهار معجون اللحام.

بعد ذلك، نضع كل مكون من مكونات THT، بما في ذلك منفذ Type C وزر الضغط العمودي، في مكانه الصحيح. نضع منفذ Type C في الأعلى، بينما نعكس وضع زر الضغط ونضعه في الأسفل. باستخدام مكواة اللحام، نلحم كلا المكونين في مكانهما.

مصدر الطاقة


نستخدم في هذا المشروع خلية ليثيوم أيون كمصدر للطاقة، وتحديدًا خلية ليثيوم أيون من نوع 14500 بجهد 3.7 فولت وسعة 600 مللي أمبير، مزودة بدائرة PCM مثبتة مسبقًا. تحمي هذه الدائرة الخلية من الشحن الزائد والتفريغ الزائد، كما توفر حماية من قصر الدائرة.

يتم لحام طرفي الخلية (B+ وB-) بأطراف البطارية على لوحة إدارة الطاقة باستخدام مكواة لحام.

لاختبار الدائرة، استخدمتُ جهاز قياس متعدد، وضغطتُ على الزر الرأسي لتشغيلها، فرأينا مؤشر LED يضيء.

باستدام جهاز القياس المتعدد، تحققنا من جهد خرج الدائرة، والذي بلغ 5 فولت ثابتة، مما يعني أن الدائرة تعمل بشكل صحيح.

تصميم لوحة الدوائر المطبوعة - لوحة الأزرار


هذه هي لوحة الدوائر المطبوعة الثانية التي استخدمناها في مشروعنا، وهي لوحة الأزرار.

أضفنا هنا أربعة أزرار ضغط بحجم 4×4 مم على لوحة بحجم 20×20 مم. تم تحديد موضع كل زر وفتحات التثبيت وفقًا للنموذج ثلاثي الأبعاد.

كما أضفنا موصل CON5. تم توصيل الطرف الأول بالأرضي (GND)، بينما تم توصيل الأطراف الأربعة المتبقية بدبابيس كل زر. سنستخدم هذا الموصل لاحقًا لربط جهاز UNIHIKER M10 بلوحة الأزرار.

للعلم، نعيد استخدام هذه اللوحة من مشروع سابق، يمكنك الاطلاع عليه عبر الرابط أدناه.

هنــــــــــــــــــــــــــــــــــــــــــــــــــا


كان تجميع لوحة الأزرار بسيطًا للغاية.

وضعنا الأزرار الأربعة في أماكنها، ثم قلبنا اللوحة، واستخدمنا مكواة اللحام لتوصيل جميع أطراف الأزرار.

إعدادات الإلكترونيات


يتكون النظام الإلكتروني لهذا المشروع من وحدة UNIHIKER M10 موصولة بلوحة الأزرار بالترتيب التالي:

الزر A موصول بالمنفذ P3 في وحدة UNIHIKER. الزر B موصول بالمنفذ P0 في وحدة UNIHIKER. الزر C موصول بالمنفذ P1. الزر D موصول بالمنفذ P2.

استخدمنا أيضًا الجرس المدمج، الموصول بالمنفذ P26.

بعد ذلك، قمنا بتوصيل طرفي 5 فولت وGND في لوحة الطاقة بطرفي 5 فولت وGND في وحدة UNIHIKER باستخدام سلكين.

بالضغط على الزر العمودي، يتم تشغيل النظام، وتضيء شاشة UNIHIKER، مما يشير إلى أن النظام يعمل.

عملية تجميع الهيكل


نبدأ الآن عملية التجميع، والتي تبدأ بوضع لوحة الأزرار فوق نقاط تثبيت البراغي الأربعة. ثم نثبتها باستخدام أربعة براغي M2.

بعد ذلك، توضع خلية الليثيوم في الجزء السفلي من الجهاز، حيث قمنا بتصميم حامل البطارية. كما توضع الدائرة الكهربائية في مكانها فوق نقطتي تثبيت البراغي وتُشدّ باستخدام برغيين M2. نستخدم القليل من الغراء الساخن لتثبيت الخلية في مكانها.

نستخدم غراءً فائقًا لتثبيت الجزء الزخرفي الذي صممناه ووضعه فوق الجزء الأمامي من الجهاز. نضع الغراء الفائق على الجهة الأمامية، ثم نضع الجزء الزخرفي ونثبته في مكانه.

يتم وضع جهاز UNIHIKER M10 من داخل الجزء الأمامي من الجهاز. نستخدم الغراء الساخن لتثبيته بإحكام.

تُضاف الأزرار المطبوعة بتقنية الطباعة ثلاثية الأبعاد في مكانها من داخل الجزء الأمامي من الجهاز. ثم يتم تجميع الجزأين الأمامي والخلفي معًا وتثبيتهما باستخدام أربعة براغي M2.

بعد ذلك، يُضاف مقبض الجهاز في مكانه على الجهة الأمامية من الجهاز. هذا المقبض مخصص للزينة فقط وليس له وظيفة عملية.

من الجهة الأمامية، نضع غطاء المصباح في مكانه ونثبته باستخدام برغيين من نوع M2.

تمّ التجميع.

إليكم النتيجة النهائية لهذا المشروع: PathFinder، جهاز الخرائط الرقمية الذي صنعته بنفسي، والذي يساعد المسافرين على إيجاد طريقهم. إنه ببساطة خريطة داخل شاشة، يتم تحميلها دون الحاجة إلى شبكة Wi-Fi أو أي اتصال بالإنترنت. باستخدام لوحة التحكم، يمكننا التنقل بسهولة على الخريطة.

صُممت الخريطة لتشبه خريطة لعبة Fallout: New Vegas، بلونها الكهرماني، لكنها تُظهر مدينتي، وهذا رائع حقًا.

لاختبار الجهاز عمليًا، أخذت دراجتي النارية وذهبت إلى منطقة لم أزرها من قبل. جربت التنقل باستخدام PathFinder، وقد عمل بشكل ممتاز.

اتبعت الخريطة، وسلكت طريقًا في منطقة نائية، في قلب غابة، وتنقلت عبرها، ثم عدت في النهاية إلى طريق سريع مألوف.

الخلاصة

هذه الخريطة تعمل، بل وتعمل بشكل جيد، لكنني واجهت بعض المشاكل أثناء الاختبار الميداني.

كانت أكثرها إزعاجًا هي الشاشة. إضاءة شاشة UNIHIKER الخلفية خافتة جدًا، مما يجعل قراءتها صعبة تحت أشعة الشمس المباشرة. حتى أنني صممت غطاءً لها، لكن ذلك لم يُجدِ نفعًا. إضافةً إلى ذلك، تحتوي الشاشة على طبقة لامعة عاكسة للمس، مما يزيد من سوء الرؤية في الهواء الطلق.

من القيود الأخرى حجم الخريطة. حاليًا، تغطي الخريطة مساحة محدودة تبلغ حوالي 2000×2000 بكسل. يمكن زيادة هذه المساحة بتعديل حجم ملف map.py، لكن ذلك يزيد من حجم الكود. لذا، أحتاج إلى إيجاد طريقة لتوسيع الخريطة بكفاءة دون زيادة حجم الكود بشكل ملحوظ.

أدركت أيضًا أن هذا الجهاز قد يكون أكثر عمليةً إذا تم تثبيته على دراجتي النارية بدلًا من حمله كشارة.

في هذه الحالة، يمكنني توسيع وظائفه بإضافة مستشعرات حرارة، أو تسجيل فيديو، أو حتى بعض ميزات الذكاء الاصطناعي مثل تتبع المركبات في الأمام. قد يتضمن الجهاز مكبر صوت بلوتوث إذا تم تركيبه على الدراجة؛ فالخيارات لا حصر لها.


في الإصدار الثاني من هذا المشروع، سأعمل أولاً على إصلاح المشاكل الأساسية، وربما أجربه في رحلة.

شكرًا جزيلًا لكم على وصولكم إلى هنا، وسأعود قريبًا بمشروع جديد!

مع السلامة.







الجمعة، 5 ديسمبر 2025

وصف الصورة على رايزبري باي

 وصف الصورة يشبه GenAI، ولكنه أصغر بمقدار 200 مرة

قم بتدريب صورة محددة للمجال على نموذج الكلمات الرئيسية الذي يكون أخف وزناً بمقدار 200 مرة (9 ميجا بايت) ويعمل بزمن انتقال منخفض على أجهزة مثل Raspberry Pi 4.




الأشياء المستخدمة في هذا المشروع

مكونات الأجهزة

راسبيري باي 4 موديل B

وحدة كاميرا Raspberry Pi

تطبيقات البرمجيات والخدمات عبر الإنترنت

Edge Impulse Studio


قصة

خضعت تقنية معالجة الصور لبحوث مكثفة، وأصبح تطوير نماذج كشف الأجسام وتصنيف الصور أسهل حاليًا. على سبيل المثال، من خلال منصات الذكاء الاصطناعي مثل Edge Impulse، يُمكننا تدريب نموذج تصنيف صور ونشره في أقل من 5 دقائق! لم تعد الرؤية الحاسوبية تُمثل سؤال "كيف نبني هذا؟". الآن، يكمن التحدي الحقيقي في إيجاد طرق عملية ومفيدة لاستخدام نماذج الذكاء الاصطناعي لمعالجة الصور. بصفتي شغوفًا بالأنظمة المضمنة، أردتُ تجاوز تصنيف الصور وكشف الأجسام، من خلال إنشاء نموذج يُمكنه النظر إلى الصورة ووصفها باستخدام لغة طبيعية، مثل "لا يوجد مُشغّل بالقرب من الآلة"، وكل ذلك على الحافة باستخدام أجهزة مُقيدة.

في النهاية، تمكنتُ من بناء نموذج بسيط لتحويل الصورة إلى نص بحجم 9 ميجابايت، وهو صغير بما يكفي لتشغيله على أجهزة مثل Raspberry Pi (RPi). ومع ذلك، فإن الهدف النهائي من هذا المشروع هو تحويل الصورة إلى نص إلى وحدات تحكم دقيقة صغيرة، وفتح المجال لتطبيقات جديدة تُبرز فيها هذه الأجهزة الصغيرة. يمكن أن يُحسّن هذا مراقبة المساحات، والأتمتة، وأجهزة إنترنت الأشياء التي تراعي السياق، ومجموعة واسعة من تجارب الذكاء الاصطناعي الطرفي.

يستكشف الباحثون وشركات التكنولوجيا حاليًا تقنية ترجمة الصور، وهي تقنية تستخدم الرؤية الحاسوبية ومعالجة اللغة الطبيعية لإنشاء ترجمة ذات معنى للصور. ونظرًا لاستخداماتها العديدة المحتملة، مثل سهولة الوصول للأشخاص ذوي الإعاقة البصرية، وإنتاج المحتوى وفهمه لمحركات البحث، وغيرها، فإن ترجمة الصور تُستخدم على نطاق واسع وتُعدّ مجالًا دراسيًا مهمًا.



الهدف الرئيسي من تحويل الصورة إلى كلمات رئيسية هو إنشاء تسميات توضيحية دقيقة نحويًا وذات معنى، بالإضافة إلى ملاءمتها للسياق ووصفها. يتطلب هذا عملية معقدة لتحديد العناصر وعلاقاتها المتبادلة داخل الصورة، يليها إنشاء وصف متماسك. يُستخدم مُرمِّز أولًا لاستخراج السمات المرئية من الصورة. يمكن استخدام مُحوِّل بصري أو شبكة عصبية تلافيفية (CNN) كمُرمِّز. بعد ذلك، ومن خلال شبكة عصبية متكررة (RNN)، أو ذاكرة طويلة المدى قصيرة المدى (LSTM)، أو أي نموذج تعلُّم عميق آخر مُصمَّم للتعامل مع البيانات المتسلسلة، يُنتج مُفكِّك التشفير نصًا وصفيًا من السمات المُرمَّزة.

نظرة عامة على المشروع

في هذا المشروع، سنستكشف تقنية ترجمة الصور القائمة على الاسترجاع لإنشاء نموذج بسيط لتحويل الصورة إلى نص، واستخدامه لوصف سيناريوهات استخدام محددة لما يلي:

مراقبة الإنتاجية الشخصية: اكتشاف ما إذا كان الشخص يعمل أو مشتتًا بسبب هاتفه

مراقبة ذكية للمساحات لتوفير الطاقة: اكتشاف ما إذا كانت الأضواء مضاءة ولكن لا يوجد شخص في الغرفة

الزراعة الذكية: مراقبة صحة النباتات من خلال أنشطة مثل الري

يستخدم المشروع نصين برمجيين بلغة بايثون، أحدهما لجمع صور التدريب باستخدام كاميرا راسبيري باي، والآخر لتشغيل نموذج تحويل الصورة إلى كلمات مفتاحية من خلال جمع صور الكاميرا وإنشاء نصوص دلالية عنها. يتم تدريب النموذج على جوجل كولاب، وبعد ذلك يُستخدم Edge Impulse لنشر مسار الاستدلال بالكامل (المعالجة المسبقة والتنبؤ بالكلمات المفتاحية) على راسبيري باي. سنستكشف الأجزاء التالية من المشروع:

جمع الصور باستخدام كاميرا Raspberry Pi

إعداد العلامات لكل صورة

تدريب نموذج تصنيف متعدد العلامات في Google Colab

نشر النموذج المُدرَّب على Edge Impulse

تشغيل وصف البيئة في الوقت الفعلي باستخدام كاميرا Raspberry Pi


بخلاف نماذج الذكاء الاصطناعي التوليدي (GenAI)، مثل ChatGPT Vision، التي تتطلب مجموعات ضخمة من وحدات معالجة الرسومات (GPU)، وخطوط أنابيب تدريب معقدة، وميزانيات حسابية ضخمة، يعتمد هذا المشروع تصميمًا أكثر اقتصادًا. تُعدُّ تسميات الصور القائمة على الاسترجاع تقنيةً تُولِّد علامات/تسميات توضيحية للصور عن طريق اختيار وتعديل العلامات/التسميات التوضيحية الموجودة مسبقًا من قائمة، بدلاً من إنشاء علامات/تسميات توضيحية جديدة. يستفيد هذا النهج من فكرة أن العديد من الصور تشترك في ميزات وسياقات متشابهة، مما يسمح لنا بإعادة استخدام العلامات للصور المتشابهة سياقيًا، خاصةً في حالات الاستخدام الخاصة بالتطبيقات. تتميز هذه التقنية بالبساطة، وبناءً على البنية المستخدمة، يمكن أن يكون النموذج الناتج خفيفًا وكافٍ للتشغيل على الأجهزة محدودة الموارد. ومع ذلك، فإن هذه الطريقة خاصة بمجال معين، وتعتمد بشكل كبير على العلامات المُعدّة مسبقًا، وقد لا تكون مناسبة لبيئات النشر الأخرى.


يتم إقران كل صورة يدويًا بعلامات وصفية، مما يُنشئ مجموعة بيانات خفيفة الوزن ولكنها معبرة، مما يُجنِّب تعقيد إنشاء جمل كاملة. تُحمَّل بعد ذلك مجموعة بيانات الصور وملف نصي للوسوم إلى Google Colab، حيث تُحوِّل أنابيب المعالجة المسبقة جميع الصور إلى موترات موحدة، وتُحوِّل الوسوم إلى متجهات متعددة الوسوم. باستخدام التعلم بالنقل على MobileNetV2، يُدرَّب نموذج على ربط السمات المرئية بمتجهات الكلمات المفتاحية، متعلمًا بفعالية آلية استرجاع عالية السرعة تُعيِّن صورة جديدة لأقرب مجموعة من الواصفات (الكلمات) المُكتسبة. يُحمَّل النموذج الناتج بعد ذلك إلى Edge Impulse، مما يُتيح تحليل الأداء على الجهاز (استخدام الفلاش، واستخدام ذاكرة الوصول العشوائي، ووقت الاستجابة)، وتحسين النموذج، والنشر السلس على أي جهاز Edge AI (بما في ذلك وحدات التحكم الدقيقة) لديه موارد كافية لتشغيله.

هذا يعني أن:

لا يُولِّد النموذج جملًا جديدة.

بدلًا من ذلك، يكتشف الكلمات المفتاحية (الوسوم) من قائمة تُصف محتوى الصورة على أفضل وجه.

تُدمج هذه الوسوم المُتوقعة بعد ذلك في جملة بسيطة وواضحة.

جميع أكواد المصدر للمشروع متوفرة في مستودع GitHub هذا: Lightweight_image_description. مع سير كل شيء بشكل صحيح، ستحصل على نموذج مُدرّب متعدد العلامات، مُشتق من MobileNetV2، يُطابق الصور مع متجهات الكلمات المفتاحية.

كما نتقدم بجزيل الشكر لشركة Edge Impulse على دعمها المُستمر خلال هذا المشروع. إن القدرة على نشر نماذج ذكاء اصطناعي مُخصصة بسلاسة على مجموعة واسعة من الأجهزة، مثل Arduino وESP32 وRaspberry Pi، وغيرها، أمرٌ مُذهل. يُمكن أن يُتيح ربط الصور بالكلمات المفتاحية على هذه الأجهزة آفاقًا جديدة للتجارب وحلول حالات الاستخدام. بفضل أدواتها القوية وإعداداتها المُيسّرة للمطورين، تُعتبر Edge Impulse رائدة في تطوير الذكاء الاصطناعي على الحافة.

01. إعداد الأجهزة وتجهيز مجموعة البيانات

في هذا المشروع، يُستخدم Raspberry Pi 4 مع وحدة كاميرا V2.1 بدقة 8 ميجابكسل لالتقاط الصور لتدريب النموذج وإجراء الاستدلال. ومع ذلك، لا يزال بإمكانك استخدام أجهزة أخرى لنفس الغرض. يُرجى مُلاحظة أنك ستحتاج إلى تغيير طريقة جمع بيانات الإدخال في نصوص Python النصية، لأنها تستخدم مكتبة Picamera لالتقاط الصور.


يحتوي Edge Impulse على وثائق لإعداد RPi وتثبيت Edge Impulse لنظام Linux SDK، وهي مجموعة من الأدوات التي تتيح لك جمع البيانات من أجهزة الاستشعار والميكروفونات والكاميرات، بالإضافة إلى تشغيل Impulse بتسريع كامل للأجهزة على جهاز Raspberry Pi.

بعد إعداد Raspberry Pi، استخدم طرفية سطر الأوامر (CLI) مع اتصال SSH بجهاز Raspberry Pi لتنزيل مستودع المشروع عبر: git clone، أو SCP transfer من جهاز الكمبيوتر إلى جهاز Raspberry Pi، أيهما يناسبك. بعد ذلك، شغّل الأمر التالي لتثبيت التبعيات على جهاز Raspberry Pi:

pip install -r requirements.txt

يمكنا الآن استخدام أول نص برمجي لخادم بث الفيديو بلغة Python لجمع الصور. يُشغّل هذا النص البرمجي خادم ويب يُبثّ بثًا مباشرًا للكاميرا، ويحتوي على زر "التقاط" لحفظ الإطارات كصور. يُرجى ملاحظة أنه إذا كنت تستخدم جهازًا مختلفًا، يمكنك استخدام طرق أخرى لجمع الصور. شغّل واجهة مستخدم خادم البث باستخدام الأمر:

python camera_server.py



من السجلات، انسخ عنوان IP لخادم الويب والصقه في حقل عنوان URL لمتصفح الويب (سواءً كان جوالاً أو حاسوباً شخصياً). ستشاهد بث فيديو مباشراً من كاميرا RPi وزر "التقاط" لحفظ الصور.



فيما يتعلق ببيئة حالة الاستخدام الخاصة بالمجال، أنشئ مجموعة بيانات لتدريب النموذج بالنقر على زر "التقاط"، وسيتم حفظ الصور في مجلد "الصور المحفوظة" ضمن مجلد المستودع. في حالتي، قمتُ بإعداد بيئتي لعرض: شخص يعمل ويستخدم هاتفه، ونبتة صغيرة بجانب طاولة تُروى، وغرفة فارغة لا يوجد فيها أحد سوى الأضواء مضاءة.


بعد التقاط الصور، نحتاج إلى إنشاء ملف نصي للوسوم لكل ملف صورة. هذه الوسوم هي كلمات تصف الصورة بشكل أفضل. جمعتُ 150 صورة وخصصتُ لكل منها وسومًا يدويًا. فيما يلي قائمة الوسوم الدلالية: أضواء، لا يوجد شخص، شخص، هاتف، كمبيوتر محمول، نبات، ري. تُستخدم هذه الوسوم لوصف سيناريوهات الاستخدام المحددة المذكورة:

مراقبة الإنتاجية الشخصية: اكتشاف ما إذا كان الشخص يعمل أو مشتتًا بسبب هاتفه. الوسوم المستخدمة هي: أضواء، لا يوجد شخص، شخص، كمبيوتر محمول، وهاتف. تم التقاط 60 صورة لهذه الحالة: 30 صورة تُظهر شخصًا يعمل على جهاز الكمبيوتر، بينما تُظهر الصور المتبقية الشخص الذي يعمل ولكنه يستخدم هاتفه.

مراقبة ذكية للمساحة لتوفير الطاقة: اكتشاف ما إذا كانت الأضواء مضاءة ولكن لا يوجد شخص في الغرفة. الوسوم المستخدمة هي: أضواء، لا يوجد شخص، وشخص. تم التقاط 30 صورة لهذه الحالة.

الزراعة الذكية: مراقبة صحة النباتات من خلال أنشطة مثل الري. الوسوم المستخدمة هي: نبات، ري. تم التقاط 60 صورة لهذه الحالة.

أوشكت خطوة إعداد مجموعة البيانات على الانتهاء. بعد جمع الصور وإنشاء ملف نص الوسوم، نحتاج إلى نسخها إلى مجلد Google Drive الذي يمكن الوصول إليه من خلال دفتر Colab لتدريب النموذج. تُحدد مسارات مجلد الصور وملف النص بواسطة متغيري images_folder وimage_tags_file في دفتر الملاحظات. استخدام مجلد Google Drive اختياري، حيث يمكنك تحميل مجلد مجموعة البيانات مباشرةً إلى دفتر الملاحظات، ولكن Colab يحذف الملفات المُحمّلة عند انتهاء صلاحية الجلسة. تجدر الإشارة أيضًا إلى أنه كبديل لـ Google Colab، يمكنك استخدام دفتر Jupyter أو تشغيل مسار التدريب محليًا كملف Python، مع تثبيت التبعيات على الجهاز المضيف.


2. تحميل مجموعة البيانات إلى دفتر الملاحظات

قبل تشغيل دفتر ملاحظات تدريب ونشر النموذج، نحتاج أولًا إلى إنشاء مشروع Edge Impulse والحصول على مفتاح API الخاص به. للقيام بذلك، أنشئ مشروعًا جديدًا في Edge Impulse Studio (أو استخدم مشروعًا موجودًا) وانتقل إلى قسم "المفاتيح" ضمن "لوحة التحكم". بعد ذلك، افتح دفتر الملاحظات وألصق مفتاحك في متغير ei.API_KEY.


في دفتر ملاحظات Google Colab، انقر على "اتصال" لبدء جلسة سحابية مستضافة، ثم انقر على "تشغيل الكل". سيُطلب منك منح حق الوصول إلى حسابك على Google Drive.

يبدأ دفتر الملاحظات بتحميل الصور وملفات الوسوم النصية باستخدام مسارات المجلدات المحددة. بعد ذلك، تُحمّل المكتبات اللازمة لتحميل البيانات، والمعالجة المسبقة، وتطوير النموذج، وتقييمه باستخدام مكتبات مثل NumPy وPandas وTensorFlow. بعد ذلك، تُعرّف المتغيرات العامة والوظائف المساعدة للمعالجة المسبقة وبناء النموذج. تُعرّف الوسوم: lights، no_person، person، phone، laptop، plant، watering، في متغير قائمة VOCAB.


تقوم دالة preprocess_image بتحميل صورة، وتغيير حجمها إلى حجم البكسل الثابت (128 × 128 كما هو مُعرّف بواسطة IMAGE_SIZE)، وتحويلها إلى مصفوفة NumPy، وقياس قيم البكسل 0 و1. بعد ذلك، يقرأ دفتر الملاحظات ملف tags.txt في إطار بيانات pandas. من المتوقع أن يحتوي هذا الملف على اسم ملف الصورة ووسوم مفصولة بمسافات لتلك الصورة. يصبح إطار البيانات هذا مصدر التعليقات التوضيحية الأساسي للتدريب. بعد ذلك، تُحوّل دالة encode_keywords نص الوسوم المفصولة بمسافات إلى متجه ثنائي متعدد السرعات، حيث يُقابل كل فهرس كلمة من المفردات. هذه هي خطوة الترميز متعدد العلامات، وبما أن الصورة يمكن أن تحتوي على علامات متعددة في وقت واحد، يُمكننا استخدام متجه من مخرجات ثنائية مستقلة بدلاً من تسمية فئوية واحدة (كما هو الحال في تصنيف الصور).


لتحديد اختلال توازن الفئات بسهولة، يحسب الدفتر تردد الوسوم ويطبعه لتحديد الوسوم المهيمنة والنادرة. يُعد هذا ضروريًا لفهم تحيزات مجموعات البيانات واتخاذ قرار بشأن جمع المزيد من الصور للوسوم غير الممثلة تمثيلًا كافيًا أو إعادة التوازن أثناء التدريب.


بالنسبة لبنية النموذج، استخدمتُ نموذج MobileNetV2، نظرًا لأدائه المتميز في استخراج الميزات، مع انخفاض تكلفته الحسابية وصغر حجمه نسبيًا. نقوم بتجميد الطبقات الأساسية بحيث يتم تحديث الطبقات المضافة النهائية فقط أثناء التدريب (تقنية نقل التعلم) لتسريع التدريب. طبقة Sigmoid نهائية بسبعة مخرجات (تتطابق مع عدد العلامات المحددة في حالتي)، تُمكّن الشبكة من إخراج مُتنبئ احتمالي متعدد العلامات. بخلاف SoftMax الذي يُجبر مجموع احتمالات الإخراج على 1، يسمح لنا Sigmoid بمعالجة كل علامة بشكل مستقل. لذلك، لأي صورة مُعطاة، يُخرج النموذج X احتمالات مستقلة، وبالنظر إلى دقة النموذج، يُمكننا استخدام عتبة لتحديد أفضل الكلمات المناسبة لوصف الصورة. هذا يعني أن النموذج لا يُحاول تصنيف الصورة إلى علامة واحدة فقط، بل يسأل:

هل تحتوي هذه الصورة على أضواء؟

هل تحتوي هذه الصورة على نبتة؟

هل تحتوي هذه الصورة على شخص؟

هل تحتوي هذه الصورة على هاتف أو جهاز كمبيوتر؟

على سبيل المثال، يقوم النموذج بإخراج احتمالات مستقلة X، مثل: الآلة = 0.91، الفني = 0.88، البقرة = 0.07، السمكة = 0.01، الكمبيوتر = 0.74.



٣. تدريب النموذج واختباره

سيؤدي تشغيل دفتر الملاحظات إلى تحميل الصور والوسوم، ومعالجتها مسبقًا، وتدريب النموذج، وأخيرًا تحميله إلى مشروع Edge Impulse المُستخدم. في حالتي، مع ١٥٠ صورة تدريب و٧ وسوم، تم تدريب النموذج على مدار ٢٠ حقبة، وكانت الدقة الناتجة ١٠٠٪. بالنسبة لبيئة بسيطة نسبيًا وخاضعة للتحكم مثل هذه البيئة، اخترت هذا الأداء ليكون مقبولًا. ومع ذلك، نظرًا لتنوع ديناميكيات بيئة العالم الحقيقي، هناك حاجة لتدريب نموذج بمزيد من الصور والوسوم لتحسين الأداء.


بعد تدريب النموذج، طوّرتُ دالتين لاختباره: predict_keywords و predict_top_keywords:

predict_keywords: تُشغّل النموذج على صورة وتُرجع جميع الكلمات المفتاحية التي يتجاوز احتمالها المتوقع الحدّ المُحدّد.

predict_top_keywords: تُرجع الكلمات المفتاحية الأعلى احتمالًا بغض النظر عن الحدّ.

أثناء الاختبار، أُعطي النموذج صورةً لغرفة معيشة فارغة، وأعادت دالة predict_keywords "أضواء" و"لا يوجد شخص"، بينما أعادت دالة predict_top_keywords "لا يوجد شخص" و"أضواء" و"نبات"، عند طلب إرجاع أعلى 3 علامات احتمالية. تتطلب التطبيقات المختلفة سلوكًا مختلفًا للكشف المُحافظ مقارنةً بعرض معظم العلامات الاحتمالية دائمًا. فضّلتُ دالة predict_keywords، ويُعاد استخدام منطقها في شيفرة الاستدلال.


أظهرت الاختبارات الإضافية للنموذج نتائج مبهرة، واخترتُ هذا الأداء المقبول لنشره.

04 نشر النموذج

بعد اختبار النموذج، يستخدم الكمبيوتر المحمول حزمة تطوير البرامج Edge Impulse Python SDK لإنشاء ملف تعريف للنموذج، مما يُمكّننا من الحصول على ذاكرة الوصول العشوائي (RAM) وذاكرة القراءة فقط (ROM) وأوقات الاستدلال للنموذج على مجموعة واسعة من الأجهزة، من وحدات التحكم الدقيقة (MCUs) ووحدات المعالجة المركزية (CPUs) ووحدات معالجة الرسومات (GPUs) واللوحات المُسرّعة بالذكاء الاصطناعي، وهو أمرٌ رائعٌ حقًا! يُمكنك رؤية تقديرات أداء النموذج على Raspberry Pi 4 في الصورة أدناه. أثناء عملية إنشاء الملف التعريفي، يتم تحميل النموذج إلى مشروع Edge Impulse.


يمكنك استنساخ مشروع Edge Impulse العام الخاص بي باستخدام هذا الرابط: وصف صورة خفيف.

يرجى ملاحظة أن النموذج لن يكون دقيقًا، ولن يكون كذلك عند اختباره، لأن صور التدريب كانت مخصصة لبيئتي المُتحكم بها.

بعد انتهاء تشغيل دفتر الملاحظات، يمكننا الانتقال إلى مشروع Edge Impulse المُستخدم، وسنرى "تحميل النموذج" ضمن "تصميم Impulse".


نحتاج أولاً إلى ضبط بعض المعلمات في مشروع Edge Impulse. انقر على "تحميل النموذج" وستُفتح واجهة جديدة على يمين الصفحة. هنا، نحتاج إلى تحديد "صورة" لإدخال النموذج. بعد ذلك، نحدد "وحدات بكسل تتراوح بين 0.1 (غير مُعايرة)" لإخراج النموذج. اختر "تصغير" لوضع تغيير الحجم و"تصنيف" لإخراج النموذج. أخيرًا، في مربع إدخال تسميات الإخراج، أدخل العلامات المستخدمة لتدريب النموذج وفقًا لترتيبها أثناء التدريب. انقر على "حفظ النموذج" لإكمال التهيئة. في لقطة الاستوديو أدناه، يمكننا أن نرى أن النموذج سيشغل 9 ميجابايت من ذاكرة الفلاش، وأن وقت الاستدلال المتوقع هو 106 مللي ثانية، وهو وقت قريب نسبيًا من وقت الاستدلال الفعلي على الجهاز، والذي يبلغ حوالي 25 مللي ثانية.


يمكننا أيضًا اختبار النموذج مباشرةً على Edge Impulse Studio بالنقر على "اختيار ملف" ضمن قسم "تحميل صورة". في اختباراتي، كان أداء النموذج جيدًا أيضًا، وتم عرض تنبؤات الوسوم الاحتمالية بشكل أفضل على واجهة المستخدم الخاصة بالاستديو. على سبيل المثال، في صورة الاختبار المعروضة أدناه، نرى أن النموذج قادر على عرض الكلمات (شخص، كمبيوتر محمول، هاتف) بدقة وثقة لوصف صورة تُظهر شخصًا يحمل كمبيوتر محمولًا وهاتفًا في يده. أثناء الاستدلال، يمكننا تحديد حد أدنى لدرجات الاحتمالية وبناء جملة باستخدام الكلمات التي تحقق الدرجة المطلوبة.


في واجهة مستخدم الاستوديو، انتقل إلى "النشر" واختر "Linux (AARCH64)" من "خيارات البحث عن النشر". هذه هي بنية Raspberry Pi 4، وستحتاج إلى تحديد هدف مختلف بناءً على جهاز النشر لديك. انقر على "إنشاء" وسيقوم الاستوديو بتنزيل ملف ثنائي لنموذج Edge Impulse (.eim) على جهاز الكمبيوتر الخاص بك. EIM هي تطبيقات ثنائية أصلية لنظامي Linux وmacOS تحتوي على نموذج Edge Impulse الكامل الذي أنشأته في Edge Impulse Studio. يتكون نموذج Edge Impulse من كتلة (كتل) معالجة الإشارة، بالإضافة إلى أي كتلة (كتل) تعلم وشذوذ أضفتها ودرّبتها. تُجمّع ملفات EIM لبنية نظامك الخاصة، وتُستخدم لتشغيل الاستدلال تلقائيًا على نظامك.

فك ضغط الملف المُنزّل وانسخ ملف .eim إلى مجلد eim-modelfile على جهاز Pi. بعد ذلك، أدخل الأوامر التالية في سطر الأوامر لجعل ملف .eim قابلاً للتنفيذ من قِبل النظام:

cd eim-modelfile

chmod u+x ./modelfile.eim

cd ..

وأخيرًا، شغّل تطبيق وصف الصور بلغة بايثون باستخدام الأمر:

python ai_app.py

بمجرد بدء تشغيل التطبيق، استخدم متصفح ويب (سواءً كان هاتفًا محمولًا أو حاسوبًا شخصيًا) للوصول إليه، وسترى على صفحة الويب بث فيديو مباشر من الكاميرا، بالإضافة إلى مربع نصي يعرض العلامات التي تصف بث الفيديو بشكل أفضل.




النتائج

أصبحت فكرة وصف الصور ممكنة الآن من خلال تصميم مُحسّن لربط الصور بالكلمات المفتاحية، وذلك بناءً على مجال محدد. يلتقط تطبيق النشر إطارات من كاميرا Raspberry Pi، ويستخدم حزمة تطوير البرامج Edge Impulse Linux SDK لمعالجة الصور مسبقًا، وتحديد احتمالات ارتباط كل علامة بالصورة المُعطاة. ثم تُدمج الكلمات الثلاث المحتملة لتكوين جملة، تُعرض على واجهة مستخدم ويب مع موجز الفيديو.





بما أن كل وسم يستخدم خلية إخراج خاصة به، فإن النموذج حر تمامًا في إخراج أي تركيبة، سواءً تدربنا على تلك التركيبة المحددة أم لا. ونتيجةً لذلك، يُمكن للنموذج إعادة دمج الميزات المكتسبة وإنشاء تركيبة كلمات رئيسية جديدة. أثناء النشر، لاحظتُ هذه الحالة عندما عُرضت على النموذج صورة لغرفة معيشة بها نبتة. كان من المذهل أن أرى، من خلال التدريب، أن النموذج فهم جميع تركيبات صور القطار، وتمكن من وصف وجود نبتة وعدم وجود شخص في الصورة.

الخلاصة
يُظهر هذا المشروع مدى فعالية فهم الصور وفعاليته عند تصميمه مع مراعاة الكفاءة. فبدلاً من تصنيف الصورة تحت مسمى واحد (مثل: سيارة، شخص، كلب، خوذة، إلخ)، يُمكننا تمكين أجهزة الكمبيوتر من وصف ما تراه.

ومع ذلك، فإن معظم نماذج ترجمة الصور مُكلفة، ولا تُعزز الاستدامة العالمية، وفي معظم الأحيان غير مُناسبة لتطبيقات الذكاء الاصطناعي الطرفي. في هذه الحالة، من خلال الاستفادة من نماذج تحويل الصور إلى كلمات رئيسية خاصة بمجال مُحدد، يُمكننا تقليل موارد التدريب والنشر اللازمة نظرًا لانخفاض البيانات الحسابية بشكل كبير. مع تقدم التكنولوجيا، يهدف مستقبل ترجمة الصور إلى تحسين رؤية الكمبيوتر وفهمه، مما يسمح لأنظمة الذكاء الاصطناعي بالتفاعل مع البيئة بطرق أكثر فعالية.


الجمعة، 15 نوفمبر 2024

قفص طيور ذكي مع تقنية إنترنت الأشياء الخلوية

 نظام إدارة الدواجن الذي يستخدم تقنية إنترنت الأشياء المتقدمة للسماح لك بإطعام قطيعك ومراقبته عن بعد.


الأشياء المستخدمة في هذا المشروع

مكونات الأجهزة

Particle B-SoM LTE CAT1/3G/2G with EtherSIM for Europe (B524

Particle M.2 SoM Evaluation Board

SG90 Micro-servo motor
Hi-Link 5V 10W AC to DC Power Supply Module
Seeed Studio Grove - Relay

مصباح التنغستن

طرف مسماري ذو دبوسين بقطر 5.08 مم

16A 3 Pin Plug Top

تطبيقات البرمجيات والخدمات عبر الإنترنت

Particle Build Web IDE

Microsoft VS Code

القصة

المشكلة

إن إدارة قطيع من الدجاج تمثل تحديات كبيرة، بما في ذلك عمليات التغذية التي تستغرق وقتًا طويلاً، والمراقبة البيئية غير الكافية، وقدرات الإدارة عن بعد المحدودة. غالبًا ما تؤدي الأساليب التقليدية إلى أنظمة غذائية غير متسقة، وظروف معيشية دون المستوى الأمثل، وتأخر الاستجابة للقضايا بسبب عدم القدرة على الوصول إلى البيانات في الوقت الفعلي. لا تؤثر هذه الاختلالات على صحة وإنتاجية الدجاج فحسب، بل تزيد أيضًا من عبء العمل والإجهاد لمزارعي الدواجن، سواء كانوا من عشاق الدواجن في الفناء الخلفي أو المحترفين على حد سواء. كحل لهذه المشكلة، تم تطوير Smart Chicken Coop.


الحل

نقدم Smart Coop، وهو نظام يغير قواعد اللعبة لكل من عشاق الدواجن في الفناء الخلفي ومزارعي الدواجن المحترفين. من خلال الاستفادة من قوة تقنية إنترنت الأشياء الخلوية المتطورة، يحول هذا النظام المبتكر رعاية الدجاج من خلال السماح لك بإطعام ومراقبة قطيعك من أي مكان في العالم.


تخيل هذا: يمكنك بسهولة إدارة دجاجك عن بُعد ببضع نقرات فقط على لوحة تحكم ويب أنيقة وسهلة الاستخدام. يستخدم قفص الدجاج الذكي منصة إنترنت الأشياء القوية من Particle، والتي تبسط عملية بناء المنتجات المتصلة ونشرها وإدارتها. بفضل حلول الاتصال الموثوقة من Particle والخدمات السحابية القوية، فإن قفص الدجاج الذكي الخاص بك متصل بالإنترنت دائمًا ويمكن الوصول إليه.


إحدى الميزات البارزة لقفص الدجاج هي آلية التغذية المزدوجة. يتيح لك هذا التصميم الذكي التبديل بين أنواع مختلفة من الأعلاف، مما يضمن حصول دجاجك على نظام غذائي متوازن بأقل جهد. بالإضافة إلى ذلك، تم تجهيز قفص الدجاج بأجهزة استشعار متقدمة لدرجة الحرارة والرطوبة، مما يوفر تحكمًا ذكيًا في المناخ للحفاظ على راحة دجاجك ورعايته جيدًا في جميع الأوقات.


قفص الدجاج الذكي ليس مجرد منتج؛ إنه ثورة في إدارة الدواجن، حيث يوفر الراحة والموثوقية وراحة البال. سواء كنت قريبًا أو بعيدًا، فإن دجاجك على بعد نقرة واحدة من تلقي أفضل رعاية ممكنة.


متطلبات الأجهزة

Particle B524 SoM

لوحة تقييم سلسلة B

مستشعر درجة الحرارة والرطوبة DHT11

سيرفو الدوران المستمر SG90

مصباح تنجستن

وحدة التتابع

مصدر طاقة High-Link (1A عند 5V)

هوائي خلوي (موصل U.FL)

كابل Micro USB

أسلاك السيليكون

أجزاء مطبوعة ثلاثية الأبعاد لوحدة التغذية والإلكترونيات

كتلة طرفية لولبية

مصدر طاقة تيار متردد ومقبس ثلاثي السنون

قفص دجاج

متطلبات البرامج

Visual Studio Code مع ملحق Particle Workbench

Particle Web IDE أو Particle Workbench

حساب Particle (أنشئ حسابًا على setup.particle.io)

Fusion 360 (لتصميم الأجزاء المخصصة)

HTML وJavaScript وCSS (للوحة معلومات الويب)

تدفق البيانات


الجسيم B524 SoM والإعداد


تُشغل وحدة B-SoM هذا المشروع. تُعَد وحدة B-SoM وحدة إنترنت الأشياء الرائدة لدينا للمنتجات المتصلة بالشبكة الخلوية. وهي تعمل على منصة إنترنت الأشياء كخدمة من Particle — والتي يتم تضمينها مجانًا لأول 100 جهاز لديك — وتتضمن بطاقة SIM مدمجة عالمية مجانية وخطة بيانات. تم تحسين وحدة B-SoM للإنتاج الضخم والتوسع، وهي مصممة ليتم دمجها مباشرة في تصميم لوحة الدوائر الخاصة بك، وتوصيل موصل M.2 NGFF باللوحة، مما يسمح بتغيير الوحدة أو ترقيتها بسهولة.

لاستخدام هذه الوحدة، يجب أن نستخدم لوحة Eval من سلسلة B وهي لوحة توصيل بسيطة لسلسلة B من وحدات إنترنت الأشياء الخلوية من Particle، للاستفادة من الوحدة


يعد إعداد لوحة التقييم أمرًا بسيطًا: قم بتوصيل هوائي الهاتف الخلوي بموصل U.FL المسمى CELL على SoM، وقم بتوصيل الوحدة بلوحة التقييم، وقم بتشغيل مفتاح طاقة SoM، وقم بتوصيل لوحة التقييم بالكمبيوتر عبر كابل micro USB.


إعداد B5 SoM

انتقل إلى setup.particle.io وقم بإنشاء حساب إذا لم يكن لديك حساب. سيسمح لك هذا بتكوين جهازك وتوصيله بسحابة Particle.












عند اتباع العملية بشكل صحيح، يمكنك رؤية جهازك متصلاً بالإنترنت في Particle Cloud.

طاولة عمل الجسيمات

يمكننا برمجة لوحة Particle بطريقتين: إما من خلال Particle Web IDE أو من خلال Particle Workbench. من أجل البساطة، نستخدم Particle Workbench. لتثبيت Workbench، تحتاج إلى Visual Studio Code. الأمر سهل للغاية - فقط ألق نظرة على هذا. ثم أنشأنا مشروعًا جديدًا باسم "Smart Coop"


أجهزة الاستشعار والمحركات


يقيس مستشعر DHT11 درجة الحرارة والرطوبة، مما يجعله مثاليًا لمراقبة البيئة. يتمتع بمدى درجة حرارة يتراوح بين 0-50 درجة مئوية بدقة ±2 درجة مئوية، ونطاق رطوبة يتراوح بين 20-90% رطوبة نسبية بدقة ±5% رطوبة نسبية. يعمل المستشعر بمصدر طاقة 3.5-5.5 فولت تيار مستمر ويتواصل عبر واجهة رقمية أحادية السلك. يوفر قراءات بمعدل قراءة واحدة في الثانية، مما يضمن بيانات في الوقت المناسب للتحكم في البيئة.

وحدة التتابع


تُستخدم وحدة التتابع للتحكم في إمداد مصباح التنغستن بالطاقة بناءً على قراءات درجة الحرارة. تعمل بجهد تشغيل 5 فولت ويمكنها تبديل الفولتات الأعلى حتى 250 فولت تيار متردد أو 30 فولت تيار مستمر، مع سعة معالجة تيار تصل إلى 10 أمبير. تحتوي الوحدة على ثلاثة اتصالات رئيسية: VCC وGND وإشارة إدخال من المتحكم الدقيق. عندما تنخفض درجة الحرارة إلى ما دون عتبة محددة، يرسل المتحكم الدقيق إشارة إلى المرحل لإغلاق الدائرة، وتشغيل المصباح لتوفير الحرارة. بمجرد الوصول إلى درجة الحرارة المطلوبة، يرسل المتحكم الدقيق إشارة إلى المرحل لفتح الدائرة، وإيقاف تشغيل المصباح.

سيرفو الدوران المستمر


يستخدم سيرفو الدوران المستمر SG90 لتوزيع الطعام على فترات منتظمة. ويعمل على نطاق جهد يتراوح بين 4.8 و6 فولت، وبسرعة تقارب 110 دورة في الدقيقة عند 6 فولت وعزم دوران يبلغ 1.2 كجم-سم عند 4.8 فولت. ويتم التحكم في السيرفو بواسطة إشارة تعديل عرض النبضة (PWM)، حيث تحدد مدة النبضة سرعة واتجاه الدوران. ويحتوي على ثلاثة أسلاك توصيل: VCC للطاقة، وGND للأرض، وسلك إشارة لاستقبال نبضات التحكم من المتحكم الدقيق. ومن خلال ضبط إشارة تعديل عرض النبضة، يمكن للمتحكم الدقيق التحكم في الدوران المستمر للسيرفو لتوزيع الطعام حسب الحاجة.

الاختبار


قبل المتابعة، قمنا بإنهاء الكود عن طريق توصيل المكونات بأسلاك التوصيل وفقًا لهذه المخططات التخطيطية.


في الاختبار، قمنا بتوصيل سيرفو واحد فقط بسبب السحب الزائد للتيار، وفي المستقبل سنضيف سيرفو آخر أيضًا.

المكتبات الأساسية

نحن نستخدم مكتبتين للقياس من مستشعر DHT11، وهما Adafruit_Sensor، وDHT، ومكتبة ntp-time للحفاظ على مزامنة الوقت مع ساعة الإنترنت.

الموقع الإلكتروني

تم تطوير موقع المشروع باستخدام HTML وJavaScript وCSS، مما يوفر واجهة سهلة الاستخدام لمراقبة التعاونية الذكية والتحكم فيها.



لقد استخدمنا Fusion 360 لتصميم صناديق مخصصة للوحدات الإلكترونية ووحدات التغذية، مع ضمان ملاءمتها تمامًا داخل القفص. يتم استخدام آلية لولبية أرخميدس، متصلة بمحرك المؤازرة، لتوزيع الطعام بكفاءة. يتم استخدام إعداد التغذية المزدوجة لزيادة توافر الطعام وتقليل مخاطر نقص الغذاء.



إليكم الأجزاء المطبوعة ثلاثية الأبعاد التي أنتجناها. وقد صُممت هذه المكونات لتتناسب بسلاسة مع بقية البنية التحتية للقفص. والآن، يمكننا البدء في التجميع.


التجميع

أولاً، قمنا بربط محرك المؤازرة بوحدة التغذية، مع التأكد من تثبيته بشكل آمن في مكانه للتعامل مع الدوران المطلوب لآلية برغي أرخميدس.


ثم قمنا بتوصيل برغي أرخميدس إلى كلا محركي المؤازرة.



لتشغيل لوحة التقييم، استخدمنا مصدر طاقة High-Link، والذي يوفر 1 أمبير من التيار عند 5 فولت. وهذا يضمن مصدر طاقة مستقر لجميع المكونات الإلكترونية.


تم توصيل مصدر الطاقة High-Link هذا بلوحة الدوائر المطبوعة ذات النقاط الخضراء باستخدام كتلة طرفية لولبية، مما يوفر اتصالاً آمنًا وموثوقًا به.

بعد ذلك، قمنا بوضع المكونات الإلكترونية واحدًا تلو الآخر وتوصيلها وفقًا للمخططات. يتضمن ذلك مستشعر DHT11 والمرحل والمكونات الضرورية الأخرى لضمان التشغيل السلس.


بعد الانتهاء من التجميع، سيكون لديك أربعة أسلاك متبقية: اثنان لمصدر الطاقة المتردد واثنان لمصباح التدفئة.

سيتم توصيل أسلاك التيار المتردد بمقبس ثلاثي الدبابيس، مما يوفر الطاقة اللازمة للنظام بأكمله.

يتم هنا استخدام مصباح التنغستن للتدفئة، والذي تم اختياره لموثوقيته وكفاءته في الحفاظ على درجة الحرارة المطلوبة.

مع تجميع جميع المكونات وتوصيلها، يمكننا ربط كل شيء بحظيرتنا لجعلها ذكية.

أجزاء ومرفقات مخصصة

3D files

المخططات

الدائرة

شفرة

شفرة