انتقل إلى المحتوى

الفيزياء والتكنولوجيا

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

معلومات الإعلان عن الـ BLE

ملاحظة: إذا كان لديك اقتراحات لتحسين التوضيح، فيرجى الاستفادة من التفاصيل.

هذه معلومات حول بروتوكول الإعلان عبر BLE الذي تستخدمه BroodMinder لجمع البيانات. في الواقع، يستخدم جهازنا BroodMinder-CELL وWiFi و-SubHub الإعلانات للتنصت على الأجهزة ثم إعادة توجيه البيانات مباشرة إلى MyBroodMinder.com.

هناك العديد من برامج مستكشف BLE المتوفرة. بعض من أفضلها:

  • Android & iOS – nrfConnect من Nordic Semiconductor. الإصدار الخاص بنظام Android هو الأفضل، ولكن نستخدم كلاهما طوال الوقت. يحتوي على ميزة جميلة لعرض مستوى الإشارة.
  • PC – Bluetooth LE Explorer من Microsoft. للأسف، هذا البرنامج لا يعرض البيانات الإعلانية.
  • Mac – BlueSee – تبدو هذه التطبيق جيدة وتعرض بيانات الشركات المصنعة في حزمة الإعلان.

من المحتمل أن تلاحظ أن البايتات الثلاثة الأولى من مُعرف الجهاز هي دائمًا 06:09:16 يليها معرف الجهاز الخاص الذي يكون دائمًا Model:ID:ID. بعض الأجهزة (iOS و Mac) تخفي المعرف الحقيقي، لذا نضيف ذلك أيضًا في حقل الاسم في حزمة الإعلان الموسعة.

تكوين حزمة الإعلان لـ BroodMinder

عند قراءة حزم الإعلانات من خلال BLE، يمكنك التعرف على منتجات BroodMinder من خلال النظر إلى التالي.

ستكون البيانات مثل هذا. – هذا مثال من الجهاز 43:30:07

GAP Scan Response Event ------------------------------------------------------------------------------------

ble_evt_gap_scan_response: rssi=-77، packet_type=0، sender=[ 07 30 43 80 07 00 ]، address_type=0، bond=255، data=[ 02 01 06 02 0a 03 18 ff 8d 02 2b 15 02 00 02 21 00 d0 62 00 ff 7f 05 80 37 07 30 43 00 00 00 ]

ملاحظة: القيم بالعدد الكامل ما لم تسبق بـ 0x

1) تحقق من علامة "بيانات محددة من الشركة" البايتات 6 و 7 = 0x18، 0xff

2) تحقق من IF، LLC كالشركة المصنعة البايتات 8 و 9 = 0x8d، 0x02

البايتات 10-29 هي البيانات من BroodMinder كما هو موضح أدناه. DeviceModelIFllc_1 = 0x2b (43d = ميزان) DeviceVersionMinor_1 = 0x15 (21d) DeviceVersionMajor_1 = 0x02 (FW 2.21) Elapsed_2V2 = 0x21 (33d) Temperature_2V2 = 0x62d0 WeightL_2V2 = 0x7FFF WeightR_2V2 = 0x8005

الرسم التخطيطي لجميع النماذج موجود في الصفحة التالية

الأساسية
البايت النوع القيمة المعلمة
0 طول الحقل الإعلاني 02
1 نوع الحقل 01 قابل للاتصال
2 القيمة 06 اكتشاف LE العام، قابل للاتصال، جهاز وضع واحد
3 طول الحقل الإعلاني 02
4 نوع الحقل 0A طاقة البث
5 القيمة 03 الطاقة في DB
6 طول الحقل الإعلاني 24
7 نوع الحقل FF بيانات الشركة المصنعة
8 القيمة 8d IF، LLC = 0x028d، 653
9 القيمة 02 IF، LLC = 0x028d، 653
10 القيمة الطراز
11 القيمة الإصدار الثانوي
12 القيمة الإصدار الأساسي
13 القيمة درجة الحرارة الحية 1 47/49/56/57/58 (SM&XLR)
14 القيمة البطارية
15 القيمة المرور
16 القيمة المرور
17 القيمة درجة الحرارة 47 فما فوق هو مئوية + 5000
18 القيمة درجة الحرارة
19 القيمة درجة الحرارة الفعلية2 47/49/56/57/58 (SM&XLR)
20 القيمة الوزن الأيسر
21 القيمة الوزن الأيسر
22 القيمة الوزن الأيمن
23 القيمة الوزن الأيمن
24 القيمة الرطوبة ستكون صفر لـ 41/47/49/52
25 القيمة الوزن الأيسر2/SM_Time0 49/57/58 (XLR)
26 القيمة الوزن الأيسر2/SM_Time1 49/57/58 (XLR)
27 القيمة الوزن الأيمن2/SM_Time2 49/57/58 (XLR)
28 القيمة الوزن الأيمن2/SM_Time3 49/57/58 (XLR)
29 القيمة الوزن الإجمالي الفوري / حالة السرب 47/49/56/57/58 (SM&XLR)
30 القيمة الوزن الإجمالي الفوري 47/49/56/57/58 (SM&XLR)
ثانوي حزمة الإعلان الموسعة
بایت النوع القيمة المعلمومات
0 طول الحقل الإعلاني 09
1 النوع 09 الاسم المحلي الكامل
2 4' اسم ascii
3 2'
4 :'
5 0'
6 0'
7 :'
8 0'
9 0'

