Raspberry Pi로 놀기 : 자바의 GPIO 핀 및 신호등

나이트 호크 — 에드워드 호퍼, 1942

Python 용 Raspberry Pi ( Python 기사 읽기 ), Node.js ( Node.js 기사 읽기 ), Node RED ( Node RED 기사 읽기 ), C ( C 기사 읽기 ) 에서 Low Voltage Labs 신호등 을 사용하는 방법을 설명하는 가이드를 작성 했습니다. ), Bash 스크립팅 ( Bash 기사 읽기 ), Swift ( Swift 기사 읽기 ), Go ( Go 기사 읽기 ) 및 Arduino ( Arduino 기사 읽기 ) 이제 Java 프로그래밍 언어에서 GPIO 핀에 액세스하는 방법을 확인할 때입니다.

이를 독립형 가이드로 만들기 위해 이전 기사의 콘텐츠를 일부 재사용 할 것입니다.

쇼핑리스트

이를 시도하려면 다음이 필요합니다 (여기 링크는 주로 Adafruit 로 이동합니다 . 영국 고객은 Pimoroni 를 영국 기반 대안으로 고려할 수 있습니다 . Amazon에는이 모든 것이 아니지만 대부분이 있습니다) :

  • 라즈베리 파이는 (여기 파이 3 모델 B를 사용 하겠지만, GPIO 핀 어떤 모델이 작동합니다 - 당신은 당신이 그것에 어떤 헤더를 납땜해야합니다 파이 제로를 사용하려는 경우). 40 핀이있는 Pi 2 또는 3이 있다고 가정하겠습니다.
  • 전원 공급 장치 당신의 파이를위한
  • 어떤 종류의 케이스 는 아마도 Pi를 보호하는 데 좋은 아이디어 일 것입니다 (하지만 조명을 연결하기 위해 GPIO 핀을 노출하려면 뚜껑을 열어 두어야합니다)
  • 마이크로 SD 카드 에 운영 체제를 설치 (또는 하나 얻을 사전 설치된 OS를 ). 운영 체제를 직접 설치하려면 SD 카드 리더가있는 Mac, PC, Linux 시스템이 필요합니다.
  • Low Voltage Labs신호등 세트 (2 개 팩은 좋은 가치)
  • Pi에 입력 할 모든 USB 키보드
  • Pi의 출력을 표시하는 모든 HDMI 디스플레이

Low Voltage Labs 신호등은 4 개의 핀을 사용하여 Pi에 연결됩니다. 이 중 하나는 접지되어야하고 나머지 세 개는 각 개별 LED를 제어하는 ​​데 사용되는 실제 GPIO 핀입니다.

Pi의 전원을 켜기 전에 신호등을 연결하여 핀이 빨간색으로 강조 표시된 GPIO 핀에 연결되도록합니다.

pinout.xyz의 Raspberry Pi GPIO 핀아웃

완료되면 다음과 같이 보일 것입니다. (오른쪽에 있는지 확인하는 쉬운 방법은 하단에 USB 포트가있는 Pi를 볼 때 핀의 왼쪽 행에있는 표시등을 찾는 것입니다. 그런 다음 8 개의 핀을 세고 거기에 조명을 부착하십시오).

아직 Pi를 켜지 마십시오. 먼저 운영 체제 이미지를 준비해야합니다.

운영 체제 설정

공식 Raspberry Pi 사이트에서 다운로드 할 수있는 Raspbian Stretch Lite OS를 설치합니다 . 도움이 필요한 경우 훌륭한 설치 가이드를 찾을 수도 있습니다 . Resin.io 의 무료 Etcher 도구는 운영 체제 이미지를 마이크로 SD 카드로 전송할 때 유용합니다.

운영 체제를 설치했으면 로그인 할 수 있는지 확인하고 유선 또는 Wi-Fi 인터넷 연결이 구성되어 있는지 확인하십시오.

이제 계속해서 조명을 켜고 끌 수 있습니다!

종속성 설치

최소한의 Stretch Lite OS를 사용했기 때문에 기본적으로 설치된 Java 런타임이나 컴파일러가 없습니다. Oracle의 Java 8은 매우 쉽게 추가 할 수 있습니다.

$ sudo apt-get update
$ sudo apt-get install oracle-java8-jdk

apt-get완료 되면 Java 런타임과 컴파일러가 설치되어 있는지 확인하십시오.

$ java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) Client VM (build 25.65-b01, mixed mode)
$ javac -version
javac 1.8.0_65

$ sudo apt-get install git
$ git --version
git version 2.11.0

영국 조명 시퀀스 (빨간색, 빨간색 + 호박색, 녹색, 호박색, 빨간색)에서 신호등을 실행하는 방법을 보여주는 샘플 Java 코드를 작성했습니다.

GitHub에서 예제 소스 코드를 얻으려면 :

$ git clone https://github.com/simonprickett/javapitrafficlights.git

$ cd javapitrafficlights
$ PROJECTDIR=`pwd`

