Gå til innhald

Fysikk og Teknologi

Me veit at mange av dykk likar å trikse rundt. Så, for den interesserte og motiverte studenten, her er meir informasjon og DIY programvarestoff.

BLE Reklamering Informasjon

Merk: Viss de har forslag til korleis ein kan forbetre forklaringa, så bruk detaljane.

For dei tappre sjelene med pågangsmot til å lage deira eigne datainnhøstingsutstyr, gir me informasjon om BLE reklameringsprotokollen som BroodMinder bruker. Verkeleg vår eiga BroodMinder-CELL, WiFi, og -SubHub nyttar reklamering for å avlytte på enhetane og deretter videresende dataretta til MyBroodMinder.com.

Det finst flere gode BLE Explorer-program tilgjengeleg. Våre favorittar er:

  • Android & iOS – nrfConnect frå Nordic Semiconductor. Android-versjonen er best, men me brukar begge heile tida. Den har ein fin funksjon for signalmålingsgraf.
  • PC – Bluetooth LE Explorer frå Microsoft. Dessverre viser ikkje dette programmet reklameringadata.
  • Mac – BlueSee – Denne appen ser ut til å fungere fint og viser produsentdataen i reklameringpakka.

De vil truleg leggje merke til at dei første 3 bytane av enhets-ID-en alltid er 06:09:16, deretter følgjer den spesifikke enhets-ID-en som alltid er Modell:ID:ID. Nokre enheter (iOS & Mac) gøymar den sanne ID-en, så me inkluderer den òg i namnefeltet i den utvida reklameringpakken.

Makeup for Reklameringpakke for BroodMinder

Når du les reklameringpakkane frå BLE, kan du identifisere BroodMinder-produkta ved å sjå på følgjande.

Dataen vil sjå noko slikt ut. – dette dømet er frå einheit 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: Verdiene er i desimal med mindre dei er føregått av 0x

1) Sjekk for "Spesifikk Produsentdata"-flagg Bytane 6,7 = 0x18, 0xff

2) Sjekk om IF, LLC er produsenten Bytane 8,9 = 0x8d, 0x02

Bytane 10-29 er data frå BroodMinder som er skissert nedanfor. DeviceModelIFllc_1 = 0x2b (43d = vekt) DeviceVersionMinor_1 = 0x15 (21d) DeviceVersionMajor_1 = 0x02 (FW 2.21) Elapsed_2V2 = 0x21 (33d) Temperature_2V2 = 0x62d0 WeightL_2V2 = 0x7FFF WeightR_2V2 = 0x8005

Kartlegginga for alle modellar er på neste side

PRIMÆR
Byte Type Value Parameter
0 Ad feltlengde 02
1 Felttype 01 Kan koblast til
2 Value 06 LE Generell oppdaging, Kan koblast til, Enkeltmodus-enhet
3 Ad feltlengde 02
4 Felttype 0A Sendarstyrke
5 Verdi 03 Styrke i DB
6 Ad feltlengde 24
7 Felttype FF Produsentdata
8 Verdi 8d IF, LLC = 0x028d, 653
9 Verdi 02 IF, LLC = 0x028d, 653
10 Verdi Modell
11 Verdi Versjon Mindre
12 Verdi Versjon Major
13 Verdi Realtidstemperatur 1 47/49/56/57/58 (SM&XLR)
14 Verdi Batteri
15 Verdi Forløpt
16 Verdi Forløpt
17 Verdi Temperatur 47 grader og over er celsius + 5000
18 Verdi Temperatur
19 Verdi Sanntid 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_Time0 49/57/58 (XLR)
26 Verdi VektL2/SM_Time1 49/57/58 (XLR)
27 Verdi VektR2/SM_Time2 49/57/58 (XLR)
28 Verdi VektR2/SM_Time3 49/57/58 (XLR)
29 Verdi Sanntids totalvekt / Sværmingstilstand 47/49/56/57/58 (SM&XLR)
30 Verdi Sanntids totalvekt 47/49/56/57/58 (SM&XLR)
SEKUNDÆR Utvidet annonsenettverkspakke
Byte Type Verdi Parameter
0 Annonsefeltets lengde 09
1 Type 09 Fullt lokalt navn
2 4' ASCII-navn
3 2'
4 :'
5 0'
6 0'
7 :'
8 0'
9 0'

