보물창고/Programming2015.11.11 23:00





해결 GPIO.setmode(GPIO.BOARD) AttributeError: 'module' object has no attribute 'setmode'



raspberry pi에서 RFID-RC522를 이용한 카드인식 시스템을 만들고 있었는데요

setmode에러가나서 한참을 고생하다 구글링을 통해 해결했습니다






구글 검색어
GPIO.setmode(GPIO.BOARD) AttributeError: 'module' object has no attribute 'setmode'

참고한 내용





출력된 에러

 

$sudo python Dump.py
Traceback (most recent call last):
File "Dump.py", line 21, in <module>
MIFAREReader = MFRC522.MFRC522()
File "/home/imcloud/download/MFRC522-python/MFRC522.py", line 112, in __init__
GPIO.setmode(GPIO.BOARD)
AttributeError: 'module' object has no attribute 'setmode'






해결 방법
sudo easy_install -U RPi.GPIO 이 명령어를 실행해서 RPI.GPIO를 설치합니다


$sudo easy_install -U RPi.GPIO
Searching for RPi.GPIO
Reading http://pypi.python.org/simple/RPi.GPIO/
Best match: RPi.GPIO 0.5.11
Downloading https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.11.tar.gz#md5=9dc3dab6ce2b7ccb833a866efb392821
Processing RPi.GPIO-0.5.11.tar.gz
Running RPi.GPIO-0.5.11/setup.py -q bdist_egg --dist-dir /tmp/easy_install-IOIu1H/RPi.GPIO-0.5.11/egg-dist-tmp-yky5fe
zip_safe flag not set; analyzing archive contents...
Removing RPi.GPIO 0.1.0 from easy-install.pth file
Adding RPi.GPIO 0.5.11 to easy-install.pth file

Installed /usr/local/lib/python2.7/dist-packages/RPi.GPIO-0.5.11-py2.7-linux-armv6l.egg
Processing dependencies for RPi.GPIO

Finished processing dependencies for RPi.GPIO 






에러를 해결후 잘 동작함


$sudo python Read.py
Welcome to the MFRC522 data read example
Press Ctrl-C to stop.
Card detected
Card read UID: 23,101,85,197
Size: 8
Sector 8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Card detected
Card read UID: 23,101,85,197
Size: 8
Sector 8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Card detected
Card read UID: 23,101,85,197
Size: 8
Sector 8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Card detected
Card read UID: 23,101,85,197
Size: 8
Sector 8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Card detected
Card read UID: 23,101,85,197
Size: 8
Sector 8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Card detected
Card read UID: 23,101,85,197
Size: 8
Sector 8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Card detected
Card read UID: 23,101,85,197
Size: 8
Sector 8 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

^CCtrl+C captured, ending read.

 




신고





Posted by 파란물
보물창고/Programming2015.04.29 23:30





라즈베리파이 아두이노 무선 통신 rf315/433 사용하기 arduino raspberry pi



  • RF315 모듈을 이용해서 라즈베리파이와 아두이노 무선 통신을 테스트 했습니다
  • 제가 만들고 싶은것은 무선으로 집안 전등을 끄기위해 만들었습니다
    • 누워서 자기전에 아이폰으로 전원을 끄거나 불을 안끄고 잠들었을때 움직임이 없는걸 포착해서 전등을 끄는 구현을 해보려고 합니다
  • 거리 테스트 결과 안테나를 따로 달지 않은상태로 30평 집 끝에서 끝까지 모든 벽을 통과해서 잘 동작하는 것을 확인 했습니다


  • 기능적인 부분은 모두 구현된 상태이나 몇가지를 추가로 테스트 하려합니다
    • 배터리로 수신부를 구성하려 합니다
      • 아두이노에서 최소 전원을 사용하도록 코드 최적화를 구현하려 합니다
      • AA건전지 2개 내지 4개를 이용해 2달이상 사용할수 있도록 최적화를 해보려 합니다
      • 필요없는 LED는 떼어내 버리려고 합니다
    • 라즈베리 파이에 서버를 구동시켜 아이폰으로 접속해 동작하도록 구현 하려 합니다



  • 사용한 부품
    • 릴레이 relay
    • 아두이노 arduino pro mini
    • RF314 (RF433호환)
    • 라즈베리파이 raspberry B+






전체적으로 동작하는 동영상 입니다

컴퓨터는 raspberry에 ssh로 접속해 있는 상태이고 송신 프로그램을 실행시킵니다

