Física e Tecnologia
Sabemos que muitos de vocês gostam de mexer. Então, para o estudante interessado e motivado, aqui estão mais informações e coisas de software DIY.
Informações sobre Publicidade BLE
Nota: Se você tiver sugestões para melhorar a explicação, então nos envie os detalhes.
Para aqueles corajosos com a determinação de criar seu próprio equipamento de coleta de dados, fornecemos informações sobre o protocolo de publicidade BLE que o BroodMinder utiliza. De fato, nosso próprio BroodMinder-CELL, WiFi e -SubHub usam a publicidade para escutar os dispositivos e, em seguida, encaminhar os dados diretamente para MyBroodMinder.com.
Existem vários programas legais de exploração BLE disponíveis. Nossos favoritos são:
- Android e iOS – nrfConnect da Nordic Semiconductor. A versão Android é a melhor, mas usamos ambas o tempo todo. Possui um bom recurso de gráfico de nível de sinal.
- PC – Bluetooth LE Explorer da Microsoft. Infelizmente, este programa não mostra os dados de publicidade.
- Mac – BlueSee – Este aplicativo parece funcionar bem e mostra os dados do fabricante no pacote de publicidade.
Você provavelmente notará que os primeiros 3 bytes do ID do dispositivo são sempre 06:09:16, seguidos pelo ID do dispositivo específico, que é sempre Modelo:ID:ID. Alguns dispositivos (iOS e Mac) ocultam o verdadeiro ID, então também incluímos isso no campo de nome no pacote de publicidade estendida.
Composição do Pacote de Publicidade para BroodMinder
Quando você lê pacotes de publicidade do BLE, pode identificar produtos BroodMinder observando o seguinte.
Os dados parecerão algo assim. – este exemplo é do dispositivo 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 ]
Nota: Os valores estão em decimal, a menos que precedidos por 0x
1) Verifique o sinalizador "Dados Específicos do Fabricante" Bytes 6,7 = 0x18, 0xff
2) Verifique se IF, LLC é o fabricante Bytes 8,9 = 0x8d, 0x02
Bytes 10-29 são os dados do BroodMinder conforme descrito abaixo. DeviceModelIFllc_1 = 0x2b (43d = escala) DeviceVersionMinor_1 = 0x15 (21d) DeviceVersionMajor_1 = 0x02 (FW 2.21) Elapsed_2V2 = 0x21 (33d) Temperature_2V2 = 0x62d0 WeightL_2V2 = 0x7FFF WeightR_2V2 = 0x8005
O mapeamento para todos os modelos está na próxima página
| PRIMARY | ||||
|---|---|---|---|---|
| Byte | Tipo | Valor | Parâmetro | |
| 0 | Comprimento do campo de publicidade | 02 | ||
| 1 | Tipo de campo | 01 | Conectável | |
| 2 | Valor | 06 | Descoberta Geral LE, Conectável, Dispositivo de Modo Único | |
| 3 | Comprimento do campo de publicidade | 02 | ||
| 4 | Tipo de campo | 0A | Potência de Transmissão | |
| 5 | Valor | 03 | Potência em DB | |
| 6 | Comprimento do campo de publicidade | 24 | ||
| 7 | Tipo de campo | FF | Dados do fabricante | |
| 8 | Valor | 8d | IF, LLC = 0x028d, 653 | |
| 9 | Valor | 02 | IF, LLC = 0x028d, 653 | |
| 10 | Valor | Modelo | ||
| 11 | Valor | Versão Menor | ||
| 12 | Valor | Versão Maior | ||
| 13 | Valor | Temperatura em Tempo Real 1 | 47/49/56/57/58 (SM&XLR) | |
| 14 | Valor | Bateria | ||
| 15 | Valor | Decorrido | ||
| 16 | Valor | Decorrido | ||
| 17 | Valor | Temperatura | 47 e acima é centígrada + 5000 | |
| 18 | Valor | Temperatura | ||
| 19 | Valor | Temperatura em Tempo Real 2 | 47/49/56/57/58 (SM&XLR) | |
| 20 | Valor | PesoL | ||
| 21 | Valor | PesoL | ||
| 22 | Valor | PesoR | ||
| 23 | Valor | PesoR | ||
| 24 | Valor | Umidade | será 0 para 41/47/49/52 | |
| 25 | Valor | PesoL2/SM_Tempo0 | 49/57/58 (XLR) | |
| 26 | Valor | PesoL2/SM_Tempo1 | 49/57/58 (XLR) | |
| 27 | Valor | PesoR2/SM_Tempo2 | 49/57/58 (XLR) | |
| 28 | Valor | PesoR2/SM_Tempo3 | 49/57/58 (XLR) | |
| 29 | Valor | Peso total em tempo real / Estado de Enxame | 47/49/56/57/58 (SM&XLR) | |
| 30 | Valor | Peso total em tempo real | 47/49/56/57/58 (SM&XLR) | |
| SECUNDÁRIO | Pacote de Publicidade Estendido | |||
| Byte | Tipo | Valor | Parâmetro | |
| 0 | Comprimento do campo de anúncio | 09 | ||
| 1 | Tipo | 09 | Nome Local Completo | |
| 2 | 4' | nome ascii | ||
| 3 | 2' | |||
| 4 | :' | |||
| 5 | 0' | |||
| 6 | 0' | |||
| 7 | :' | |||
| 8 | 0' | |||
| 9 | 0' |
Nota: O BRM52 BroodMinder-SubHub é diferente, conforme explicado abaixo.
Aqui estão as equações
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 é o tempo unix do último evento de temperatura. Time0 = LSB, Time3 = MSB, será o tempo desde a inicialização se o tempo não tiver sido definido no dispositivo por uma sincronização do dispositivo.
BRM-52 BroodMinder-SubHub
O -SubHub faz uma publicidade complicada. A publicidade muda a cada 5 segundos para enviar um dispositivo diferente. Ele irá passar por todos os dispositivos (incluindo ele mesmo) e depois repetir.
Chamamos isso de Anúncios Falsos. Dependendo do sistema operacional que está sendo usado, você pode ou não (por exemplo, iOS) conseguir ver o verdadeiro ID do dispositivo (por exemplo, 06:09:16:52:01:23). É por isso que colocamos o ID do dispositivo no byte de publicidade estendida. Também note que é difícil ler a publicidade estendida para alguns dispositivos, no entanto, para esses, você normalmente pode ler o verdadeiro ID do dispositivo.
O ID Falso reside no byte 13, 19 e 30. Isso torna o processo o seguinte:
- Estabeleça se este é um -SubHub pelo ID (seja o verdadeiro ID ou o ID na publicidade estendida). Ele sempre será 52:xx:xx.
- Se for um dispositivo “52”, então analise os bytes 13/19/30. Por exemplo, 43/01/23 será 43:01:23
- Analise o restante do pacote de publicidade de acordo com o tipo de dispositivo com base no byte do modelo (byte 10)
Facinho 😉
Física do BroodMinder-W
Existem muitas maneiras de usar a balança do colmeia BroodMinder e, como ela mede apenas uma fração do peso total da colmeia, o design e a colocação do suporte auxiliar e a posição da balança BroodMinder tornam-se uma parte integral do sistema de medição do peso total da colmeia. Geralmente, quanto mais esforço for colocado nisso, melhores serão os resultados. Os sistemas de suporte da colmeia mostrados abaixo começam do mais fácil ao mais sofisticado, com a maior incerteza para a menor. Cabe ao usuário individual decidir o que implementar. NOTA: a fonte de erro mais típica é o suporte inadequado sob a balança. Isso pode resultar em comportamentos estranhos à medida que a colmeia se flexiona ao expandir e contrair devido ao sol, chuva, temperatura, etc. Fornecer um suporte plano melhorará os resultados. Uma solução fácil é colocar uma chapa de compensado de ¾” (ou equivalente) sob as balanças.
NOTA ADICIONAL: Se tudo o que você deseja ver é o fluxo de mel, um bom suporte não é necessário. Você apenas terá que ignorar as flutuações diárias. Você ainda poderá observar a mudança geral no peso.
a) Arranjo Padrão
Este é o arranjo padrão com a balança na frente da colmeia e uma 2×4 como suporte auxiliar (ponto de apoio) na parte de trás:

