피트니스 밴드는 오늘날 매우 인기를 얻고 있습니다.이 밴드는 발자국을 계산할뿐만 아니라 소모 된 칼로리를 추적하고, 심박수, 상영 시간 등을 표시합니다. 그리고 이러한 IoT 장치는 클라우드와 동기화되어 스마트 폰에서 신체 활동의 모든 기록을 쉽게 얻을 수 있습니다. 또한 중요한 데이터가 ThingSpeak로 전송되어 어디서나 모니터링되는 IoT 기반 환자 모니터링 시스템을 구축했습니다.
보수계 는 발자국을 세는 데만 사용되는 장치입니다. 따라서이 튜토리얼에서는 Arduino 및 가속도계를 사용하여 쉽고 저렴한 DIY 보수계 를 구축 할 것 입니다. 이 보수계는 발자국 수를 계산하고 16x2 LCD 모듈에 표시합니다. 이 보수계는이 Arduino Smart Watch와 통합 할 수 있습니다.
필요한 구성 요소
- Arduino Nano
- ADXL 335 가속도계
- 16 * 2 LCD
- LCD I2C 모듈
- 배터리
ADXL335 가속도계
ADXL335는 완전한 3 축 아날로그 가속도계이며 정전 용량 감지 원리로 작동합니다. 폴리 실리콘 표면 미세 가공 센서와 신호 컨디셔닝 회로를 갖춘 작고 얇은 저전력 모듈입니다. ADXL335 가속도계는 정적 및 동적 가속도를 측정 할 수 있습니다. 이 Arduino 보수계 프로젝트에서 ADXL335 가속도계는 보수계 센서 역할을합니다.
가속도계는 그 각각의 가변 전압을 임의의 방향으로 가속도를 전환 할 수있는 장치이다. 이는 커패시터 (이미지 참조)를 사용하여 수행되며, Accel이 이동함에 따라 내부에있는 커패시터도 이동에 따라 변경 (이미지 참조)됩니다. 커패시턴스가 변하기 때문에 가변 전압도 얻을 수 있습니다.
아래는 핀 설명과 함께 앞면과 뒷면의 가속도계 이미지입니다.
가속도계 핀 설명:
- Vcc-5V 공급이이 핀에 연결되어야합니다.
- X-OUT-이 핀은 x 방향으로 아날로그 출력을 제공합니다.
- Y-OUT-이 핀은 y 방향으로 아날로그 출력을 제공합니다.
- Z-OUT-이 핀은 z 방향으로 아날로그 출력을 제공합니다.
- GND- 접지
- ST- 센서 감도 설정에 사용되는 핀
제스처 제어 로봇, 지진 감지기 경보, 탁구 게임 등 가속도계 ADXL335를 사용하여 많은 프로젝트를 구축합니다.
회로도
Arduino 가속도계 스텝 카운터의 회로도 는 다음과 같습니다.
이 회로에서 우리는 ADXL335 Accelerometer를 사용하여 Arduino Nano와 인터페이스하고 있습니다. 가속도계의 X, Y, Z 핀은 Arduino Nano의 아날로그 핀 (A1, A2, A3)과 연결됩니다. 16x2 LCD 모듈을 Arduino와 인터페이스하기 위해 I2C 모듈을 사용하고 있습니다. I2C 모듈의 SCL 및 SDA 핀은 각각 Arduino Nano의 A5 및 A4 핀에 연결됩니다. 완전한 연결은 아래 표에 나와 있습니다.
Arduino Nano | ADXL335 |
3.3V | VCC |
GND | GND |
A1 | 엑스 |
A2 | 와이 |
A3 | 지 |
Arduino Nano | LCD I2C 모듈 |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCL |
먼저 브레드 보드에서 Arduino 설정을 사용 하여이 보수계를 구축했습니다.
그리고 성공적인 테스트 후에 우리는 Perfboard에있는 모든 구성 요소를 아래와 같이 납땜하여 Perfboard에 복제했습니다.
보수계는 어떻게 작동합니까?
만보계는 앞쪽, 수직, 옆쪽의 세 가지 동작 요소를 사용하여 사람이 걸은 총 걸음 수를 계산합니다. 만보계 시스템은 가속도계를 사용하여 이러한 값을 얻습니다. 가속도계는 정의 된 번호가있을 때마다 3 축 가속의 최대 값과 최소값을 지속적으로 업데이트합니다. 샘플. 이러한 3 축 (최대 + 최소) / 2의 평균값을 동적 임계 값 수준이라고하며이 임계 값은 단계를 수행할지 여부를 결정하는 데 사용됩니다.
달리는 동안 보수계는 어떤 방향이든 될 수 있으므로 보수계는 가속도 변화가 가장 큰 축을 사용하여 걸음 수를 계산합니다.
이제이 Arduino 보수계 의 작동에 대해 간단히 살펴 보겠습니다.
- 첫째, 만보계는 전원이 공급되는 즉시 보정을 시작합니다.
- 그런 다음 void 루프 함수에서 X, Y 및 Z 축에서 데이터를 계속 가져옵니다.
- 그 후 시작점에서 총 가속도 벡터를 계산합니다.
- 가속 벡터는 X, Y, Z 축 값의 제곱근 (x ^ 2 + y ^ 2 + z ^ 2)입니다.
- 그런 다음 평균 가속 값과 임계 값을 비교하여 단계 수를 계산합니다.
- 가속 벡터가 임계 값을 교차하면 단계 수가 증가합니다. 그렇지 않으면 유효하지 않은 진동을 버립니다.
Arduino 스텝 카운터 프로그래밍
전체 Arduino 스텝 카운터 코드 는이 문서의 끝에 제공됩니다. 여기서는이 코드의 몇 가지 중요한 스 니펫을 설명합니다.
평소와 같이 필요한 모든 라이브러리를 포함하여 코드를 시작합니다. ADXL335 가속도계는 아날로그 출력을 제공하므로 라이브러리가 필요하지 않습니다.
#포함
그 후 가속도계가 연결된 Arduino 핀을 정의하십시오.
const int xpin = A1; const int ypin = A2; const int zpin = A3;
가속도계의 임계 값을 정의합니다. 이 임계 값은 가속 벡터와 비교되어 단계 수를 계산합니다.
부동 임계 값 = 6;
내부 공간 설정 이 전원을 켤 때, 기능은 시스템을 교정합니다.
calibrate ();
void 루프 함수 내에서 100 개 샘플에 대한 X, Y 및 Z 축 값을 읽습니다.
for (int a = 0; a <100; a ++) {xaccl = float (analogRead (xpin)-345); 지연 (1); yaccl = float (analogRead (ypin)-346); 지연 (1); zaccl = float (analogRead (zpin)-416); 지연 (1);
3 축 값을 얻은 후 X, Y, Z 축 값의 제곱근을 취하여 총 가속도 벡터를 계산합니다.
totvect = sqrt (((xaccl-xavg) * (xaccl-xavg)) + ((yaccl-yavg) * (yaccl-yavg)) + ((zval-zavg) * (zval-zavg)));
그런 다음 최대 및 최소 가속 벡터 값의 평균을 계산합니다.
totave = (totvect + totvect) / 2;
이제 평균 가속도를 임계 값과 비교하십시오. 평균이 임계 값보다 크면 단계 수를 늘리고 플래그를 올립니다.
if (totave> threshold && flag == 0) {steps = steps + 1; 플래그 = 1; }
평균이 임계 값보다 크지 만 플래그가 발생하면 아무 작업도 수행하지 않습니다.
else if (totave> threshold && flag == 1) {// 계산 안 함}
총 평균이 임계 값 미만이고 플래그가 올라가면 플래그를 내립니다.
if (totave <임계 값 && 플래그 == 1) {플래그 = 0; }
직렬 모니터와 LCD에 단계 수를 인쇄합니다.
Serial.println (단계); lcd.print ("단계:"); lcd.print (단계);
Arduino 보수계 테스트
하드웨어와 코드가 준비되면 Arduino를 노트북에 연결하고 코드를 업로드하십시오. 이제 손으로 만보계를 설정하고 단계별로 걷기 시작하면 LCD에 걸음 수를 표시해야합니다. 가끔 만보계가 매우 빠르게 또는 매우 느리게 진동하면 걸음 수가 증가합니다.
ADXL335 보수계 Arduino에 대한 전체 작동 비디오 및 코드 가 아래에 나와 있습니다.