라즈베리파이3에 USB로 키보드 마우스를 연결해서

사용하다보니 너무 불편하다.


그래서 블루투스 키보드를 사용하기로 했다. 

사용하다보니 편리하다.


찾아보니 Ctrl+Alt+T는 기본 터미널을 여는 단축키라서

마우스는 구지 없어도 될것 같다.


그런데 부팅할때마다 블루투스 연결을 새로 해줘야한다.

아.. 불편하다.


역시 불편한건 찾아보면 해결방안이 있다.


1. 현재 연결된 블루투스 키보드의 MAC 주소를 확인한다.



pi@byungwoo:~ $ hcitool con
Connections:
  > ACL D0:13:1E:15:XX:YY handle 11 state 1 lm MASTER AUTH ENCRYPT

pi@byungwoo:~ $ hcitool name D0:13:1E:15:XX:YY
i-rocks Bluetooth Keyboard


2. /etc/rc.local 파일에 부팅할때 실행할 명령어를 등록한다.

사용하는 블루투스 키보드의 MAC주소를 등록한다.



$ sudo vi /etc/rc.local

echo -e "connect D0:13:1E:15:XX:YY \nquit" | bluetoothctl

:x



3. 라즈베리파이3를 껐다가 다시 부팅해보면

블루투스 키보드가 자동으로 연결되어 사용할 수 있다.


반응형
조도 센서로 데이터를 가져오기 시작했다.

이제 이 데이터를 모아서 의미있는 처리를 해야겠다.


우선은 redis를 사용해서 마이크로 SDcard 말고 메모리를 사용하도록 해야겠다.

redis는 lite 버전을 사용한다.





$ sudo pip install redislite
$ sudo pip install redis-collections

redis 사용을 위해서 redislite 설치하고

이를 파이썬의 리스트처럼 사용하기 위해서 redis-collections도 설치해서

편리하게 사용하고자 한다.












..

반응형

코드는 가져다가 잘 실행을 했는데

각각의 의미가 궁금해졌다.


사진 : https://pimylifeup.com/raspberry-pi-light-sensor/




소스코드 : https://github.com/pimylifeup/Light_Sensor



#!/usr/local/bin/python

import RPi.GPIO as GPIO 
import time . # sleep 용도

GPIO.setmode(GPIO.BOARD)
# GPIO.BOARD 보드 상의 핀 번호 사용
# GPIO.BCM .  핀번호가 아니라 Broadcom SOC channel을 사용 GPIOXX의 XX 번호를 사용

# 7번 핀을 사용함
pin_to_circuit = 7

def rc_time (pin_to_circuit):
    count = 0

    #Output on the pin for
    GPIO.setup(pin_to_circuit, GPIO.OUT)   # 7번 핀을 입력으로 설정
    GPIO.output(pin_to_circuit, GPIO.LOW)  # 7번 핀의 디지털 출력 설정
    # 셋중에 아무거나 골라서 사용
    # 1, GPIO.HIGH, True
    # 0, GPIO.LOW, False
                                                      
    time.sleep(0.1)  # 0.1 sec sleep

    # 7번 핀을 input으로 변경
    GPIO.setup(pin_to_circuit, GPIO.IN)

    # 7번 핀으로부터 읽은 값이 HIGH가 될 때까지 count 수행
    # 그래서 실행해보면 센서 주변이 어두울 수록 카운트 값이 크다. 
    while (GPIO.input(pin_to_circuit) == GPIO.LOW):
        count += 1

    return count


# 스크립트가 인터럽트 될때 catch하고, 올바르게 cleanp
try:
    # 메인 루프
    while True:
        print rc_time(pin_to_circuit) . # 조도 센서의 값 출력
except KeyboardInterrupt:
    pass
finally:
    GPIO.cleanup() . # 사용했던 모든 포트에 대해서 정리


라즈베리파이3에 구성했던 회로를 연결하고

위의 스크립트를 실행시키면 ($ python light_sensor.py)

값을 가져온다.

실제 실행할때는 sleep을 0.1 -> 1초로 늦춰서 했다.


아직 점퍼를 구입하지 못해서

유선랜 케이블 조금 잘라서 임시로 사용했다.

GPIO에는 묶어서 연결했는데 쇼트날까봐 아슬아슬하다.

아무래도 MF (male, female)로 구성된 점퍼선을 사서 해야겠다.


아래는 정상동작하는 모습을 촬영한 화면이다.





반응형

기본 동작이므로 자료가 많아서 

맘에 드는 링크를 찾아서 시작했다.

https://pimylifeup.com/raspberry-pi-light-sensor/


재료는 아래와 같고 실제 구매는 엘레파츠에서 했다.

국내가 아무래도 배송이 빠르니까

- 조도 센서 : GL5537

- 캐패시터 : 1uF 50V 


빨간선: +

검정선: 접지(GND)

노란선: data


회로를 위와 같이 구성한 다음에

기본 코드를 가지고 조도 센서의 값을 가져온다.


본 작업에서는 git clone으로 코드를 받아서 아래와 같이 실행했다.


