행복한 하루

라즈베리파이 제로 프로젝트(12) – Pioneer600 모듈 테스트 1편 - LED 제어 본문

RaspberryPi/Raspberry Pi Zero

라즈베리파이 제로 프로젝트(12) – Pioneer600 모듈 테스트 1편 - LED 제어

변화의 물결 2021. 2. 8. 00:36

 

 

안녕하세요.

 

  라즈베리파이 제로로 제어 학습할 수 있는 Pioneer600이라는 모듈을 찾았습니다. 그래서 이 모듈을 통해 센서와 조이스틱 등 프로그래밍하는 방법을 몇 편으로 해서 잘 되는지 테스트해보도록 하겠습니다.

 

  센서가 많이 달린 것은 아닌데(별도로 구매), 통신과 조작 등에 대해서 프로그래밍 방법들을 배울 수 있어 좋을 것 같습니다. (판매되는 곳마다 가격이 차이가 있던데, 5만 원 이상인 곳은 구매 마시고 그 아래 가격에 파는 곳을 찾아보세요.)

 그리고 회로도도 공개되어 있어 필요한 곳에 적용해보셔도 될 듯합니다.

 

  진행 내용은 제공해주는 매뉴얼 기반으로 테스트해보면서 잘 안 되는 부분은 수정하면서 해보도록 하겠습니다.

   소스는 BCM2835 library 이용하거나 Wiring, python 으로 진행하겠습니다. (BCM2835 Library is C library for Broadcom BCM 2835 as used in Raspberry Pi ) 

 

  쉽게 말해 라즈베리 파이를 위한 C 언어로 된 라이브러리라고 보시면 됩니다.

http://www.airspayce.com/mikem/bcm2835/

 

  첫 번째 내용은 Hello world처럼 LED를 제어하는 것으로 시작해보겠습니다.

 

1. Pioneer600 구성

 

Pioneer600 회로구성

 

1. Raspberry Pi GPIO interface: for connecting Raspberry Pi

2. USB TO UART: control the Pi through serial terminal

3. AD/DA IO interface: screw terminal

4. 1-WIRE interface: for connecting 1-WIRE devices like DS18B20

5. Sensor interface: for connecting various sensors

6. 0.96inch OLED: SSD1306 driver, 128×64 resolution, SPI interface

7. Buzzer

8. CP2102: USB TO UART converter

9. PCF8591: 8-bit AD/DA converter, I2C interface

10. BMP180: pressure sensor, I2C interface

11. PCF8574: I/O expansion chip, I2C interface

12. DS3231: high precision RTC chip, I2C interface

13. Power indicator

14. User LED

15. Joystick

16. LFN0038K IR receiver

 

부품 구성

 

  매뉴얼상 내용이고 박스 안에는 추가로 DS18B20과 스탠드와 볼트가 들어 있습니다. 그리고 조이스틱에 사각형 노브가 달려있습니다.

 

  현재 테스트는 라즈베리 제로로 할 예정인데 추가적으로 필요한 것이 있다면 양쪽이 Female 연장선이 필요합니다.

(제로에 소켓 핀을 기본적으로 아래로 장착하기 때문에 이 모듈 방향과 맞지 않을 수 있기 때문입니다.)

 

2. 시작 전 라이브러리 설치

- 위와 같이 준비했다면 몇 가지 사전에 라이브러리를 설치해야 합니다.

pi@raspberrypi:~ $ mkdir /opt

pi@raspberrypi:~ $ cd /opt

 

1) Install WiringPi Library

 

pi@raspberrypi:/opt $ sudo apt-get install wiringpi

pi@raspberrypi:/opt $ sudo wget https://project-downloads.drogon.net/wiringpi-latest.deb

pi@raspberrypi:/opt $ sudo dpkg -i wiringpi-latest.deb

pi@raspberrypi:/opt $ gpio -v

 

wiringPi 설치완료 확인

 

2) Install C Library bcm2835

pi@raspberrypi:/opt $ sudo wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz

pi@raspberrypi:/opt $ sudo tar zxvf bcm2835-1.60.tar.gz

