Impinj GPIO 빠른 시작 가이드

먼저 GPIO, 범용 입 / 출력, 범용 입 / 출력 인터페이스를 설명합니다. 실제로 핀의 높고 낮은 전위를 사용하여 정보를 전송하여 외부 장치를 제어하거나 외부 장치를 제어합니다. 가장 일반적인 두 가지 예는 적외선 센서와 알람입니다.
적외선 경보는 입력 장치로 간주 (컨트롤러를 본체로 함) 전방에 물체가 있는지 감지 할 수 있습니다. 물체가 감지되면 신호를 출력합니다. 추가 응답을하십시오.
경보는 신호에 의해 제어 된 후 경보에 대응할 수있는 출력 응답 장치입니다.
다음은 GPIO의 사용 과정과 방법을 포괄적으로 이해할 수있는 간단한 사례를 소개합니다. 다음은 연결 방법 일 뿐이며 , 구체적인 원리 및 기타 세부 사항은 첨부 된 문서 ( ImpinjGPIO 문서 모음 )를 참조하십시오 .
https://download.csdn.net/download/xiaohaigary/11580460

1. 사용 장비

1. Impinj 리더, impinj GPIO 박스, 24v DC 전원 어댑터
2. 적외선 센서 (DC 3 선 NPN 상시 개방형), 음향 및 조명 경보 (5 선식)
 impinj 리더, impinj GPIO 상자, 24v DC 전원 어댑터
적외선 센서 (DC 3 선식 NPN 상시 개방형), 음향 및 조명 경보

2. 배선

GPIO 상자의 개략도
이것은 GPIO 상자의 개략도이며, 그중 하나는 R420의 GPIO 포트에 연결되어 있으며, 8 및 9는 각각 외부 DC 24V 전원 공급 장치 (8 양극 및 9 음극)에 연결됩니다. 이 시점에서 기본 준비가 완료되었습니다. impinj와 함께 제공되는 Item Test를 사용하여 테스트 할 수 있습니다. out 1이 유효하면 4 번 표시등이 켜지고, out 4가 유효하면 No가 켜집니다. 7이 켜져 있습니다.

다음 단계는 5 선식 경보의 배선 인 소리와 빛 경보를 연결하는 것입니다. 가장 왼쪽에있는 두 개의 전선은 양극 및 음극 전원 공급 장치입니다. 중간에있는 회색 선은 스피커 제어 선이고, 네 번째 (빨간색 선)는 조명 제어 선이며, 다섯 번째 (검은 색 선)는 공통 끝 또는 접지선입니다.

여기에 사진 설명 삽입

알람을 GPIO 박스에 연결하는 방법은 무엇입니까?
우선 두 개의 전원 코드를 위치 8과 9 또는 위치 10과 15에 연결할 수 있습니다.
적색 등 제어 선은 out1 인 위치 4에 연결됩니다. 회색 선은 out2 인 위치 5에 연결됩니다.
마지막 검정색 선은 3 번에 연결됩니다.
이렇게하면 소리와 빛 알람의 연결이 완료됩니다. ItemTest를 사용하여 테스트하면 경보 음과 빛을 별도로 제어 할 수 있습니다.

이제 적외선 센서의 연결에 대해 이야기 해 봅시다.
아래 그림에 표시된 1, 2, 3은 적외선 센서의 세 선입니다. 1과 3은 각각 양극과 음극입니다. 위치 10과 15에 각각 연결합니다. 2는 11 개의 위치에 연결된 제어 선입니다.
테스트 수행 : 적외선 센서를 손으로 가리고 11 번의 작은 표시등이 켜지는지 확인하여 센서가 제대로 작동하고 있음을 나타냅니다.
여기에 사진 설명 삽입

출력 신호 제어의 원리 :