$ git clone https://github.com/pimylifeup/Light_Sensor/
$ cd Light_Sensor
$ sudo python light_sensor.py



실행해보면 매우 잘된다.

코드에 대한 이해 없이 돌리고나니 뭔가 부족하다.


코드에 대한 분석을 해봐야겠다.


반응형

Windows 7에서 작업함


RASPBIAN 이미지를 다운 받아서

Win32DiskManager를 이용해서 설치하는 방법이 있으나


Beginners should start with NOOBS라고

명시되어 있으니 시작하는 입장에서 NOOBS (New Out Of the Box)를 사용함


NOOBS zip파일을 받아서  

압축을 풀고 

마이크로 SDcard에 복사해주면 끝난다.

MICROSD-ADAPTER 사용함


마이크로 SDCard안에 따로 폴터를 만들어서 복사해주면 안된다.

아래의 파일 목록들이 SDcard에서 root 경로에 존재해야 한다.



복사한 후 마이크로 SDcard를 라즈베리파이에 꽂아서 전원을 연결한다.

알아서 실행된다. 8GB짜리를 사용했는데

32GB보다 큰것을 사용한다면 formatting 확인이 필요하다.


Micro SDcard adapter는 이전단계에서 사용했고,

이후 단계에 필요한 준비물은 아래와 같다.

https://www.raspberrypi.org/learning/software-guide/quickstart/



참고로 마우스와 키보드도 연결

우측 상단에 Wifi 확인 후 비밀번호 입력해서 

인터넷 연결이 되도록 한다.

안 보이면 좀 기다려야한다. 




그런 다음에 OS를 선택하고 좌측 상단의 'Install'을 클릭하면 나머지는

알아서 다운로드하여 설치가 진행된다.




부팅하면 아래같은 화면이 뜬다.

Wifi의 비밀번호는 다시 한번 입력해서 연결이 되도록 한다.


그림 : http://www.multibootpi.com/builds/quad-boot-raspbian-pixel-retropie-rasplex-kodi/





터미널을 열고

sudo apt-get update 명령을 수행해서 최신 버전 패키지 리스트를 갱신하고


sudo apt-get upgrade 명령을 수행해서 최신 버전으로 패키지 업그레이드를 수행한다.


생각보다 오래걸린다. 1시간은 더 걸린 것 같다.



반응형

구글링 해서 찾은 결과로는

대부분의 블로그에서 3번쨰 인자 값을 추가하라고 되어있다.


soup = BeautifulSoup(r.content, 'html.parser', from_encoding='utf-8')


허나 하나도 안된다. 

영어로 다시 검색해서 찾아보니..


검색 키워드 : python3 beautifulsoup encoding utf-8

찾았다..



#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
from requests import get

def test():
    url = 'http://xxxxxxxxxxxx'
    r = get(url)
    soup = BeautifulSoup(r.content.decode('euc-kr','replace'))
    print(soup)


replace, ignore를 사용하라는 네이버 블로그의 글이 

간접적으로 도움이 되었음.



반응형

설치하고 돌려 보면 에러 발생


ImportError: No module named 'jpype'


해결방안 - 직접 설치해서 해결함 (python3.5)


순서

1. https://pypi.python.org/pypi/JPype1

2. 최신 패키지 다운로드

3. 압축 풀고 

4. 해당 디렉토리로 이동

5. 설치 

   % python3.5 setup.py build 

   % python3.5 setup.py install


일단은 동작하는 것 같은데, 더 해보는 중.

반응형

그냥 한글을 인코딩해서 gmail 전송하면 한글이 전부 깨져버리는 문제가 발생

구글링해서 찾아보면 python2.x 코드가 있음


그래서 python3.5에서 만들어서 시험한 코드를 이곳에 기록함


#!/usr/bin/env python3
# -*- coding: utf-8 -*-

def send_with_gmail(body):
    import smtplib
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText

    gmail_user = 'my_id'  # 실제 google 로그인할 때 쓰는 ID
    gmail_pw = 'my_pw'    # 실제 google 로그인할 때 쓰는 Password

    from_addr = 'sender@gmail.com'   # 보내는 사람 주소
    to_addr = 'iam.byungwoo@gmail.com'      # 받는 사람 주소

    msg=MIMEMultipart('alternative')
    msg['From'] = from_addr
    msg['To'] = to_addr
    msg['Subject'] = 'Send email with Gmail'     # 제목
    msg.attach(MIMEText(body, 'plain', 'utf-8')) # 내용 인코딩

    ########################
    # https://www.google.com/settings/security/lesssecureapps
    # Make sure less_secure_apps select 'use'
    ########################
    try:
        server = smtplib.SMTP("smtp.gmail.com", 587)
        server.ehlo()
        server.starttls()
        server.login(gmail_user, gmail_pw)
        server.sendmail(from_addr, to_addr, msg.as_string())
        server.quit()
        print('successfully sent the mail')
    except BaseException as e:
        print("failed to send mail", str(e))

if __name__ == '__main__':
    send_msg = '''
    multi
    L
    I
    N
    E
    '''
    send_with_gmail(send_msg)



반응형

+ Recent posts