제조공정
| × | 1 | ||||
| × | 1 |
| ||||
| ||||
|
소개
우리는 양봉가가 꿀 및 기타 제품을 효율적으로 생산할 수 있도록 도와주는 양봉 응용 프로그램의 개발을 제시할 것입니다. 응용 프로그램은 양봉 분야를 다룹니다. 우리는 양봉가가 꿀벌을 통제하고 가능한 한 효과적이도록 돕는 동기를 봅니다. 이렇게 하면 양봉가가 개별 벌통에서 오랜 시간 일하기가 더 쉬워집니다. 아이디어는 온도와 습도를 기반으로 앱이 특정 벌집에 있는 꿀벌 과의 상태에 대한 통찰력을 제공하고 떼밀기(swarming)라고 하는 특별한 이벤트를 감지한다는 것입니다. 이것은 꿀벌 가족이 두 부분으로 나누어지는 행사입니다. 한 부분은 벌통에 남아 있고 다른 부분은 벌통을 떠나 새 집을 찾습니다. 첫 번째 부분은 벌통에 남아 새 여왕이 부화할 때까지 기다리며, 후반부는 이전 여왕과 함께 벌집을 떠납니다. 여기서 양봉가가 적시에 조치를 취하는 것이 중요합니다. 그는 꿀벌이 윙윙거리는 소리 처리를 기반으로 이러한 이벤트를 인식하는 꿀벌 제어 응용 프로그램의 도움을 받을 것입니다.
솔루션
개인 양봉가는 일반적으로 많은 양의 벌통을 가지고 있기 때문에 결과적으로 많은 벌통도 있기 때문에 개별 벌통을 수동으로 검사하려면 많은 시간이 필요합니다. 우리 응용 프로그램의 도움으로 양봉가는 모바일 터미널과 블루투스 연결을 통해 개별 벌통에 연결하여 꿀벌 가족의 건강을 볼 수 있습니다. 또한 응용 프로그램은 양봉가에게 떼가 발생하는 경우 적시에 조치를 취할 수 있고 꿀벌이 자연으로 탈출하지 못하여 꿀 생산량이 감소할 것이라고 경고합니다.
설명
이 시스템은 Arduino Nano BLE 33 Sense 마이크로 컨트롤러로 구성되어 있으며 인쇄 회로 기판에 마이크도 포함되어 있습니다. 마이크로 컨트롤러에서 실행되는 알고리즘의 도움으로 컨트롤러는 꿀벌의 윙윙 거리는 소리를 듣고 학습 된 모델의 도움으로 여왕이 벌통에있을 때와 꿀벌의 윙윙 거리는 소리의 차이를 인식합니다. 그렇지 않다. Arduino에는 출생 감지 외에도 온도 및 습도 센서가 포함되어 있습니다. 이 데이터의 도움으로 벌집에 있는 꿀벌 가족의 상태나 건강을 결정할 수 있습니다. 목표는 낮은 에너지 소비였기 때문에 시스템은 하루에 몇 번만 상태를 측정하거나 경고 가능성이 가장 높은 오전 10시에서 오후 1시 사이에 상태를 측정합니다. 나머지 시간에는 기기가 대부분 유휴 상태이며 에너지를 소비하지 않습니다.
기계 학습 모델
설명 EdgeImpulse 절차
<울>먼저, 학습 모델의 기반이 되는 데이터를 수집하기 위해 마이크를 사용하여 꿀벌의 윙윙거림을 캡처했습니다.
<울>그런 다음 스펙트로그램을 사용하여 데이터를 처리했습니다.
<울>스펙트로그램은 모델을 훈련하는 데 사용된 신경망에 대한 입력이었습니다. 오랜 재계산 끝에 우리는 모델의 인식 성능을 보여주는 행렬로 주어진 결과를 얻었습니다.
아래 그래프는 캡처된 데이터를 기반으로 모델의 성능을 보여줍니다.
<울>마지막으로 Arduino 보드에 업로드할 라이브러리를 만들었습니다.
하드웨어 <울>
연결성
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단계 블루투스 연결로 기기에 연결
개선 사항 <울>
결론
우리는 우리의 아이디어를 발표하고 자신의 환경에서 시도할 수 있는 프로젝트를 공유하게 되어 기쁩니다. 우리는 추가 개선을 통해 양봉가의 작업을 더 쉽게 만드는 올바른 길을 가고 있다고 믿습니다. 또한 꿀벌 윙윙 거리는 녹음의 데이터베이스를 늘려 모델 개선에 기여할 수 있습니다. 이렇게 하면 시스템이 더 정확해지고 간섭에 덜 민감해집니다. 감사합니다!
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">/* 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
미리보기 없음(다운로드만 가능)
제조공정
투명한 플라스틱 부품을 내부에서 본 모습 최근 몇 년 동안 많은 제품이 플라스틱 부품을 통해 상호 작용을 개선하고, 내부를 과시하고, 조명 효과를 표시하거나, 스타일리시하게 고유한 이점을 얻었습니다. 어떤 경우에는 광학적 선명도 또는 올바른 모양을 얻는 데 드는 비용이 거의 들지 않지만 대부분의 제품에서는 초기 개발 렌더링에 표시된 비전을 투명 플라스틱 요소에 캡처하는 데 필요한 작업에 대해 훨씬 덜 생각합니다. 제품 개발 팀과의 사전 논의 및 계획은 기대치를 집중시키는 데 도움이 될 수 있으며 합리적인 비용으로 의도한 목표를
구성품 및 소모품 Arduino Nano 33 BLE 감지 × 1 USB-A-마이크로 USB 케이블 × 1 앱 및 온라인 서비스 Arduino IDE Edge Impulse Studio Android 스튜디오 이 프로젝트 정보 소개 우리는 양봉가가 꿀 및 기타 제품을 효율적으로 생산할 수 있도록 도와주는 양봉 응용 프로그램의 개발을 제시할 것입니다. 응용 프로그램은 양봉 분야를 다룹니다. 우리는