ملاحظة: يختلف BRM52 BroodMinder-SubHub كما هو موضح أدناه.

وفيما يلي المعادلات

إذا (ModelNumber == 41 | ModelNumber == 42 | ModelNumber == 43)
{
    درجة الحرارة بالفهرنه = e.data[byteNumAdvTemperature_2V2] + (e.data[byteNumAdvTemperature_2V2 + 1] << 8);
    درجة الحرارة بالفهرنه = (درجة الحرارة بالفهرنه / Math.Pow(2, 16) * 165 - 40) * 9 / 5 + 32;
}
وإلا
{
    درجات الحرارة بالسليزية = e.data[byteNumAdvTemperature_2V2] + (e.data[byteNumAdvTemperature_2V2 + 1] << 8);
    درجة الحرارة بالسليزية = (درجة الحرارة بالسليزية - 5000) / 100;
    درجة الحرارة بالفهرنه = درجة الحرارة بالسليزية * 9 / 5 + 32;
}
النسبة المئوية للرطوبة = e.data[byteNumAdvHumidity_1V2];
إذا (ModelNumber == 43)
{
    الوزن الأيسر = e.data[byteNumAdvWeightL_2V2 + 1] * 256 + e.data[byteNumAdvWeightL_2V2 + 0] - 32767;
    الوزن المعياري الأيسر = الوزن الأيسر / 100;
    الوزن الأيمن = e.data[byteNumAdvWeightR_2V2 + 1] * 256 + e.data[byteNumAdvWeightR_2V2 + 0] - 32767;
    الوزن المعياري الأيمن = الوزن الأيمن / 100;
} 
وإلا إذا (ModelNumber == 49 | ModelNumber == 57 | ModelNumber == 58)
{
    الوزن الأيمن = e.data[byteNumAdvWeightL_2V2 + 1] * 256 + e.data[byteNumAdvWeightL_2V2 + 0] - 32767;
    weightScaledR = weightR / 100;
    weightL = e.data[byteNumAdvWeightR_2V2 + 1] * 256 + e.data[byteNumAdvWeightR_2V2 + 0] - 32767;
    weightScaledL = weightL / 100;
    weightR2 = e.data[byteNumAdvWeightL2_2V2 + 1] * 256 + e.data[byteNumAdvWeightL2_2V2 + 0] - 32767;
    weightScaledR2 = weightR2 / 100;
    weightL2 = e.data[byteNumAdvWeightR2_2V2 + 1] * 256 + e.data[byteNumAdvWeightR2_2V2 + 0] - 32767;
    weightScaledL2 = weightL2 / 100;
}
realTimeTemperature = ((float)(e.data[byteNumAdvRealTimeTemperature2] * 256 + e.data[byteNumAdvRealTimeTemperature1] - 5000) / 100) * 9 / 5 + 32;

realTimeWeight = (float)(e.data[byteNumAdvRealTimeWeight2] * 256 + e.data[byteNumAdvRealTimeWeight1] - 32767 ) / 100 ;

SM_Time هو الوقت الزمني اليونيكس لآخر حدث لدرجة الحرارة. Time0 = LSB، Time3 = MSB، سيكون الوقت منذ التمهيدي إذا لم يتم تعيين الوقت في الجهاز من خلال تزامن الجهاز.

جهاز BRM-52 BroodMinder-SubHub

يقوم -SubHub بإجراء بعض الإعلانات الخاطفة. يتغير الإعلان كل 5 ثوان لإرسال جهاز مختلف. سيتم التمرير من خلال جميع الأجهزة (بما في ذلك نفسه) ثم تكراره.

