Física e Tecnologia
Sabemos que muitos de vocês gostam de mexer com tecnologia. Portanto, para os estudantes interessados e motivados, aqui estão mais informações e coisas de software para fazer você mesmo.
Informações sobre Publicidade BLE
Nota: Se tiver sugestões para melhorar a explicação, envie-nos os detalhes.
Para aqueles corajosos o suficiente para criar seu próprio equipamento de coleta de dados, fornecemos informações sobre o protocolo de publicidade BLE que o BroodMinder utiliza. De fato, nossos próprios BroodMinder-CELL, WiFi e -SubHub utilizam a publicidade para interceptar os dispositivos e, em seguida, encaminhar os dados diretamente para MyBroodMinder.com.
Existem vários programas bons de Explorador BLE disponíveis. Nossos favoritos são:
- Android e iOS – nrfConnect da Nordic Semiconductor. A versão para Android é a melhor, mas usamos ambas o tempo todo. Tem um recurso legal 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.
Provavelmente você notará que os três primeiros bytes do ID do dispositivo são sempre 06:09:16, seguidos pelo ID específico do dispositivo, que é sempre Model: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 estendido.
Composição do Pacote de Publicidade para o BroodMinder
Quando você lê os pacotes de publicidade do BLE, você pode identificar os produtos BroodMinder observando o seguinte.
Os dados se parecerão com algo assim - este exemplo é do dispositivo 43:30:07
Evento de Resposta de Verificação GAP ------------------------------------------------------------------------------------
ble_evt_gap_scan_response: rssi=-77, tipo_do_pacote=0, remetente=[ 07 30 43 80 07 00 ], tipo_de_endereço=0, vínculo=255, dados=[ 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) Verificar a flag "Dados Específicos do Fabricante" Bytes 6,7 = 0x18, 0xff
2) Verificar se o IF, LLC é o fabricante Bytes 8,9 = 0x8d, 0x02
Os bytes 10-29 são os dados do BroodMinder, conforme detalhado abaixo. DeviceModelIFllc_1 = 0x2b (43d = escala) DeviceVersionMinor_1 = 0x15 (21d) DeviceVersionMajor_1 = 0x02 (FW 2.21) Elapsed_2V2 = 0x21 (33d) Temperature_2V2 = 0x62d0 PesoL_2V2 = 0x7FFF PesoR_2V2 = 0x8005
A tabela de mapeamento para todos os modelos está na próxima página
PRIMÁRIO | ||||
---|---|---|---|---|
Byte | Comprimento do campo Ad | 02 | ||
1 | Tipo de campo | 01 | Conectável | |
2 | Valor | 06 | Descoberta Geral LE, Conectável, Dispositivo de Modo Único | |
3 | Comprimento do campo Ad | 02 | ||
4 | Tipo de campo | 0A | Potência Xmit | |
5 | Valor | 03 | Potência em DB | |
6 | Comprimento do campo Ad | 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 | 47/49/56/57/58 (SM&XLR) | |
14 | Valor | Bateria | ||
15 | Valor | ``` | ||
Tempo decorrido | ||||
16 | Valor | Tempo decorrido | ||
17 | Valor | Temperatura | 47 e acima é centígrado + 5000 | |
18 | Valor | Temperatura | ||
19 | Valor | Temperatura em tempo real | 47/49/56/57/58 (SM&XLR) | |
20 | Valor | Peso E | ||
21 | Valor | Peso E | ||
22 | Valor | Peso D | ||
23 | Valor | Peso D | ||
24 | Valor | Umidade | será 0 para 41/47/49/52 | |
25 | Valor | Peso E2/SM_Hora0 | 49/57/58 (XLR) | |
26 | Valor | Peso E2/SM_Hora1 | 49/57/58 (XLR) | |
27 | Valor | Peso D2/SM_Hora2 | 49/57/58 (XLR) | |
28 | Valor | Peso D2/SM_Hora3 | 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 Ad | 09 | ||
1 | Tipo | 09 | Nome Local Completo | |
2 | 4' | nome ascii | ||
3 | 2' | |||
4 | :' | |||
5 | 0' | |||
6 | 0' | |||
7 | :' | |||
8 | 0' | |||
9 | 0' |
Observação: BRM52 BroodMinder-SubHub é diferente como 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; } A temperatura em tempo real é ((float)(e.data[byteNumAdvRealTimeTemperature2] * 256 + e.data[byteNumAdvRealTimeTemperature1] - 5000) / 100) * 9 / 5 + 32;
O peso em tempo real é (float)(e.data[byteNumAdvRealTimeWeight2] * 256 + e.data[byteNumAdvRealTimeWeight1] - 32767 ) / 100;
O 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 alguma publicidade astuciosa. A publicidade muda a cada 5 segundos para enviar um dispositivo diferente. Ele passará por todos os dispositivos (incluindo ele próprio) e depois repetirá.
Chamamos isso de Mock Advertisements. Dependendo do sistema operacional que está sendo usado, você pode ou não (por exemplo, iOS) ser capaz de 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. Observe também que é difícil ler a publicidade estendida para alguns dispositivos, no entanto, para esses, você geralmente pode ler o verdadeiro ID do dispositivo.
O ID falso reside nos bytes 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). Sempre será 52:xx:xx.
- Se for um dispositivo "52", em seguida, 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).
Fácil fácil 😉
Física do BroodMinder-W
Existem muitas maneiras pelas quais a balança da colmeia BroodMinder pode ser usada e, como 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 parte integrante do sistema de medição total do peso da colmeia. Geralmente, quanto mais esforço é dedicado a isso, melhores serão os resultados. Os sistemas de suporte de colmeia mostrados abaixo vão desde os mais simples até os mais sofisticados, com a maior incerteza para a menor. Cabe ao usuário individual decidir o que implementar.
OBSERVAÇÃO: a fonte de erro mais típica é o suporte inadequado sob a balança. Isso pode resultar em comportamentos estranhos, pois a colmeia se flexiona à medida que se expande e contrai devido ao sol, à chuva, à temperatura, etc. Fornecer um suporte plano melhorará os resultados. Uma solução fácil é colocar uma folha de compensado de ¾ polegadas (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ê só precisará ignorar as flutuações diárias. Ainda será possível observar a mudança total no peso.
a) Arranjo Padrão
Este é o arranjo padrão com a balança na frente da colmeia e um 2x4 como suporte auxiliar (apoio) na parte de trás:
Aqui estão alguns cálculos sobre a configuração:
Suposições
O peso da colmeia W está distribuído uniformemente e o centro de gravidade está no meio da colmeia. Para simplicidade, a projeção frontal da placa inferior não é considerada. O peso da colmeia é assumido como 100%.
Cálculos
Ao usar madeira padrão 2x4 como suporte traseiro e alinhá-lo 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 fator de escala padrão da colmeia no aplicativo se estiver usando esta configuração. Isso, é claro, pode ser ajustado após disponíveis algumas medições de peso.
O gráfico abaixo mostra o fator de correção da balança para diferentes arranjos de balança e fulcro. O Eixo-X é a posição do ponto de fulcro 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. É recomendável fixar uma peça de acabamento no topo do 2x4. Isso ajudará na posição precisa 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, há outros fatores de influência que não devem ser negligenciados. O ponto real do fulcro do suporte auxiliar está em algum lugar entre a parte de trás da colmeia e a frente do suporte auxiliar devido às variações do nivelamento do sistema de suporte e ao potencial empenamento do sarrafo em si.
c) Arranjo Alternativo 2
Pode ser utilizado um sistema de suporte diferente que tenha um ponto de apoio definido e não seja afetado pelo alinhamento da estrutura de suporte:
Pegue um pedaço de pinheiro ou carvalho, com cerca de ¾” de espessura e 2” de largura. O comprimento precisa ser a largura da colmeia. Faça um pequeno corte nele. O corte deve ser tão profundo quanto a largura da lâmina da serra. Fixe este pedaço na parte inferior da placa inferior da colmeia. Alinhe-o 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, embaixo para apoiar a colmeia. O canto do ângulo de alumínio repousa no corte. 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 até mesmo ligeiramente inclinada para frente para garantir o escoamento da água para longe da entrada da colmeia.
d) Equilíbrio Lateral
Todos os sistemas de suporte acima são afetados por um deslocamento de peso lateral indefinido, uma vez que a colmeia repousa em mais de três pontos. Há dois pontos na frente dentro da balança da colmeia e um suporte linear na parte de trás da colmeia. Isso pode levar à sobrecarga em uma das células de carga na balança e, portanto, o equilíbrio lateral geralmente é necessário se o sistema de suporte sob a colmeia não for uma plataforma contínua, ou seja, blocos de cimento 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 a etiqueta de identificação do dispositivo. Nenhuma ação adicional é necessária se a diferença E/D for inferior a 10%.
Caso contrário, ajuste a balança no lado com a leitura de peso mais baixa até que as leituras de peso se igualem. Alternativamente, também pode ser feito ajustes sob o suporte traseiro no lado oposto à leitura de peso baixa.
e) Suporte de 3 Pontos para Colmeia
Existe uma maneira de evitar a necessidade de equilíbrio lateral introduzindo um verdadeiro sistema de suporte de 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” é feito no meio da placa em vez de cortar um sulco. Um parafuso de máquina ranhurado de ¼” x 0.5” é usado como suporte central. O parafuso vai cortar suas próprias roscas na placa. A fenda na cabeça do parafuso é alinhada de modo que possa repousar na borda do ângulo de alumínio em um único ponto sem deslizar.
Há um pequeno espaço entre o ângulo de alumínio e a placa de madeira. Deve-se garantir que este espaço tenha a mesma largura 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 desigual excessiva, por exemplo, durante inspeções na colmeia.
f) Posicionamento da Balança BroodMinder
A maioria do que foi discutido até agora tratou do suporte auxiliar. Vamos agora focar no posicionamento da balança.
Como mostrado nas seções anteriores, é desejável que a face frontal da balança seja colocada alinhada com a face frontal do corpo da colmeia. Movê-la mais para dentro melhoraria a precisão às custas 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 sobre o fator de correção da balança e o erro 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 placa inferior da colmeia ou fixar um batente mecânico. Isso ajudará a colocar a balança de volta na mesma localização após ter sido retirada para troca de bateria ou por alguma outra razão.