이 상자는 실제로 매우 편리하며 출력은 릴레이 출력입니다. 하지만 한쪽 끝을 COM에 직접 연결하고 다른 쪽 끝을 out1에 연결하려고했는데 작은 빛을 사용할 수 없었습니다.
제조업체에 문의 한 결과 전원 공급 장치가 0-5v 소형 조명 만 지원한다는 것을 알았습니다.
그러나 전원이 공급 될 때 켜지는 2 선식 소형 조명을 제어하는 ​​방법은 무엇입니까? 2 선식 소형 조명과 4 선식 소형 조명의 연결 방법에 대해 차례로 이야기 해 보겠습니다.

핵심 원칙 : outX가 유효하면 COM에 연결되어 COM 수준을 형성합니다.
2 줄 소형 조명 :

작은 24v 조명이라면 너무 편리합니다.

빛 포지티브 ----> 24v +
박스의 네거티브 ---->
박스의 COM 포트의 out1은 박스의 0V로 단락됩니다.

이런 식으로 out1이 유효하면 out1과 COM 포트가 연결되고 작은 조명의 양극과 음극도 연결됩니다.

그러나 12v 2 줄 소형 조명이라면 어떨까요?
12v 전원 공급 장치를 추가해야합니다.

라이트 포지티브 ----> 12v +
라이트 네거티브 ---->
박스 out1 의 COM 포트는 박스의 0V로 단락되고 12v 전원 공급 장치의 0 극으로 단락되어 두 개의 전원 공급 장치가 제로.

4 줄 소형 조명 :

4 선식 소형 조명은 높고 낮은 레벨에 의해 트리거되는 조명입니다. 네 라인은 포지티브, 네거티브, 하이 레벨 트리거 라인 및 로우 레벨 트리거 라인입니다.

램프의 양극 ----> 박스의 24v +
램프의 로우 레벨 트리거 라인 ---->
박스 out1 의 COM 포트와 박스의 0V가 단락 됨

이때 out1 of the box가 유효하면 낮고 작은 조명이 트리거됩니다.

셋, 코드 제어

다음 코드는 시연하는 데 사용됩니다. 적외선 센서가 물체를 감지하면 소리 및 빛 경보가 울립니다.

package com.example.sdksamples;

import com.impinj.octane.ImpinjReader;
import com.impinj.octane.OctaneSdkException;
import com.impinj.octane.Settings;

import java.util.Scanner;

public class SetGPO {

    public static void main(String[] args) {

        try {
            String hostname = System.getProperty(SampleProperties.hostname);

            if (hostname == null) {
                throw new Exception("Must specify the '"
                        + SampleProperties.hostname + "' property");
            }

            ImpinjReader reader = new ImpinjReader();

            reader.connect(hostname);

            Settings settings = reader.queryDefaultSettings();
            reader.applySettings(settings);


            reader.setGpiChangeListener(
                            new GpiChangeListenerImplementation()
            );

           	
        } catch (OctaneSdkException ex) {
            System.out.println(ex.getMessage());
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
            ex.printStackTrace(System.out);
        }
    }
}

GpiChangeListenerImplementation 파일은 다음과 같습니다.

package com.example.sdksamples;
import com.impinj.octane.GpiChangeListener;
import com.impinj.octane.GpiEvent;
import com.impinj.octane.ImpinjReader;
import com.impinj.octane.OctaneSdkException;

public class GpiChangeListenerImplementation implements GpiChangeListener {

    @Override
    public void onGpiChanged(ImpinjReader reader, GpiEvent e) {
        System.out.println("GPI Change--port: " + e.getPortNumber()
                + " status: " + e.isState());
        try {
            if(e.isState()==true){

                reader.setGpo(1, true);
reader.setGpo(2, true);
            }else{
                reader.setGpo(1, true);
reader.setGpo(2, true);
            }
        } catch (OctaneSdkException ex) {
            ex.printStackTrace();
        }
    }
}

추천

출처blog.csdn.net/xiaohaigary/article/details/99765196