Gå til innhald

Fysikk og Teknologi

Vi vet at mange av dere liker å fikle. Så, for den interesserte og motiverte studenten, her er mer informasjon og DIY programvare.

BLE Annonseringsinformasjon

Merk: Hvis du har forslag til forbedring av forklaringen, så gi oss beskjed.

For de modige sjelene med mot til å lage sitt eget datainnsamlingsutstyr, gir vi informasjon om BLE annonseringsprotokollen som BroodMinder bruker. Faktisk bruker vår egen BroodMinder-CELL, WiFi, og -SubHub annonseringen for å avlytte enhetene og deretter videresende dataene direkte til MyBroodMinder.com.

Det finnes flere fine BLE Explorer-programmer tilgjengelig. Våre favoritter er:

  • Android & iOS – nrfConnect av Nordic Semiconductor. Android-versjonen er best, men vi bruker begge hele tiden. Den har en fin grafikkfunksjon for signalnivå.
  • PC – Bluetooth LE Explorer av Microsoft. Dessverre viser ikke dette programmet annonseringsdataene.
  • Mac – BlueSee – Denne appen ser ut til å fungere bra og viser produsentens data i annonseringspakken.

Du vil sannsynligvis merke at de første 3 byte av enhets-ID-en alltid er 06:09:16, deretter følger den spesifikke enhets-ID-en som alltid er Modell:ID:ID. Noen enheter (iOS & Mac) skjuler den sanne ID-en, så vi inkluderer også det i navnefeltet i den utvidede annonseringspakken.

Annonseringspakkeoppsett for BroodMinder

Når du leser annonseringspakker fra BLE, kan du identifisere BroodMinder-produkter ved å se på følgende.

Dataene vil se omtrent slik ut. – dette eksemplet er fra enhet 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 ]

Merk: Verdier er i desimal med mindre de er foran med 0x

1) Sjekk for "Produsent Spesifikke Data" flagg Byte 6,7 = 0x18, 0xff

2) Sjekk for IF, LLC som produsent Byte 8,9 = 0x8d, 0x02

Byte 10-29 er dataene fra BroodMinder som beskrevet nedenfor. DeviceModelIFllc_1 = 0x2b (43d = skala) DeviceVersionMinor_1 = 0x15 (21d) DeviceVersionMajor_1 = 0x02 (FW 2.21) Elapsed_2V2 = 0x21 (33d) Temperature_2V2 = 0x62d0 WeightL_2V2 = 0x7FFF WeightR_2V2 = 0x8005

Kartleggingen for alle modeller er på neste side

PRIMÆR
Byte Type Verdi Parameter
0 Annonse felt Lengde 02
1 Felt Type 01 Tilkoblingsbar
2 Verdi 06 LE Generell Oppdagelse, Tilkoblingsbar, Enkelt Modus Enhet
3 Annonse felt Lengde 02
4 Felt Type 0A Xmit Kraft
5 Verdi 03 Kraft i DB
6 Annonse felt Lengde 24
7 Felt Type FF Produsentdata
8 Verdi 8d IF, LLC = 0x028d, 653
9 Verdi 02 IF, LLC = 0x028d, 653
10 Verdi Modell
11 Verdi Versjon Minor
12 Verdi Versjon Major
13 Verdi Realtime Temp1 47/49/56/57/58 (SM&XLR)
14 Verdi Batteri
15 Verdi Forløpt
16 Verdi Forløpt
17 Verdi Temperatur 47 og over er centigrader + 5000
18 Verdi Temperatur
19 Verdi Realtime Temp2 47/49/56/57/58 (SM&XLR)
20 Verdi VektL
21 Verdi VektL
22 Verdi VektR
23 Verdi VektR
24 Verdi Fuktighet vil være 0 for 41/47/49/52
25 Verdi VektL2/SM_Tid0 49/57/58 (XLR)
26 Verdi VektL2/SM_Tid1 49/57/58 (XLR)
27 Verdi VektR2/SM_Tid2 49/57/58 (XLR)
28 Verdi VektR2/SM_Tid3 49/57/58 (XLR)
29 Verdi Realtime totalvekt / Svarmtilstand 47/49/56/57/58 (SM&XLR)
30 Verdi Realtime total vekt 47/49/56/57/58 (SM&XLR)
SEKUNDÆR Utvidet annonseringspakke
Byte Type Verdi Parameter
0 Annonse felt Lengde 09
1 Type 09 Fullstendig lokal navn
2 4' ascii navn
3 2'
4 :'
5 0'
6 0'
7 :'
8 0'
9 0'

Merk: BRM52 BroodMinder-SubHub er forskjellig som forklart nedenfor.

Her er likningene

