Physique et Technologie
Nous savons que beaucoup d'entre vous aiment bricoler. Ainsi, pour les étudiants intéressés et motivés, voici plus d'informations et des trucs de logiciel DIY.
Informations sur la Publicité BLE
Remarque : Si vous avez des suggestions pour améliorer l'explication, veuillez utiliser les détails.
Pour les âmes courageuses ayant l'audace de créer leur propre équipement de collecte de données, nous fournissons des informations sur le protocole de publicité BLE utilisé par BroodMinder. En effet, notre BroodMinder-CELL, WiFi, et -SubHub utilisent la publicité pour écouter les périphériques, puis transmettre les données directement à MyBroodMinder.com.
Il existe plusieurs bons programmes d'exploration BLE disponibles. Nos préférés sont :
- Android & iOS – nrfConnect de Nordic Semiconductor. La version Android est la meilleure, mais nous utilisons les deux tout le temps. Il dispose d'une fonctionnalité de graphique de niveau de signal agréable.
- PC – Bluetooth LE Explorer de Microsoft. Malheureusement, ce programme ne montre pas les données de publicité.
- Mac – BlueSee – Cette application semble bien fonctionner et affiche les données du fabricant dans le paquet publicitaire.
Vous remarquerez probablement que les 3 premiers octets de l'identifiant du périphérique sont toujours 06:09:16, puis vient l'identifiant particulier du périphérique qui est toujours Model:ID:ID. Certains périphériques (iOS & Mac) masquent le véritable identifiant, nous l'incluons donc également dans le champ du nom du paquet publicitaire étendu.
Composition du Paquet Publicitaire pour BroodMinder
Lorsque vous lisez des paquets publicitaires BLE, vous pouvez identifier les produits BroodMinder en regardant ce qui suit.
Les données ressembleront à ceci. – cet exemple provient du périphérique 43:30:07
Événement de Réponse de Balayage GAP ------------------------------------------------------------------------------------
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 ]
Remarque : Les valeurs sont en décimal sauf si précédées de 0x
1) Vérifier le drapeau "Données Spécifiques du Fabricant" Octets 6,7 = 0x18, 0xff
2) Vérifier si IF, LLC est le fabricant Octets 8,9 = 0x8d, 0x02
Les octets 10-29 sont les données provenant de BroodMinder comme décrit ci-dessous. DeviceModelIFllc_1 = 0x2b (43d = balance) DeviceVersionMinor_1 = 0x15 (21d) DeviceVersionMajor_1 = 0x02 (FW 2.21) Écoulé_2V2 = 0x21 (33d) Température_2V2 = 0x62d0 PoidsL_2V2 = 0x7FFF PoidsR_2V2 = 0x8005
La correspondance pour tous les modèles est sur la page suivante
PRIMAIRE | ||||
---|---|---|---|---|
Octet | Type | Valeur | Paramètre | |
0 | Longueur du champ publicitaire | 02 | ||
1 | Type de champ | 01 | Connectable | |
2 | Valeur | 06 | Découverte Générale LE, Connectable, Périphérique en mode Unique | |
3 | Longueur du champ publicitaire | 02 | ||
4 | Type de champ | 0A | Puissance d'émission | |
5 | Valeur | 03 | Puissance en dB | |
6 | Longueur du champ publicitaire | 24 | ||
7 | Type de champ | FF | Données du fabricant | |
8 | Valeur | 8d | IF, LLC = 0x028d, 653 | |
9 | Valeur | 02 | IF, LLC = 0x028d, 653 | |
10 | Valeur | Modèle | ||
11 | Valeur | Version Mineure | ||
12 | Valeur | Version Majeure | ||
13 | Valeur | Température en temps réel | 47/49/56/57/58 (SM&XLR) | |
14 | Valeur | Batterie | ||
15 | Valeur | Temps écoulé | ||
16 | Valeur | Temps écoulé | ||
17 | Valeur | Température | 47 et plus en centicenigrade + 5000 | |
18 | Valeur | Température | ||
19 | Valeur | Température en temps réel 2 | 47/49/56/57/58 (SM&XLR) | |
20 | Valeur | Poids L | ||
21 | Valeur | Poids L | ||
22 | Valeur | Poids R | ||
23 | Valeur | Poids R | ||
24 | Valeur | Humidité | sera de 0 pour 41/47/49/52 | |
25 | Valeur | Poids L2/SM_Temps0 | 49/57/58 (XLR) | |
26 | Valeur | Poids L2/SM_Temps1 | 49/57/58 (XLR) | |
27 | Valeur | Poids R2/SM_Temps2 | 49/57/58 (XLR) | |
28 | Valeur | Poids R2/SM_Temps3 | 49/57/58 (XLR) | |
29 | Valeur | Poids total en temps réel / État de l'essaim | 47/49/56/57/58 (SM&XLR) | |
30 | Valeur | Poids total en temps réel | 47/49/56/57/58 (SM&XLR) | |
SECONDAIRE | Paquet de publicité étendu | |||
Octet | Type | Valeur | Paramètre | |
0 | Longueur du champ d'annonce | 09 | ||
1 | Type | 09 | Nom Local Complet | |
2 | 4' | nom ascii | ||
3 | 2' | |||
4 | :' | |||
5 | 0' | |||
6 | 0' | |||
7 | :' | |||
8 | 0' | |||
9 | 0' |
Note : Le BRM52 BroodMinder-SubHub est différent comme expliqué ci-dessous.
Voici les équations
si (Numéro de modèle == 41| Numéro de modèle == 42| Numéro de modèle == 43) { températureDegrésF = e.data[byteNumAdvTempérature_2V2] + (e.data[byteNumAdvTempérature_2V2 + 1] << 8); températureDegrésF = (températureDegrésF / Math.Pow(2, 16) * 165 - 40) * 9 / 5 + 32; } sinon { double températureDegrésC = e.data[byteNumAdvTempérature_2V2] + (e.data[byteNumAdvTempérature_2V2 + 1] << 8); températureDegrésC = (températureDegrésC - 5000) / 100; températureDegrésF = températureDegrésC * 9 / 5 + 32; } humiditéPourcentage = e.data[byteNumAdvHumidité_1V2]; si (Numéro de modèle == 43) { poidsL = e.data[byteNumAdvPoidsL_2V2 + 1] * 256 + e.data[byteNumAdvPoidsL_2V2 + 0] - 32767; poidsÉtalonnéL = poidsL / 100; poidsR = e.data[byteNumAdvPoidsR_2V2 + 1] * 256 + e.data[byteNumAdvPoidsR_2V2 + 0] - 32767; poidsÉtalonnéR = poidsR / 100; } sinon si (Numéro de modèle == 49| Numéro de modèle == 57| Numéro de modèle == 58) { poidsR = e.data[byteNumAdvPoidsL_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 est le temps Unix du dernier événement de température. Time0 = LSB, Time3 = MSB, ce sera le temps depuis le démarrage si l'heure n'a pas été réglée dans le dispositif par une synchronisation de celui-ci.
BRM-52 BroodMinder-SubHub
Le -SubHub réalise une publicité astucieuse. La publicité change toutes les 5 secondes pour envoyer un appareil différent. Il passera en revue tous les appareils (y compris lui-même) puis recommencera.
Nous appelons cela des Publicités Fictives. Selon le système d'exploitation utilisé, vous pouvez ou non (par exemple sur iOS) voir le véritable ID de l'appareil. C'est pourquoi nous plaçons l'ID de l'appareil dans l'octet de publicité étendu. Notez également qu'il est difficile de lire la publicité étendue pour certains appareils, cependant pour ceux-ci, vous pouvez généralement lire le véritable ID de l'appareil.
L'ID fictif se trouve dans les octets 13, 19 et 30. Le processus est le suivant :
- Déterminer s'il s'agit d'un -SubHub par l'ID (soit le vrai ID soit l'ID dans la publicité étendue). Il sera toujours 52:xx:xx.
- S'il s'agit d'un appareil "52", alors analysez les octets 13/19/30. Par exemple, 43/01/23 sera 43:01:23
- Analysez le reste du paquet publicitaire en fonction du type d'appareil basé sur l'octet de modèle (octet 10)
Facile comme tout 😉
Physique du BroodMinder-W
Il existe de nombreuses façons d'utiliser la balance de ruche BroodMinder et comme elle ne mesure qu'une partie du poids total de la ruche, la conception et le positionnement du support auxiliaire et de la balance BroodMinder deviennent une part intégrale du système de mesure du poids total de la ruche. En général, plus d'efforts sont déployés à cet effet, meilleurs seront les résultats. Les systèmes de support de ruche indiqués ci-dessous vont du plus simple au plus sophistiqué, avec une incertitude plus élevée à plus faible. Il revient à l'utilisateur individuel de décider de ce qu'il souhaite mettre en place.
REMARQUE : la source d'erreur la plus courante est un support inadéquat sous la balance. Cela peut entraîner un comportement étrange lorsque la ruche se fléchit en se dilatant et en se contractant en raison du soleil, de la pluie, de la température, etc. Fournir un support plat améliorera les résultats. Une solution facile consiste à placer une feuille de contreplaqué de ¾ po (ou équivalent) sous les balances.
REMARQUE ADDITIONNELLE : Si tout ce que vous voulez voir est le flot de miel, un bon support n'est pas nécessaire. Vous devrez simplement ignorer les fluctuations quotidiennes. Vous pourrez toujours observer le changement global de poids.
a) Configuration par défaut
Il s'agit de la configuration par défaut avec la balance à l'avant de la ruche et un morceau de 2x4 comme support auxiliaire (point d'appui) à l'arrière :
Voici quelques calculs concernant la configuration :
Hypothèses
Le poids de la ruche W est réparti uniformément et le centre de gravité se trouve au milieu de la ruche. Pour simplifier, le surplomb avant de la planche inférieure n'est pas pris en compte. Le poids de la ruche est supposé être de 100 %.
Calculs
Lorsque vous utilisez du bois standard de 2x4 comme support arrière et que vous l'alignez avec l'arrière de la ruche, le poids total de la ruche W peut être calculé à partir du poids sur la balance S comme suit :
Par conséquent, utilisez 2,09 comme facteur de correction de balance de ruche par défaut dans l'application si vous utilisez cette configuration. Cela peut bien sûr être ajusté une fois que des mesures de poids sont disponibles.
Le graphique ci-dessous montre le facteur de correction de la balance pour différentes configurations de balance et de point d'appui. L'axe des X représente la position du point d'appui en pouces depuis l'arrière de la ruche. Les différentes lignes représentent la position de la ligne médiane de la balance en pouces depuis l'arrière de la ruche. Les flèches montrent l'exemple ci-dessus.
b) Configuration alternative 1
Selon ce qui précède, le support auxiliaire doit être placé à 1 pouce de l'arrière de la ruche. Il est recommandé de fixer une pièce de finition sur le dessus du 2x4. Cela aidera à positionner avec précision le support auxiliaire.
Maintenant Nous avons des bras de moment égaux E et F et le facteur de correction de la balance de la ruche devient 2,0, ce qui est la valeur par défaut dans l'application mobile. Cependant, il existe d'autres facteurs d'influence à ne pas négliger. Le vrai point de pivot de le support auxiliaire est n'importe où entre l'arrière de la ruche et l'avant du support auxiliaire en raison des variations de l'horizontalité du système de support et du potentiel de déformation du 2x4 lui-même.
c) Arrangement Alternatif 2
Un système de support différent peut être utilisé, qui a un point de pivot défini et n'est pas affecté par l'alignement de la structure de support :
Prenez un morceau de pin ou de chêne, d'environ ¾" d'épaisseur et 2" de large. La longueur doit être la largeur de la ruche. Faites une petite rainure dedans. La rainure doit être aussi profonde que la largeur de la lame de scie. Fixez ce morceau sur l'underside de la planche inférieure de la ruche. Alignez-le flush avec l'arrière. Ensuite, placez un morceau d'angle en aluminium de 1" par 1/8" 6061 ou 6063, de la même longueur que la bande de bois, en dessous pour soutenir la ruche. Le coin de l'angle en aluminium repose dans la rainure. La hauteur totale de l'angle en aluminium et du bois doit être égal ou légèrement plus grand que la hauteur de la balance pour garantir que la ruche est de niveau ou même légèrement inclinée vers l'avant pour garantir l'écoulement de l'eau loin de l'entrée de la ruche.
d) Équilibrage latéral
Tous les systèmes de support ci-dessus sont affectés par un décalage de poids latéral non défini car la ruche repose sur plus de trois points. Il y a deux points à l'avant à l'intérieur de la balance de la ruche et un support linéaire à l'arrière de la ruche. Cela pourrait entraîner une surcharge sur l'une des cellules de charge de la balance et par conséquent, un équilibrage latéral est généralement requis si le système de support sous la ruche n'est pas une plateforme continue, c'est-à-dire des parpaings séparés pour l'avant et l'arrière de la ruche.
Lisez le poids de chaque cellule de charge individuellement en passant à l'affichage en temps réel avec l'application. Dans ce mode, le poids sur la balance est affiché en %Gauche, %Droite. Le côté droit de la balance est le côté avec l'autocollant d'identification du dispositif. Aucune action supplémentaire n'est nécessaire si la différence G/D est inférieure à 10 %.
Sinon, calez la balance du côté avec la lecture de poids la plus basse jusqu'à ce que les lectures de poids correspondent. Alternativement, le calage peut également être effectué sous le support arrière du côté opposé à la faible lecture de poids.
e) Support de Ruche à 3 Points
Il existe un moyen de diminuer le besoin d'équilibrage latéral en introduisant un vrai système de support à 3 points. Les pièces sont similaires à celles utilisées dans l'arrangement 2 mais au lieu d'utiliser un angle de 1", pour cet arrangement, vous aurez besoin d'un angle de ¾". Un trou de 7/32" est percé au milieu de la planche au lieu de couper une rainure. Une vis de machine fendue de ¼" x 0,5" est utilisée comme support central. La vis coupera ses propres filets dans la planche. La fente dans la tête de vis est alignée de telle sorte qu'elle puisse reposer sur le bord de l'angle en aluminium en un seul point sans glisser.
Il y a un petit écart entre l'angle en aluminium et le panneau de bois. Il faut s'assurer que cet écart a une largeur uniforme à travers la ruche. La vis au milieu doit être le seul point de contact. Cela garantira que le poids correct est mesuré et en même temps c'est le "filet de sécurité" contre la chute de la ruche si une charge inégale excessive se produit, par exemple lors des inspections de la ruche.
f) Positionnement de la Balance BroodMinder
La plupart de ce qui précède a trait au support auxiliaire. Concentrons-nous maintenant sur le positionnement de la balance.
Comme indiqué dans les sections précédentes, il est souhaitable que la face avant de la balance soit placée en ligne avec la face avant du corps de la ruche. Le déplacer plus vers l'intérieur améliorerait la précision au détriment de la stabilité de la ruche et le déplacer plus vers l'extérieur réduirait la précision avec peu d'amélioration de la stabilité de la ruche.
Ce graphique montre l'influence du placement de la balance sur le facteur de correction de la balance et l'erreur de balance introduite en raison du positionnement incorrect de la balance. L'influence est de 5,6 % par pouce.
Il est conseillé de marquer la position de la balance sur la planche inférieure de la ruche ou de fixer une butée mécanique. Cela aidera à remettre la balance au même endroit après qu'elle ait été retirée pour un changement de batterie ou pour une autre raison.