Aqui estão alguns cálculos relacionados à configuração:
Suposições
O peso da colmeia W é distribuído uniformemente e o centro de gravidade está no meio da colmeia. Para simplificar, a saliência frontal da base inferior não é considerada. O peso da colmeia é assumido como 100%.
Cálculos

Ao usar madeira padrão 2×4 como suporte traseiro e alinhá-la com a parte de trás da colmeia, o peso total da colmeia W pode ser calculado a partir do peso na balança S como:

Portanto, use 2.09 como o fator de escala padrão da colmeia no aplicativo se você estiver usando esta configuração. Isso, é claro, pode ser ajustado assim que algumas medições de peso estiverem disponíveis.
O gráfico abaixo mostra o fator de correção da balança para diferentes arranjos de balança e ponto de apoio. O eixo X é a posição do ponto de apoio em polegadas a partir da parte de trás da colmeia. As diferentes linhas representam a posição da linha central da balança em polegadas a partir da parte de trás da colmeia. As setas mostram o exemplo acima.

b) Arranjo Alternativo 1
Com base no acima, o suporte auxiliar deve ser colocado a 1” da parte de trás da colmeia. Recomenda-se anexar uma peça de acabamento na parte superior da 2×4. Isso ajudará no posicionamento preciso do suporte auxiliar.