if (ModelNumber == 41 | ModelNumber == 42 | ModelNumber == 43)
{
    temperatureDegreesF = e.data[byteNumAdvTemperature_2V2] +       (e.data[byteNumAdvTemperature_2V2 + 1] << 8);
    temperatureDegreesF = (temperatureDegreesF / Math.Pow(2, 16) * 165 - 40) * 9 / 5 + 32;
}
else
{
    double temperatureDegreesC = e.data[byteNumAdvTemperature_2V2] + (e.data[byteNumAdvTemperature_2V2 + 1] << 8);
    temperatureDegreesC = (temperatureDegreesC - 5000) / 100;
    temperatureDegreesF = temperatureDegreesC * 9 / 5 + 32;
}
    humidityPercent = e.data[byteNumAdvHumidity_1V2];
if (ModelNumber == 43)
{
    weightL = e.data[byteNumAdvWeightL_2V2 + 1] * 256 + e.data[byteNumAdvWeightL_2V2 + 0] - 32767;
    weightScaledL = weightL / 100;
    weightR = e.data[byteNumAdvWeightR_2V2 + 1] * 256 + e.data[byteNumAdvWeightR_2V2 + 0] - 32767;
    weightScaledR = weightR / 100;
} 
else if (ModelNumber == 49 | ModelNumber == 57 | ModelNumber == 58)
{
    weightR = 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 er unix-tiden for den siste temperaturhendelsen. Time0 = LSB, Time3 = MSB, det vil være tiden siden oppstart hvis tiden ikke har blitt satt i enheten av en enhetssynkronisering.

BRM-52 BroodMinder-SubHub

-SubHub gjør noen tricky annonseringer. Annonseringen endres hvert 5. sekund for å sende ut en annen enhet. Den vil rulle gjennom alle enheter (inkludert seg selv) og deretter gjenta.

Vi kaller disse Mock Annonseringer. Avhengig av hvilket operativsystem som brukes, kan du kanskje se den sanne enhets-ID-en (f.eks. 06:09:16:52:01:23). Det er derfor vi plasserer enhets-ID-en i den utvidede annonseringsbyte. Vær også oppmerksom på at det er vanskelig å lese den utvidede annonseringen for noen enheter, men for de, kan du vanligvis lese den sanne enhets-ID-en.

Mock-ID-en ligger i byte 13, 19 og 30. Det gjør prosessen som følger:

  1. Etabler om dette er en -SubHub ved ID-en (enten den sanne ID-en eller ID-en i den utvidede annonseringen). Den vil alltid være 52:xx:xx.
  2. Hvis det er en “52” enhet, så parser du byte 13/19/30. F.eks. 43/01/23 vil være 43:01:23
  3. Parser resten av annonseringspakken i henhold til enhetstype basert på modellbyte (byte 10)

Enkelt og greit 😉

BroodMinder-W fysikk

Det er mange måter BroodMinder bikubevekten kan brukes på, og siden den bare måler en brøkdel av den totale bikubevekten, blir design og plassering av den ekstra støtten og BroodMinder vekten en integrert del av det totale bikubevektmålingssystemet. Generelt, jo mer innsats som legges i dette, jo bedre vil resultatene bli. Bikubesystemene som vises nedenfor starter fra de enkleste til de mest sofistikerte med høyest usikkerhet til lavest. Det er opp til den enkelte bruker å bestemme hva som skal implementeres. MERK: Den mest typiske feilkilden er utilstrekkelig støtte under vekten. Dette kan resultere i merkelig oppførsel ettersom kuben bøyer seg når den utvider seg og trekker seg sammen på grunn av sol, regn, temperatur osv. Å gi en flat støtte vil forbedre resultatene. En enkel løsning er å plassere et ¾” kryssfinerark (eller tilsvarende) under vektene.

EKSTRA MERK: Hvis alt du ønsker å se er honningflyt, er ikke god støtte nødvendig. Du må bare ignorere de daglige svingningene. Du vil fortsatt kunne observere den totale endringen i vekt.

​

a) Standard Arrangement

Dette er standardarrangementet med vekten foran på kuben og en 2×4 som en ekstra støtte (spak) bak:

​ image-20230409132020233

Her er noen beregninger rundt oppsettet:

Antakelser

Kubevekten W er fordelt jevnt og tyngdepunktet er i midten av kuben. For enkelhets skyld er ikke frontoverhenget på bunnbrettet vurdert. Kubevekten antas å være 100%.

Beregninger

image-20230409132049073

Når du bruker standard 2×4 treverk som bakstøtte og justerer det med baksiden av kuben, kan den totale kubevekten W beregnes fra vekten på vekten S som:

image-20230409132117498

Derfor, bruk 2.09 som standard kubevektsfaktor i appen hvis du bruker dette oppsettet. Dette kan selvfølgelig finjusteres når noen vektmålinger er tilgjengelige.

Diagrammet nedenfor viser vektskorreksjonsfaktoren for forskjellige vekts- og spakarrangementer. X-aksen er posisjonen til spakpunktet i tommer fra baksiden av kuben. De forskjellige linjene representerer vektsenterlinjeposisjonen i tommer fra baksiden av kuben. Pilarene viser eksempelet ovenfor.

