Capstone Design, Fall 2024, Inha University
인하대학교 종합설계프로젝트 - 대상 수상작
Project Duration : 2024.09. ~ 2024.12.
default.mp4
실시간 부위 확인 기능에 대한 부분 시연 영상
3D 프린팅으로 제작된 압력센서, 아두이노(가속도 센서, 자기 센서 내장), 배터리가 내장된 실제 양치 가능 칫솔 제작 기기입니다.
default.mp4
- Arduino Board: Arduino Nano 33 BLE Rev1
- IDE: Arduino IDE
- Version Control: Git
- Accelerometer, Magnetometer and Gyroscope values: Arduino_LSM9DS1.h
- Bluetooth: ArduinoBLE.h
- KalmanFilter: SimpleKalmanFilter.h
📁 Arduino
├── README.md
├── accuracy_test
│ └── accuracy_test.ino
├── complementary_filter
│ └── complementary_filter.ino
├── data_to_swift
│ └── data_to_swift.ino
├── final
│ └── final.ino
├── fsr_test
│ └── fsr.ino
├── kalman_filter
│ └── kalman_filter.ino
├── libraries
│ ├── ArduinoBLE
│ │ ├── CHANGELOG
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── docs
│ │ │ ├── api.md
│ │ │ ├── assets
│ │ │ │ └── ble-bulletin-board-model.png
│ │ │ └── readme.md
│ │ ├── examples
│ │ │ ├── Central
│ │ │ │ ├── LedControl
│ │ │ │ │ └── LedControl.ino
│ │ │ │ ├── PeripheralExplorer
│ │ │ │ │ └── PeripheralExplorer.ino
│ │ │ │ ├── Scan
│ │ │ │ │ └── Scan.ino
│ │ │ │ ├── ScanCallback
│ │ │ │ │ └── ScanCallback.ino
│ │ │ │ └── SensorTagButton
│ │ │ │ └── SensorTagButton.ino
│ │ │ └── Peripheral
│ │ │ ├── Advertising
│ │ │ │ ├── EnhancedAdvertising
│ │ │ │ │ └── EnhancedAdvertising.ino
│ │ │ │ └── RawDataAdvertising
│ │ │ │ └── RawDataAdvertising.ino
│ │ │ ├── BatteryMonitor
│ │ │ │ └── BatteryMonitor.ino
│ │ │ ├── ButtonLED
│ │ │ │ └── ButtonLED.ino
│ │ │ ├── CallbackLED
│ │ │ │ └── CallbackLED.ino
│ │ │ ├── EncryptedBatteryMonitor
│ │ │ │ └── EncryptedBatteryMonitor.ino
│ │ │ └── LED
│ │ │ └── LED.ino
│ │ ├── extras
│ │ │ ├── arduino-ble-parser.py
│ │ │ └── test
│ │ │ ├── CMakeLists.txt
│ │ │ ├── external
│ │ │ │ └── catch
│ │ │ │ └── v2.12.1
│ │ │ │ └── include
│ │ │ │ └── catch.hpp
│ │ │ ├── include
│ │ │ │ ├── Arduino.h
│ │ │ │ ├── test_advertising_data
│ │ │ │ │ └── FakeBLELocalDevice.h
│ │ │ │ ├── test_discovered_device
│ │ │ │ │ └── FakeGAP.h
│ │ │ │ └── util
│ │ │ │ ├── Common.h
│ │ │ │ ├── HCIFakeTransport.h
│ │ │ │ ├── Stream.h
│ │ │ │ ├── String.h
│ │ │ │ ├── TestUtil.h
│ │ │ │ └── itoa.h
│ │ │ └── src
│ │ │ ├── Arduino.cpp
│ │ │ ├── test_advertising_data
│ │ │ │ ├── FakeBLELocalDevice.cpp
│ │ │ │ ├── test_advertising_data.cpp
│ │ │ │ ├── test_local_name.cpp
│ │ │ │ ├── test_manufacturer.cpp
│ │ │ │ └── test_service.cpp
│ │ │ ├── test_discovered_device
│ │ │ │ ├── FakeGAP.cpp
│ │ │ │ └── test_discovered_device.cpp
│ │ │ ├── test_main.cpp
│ │ │ ├── test_uuid
│ │ │ │ └── test_uuid.cpp
│ │ │ └── util
│ │ │ ├── Common.cpp
│ │ │ ├── HCIFakeTransport.cpp
│ │ │ ├── String.cpp
│ │ │ ├── TestUtil.cpp
│ │ │ └── itoa.c
│ │ ├── keywords.txt
│ │ ├── library.properties
│ │ └── src
│ │ ├── ArduinoBLE.h
│ │ ├── BLEAdvertisingData.cpp
│ │ ├── BLEAdvertisingData.h
│ │ ├── BLECharacteristic.cpp
│ │ ├── BLECharacteristic.h
│ │ ├── BLEDescriptor.cpp
│ │ ├── BLEDescriptor.h
│ │ ├── BLEDevice.cpp
│ │ ├── BLEDevice.h
│ │ ├── BLEProperty.h
│ │ ├── BLEService.cpp
│ │ ├── BLEService.h
│ │ ├── BLEStringCharacteristic.cpp
│ │ ├── BLEStringCharacteristic.h
│ │ ├── BLETypedCharacteristic.h
│ │ ├── BLETypedCharacteristics.cpp
│ │ ├── BLETypedCharacteristics.h
│ │ ├── local
│ │ │ ├── BLELocalAttribute.cpp
│ │ │ ├── BLELocalAttribute.h
│ │ │ ├── BLELocalCharacteristic.cpp
│ │ │ ├── BLELocalCharacteristic.h
│ │ │ ├── BLELocalDescriptor.cpp
│ │ │ ├── BLELocalDescriptor.h
│ │ │ ├── BLELocalDevice.cpp
│ │ │ ├── BLELocalDevice.h
│ │ │ ├── BLELocalService.cpp
│ │ │ └── BLELocalService.h
│ │ ├── remote
│ │ │ ├── BLERemoteAttribute.cpp
│ │ │ ├── BLERemoteAttribute.h
│ │ │ ├── BLERemoteCharacteristic.cpp
│ │ │ ├── BLERemoteCharacteristic.h
│ │ │ ├── BLERemoteDescriptor.cpp
│ │ │ ├── BLERemoteDescriptor.h
│ │ │ ├── BLERemoteDevice.cpp
│ │ │ ├── BLERemoteDevice.h
│ │ │ ├── BLERemoteService.cpp
│ │ │ └── BLERemoteService.h
│ │ └── utility
│ │ ├── ATT.cpp
│ │ ├── ATT.h
│ │ ├── BLELinkedList.h
│ │ ├── BLEUuid.cpp
│ │ ├── BLEUuid.h
│ │ ├── CordioHCICustomDriver.h
│ │ ├── GAP.cpp
│ │ ├── GAP.h
│ │ ├── GATT.cpp
│ │ ├── GATT.h
│ │ ├── HCI.cpp
│ │ ├── HCI.h
│ │ ├── HCICordioTransport.cpp
│ │ ├── HCICordioTransport.h
│ │ ├── HCISilabsTransport.cpp
│ │ ├── HCISilabsTransport.h
│ │ ├── HCITransport.h
│ │ ├── HCIUartTransport.cpp
│ │ ├── HCIUartTransport.h
│ │ ├── HCIVirtualTransport.cpp
│ │ ├── HCIVirtualTransport.h
│ │ ├── HCIVirtualTransportAT.cpp
│ │ ├── HCIVirtualTransportAT.h
│ │ ├── L2CAPSignaling.cpp
│ │ ├── L2CAPSignaling.h
│ │ ├── bitDescriptions.cpp
│ │ ├── bitDescriptions.h
│ │ ├── btct.cpp
│ │ ├── btct.h
│ │ ├── keyDistribution.cpp
│ │ └── keyDistribution.h
│ ├── Arduino_BMI270_BMM150
│ │ ├── CHANGELOG
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── docs
│ │ │ ├── api.md
│ │ │ └── readme.md
│ │ ├── examples
│ │ │ ├── Interrupts_subclassing
│ │ │ │ └── Interrupts_subclassing.ino
│ │ │ ├── SimpleAccelerometer
│ │ │ │ └── SimpleAccelerometer.ino
│ │ │ ├── SimpleGyroscope
│ │ │ │ └── SimpleGyroscope.ino
│ │ │ └── SimpleMagnetometer
│ │ │ └── SimpleMagnetometer.ino
│ │ ├── keywords.txt
│ │ ├── library.properties
│ │ └── src
│ │ ├── Arduino_BMI270_BMM150.h
│ │ ├── BMI270.cpp
│ │ ├── BoschSensorClass.h
│ │ └── utilities
│ │ ├── BMI270-Sensor-API
│ │ │ ├── LICENSE
│ │ │ ├── OIS_README.md
│ │ │ ├── README.md
│ │ │ ├── bmi2.c
│ │ │ ├── bmi2.h
│ │ │ ├── bmi270.c
│ │ │ ├── bmi270.h
│ │ │ ├── bmi270_context.c
│ │ │ ├── bmi270_context.h
│ │ │ ├── bmi270_legacy.c
│ │ │ ├── bmi270_legacy.h
│ │ │ ├── bmi270_maximum_fifo.c
│ │ │ ├── bmi270_maximum_fifo.h
│ │ │ ├── bmi2_defs.h
│ │ │ ├── bmi2_ois.c
│ │ │ └── bmi2_ois.h
│ │ └── BMM150-Sensor-API
│ │ ├── Interrupt_settings.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── bmm150.c
│ │ ├── bmm150.h
│ │ └── bmm150_defs.h
│ ├── Arduino_LSM6DSOX
│ │ ├── LICENSE.txt
│ │ ├── README.adoc
│ │ ├── docs
│ │ │ ├── api.md
│ │ │ └── readme.md
│ │ ├── examples
│ │ │ ├── SimpleAccelerometer
│ │ │ │ └── SimpleAccelerometer.ino
│ │ │ ├── SimpleGyroscope
│ │ │ │ └── SimpleGyroscope.ino
│ │ │ └── SimpleTemperature
│ │ │ └── SimpleTemperature.ino
│ │ ├── keywords.txt
│ │ ├── library.properties
│ │ └── src
│ │ ├── Arduino_LSM6DSOX.h
│ │ ├── LSM6DSOX.cpp
│ │ └── LSM6DSOX.h
│ ├── Arduino_LSM9DS1
│ │ ├── CHANGELOG
│ │ ├── LICENSE.txt
│ │ ├── README.adoc
│ │ ├── docs
│ │ │ ├── api.md
│ │ │ └── readme.md
│ │ ├── examples
│ │ │ ├── SimpleAccelerometer
│ │ │ │ └── SimpleAccelerometer.ino
│ │ │ ├── SimpleGyroscope
│ │ │ │ └── SimpleGyroscope.ino
│ │ │ └── SimpleMagnetometer
│ │ │ └── SimpleMagnetometer.ino
│ │ ├── keywords.txt
│ │ ├── library.properties
│ │ └── src
│ │ ├── Arduino_LSM9DS1.h
│ │ ├── LSM9DS1.cpp
│ │ └── LSM9DS1.h
│ └── SimpleKalmanFilter
│ ├── LICENSE
│ ├── README.md
│ ├── examples
│ │ ├── AltitudeKalmanFilterExample
│ │ │ └── AltitudeKalmanFilterExample.ino
│ │ └── BasicKalmanFilterExample
│ │ └── BasicKalmanFilterExample.ino
│ ├── images
│ │ └── kalman_filter_example_1.png
│ ├── keywords.txt
│ ├── library.json
│ ├── library.properties
│ └── src
│ ├── SimpleKalmanFilter.cpp
│ └── SimpleKalmanFilter.h
├── logic_v2
│ └── logic_v2.ino
├── lowpass_filter
│ └── lowpass_filter.ino
└── one_sec_BLE
└── one_sec_BLE.ino