نحن نطلق عليها إعلانات مزيفة. اعتمادًا على النظام الذي يتم استخدامه، قد تكون قادرًا أو لا تكون قادرًًا (على سبيل المثال iOS) على رؤية معرف الجهاز الحقيقي (على سبيل المثال 06:09:16:52:01:23). ولهذا السبب نضع معرف الجهاز في البايت الإعلاني الموسع. ويرجى ملاحظة أنه من الصعب قراءة الإعلان الواسع لبعض الأجهزة، ومع ذلك، فعادة ما يمكنك قراءة معرف الجهاز الحقيقي.

يقع معرف الإعلان المزيف في البايت 13 و 19 و 30. ويجعل هذا العملية كالتالي:

  1. تحديد ما إذا كان هذا هو -SubHub من خلال المعرف (سواء المعرف الحقيقي أو المعرف في الإعلان الواسع). سيكون دائمًا 52:xx:xx.
  2. إذا كان جهاز "52"، ثم قم بتحليل البايت 13/19/30. على سبيل المثال، سيكون 43/01/23 هو 43:01:23
  3. قم بتحليل بقية حزمة الإعلان وفقًا لنوع الجهاز على أساس بايت النموذج (البايت 10)

سهل جدًا 😉

فيزياء جهاز BroodMinder-W

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

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

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

أ) الترتيب الافتراضي

هذا هو الترتيب الافتراضي مع الميزان في الجزء الأمامي من الخلية وقطعة 2×4 كدعم مساعد (محور دوران) في الخلف:

  ![image-20230409132020233](../assets/87_physics_and_tech_stuff.assets/image-20230409132020233.png)

إليك بعض الحسابات المحيطة بهذه الإعدادات:

افتراضات

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

حسابات

image-20230409132049073

عند استخدام لوحة خشب 2×4 قياسية كدعم خلفي ومحاذاتها مع الجزء الخلفي للخلية، يمكن حساب وزن الخلية الإجمالي W من الوزن على الميزان S كما يلي:

image-20230409132117498

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

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

image-20230409132140051

ب) الترتيب البديل ١

استنادًا إلى ما ورد أعلاه، يجب وضع الدعم المساعد 1 بوصة من الجزء الخلفي للخلية. يُوصى بتثبيت قطعة تقليمية في الجزء العلوي من قطعة 2×4. سيساعد هذا في تحديد موضع الدعم المساعد بدقة.

image-20230409132159801

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

c) ترتيب بديل ٢

يمكن استخدام نظام دعم مختلف يحتوي على نقطة دعم محددة ولا يتأثر بتوجيه الهيكل الداعم:

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

d) توازن جانبي

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

اقرأ الوزن من كل خلية حمل على حده عند التبديل إلى العرض في الوقت الحقيقي مع التطبيق. في هذا الوضع، يُعرض الوزن على الميزان كـ % يسار و % يمين. الجانب الأيمن من الميزان هو الجانب الذي يحتوي على ملصق تحديد الجهاز. لا تتطلب إجراءات إضافية إذا كان الفرق بين اليسار واليمين أقل من ١٠٪.

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

e) دعم الخلية الثلاثي النقاط

هناك طريقة للحد من الحاجة إلى التوازن الجانبي عن طريق إدخال نظام دعم ثلاثي النقاط حقيقي. الأجزاء مشابهة لتلك المستخدمة في الترتيب ٢ ولكن بدلاً من استخدام زاوية بوصة، يتعين عليك في هذا الترتيب استخدام زاوية ¾ بوصة. يتم حفر ثقب بقطر 7/32 بوصة في منتصف اللوح بدلاً من قطع كيرف. يستخدم مسمار آلي مشقوق بمقاس ¼ بوصة × 0.5 بوصة كدعم مركزي. سوف يقوم المسمار بقطع خيوطه الخاصة في اللوحة. يتم محاذاة المسمار الواقع في الرأس بحيث يمكن أن يرتاح على حافة زاوية الألومنيوم في نقطة واحدة دون أن ينزلق.

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

f) تحديد موقع ميزان برودميندر

تم التعامل في الغالب مع الدعم المساعد. دعونا نركز الآن على تحديد موقع الميزان.

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

تُظهر هذه الرسم البياني تأثير وضع الميزان على عامل تصحيح الميزان والخطأ الناتج عن وضع الميزان بشكل غير دقيق. التأثير هو ٥.٦٪ لكل بوصة.

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