본문 바로가기

Hardware

라즈베리파이 #1

728x90


@라즈베리파이 LCD활용 일기예보@


준비 물품 : 

   Raspberry Pi 2 Model B

   3.2inch RPi LCD B (Waveshare)

   Lan Cable

   Power 5v 2A

   raspbian image (3.2inchLCD-150212.img) for Raspberry Pi 2 3.2inch RPi LCD B (Waveshare)


1. lightdm 서비스 중지 : 기본적으로 display manager를 LCD에 출력하지 않도록 서비스 중지

   #>apt-get install chkconfig

   #>chkconfig --level 3 lightdm off



2. 로그인시 시스템 정보 표출 : LCD콘솔 출력시 초기 시스템 정보를 표기하기

   /etc/rc.local 파일 마지막에 다음 내용 추가


echo "Debian GNU/Linux 7 \\l" > /etc/issue


echo "CPU: BCM2709 (ARMv7 Processor Quad Core)" >> /etc/issue


ORG_CLOCK=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq)

CLOCK=$(expr $ORG_CLOCK / 1000)

echo "CLOCK: $CLOCK Mhz" >> /etc/issue


MEM=$(cat /proc/meminfo | grep MemTotal | awk '{ print $2 }')

echo "MEM: $MEM kB" >> /etc/issue


ORG_SDCARD=$(/bin/df | grep rootfs | awk '{ print $4 }')

SDCARD_FREE=$(expr $ORG_SDCARD / 1024)

echo "SDCARD FREE: $SDCARD_FREE Mbyte" >> /etc/issue


`sleep 5`


IP=$(/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')

echo "IP: $IP" >> /etc/issue


exit 0


3. LCD 버튼을 활용한 시스템 종료http://www.wvshare.com/product/3.2inch-RPi-LCD-B.htm

 LCD 핀 넘버 확인

PIN NO.SYMBOLDESCRIPTION
1, 173.3VPower positive (3.3V power input)
2, 45VPower positive (5V power input)
3, 5, 7, 8, 10, 22NCNC
6, 9, 14, 20, 25GNDGround
11TP_IRQTouch Panel interrupt, low level while the Touch Panel detects touching
12KEY1Key
13RSTReset
15LCD_RSLCD instruction control, Instruction/Data Register selection
16KEY2Key
18KEY3Key
19LCD_SI / TP_SISPI data input of LCD/Touch Panel
21TP_SOSPI data output of Touch Panel
23LCD_SCK / TP_SCKSPI clock of LCD/Touch Panel
24LCD_CSLCD chip selection, low active
26TP_CSTouch Panel chip selection, low active


LCD쪽 핀을 확인하였으면 일단 KEY1을 사용하고자 하면 KRY1의 핀 넘버인 12를 기억하고 다음 라즈베리파이 2 GPIO 헤더를 참조 (이미지는 element14 자료 참조)

12번 핀 GPIO18 확인


18번 GPIO를 제어하면 버튼 입력을 받을수 있기에 다음은 GPIO제어를 위한 코드 작성


다음 사이트에서 python을 사용하여 손쉽게 GPIO를 제어하는 방법 제공

https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/robot/buttons_and_switches/


일반적으로 라즈베리안 OS 이미지를 사용하고 있다면 바로 다음 코드를 사용하여 GPIO 제어


파일 이름 : button.py

import RPi.GPIO as GPIO

import time

import os


GPIO.setmode(GPIO.BCM)


GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)


while True:

    input_state = GPIO.input(18)

    if input_state == False:

        print('Button Pressed')

        os.system("poweroff")

        time.sleep(0.2)


#>python button.py

를 실행하면 버튼 입력을 기다리고


해당 버튼을 클릭하면 Button Pressed 메시지와 함께 poweroff 커맨드가 수행되어 시스템이 종료된다


응용하여 /etc/rc.local 에

python button.py &

내용을 추가하면 어느때나 지정된 버튼으로 시스템을 종료 할 수도 있다


4. 일정시간 이후 화면 꺼짐 방지

/etc/kbd/config 파일의 BLANK_TIME 값을 0으로 변경 후 저장 재부팅


5. 커서 깜빡임 중지 (/etc/rc.local 에 추가하여 사용)

#>setterm -cursor off > /dev/tty1


5. LCD를 활용한 일기예보 기능

 http://blog.jacobean.net/?p=1016

 활용 예)











728x90