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

الفيزياء والتقنية

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

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

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

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

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

  • Android & iOS – nrfConnect بواسطة Nordic Semiconductor. الإصدار الخاص بـ Android هو الأفضل، ولكن نستخدم كلاهما طوال الوقت. يحتوي على ميزة جميلة لرسم مستوى الإشارة.
  • PC – استكشاف Bluetooth LE بواسطة 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 الطاقة بوحدة ديسيبل
6 طول الحقل الإعلاني 24
7 نوع الحقل FF بيانات المُصنع
8 القيمة 8d IF, LLC = 0x028d, 653
9 القيمة 02 IF, LLC = 0x028d, 653
10 القيمة النموذج
11 القيمة الإصدار الفرعي
12 القيمة الإصدار الرئيسي
13 القيمة درجة الحرارة الفورية 47/49/56/57/58 (SM&XLR)
14 القيمة البطارية
15 القيمة مضى
16 القيمة مضى
17 القيمة درجة الحرارة 47 وما فوق هي في الدرجة المئوية + 5000
18 القيمة درجة الحرارة
19 القيمة درجة الحرارة الفورية 2 47/49/56/57/58 (صغيرة وكبيرة)
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 (صغيرة وكبيرة)
30 القيمة الوزن الكلي الحالي 47/49/56/57/58 (صغيرة وكبيرة)
ثانوي حزمة الإعلان الموسعة
بايت النوع القيمة المعلمة
0 طول الحقل الإعلاني 09
1 النوع 09 الاسم المحلي الكامل
2 4' الاسم الأسيوي
3 2'
4 :'
5 0'
6 0'
7 :'
8 0'
9 0'

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

هنا المعادلات

إذا (رقم النموذج == 41 | رقم النموذج == 42 | رقم النموذج == 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];
إذا (رقم النموذج == 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;
} 
وإلا إذا (رقم النموذج == 49 | رقم النموذج == 57 | رقم النموذج == 58)
{
    الوزن اليمين = e.data[byteNumAdvWeightL_2V2 + 1] * 256 ```ar
  • 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; } الحرارة في الوقت الحقيقي = ((float)(e.data[byteNumAdvRealTimeTemperature2] * 256 + e.data[byteNumAdvRealTimeTemperature1] - 5000) / 100) * 9 / 5 + 32;

الوزن في الوقت الحقيقي = (float)(e.data[byteNumAdvRealTimeWeight2] * 256 + e.data[byteNumAdvRealTimeWeight1] - 32767 ) / 100 ; نقطة الزمن SM_Time هي الوقت الذي حدث فيه آخر حدث للحرارة. Time0 = LSB ، Time3 = MSB ، سيكون الوقت منذ التمهيد إذا لم يتم تعيين الوقت في الجهاز من قبل مزامنة الجهاز.

لوحة الوزن

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

الهوية المزيفة تتواجد في البايت 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 جزءًا لا يتجزأ من نظام قياس إجمالي وزن الخلايا. عمومًا، كلما زادت الجهود المبذولة في هذا، كلما تحسنت النتائج. يبدأ نظام دعم الخلايا المعروضة أدناه من الأسهل إلى الأكثر تطورًا مع أعلى درجة من عدم اليقين إلى أقلها. من مهمة المستخدم الفردي أن يقرر ما إذا كان يجب تنفيذه.

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

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

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

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

image-20230409132020233

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

افتراضات

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

حسابات

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

image-20230409132049073

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

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

image-20230409132140051

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

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

image-20230409132159801

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

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

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

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

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

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

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

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

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

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

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