그리고 동작하는 모습입니다



아두이노를 이용한 수신부 입니다

RF315를 이용했습니다


릴레이와 연결된 사진 입니다

릴레이 테스트 용으로는 노란색 LED를 사용했습니다

relay에 신호가 가면 LED가 켜집니다


라즈베리파이와 연결된 RF314 송신부 입니다

전원이 들어오고 있는것을 확인하기 위해 녹색 LED를 사용 했습니다


라즈베리 파이와의 연결 구성 입니다




신고





Posted by 파란물
보물창고/Programming2015.04.24 23:30





라즈베리파이와 아두이노 RF315/433 송수신 코드 정리 raspberry arduino



이 이미지에 있는 코드는 제가 실제 사용한 코드 그대로 입니다

아래 참고한 블로그 내용을 수정안하고 그대로 사용 했습니다









신고





Posted by 파란물






rsync를 이용 라즈베리파이에 USB 외장하드 ROOT 마운트 (Raspberry Pi)



  •  라즈베리파이는 SD카드를 저상소로 사용합니다
  •  SD카드 특성상 일정회수 이상 write하면 수명을 다하는데요 서버로 오래 운영하기에는 불안함 느낌이 들어 외장하드를 root로 사용하는 방법을 찾아 봤습니다
  •  리눅스 시스템에 대해 아는게 없어 애를 먹고있는 중에 [횡수] 라즈베리 파이.. HDD로 루트 마운트 성공 글이 있어 참고해서 시도해 봤습니다
  •  위 글을 작성하신분은 시스템을 잘 아는 분이셔서 그런지 간단한 명령어들로 적어주셔서 제가 실제 적용하는데 시간이 좀걸렸습니다
  •  이 블로그에 작성한 내용은 참고한 글에 있는 명령어를 포함하고 제가 추가한 명령을포함해 익숙하지 않은 분들도 도움이 될 수 있도록 정리를 해봤습니다


  • 부팅은 SD카드로하고 저장소는 마운트된 외장하드를 이용하게 됩니다


  • 구성 환경
    • 500G 외장하드 (외부 전원 사용)
    • SD카드 8G
    • 라즈베리파이 B





  1. 라즈베리파이가 USB 외장하드를 인식했다는 조건으로 시작합니다
    1. 대부분 자동으로 인식합니다


  2. root 계정으로 로그인


  3. fdisk를 이용해서 디스크 파시션 생성 (파티션 구분만 합니다. 포맷은 이후에 진행)
    1. 저는 파티션을 2개로 나눴습니다. 약 5G swap영역, 나머지 모두 ext4영역
    2. $ fdisk /dev/sda 명령 설정된 파티션을 삭제

      root@raspberrypi:/# fdisk /dev/sda

      Command (m for help): d                        <---- 삭제 명령

      Partition number (1-4): 1


      Command (m for help): d

      Selected partition 2


      Command (m for help): d

      No partition is defined yet!                        <---- 다 삭제 되었다는 안내


      Command (m for help): 




  4. 디스크 파티션을 구분 (용량을 설정함)

    위 명령에서 이어 계속 fdisk를 실행하고 있는 상태 입니다

    Command (m for help): 
    n                        <---- 새 파티션 생성 명령
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p                        <---- p타입으로 명령
    Partition number (1-4, default 1): 1
    First sector (2048-976773167, default 2048): 2048                        <---- 파티션 시작값을 적음
    Last sector, +sectors or +size{K,M,G} (2048-976773167, default 976773167): 9767731                        <---- 피티션 끝 값을 적음

    시작 값과 끝 값으로 용량이 정해 집니다

    Command (m for help): n                        <---- 다시한번 새로운 파티션을 만드는 명령
    Partition type:
       p   primary (1 primary, 0 extended, 3 free)
       e   extended
    Select (default p): p                        <---- p타입으로 명령
    Partition number (1-4, default 2): 2
    First sector (9767732-976773167, default 9767732): 9767732                        <---- 두번째 파티션 시작 위치
    Last sector, +sectors or +size{K,M,G} (9767732-976773167, default 976773167): 976773167                        <---- 두번째 파티션 끝나는 위치

    Command (m for help): w                        <---- 저장 (fdisk종료됨)
    The partition table has been altered!

    Calling ioctl() to re-read partition table.

    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    The kernel still uses the old table. The new table will be used at
    the next reboot or after you run partprobe(8) or kpartx(8)
    Syncing disks.

    root@raspberrypi:/# 




  5. 구분된 파티션을 확인
    1. root@raspberrypi:/# fdisk /dev/sda
      sda   sda1  sda2        <--------- 이렇게 3개가 생겼음
      sda는 라즈베리파이가 인식한 외장하드
      sda1는 2048부터 9767731까지 설정한 부분
      sda2는 9767732 부터 976773767까지 설정한 부분

    2. $fdisk /dev/sda를 실행해서 p명령을 하면 내부적으로 나눠진 파티션 sda1, sda2를 볼수 있습니다

      root@raspberrypi:/# fdisk /dev/sda

      Command (m for help): p                        <---- 현재 디스크 정보 출력

      Disk /dev/sda: 500.1 GB, 500107862016 bytes
      255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk identifier: 0xa4b57300

         Device Boot      Start         End      Blocks   Id  System
      /dev/sda1            2048     9767731     4882842   83  Linux                        <---- 디스크의 첫번째 파티션
      /dev/sda2         9767732   976773167   483502718   83  Linux                        <---- 디스크의 두번째 파티션

      Command (m for help): 




  6. 파티션 포맷 
    1. swap로 포맷
      $ mkswap /dev/sda1 

      root@raspberrypi:/# mkswap /dev/sda1

      Setting up swapspace version 1, size = 4882836 KiB

      no label, UUID=4fd3b952-e23e-40eb-8ecc-66cea9a23c14


    2. ext4로 포맷
      $ mkfs.ext4 /dev/sda2

      root@raspberrypi:/# mkfs.ext4 /dev/sda2

      mke2fs 1.42.5 (29-Jul-2012)

      Filesystem label=

      OS type: Linux

      Block size=4096 (log=2)

      Fragment size=4096 (log=2)

      Stride=0 blocks, Stripe width=0 blocks

      30220288 inodes, 120875679 blocks

      6043783 blocks (5.00%) reserved for the super user

      First data block=0

      Maximum filesystem blocks=0

      3689 block groups

      32768 blocks per group, 32768 fragments per group

      8192 inodes per group

      Superblock backups stored on blocks:

              32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

              4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,

              102400000


      Allocating group tables: done

      Writing inode tables: done

      Creating journal (32768 blocks): done

      Writing superblocks and filesystem accounting information: done


      root@raspberrypi:/#




  7. rsync를 이용해서 새로 만들어진 파티션에 모든 파일을 옮김

    1. $ mkdir /newfs 
      $ mount /dev/sda2 /newfs
      아래 모든 명령을 실행

      rsync -av bin /newfs

      rsync -av dev /newfs

      rsync -av home /newfs

      rsync -av lost+found /newfs

      rsync -av mnt /newfs

      rsync -av opt /newfs

      rsync -av root /newfs

      rsync -av sbin /newfs

      rsync -av srv /newfs

      rsync -av tmp /newfs

      rsync -av var /newfs

      rsync -av boot /newfs

      rsync -av etc /newfs

      rsync -av lib /newfs

      rsync -av media /newfs

      rsync -av proc /newfs

      rsync -av run /newfs

      rsync -av selinux /newfs

      rsync -av sys /newfs                        <---- 해야되는지 확실하게 모름

      rsync -av usr /newfs

       


    2. 추가 rsync 설명
      -a 는 archive mode (심볼릭 링크, 속성, 퍼미션, 소유권 등 보존)
      -v 진행상황을 상세히 보여줌


  8. 12시간걸림
    옮기는데 오류가 많이나는데 왜 나는지 파악은 안되었습니다 그로인해 시간이 오래 걸리는 것으로 보입니다

  9. 부팅 설정 변경

    1. vi /boot/cmdline.txt

      dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 elevator=deadline rootwait

      처럼 root=/dev/sda2 로 하면 끝 

    2. 원본

      dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait 




  10. swap 설정
    vi /etc/fstab에 아래 내용 추가

    /dev/sda1       swap                    swap    defaults        0 0 




  11. 모든 설정을 마치고 재부팅

  12. 용량 확인을 위해 df -h로 확인




리눅스의 전체적인 환경을 모르고 설정 내용만 따라해서 이게 제대로 된것인지에 대한 판단은 안서있는 상태입니다

이 상태로 계속 사용해 보면서 문제가 있는지는지 파악해 봐야될거 같습니다






참고


신고





Posted by 파란물

티스토리 툴바