Pi4J를 사용한 자바 프로그래밍

Pi4J 는 Java의 Raspberry Pi에서 GPIO 핀 작업을위한 라이브러리입니다. 이를 사용하면 낮은 수준의 문제에 대해 걱정할 필요없이 조명을 제어하는 ​​사업으로 곧장 이동할 수 있습니다. 차례로 Pi4J는 WiringPi C 라이브러리 에 의존 합니다 . WiringPi는 "라이트"Raspbian 운영 체제와 함께 설치되지 않지만 쉽게 수정할 수 있습니다.

$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ ./build

$ curl -s get.pi4j.com | sudo bash

====================================================
Pi4J INSTALLATION COMPLETE
====================================================
The Pi4J JAR files are located at:
/opt/pi4j/lib
Example Java programs are located at:
/opt/pi4j/examples
You can compile the examples using this script:
sudo /opt/pi4j/examples/build
Please see http://www.pi4j.com for more information.

실행하기 전에 GitHub 저장소를 복제 한 폴더 build.shcd돌아 가야합니다.

$ cd $PROJECTDIR
$ ./build.sh

코드 실행은 GitHub 저장소에 포함 된 두 번째 스크립트를 호출하는 것만 큼 간단합니다.

$ ./run.sh

문제!

처음 시도했을 때 WiringPi의 무언가가 Raspberry Pi 3에서 실행될 때 실패했기 때문에 코드를 제대로 실행할 수 없었습니다. 프로그램이 종료되고 다음과 같이 출력됩니다.

Unable to determine hardware version. I see:
Hardware   : BCM2835 - expecting BCM2708 or BCM2709.
If this is a genuine Raspberry Pi then please report this
to projects@drogon.net. If this is not a Raspberry Pi then you
are on your own as wiringPi is designed to support the
Raspberry Pi ONLY.

이 해결 방법은 run.sh다음을 추가하여 구현됩니다 .

-Dpi4j.linking.dynamic

Java 런타임을 시작할 때 추가 플래그입니다.

작동 원리

다음 src/TrafficLights.java은 GitHub 저장소에 포함 된 코드입니다 .

  • 1 ~ 5 행은 GPIO 핀을 관리하는 데 필요한 Pi4J 라이브러리 클래스를 가져옵니다.
  • 8-11 행은 GPIO 핀을 제어하고 신호등의 각 LED를 나타내는 데 사용할 변수를 선언합니다.
  • 14-24 행은 종료 후크를 구현합니다. 사용자가 Ctrl-C를 눌러 프로그램을 종료하려고 할 때 실행됩니다. 여기에있는 코드는 운영 체제로 돌아 가기 전에 세 개의 신호등 LED가 모두 꺼지는 지 확인합니다.
  • 26 행에서 GpioFactory필요한 핀에 액세스하는 데 사용할 인스턴스를 만듭니다 .
  • 28 ~ 30 행 redyellow, 및 green변수를 각각 핀 13, 12 및 14와 연결하고 초기 상태를 low(off) 로 설정했습니다 . Pi4J는 아래에 WiringPi를 사용하기 때문에 일반적인 BCM이 아닌 WiringPi의 핀 번호 체계를 사용하고 있습니다. 이는 GPIO 9 (빨간색)가 예를 들어 핀 13이됨을 의미합니다. 이 매핑 다이어그램 은 다른 프로그래밍 언어에 대한 다른 Pi Traffic Light 기사에서 사용되는 WiringPi 핀 번호와 해당 BCM 모드 핀 번호를 보여줍니다.
  • 32 ~ 50 행 while은 빨간색 표시등을 켜고 3 초 동안 잠자고 노란색 표시등을 켠 다음 1 초 후에 빨간색과 노란색이 꺼지고 녹색으로 켜지 는 무한 루프를 만듭니다 . 그런 다음 다시 시작할 때만 원래의 빨간색 표시등으로 돌아갈 때까지 나머지 신호등 시퀀스를 순환합니다. 이 작업은 사용자가 Ctrl-C를 눌러 종료 후크를 호출 할 때까지 무기한으로 계속됩니다 (코드 14-24 줄에 있음).

받은 편지함에서 직접 최고의 소프트웨어 거래 받기

Suggested posts

N + 1 문제 선택

모든 것은 비용이 있습니다.

N + 1 문제 선택

개발자의 경우 ORM (Object-relational mapping)을 사용하면 삶을 상당히 단순화 할 수 있지만 알아야 할 자체 캐치 세트가 있습니다. 더 심각한 문제 중 하나는 Select N + 1 문제입니다.

Vue 3 및 JavaScript로 날씨 앱 만들기

Vue 3 및 JavaScript로 날씨 앱 만들기

Vue 3는 프런트 엔드 앱을 만들 수있는 사용하기 쉬운 Vue JavaScript 프레임 워크의 최신 버전입니다. 이 기사에서는 Vue 3 및 JavaScript로 날씨 앱을 만드는 방법을 살펴 보겠습니다.