2020년 3월 29일 일요일

라즈베리파이 병렬 컴퓨터 - 구성 및 설치

1. 하드웨어 구성
구성도 <그림.1>
구성품

  • 라즈베리 파이 4EA
  • 케이스 및 쿨러 4EA
  • 전원 케이블 4EA
  • USB 허브 유전원 
  • MicroSD CARD 4EA

2. 기본 설정(라즈베리파이는 설치가 완료 된 상태) - $ sudo raspi-config

  • hostname 변경
hostname 변경 <그림.2>

hostname 변경 <그림.3>

hostname 변경 <그림.4>
  • wifi
wifi 설정 <그림.5>

wifi 설정 <그림.6>
  • locale 설정

locale 설정 <그림.7>

locale 설정 <그림.8>

locale 설정 <그림.9>

locale 설정 <그림.10>

locale 설정 <그림.11>
  • ssh 설정
ssh 설정 <그림.12>

ssh 설정 <그림.13>

ssh 설정 <그림.13>

3. 소프트웨어 설치
  • /etc/apt/source.list 변경
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
to 
deb http://ftp.kaist.ac.kr/raspbian/raspbian/ buster main contrib non-free rpi
  • sudo apt-get update
  • sudo apt-get upgrade
  • sudo apt-get install python3-numpy python3-scipy python3-matplotlib python3-ipython python3-sklearn python3-pandas python3-mpi4py nmap
여기까지 진행 한 후에 win32diskimager를 이용해서 img 생성. 나머지 sdcard에는 만들어 놓은 img로 쓰기작업.

4. 테스트

  • 각 장비별로 hostsname 변경(그림2 ~ 3 참고)
  • ssh-keygetn 키 교환 (https://webdir.tistory.com/200 참고)
  • 이후 부터는 01번 호스트에 접속해서 실행
$ sudo nmap -sn 1929.168.0.*
  • nmap 결과로 mpihosts 파일 생성

$ cat mpihosts
192.168.0.20
192.168.0.23
192.168.0.24
192.168.0.19

  • mpi 테스트

$ mpirun -hostfile mpihosts -np -4 hostname
mpi01
mpi03
mpi02
mpi04

hostname 말고 다른 명령어도 가능

2020년 3월 11일 수요일

Mongodb - 1. 설치

ubuntu 18.04 기준으로 설명

$ cat /etc/issue.net
Ubuntu 18.04.4 LTS

1. gpk 등록

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 4B7C549A058F8B6B

Executing: /tmp/apt-key-gpghome.qUP0BHP71y/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv 4B7C549A058F8B6B
gpg: key 4B7C549A058F8B6B: public key "MongoDB 4.2 Release Signing Key " imported
gpg: Total number processed: 1
gpg:               imported: 1

# source list 추가

$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb.list

2. 설치

$ sudo apt update
$ sudo apt install mongodb-org

# 4.2.1 버전 설치 방법
sudo apt install mongodb-org=4.2.1 mongodb-org-server=4.2.1 mongodb-org-shell=4.2.1 mongodb-org-mongos=4.2.1 mongodb-org-tools=4.2.1


3. mongodb service  관리

# 부팅시 실행(disable - 삭제)

$ sudo systemctl enable mongod
$ sudo systemctl start mongod
$ sudo systemctl stop mongod
$ sudo systemctl restart mongod
$ sudo systemctl status mongod
 ● mongod.service - MongoDB Database Server  
   Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)  
   Active: failed (Result: exit-code) since Mon 2020-03-09 21:40:37 KST; 30s ago    
    Docs: https://docs.mongodb.org/manual
Process: 12286 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=62)  Main PID: 12286 (code=exited, status=62)

 # status 확인 시 에러가 발생했다. 원인은 mongodb-org를 설치한게 아니고 mongodb-server 패키지를 설치했다가 삭제 했는데 이전 mongodb 데이터가 남아있어서 에러가 발생

$ sudo mv /var/lib/mongodb/ /var/lib/mongodb_bak/
$ sudo mkdir /var/lib/mongodb
$ sudo chmod 700 /var/lib/mongodb
$ sudo chown mongodb.daemon /var/lib/mongodb
$ sudo systemctl restart mongod
$ sudo systemctl status mongod
● mongod.service - MongoDB Database Server
   Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2020-03-09 21:52:24 KST; 4s ago
     Docs: https://docs.mongodb.org/manual
 Main PID: 12693 (mongod)
   CGroup: /system.slice/mongod.service
           └─12693 /usr/bin/mongod --config /etc/mongod.conf

$ mongod --version
db version v4.2.3
git version: 6874650b362138df74be53d366bbefc321ea32d4
OpenSSL version: OpenSSL 1.1.1  11 Sep 2018
allocator: tcmalloc
modules: none
build environment:
    distmod: ubuntu1804
    distarch: x86_64
    target_arch: x86_64

2020년 3월 9일 월요일

Rc Car - 1

이전부터 진행하고 싶었던 라즈베리파이 Rc Car를 만들어 보았다.

1. 부품
  • 라즈베리파이3, 휴대용 배터리, L298N, RC 자동차 키트, 카메라
  • 휴대용 배터리는 출력이 2A는 재부팅이 되어서 DC 5V/3A 용량 구매
  • RC 자동차 키트, L298N 및 기타
2. RcCar 구성



RcCar 모형 <그림.1>



안드로이드 휴대폰 <그림.2>
3. 기본구성
  • 라즈베리파이 : python twisted socket server, gpio(서보, DC모터 제어), motion streaming
  • 안드로이드 : xamarin, 자이로(서보 모터), socket client
  • wifi를 이용한 socket 통신
4. 회로도
  • 라즈베리 파이 - gpio BCM 0 : ENA, 5 : IN1, 6 : ENB 연결
  • 라즈베리 파이 - gpio Physical 2, 6, 12 : +, -, 서보모터 신호 연결
gpio <그림.3>
  • L298N - 배터리에서 +, - (라즈베리파이 Physical 39번과 같이 연결)
  • IN1, IN2는 모터에 연결



L298N <그림.4>
4. 프로그램 설명
  • <그림 2>의 휴대폰을 좌우로 움직이면 자이로 값을 받아 서보모터로 X, Y 축 신호 전송 
  • <그림 2>의 F, R, STOP 버튼은 전, 후, 정지 신호 전송
  • 소스 (https://github.com/daniel-isj/RcCar.git)
5. 기타
  • 부품 및 참조 : 메카솔루션
  • dc 모터 및 톱니바퀴 연결 부분이 부실함(보완 필요)
  • 추가 사항 : motion streaming 및 xamarin 소스 업로드