라즈베리파이 vncserver 설치

sudo apt-get install tightvncserver

vncserver 실행

vncserver

비밀번호 설정 -> 처음 설정시 1이 뜨는데 VNCViewer에서 접속할때 사용됨



접속할 곳(PC)에서 VNCViewer 설치

https://www.realvnc.com/download/viewer/


라즈베리파이 IP:번호 입력후 Connect

설정한 비밀번호 입력




정상적으로 접속이되면 라즈베리파이의 GUI화면이 뜸

해상도나 전체화면 옵션을 사용하고 싶을 경우 화면 가운데 상단의 메뉴를 이용하면 됨


이방법을 사용할 경우 라즈베리파이를 실행할 때마다 vncserver를 실행해야함








외부라이브러리까지 묶어서 export하기 위해선 FatJar라는 플러그인을 설치해야함


Help/Install New Software 클릭

Work With에 http://kurucz-grafika.de/fatjar 입력후 엔터치면 아래 그림과 같이 설치할 수 있는 게 뜸.

열심히 Next 누르면 설치 준비하는데 라즈베리파이3 기준 굉장히 오래걸림...

다음화면으로 넘어가면 동의하기 누르고 피니쉬를 누르면 설치를 함.(설치또한 오래걸림)



설치가 끝나고 File -> export 를 선택하고 other/Fat Jar Exporter 를 선택 후 Next



Export할 프로젝트 선택




Jar-Name : Export 된 jar파일을 어디에 어떤이름으로 생성할지 경로와 파일이름 지정

Main-Class : Main 문이 있는 클래스 지정



프로젝트에 포함할 외부라이브러리 항목 체크후 Finish 하면 jar파일을 만들어줌




명령 프롬프트, 터미널에서 jar 파일을 실행하고 싶을 경우 

java -jar jar파일이름 입력하면 실행이 됨.


라즈베리파이 usb포트 - 아두이노 TX RX 시리얼 연결 사진

usb to serial로 사용할 수 있는 모듈을 통해 아두이노의 TX, RX, 5V, GND에 연결

아두이노에 프로그램을 업로드할 때 컴퓨터와 TX,RX 통신을 하므로, 소스 업로드를 마치고 나서 연결해야 정상적으로 소스가 업로드 되니 주의



usb를 꽂은 뒤 터미널에서 'dmesg|tail' 명령어로 현재 연결된 USB포트의 이름을 알아내기




라즈베리파이(wiringPi 라이브러리 사용)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
#include<string.h>
#include<errno.h>
 
#include<wiringSerial.h>
 
int main(){
    int fd;
    if((fd=serialOpen("/dev/ttyUSB0",115200))<0){
        fprintf(stderr,"Unable to open serial device: %s\n", strerror(errno));
        return 1;
    }
    for(;;){
        putchar(serialGetchar(fd));
        fflush(stdout);
    }
}
 
cs

9~12줄

터미널에서 연결된 디바이스 정보를 serialOpen함수에 문자열로 입력, 2번째 매개변수는 serial 통신의 스피드를 입력.

(아두이노 쪽 통신속도와 일치해야 데이터를 정확히 받을 수 있음)

정상적으로 시리얼 접속이 안될경우 장치 이름이 동일한지 확인해야함

13~16줄

아두이노에서 보낸 데이터를 결과창에 출력

char serialGetchar(int id) : 연결된 시리얼 장치로부터 문자를 반환받는 함수

fflush() : 버퍼를 비우는 함수



아두이노

