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

이사회 커뮤니케이션

이 실습에서는 Pi 4와 HiFive 1 보드 간에 UART 기반 통신 채널을 설정합니다.

부품 0:UART 연결 설정(TA용)

이 부분에서는 두 개의 UART 채널을 통해 HiFive1과 Raspberry Pi 4 보드를 연결합니다.

(이 단계는 TA가 수행합니다.)

Pi 4에는 4개의 UART가 있으며 그 중 2개(uart2 및 uart3)를 사용합니다. /boot/config.txt 파일 끝에 다음 줄을 추가하여 uart2 및 uart3을 활성화합니다.

dtoverlay=uart2,115200 dtoverlay=uart3,115200

시스템을 재부팅하면 /dev/ttyAMA1과 /dev/ttyAMA2가 생성됩니다.

HiFive의 UART1 RX(핀 7)를 Raspberry Pi 4의 UART2 TX(핀 27)에 연결합니다. 이것은 Pi 4와 HiFive1 사이의 주요 통신 회선입니다. Pi 4에서 /dev/ttyAMA1을 통해 채널에 액세스할 수 있습니다.

HiFive 1의 디버깅을 위해 HiFive1의 UART0 TX(핀 1)를 Pi 4의 UART3 RX(핀 29)에 연결합니다. Pi 4에서는 /dev/ttyAMA2를 통해 액세스할 수 있습니다.

요약하면 Pi 4에서 다음 두 파일에 액세스할 수 있습니다.

/dev/ttyAMA1 Pi 4 → HiFive1:HiFive1(uart1)에 스티어링 각도를 보냅니다.

/dev/ttyAMA2 HiFive1 → Pi 4:HiFive1의 콘솔(uart0) 출력 수신

1부:HiFive1 프로그래밍

실습의 이 부분에서는 Pi 4에서 데이터를 수신하도록 HiFive1을 프로그래밍합니다.

PC에서 (Pi 4 아님) 다음과 같이 프로젝트 스켈레톤을 다운로드합니다.

$ cd ~/Documents/PlatformIO

$ wget https://ittc.ku.edu/~heechul/courses/eecs388/l10-comm.tar.gz

$ tar zxvf l10-comm.tar.gz

VSCode 작업 공간에 l10-interrupt 폴더를 추가합니다.

귀하의 작업은 HiFive1의 UART1 채널에서 데이터를 수신하고 수신된 데이터를 UART0 채널로 보내는 것입니다. 다음은 대략적인 의사 코드 입니다. 작업.

동안 (1) {

if (UART1 준비가 되었나요?) { 데이터 =UART1에서 읽습니다. 데이터를 UART0으로 인쇄합니다.

}

} 작업을 구현하려면 다음과 같이 제공된 직렬 API를 사용해야 할 수 있습니다. devid는 UART0에 액세스하려면 0이고 UART1에 액세스하려면 1입니다.

무효 ser_setup(int devid); int ser_isready(int devid);

무효 ser_write(int devid, char c);

무효 ser_printline(int devid, char *str); char ser_read(int devid);

int ser_readline(int devid, int n, char *str);

특히 ser_isready() 함수를 사용하여 지정된 UART 채널에 읽을 보류 데이터가 있는지 확인해야 할 수 있습니다. 함수가 하는 일을 더 잘 이해하려면 eecs388_lib.h 및 eecs388_lib.c 파일을 확인하세요.

int ser_isready(int devid)

{

uint32_t regval =*(휘발성 uint32_t *)(UART_ADDR(분할) + UART_IP); 정규식 반환;

}

HiFive1 프로그래밍을 마치면 Raspberry Pi 4로 전환 두 개의 터미널을 엽니다. 하나는 HiFive1에 데이터를 보내기 위한 것이고 다른 하나는 HiFive1에서 출력되는 디버그 메시지를 보기 위한 것입니다.

발신자 단말기(term1)

$ 화면 /dev/ttyAMA1 115200

디버그 터미널(term2)

$ 화면 /dev/ttyAMA2 115200

이제 'term1'에 아무 문자열이나 입력하세요.

HiFive 1을 올바르게 프로그래밍했다면 'term2' 터미널에서 나오는 메시지가 표시되어야 합니다.

2부:Raspberry Pi 4 프로그래밍.

터미널을 사용하는 대신 이제 Pi 4에서 Python 프로그램을 실행하여 HiFive1과 통신합니다. 귀하의 작업은 조정 출력을 /dev/ttyAMA1 직렬 채널로 보낼 수 있도록 이전 실습의 dnn.py를 확장하는 것입니다. 다음 의사 코드 dnn.py에서 수정해야 할 사항에 대한 일반적인 정보를 제공합니다.

/dev/ttyAMA1 및 /dev/ttyAMA2 True일 때 직렬 연결을 엽니다.

이미지 =camera.read()

angle =dnn_inference(image) 'angle'을 /dev/ttyAMA1 에 씁니다. Wait_till_next_period()

직렬 연결

닫기

위의 기능을 수행하려면 직렬 패키지를 가져와 사용할 수 있는 Python의 pySerial API를 사용해야 합니다.

가져오기 시리얼

그것으로 두 개의 개별 직렬 채널을 만들어야 합니다. 하나는

를 통해 HiFive1에 쓰기 위한 것입니다.

/dev/ttyAMA1 및 /dev/ttyAMA2를 통한 디버깅을 위한 또 하나. 두 채널 모두 전송 속도 115200bps로 열어야 합니다.

