산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

BeeMonitor

구성품 및 소모품

Arduino Nano 33 BLE 감지
× 1
USB-A-마이크로 USB 케이블
× 1

앱 및 온라인 서비스

Arduino IDE
Edge Impulse Studio
Android 스튜디오

이 프로젝트 정보

소개

우리는 양봉가가 꿀 및 기타 제품을 효율적으로 생산할 수 있도록 도와주는 양봉 응용 프로그램의 개발을 제시할 것입니다. 응용 프로그램은 양봉 분야를 다룹니다. 우리는 양봉가가 꿀벌을 통제하고 가능한 한 효과적이도록 돕는 동기를 봅니다. 이렇게 하면 양봉가가 개별 벌통에서 오랜 시간 일하기가 더 쉬워집니다. 아이디어는 온도와 습도를 기반으로 앱이 특정 벌집에 있는 꿀벌 과의 상태에 대한 통찰력을 제공하고 떼밀기(swarming)라고 하는 특별한 이벤트를 감지한다는 것입니다. 이것은 꿀벌 가족이 두 부분으로 나누어지는 행사입니다. 한 부분은 벌통에 남아 있고 다른 부분은 벌통을 떠나 새 집을 찾습니다. 첫 번째 부분은 벌통에 남아 새 여왕이 부화할 때까지 기다리며, 후반부는 이전 여왕과 함께 벌집을 떠납니다. 여기서 양봉가가 적시에 조치를 취하는 것이 중요합니다. 그는 꿀벌이 윙윙거리는 소리 처리를 기반으로 이러한 이벤트를 인식하는 꿀벌 제어 응용 프로그램의 도움을 받을 것입니다.

솔루션

개인 양봉가는 일반적으로 많은 양의 벌통을 가지고 있기 때문에 결과적으로 많은 벌통도 있기 때문에 개별 벌통을 수동으로 검사하려면 많은 시간이 필요합니다. 우리 응용 프로그램의 도움으로 양봉가는 모바일 터미널과 블루투스 연결을 통해 개별 벌통에 연결하여 꿀벌 가족의 건강을 볼 수 있습니다. 또한 응용 프로그램은 양봉가에게 떼가 발생하는 경우 적시에 조치를 취할 수 있고 꿀벌이 자연으로 탈출하지 못하여 꿀 생산량이 감소할 것이라고 경고합니다.

설명

이 시스템은 Arduino Nano BLE 33 Sense 마이크로 컨트롤러로 구성되어 있으며 인쇄 회로 기판에 마이크도 포함되어 있습니다. 마이크로 컨트롤러에서 실행되는 알고리즘의 도움으로 컨트롤러는 꿀벌의 윙윙 거리는 소리를 듣고 학습 된 모델의 도움으로 여왕이 벌통에있을 때와 꿀벌의 윙윙 거리는 소리의 차이를 인식합니다. 그렇지 않다. Arduino에는 출생 감지 외에도 온도 및 습도 센서가 포함되어 있습니다. 이 데이터의 도움으로 벌집에 있는 꿀벌 가족의 상태나 건강을 결정할 수 있습니다. 목표는 낮은 에너지 소비였기 때문에 시스템은 하루에 몇 번만 상태를 측정하거나 경고 가능성이 가장 높은 오전 10시에서 오후 1시 사이에 상태를 측정합니다. 나머지 시간에는 기기가 대부분 유휴 상태이며 에너지를 소비하지 않습니다.

기계 학습 모델

설명 EdgeImpulse 절차