1
2
3
4
5
6
7
8
9
void setup(){  
  Serial.begin(115200);
 
void loop(){
  Serial.println("Hello World");
  delay(1000);
}
 
cs

프로그램이 실행될때 시리얼 연결을 하고 1초마다 Hello World 문자열을 전송하는 소스




컨버터를 이용하지 않고 아두이노 RX/TX와 라즈베리파이 RX/TX를 연결할 경우 라즈베리파이에서 구동되는 서비스 때문에 아래와 같은 내용이 주기적으로 뜨고, 아두이노가 메시지를 전송할 때 로그인 실패 문장이 추가적으로 들어감




라즈베리파이에서 일시적으로 멈추고 싶을 때는 터미널에 다음과 같이 입력하면 해당 서비스를 멈출 수 있음

systemctl stop serial-getty@ttyAMA0
systemctl disable serial-getty@ttyAMA0

부팅을 해도 해당 서비스를 막고 싶으면 아래와 같은 명령을 터미널에 입력하면됨.

systemctl mask serial-getty@ttyAMA0.service

(퍼미션 문제 뜨면 앞에 sudo를 붙이면 됨)


구글 검색 (라즈베리파이 systemctl ttyAMA0, sudo systemctl disable hciuart, 라즈베리파이3 uart pin, raspberry pi3 ttyama0 restore)

SG90 라즈베리파이 연결

 색

핀 

 오렌지

GPIO18 (wiringPi에서 1번핀)

 레드

5V

 브라운

GND



예제 파일

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
#include <stdio.h>
#include <wiringPi.h>
#include <stdlib.h>
#include <softPwm.h>
 
void lock();
void unLock();
 
int pin = 1;
 
int main(void)
{
  if(wiringPiSetup()==-1) exit(1);
  pinMode(pin ,OUTPUT);
  digitalWrite(pin,LOW);
  softPwmCreate(pin,0,200);
  printf("Test Servo motor\n");
    int i=0;
  while(1){
    scanf("%d",&i);
    if(i)
      lock();
    else
      unLock();
  }
  return 0;
}
void lock(){
  softPwmWrite(pin,14);
}
 
void unLock(){
  softPwmWrite(pin,22);
}
cs
 

결과 사진

0이나 1 입력시



라즈베리파이 vncserver 설치

sudo apt-get install tightvncserver

vncserver 실행

vncserver

비밀번호 설정 -> 처음 설정시 1이 뜨는데 VNCViewer에서 접속할때 사용됨



접속할 곳(PC)에서 VNCViewer 설치

https://www.realvnc.com/download/viewer/


라즈베리파이 IP:번호 입력후 Connect

설정한 비밀번호 입력



접속 완료


wiringPi : 라즈베리파이에서 C언어로 gpio사용과 프로그래밍을 할수있는 도구


http://wiringpi.com/download-and-install/


라즈비안 최신버전으로 업그레이드
sudo apt-get update
sudo apt-get upgrade

라즈비안에 Git 설치

sudo apt-get install git-core

Git으로 WiringPi 얻기

git clone git://git.drogon.net/wiringPi

WiringPi 폴더로 들어가서 버전 업데이트 하기

cd wiringPi
git pull origin

WiringPi의 build 스크립트 실행하기

cd wiringPi
./build

각 명령어 실행시 '권한이 없다'가 뜨면 앞에 sudo를 붙이면 됨



gpio 핀에 대한 정보 보기

gpio -v
gpio readall


라즈베리파이 핀

Usb to Serial Converter

2핀  (5V)

+5V

6핀  (GND)

GND

8핀  (TXD)

RXD

10핀 (RXD)

TXD

 



예제 소스

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
#include<string.h>
#include<errno.h>
 
#include<wiringSerial.h>
 
int main(){
    int fd;
    if((fd=serialOpen("/dev/ttyAMA0",115200))<0){
        fprintf(stderr,"Unable to open serial device: %s\n", strerror(errno));
        return 1;
    }
    for(;;){
        putchar(serialGetchar(fd));
        fflush(stdout);
    }
}
cs

 

출력 결과

입력 받은데로 문자 출력


(1)에서 나온 방법들 중 성공한 방법

https://www.abelectronics.co.uk/kb/article/1035/raspberry-pi-3-serial-port-usage



① 터미널에서 라즈베리파이 설정창 접속
sudo raspi-config


Expand FileSystem 선택

Advanced Options -> Serial -> Enable 선택


② 라즈베리파이 업데이트

sudo apt-get update
sudo apt-get upgrade

③ 라즈베리파이 /boot/config.txt 편집

sudo nano /boot/config.txt

맨 아랫줄에 dtoverlay=pi3-miniuart-bt 설정 -> 블루투스 사용안함 설정 같은것

저장후 재시작


④ /boot/cmdline.txt 편집

sudo nano /boot/cmdline.txt

다음과 같이 문서를 편집 : serial 연결시 115200으로 연결하면 됨

dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

연결 상황


연결후 아무 글씨도 안뜰경우 엔터를 치면 나옴 -> 연결이 된 것을 확인


여러가지 포럼을 찾아본 결과 라즈베리파이 3에서는 Serial(UART) 통신이 내장 Bluetooth 때문에 바뀐듯 하다.

기존에 사용하였던 ttyAMA0 을 블루투스를 끈 상태에서 사용하는 등 방식이 까다로워 졌고, 해외 포럼에선 속도도 많이 떨어졌다고 한다.


여러가지 방법들


https://www.abelectronics.co.uk/kb/article/1035/raspberry-pi-3-serial-port-usage

https://openenergymonitor.org/emon/node/12311

http://raspberrypi.stackexchange.com/questions/45570/how-do-i-make-serial-work-on-the-raspberry-pi3


+ Recent posts