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

센서 데이터와 Raspberry Pi 마이크로프로세서의 통합

추상


다양한 센서를 통합 로봇 시스템에 구현하려면 디지털화된 센서 데이터를 입력하고 제어 루프에서 사용할 수 있는 프로그래밍 환경과 유효한 통신 방법이 필요합니다.

키워드:I2C 통신, UART 통신, Adafruit Ultimate GP Breakout, Sparkfun MPU-9150 Breakout, Raspberry Pi 설정


소개


센서 데이터 수집 및 연결은 디지털 제어 시스템의 중요한 부분입니다. 모든 센서 데이터 입력을 처리하기 위해 내장형 디지털 컨트롤러가 사용되기 때문에 마이크로프로세서에서 이러한 데이터를 읽고 사용할 수 있도록 하는 통신 인터페이스는 프로그래밍 수준에서 최우선 순위입니다. 팀 프로젝트를 위한 자율적
항법 시스템은 GPS 위치에 대한 지속적인 추적과 코스 각도에 대한 일관된 측정이 필요합니다. 따라서 그룹은 로봇의 현재 위치(위도 및 경도)를 감지하기 위해 GPS 모듈을 사용하고 경로를 측정하기 위해 자력계를 사용하기로 결정했습니다. 두 모듈에서 수집한 데이터는 원격 사용자 인터페이스에서 볼 수 있으며 제어 소프트웨어에서도 사용할 수 있습니다.

목표

이것은 사용자가 Raspbian 운영 체제의 몇 가지 기본 조작(예:라이브러리 설치 또는 명령줄의 bash 명령에서 Unix 터미널을 사용하여 스크립트 파일 생성)을 알고 있다고 가정하는 고급 자습서입니다. 이 애플리케이션 노트의 목적은 사용자가 실제 라즈베리 파이와 다른 통신 인터페이스에서 가속도계 데이터와 GPS 데이터를 읽을 수 있는 방법을 안내하는 것입니다. 명령줄 지침 외에도 이 자습서에서는 Pi에 센서를 연결하는 방법과 센서의 하드웨어 구성에 대한 세부 정보도 다룹니다.

정보

하드웨어
○ Sparkfun 9 자유도 브레이크아웃 MPU9150

이 프로젝트에 사용된 관성 측정 센서는 sparkfun에서 설계한 브레이크아웃 보드가 있는 Invensense MPU-9150입니다. MPU-9150은 단일 패키지에 통합된 2개의 다이로 구성된 다중 칩 모듈입니다. 다이 하나는 3축 자이로스코프와 3축 가속도계가 있는 MPU-6050입니다. 다른 다이에는 Asahi Kasei Microdevices Corporation의 AK8975 3축 디지털 나침반/자력계가 있습니다. 이 칩은 저전력, 저비용, 고성능을 위해 설계되었으며 현재 스마트폰, 태블릿 등 많은 곳에서 사용되고 있습니다.

Adafruit Ultimate GPS 브레이크아웃

브레이크아웃은 외부 안테나 지원 및 초당 펄스 출력이 있는 3세대 MTK3339 기반 모듈을 기반으로 구축되었습니다. 업데이트 속도는 10Hz이며 66개 채널에서 최대 22개의 위성을 추적할 수 있습니다. 이 gps 모듈은 저전력 입력(3.3 – 5V)을 제공하는 임베디드 시스템용으로 제작되었으며 ENABLE 핀을 사용하여 모든 마이크로컨트롤러 핀을 사용하여 모듈을 끌 수 있습니다. 신호 상태를 표시할 수 있는 작은 빨간색 LED도 있습니다. LED는 위성을 검색하는 동안 1Hz로 깜박이고 수정 사항이 발견되면 15초마다 한 번씩 깜박입니다. 이 GPS는 주변에 건물이 없을 때 열린 들판에서만 작동합니다. FIX 신호를 획득할 때마다 사용자가 정의한 주파수로 코스, 경도, 위도 및 높이 데이터가 업데이트됩니다.

통신 표준


○ I2C 통신
I2C는 Inter-Integrated Circuit Bus의 약자입니다. I2C는 마이크로컨트롤러를 마스터로 사용하고 단일 종단 컴퓨터 버스를 통해 고유한 주소를 가진 여러 슬레이브와 연결합니다. SDA(Serial Data Line)와 SCL(Serial Clock)이라는 두 개의 양방향 오픈드레인 라인만 사용합니다. SDA는 SCL이 낮을 때 전송된 비트를 설정하고 SCL이 높을 때 데이터를 수신합니다.
○ UART 통신
UART는 범용 비동기식 수신기/송신기를 나타냅니다. 레지스터에 기록/저장된 데이터의 바이트(5-8비트)에서 직렬로 데이터를 송수신합니다. 모든 데이터는 프로그래머가 미리 정의한 특정 전송 속도로 읽습니다. UART 전송에는 데이터 전송(TxD), 데이터 수신(RxD) 및 신호 접지(SG)의 세 가지 신호 유형이 필요합니다. 이러한 종류의 전송은 양방향이 아니므로 두 개의 별도 수신 및 전송 라인이 필요합니다.