<울>
  • 마이크를 사용하여 데이터 캡처
  • 먼저, 학습 모델의 기반이 되는 데이터를 수집하기 위해 마이크를 사용하여 꿀벌의 윙윙거림을 캡처했습니다.

    <울>
  • 소리의 스펙트럼 분석
  • 그런 다음 스펙트로그램을 사용하여 데이터를 처리했습니다.

    <울>
  • 신경망을 사용하여 모델 구축
  • 스펙트로그램은 모델을 훈련하는 데 사용된 신경망에 대한 입력이었습니다. 오랜 재계산 끝에 우리는 모델의 인식 성능을 보여주는 행렬로 주어진 결과를 얻었습니다.

    아래 그래프는 캡처된 데이터를 기반으로 모델의 성능을 보여줍니다.

    <울>
  • 라이브러리 생성 및 Arduino에 업로드
  • 마지막으로 Arduino 보드에 업로드할 라이브러리를 만들었습니다.

    하드웨어

    <울>
  • Arduino Nano BLE 33 Sense
  • <울>
  • 배터리 전원
  • <울>
  • Android 모바일 단말기
  • 연결성

    Arduino에서 Android 전화의 응용 프로그램으로 데이터를 수신하기 위해 블루투스 연결 옵션을 사용했습니다. Arduino Nano BLE 33 Sense는 회로 기판에 블루투스 모듈을 제공합니다. 이 통신을 통해 벌통 내부의 Arduino에 연결하고 벌침의 위험이 없는 벌통과의 거리를 유지할 수 있습니다.

    안드로이드 앱

    다음으로 우리는 Arduino Nano BLE 33 Sense에 연결하고 꿀벌 가족의 상태에 대한 데이터 및 경고 다운로드를 시작하는 데 필요한 Android 앱을 설계했습니다.

    1. 하이브에 있는 기기에 연결

    2. 온습도 데이터와 이벤트 알림이 있는 메인 화면.

    아래에서 Arduino 장치가 Android 애플리케이션으로 보내는 경고를 볼 수 있습니다.

    작동 개념

    직접 해보세요!

    시스템 테스트 지침.

    1단계 Arduino ble 33 센스 프로그래밍을 위한 .ino 프로그램 환경을 다운로드합니다. 코드를 컴파일하여 Arduino 보드로 보냅니다.

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

    2단계 Android 기기에 앱 다운로드(첨부 파일의 .apk 파일)

    3단계 하이브에 아두이노 장치를 설치하세요.

    4단계 블루투스 연결로 기기에 연결

    개선 사항

    <울>
  • 벌 윙윙거리는 데이터베이스를 늘려 머신러닝 모델을 개선합니다.
  • Android 앱에 추가 기능 추가
  • 데이터를 서버로 보내고 언제 어디서나 액세스할 수 있는 LoraWan 네트워크에서 하이브 정보 데이터베이스 구축이 개선되었음을 확인했습니다.
  • 결론

    우리는 우리의 아이디어를 발표하고 자신의 환경에서 시도할 수 있는 프로젝트를 공유하게 되어 기쁩니다. 우리는 추가 개선을 통해 양봉가의 작업을 더 쉽게 만드는 올바른 길을 가고 있다고 믿습니다. 또한 꿀벌 윙윙 거리는 녹음의 데이터베이스를 늘려 모델 개선에 기여할 수 있습니다. 이렇게 하면 시스템이 더 정확해지고 간섭에 덜 민감해집니다. 감사합니다!

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • Arduino Nano ble 33 센스
  • ei-smartbees-arduino-1.0.6.zip
  • Arduino Nano ble 33 senseC/C++
    /* Edge Impulse Arduino 예제 Copyright (c) 2021 EdgeImpulse Inc. 이에 따라 이 소프트웨어 및 관련 문서 파일("소프트웨어")의 사본을 얻는 모든 사람에게 다음을 처리할 수 있는 권한이 무료로 부여됩니다. 소프트웨어의 사본을 사용, 복사, 수정, 병합, 출판, 배포, 2차 라이선스 부여 및/또는 판매할 수 있는 권리와 소프트웨어가 제공된 사람에게 그렇게 하도록 허용할 수 있는 권한을 포함하되 이에 국한되지 않는 제한 없는 소프트웨어 다음 조건:위의 저작권 표시 및 이 허가 표시는 소프트웨어의 모든 사본 또는 상당 부분에 포함되어야 합니다. 소프트웨어는 상품성, 특정 목적에의 적합성 및 비침해에 대한 보증을 포함하되 이에 국한되지 않는 어떠한 종류의 명시적 또는 묵시적 보증 없이 "있는 그대로" 제공됩니다. 어떤 경우에도 저자 또는 저작권자는 계약, 불법 행위 또는 기타의 행위로 인해 소프트웨어 또는 다른 거래와 관련하여 발생하는 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다. SOFTWARE.*/// 대상의 메모리가 제한되어 있는 경우 이 매크로를 제거하여 10K RAM을 저장합니다.#define EIDSP_QUANTIZE_FILTERBANK 0/* 포함 ----------------------- ----------------------------------------- */#포함  #include #include #include #include #define BLE_UUID_STRING "1A3AC131-31EF-758B-BC51-54A61958EF82#define 082F-C079-9E75AAE428B1"/** 오디오 버퍼, 포인터 및 선택기 */typedef struct { int16_t *buffer; uint8_t buf_ready; uint32_t buf_count; uint32_t n_samples;} 추론_t; 정적 추론_t 추론; 정적 서명된 짧은 샘플 버퍼[2048]; 정적 부울 debug_nn =false; // 이를 true로 설정하면 예를 들어 원시 신호에서 생성된 기능BLEDevice central;BLEService service(BLE_UUID_TEST_SERVICE);BLEStringCharacteristic serviceOutput(BLE_UUID_STRING, BLERead | BLENotify, 200);/** @brief Arduino setup function*/void setup(){ // 여기에 설정 코드를 넣어, 한 번 실행:Serial.begin(115200); 동안 (! 직렬); 핀모드(LED_BUILTIN, 출력); if (!BLE.begin()) { Serial.println("BLE 시작에 실패했습니다!"); 동안 (1); } BLE.setLocalName("비하이브"); BLE.setAdvertisedService(서비스); 서비스.addCharacteristic(serviceOutput); BLE.addService(서비스); BLE.광고(); Serial.println("블루투스 장치 활성화, 연결 대기 중..."); if (!HTS.begin()) { Serial.println("습도 센서 초기화 실패!"); 동안 (1); } if (microphone_inference_start(EI_CLASSIFIER_RAW_SAMPLE_COUNT) ==false) { ei_printf("ERR:오디오 샘플링 설정 실패\r\n"); 반품; }}/** @brief Arduino 주요 기능. 추론 루프를 실행합니다.*/void loop(){ central =BLE.central(); if (central) { Serial.print("중앙에 연결됨:"); Serial.println(중앙 주소()); 디지털 쓰기(LED_BUILTIN, 높음); while (central.connected()) { ei_printf("2초 후에 추론 시작...\n"); 지연(2000); ei_printf("녹화중...\n"); 부울 m =마이크 추론_기록(); if (!m) { ei_printf("오류:오디오 녹음 실패...\n"); 반품; } 부동 온도 =HTS.readTemperature(); 플로트 습도 =HTS.readHumidity(); StaticJsonDocument<600> 문서; 문서["온도"] =(원(온도*10)/10.0); doc["습도"] =(round(습도*10)/10.0); 문서["이벤트"] =""; ei_printf("녹화 완료\n"); signal_t ​​신호; signal.total_length =EI_CLASSIFIER_RAW_SAMPLE_COUNT; signal.get_data =µphone_audio_signal_get_data; ei_impulse_result_t 결과 ={ 0 }; EI_IMPULSE_ERROR r =run_classifier(&signal, &result, debug_nn); if (r !=EI_IMPULSE_OK) { ei_printf("오류:분류기(%d)를 실행하지 못했습니다.\n", r); 반품; } // 예측 출력 ei_printf("Predictions "); ei_printf("(DSP:%d ms., 분류:%d ms., 이상:%d ms.)", result.timing.dsp, result.timing.classification, result.timing.anomaly); ei_printf(":\n"); 부동 소수점 예측[3]; for (size_t ix =0, ix  0) { Serial.write(print_buf); }}/** @brief PDM 버퍼 전체 콜백 데이터 가져오기 및 오디오 스레드 콜백 호출*/static void pdm_data_ready_inference_callback(void){ int bytesAvailable =PDM.available(); // 샘플 버퍼로 읽습니다. 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; 부서지다; } } }}/** @brief 추론 구조 및 PDM 설정/시작 시작 @param[in] n_samples n 샘플 @return { description_of_the_return_value }*/static bool 마이크_inference_start(uint32_t n_samples){ inference.buffer =(int16_t *)malloc (n_샘플 * sizeof(int16_t)); if (inference.buffer ==NULL) { return false; } 추론.buf_count =0; inference.n_samples =n_samples; inference.buf_ready =0; // 데이터 수신 콜백 구성 PDM.onReceive(&pdm_data_ready_inference_callback); // 선택적으로 게인을 설정합니다. 기본값은 20입니다. PDM.setGain(80); PDM.setBufferSize(4096); // 다음을 사용하여 PDM을 초기화합니다. // - 하나의 채널(모노 모드) // - 16kHz 샘플 속도 if (!PDM.begin(1, EI_CLASSIFIER_FREQUENCY)) { ei_printf("PDM을 시작하지 못했습니다!"); 마이크 추론_end(); 거짓을 반환합니다. } return true;}/** @brief 새 데이터 기다림 @return 완료되면 True*/static bool 마이크_inference_record(void){ inference.buf_ready =0; 추론.buf_count =0; while (inference.buf_ready ==0) { //delay(10); 지연(2000); } return true;}/** 원시 오디오 신호 데이터 가져오기*/static int Mike_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 PDM을 중지하고 버퍼를 해제합니다.*/static void 마이크_inference_end(void){ PDM.end(); 무료(inference.buffer);}#if !정의(EI_CLASSIFIER_SENSOR) || EI_CLASSIFIER_SENSOR !=EI_CLASSIFIER_SENSOR_MICROPHONE#error "현재 센서의 모델이 잘못되었습니다.#endif
    ei-smartbees-arduino-1.0.6.zipC/C++
    기계 학습 모델이 있는 라이브러리
    미리보기 없음(다운로드만 가능)
    안드로이드 애플리케이션
    https://github.com/TCodingB/BeeMonitor.git
    Android 기기용 APK 파일
    https://github.com/TCodingB/BeeMonitor/tree/main/apk/debug

    제조공정

    1. VMC 머시닝이란?
    2. 알루미늄 레이저 마킹 가이드
    3. MIG 용접 대 TIG 용접
    4. 레이저 마킹 가이드
    5. 대량 생산 스위스 가공에 대한 고려 사항
    6. CNC 프로토타이핑 가이드
    7. 샤프트 제조 공정 이해
    8. 파이버 레이저 마킹이란 무엇입니까?
    9. 전해연마 대 패시베이션
    10. 스테인레스 스틸 패시베이션이란 무엇입니까?