ser1 =serial.Serial(…) ser2 =serial.Serial(…)

DNN이 프레임을 처리할 때 수신한 각도는 직렬 write() 함수를 사용하여 HiFive1에 보낼 수 있습니다.

ser1.write(…)

그러나 write()는 바이트 값이 필요하지만 DNN에서 생성된 각도는 float32 값이므로 HiFive1로 보내기 위해서는 각도 데이터를 변환해야 합니다. 마지막으로 모든 프레임이 처리된 후 직렬 close() 함수를 호출하여 직렬 연결을 닫을 수 있습니다.

ser1.close() ser2.close()

부록


Pi 4의 GPIO 매핑.

라즈베리 파이 4 핀아웃

Raspberry Pi 4는 새로운 하드웨어 기능으로 가득 차 있을 뿐만 아니라 후드 아래에는 삶을 조금 더 쉽게 만들어주는 몇 가지 추가 GPIO 기능이 있어 사용자가 추가 하드웨어 없이도 주변 장치를 프로젝트로 확장할 수 있습니다. 특히 많은 추가 기능이 있습니다. Raspberry Pi 4에서 사용할 수 있는 I2C, UART 및 SPI 인터페이스.

GPIO 핀아웃

Raspberry PI 4 자체에서 GPIO 핀아웃의 전체 목록을 찾을 수 있습니다. 명령줄로 이동하여 pinout을 입력하기만 하면 됩니다. .

다음은 모든 새로운 Raspberry Pi 4 추가 핀아웃 기능 목록입니다.

GPIO – 범용 입력 출력 핀

이 디지털 핀은 디지털 입력을 받거나 디지털 신호를 출력하도록 프로그래밍할 수 있습니다. Raspberry Pi는 각 GPIO 핀에서 3V3 로직을 사용합니다. 즉, 3V3은 디지털 1(ON)이고 0V는 디지털 0(OFF)입니다. 따라서 Raspberry Pi에 디지털 구성 요소를 연결하고 3V3(ON) 신호를 제공하거나 전류가 16mA 이하인 경우 3V3 디지털 신호를 수신할 수 있습니다.

I2C – 집적 회로 간

이것은 장치 간의 매우 일반적인 유형의 통신이며 마스터와 슬레이브가 있어야 작동합니다. 이 경우 마스터는 Raspberry Pi 자체이고 슬레이브 장치는 일반적으로 프로젝트의 기능을 확장하는 하드웨어 주변 장치입니다. I2C의 장점은 각 장치에 다른 I2C 주소가 있는 경우 동일한 2선 인터페이스를 사용하여 동일한 마스터에 수백 개의 장치를 연결할 수 있다는 것입니다. 다음 Linux 명령을 사용하여 인터페이스에 액세스하고 어떤 장치가 연결되어 있는지 확인할 수 있습니다.

sudo i2cdetect -y 1

여기서 "1"은 마스터 인터페이스입니다. Raspberry Pi 4에는 총 6개가 있습니다.

SPI – 직렬 주변기기 인터페이스

SPI는 장치 간 통신을 위한 또 다른 유형의 통신 프로토콜입니다. 또한 마스터/슬레이브 설정을 사용하지만 주로 메인(마스터) 컨트롤러와 센서와 같은 주변 장치(슬레이브) 간의 근거리에서 사용됩니다. SPI는 일반적으로 3선을 사용하여 Raspberry Pi와 통신합니다. SCLK, MOSI 및 MISO. SPI를 사용하기 전에 Raspberry Pi 구성 메뉴에서 활성화해야 합니다.

UART – 범용 비동기식 수신기/송신기

I2c 및 SPI와 달리 UART는 프로토콜이 아닙니다. UART(Serial)는 직렬 데이터를 송수신하도록 설계된 물리적 회로입니다. UART는 클럭 신호가 필요하지 않으므로 비동기식입니다. 이렇게 하면 데이터를 보내고 받는 데 필요한 와이어가 최소화되지만 시작 비트 및 정지 비트와 같은 오류 검사를 위해 패킷과 함께 보내야 하는 추가 데이터도 필요합니다. 일반적으로 Raspberry Pi와 관련하여 UART는 GUI 또는 기타 인터페이스가 없는 헤드리스 설정에 사용됩니다. 대신 Raspberry Pi를 데스크탑/노트북 또는 기타 장치에 연결하고 명령줄 인터페이스를 사용하여 UART를 통해 통신할 수 있습니다. 이 방법은 설정 방법에 대해 조금 더 알고 있어야 하므로 고급 사용자를 위한 것입니다.

Raspberry Pi 사용자 사이에서 일반적인 또 다른 응용 프로그램은 Pi의 아날로그 기능이 제한되어 있으므로 Arduino UNO 보드를 Raspberry Pi에 연결하는 것입니다.


제조공정

  1. 디지털 커뮤니케이션 소개
  2. 데이터 흐름
  3. 광학 데이터 통신
  4. 실용적 고려사항 - 디지털 커뮤니케이션
  5. 무선 통신 범위
  6. NodeMCU와 Raspberry Pi 3 B+ 간의 MQTT 통신
  7. 센서 데이터와 Raspberry Pi 마이크로프로세서의 통합
  8. Raspi 2 WIOT와 Arduino I2C 통신
  9. M2M 또는 M2M 통신, 무엇입니까?
  10. 광통신을 변경할 수 있는 고유한 증폭기