Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

BeeMonitor

Componentes e suprimentos

Arduino Nano 33 BLE Sense
× 1
Cabo USB-A para Micro-USB
× 1

Aplicativos e serviços online

Arduino IDE
Edge Impulse Studio
Android Studio

Sobre este projeto





Introdução


Apresentaremos o desenvolvimento de um aplicativo de controle de abelhas que auxilie o apicultor na produção eficiente de mel e outros produtos. O aplicativo cobre o campo da apicultura. Vemos a motivação em ajudar o apicultor a controlar as abelhas e ser o mais eficaz possível. Isso tornaria mais fácil para o apicultor trabalhar longas horas em colmeias individuais. A ideia é que, com base na temperatura e umidade, o aplicativo ofereça informações sobre o estado da família de abelhas em uma colmeia específica e a detecção de um evento especial chamado enxameação. Este é um evento em que a família das abelhas está dividida em duas partes. Uma parte fica na colmeia e a outra deixa a colmeia e encontra um novo lar. A primeira parte permanece na colmeia e aguarda a eclosão da nova rainha, enquanto a segunda metade sai da colmeia juntamente com a velha rainha. Aqui, é importante que o apicultor tome medidas oportunas. Ele seria ajudado nisso por um aplicativo de controle de abelhas, que reconhece tal evento com base no processamento de som do zumbido das abelhas.





Solução


Uma vez que um apicultor individual geralmente possui grandes quantidades de colmeias e, conseqüentemente, também muitas colmeias, a inspeção manual de uma colmeia individual requer muito tempo. Com a ajuda de nosso aplicativo, o apicultor se conecta a colmeias individuais através de um terminal móvel e conexão Bluetooth, onde pode ver a saúde da família das abelhas. Além disso, o aplicativo irá alertar o apicultor em caso de enxame que ele poderá agir em tempo hábil e as abelhas não escaparão para a natureza, o que reduziria a produção de mel.





Descrição


O sistema consiste em um microcontrolador Arduino Nano BLE 33 Sense, que também contém um microfone em sua placa de circuito impresso. Com a ajuda de um algoritmo executado em um microcontrolador, o controlador escuta o zumbido das abelhas e, com a ajuda de um modelo aprendido, reconhece a diferença no zumbido das abelhas, quando a rainha está presente na colmeia e quando não é. Além da detecção de nascimento, o Arduino também inclui um sensor de temperatura e umidade. Com a ajuda desses dados, podemos determinar a condição ou a saúde da família de abelhas localizada na colmeia. Como a meta era o baixo consumo de energia, o sistema mede a condição apenas algumas vezes ao dia, ou nos períodos de tempo entre 10h00 e 13h00, onde a chance de enxame é maior. No resto do dia, o dispositivo fica quase todo ocioso e não consome energia.





Modelo de aprendizado de máquina


Descrição do procedimento EdgeImpulse
  • Capture dados usando um microfone

Primeiro, capturamos o zumbido das abelhas usando um microfone para coletar dados que formaram a base de um modelo de aprendizagem.
  • Análise espectral de sons

Os dados foram então processados ​​por meio de um espectrograma.
  • Construindo um modelo usando uma rede neural

O espectrograma foi a entrada para a rede neural, que foi usada para treinar o modelo. Após um longo recálculo, obtivemos os resultados, que foram dados em uma matriz que mostra o desempenho de reconhecimento do modelo.

O gráfico abaixo mostra o desempenho do modelo com base nos dados capturados.
  • Crie uma biblioteca e faça upload para o Arduino

Por fim, criamos uma biblioteca a ser enviada para a placa Arduino.





Hardware

  • Arduino Nano BLE 33 Sense
  • Energia da bateria
  • Terminal móvel Android





Conectividade


Para receber dados do Arduino para o aplicativo no telefone Android, usamos a opção de conectividade bluetooth. Arduino Nano BLE 33 Sense oferece módulo bluetooth em sua placa de circuito. Essa comunicação permite que você se conecte ao Arduino dentro da colmeia e tenha distância da colmeia, onde não há risco de picadas de abelha.





Aplicativo Android


Em seguida, projetamos o aplicativo Android de que precisamos para nos conectar ao Arduino Nano BLE 33 Sense e começar a baixar dados e alertas sobre o status da família de abelhas.

1. Conectando-se ao dispositivo na colmeia

2. Tela principal com dados de temperatura e umidade e alertas de eventos.

Abaixo você pode ver os alertas que o dispositivo Arduino envia para o aplicativo Android.





Conceito de operação





