الخطوة ١: صنّع
ما هو؟
استخدم الاتصال اللاسلكي لاستشعار مدى اقتراب جهاز مايكروبت الآخر، ثم أنشئ لعبة للبحث عن الكنز، أو استخدم هذه التقنية لمساعدة الأشخاص على معرفة ما إذا كانوا يحافظون على مسافة اجتماعية آمنة.
مقدمة
دليل البرمجة
كيف يعمل ؟
- تحتاج إلى جهازَي مايكروبت على الأقل لتنفيذ ذلك. سننشئ برنامجين مختلفين: الأول للمرسل، الذي يرسل باستمرار رسالة لاسلكية منخفضة الطاقة، والثاني للمستقبل. البرنامج الآخر لجهاز الاستقبال.
- عندما يلتقط جهاز الاستقبال رسالة من المرسل، فإنه يخزن قوته في متغير يسمى «إشارة (signal)» ويظهرها عل شاشة العرض الخاصة به.
- تصبح الإشارة اللاسلكية أقوى كلما اقتربت من جهاز الإرسال؛ لذلك، إذا كانت الإشارة قوية، فهذا يعني أن الجهاز لآخر قريب على الأرجح.
- إذا كانت الإشارة ضعيفة، فهذا يعني أن الجهاز الآخر بعيد على الأرجح.
- يعرض الجهاز شكلا بيانيًا بالأعمدة، يزداد ارتفاعه كلما ازدادت قوة الإشارة واقترب الجهاز الآخر. ويستخدم كتلة الرياضيات «دالة تحويل (map)» لتحويل قوة الإشارة من نطاق (-95 ) [ضعيفة] إلى (42-) [قوية] إلى النطاق من (0-9)، حتى يمكن استخدامها لرسم الأعمدة البيانية.
نسخة Python
- لا تحتوي لغة «بايثون» في البرمجة على دالة مدمجة لرسم الأعمدة البيانية أو «دالة التحويل»، لذلك تعمل بطريقة مختلفة قليلًا. تضيء جميع المصابيح عندما تقترب من جهاز الإرسال (Beacon)، وكلما اقتربت منه أكثر، ازدادت شدة إضاءتها.
- يتم أخذ قراءات قوة الإشارة باستخدام الأمر البرمجي
radio.receive_full(). يوفر هذا الأمر الرسالة ،قوة الإشارة، والطابع الزمني. نحن نحتاج فقط إلى معرفة قوة الإشارة، لذلك نستخدمsignal = message[1]لاستخراجها وتخزينها في متغير يُسمّى «إشارة (signal)». - قد تتراوح قوة الإشارة بين -98 (أضعف إشارة) و-45 (أقوى إشارة). ويُعرّف برنامج «بايثون» دالة تُسمّى «دالة التحويل (map)»لتحويل الأرقام ضمن هذا النطاق إلى نطاق من (0-9)، بحيث يمكننا استخدامها لتغيير سطوع المصابيح للشاشة. تعني (0) أن المصباح مطفأ.و (9) يعمل بأقصى درجة سطوع. (قد ترغب في إعادة استخدام هذه الدالة في مشاريع «بايثون» الأخرى؛ لأنها تعمل بطريقة مشابهة جدًا لكتلة «دالة التحويل» البرمجية على «ميك كود»).
- ينشئ برنامج «بايثون» صورة فارغة بحجم (٥×٥) تُسمّى «ضوء (light)» باستخدام الأمر `light = Image(5,5)` ، ويتم تغيير درجة سطوعها باستخدام الأمر
`light.fill()`.
المطلوب
- مايكروبتان وحزمة بطاريات
- محرر «بايثون» أو «ميك كود»
- حزمة بطاريات (اختياري)
الخطوة ٢: بَرمج
المرسل
المستقبل
1from microbit import *
2import radio
3radio.config(group=1)
4radio.on()
5light = Image(5,5) # create an empty image
6
7# function to map signal stength to LED brightness
8def map(value, fromMin, fromMax, toMin, toMax):
9 fromRange = fromMax - fromMin
10 toRange = toMax - toMin
11 valueScaled = float(value - fromMin) / float(fromRange)
12 return toMin + (valueScaled * toRange)
13
14while True:
15 message = radio.receive_full()
16 if message:
17 signal = message[1]
18 brightness = map(signal, -98, -44, 0, 9)
19 light.fill(round(brightness))
20 display.show(light)
21الخطوة ٣: حسّن
- ادمج برنامج جهاز الإرسال و الاستقبال بحيث تتمكن من الحصول على مايكروبت واحد يقوم بالمهمتين معًا.
- اصنع رباطا للمعصم حتى تتمكن من ارتداء الجهاز ككاشف.
- ما مدى قوة الإشارة عندما تكون على بعد متر أو مترين؟ قم بتعديل الرمز البرمجي لإطلاق إنذار مرئي أو مسموع عندما يكون شخص ما قريبًا جدًا.
- استخدم هذه البرامج لإنشاء لعبة البحث عن الكنز: قم بإخفاء جهاز الإرشاد وضع رمز جهاز الاستقبال على الكثير من أجهزة مايكروبت (micro:bit):
- إذا كنت في الهواء الطلق أو في مساحة كبيرة، فجرّب تغيير قوة جهاز الإرسال. قد يكون أي رقم من 0 إلى 7


