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

압력 분포를 확인하는 DIY 스마트 깔창

구성품 및 소모품

Arduino MKR1000
× 1
강제 감지 저항기
Interlink 모델 402를 사용했습니다.
× 3
OpenBuilds 유선 케이블 - 도보
× 1
저항 10k 옴
× 3
파워 뱅크
× 1
SparkFun 3축 가속도계 브레이크아웃 - ADXL345
× 1

필요한 도구 및 기계

납땜 인두(일반)
납땜, 열 수축 및 기타 해당 액세서리가 없는 경우 구입하는 것을 잊지 마십시오.

앱 및 온라인 서비스

Thinger.io 플랫폼
Arduino IDE

이 프로젝트 정보

압력 측정은 이미 다양한 상황에서 사용되고 있습니다. 보행 역학에 대한 정보를 제공하고 임상 상황 및 스포츠와 같은 광범위한 응용 분야를 가지고 있습니다. 이 프로젝트에서 센서는 무게 분포에 대한 통찰력을 얻는 데 사용됩니다. 압력 매핑의 실시간 시각화도 통합되어 데이터를 훨씬 쉽게 이해할 수 있습니다.

필요한 하드웨어

<울>
  • Arduino MKR1000 - Wi-Fi가 있는 대부분의 3.3V 또는 5V 보드가 작동하지만 ESP를 사용하는 것은 권장하지 않습니다. 어떤 이유로 이 프로젝트를 생성하는 동안 여러 ESP 보드가 부정확한 측정값을 반환했습니다.
  • 힘에 민감한 저항기(3). Interlink 402(100N)를 사용했습니다. 나는 또한 하나 더 비싼 Interlink 406을 사용했지만 돌이켜보면 402도 효과가 있었을 것입니다. 정확도를 높이려면 더 많은 FSR을 사용하세요.
  • 10K 저항기. 저항을 변경하여 판독값을 원하는 범위로 조정하십시오. 저항이 높을수록 증분이 커집니다. 이에 대한 자세한 정보는 여기에서 확인하세요.
  • 가속도계, 16G ADXL345를 사용했습니다. 이를 사용하여 발의 가속도와 움직임을 측정합니다.
  • 모든 것을 하나로 묶는 납땜 인두. 분명한 이유로 악어 클립은 신발에 잘 맞지 않습니다.
  • 배선하기

    회로에 대한 몇 가지 간단한 참고 사항:

    FSR: 읽기 이것 당신 시작 납땜: FSR에 전선을 납땜하는 동안 매우 조심하십시오. 기술이 있는지 확실하지 않은 경우에는 이 작업을 시도하지 마십시오. 매우 납땜해야 합니다. 빨리 또는 플라스틱이 녹습니다. 저를 믿으세요, 제가 어렵게 찾았습니다...

    FSR에는 긍정적인 측면도 없고 부정적인 측면도 없으므로 걱정할 필요가 없습니다.

    앞서 언급했듯이 저항을 변경하여 원하는 범위 내에서 판독값을 조정할 수 있습니다.

    접지/5V: 보시다시피 모든 센서는 5V 라인과 커먼에 납땜되어 있습니다.

    가속도계: 프로젝트에 필요하지 않은 경우 가속도계를 생략할 수 있습니다. 단순히 압력을 측정하고 싶을 때 사용할 필요는 없지만 가속도를 측정하고 싶거나 보행 주기를 분석해야 하는 경우에는 유용할 수 있습니다. 그러나 이 튜토리얼에서는 꼭 필요한 것은 아닙니다.

    깔창에 하드웨어 부착

    코드를 먼저 실행한 후에 이 작업을 수행하는 것이 좋습니다. 납땜 실수를 한 경우 그 지점에서 찾을 수 있기 때문입니다. 이렇게 하면 다시 납땜해야 할 경우에 대비하여 하드웨어를 깔창에 부착하고 다시 부착하는 번거로움을 줄일 수 있습니다.

    FSR은 깔창의 세 지점에 부착됩니다. 왼쪽 상단 FSR은 외번을 측정하고 오른쪽 상단 FSR은 내번을 측정하며 뒤꿈치의 FSR은 뒤꿈치 압력을 측정합니다. FSR에 적합한 지점을 찾는 것은 노력의 문제입니다. 걸을 때 아날로그 값이 가장 많이 변하는 지점이 가장 좋은 부착 위치입니다.

    테이프는 전선을 제자리에 고정하는 데 사용됩니다. 움직이면 FSR 판독에 간섭을 일으킬 수 있습니다. 또한 깔창을 제자리에 고정하기 위해 밑창 바닥과 신발 안쪽에 벨크로 테이프를 사용했습니다.

    가속도계를 사용하는 경우 신발 뒤꿈치 뒤쪽에 부착하십시오. 저는 양면 테이프를 사용했습니다.

    힘 측정

    이제 우리는 힘을 측정할 준비가 되었습니다. 참고:다음 두 섹션에서는 Thinger.io 라이브러리에 익숙하다고 가정합니다. 이에 대한 자세한 내용은 "Thinger.io를 통해 데이터 보내기" 섹션을 참조하십시오.

    프로그램에는 WiFi 연결 데이터와 같이 설정에 필요한 변수를 포함하여 꽤 긴 헤더 부분이 있습니다. 이 부분에는 프로그램에서 사용되는 전역 변수(대부분 배열)도 포함됩니다. 내가 한 중요한 선택 중 하나는 가능한 한 배열을 사용하는 것이었습니다. 아이디어는 각 FSR 센서에 대해 개별 어레이 요소를 사용하는 것입니다. 따라서 이 경우 배열의 길이는 3입니다.

    원치 않는 부작용 때문에 너무 많은 전역 변수를 사용하는 습관을 들이지 마십시오. Thinger.io를 통해 데이터를 전송하는 데 필요한 경우가 많기 때문에 사용했습니다.

    코드는 주석에 설명되어 있습니다. 코드를 단계별로 살펴보겠습니다. 아래에서 전체 코드를 다운로드할 수 있습니다.

    #define _DEBUG_ //시리얼 모니터 사용 가능
    #include
    #include
    #include //가속도계
    #include //가속도계
    #include //가속도계
    #include
    #define USERNAME "yourUsername"
    #define DEVICE_ID "yourDeviceID"
    #define DEVICE_CREDENTIAL "yourDeviceCredential"
    #define SSID "yourSSID"
    #define SSID_PASSWORD "yourSSIDPassword"
    //* FSR 센서*/
    #define noFSRs 3 // 연결된 FSR의 수
    #define FSR1 A1
    #define FSR2 A2
    #define FSR3 A3
    float fsrVoltageArray[3 ]; // 아날로그 판독값을 부동 소수점 숫자로 전압으로 변환 및 스케일링
    float fsrForceArray[3]; // 뉴턴의 힘
    float fsrWeightInGramsArray[3]; // 무게를 그램으로 변환
    int pinArray[3] ={FSR1, FSR2, FSR3}; // 세 장치의 핀 ID
    float forceMaxArray[3] ={100.0, 100.0, 100.0}; // 지원되는 최대 힘
    float million =1000000.0; // 단위 "1/micro
    float conversionToKgrams =1.0/9.80665;
    long K =1000;
    long R =10*K; // R in K Ohm
    long Vcc =5000; // 5V=5000mV, 3.3V =3300 mV
    float voltageMax =0.98 * Vcc; // Vcc의 95%로 설정된 최대 전압. 이 값을 넘어서는 최대로 힘을 설정합니다.
    ThingerWifi101 사물(USERNAME, DEVICE_ID, DEVICE_CREDENTIAL);

    아직 모든 것을 이해하지 못했다고 당황하지 마십시오. 나머지 코드를 보면 이해가 더 잘 될 것입니다.

    결과를 시각화하고 싶습니다. 이를 위해 Thinger.io Wi-Fi 라이브러리를 사용합니다. 이 연결은 다음 줄을 통해 설정됩니다.

    ThingerWifi101 사물(USERNAME, DEVICE_ID, DEVICE_CREDENTIAL); 

    입력 인수는 Thinger.io의 계정을 통해 가져오기 때문에 먼저 설정해야 합니다.

    setup() 함수에서 직렬 연결이 먼저 설정됩니다. 그 다음에는 WiFi 연결을 생성하라는 호출이 이어집니다.

    void setup(void) {
    Serial.begin(115200); //시리얼 통신 시작
    thing.add_wifi(SSID, SSID_PASSWORD); //와이파이 설정 호출
    }
    void loop(void) {
    thing.handle();
    }

    다음으로 "압력"이라는 "사물"을 정의합니다. "사물"은 Thinger.io 라이브러리의 핵심 개념입니다. 함수처럼 작동하지만 특별한 구조를 가지고 있습니다. 결과 데이터를 클라우드로 보내기 위해 필요합니다. 이 라이브러리에 대한 자세한 내용은 "Thinger.io를 통해 데이터 보내기" 섹션에서 찾을 수 있습니다.

    "압력"이라는 "사물"은 3개의 FSR 센서 값을 읽고 직렬 콘솔에 인쇄합니다. 동일한 값이 "out" 채널에도 전송됩니다. 이런 식으로 원시 입력 데이터를 쉽게 확인할 수 있습니다.

    "전압"이라는 이름의 "사물"에서 전압 값을 읽고 "fsrReading"이라는 로컬 변수에 저장합니다. "map" 기능을 사용하면 지원되는 최소값 및 최대값을 기준으로 값이 조정되고 "fsrVoltageArray" 배열로 반환됩니다. for 루프를 통해 각 FSR이 이 결과 배열에서 고유한 위치를 갖도록 합니다.

    모든 코드는 setup 함수 안에 있습니다. 루프 안에 아무 것도 넣지 마십시오(아마도 익숙할 것입니다). Thinger.io 라이브러리에서 처리할 수 없습니다...

    void setup(void) {
    Serial.begin(115200); //시리얼 통신 시작
    thing.add_wifi(SSID, SSID_PASSWORD); //와이파이 기능 설정 호출
    /*FSR 센서*/
    thing["pressure"]>> [](pson &out) {
    out["FSR1"] =analogRead (FSR1);
    Serial.print("FSR1:");
    Serial.println(analogRead(FSR1));
    out["FSR2"] =analogRead(FSR2);
    Serial.print("FSR2:");
    Serial.println(analogRead(FSR2));
    out["FSR3"] =analogRead(FSR3);
    Serial.print( "FSR3:");
    Serial.println(analogRead(FSR3));
    };
    물건["전압"]>> [](pson &out) {
    for (int FSR =0; FSR fsrVoltageArray[ FSR] =0.0; // 입력 시 값 재설정
    fsrForceArray[FSR] =0.0;
    int fsrPin =pinArray[FSR];
    정수 fsrReading =analogRead(fsrPin);
    fsrVoltageArray[FSR] =(float) map(fsrReading, 0, 1023, 0, 5000); //5V 장치를 사용하지 않는 경우 5000을 다른 값으로 변경
    } //FSR을 통한 루프 끝
    out["FSR1voltage"] =fsrVoltageArray[0];
    out ["FSR2voltage"] =fsrVoltageArray[1];
    out["FSR3voltage"] =fsrVoltageArray[2];
    };
    무효 루프(무효) {
    thing.handle ();
    //Thinger.io가 그것을 좋아하지 않기 때문에 여기에 어떤 코드도 넣지 마십시오.
    }

    for 루프가 완료된 후 값은 출력 채널 "out"으로 전송됩니다. 각 센서에는 "FSR1voltage"와 같은 고유한 문자열이 있습니다.

    "newton"이라는 "thing"은 이 프로그램에서 가장 복잡한 기능입니다. 전압을 뉴턴 단위의 힘으로 변환합니다. 다시 for-loop는 각 FSR에 대해 이 작업을 수행하는 데 사용됩니다.

    여러 코너 케이스를 구별해야 하기 때문에 계산은 상당히 복잡합니다. 전압 값이 너무 작거나 너무 큰 경우 힘에 고정 값을 할당합니다. 전압이 컷오프 값 사이에 있는 경우 로그 함수를 사용하여 힘을 계산합니다. 이 기능은 곡선의 기울기를 줄이기 위해 선택됩니다.

    공식은 근사치일 뿐입니다. 각 센서에는 (다소) 다른 곡선이 있을 수 있지만 여기에서는 간단하게 구분하지 않습니다.

    계산 결과 값은 "fsrForceArray" 배열에 저장됩니다. 다시 말하지만, 각 FSR은 이 어레이에서 고유한 위치를 갖습니다. 세 개의 최종 값은 "out" 출력 채널로 전송됩니다.

    마지막 "사물" 기능을 "중량"이라고 합니다. 힘을 그램 단위의 무게로 반환하기 위해 간단한 변환이 적용됩니다.

    thing["newton"]>> [](pson &out) {
    for (int FSR =0; FSR // 전압 V의 함수로서의 힘 F는 다음과 같이 계산됩니다. F(V) =(Fmax/Vmax) * V
    float force_value =(forceMaxArray[FSR]/voltageMax) * fsrVoltageArray[FSR];
    // 세 가지 상황이 구별됩니다.
    //
    // 1. V가 최대값에 너무 가까우면(voltageMax에 의해 정의됨),
    //
    // 2 계산된 힘 F가 너무 작으면 노이즈 효과를 피하기 위해 0으로 설정합니다.
    //
    // 3. 다른 모든 경우에는 슬루프를 줄이기 위해 로그 값을 취하고
    if ( fsrVoltageArray[FSR] // V는 이 분기에서 너무 높지 않습니다.
    if ( force_value <=1.00 ) {
    fsrForceArray[FSR] =0.0; // 힘이 너무 작으면 0으로 설정
    } else {
    fsrForceArray[FSR] =log10(force_value); // 값은 괜찮습니다. 이 로그를 취합니다.
    }
    } else {
    // 전압이 Vcc에 너무 가까우면 힘을 제한합니다(Vcc의 경우 무한대일 것입니다)
    fsrForceArray[FSR] =log10(forceMaxArray[FSR]);
    Serial.print("FSR에 대한 차단 활성화 ="); Serial.println(FSR);
    }
    } // FSR에 대한 루프 끝
    out["FSR1newton"] =fsrForceArray[0];
    out["FSR2newton"] =fsrForceArray[1];
    out["FSR3newton"] =fsrForceArray[2];
    }; // end of things
    thing["weight"]>> [](pson &out) {
    // 뉴턴의 힘을 그램의 무게로 변환하는 간단한 계산
    for ( int FSR =0; FSR fsrWeightInGramsArray[FSR] =fsrForceArray[FSR] * conversionToKgrams * 1000.0;
    }
    out["FSR1weight"] =fsrWeightInGramsArray[0];
    out["FSR2weight"] =fsrWeightInGramsArray[1];
    out["FSR3weight"] =fsrWeightInGramsArray[2];
    }; //끝

    Thinger.io에서 대시보드를 설정하는 것을 잊지 마십시오. 어떻게 작동하는지 알고 있을 것입니다.

    힌트 :모든 것이 예상대로 작동하면 대시보드가 ​​다음과 유사해야 합니다.

    가속도 측정

    이것은 실제로 압력을 측정하는 것보다 훨씬 쉽습니다. 먼저 헤더 부분에 일부 코드를 추가해야 합니다. "Wire.h"(SDA 및 SDL 핀과 통신하기 위해), "Adafruit_Sensor.h" 및 "Adafruit_ADXL345_U.h" 라이브러리 포함으로 시작합니다. 또한 x, y 및 z 축의 가속도를 측정하고 전송할 수 있도록 3개의 새로운 전역 변수가 필요합니다.

    이전에 추가한 라이브러리를 제거하지 마십시오. Thinger.io에 연결하는 데 필요합니다.

    다음 코드 블록에서는 가속도계가 응답하는지 확인합니다. 그렇지 않으면 아무 일도 일어나지 않을 것입니다. 그렇지 않으면 범위가 정의되고 "가속도계"라는 "사물"이 실행됩니다. 이것은 장치를 쿼리하고 x, y 및 z 방향의 세 가지 가속도 값을 출력 "out" 채널로 보냅니다.

    이 코드 부분은 Adafruit에 포함된 샘플 코드(파일> 예제> Adafruit ADXL345)와 유사하지만 필요하지 않기 때문에 일부 부분을 생략했습니다.

    #include 
    #include
    #include
    /* 이 센서에 고유 ID를 할당하십시오. 같은 시간 */
    Adafruit_ADXL345_Unified accel =Adafruit_ADXL345_Unified(12345);
    int x =0;
    int y =0;
    int z =0;
    void setup(void) {
    Serial.begin(115200);
    if(!accel.begin()) { // 센서 초기화
    Serial.println("아니요 ADXL345 감지");
    } else {
    // 이 센서의 범위 - 범위를 모르는 경우 실행
    // Adafruit에서 제공한 ADXL345 예제 코드의 displayDataRate
    accel.setRange(ADXL345_RANGE_16_G);
    thing["accelerometer"]>> [](pson&out){ // Thinger.io를 위한 새로운 "thing" 함수
    sensors_event_t event;
    accel.getEvent(&event); // 새 센서 이벤트 가져오기
    out["x"] =event.acceleration.x; // 결과 표시(가속도는 m/s^2 단위로 측정됨)
    out["y"] =event.acceleration.y;
    out["z"] =event.acceleration.z;
    Serial.print("X:"); Serial.print(event.acceleration.x); Serial.print(" ");
    Serial.print("Y:"); Serial.print(event.acceleration.y); Serial.print(" ");
    Serial.print("Z:"); Serial.print(event.acceleration.z); Serial.print(" ");Serial.println("m/s^2 ");
    }; // 사물의 끝
    } //if/else 문의 끝
    }

    힌트: 위의 코드를 실행한 후 출력은 아래 표시된 예와 유사해야 합니다.

    종합하기

    전체 코드는 페이지 하단에서 확인하세요 :)

    Thinger.io를 통해 데이터 보내기

    이 라이브러리는 여기에 잘 설명되어 있지만, "사물"(말장난이 아님)을 더 쉽게 작성하고 사용할 수 있도록 하는 몇 가지 중요한 정보가 있습니다.

    Thinger.io는 매우 광범위한 라이브러리입니다. 이 섹션에서는 애플리케이션에 필요하고 사용되는 기능만 다룹니다. 구조는 다음과 같습니다(닫는 중괄호 "}" 뒤의 세미콜론 ";" 참고).

    thing[]>> [](pson&out)
    {
    <귀하의 코드>
    };

    이것을 C++에서는 람다 함수라고 합니다. 정의를 시작하는 필수 첫 단어는 "thing"이며 전체 기능을 "thing"이라고도 합니다.

    문자열(예:thing["myFirstThing"] )은 함수에 이름을 지정합니다. 각 "사물"은 고유한 이름을 가져야 합니다.

    ">>" 기호는 이 "사물"에 출력 값만 있음을 나타냅니다. 입력이 필요한 경우 "<<"로 변경합니다. 입력과 출력이 모두 필요한 경우 "=" 기호를 사용해야 합니다. 우리의 경우 출력 값만 있습니다.

    "pson &out" 인수는 출력 값이 "out"이라는 데이터 구조를 통해 전송됨을 의미합니다. "pson" 데이터 유형은 매우 유연하며 다양한 유형의 변수를 포함할 수 있으며 JSON 문서도 지원합니다.

    우리 코드에서는 "out[] =value" t 형식을 사용합니다. o "ThingerWifi101 thing(USERNAME, DEVICE_ID, DEVICE_CREDENTIAL)" 호출과 연결된 시각화 디스플레이에 값을 보냅니다. 프로그램의 첫 부분에서.

    눈치채셨겠지만 일반적으로 루프 함수 내부에는 코드가 많지 않습니다. "thing.handle()"만 호출하면 됩니다. 루프 부분에서 끝점 및 스트림 리소스를 호출할 수도 있습니다. 다른 모든 코드는 정의한 "사물"에서 처리됩니다.

    "사물" 내부의 코드는 계속해서 반복됩니다. 우리의 경우와 같이 데이터가 정기적으로 업데이트되는 경우 계산을 "사물" 안에 넣는 것이 중요합니다.

    FAQ

    아무 일도 일어나지 않습니다!

    전선을 확인하십시오. 이 수준에서 문제가 발생했을 가능성이 있습니다. 직렬 모니터 내부에 아무 것도 나타나지 않으면 "#define _DEBUG_"가 코드의 첫 번째 줄에 있는지 확인하십시오. TLS도 방해가 될 수 있습니다. 비활성화할 수 있지만 주의하세요. 또한 Thinger.io에 대한 연결이 제대로 작동하는지 확인하십시오.

    출력이 예상과 다릅니다.

    업데이트해야 하는 모든 코드가 "사물" 내부에 있습니까? "사물" 외부에 있으면 업데이트되지 않습니다. 나는 또한 ESP 장치가 명백한 이유 없이 FSR 센서와 잘 작동하지 않는다는 것을 발견했습니다.

    출력 이다 아님 업데이트됨 정기적으로

    코드에 지연을 추가했습니까? 제거하세요 :) Thinger.io 자체에서 새로 고침 빈도를 설정할 수 있습니다.

    모든 출력을 하나의 그래프에 표시하고 싶습니다.

    단일 "사물" 안에 모든 코드 추가

    수고하셨습니다!

    이 튜토리얼이 FSR 센서, 가속도계 및 Thinger.io의 기본 사항을 이해하는 데 도움이 되었기를 바랍니다. 이 코드를 개선하기 위한 제안 사항을 읽고 싶습니다. 부끄러워하지 말고 창작물을 공유해 주세요!

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

    코드

    <울>
  • 스마트 깔창-자습서
  • 스마트 깔창-자습서Arduino
    이 튜토리얼의 전체 코드
    #define _DEBUG_ //이것이 다른 포함보다 먼저 와야 합니다. 그렇지 않으면 보드가 충돌할 수 있습니다./*여기에서 튜토리얼을 찾으십시오:https://www.hackster.io/projects/a5ceae*/# include  //Thinger#include  //Thinger#include  //가속도계#include  //가속도계#include  //가속도계# define USERNAME "yourUsername#define DEVICE_ID "yourDevice#define DEVICE_CREDENTIAL "yourCredential#define SSID "yourSSID"#define SSID_PASSWORD "yourSSIDPassword"Adafruit_ADXL345_Unified accel =Adafruit_ADXL345_Unified(12345); //가속도계int x =0; //0으로 재설정 int y =0;int z =0; //*FSR 센서*/#define noFSRs 3 // 연결된 FSR 수#define FSR1 A1 //아날로그 포트#define FSR2 A2 #define FSR3 A3 float fsrVoltageArray[3]; // 아날로그 판독값을 부동 소수점으로 전압으로 변환 및 // 스케일 //numberfloat fsrForceArray[3]; // Newtonfloat의 힘 fsrWeightInGramsArray[3]; // 그램으로 변환된 가중치 pinArray[3] ={FSR1, FSR2, FSR3}; // //세 개의 장치에 대한 핀 IDfloat forceMaxArray[3] ={100.0, 100.0, 100.0}; // 최대 힘 //supportedfloat Million =1000000.0; // 단위 "1/microfloat conversionToKgrams =1.0/9.80665;long K =1000;long R =10*K; // R in K Ohmlong Vcc =5000; // 5V=5000mV, 3.3V =3300mVfloat voltageMax =0.9 * Vcc; // 최대 전압은 Vcc의 95%로 설정됨 Set //힘을 이 값 이상으로 최대로 설정 //value.ThingerWifi101 thing(USERNAME, DEVICE_ID, DEVICE_CREDENTIAL); //WiFi 설정 호출 functionvoid setup(void) { Serial.begin(115200); thing.add_wifi(SSID, SSID_PASSWORD); if(!accel.begin()) { //센서 초기화 Serial.println("ADXL345가 감지되지 않았습니다."); } else { accel.setRange (ADXL345_RANGE_16_G); //이 센서 사물의 범위["가속도계"]>> [](pson&out){ sensor_event_t event; accel.getEvent(&event); out["x"] =event.acceleration.x; out[ "y"] =event.acceleration.y; out["z"] =event.acceleration.z; }; } /*FSR 센서*/ 물건["압력"]>> [](pson &out) { out ["FSR1"] =analogRead(FSR1); // Serial.print("FSR1:"); // Serial.println(analogRead(FSR1)); out["FSR2"] =analogRead(FSR2); // 직렬 .print("FSR2:"); // S erial.println(analogRead(FSR2)); out["FSR3"] =analogRead(FSR3); // Serial.print("FSR3:"); // Serial.println(analogRead(FSR3)); }; 물건["전압"]>> [](pson &out) { for (int FSR =0; FSR > [](pson &out) { for (int FSR =0; FSR > [](pson &out) { //뉴턴 단위의 힘을 그램 단위의 무게로 변환하는 직접적인 계산 for (int FSR =0; FSR 의 끝  

    회로도

    3개의 FSR(전압 분배기 포함) 및 가속도계.

    제조공정

    1. Smart Bartender
    2. ABB, 베어링 상태를 확인하는 스마트 센서 도입
    3. 스마트해지:가정의 미래
    4. IoT를 현명하게 사용
    5. 빌딩 관리 시스템:스마트 시티로 가는 티켓
    6. Python 객체의 메모리 사용량 확인
    7. 공급망에 대한 분기별 점검
    8. 반응 시간 측정
    9. 신비한 수압 펌프는 가정에서 가장 열심히 일할 수 있습니다
    10. 압축 공기 시스템의 압력 강하 감소