Merknad: BRM52 BroodMinder-SubHub er annerledes som forklart nedenfor.

Her er ligningene

if (ModelNummer == 41 | ModelNummer == 42 | ModelNummer == 43)
{
    temperaturgraderF = e.data[byteNumAdvTemperature_2V2] + (e.data[byteNumAdvTemperature_2V2 + 1] << 8);
    temperaturgraderF = (temperaturgraderF / Math.Pow(2, 16) * 165 - 40) * 9 / 5 + 32;
}
else
{
    double temperaturgraderC = e.data[byteNumAdvTemperature_2V2] + (e.data[byteNumAdvTemperature_2V2 + 1] << 8);
    temperaturgraderC = (temperaturgraderC - 5000) / 100;
    temperaturgraderF = temperaturgraderC * 9 / 5 + 32;
}
luftfuktighetsprosent = e.data[byteNumAdvHumidity_1V2];
if (ModelNummer == 43)
{
    vektL = e.data[byteNumAdvWeightL_2V2 + 1] * 256 + e.data[byteNumAdvWeightL_2V2 + 0] - 32767;
    vektSkalertL = vektL / 100;
    vektR = e.data[byteNumAdvWeightR_2V2 + 1] * 256 + e.data[byteNumAdvWeightR_2V2 + 0] - 32767;
    vektSkalertR = vektR / 100;
} 
else if (ModelNummer == 49 | ModelNummer == 57 | ModelNummer == 58)
{
    vektR = e.data[byteNumAdvWeightL_2V2 + 1] * 256 + e.data[byteNumAdvVektL_2V2 + 0] - 32767;
  vektSkalertR = vektR / 100;
  vektL = e.data[byteNumAdvVektR_2V2 + 1] * 256 + e.data[byteNumAdvVektR_2V2 + 0] - 32767;
  vektSkalertL = vektL / 100;
  vekR2 = e.data[byteNumAdvVektL2_2V2 + 1] * 256 + e.data[byteNumAdvVektL2_2V2 + 0] - 32767;
  vektSkalertR2 = vektR2 / 100;
  vektL2 = e.data[byteNumAdvVektR2_2V2 + 1] * 256 + e.data[byteNumAdvVektR2_2V2 + 0] - 32767;
  vektSkalertL2 = vektL2 / 100;
}
verTemperatur = ((float)(e.data[byteNumAdvRealTimeTemperature2] * 256 + e.data[byteNumAdvRealTimeTemperature1] - 5000) / 100) * 9 / 5 + 32;

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

SM-Time er tida då sist temperaturhending vart registert. Tid0 = LSS, Tid3 = MHS, det vil vere tida sidan start om tida ikkje har vorte sett inn i ein eining ved ei einingssynkronisering.

BRM-52 BroodMinder-SubHub

The -SubHub gjer noko smart reklame. Reklamen endrar seg kvar 5. sekund for å sende ut ei anna eining. Den vil rulle gjennom alle einingar (inkludert seg sjølv) og så gjenta.

Me kallar desse Spottreklamar. Avhengig av kva operativsystem som blir brukt, kan du sjå eller ikkje (f.eks. iOS) den sanne einings-ID-en (f.eks. 06:09:16:52:01:23). Det er derfor vi plasserer enhets-ID-en i den utvida reklamebyte. Legg også merke til at det kan vere vanskeleg å lese den utvida reklamen for somme einingar, men for dei kan du gjerne lese den sanne enhets-ID-en.