Faça você mesmo!


Instruções para testar nosso sistema.

Etapa 1 Baixando o ambiente de programa .ino para programar o Arduino ble 33 sense. Compile o código e envie para a placa Arduino.

https://www.arduino.cc/en/software

Etapa 2 Baixe o aplicativo para o seu dispositivo Android (arquivo .apk em anexo)

Etapa 3 Instale o dispositivo Arduino na colmeia.

Etapa 4 Conectando-se ao dispositivo com conexão bluetooth





Melhorias

  • Melhorar o modelo de aprendizado de máquina aumentando o banco de dados do Bee Buzzing.
  • Adicione recursos extras ao aplicativo Android
  • Vemos melhorias na construção de um banco de dados de informações de colmeias na rede LoraWan, onde os dados podem ser enviados a um servidor e acessados ​​em qualquer lugar, a qualquer hora.





Conclusão


Temos o prazer de apresentar nossa ideia e compartilhar com vocês um projeto que você pode experimentar em seu próprio ambiente. Acreditamos estar no caminho certo para tornar o trabalho do apicultor mais fácil com novas melhorias. Você também pode contribuir para melhorar o modelo aumentando o banco de dados de gravações do zumbido das abelhas. Isso tornará o sistema mais preciso e menos sensível a interferências. Obrigada!

Código

  • Arduino Nano ble 33 sense
  • ei-smartbees-arduino-1.0.6.zip