pi@raspberrypi:/opt $ cd bcm2835-1.60/

pi@raspberrypi:/opt/bcm2835-1.60 $ sudo ./configure

pi@raspberrypi:/opt/bcm2835-1.60 $ sudo make && sudo make check && sudo make install

 

3) For Python3

pi@raspberrypi:/opt $ sudo apt-get update

pi@raspberrypi:/opt $ sudo apt-get install python3-pip

pi@raspberrypi:/opt $ sudo pip3 install RPi.GPIO

pi@raspberrypi:/opt $ sudo pip3 install smbus

 

4) Install Python Library

pi@raspberrypi:/opt $ sudo pip3 install pillow

pi@raspberrypi:/opt $ sudo pip3 install numpy

pi@raspberrypi:/opt $ sudo apt-get install libopenjp2-7

pi@raspberrypi:/opt $ sudo apt install libtiff

pi@raspberrypi:/opt $ sudo apt install libtiff5

pi@raspberrypi:/opt $ sudo apt-get install libatlas-base-dev

 

 

3. 연결하기

 - 라즈베리파이 제로와 모듈을 연결합니다. 소켓으로 연결할 경우 케이블은 필요 없습니다.

 3.3V, GND, Pin25(LED)

 

라즈베리파이 제로와 Pioneer600과 연결

 

4.  소스 실행시키기

- 우선 공개된 소스를 다운로드합니다.

pi@raspberrypi:/opt $ cd ~

pi@raspberrypi:~ $ sudo wget https://www.waveshare.com/w/upload/6/6a/Pioneer600-Code.tar.gz

pi@raspberrypi:/opt $ sudo tar zxf Pioneer600-Code.tar.gz

 

1) bcm2835로 실행시키기

pi@raspberrypi:~ $ cd Pioneer600/LED/bcm2835/

pi@raspberrypi:~/Pioneer600/LED/bcm2835 $ make clean && make

pi@raspberrypi:~/Pioneer600/LED/bcm2835 $ sudo ./led

 

그러면 LED1 LED가 깜박이는 것을 확인할 수 있습니다.  취소하려면 ctrl + C를 누르면 됩니다.

 

그리고 프로그램 소스를 보고 싶다면 vim led.c  실행하면 됩니다.

(vim 이 없다면 sudo apt-get install vim )

 

/* blink.c
 * you can build this with something like:
 * gcc -Wall blink.c -o blink -lbcm2835
 * sudo ./blink
*/
#include <bcm2835.h>

#define PIN 26
int main(int argc, char **argv)
{
    if (!bcm2835_init())return 1;
    bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);

    while (1)
    {
        bcm2835_gpio_write(PIN, HIGH);
        bcm2835_delay(500);
        bcm2835_gpio_write(PIN, LOW);
        bcm2835_delay(500);
    }
    bcm2835_close();
    return 0;
}

 

이후 wiringPi, Python 소스도 동작은 동일합니다.

 

2) wiringPi로 실행

pi@raspberrypi:~/Pioneer600/LED/bcm2835 $ cd ~/Pioneer600/LED/wiringPi/

pi@raspberrypi:~/Pioneer600/LED/wiringPi $ make clean && make

pi@raspberrypi:~/Pioneer600/LED/wiringPi $ sudo ./led

 

3) Python으로 실행

pi@raspberrypi:~/Pioneer600/LED/wiringPi $ cd ~/Pioneer600/LED/python/

pi@raspberrypi:~/Pioneer600/LED/python $ sudo python3 led.py

 

 

이것으로 LED 동작 테스트를 해보았습니다. 프로그램 소스마다 깜박이는 속도 차이는 나지만 기본 동작은 동일하다는 것을 확인할 수 있었습니다. 소스 컴파일은 문제는 없었지만, 매뉴얼에 몇 가지 틀린 것이 있어 수정했습니다.

 

감사합니다.

 

 

<참고사이트>

1. pioneer600 자료 사이트

www.waveshare.com/wiki/Pioneer600 

 

 

“쿠팡 파트너스 활동을 통해 일정액의 수수료를 받을 수 있음"

Comments