제조공정
이 실습에서는 Pi 4와 HiFive 1 보드 간에 UART 기반 통신 채널을 설정합니다.
이 부분에서는 두 개의 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) 출력 수신
실습의 이 부분에서는 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' 터미널에서 나오는 메시지가 표시되어야 합니다.
터미널을 사용하는 대신 이제 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 매핑.
Raspberry Pi 4는 새로운 하드웨어 기능으로 가득 차 있을 뿐만 아니라 후드 아래에는 삶을 조금 더 쉽게 만들어주는 몇 가지 추가 GPIO 기능이 있어 사용자가 추가 하드웨어 없이도 주변 장치를 프로젝트로 확장할 수 있습니다. 특히 많은 추가 기능이 있습니다. Raspberry Pi 4에서 사용할 수 있는 I2C, UART 및 SPI 인터페이스.
Raspberry PI 4 자체에서 GPIO 핀아웃의 전체 목록을 찾을 수 있습니다. 명령줄로 이동하여 pinout을 입력하기만 하면 됩니다. .
그림>다음은 모든 새로운 Raspberry Pi 4 추가 핀아웃 기능 목록입니다.
그림>이 디지털 핀은 디지털 입력을 받거나 디지털 신호를 출력하도록 프로그래밍할 수 있습니다. Raspberry Pi는 각 GPIO 핀에서 3V3 로직을 사용합니다. 즉, 3V3은 디지털 1(ON)이고 0V는 디지털 0(OFF)입니다. 따라서 Raspberry Pi에 디지털 구성 요소를 연결하고 3V3(ON) 신호를 제공하거나 전류가 16mA 이하인 경우 3V3 디지털 신호를 수신할 수 있습니다.
이것은 장치 간의 매우 일반적인 유형의 통신이며 마스터와 슬레이브가 있어야 작동합니다. 이 경우 마스터는 Raspberry Pi 자체이고 슬레이브 장치는 일반적으로 프로젝트의 기능을 확장하는 하드웨어 주변 장치입니다. I2C의 장점은 각 장치에 다른 I2C 주소가 있는 경우 동일한 2선 인터페이스를 사용하여 동일한 마스터에 수백 개의 장치를 연결할 수 있다는 것입니다. 다음 Linux 명령을 사용하여 인터페이스에 액세스하고 어떤 장치가 연결되어 있는지 확인할 수 있습니다.
sudo i2cdetect -y 1
여기서 "1"은 마스터 인터페이스입니다. Raspberry Pi 4에는 총 6개가 있습니다.
그림>SPI는 장치 간 통신을 위한 또 다른 유형의 통신 프로토콜입니다. 또한 마스터/슬레이브 설정을 사용하지만 주로 메인(마스터) 컨트롤러와 센서와 같은 주변 장치(슬레이브) 간의 근거리에서 사용됩니다. SPI는 일반적으로 3선을 사용하여 Raspberry Pi와 통신합니다. SCLK, MOSI 및 MISO. SPI를 사용하기 전에 Raspberry Pi 구성 메뉴에서 활성화해야 합니다.
그림>I2c 및 SPI와 달리 UART는 프로토콜이 아닙니다. UART(Serial)는 직렬 데이터를 송수신하도록 설계된 물리적 회로입니다. UART는 클럭 신호가 필요하지 않으므로 비동기식입니다. 이렇게 하면 데이터를 보내고 받는 데 필요한 와이어가 최소화되지만 시작 비트 및 정지 비트와 같은 오류 검사를 위해 패킷과 함께 보내야 하는 추가 데이터도 필요합니다. 일반적으로 Raspberry Pi와 관련하여 UART는 GUI 또는 기타 인터페이스가 없는 헤드리스 설정에 사용됩니다. 대신 Raspberry Pi를 데스크탑/노트북 또는 기타 장치에 연결하고 명령줄 인터페이스를 사용하여 UART를 통해 통신할 수 있습니다. 이 방법은 설정 방법에 대해 조금 더 알고 있어야 하므로 고급 사용자를 위한 것입니다.
Raspberry Pi 사용자 사이에서 일반적인 또 다른 응용 프로그램은 Pi의 아날로그 기능이 제한되어 있으므로 Arduino UNO 보드를 Raspberry Pi에 연결하는 것입니다.
제조공정
소개 여러분, 안녕하세요. IEC61850 표준에 대한 두 번째 튜토리얼이 있습니다. 올바르게 따르려면 첫 번째 튜토리얼을 읽는 것이 좋습니다. 처음부터 끝까지 엔지니어링을 계속하기 때문입니다. 여기 링크가 있습니다:https://www.plcnext-community.net/en/hn-maker-blog/658-straton-introduction-tutorial-1-data-exchange-between-plcnext-engineer-and-straton.html 우리는 표준을 거치지 않을 것이므로 이 튜토리얼은 표준에
케이블은 송전탑 옆 공중에 매달린 케이블부터 휴대폰 충전 케이블까지 우리 일상 곳곳에 있습니다. 그들은 전기가 있는 한 오늘날의 거의 모든 곳에서 중요한 역할을 합니다. 하지만 흔하고 중요한 것은 당연하지만 우리는 (iPhone 사용자를 제외하고) 항상 무시하고 심각하게 생각하지 않습니다. 그럼 함께 케이블에 대해 알아볼까요? 케이블이란 무엇입니까? 일반적으로 케이블은 전기, 신호 및 전자기 에너지의 변환에 사용되는 제품 유형입니다. 기본적으로 도체 코어, 절연층 및 보호 실드로 구성됩니다. 케이블 유형 케이블에는 엄청나게 다양