Den Spott-ID-en er i byte 13, 19 og 30. Det gjer prosessen som fylgjer:

  1. Fastsett om dette er ein -SubHub ved ID-en (enten den sanne ID-en eller ID-en i den utvida reklamen). Det vil alltid vere 52:xx:xx.
  2. Om det er ein "52" eining, analysér byte 13/19/30. F.eks. 43/01/23 vil vere 43:01:23
  3. Analyser resten av reklamepakken i samsvar med einingstypen basert på modellbyte (byte 10)

Enkelt 😉

BroodMinder-W fysikk

Det er mange måtar BroodMinder kubevekta kan brukast på og sidan den berre måler ein brøkdel av den totale kubevekta, vert design og plassering av den ekstra støtten og BroodMinder-vektposisjoneringa ein integrert del av det totale kubevektsmålesystemet. Generelt sett, jo meir innsats som blir lagt ned i dette, jo betre resultat vil ein få. Støttesystema for kube som er vist nedanfor startar frå det enklaste til det mest sofistikerte med høgast usikkerheit til lågast. Det er opp til den individuelle brukaren å avgjere kva dei vil implementere.

MERK: Den mest typiske feilkjelda er utilstrekkeleg støtte under vekta. Dette kan resultere i rar oppførsel når kuba bøyer seg når den utvidar og trekkjer seg saman på grunn av sol, regn, temperatur osv. Å gi ei flat støtte vil forbetre resultatene. Ei enkel løysing er å leggje ei ¾” kryssfinérplate (eller tilsvarende) under vektene.

YTTERLEGARE MERK: Om alt du vil sjå er honningflyt, er god støtte ikkje naudsynt. Du vil berre måtte ignorere dei daglege svingningane. Du vil framleis kunne observere den overordna endringa i vekt.

a) Standardoppsett

Dette er standardoppsettet med vekta framme på kuba og ein 2×4 som ein ekstra støtte (vippepunkt) bak:

image-20230409132020233

Her er nokre berekningar som omgir oppsettet:

Antakingar

Kubens vekt W er jamt fordelt, og tyngdepunktet er midt i kuba. For enkelheitens skuld, blir ikkje framhengen på botnplaten rekna med. Kubens vekt blir antatt å vere 100%.

Berekningar

image-20230409132049073

Når du bruker standard 2×4 trelast som ein bakre støtte og aligner det med bakenden på kuba, kan den totale kubevekta W reknast ut frå vekta på vekten S som:

image-20230409132117498

Difor, bruk 2.09 som standard kubevektfaktor i appen om du brukar dette oppsettet. Dette kan sjølvsagt finjusterast når nokre vektmålingar er tilgjengelege.

Tabellen nedan viser korreksjonsfaktoren for vektåtaket for forskjellige vekt- og vippepunktsoppsett. X-aksen er posisjonen til vippepunktet i tommer frå baksida av kuba. Dei ulike linjene representerer vektens senterlinjeposisjon i tommer frå baksida av kuba. Pilane viser eksempelet ovanfor.

image-20230409132140051

b) Alternativt Oppsett 1

Basert på det overståande, bør den ekstra støtten plasserast 1” frå baksida av kuba. Det er tilrådd å feste ein prydlamell oppå 2×4'en. Dette vil hjelpe for nøyaktig posisjonering av den ekstra støtten.

image-20230409132159801

No Me har like lange momentarmar E og F og kubehakaal korreksjonsfaktoren blir 2,0, som er standard i mobilappen. Det er likevel nokre andre påverkingsfaktorar som ikkje bør oversjåast. Den faktiske vippepunktet for den hjelpande støtten er kvar som helst mellom baksiden av kuba og framsida av den hjelpande støtten på grunn av variasjonar i nivået på støttesystemet og potensiell vriking av 2x4-en sjølv.

image-20230409132222112

c) Alternativ oppsetjing 2

Ein annan støttesystem kan brukast som har eit definert vippepunkt og ikkje påverkast av justeringa av støttestrukturen:

Ta eit stykke furu eller eik, om lag ¾" tjukt og 2" breitt. Lengda må vere breidda på kuben. Lag eit lite kutt inn i det. Kuttet må vere like djupt som breidda på sagbladet. Fest dette stykket under undersida av botnbrettet til kuben. Juster det flush med baksida. Legg så ein bit av 1" x 1/8" 6061 eller 6063 aluminiumvinkel, med same lengde som trestrimla, under for å støtte kuben. Hjørnet på aluminiumvinkelen kvilar i kuttet. Totalhøgda på aluminiumvinkelen og treet må vere lik eller litt større enn skalahøgda for å sikre at kuben er horisontal eller til og med litt luta framover for å sikre at vatnrenna vekk frå kubeinngangen.

image-20230409132309128

d) Laterale balansering

Alle dei før nemnde støttesystema påverkast av ubestemt lateral vektoverføring sidan kuben kvarar på meir enn tre punkt. Det er to punkt framme inni kubevektrekken og ein lineær støtte bakpå kuben. Dette kan føre til overlast på ein av lastecellene i vekten og derfor er det vanlegvis naudsynt med lateral balansering dersom støttesystemet under kuben ikkje er ein kontinuerleg plattform, dvs. at det er separate murskiljarar for framme og bakpå kuben.

Les vekta frå kvar lastecelle individuelt ved å bytte til sanntidsvisning med appen. I denne modusen vises vekta på skalaen som %Venstre, % Høgre. Høgresida av skalaen er sida med identifikasjonsmerkelappen. Ingen vidare handling er naudsynt dersom L/R-forskjellen er mindre enn 10%.

Hvis ikkje, juster skalaen på sida med lågare vektlesing til vektlesingane samsvarar. Alternativt kan justering også gjerast under bakstøtta på motsatt side av den låge vekta.

e) 3-punkts kube-støtte

image-20230409132329198

Det finst ein måte å redusere behovet for lateral balansering ved å introdusere eit ekte 3-punkts støttesystem. Delane er liknande dei som vart brukt i oppsetjing 2, men i staden for å bruke ein 1" vinkel, treng du ein ¾" vinkel for denne oppsetjinga. Det blir bore eit 7/32" hol i midten av brettet i staden for å skjere eit kutt. Ein ¼" x 0.5" sporløys maskinskrue blir brukt som sentralt støttepunkt. Skruen vil lage sine eigne gjenger i brettet. Sporet i skruhovudet er justert slik at det kan kvile på kanten av aluminiumvinkelen på eitt punkt utan å gli av.

image-20230409132356839

Det er eit lite gap mellom aluminiumvinkelen og treet. Det må sikrast at dette gapet er jamn breidde over kuben. Skruen i midten bør vere det einaste kontaktpunktet. Dette vil sikre at den riktige vekta blir målt og samtidig fungere som "sikkerhetsnett" mot at kuben fell over om det er ein ujamn last, f.eks. under kubeinspeksjonar.

f) BroodMinder Skalaposisjonering

Det meste av det ovenfor har handla om den hjelpande støtta. La oss no fokusere på posisjoneringa av skalaen.

Som vist i dei føregåande seksjonane, er det ønskeleg å ha framsida av skalaen plassert i linje med framsida av kubebrota. Å flytte den lenger inn ville forbetre nøyaktigheita på bekostning av kube-stabilitet, og å flytte den lenger ut ville redusere nøyaktigheita med lite forbetra kube-stabilitet.

image-20230409132418897

Denne tabellen viser påverknaden av skala-plassering på skala-korreksjonsfaktoren og skala-feil introdusert på grunn av unøyaktig posisjonering av skalaen. Påverknaden er 5,6% per tomme

image-20230409132434621

Det er tilrådd å merke skalaposisjonen på botnbrettet til kuben eller å feste ein mekanisk stoppar. Dette vil hjelpe til å plassere skalaen tilbake på same stad etter at den er fjerna for batteribytte eller av ein annan grunn.