image-20230409132140051

​

b) Alternativt Arrangement 1

Basert på ovenstående, bør den ekstra støtten plasseres 1” fra baksiden av kuben. Det anbefales å feste en list på toppen av 2×4. Dette vil hjelpe med nøyaktig posisjonering av den ekstra støtten.

image-20230409132159801

Nå har vi like momentarmer E og F, og kubevektskorreksjonsfaktoren blir 2.0, som er standard i mobilappen. Det er imidlertid noen andre påvirkningsfaktorer som ikke bør overses. Det virkelige spakpunktet for den ekstra støtten er hvor som helst mellom baksiden av kuben og fronten av den ekstra støtten på grunn av variasjoner i støttesystemets nivå og potensiell vridning av 2×4 selv.

image-20230409132222112

​

c) Alternativt Arrangement 2

Et annet støttesystem kan brukes som har et definert spakpunkt og ikke påvirkes av justeringen av støttekonstruksjonen:

Ta et stykke furu eller eik, omtrent ¾” tykt og 2” bredt. Lengden må være bredden på kuben. Kutt en liten spor i det. Sporet må være så dypt som bredden på sagbladet. Fest dette stykket til undersiden av bunnbrettet på kuben. Juster det flush med baksiden. Plasser deretter et stykke 1” med 1/8” 6061 eller 6063 aluminiumsvinkel, samme lengde som trestripen, under det for å støtte kuben. Hjørnet av aluminiumsvinkelen hviler i sporet. Den totale høyden av aluminiumsvinkelen og treverket må være lik eller litt større enn vekthøyden for å sikre at kuben er i nivå eller til og med litt hellende fremover for å sikre vannavrenning bort fra kubens inngang.

image-20230409132309128

d) Lateral Balansering

Alle de ovennevnte støttesystemene påvirkes av udefinert lateral vektforskyvning siden kuben hviler på mer enn tre punkter. Det er to punkter foran inne i kubevekten og en lineær støtte bak på kuben. Dette kan føre til overbelastning på en av lastcellene i vekten, og derfor er lateral balansering vanligvis nødvendig hvis støttesystemet under kuben ikke er en kontinuerlig plattform, dvs. separate betongblokker for fronten og baksiden av kuben.

Les vekten fra hver lastcelle individuelt ved å bytte til sanntidsvisning med appen. I denne modusen vises vekten på vekten som %Venstre, %Høyre. Høyre side av vekten er siden med enhetsidentifikasjonsklistremerket. Ingen ytterligere tiltak er nødvendig hvis L/R-differansen er mindre enn 10%.

Hvis ikke, så shimm vekten på siden med lavere vektmåling til vektene samsvarer. Alternativt kan shimming også gjøres under bakstøtten på motsatt side av den lave vektmålingen.

​

e) 3-Punkts Kube Støtte

image-20230409132329198

Det finnes en måte å lindre behovet for lateral balansering ved å introdusere et ekte 3-punkts støttesystem. Delene er lik de som brukes i arrangement 2, men i stedet for å bruke en 1” vinkel, trenger du for dette arrangementet en ¾” vinkel. Et 7/32” hull bores i midten av brettet i stedet for å kutte et spor. En ¼” x 0.5” sporboret maskinskruer brukes som sentral støtte. Skruen vil kutte sine egne gjenger i brettet. Sporet i skruehodet er justert slik at det kan hvile på kanten av aluminiumsvinkelen på et enkelt punkt uten å skli av.

image-20230409132356839

Det er et lite mellomrom mellom aluminiumsvinkelen og trebrettet. Det må sikres at dette mellomrommet har jevn bredde over kuben. Skruen i midten bør være det eneste kontaktpunktet. Dette vil sikre at den riktige vekten måles, og samtidig fungerer det som et "sikkerhetsnett" mot at kuben velter hvis det skjer en overdreven ujevn belastning, dvs. under kubeinspeksjoner.

​ f) BroodMinder Vekt Plassering

Mesteparten av det ovennevnte har handlet om det auxiliary støtten. La oss nå fokusere på vektplasseringen.

Som vist i de foregående seksjonene, er det ønskelig å ha frontflaten av vekten plassert i linje med frontflaten av kube kroppen. Å flytte den lenger inn ville forbedre nøyaktigheten på bekostning av kube stabilitet, og å flytte den lenger ut ville redusere nøyaktigheten med lite forbedret kube stabilitet.

image-20230409132418897

Dette diagrammet viser innflytelsen av vektplassering på vekt korrigeringsfaktoren og vektfeilen som introduseres på grunn av unøyaktig plassering av vekten. Innflytelsen er 5.6% per tomme

image-20230409132434621

Det anbefales å merke vektposisjonen på bunnen av kuben eller å feste en mekanisk stopp. Dette vil hjelpe til med å sette vekten tilbake på samme sted etter at den har blitt trukket ut for et batteriskifte eller av en annen grunn.