부품 목록
Raspberry Pi에서 하드웨어 설정 및 프로그래밍을 위해서는 다음 부품이 필요합니다.
● Raspberry Pi
● 전원 공급 장치
● Wifi 동글
● Sparkfun MPU9150 자이로스코프 및 가속도계
● Adafruit Ultimate GPS 브레이크아웃
● USB-TTL 어댑터 케이블(옵션)
● 브레드보드
● MF 점퍼 와이어
가정
이 튜토리얼을 시작하기 전에 몇 가지 가정이 필요합니다. 이 애플리케이션 노트는 전체 프로젝트의 특정 측면에만 초점을 맞출 것이기 때문에 새로 출시된 Raspberry Pi 및 무선 네트워크 설정을 위한 기본 설정 절차는 여기에서 무시됩니다. 다음은 이 애플리케이션이 다음을 기반으로 하는 몇 가지 기본 가정입니다.
● 유효한 인터넷 액세스
● 설치된 Raspian 운영 체제 및 Pi의 부팅 동작이 데스크톱 모드로 설정되었습니다.
● a 마우스와 키보드는 라즈베리 파이의 USB 포트에 연결하고 모니터는 HDMI 어댑터를 통해 연결하여 그래픽 표시를 보장합니다.

절차:

<올>
  • 직렬 통신을 위한 Raspberry Pi GPIO 구성을 알고 있습니다. 이 튜토리얼의 후반부에서 사용하는 직렬 핀은 UART의 경우 GPIO 14&15이고 I2C의 경우 GPIO 2&3입니다.
    1. Adafruit GPS를 Raspberry Pi에 연결
      adafruit gps 모듈에서 Tx/Rx, Vin 및 gnd 핀을 찾습니다. Tx 및 Rx 핀을 Raspberry Pi의 Rx 및 Tx 핀에 교차 연결합니다. 그런 다음 Pi에서 Vin 핀으로 5V 또는 3.3V를 공급하고 GND 핀을 Pi의 접지와 단락시킵니다.
    1. MPU9150을 Raspberry Pi에 배선
      MPU9150 브레이크아웃의 상단 4개 핀을 Raspberry Pi에 연결합니다. GPIO 2를 SDA(데이터 라인)에 연결하고 GPIO 3을 SCL(시계 라인)에 연결합니다. Pi에서 가속도계의 Vcc 핀에 3.3V를 공급하고 GND 핀을 접지로 단락시킵니다.
    1. I2C 통신을 위한 Pi 준비
      a. Raspberry Pi에서 터미널을 열고 다음 bash 명령을 입력합니다.
      sudo apt-get update
      sudo apt-get install i2c-tools libi2c-dev
      b. WiringPi는 PI를 위한 다양한 GPIO 도구를 포함하는 RasPi용으로 설계된 매우 강력한 C++ 라이브러리입니다. WiringPi를 설치하려면 다음 명령을 입력합니다.
      git clone git://git.drogon.net/wiringPi
      cd wiringPi
      sudo nano /etc/modules
      c. 파일(/etc/modules)이 아직 없는 경우 다음 세 줄을 파일 하단에 추가합니다.
      snd-bcm2835
      i2c-bcm2708
      i2c-dev
      d . 다음으로 부팅 매개변수를 수정하여 시작할 때 i2c를 켭니다. bash 명령 입력:
      sudo nano /boot/config.txt
      e. 이 파일의 맨 아래에 다음 행을 추가하십시오.
      dtparam=i2c1=on
      dtparam=i2c_arm=on
      f. Raspberry Pi 재부팅
    2. MPU-6050-Pi-Demo 소프트웨어 설치 및 실행
      a. 터미널 창에 다음 bash 명령을 입력합니다.
      git clone git://github.com/richardghirst/
      PiBits.git
      cd PiBits/MPU6050-Pi-Demo
      sudo apt-get install libgtkmm-3.0-dev
      b. Pi와 함께 작동하려면 일부 소스 파일을 편집해야 합니다. I2Cdev.cpp 및 setup-i2c.sh 파일을 모두 수정해야 합니다. 파일을 편집하려면 bash
      명령 "nano"를 사용하십시오.
      c. "/dev/i2c-0"에 대한 모든 참조를 이 파일에서 "/dev/i2c-1"로 읽고 저장합니다.
      d. 소스를 컴파일하려면 다음 bash 명령을 입력하십시오.
      make
      ./setup-i2c.sh
      e. 소스 컴파일이 완료될 때까지 기다렸다가 다음 bash 명령을 입력합니다.
      sudo i2cdetect -y 1
      f. 다음 출력이 표시되어야 합니다.

    G. 이제 다음 bash 명령을 입력하여 이 폴더에서 예제 프로그램 "demo_raw"를 실행합니다.
    ./demo_raw
    h. 이 데모는 터미널에 원시 자이로 및 가속도 값을 표시합니다.
    a/g:Ax Ay Az Gx Gy Gz

    1. Adafruit GPS 모듈에서 데이터를 얻기 위해 Adafruit에는 GPS Daemon(gpsd)이라는 자체 개발 소프트웨어가 있습니다. 튜토리얼은 다음 링크에서 볼 수 있습니다. https://learn.adafruit.com/adafruit-ultimate-gps-on-the-raspberry-pi
    2. gpsd는 오픈 소스 소프트웨어가 아니므로 사용자가 gps에서 읽을 수 있도록 자신의 파일을 수정하고 생성할 수 있는 타사 소프트웨어를 사용하는 것이 좋습니다. "libgps"는 주로 Raspberry ARM 보드용으로 생성된 오픈 소스 GPS 라이브러리이며 Adafruit Ultimate GPS Breakout으로 테스트되었습니다. 우리 프로젝트에서 이 라이브러리를 사용하고 있습니다.
    3. libgps 패키지 설치 및 컴파일.
      a. libgps를 설치하려면 다음 명령을 입력합니다.
      git clone git://github.com/wdalmut/libgps.git
      cd libgps
      b. libgps 폴더로 이동한 후 다음을 입력하여 파일을 빌드하여 libgps.a를 얻습니다.
      make
      sudo make install
    4. 연결을 테스트하기 위해 "position_logger.c"라는 예제 폴더에서 샘플 코드를 찾을 수 있습니다.
      a.
      gcc -o position_logger position_logger.c -lgps
      -lm
      b로 컴파일합니다.
      $ ./position_logger
      c로 실행하십시오. 유효한 GPS 신호가 있는 경우(수정 LED가 1Hz에서 깜박이지 않음)
      다음과 같이 콘솔에서 직접
      위도 및 경도의 십진법 각도를 확인해야 합니다.
      45.071060 7.646363 45.071082 7.646385

      45.071078 7.646387 45.071060 7.646373

      45.071048 7.646358 45.071052 7.646372

      45.071057 7.646392 45.071062 7.646397

      45.071062 7.646383
      45.071073 7.646395
      45.071082 7.646403
      결론
      이 애플리케이션 노트는 두 개의 센서를 예로 들어 사용자에게 첫 번째 단계부터 센서와 Pi 간의 직렬 통신을 설정하는 방법을 안내했습니다. 또한 파일을 편집, 컴파일 및 실행하는 명령줄 방법에 대해서도 간략하게 설명했습니다. 그러나 이러한 센서 데이터를 알고리즘에 작성하려면 단순히 보는 것보다 훨씬 더 많은 노력이 필요합니다. 궁극적인 목표, 즉, 이 애플리케이션 노트의 고급 파생물은 단일
      스크립트 파일에서 다양한 센서 라이브러리를 처리하는 것이어야 합니다. 이를 위해서는 각 센서 소프트웨어 패키지 이면의 코딩 원칙에 대한 더 깊은 이해가 필요합니다.
      참조:
    5. 케빈 타운센드. Raspberry Pi의 Adafruit Ultimate GPS, 2014년 7월 15일.
      웹. https://learn.adafruit.com/downloads/pdf/adafruit-ultimate-gps-on-theraspberry-pi.pdf
    6. 월터 달 무트. Raspberry Pi용 UART NMEA GPS 라이브러리. 2014년 9월 8일.
      웹. https://github.com/wdalmut/libgps
    7. 인벤센스. MPU-9150 데이터시트, 2013년 9월 18일. Web. http://
      www.invensense.com/mems/gyro/documents/PS-MPU-9150A-00v4_3.pdf

    출처:Raspberry Pi 마이크로프로세서와 센서 데이터 통합


    제조공정

    1. 1선 DS18B20 센서와 Raspberry Pi로 온도 측정
    2. Raspberry Pi의 온도 모니터링
    3. Raspberry Pi로 온도 모니터링
    4. Raspberry Pi를 사용한 모션 센서
    5. 라즈베리 파이 토양 수분 센서
    6. 라즈베리 파이로 팬/틸트 얼굴 추적
    7. 레고 Mindstorms NXT 초음파 센서를 Raspberry Pi에 연결하는 방법
    8. 라즈베리 파이의 HC-SR04 초음파 범위 센서
    9. Raspberry Pi, DHT11 센서 및 Thingspeak로 최초의 IOT를 구축하십시오.
    10. Raspberry Pi 및 습도 센서를 사용한 수경재배