Arduino Nano ble 33 sense C / C ++
 / * Exemplos do Edge Impulse Arduino Copyright (c) 2021 EdgeImpulse Inc. A permissão é concedida, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e arquivos de documentação associados (o "Software"), para negociar no Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, mesclar, publicar, distribuir, sublicenciar e / ou vender cópias do Software e para permitir que as pessoas a quem o Software é fornecido o façam, sujeito ao seguintes condições:O aviso de copyright acima e este aviso de permissão devem ser incluídos em todas as cópias ou partes substanciais do Software. O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRA", SEM QUALQUER TIPO DE GARANTIA, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM NENHUMA HIPÓTESE OS AUTORES OU TITULARES DOS DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, DELITO OU DE OUTRA FORMA, DECORRENTE DE, FORA DE OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE. * /// Se o seu destino for limitado na memória, remova esta macro para economizar 10K RAM # define EIDSP_QUANTIZE_FILTERBANK 0 / * Inclui ----------------------- ----------------------------------------- * / # include  #include  #include  #include  #include  #define BLE_UUID_STRING "1A3AC131-31EF-758B-BC51-54A61958EF82" #define BLE_UUID_TEST_SERVICE "9A48ECBA-2E92- 082F-C079-9E75AAE428B1 "/ ** Buffers de áudio, ponteiros e seletores * / typedef struct {int16_t * buffer; uint8_t buf_ready; uint32_t buf_count; uint32_t n_samples;} inference_t; inferência inference_t estática; sampleBuffer curto assinado estático [2048]; bool estático debug_nn =false; // Defina como verdadeiro para ver, por exemplo recursos gerados a partir da central signalBLEDevice bruta; serviço BLEService (BLE_UUID_TEST_SERVICE); BLEStringCharacteristic serviceOutput (BLE_UUID_STRING, BLERead | BLENotify, 200); / ** @brief Arduino setup function * / void setup () {// coloque seu código de configuração aqui, para execute uma vez:Serial.begin (115200); while (! Serial); pinMode (LED_BUILTIN, OUTPUT); if (! BLE.begin ()) {Serial.println ("inicialização do BLE falhou!"); enquanto (1); } BLE.setLocalName ("BeeHive"); BLE.setAdvertisedService (serviço); service.addCharacteristic (serviceOutput); BLE.addService (serviço); BLE.advertise (); Serial.println ("Dispositivo Bluetooth ativo, aguardando conexões ..."); if (! HTS.begin ()) {Serial.println ("Falha ao inicializar o sensor de temperatura de umidade!"); enquanto (1); } if (microphone_inference_start (EI_CLASSIFIER_RAW_SAMPLE_COUNT) ==false) {ei_printf ("ERR:Falha ao configurar amostragem de áudio \ r \ n"); Retorna; }} / ** @brief função principal do Arduino. Executa o loop de inferência. * / Void loop () {central =BLE.central (); if (central) {Serial.print ("Conectado à central:"); Serial.println (central.address ()); digitalWrite (LED_BUILTIN, HIGH); while (central.connected ()) {ei_printf ("Iniciando inferência em 2 segundos ... \ n"); atraso (2000); ei_printf ("Gravando ... \ n"); bool m =microfone_inferência_record (); if (! m) {ei_printf ("ERR:Falha ao gravar áudio ... \ n"); Retorna; } temperatura flutuante =HTS.readTemperature (); umidade flutuante =HTS.readHumidity (); StaticJsonDocument <600> doc; doc ["temperatura"] =(redondo (temperatura * 10) /10,0); doc ["umidade"] =(redondo (umidade * 10) /10,0); doc ["evento"] =""; ei_printf ("Gravação feita \ n"); signal_t ​​signal; signal.total_length =EI_CLASSIFIER_RAW_SAMPLE_COUNT; signal.get_data =µphone_audio_signal_get_data; resultado ei_impulse_result_t ={0}; EI_IMPULSE_ERROR r =run_classifier (&signal, &result, debug_nn); if (r! =EI_IMPULSE_OK) {ei_printf ("ERR:Falha ao executar o classificador (% d) \ n", r); Retorna; } // imprime as previsões ei_printf ("Predictions"); ei_printf ("(DSP:% d ms., Classificação:% d ms., Anomalia:% d ms.)", result.timing.dsp, result.timing.classification, result.timing.anomaly); ei_printf (":\ n"); previsões de flutuação [3]; para (size_t ix =0; ix  0) {Serial.write (print_buf); }} / ** @brief PDM buffer full callback Obter dados e chamar callback de thread de áudio * / static void pdm_data_ready_inference_callback (void) {int bytesAvailable =PDM.available (); // lê no buffer de amostra int bytesRead =PDM.read ((char *) &sampleBuffer [0], bytesAvailable); if (inference.buf_ready ==0) {for (int i =0; i > 1; i ++) {inference.buffer [inference.buf_count ++] =sampleBuffer [i]; if (inference.buf_count> =inference.n_samples) {inference.buf_count =0; inference.buf_ready =1; pausa; }}}} / ** @brief Init inferencing struct e setup / start PDM @param [in] n_samples As n amostras @return {description_of_the_return_value} * / static bool microphone_inference_start (uint32_t n_samples) {inference.buffer =(int16_t *) malloc (n_amostras * sizeof (int16_t)); if (inference.buffer ==NULL) {return false; } inference.buf_count =0; inference.n_samples =n_samples; inference.buf_ready =0; // configurar o retorno de chamada de recebimento de dados PDM.onReceive (&pdm_data_ready_inference_callback); // defina opcionalmente o ganho, o padrão é 20 PDM.setGain (80); PDM.setBufferSize (4096); // inicializar o PDM com:// - um canal (modo mono) // - uma taxa de amostragem de 16 kHz if (! PDM.begin (1, EI_CLASSIFIER_FREQUENCY)) {ei_printf ("Falha ao iniciar o PDM!"); microfone_inference_end (); retorna falso; } return true;} / ** @brief Aguardar novos dados @return True quando terminar * / static bool microphone_inference_record (void) {inference.buf_ready =0; inference.buf_count =0; while (inference.buf_ready ==0) {// delay (10); atraso (2000); } return true;} / ** Obter dados brutos de sinal de áudio * / static int microphone_audio_signal_get_data (size_t offset, size_t length, float * out_ptr) {numpy ::int16_to_float (&inference.buffer [offset], out_ptr, length); return 0;} / ** @brief Pare o PDM e libere buffers * / static void microphone_inference_end (void) {PDM.end (); free (inference.buffer);} # if! defined (EI_CLASSIFIER_SENSOR) || EI_CLASSIFIER_SENSOR! =EI_CLASSIFIER_SENSOR_MICROPHONE # erro "Modelo inválido para sensor atual." # Endif 
ei-smartbees-arduino-1.0.6.zip C / C ++
Biblioteca com modelo de aprendizado de máquina
 Sem visualização (somente download). 
Aplicativo Andorid
https://github.com/TCodingB/BeeMonitor.git
Arquivo Apk para dispositivo Android
https://github.com/TCodingB/BeeMonitor/tree/main/apk/debug

Processo de manufatura

  1. O que é VMC Machining?
  2. Guia para marcação a laser em alumínio
  3. Soldagem MIG vs. Soldagem TIG
  4. Guia para marcação a laser
  5. Considerações para usinagem suíça de alta produção
  6. Guia de Prototipagem CNC
  7. Compreendendo o Processo de Fabricação do Eixo
  8. O que é marcação a laser a fibra?
  9. Eletropolimento vs. Passivação
  10. O que é passivação de aço inoxidável?