검색결과 리스트
라즈베리파이2에 해당되는 글 9건
- 2015.10.22 블랙이랑 한 번 붙어볼텨? 비글본그린이 나타났다! (BeagleBone Green)
- 2015.07.06 [아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베이파이로 텔레그램 봇 만들기[3] - 텔레그램 CLI 설치하기
- 2015.06.30 [아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베리파이 온습도센서(CHIPCAP-L/Module) 이용하기
- 2015.06.30 [아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베리파이 CdS(광량) 센서 사용하기
- 2015.06.29 [아이씨뱅큐 ICbanQ 파워블로거 2기] MPD를 사용하여 곡 정보 CLCD에 표현하기
- 2015.06.29 [아이씨뱅큐 ICbanQ 파워블로거 2기] Volumio 로터리엔코더( GPIO )를 이용하여 음량제어하기
- 2015.06.11 라즈베리파이 3종 여름특별 할인!
- 2015.05.27 라즈베리파이2 + Micro SD NOOBS 패키지 할인 이벤트
- 2015.04.20 아이씨뱅큐 라즈베리파이2 이벤트!
글
블랙이랑 한 번 붙어볼텨? 비글본그린이 나타났다! (BeagleBone Green)
안녕하세요, 아이씨뱅큐 마케팅 담당자 Alicia 입니다 J
뭔가 많은 메이커 분들의 이목을 집중시킬 만한 포스팅 재료가 없을까 곰곰이 생각하다가 신제품 출시 때에도 쓰지 못했던 비글본 그린 (Beaglebone Grea) 에 대해 몇 자 적어볼까 하여 컴퓨터 앞에 앉았습니다 (은유적인 표현입니다. 저는 오늘 하루 종일 컴퓨터 앞에 앉아 있었습니다!!).
비글본 그린은 한때 제 2의 라즈베리파이로 불려졌던 비글본 블랙의 설계를 본뜬 기판으로 최초는 아니지만 그 구조가 크게 바뀐 파생 기판이라 볼 수 있습니다. 중국 오픈소스 하드웨어 필드에서 유명한 Seeedstudio 에서 개발한 상품으로 두 개의 그로브 시스템 (Grove System) 커넥터, 마이크로 USB 를 장착하였으며 배터리 기반의 실시간 시계 (RTC)도 추가된 제품이라고 합니다. (그에 반해 사용량이 적은 HDML 커넥터는 제거!)
그로브 시스템 커넥터가 장착 됨으로써 기타 케이프 없이도 Seeedstudio에서 생산/판매 중인 다양한 종류의 센서기판과 바로 연결이 가능하게 되었습니다. 새로운 센서기판들과의 연결뿐만 아니라 기존의 비글본 블랙 (Beaglebone Black)과도 100% 호환된다고 하니 가히 BBB의 제대로 된 업그레이드 버전이라 칭할 만 하지 않나요?
<비글본 블랙과 비글본 그린 SPEC 비교>
그렇다면…
비글본 그린이 출시되었던 6월에도 쓰지 않았던 포스팅을 제가 쓰는 이유는 무엇일까요… 아 아이씨뱅큐에서 또 뭔가를 하나보다…라고 생각하시면 될 것 같습니다 ㅎㅎㅎㅎ
바로 Thing+와 비글본 그린의 만남! 이라고나 할까요…………. (너무 억지스럽다면 (박)지성…)
Thing+ (한글로 씽플러스라고 네이버에 등록되어 있던데 이게 더 억지스러운거 아닌가…………)는 사물인터넷 (IoT) 응용서비스를 위한 서비스형 소프트웨어 (SaaS) 입니다. 사용자에게 IoT 경험을 제공하려는 서비스 파트너에게 클라우드 인프라에서 수행되는 애플리케이션뿐 아니라 임베디드 미들웨어와 클라이언트 애플리케이션까지 모두 제공해 쉽고 빠르게 서비스를 시작할 수 있도록 도와줍니다. 쉬운 말로… 누구나 쉽게 IoT 플랫폼을 개발/이용/관리 할 수 있단 말입니다. 기술적인 내용은 저도 잘 모르니 아래 참조…………….. ^^
https://www.imaso.co.kr/news/article_view.php?article_idx=20150520201143
하지만 아무리 쉽다고 해도 쉬운 것이 아니라는 거! 아이씨뱅큐도, Thing+를 운용하는 달릭웍스도 잘 알기에 준비한 “나만의 IoT 서비스 만들기” 워크샵! 오호.. 기대되쥬? (참석하시면 저도 만날 수 있습니다. 피하지 말아주세요). 라즈베리파이2 또는 비글본 그린을 이용하여 IoT 서비스를 구축하는 방법을 달릭웍스 담당자로부터 직접 들을 수 있는 기회!
강의까지 들을 수 있지만 무엇보다도 시중에 판매하고 있는 키트들을 저렴하게 득!할 수 있는 기회라는 거………… WOW. 자세한 워크샵 내용은 http://www.icbanq.com/P005756201/ 에서 확인하시기 바랍니다. 문의는 shop@icbanq.com 으로 GOGO J
'WELCOME > ICbanQ 제품이야기' 카테고리의 다른 글
DC/DC 컨버터의 끝판 왕, ODP의 SMPS! (0) | 2015.10.23 |
---|---|
블루투스를 품은 아두이노? 코코아팹 오렌지보드 BLE 단품팩 출시!! (0) | 2015.10.22 |
블랙이랑 한 번 붙어볼텨? 비글본그린이 나타났다! (BeagleBone Green) (0) | 2015.10.22 |
아두이노, 그 이상을 원한다면? 답은 블루이노: 32비트 ARM코어텍스 탑재 + 4.0 블루투스 + 아두이노100%호환 (0) | 2015.10.20 |
HAKKO FX-888과 디지털의 만남! <FX-888D(70W)> (0) | 2015.10.19 |
편리하다 못해 저렴하기까지 하다. (키트 구성) 칩 박스, 중앙브레인 CA-30 시리즈 ~ (0) | 2015.10.16 |
설정
트랙백
댓글
글
[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베이파이로 텔레그램 봇 만들기[3] - 텔레그램 CLI 설치하기
[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]
사용한 품목 1) 라즈베리파이B+ 베이직 키트: http://www.icbanq.com/shop/product_detail.asp?prod_code=P005607887<ype=R
서론 지난 포스팅까지 라즈비안위에 서버를 구성했다. 이제는 라즈비안에 텔레그램을 설치해야 한다. 기본적인 구성은 라즈비안 위에 서버와 텔레그램이 병렬적으로 돌아가고 텔레그램이 나의 명령을 받아서 서버의 웹과 데이터베이스에 접근하는 구조를 가진다. 설치하는 방법은 아래 3개의 URL을 참고했다. http://coffeenix.net/board_view.php?bd_code=1759 https://github.com/vysheng/tg/blob/master/README.md 설치
설치할 때 먼저 관련 라이브러리들을 설치해야 한다. 그런데 문제는 repository가 잘못 ?榮쩝?repository를 못 찾는 지 라이브러리들을 가져오지 못했다. 무엇이 문제일까? 평소에 라이브러리를 가져오지 못하는 문제는 repository를 찾지못해서였고, 이 문제는 dns와 관련이 있었다. 그래서 /etc/network/interfaces를 아래와 같이 변경했고 문제를 해결했다. 물론 변경 후 네트워크 서비스를 재시작해야 한다. dns서버를 기존에는 한국 코넷?쪽으로 해놨다가 구글 dns서버의 IP인 8.8.8.8로 바꿔줬다.
라이브러리를 다운받기 전에 아래 명령어를 입력해서 업데이트를 해주자.
업데이트를 해서 그런지 아래 그림과 같이 라이브러리를 있다고 했다. 물론 없으면 설치해주도록 하자. 설치하다가 딴거 하다가 그래서 중간에 라이브러리를 직접 설치해줬는 지 기억이 안난다. :(
그럼 이제 텔레그램 CLI를 설치하기 위한 환경은 모두 갖췄다. CLI는 Command Line Interface로 터미널을 통해 사용자와 컴퓨터가 상호 작용을 하는 방식을 말한다. 우리는 이 텔레그램 CLI를 이용하여 DB나 웹에 접근할 것이고, 개인적으로 CLI가 편하다고 생각할 뿐더러 CLI외에 텔레그램을 db와 웹에 접근하는 방법이 딱히 생각나지 않아서 텔레그램 CLI를 선택했다 ^오^ 처음에는 블로그를 참조해서 wget를 이용해서 다운받았는데, configure 문제가 아래와 같이 있었다. 그래서 github에 제작자가 만들어 둔 방법을 사용하니 바로 ?榮? 역시 만든 사람이 제일 잘 아는 것 같다. ./configure명령을 날리면 체크를 하다가 마지막에 에러를 뱉고 진행이 안된다.
그 문제가 python에 있길래 python 관련 configure를 처리하기 위해 어떻게 해야할까 고민했다. 그러다가 파이썬 관련 configure를 관리하기 위해 apt-get install을 이용하는 포스팅을 봤고 아래와 같이 했지만 여전히 안?榮?
위에서 언급한 것과 같이 제작자가 readme에 적어둔 대로 git clone명령으로 설치했다.
이렇게 설치하면 tg 디렉토리로 들어가는데 ./configure와 make를 하면 컴파일을 한다.
아래 그림은 git clone으로 설치해서 cd로 해당 디렉토리로 이동하고 ./configure와 make를 한다. 뭐가 문제인 지는 모르겠지만 컴파일이 오래 걸리길래 딴 걸 했는데 대충 1시간은 지난거 같다.
컴파일을 하고 아래 명령어를 쳐서 번호를 물으면 올바르게 설치 된 것이다. 마치면서 설치하면서 라이브러리때문에 많은 시간이 걸렸다. 역시 새로운 환경에서 개발을 한다는 것은 개발보다 환경구축에 많은 심력을 소모하게 된다는 나의 지론(?!)을 다시 생각나게 했다. 그리고 다음 포스팅에는 내 텔레그램으로 봇에 명령을 내리기 위해서 가상번호를 만들면서 생긴 우여곡절기와 간단히 만든 텔레그램 봇을 보여주도록 하겠다. 관련 상품 라즈베리파이2 보드: http://www.icbanq.com/shop/product_detail.asp?prod_code=P005652343 라즈베리파이2 베이직 키트: http://www.icbanq.com/shop/product_detail.asp?prod_code=P005655515 손톱두이노: http://www.icbanq.com/shop/product_detail.asp?prod_code=P005668577 라즈베리파이 전용 방열판 (소): http://www.icbanq.com/shop/product_detail.asp?prod_code=P002110427
[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다] | ||||||||||
'강좌/정보 > 라즈베리파이' 카테고리의 다른 글
라즈베리파이에 Window 10 IoT core 올리기 (0) | 2015.07.20 |
---|---|
라즈베이파이로 텔레그램 봇 만들기[4] - 간단한 텔레그램 봇 (0) | 2015.07.07 |
[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베이파이로 텔레그램 봇 만들기[3] - 텔레그램 CLI 설치하기 (0) | 2015.07.06 |
[아이씨뱅큐 ICbanQ 파워블로거 2기] TFT-LCD에 X윈도우 없이 바로 창 띄우는 2가지 방법 (0) | 2015.07.01 |
[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베리파이 온습도센서(CHIPCAP-L/Module) 이용하기 (0) | 2015.06.30 |
[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베리파이 CdS(광량) 센서 사용하기 (0) | 2015.06.30 |
설정
트랙백
댓글
글
[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베리파이 온습도센서(CHIPCAP-L/Module) 이용하기
[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]
<사용 품목>
ㄱ. 라즈베리파이 B+ - http://www.icbanq.com/shop/product_detail.asp?prod_code=P005587400
ㄴ. 온습도센서(CHIPCAP-L/Module) -
http://www.icbanq.com/shop/product_detail.asp?prod_code=P000888998&catg_code=<ype=S
ㄷ. MCP3208 -
http://www.icbanq.com/shop/product_detail.asp?prod_code=P001749352&catg_code=<ype=S
< CONTENTS >
1. 개요
이번 시간에는 MCP3208을 통해 온습도센서를 이용해보도록 하겠습니다.
2. 회로도
전체적인 회로도입니다. 라즈베리파이 자체에는 ADC기능이 없기 때문에 MCP3208을 통해 구현하였습니다.
3. 소스코드 작성
먼저 c파일을 생성합니다.
sudo nano c파일이름.c |
파일이름은 하시고 싶은대로 지으시면 됩니다.
#include #include #include
#include #include
#define CS_MCP3208 6 // BCM_GPIO 25
#define SPI_CHANNEL 0 #define SPI_SPEED 1000000 // 1MHz
#define VCC 3.3 // Supply Voltage
int read_mcp3208_adc(unsigned char adcChannel) { unsigned char buff[3]; int adcValue = 0;
buff[0] = 0x06 | ((adcChannel & 0x07) >> 2); buff[1] = ((adcChannel & 0x07) << 6); buff[2] = 0x00;
digitalWrite(CS_MCP3208, 0); // Low : CS Active
wiringPiSPIDataRW(SPI_CHANNEL, buff, 3);
buff[1] = 0x0F & buff[1]; adcValue = ( buff[1] << 8) | buff[2];
digitalWrite(CS_MCP3208, 1); // High : CS Inactive
return adcValue; }
int main (void) { int adc0Value = 0; int adc1Value = 0; float adc0Vol = 0; float adc1Vol = 0; float Temp = 0; float RH = 0;
if(wiringPiSetup() == -1) { fprintf (stdout, "Unable to start wiringPi: %s\n", strerror(errno)); return 1 ; }
if(wiringPiSPISetup(SPI_CHANNEL, SPI_SPEED) == -1) { fprintf (stdout, "wiringPiSPISetup Failed: %s\n", strerror(errno)); return 1 ; }
pinMode(CS_MCP3208, OUTPUT);
while(1) { adc0Value = read_mcp3208_adc(0); adc0Vol = (adc0Value/4096.0)*VCC; Temp = adc0Vol*200.0-50.0;
adc1Value = read_mcp3208_adc(1); adc1Vol = (adc1Value/4096.0)*VCC; RH = adc1Vol*100.0;
printf("Temp = %f\n",Temp); printf("RH = %f\n",RH);
delay(350); }
return 0; } |
위와 같이 작성하신 후 c파일로 저장합니다.
그 후 컴파일 합니다.
gcc -o 실행파일이름 c파일이름.c -lwiringPi |
컴파일 후 실행파일을 실행합니다.
sudo ./실행파일이름 |
4. 결과
실행하시면 위와 같이 실행 창에 온도와 습도가 나타나게 됩니다.
[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]
'강좌/정보 > 라즈베리파이' 카테고리의 다른 글
[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베이파이로 텔레그램 봇 만들기[3] - 텔레그램 CLI 설치하기 (0) | 2015.07.06 |
---|---|
[아이씨뱅큐 ICbanQ 파워블로거 2기] TFT-LCD에 X윈도우 없이 바로 창 띄우는 2가지 방법 (0) | 2015.07.01 |
[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베리파이 온습도센서(CHIPCAP-L/Module) 이용하기 (0) | 2015.06.30 |
[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베리파이 CdS(광량) 센서 사용하기 (0) | 2015.06.30 |
[아이씨뱅큐 ICbanQ 파워블로거 2기] MPD를 사용하여 곡 정보 CLCD에 표현하기 (0) | 2015.06.29 |
[아이씨뱅큐 ICbanQ 파워블로거 2기] Volumio 로터리엔코더( GPIO )를 이용하여 음량제어하기 (0) | 2015.06.29 |
설정
트랙백
댓글
글
[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베리파이 CdS(광량) 센서 사용하기
[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]
<사용 품목>
ㄱ. 라즈베리파이 B+ - http://www.icbanq.com/shop/product_detail.asp?prod_code=P005587400 ㄴ. CdS 센서(GL5537) ㄷ. MCP3208 - http://www.icbanq.com/shop/product_detail.asp?prod_code=P001749352&catg_code=<ype=S < CONTENTS > 1. 개요 이번 시간에는 MCP3208을 통해 CdS센서를 사용해보도록 하겠습니다. CdS센서는 광량에 따라 저항 값이 달라지는 센서입니다. 보통 CdS센서를 사용할 경우 어두운 환경과 밝은 환경 둘에서의 CdS 통한 전압 값을 비교 후 기준을 정하여서 지금 환경이 밝다 어둡다를 알려주도록 하거나 다른 액츄레이터가 동작할 수 있도록 합니다. 2. 회로도
전체적인 회로도입니다. 라즈베리파이 자체에는 ADC기능이 없기 때문에 MCP3208을 통해 구현하였습니다.
3. 소스코드 작성
먼저 c파일을 생성합니다.
파일이름은 하시고 싶은대로 지으시면 됩니다.
위와 같이 작성하신 후 c파일로 저장합니다. 그 후 컴파일 합니다.
컴파일 후 실행파일을 실행합니다.
4. 결과
실행 후 실행 창에서 CdS센서를 손으로 가리면 'Dark'라고 뜨고 평상 시에는 'Bright'라고 뜨게 되는 것을 보실 수 있습니다.
[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다] | |||||
'강좌/정보 > 라즈베리파이' 카테고리의 다른 글
[아이씨뱅큐 ICbanQ 파워블로거 2기] TFT-LCD에 X윈도우 없이 바로 창 띄우는 2가지 방법 (0) | 2015.07.01 |
---|---|
[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베리파이 온습도센서(CHIPCAP-L/Module) 이용하기 (0) | 2015.06.30 |
[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베리파이 CdS(광량) 센서 사용하기 (0) | 2015.06.30 |
[아이씨뱅큐 ICbanQ 파워블로거 2기] MPD를 사용하여 곡 정보 CLCD에 표현하기 (0) | 2015.06.29 |
[아이씨뱅큐 ICbanQ 파워블로거 2기] Volumio 로터리엔코더( GPIO )를 이용하여 음량제어하기 (0) | 2015.06.29 |
아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베이파이로 텔레그램 봇 만들기[2] (0) | 2015.06.26 |
설정
트랙백
댓글
글
[아이씨뱅큐 ICbanQ 파워블로거 2기] MPD를 사용하여 곡 정보 CLCD에 표현하기
[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]
[ 사용한 품목 ]
라즈베리파이 B+, 로터리 엔코더
[ CONTENTS ]
LCD ================ GPIO
VSS (pin 1) —————- GND
VDD (pin 2)—————- +5V (pin 2)
D7 (pin 14)—————— GPIO14 (pin 8) [previously GPIO18]
D6 (pin 13) —————— GPIO23 (pin 16)
D5 (pin 12)—————— GPIO24 (pin 18)
D4 (pin 11)—————— GPIO25 (pin 22)
E (pin 6) ——————– GPIO08 (pin 24)
RS (pin 4)—————— GPIO07 (pin 26)
RW (pin 5)—————— GND
sudo dpkg -i python-rpi.gpio_0.5.11-1_armhf.deb
sudo apt-get install python-mpd
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210 |
#!/usr/bin/python
#
# based on code from lrvick and LiquidCrystal
# LiquidCrystal - https://github.com/arduino/Arduino/blob/master/libraries/LiquidCrystal/LiquidCrystal.cpp
#
from time import sleep
class CharLCD(object):
# commands
LCD_CLEARDISPLAY = 0x01
LCD_RETURNHOME = 0x02
LCD_ENTRYMODESET = 0x04
LCD_DISPLAYCONTROL = 0x08
LCD_CURSORSHIFT = 0x10
LCD_FUNCTIONSET = 0x20
LCD_SETCGRAMADDR = 0x40
LCD_SETDDRAMADDR = 0x80
# flags for display entry mode
LCD_ENTRYRIGHT = 0x00
LCD_ENTRYLEFT = 0x02
LCD_ENTRYSHIFTINCREMENT = 0x01
LCD_ENTRYSHIFTDECREMENT = 0x00
# flags for display on/off control
LCD_DISPLAYON = 0x04
LCD_DISPLAYOFF = 0x00
LCD_CURSORON = 0x02
LCD_CURSOROFF = 0x00
LCD_BLINKON = 0x01
LCD_BLINKOFF = 0x00
# flags for display/cursor shift
LCD_DISPLAYMOVE = 0x08
LCD_CURSORMOVE = 0x00
# flags for display/cursor shift
LCD_DISPLAYMOVE = 0x08
LCD_CURSORMOVE = 0x00
LCD_MOVERIGHT = 0x04
LCD_MOVELEFT = 0x00
# flags for function set
LCD_8BITMODE = 0x10
LCD_4BITMODE = 0x00
LCD_2LINE = 0x08
LCD_1LINE = 0x00
LCD_5x10DOTS = 0x04
LCD_5x8DOTS = 0x00
def __init__(self, pin_rs=7, pin_e=8, pins_db=[25, 24, 23, 14], GPIO=None):
# Emulate the old behavior of using RPi.GPIO if we haven't been given
# an explicit GPIO interface to use
if not GPIO:
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
self.GPIO = GPIO
self.pin_rs = pin_rs
self.pin_e = pin_e
self.pins_db = pins_db
self.GPIO.setmode(GPIO.BCM)
self.GPIO.setup(self.pin_e, GPIO.OUT)
self.GPIO.setup(self.pin_rs, GPIO.OUT)
for pin in self.pins_db:
self.GPIO.setup(pin, GPIO.OUT)
self.write4bits(0x33) # initialization
self.write4bits(0x32) # initialization
self.write4bits(0x28) # 2 line 5x7 matrix
self.write4bits(0x0C) # turn cursor off 0x0E to enable cursor
self.write4bits(0x06) # shift cursor right
self.displaycontrol = self.LCD_DISPLAYON | self.LCD_CURSOROFF | self.LCD_BLINKOFF
self.displayfunction = self.LCD_4BITMODE | self.LCD_1LINE | self.LCD_5x8DOTS
self.displayfunction |= self.LCD_2LINE
# Initialize to default text direction (for romance languages)
self.displaymode = self.LCD_ENTRYLEFT | self.LCD_ENTRYSHIFTDECREMENT
self.write4bits(self.LCD_ENTRYMODESET | self.displaymode) # set the entry mode
self.clear()
def begin(self, cols, lines):
if (lines > 1):
self.numlines = lines
self.displayfunction |= self.LCD_2LINE
def home(self):
self.write4bits(self.LCD_RETURNHOME) # set cursor position to zero
self.delayMicroseconds(3000) # this command takes a long time!
def clear(self):
self.write4bits(self.LCD_CLEARDISPLAY) # command to clear display
self.delayMicroseconds(3000) # 3000 microsecond sleep, clearing the display takes a long time
def setCursor(self, col, row):
self.row_offsets = [0x00, 0x40, 0x14, 0x54]
if row > self.numlines:
row = self.numlines - 1 # we count rows starting w/0
self.write4bits(self.LCD_SETDDRAMADDR | (col + self.row_offsets[row]))
def noDisplay(self):
""" Turn the display off (quickly) """
self.displaycontrol &= ~self.LCD_DISPLAYON
self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol)
def display(self):
""" Turn the display on (quickly) """
self.displaycontrol |= self.LCD_DISPLAYON
self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol)
def noCursor(self):
""" Turns the underline cursor off """
self.displaycontrol &= ~self.LCD_CURSORON
self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol)
def cursor(self):
""" Turns the underline cursor on """
self.displaycontrol |= self.LCD_CURSORON
self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol)
def noBlink(self):
""" Turn the blinking cursor off """
self.displaycontrol &= ~self.LCD_BLINKON
self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol)
def blink(self):
""" Turn the blinking cursor on """
self.displaycontrol |= self.LCD_BLINKON
self.write4bits(self.LCD_DISPLAYCONTROL | self.displaycontrol)
def DisplayLeft(self):
""" These commands scroll the display without changing the RAM """
self.write4bits(self.LCD_CURSORSHIFT | self.LCD_DISPLAYMOVE | self.LCD_MOVELEFT)
def scrollDisplayRight(self):
""" These commands scroll the display without changing the RAM """
self.write4bits(self.LCD_CURSORSHIFT | self.LCD_DISPLAYMOVE | self.LCD_MOVERIGHT)
def leftToRight(self):
""" This is for text that flows Left to Right """
self.displaymode |= self.LCD_ENTRYLEFT
self.write4bits(self.LCD_ENTRYMODESET | self.displaymode)
def rightToLeft(self):
""" This is for text that flows Right to Left """
self.displaymode &= ~self.LCD_ENTRYLEFT
self.write4bits(self.LCD_ENTRYMODESET | self.displaymode)
def autoscroll(self):
""" This will 'right justify' text from the cursor """
self.displaymode |= self.LCD_ENTRYSHIFTINCREMENT
self.write4bits(self.LCD_ENTRYMODESET | self.displaymode)
def noAutoscroll(self):
""" This will 'left justify' text from the cursor """
self.displaymode &= ~self.LCD_ENTRYSHIFTINCREMENT
self.write4bits(self.LCD_ENTRYMODESET | self.displaymode)
def write4bits(self, bits, char_mode=False):
""" Send command to LCD """
self.delayMicroseconds(1000) # 1000 microsecond sleep
bits = bin(bits)[2:].zfill(8)
self.GPIO.output(self.pin_rs, char_mode)
for pin in self.pins_db:
self.GPIO.output(pin, False)
for i in range(4):
if bits[i] == "1":
self.GPIO.output(self.pins_db[::-1][i], True)
self.pulseEnable()
for pin in self.pins_db:
self.GPIO.output(pin, False)
for i in range(4, 8):
if bits[i] == "1":
self.GPIO.output(self.pins_db[::-1][i-4], True)
self.pulseEnable()
def delayMicroseconds(self, microseconds):
seconds = microseconds / float(1000000) # divide microseconds by 1 million for seconds
sleep(seconds)
def pulseEnable(self):
self.GPIO.output(self.pin_e, False)
self.delayMicroseconds(1) # 1 microsecond pause - enable pulse must be > 450ns
self.GPIO.output(self.pin_e, True)
self.delayMicroseconds(1) # 1 microsecond pause - enable pulse must be > 450ns
self.GPIO.output(self.pin_e, False)
self.delayMicroseconds(1) # commands need > 37us to settle
def message(self, text):
""" Send string to LCD. Newline wraps to second line"""
for char in text:
if char == '\n':
self.write4bits(0xC0) # next line
else:
self.write4bits(ord(char), True)
if __name__ == '__main__':
lcd = CharLCD()
lcd.clear()
lcd.message(" CLCD 16x2\n Standard LCD")
|
cs |
sudo python CharLCD.py
sudo nano clcd_test.py아래내용 복사-붙여넣기Ctrl + X선택 후 y 선택 후 Enter그리고 아래를 실행하여 확인
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 #!/usr/bin/pythonfrom CharLCD import CharLCDfrom subprocess import *from time import sleep, strftimefrom datetime import datetimefrom mpd import MPDClientclient = MPDClient() # create client objectclient.timeout = 10 # network timeout in seconds (floats allowed), default: Noneclient.idletimeout = None # timeout for fetching the result of the idle command is handled seperately, default:$client.connect("localhost", 6600) # connect to localhost:6600lcd = CharLCD()lcd.begin(16,2)while 1:title = client.currentsong()['title']last_status = client.status()['state']volume = client.status()['volume']id = client.currentsong()['id']currentsong = client.currentsong()['file']status = client.status()['state']lcd.clear()try:if status == "play":lcd.message( "[" + id + "] " + title + "\n" + "PLAY VOL:" + volume)elif status == "pause":lcd.message( "[" + id + "] " + title + "\n" + "PAUSED VOL:" + volume)else:lcd.message( "[" + id + "] " + title + "\n" + "STOPED VOL:" + volume)last_status = client.status()['state']except:passsleep(2)cs
sudo nano mpd_info.py아래내용 복사-붙여넣기Ctrl + X선택 후 y 선택 후 Enter그리고 아래를 실행하여 확인
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
29 |
#!/usr/bin/env python
from mpd import MPDClient
client = MPDClient() # create client object
client.timeout = 10 # network timeout in seconds (floats allowed), default: None
client.idletimeout = None # timeout for fetching the result of the idle command is handled seperately, default:$
client.connect("localhost", 6600) # connect to localhost:6600
currentsong = client.currentsong()
print ""
print 'CURRENT----------------------------------------------------------------'
if len(currentsong) > 0:
for text in currentsong:
print text + ": " + str(currentsong.get(text))
current_id = int(currentsong.get("pos")) + 1
else:
print "No current song (empty playlist)"
print ""
print 'STATUS-----------------------------------------------------------------'
status = client.status()
for text in status:
print text + ": " + str(status.get(text))
print ""
print 'STATS------------------------------------------------------------------'
stats = client.stats()
for text in stats:
print text + ": " + str(stats.get(text))
client.close() # send the close command
client.disconnect() # disconnect from the server
|
cs |
sudo python mpd_info.py
sudo python clcd_test.py

'강좌/정보 > 라즈베리파이' 카테고리의 다른 글
[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베리파이 온습도센서(CHIPCAP-L/Module) 이용하기 (0) | 2015.06.30 |
---|---|
[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베리파이 CdS(광량) 센서 사용하기 (0) | 2015.06.30 |
[아이씨뱅큐 ICbanQ 파워블로거 2기] MPD를 사용하여 곡 정보 CLCD에 표현하기 (0) | 2015.06.29 |
[아이씨뱅큐 ICbanQ 파워블로거 2기] Volumio 로터리엔코더( GPIO )를 이용하여 음량제어하기 (0) | 2015.06.29 |
아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베이파이로 텔레그램 봇 만들기[2] (0) | 2015.06.26 |
[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베이파이로 텔레그램 봇 만들기[1] - 기본 설정 (0) | 2015.06.26 |
설정
트랙백
댓글
글
[아이씨뱅큐 ICbanQ 파워블로거 2기] Volumio 로터리엔코더( GPIO )를 이용하여 음량제어하기
[본 컨텐츠는 ICbanQ (아이씨뱅큐)에서 진행하는 파워블로거 활동의 일환으로, 아이씨뱅큐의 지원을 받아 작성되었습니다]
[ 사용한 품목 ]
라즈베리파이 B+, 로터리 엔코더
[ CONTENTS ]



::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::[ Software ]::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
sudo dpkg -i python-rpi.gpio_0.5.11-1_armhf.deb
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107 |
#!/usr/bin/env python
#
# Raspberry Pi Rotary Encoder Class
# $Id: rotary_class.py,v 1.2 2014/01/31 13:34:48 bob Exp $
#
# Author : Bob Rathbone
# Site : http://www.bobrathbone.com
#
# This class uses standard rotary encoder with push switch
#
#
import RPi.GPIO as GPIO
class RotaryEncoder:
CLOCKWISE=1
ANTICLOCKWISE=2
BUTTONDOWN=3
BUTTONUP=4
rotary_a = 0
rotary_b = 0
rotary_c = 0
last_state = 0
direction = 0
# Initialise rotary encoder object
def __init__(self,pinA,pinB,button,callback):
self.pinA = pinA
self.pinB = pinB
self.button = button
self.callback = callback
GPIO.setmode(GPIO.BCM)
# The following lines enable the internal pull-up resistors
# on version 2 (latest) boards
GPIO.setwarnings(False)
GPIO.setup(self.pinA, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(self.pinB, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(self.button, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# For version 1 (old) boards comment out the above four lines
# and un-comment the following 3 lines
#GPIO.setup(self.pinA, GPIO.IN)
#GPIO.setup(self.pinB, GPIO.IN)
#GPIO.setup(self.button, GPIO.IN)
# Add event detection to the GPIO inputs
GPIO.add_event_detect(self.pinA, GPIO.FALLING, callback=self.switch_event)
GPIO.add_event_detect(self.pinB, GPIO.FALLING, callback=self.switch_event)
GPIO.add_event_detect(self.button, GPIO.BOTH, callback=self.button_event, bouncetime=200)
return
# Call back routine called by switch events
def switch_event(self,switch):
if GPIO.input(self.pinA):
self.rotary_a = 1
else:
self.rotary_a = 0
if GPIO.input(self.pinB):
self.rotary_b = 1
else:
self.rotary_b = 0
self.rotary_c = self.rotary_a ^ self.rotary_b
new_state = self.rotary_a * 4 + self.rotary_b * 2 + self.rotary_c * 1
delta = (new_state - self.last_state) % 4
self.last_state = new_state
event = 0
if delta == 1:
if self.direction == self.CLOCKWISE:
# print "Clockwise"
event = self.direction
else:
self.direction = self.CLOCKWISE
elif delta == 3:
if self.direction == self.ANTICLOCKWISE:
# print "Anticlockwise"
event = self.direction
else:
self.direction = self.ANTICLOCKWISE
if event > 0:
self.callback(event)
return
# Push button up event
def button_event(self,button):
if GPIO.input(button):
event = self.BUTTONUP
else:
event = self.BUTTONDOWN
self.callback(event)
return
# Get a switch state
def getSwitchState(self, switch):
return GPIO.input(switch)
# End of RotaryEncoder class
|
cs |
sudo nano VolumioKnob.py아래내용 복사-붙여넣기Ctrl + X선택 후 y 선택 후 Enter그리고 아래를 실행하여 확인sudo python /home/volumio/VolumioKnob.py
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
29
30
31
32
33
34
35
36
37
38
39 |
#!/usr/bin/env python
#
# Raspberry Pi Rotary Test Encoder Class
#
# Author : Bob Rathbone
# Site : http://www.bobrathbone.com
#
# This class uses a standard rotary encoder with push switch
#
import subprocess
import sys
import time
from rotary_class import RotaryEncoder
# Define GPIO inputs (BCM)
PIN_A = 23 # Pin 16
PIN_B = 24 # Pin 18
BUTTON = 25 # Pin 22
# This is the event callback routine to handle events
def switch_event(event):
if event == RotaryEncoder.CLOCKWISE:
subprocess.call(['mpc', 'volume', '+2' ])
time.sleep(.2)
elif event == RotaryEncoder.ANTICLOCKWISE:
subprocess.call(['mpc', 'volume', '-2' ])
time.sleep(.2)
elif event == RotaryEncoder.BUTTONDOWN:
subprocess.call(['mpc', 'toggle' ])
#elif event == RotaryEncoder.BUTTONUP:
#print "Button up"
return
# Define the switch
rswitch = RotaryEncoder(PIN_A,PIN_B,BUTTON,switch_event)
while True:
time.sleep(0.5)
|
cs |

'강좌/정보 > 라즈베리파이' 카테고리의 다른 글
[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베리파이 CdS(광량) 센서 사용하기 (0) | 2015.06.30 |
---|---|
[아이씨뱅큐 ICbanQ 파워블로거 2기] MPD를 사용하여 곡 정보 CLCD에 표현하기 (0) | 2015.06.29 |
[아이씨뱅큐 ICbanQ 파워블로거 2기] Volumio 로터리엔코더( GPIO )를 이용하여 음량제어하기 (0) | 2015.06.29 |
아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베이파이로 텔레그램 봇 만들기[2] (0) | 2015.06.26 |
[아이씨뱅큐 ICbanQ 파워블로거 2기] 라즈베이파이로 텔레그램 봇 만들기[1] - 기본 설정 (0) | 2015.06.26 |
라즈베리파이로 만든 로봇^^ (0) | 2015.06.19 |
설정
트랙백
댓글
글
라즈베리파이 3종 여름특별 할인!
라즈베리파이/라즈베리파이2
어느새부터 시작된 오픈하드웨어 계의 강자 라즈베리파이!
라즈베리파이 3종 세트 할인 판매를 아이씨 뱅큐에서 시작합니다~
19일까지 한정판매를 진행하니 그동안 사려고 마음먹으신 분들은 얼른 고고 :)
http://www.icbanq.com/shop/templete_list.asp?t_idx=11&catg_code=101144100111
'ICbanQ 이벤트 > ICbanQ 신제품/할인' 카테고리의 다른 글
PG320240WRF-JE8HS1 ( 3.8 mono Graphic ) 3.8인치 모노그래픽 LCD 50%할인! (0) | 2015.06.22 |
---|---|
고성능 스마트폰 살균 소독기 30대 한정 할인 이벤트! (0) | 2015.06.15 |
라즈베리파이 3종 여름특별 할인! (0) | 2015.06.11 |
아이씨뱅큐, Rexbot 3D 프린터 린청! (0) | 2015.06.10 |
MARV 마브 3D프린터 구매 시 정품 필라멘트 10개 증정 (0) | 2015.06.04 |
라즈베리파이2 + Micro SD NOOBS 패키지 할인 이벤트 (0) | 2015.05.27 |
설정
트랙백
댓글
글
라즈베리파이2 + Micro SD NOOBS 패키지 할인 이벤트
라즈베리파이를 처음 접하신다구요?
번거로운 OS설치와 라즈베리파이2 구매까지
아이씨뱅큐의 NOOBS 패키지로 한번에 해결하세요 :)
*수량소진 시 까지 이벤트 진행
http://www.icbanq.com/shop/product_detail.asp?prod_code=P005680521<ype=B
'ICbanQ 이벤트 > ICbanQ 신제품/할인' 카테고리의 다른 글
아이씨뱅큐, Rexbot 3D 프린터 린청! (0) | 2015.06.10 |
---|---|
MARV 마브 3D프린터 구매 시 정품 필라멘트 10개 증정 (0) | 2015.06.04 |
라즈베리파이2 + Micro SD NOOBS 패키지 할인 이벤트 (0) | 2015.05.27 |
인두기 + PCB 작업 지지대 (0) | 2015.05.18 |
코코아팹 지니어스키트(Genius KIT)_ 아두이노호환 (0) | 2015.05.08 |
블루투스 4.1 (BLE) 모듈 테스트 키트 (BoT-CLE 110 Test Kit) (0) | 2015.05.04 |
설정
트랙백
댓글
글
아이씨뱅큐 라즈베리파이2 이벤트!
아이씨뱅큐 ICbanQ에서 준비한 또 다른 라즈베리파이2 이벤트_ 1000원의 행복!
파이 가격에 1000 원만 추가하면 라즈베리파이 멀티콤프 케이스가 똬!
4월 24일까지 판매라고하니 재고 소진되기 전에 얼른~ 구매하세요 ~
'ICbanQ 이벤트 > 온라인 이벤트' 카테고리의 다른 글
아이씨뱅큐 체험단 25기 모집)) Bluetooth 4.1 BLE 모듈 테스트 키트 (0) | 2015.05.20 |
---|---|
3D 펜 두들러 2.0 런칭이벤트! 사전예약 진행중~ 푸짐한 경품은 덤! (0) | 2015.04.23 |
아이씨뱅큐 라즈베리파이2 이벤트! (0) | 2015.04.20 |
아이씨뱅큐 ICbanQ 무상체험단 그룹 C 모집! :휴대폰 무선충전패드 (0) | 2015.04.16 |
2015년 럭키박스 이벤트! (0) | 2015.04.09 |
퀵 무상체험단 그룹 B 모집!: 오렌지파이 미니 (0) | 2015.03.27 |