Agora temos braços de momento iguais E e F e o fator de correção da balança da colmeia se torna 2.0, que é o padrão no aplicativo móvel. No entanto, existem alguns outros fatores de influência que não devem ser negligenciados. O verdadeiro ponto de apoio do suporte auxiliar está em qualquer lugar entre a parte de trás da colmeia e a frente do suporte auxiliar devido a variações na nivelamento do sistema de suporte e potencial deformação da 2×4.

c) Arranjo Alternativo 2
Um sistema de suporte diferente pode ser usado, que possui um ponto de apoio definido e não é afetado pelo alinhamento da estrutura de suporte:
Pegue um pedaço de pinho ou carvalho, com cerca de ¾” de espessura e 2” de largura. O comprimento precisa ser a largura da colmeia. Corte uma pequena ranhura nele. A ranhura precisa ser tão profunda quanto a largura da lâmina da serra. Anexe este pedaço à parte inferior da base da colmeia. Alinhe-o nivelado com a parte de trás. Em seguida, coloque um pedaço de ângulo de alumínio 1” por 1/8” 6061 ou 6063, do mesmo comprimento que a tira de madeira, sob ele para suportar a colmeia. O canto do ângulo de alumínio repousa na ranhura. A altura total do ângulo de alumínio e da madeira precisa ser igual ou ligeiramente maior que a altura da balança para garantir que a colmeia esteja nivelada ou ligeiramente inclinada para frente para garantir o escoamento da água longe da entrada da colmeia.

d) Balanceamento Lateral
Todos os sistemas de suporte acima são afetados por deslocamento lateral de peso indefinido, uma vez que a colmeia repousa sobre mais de três pontos. Existem dois pontos na frente dentro da balança da colmeia e um suporte linear na parte de trás da colmeia. Isso pode levar a sobrecarga em uma das células de carga na balança e, portanto, o balanceamento lateral é tipicamente necessário se o sistema de suporte sob a colmeia não for uma plataforma contínua, ou seja, blocos de concreto separados para a frente e a parte de trás da colmeia.
Leia o peso de cada célula de carga individualmente, alternando para a exibição em tempo real com o aplicativo. Neste modo, o peso na balança é mostrado como %Esquerda, % Direita. O lado direito da balança é o lado com o adesivo de identificação do dispositivo. Nenhuma ação adicional é necessária se a diferença L/D for inferior a 10%.
Caso contrário, coloque calços na balança do lado com a leitura de peso mais baixa até que as leituras de peso coincidam. Alternativamente, o calço também pode ser colocado sob o suporte traseiro do lado oposto à leitura de peso baixa.
e) Suporte de Colmeia em 3 Pontos

Há uma maneira de aliviar a necessidade de balanceamento lateral introduzindo um verdadeiro sistema de suporte em 3 pontos. As peças são semelhantes às usadas no arranjo 2, mas em vez de usar um ângulo de 1”, para este arranjo você precisará de um ângulo de ¾”. Um furo de 7/32” é perfurado no meio da tábua em vez de cortar uma ranhura. Um parafuso de máquina com ranhura de ¼” x 0.5” é usado como suporte central. O parafuso cortará suas próprias roscas na tábua. A ranhura na cabeça do parafuso é alinhada para que possa repousar na borda do ângulo de alumínio em um único ponto sem deslizar para fora.

Há um pequeno espaço entre o ângulo de alumínio e a tábua de madeira. Deve-se garantir que esse espaço tenha largura uniforme em toda a colmeia. O parafuso no meio deve ser o único ponto de contato. Isso garantirá que o peso correto seja medido e, ao mesmo tempo, é a "rede de segurança" contra a colmeia tombar se ocorrer uma carga excessivamente desigual, ou seja, durante as inspeções da colmeia. f) Posicionamento da Balança BroodMinder
A maior parte do que foi abordado acima trata do suporte auxiliar. Vamos nos concentrar agora no posicionamento da balança.
Como mostrado nas seções anteriores, é desejável que a face frontal da balança esteja alinhada com a face frontal do corpo da colmeia. Movê-la mais para dentro melhoraria a precisão em detrimento da estabilidade da colmeia, e movê-la mais para fora reduziria a precisão com pouca melhoria na estabilidade da colmeia.

Este gráfico mostra a influência do posicionamento da balança no fator de correção da balança e no erro da balança introduzido devido ao posicionamento impreciso da balança. A influência é de 5,6% por polegada.

É aconselhável marcar a posição da balança na base da colmeia ou anexar um batente mecânico. Isso ajudará a recolocar a balança na mesma localização após ter sido retirada para a troca de bateria ou por algum outro motivo.