Arduino 호환 STM32F103과 Raspberry Pi 3를 직렬 통신합니다.

주식회사 XSHELL 개발자 우에다 아유

개요


  • Arduino 호환 저렴한 원 보드 마이크로 컴퓨터 RobotDyn - STM32F103 (이후 STM32라고 함)
  • 고성능 싱글 보드 컴퓨터 Raspberry Pi 3
    이 두 가지를 조합하여 사용한다.

  • Raspberry Pi는 전원을 대량 소비하므로 상시 기동시키지 않고, 필요한 때 이외는 전원을 떨어뜨려 두고 싶다.
    저소비 전력인 STM32를 Raspberry Pi의 전원 제어에 사용해 Raspberry Pi에서는 센서로부터 값의 취득·처리·통신을 시킨다.
    이것이라면 AA 배터리 3개 정도로 장기 운용이 가능한 디바이스를 만들 수 있다고 생각했다.
    다만 이번 소개하는 것은 「STM32와 Raspberry Pi의 시리얼 통신」만을 골로 한다.

    환경


  • Raspberry Pi 3
  • OS 2017-08-16-raspbian-stretch-lite.img
  • robotdyn STM32F103 Dev.Board
  • Mac OS X El Capitan
  • 아키즈키 전자 FT232RL USB 직렬 변환 모듈
  • 아키즈키 전자 초소형 USB 직렬 변환 모듈

  • STM32 보드의 PIN 배치





    설정



    Raspberry Pi 설정:
    vi /boot/cmdline.txt
    console=serial0,115200の削除(viならxで一文字削除)
    
    sudo systemctl stop [email protected]
    sudo systemctl disable [email protected]
    sudo systemctl stop [email protected]
    sudo systemctl disable [email protected]
    

    인터페이스 설정에서 SSH 및 시리얼 허용

    MAC에서 연결해보기




    
    ls /dev/tty.*
    screen /dev/tty.usbserial-A1032MA9 115200
    

    STM32에 스케치 쓰기



    STM32에서 루프를 보내는 스케치를 작성합니다.
    아래와 같은 느낌 (이 코드는 검증되지 않음)
    
    #define LED_PIN (PB13)
    
    void setup(){
      Serial.begin(9600);
      Serial1.begin(9600);
    }
    
    void loop(){
      Serial.println("loop");
      Serial1.println("loop");
      delay(1000);
    }
    
    

    어디에 가리키는지, 시리얼 포트의 번호 잘못하면 움직이지 않으므로 주의.
    여기가 제일 중요!!!
    STM32라면 시리얼 포트가 3개소 있을 것이므로 Serial1라든지 Serial2라든지 적절히 변경한다.
    
    Serial.begin(9600);
    Serial1.begin(9600);
    

    라즈파이와 STM32를 직렬 연결.



    라즈파이에 SSH 로그인하여 STM32와 직렬 연결.
    
    screen /dev/ttyS0 9600
    

    STM32에 쓴 Serial.println1("loop");이 오면 성공
    
    #成功
    loop
    loop
    loop
    

    조사


    
    ls -hl /dev/*|grep S0
    sudo apt-get install screen
    sudo apt-get install setserial
    setserial -g /dev/tty
    sudo stty -F /dev/ttyAMA0
    sudo stty -F /dev/ttyS0
    dmesg |grep ttyAMA0
    sudo lsof | grep AMA0
    

    사용 중이면 이것으로 자릅니다.
    
    cat < /dev/ttyS0
    


    주식회사 XSHELL 개발자 우에다 아유

    XSHELL은 SBC를 사용하기 쉽게 만드는 솔루션을 제공합니다.
    isaax , IoTit 꼭 사용되어 의견을 받고 싶습니다.
    함께 멋진 프로젝트를 실현합시다!

    좋은 웹페이지 즐겨찾기