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

아두이노 나노 33 BLE 센스에서 Edge Impulse로 구현하는 TinyML 언어 감지기

부품 및 소모품

Arduino Nano 33 BLE Sense×1
PCA9685 8채널 8W 12V FET 드라이버 비례 밸브 컨트롤러 (I2C 인터페이스)×1
SG90 마이크로 서보 모터×3
9V 배터리 클립×1

필요한 도구 및 장비

3D 프린터 (범용)
납땜 인두 (범용)

앱 및 온라인 서비스

Edge Impulse Studio
Arduino IDE
Autodesk Fusion 360

프로젝트 개요

이 프로젝트는 Edge Impulse Studio를 사용해 아두이노 나노 33 BLE 센스에서 TinyML 언어 감지기를 구축하는 방법을 보여줍니다. 장치는 지속적으로 세 가지 음성 단어 — 이탈리아어 "si", 프랑스어 "oui", 영어 "yes" — 를 감지하고, 해당 단어가 인식되면 서보 모터로 제어되는 깃발을 작동시킵니다.

워크플로

아두이노 나노 33 BLE 센스에서 Edge Impulse로 구현하는 TinyML 언어 감지기

샘플링 및 데이터셋 생성

데이터셋은 총 30분 녹음으로 구성됩니다: 목표 단어당 10분씩 30분, 주변 배경 소음 3분. 각 1초 클립은 단일 발화를 담으며, Edge Impulse에서 적절히 라벨링됩니다. 배경 샘플은 모델이 음성과 비음성을 구분하는 데 도움을 줍니다.

아두이노 나노 33 BLE 센스에서 Edge Impulse로 구현하는 TinyML 언어 감지기
아두이노 나노 33 BLE 센스에서 Edge Impulse로 구현하는 TinyML 언어 감지기

모델 설계

Edge Impulse는 대부분의 전처리 단계를 자동화합니다. 오디오는 시계열로 변환되고, 윈도우잉을 거쳐 MFCC 특징으로 변환됩니다. 그런 다음 경량 CNN이 각 윈도우를 "si", "oui", "yes", "배경" 4개 클래스 중 하나로 분류합니다.

아두이노 나노 33 BLE 센스에서 Edge Impulse로 구현하는 TinyML 언어 감지기

훈련 및 아두이노 최적화

EON 튜너가 수십 가지 모델 구성을 자동 탐색하며, 정확도, 추론 시간, RAM, 플래시 사용량을 기준으로 평가합니다. 이 프로젝트에서는 상위 5개 정확도 모델 중 가장 빠른 모델을 선택했습니다.

아두이노 나노 33 BLE 센스에서 Edge Impulse로 구현하는 TinyML 언어 감지기

테스트

훈련 후 새로운 테스트 세트로 검증한 결과, 목표 단어에 대해 분류 신뢰도가 일관되게 80%를 초과했습니다.

아두이노 나노 33 BLE 센스에서 Edge Impulse로 구현하는 TinyML 언어 감지기

배포

배포는 Edge Impulse 아두이노 라이브러리를 통해 간소화됩니다. 생성된 헤더 파일을 아두이노 IDE에 추가하고, 세 개의 SG90 서보로 깃발을 제어하도록 커스터마이징합니다.

아두이노 나노 33 BLE 센스에서 Edge Impulse로 구현하는 TinyML 언어 감지기
아두이노 나노 33 BLE 센스에서 Edge Impulse로 구현하는 TinyML 언어 감지기

코드 개요

소스 코드(GitHub)는 Edge Impulse 템플릿에 서보 제어 로직을 확장한 것입니다. 주요 추가 사항:

  1. Adafruit_PWMServoDriver.h 통합으로 PCA9685 PWM 제어
  2. 모델 신뢰도에 따라 올바른 깃발을 작동시키는 servos_selector 함수
  3. 분류 신뢰도 80% 초과 시 servos_selector 트리거하는 조건부 로직
void servos_selector(int iter) {
  unsigned long time_now = millis();
  if (time_now - time_was > 2000) {
    time_was = time_now;
    switch (iter) {
      case 0: // 이탈리아어
        pwm.setPWM(0, 0, 350); delay(500);
        pwm.setPWM(0, 0, 200); pwm.setPWM(1, 0, 200); pwm.setPWM(2, 0, 200);
        break;
      case 1: // 프랑스어
        pwm.setPWM(1, 0, 350); Serial.println("2222"); delay(500);
        pwm.setPWM(0, 0, 200); pwm.setPWM(1, 0, 200); pwm.setPWM(2, 0, 200);
        break;
      case 2: // 영어
        pwm.setPWM(2, 0, 350); Serial.println("333"); delay(500);
        pwm.setPWM(0, 0, 200); pwm.setPWM(1, 0, 200); pwm.setPWM(2, 0, 200);
        break;
    }
  }
}

회로 설계

마이크로컨트롤러는 9V 배터리로 구동되며, PCA9685 보드로 세 개의 SG90 서보를 제어합니다. 보드의 12V 핀은 배터리에 연결되고, PWM 출력은 I2C 인터페이스를 통해 서보를 구동합니다.

아두이노 나노 33 BLE 센스에서 Edge Impulse로 구현하는 TinyML 언어 감지기

하드웨어, 소프트웨어, 데이터 파이프라인이 모두 갖춰진 TinyML 언어 감지기가 배포 준비되었습니다.

코드

GitHub 저장소

커스텀 부품 및 인클로저

(별도 파일 참조)

회로도

Fritzing 파일: languagedetection_9RxXhRX5sj.fzz

아두이노 나노 33 BLE 센스에서 Edge Impulse로 구현하는 TinyML 언어 감지기

제조공정

  1. 아두이노 나노와 MPU-6050으로 실시간 자이로스코프 게임 만들기
  2. 아두이노 디지털 주사위: LCD 기반 랜덤 넘버 제너레이터 만들기
  3. 아두이노 아이언맨 제작: 부품, 센서, 단계별 가이드
  4. 아두이노와 블루투스로 만드는 스마트 물건 찾기 'Find Me'
  5. 아두이노 릴레이 제어 가습기 자동화 – 고전압 안전 설계
  6. 아두이노 소나 & 프로세싱으로 실시간 거리 측정 및 시각화
  7. MobBob: 아두이노 로봇 직접 만들기, 안드로이드 스마트폰으로 매끄럽게 제어
  8. 아두이노 나노로 만드는 오디오 반응형 책상 무드등 (주소 지정 LED)
  9. 아두이노 나노와 네오픽셀 매트릭스로 만드는 네온 퐁 게임
  10. 게이밍용 커스텀 아두이노 조이스틱 스티어링 휠 만들기