제조공정
센서를 Raspberry Pi에 연결하고 Java로 제어하는 방법을 알아보세요.
2014년 9월 발행
최신 Java ME 8 릴리스에는 LED, 릴레이, LCD, 센서, 모터 및 스위치와 같은 장치를 제어하기 위한 강력한 API가 포함되어 있습니다.
이 기사는 GPIO(범용 입/출력), I2C(통합 회로 버스), SPI(직렬 주변 장치 인터페이스 버스)를 사용하여 전자 센서를 Raspberry Pi 모델 B에 연결하는 방법에 대한 3부로 구성된 시리즈의 첫 번째 기사입니다. , 또는 UART(Universal Asynchronous Receiver/Transmitter) 인터페이스.
Java ME 8을 사용하여 다양한 유형의 인터페이스가 있는 장치를 제어하고 장치를 Raspberry Pi에 연결하면 사물 인터넷(IoT) 세상을 만들 수 있습니다.
이 기사는 GPIO 사용에 중점을 두고 다음을 수행할 수 있는 Java ME 8에서 클래스를 개발하는 방법의 예를 보여줍니다.
<울>참고 :이 NetBeans IDE 8.0 프로젝트의 전체 예제 코드는 여기에서 다운로드할 수 있습니다.
장치 I/O API 사양은 소형 임베디드 장치에서 실행되는 Java 애플리케이션을 위한 일반 주변 장치 I/O API를 정의합니다. 다음을 포함하여 가장 일반적인 주변 장치에 대한 API를 정의합니다.
<울>GPIO 장치는 디지털 입력 또는 디지털 출력으로 사용할 수 있으며 비활성화 또는 활성화할 수 있으며 "인터럽트" 라인을 구동하는 데 사용할 수 있습니다. 그러나 매우 중요한 고려 사항은 모든 Raspberry Pi GPIO 핀이 3.3V에서 작동한다는 것입니다. 따라서 연결하려는 장치의 기술 사양을 확인하여 3.3V 또는 5V를 사용하는지 확인하는 것이 매우 중요합니다. 경우에 따라 , 이와 같은 로직 레벨 변환기를 사용해야 합니다.
DFRobot의 DFR0076 화염 센서는 화재 또는 약 760nm에서 1100nm 사이의 다른 파장의 빛을 감지하는 데 사용할 수 있습니다. 3.3V 또는 5V에 연결할 수 있으며 감지 범위는 약 20cm(4.8V) ~ 100cm(1V)입니다. 화재가 감지되면 신호 핀을 뽑습니다.
그림 3과 같이 화염 센서를 Raspberry Pi의 3.3V, Gnd 및 GPIO 22 핀에 연결하고 화염 감지기 센서 제어를 위한 Java ME 8 클래스를 생성해 보겠습니다.
먼저 DFR0076Device
클래스를 만듭니다. Device Access API를 사용하고 pin
변수를 정의합니다. 목록 1과 같이 GPIO에 대한 인터페이스를 지원합니다.
공개 클래스 DFR0076Device { 비공개 GPIOPin 핀 =null; //화염 센서 제어용 핀 정의
목록 1. 화염 감지기 센서 제어용 클래스
다음으로 DeviceManager
를 사용하여 GPIO 22 핀을 초기화하고 활성화하는 클래스 생성자를 만듭니다. API 및 GPIOPinConfig
클래스(목록 2 참조)를 사용하여 다음 조건을 설정합니다.
pinGPIO
를 통해 지정됨) )공개 DFR0076Device(int pinGPIO) { ... 핀 =(GPIOPin) DeviceManager.open(new GPIOPinConfig(0, pinGPIO,GPIOPinConfig.DIR_INPUT_ONLY,GPIOPinConfig.MODE_INPUT_PULL_UP, GPIOPinConfig.TRIGGER_RISING));... /사전>목록 2. 초기 조건 설정
이제 Listing 3과 같이 화염 감지 이벤트를 지원하는 정의된 리스너 클래스를 수신하는 메소드를 작성하십시오.
공개 무효 setListener(PinListener FlameListener) {... if (pin!=null) pin.setInputListener(flameListener);...}목록 3. 화염 감지 이벤트를 지원하는 방법
Listing 4와 같이 작업이 끝나면 핀을 닫고 핀 리스너를 해제하는 것도 중요합니다.
공개 무효 close() {... if (pin!=null){ pin.setInputListener(null); 핀.닫기(); }...}목록 4. 핀 닫기 및 리스너 해제
이제 Listing 5와 같이 코드를 호출하고 화염 감지 이벤트를 처리하기 위한 리스너 클래스를 정의하는 기본 MIDlet을 생성합니다.
공용 클래스 TestSensors는 MIDlet { DFR0076Device Flame을 확장합니다. 개인 정적 최종 int FLAME_DETECTOR_PIN =22; public void startApp() { //화염 센서 초기화 화염 =new DFR0076Device(FLAME_DETECTOR_PIN); Flame.setListener(새로운 FlameSensor()); } 공개 무효 destroyApp(부울 무조건) { Flame.close(); } 개인 정적 int waitnext =1; 클래스 FlameSensor는 PinListener를 구현합니다. { public void valueChanged(PinEvent event) { if (event.getValue() &&--waitnext ==0) { System.out.println("경고 불꽃이 감지되었습니다!!!"); 다음 대기 =10; } } }}목록 5. 코드를 호출하는 MIDlet 만들기
동작 감지기 연결
이제
TestSensors
에 동작 감지기 기능을 추가해 보겠습니다. 미들렛. 그러려면 그림 2와 같은 HC-SR501과 같은 모션 센서가 필요합니다.PIR 센서를 사용하면 움직임을 감지할 수 있습니다. 모든 것은 소량의 적외선을 방출하며, 뜨거운 것이 많을수록 더 많은 복사를 방출합니다. PIR 센서는 감지 영역(예:사람이 방에 들어갈 때) 내에서 발생하는 IR 수준의 변화를 감지하여 움직임을 감지할 수 있습니다.
우리가 사용할 PIR 센서에는 접지, 디지털 출력 및 3–5 Vdc 입력의 3가지 핀이 있습니다. 유휴 상태에서 움직임이 감지되지 않으면 디지털 출력 신호는 낮게 유지됩니다. 그러나 움직임이 감지되면 디지털 출력 신호가 하이(3.3V)로 펄스됩니다. 디지털 출력 핀을 라즈베리파이에 직접 연결해도 됩니다.
테스트를 위해 PIR 센서에는 점퍼가 있습니다(그림 4 참조).
<울>
다음과 같이 조정할 수 있습니다.
<울>
그림 3과 같이 PIR 센서를 Raspberry Pi 5 V, Gnd 및 GPIO 24 핀에 연결하고 Java ME 8 classHCSR501Device
를 생성해 보겠습니다. Listing 6과 같이 Device Access API를 사용하여 제어합니다.
공개 클래스 HCSR501Device { 비공개 GPIOPin 핀 =null;
목록 6. HCSR501Device
수업
그런 다음 DeviceManager
를 사용하여 GPIO 24 핀을 초기화하고 활성화하는 클래스 생성자를 만듭니다. API 및 GPIOPinConfig
클래스(목록 7 참조)를 사용하여 다음 조건을 설정합니다.
pinGPIO
를 통해 지정됨) )목록 7. 초기 조건 설정
이제 Listing 8과 같이 모션 감지 이벤트를 지원하는 정의된 리스너 클래스를 수신하는 메소드를 작성하십시오.
공개 무효 setListener(PinListener pirListener) {... if (pin!=null) pin.setInputListener(pirListener);...}
목록 8. 움직임 감지 이벤트를 지원하는 방법
작업이 끝나면 핀을 닫고 Listing 9와 같이 핀 리스너를 해제하는 것도 중요합니다.
공개 무효 close() {... if (pin!=null){ pin.setInputListener(null); 핀.닫기(); }...}
목록 9. 핀을 닫고 리스너 해제
Listing 10과 같이 MIDlet 클래스를 확장하여 PIR 센서와 해당 수신기를 지원해 보겠습니다.
//HCSR501 장치 개체 정의HCSR501Device pir;private static final int MOTION_DETECTOR_PIN =24;@Overridepublic void startApp() {... //PIR 센서 초기화 pir =new HCSR501Device(MOTION_DETECTOR_PIN); pir.setListener(new PirSensor());... }@Overridepublic void destroyApp(boolean unconditional) {... pir.close();...}//동작 감지 클래스에 대한 PIR 센서 확인 PirSensor 구현 PinListener { @Override public void valueChanged(PinEvent 이벤트) { if (event.getValue()) { System.out.println("경고 모션 감지!!!"); } }}
목록 10. PIR 센서 및 해당 수신기를 지원하도록 MIDlet 클래스 확장
자세한 내용:Java ME 8 + Raspberry Pi + 센서 =IoT World(1부)
제조공정
유지 관리가 변경되고 있습니다. 신속하게. 예측 유지 관리는 거의 매시간 진화하고 있습니다. 다른 세계와 마찬가지로 유지 관리도 동시에 연결되고 상호 연결되고 있습니다. 센서는 빠른 속도로 산업 환경 전반에 걸쳐 광범위하게 확산되고 있습니다. 볼트, 암페어, 0과 1은 수백만, 수조 개의 케이블과 무선 연결을 통해 앞뒤로 스트리밍되어 데이터, 정보 및 가치를 제공합니다. 운영 우수성을 요구하는 현대 조직에 적합합니다. 사물 인터넷(IoT)은 이제 산업화(IIoT)되었으며 4번째를 주도하고 있습니다. 산업 혁명 - 인더스트리 4.0
누구 워싱턴 대학교 엔지니어링 팀은 민들레가 넓은 지역에 무선 센서를 배포하는 데 도움이 될 수 있는 배터리가 필요 없는 소형 장치를 개발하기 위해 씨앗을 배포하기 위해 바람을 사용하는 방법에서 영감을 얻었습니다. 무엇을 이 시스템은 1mg의 민들레 씨앗보다 약 30배 무겁지만 드론에 의해 방출된 축구장 길이만큼 적당한 미풍으로 최대 100m까지 이동할 수 있습니다. 지상에 도착하면 최소 4개의 센서를 수용할 수 있는 이 장치는 태양 전지판을 사용하여 온보드 전자 장치에 전원을 공급하고 최대 60미터 떨어진 곳에서 센서 데이터