티스토리 뷰

해당 포스팅은 2016.08.16에 작성되었습니다.





제품명 : ACCENT RaspberryPi & BananaPi Shield Series

------------------------------------------
판매처
Accent_GitHub

위 링크에 제품에 대한 소개가 잘 나와있습니다.
첫 번째, 판매처에서 Spec과 Block Diagram, 초기설정 내용을 보실 수 있습니다.
두 번째, GitHub에 스크립트 파일 및 소스 등이 업로드되어 있습니다.
------------------------------------------

테스트환경 : Windows7 64bit, Raspbian Jessie(OS), RaspberryPi 2 B or RaspberryPi 3 B






Digital_I/O_Expand_Shield




먼저 Datasheet입니다.
MCP23s17
ULN2803A


http://wiringpi.com/extensions/spi-mcp23s08-mcp23s17/
그리고 위의 링크를 참조하시면, 각각 소스에 대한 설명을 확인하실 수 있으십니다.







실행방법



제공되는 예제 활용


우선, 제조사에서 제공하는 소스파일을 Git에서 Clone합니다.


1
$ git clone (url)       // ex) git clone https://github.com/ICbanQ/Accent.git
cs


라즈베리파이는 기본적으로 파이썬이 설치되어 있습니다.
따라서, clone한 디렉토리로 이동해서 아래 명령어를 통해 예제를 실행해 봅니다.


1
$ python3 (파일)       // ex) python3 blink.py
cs


그럼 실행한 소스 내용에 맞게 LED가 작동하는것을 확인할 수 있으십니다.




PiFace emulator 사용


Accent모듈이 PiFace모듈과 유사하다고 합니다. 해서 저도 따라해보았습니다.
다음 두 명령어를 실행하여 에뮬레이터를 설치해줍니다.


1
2
$ sudo apt-get install python3-pifacedigitalio
$ sudo apt-get install python3-pifacedigital-emulator
cs


아, 에뮬레이터는 GUI를 사용해야하니,
원격 접속을 하실 분들은 xrdp를 설치해주세요. 저도 원격접속을 사용합니다.


1
$ sudo apt-get install xrdp
cs


자 그럼 '원격 데스크톱 연결'로 접속하여 테스트해보겠습니다.
아래 동영상에서 보실 수 있는 것처럼, 바탕화면에 아이콘이 생성되었습니다.
이걸 실행하시고, Enable메뉴에서 IN/OUT을 정해주시고, 하단의 버튼을 통해 어떤식으로 작동 되는지 확해줍니다 :) 에뮬레이터답네요.



다음 내용에서도 나오겠지만,
상단 메뉴중에 Address는 모듈의 주소를 말합니다.

만약 이 모듈을 여러개 사용한다면 각각의 어드레스가 달라야합니다.


데이터시트에서 확인할 수 있는것처럼, A2 A1 A0가 가변이며,

제플린님께서 올려주신 회로도를 보면 A2는 GND로 되어 있으니 A1 A0만 가변이 되겠습니다.

즉 0~3, 2^2 = 4개의 주소로 구성할 수 있겠으며, 메뉴를 눌러보시면 0~3까지 있는것을 확인하실 수 있으십니다.




wiringPi 사용


방법은 지난번 내용에서 했던것처럼 매우 단순합니다.
먼저, 아래 명령어를 통해 편집기로 소스를 작성합니다. (소스는 다음 절을 참조)


1
$ sudo (편집기) (파일명.확장자명)     //  ex) sudo nano MCP23S17_TEST.c
cs


다음 GCC컴파일러를 통해 오브젝트 파일을 생성합니다.


1
$ gcc (소스파일) -o (오브젝트명)       //  ex) gcc MCP23S17_TEST.c -o MCP
cs


생성이 잘 되었다면, 실행을 해봅니다.


1
$ sudo ./(오브젝트파일)      //   ex) sudo ./MCP
cs


저는 다음절의 소스처럼 순서대로 LED가 점멸되는 소스를 작성하였습니다.

실제 작동 영상은 별도로 찍지 않았습니다. 저항이 너무 높은게 달려있어서 어두운 상황이 아니면 불빛이 잘 안보이더라구요.









Source




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <wiringPiI2C.h>
#include <mcp23s17.h> 
 
#define BASE 123         //64이상의 수 중에 다른 SPI모듈과 겹치지 않는 숫자를 할당해 줍니다.
 
int main() {
     int i, bit;
  
     wiringPiSetup();
     mcp23s17Setup(BASE, 00);      // 두번째 인자는 SPI 포트(0 or 1), 세번째 인자는 DevID입니다.
 
     printf("Raspberry Pi - MCP23S17 Test\r\n");
 
     for(i=0; i<8; i++)
               pinMode (BASE+i, OUTPUT);      // 출력 핀 설정
  
     while(1) {
         for(bit=0; bit<8; bit++)
         {
               digitalWrite(BASE+bit, 0);   //점
               delay(1000) ;
               digitalWrite(BASE+bit, 1);   //멸
               delay(1000) ;
         }
     }
     return 0 ;
}
cs


소스에 대한 간략한 설명은 소스 내 주석을 확인하시길 바랍니다.



댓글
댓글쓰기 폼