설치

Apache 설치

설치
$ sudo apt-get install apache2
소유권 설정
$ sudo chown pi -R /var/www
자동 실행
$ sudo update-rc.d apache2 defaults


MySQL 설치

$ sudo apt-get install mysql-server mysql-client libmysqlclient-dev
외부접속 가능하게하기(주석처리하기)
$ sudo vi /etc/mysql/my.cnf
#bind-address = 127.0.0.1

PHP 설치

$ sudo apt-get install php5

phpMyAdmin 설치

$ sudo apt-get install phpmyadmin

온도계 만들기

온도계 센서도 사용하고 세그먼트도 사용해보았다. 이제 두개를 이용하여 온도계를 만들어보고자 했다. 간단하게 생각하고 있었는데 문제는 브레드보드와 연결하는 중에 생각났다. 아두이노에 두개의 세그먼트를 연결할 핀이 부족했다.

7-세그먼트 2개를 이용해 2자리 숫자 출력하기

먼저 생각한 것은 논리회로 시간에 하던 것 처럼 진리표를 그려서 간략화 시켜서 해야겠다는 생각을 하였다. 하지만 기본키트에는 AND, OR게이트를 도와줄 칩이 없어서 할 수 없었고, 인터넷을 찾아보던중 한 동영상을 찾았다.

아두이노 강좌 - 8강-2 7 세그먼트 컨트롤하기(2자리 컨트롤 하기)

여기서는 두개의 세그먼트 가지고 반복적으로 출력함으로써 눈속임을 이용하였다. 이 코드를 이용해 조금 더 바꾸어서 다음과 같이 작성하였다.

byte seven_seg_digits[10][7] = { 
  { 0,0,0,0,0,0,1 },  // = 0
  { 1,0,0,1,1,1,1 },  // = 1
  { 0,0,1,0,0,1,0 },  // = 2
  { 0,0,0,0,1,1,0 },  // = 3
  { 1,0,0,1,1,0,0 },  // = 4
  { 0,1,0,0,1,0,0 },  // = 5
  { 0,1,0,0,0,0,0 },  // = 6
  { 0,0,0,1,1,1,1 },  // = 7
  { 0,0,0,0,0,0,0 },  // = 8
  { 0,0,0,1,1,0,0 }   // = 9
 };

void setup() {
  int pinNum = 2;
  // segment init
  for (pinNum = 2; pinNum < 10; pinNum++) {
    pinMode(pinNum, OUTPUT);
  }

  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);

  digitalWrite(0, LOW);
  digitalWrite(1, LOW);
}

// 세그먼트에 한개의 숫자를 출력하는 함수
void sevenSegWrite(byte digit) {
  byte pin = 2;
  for (byte segCount = 0; segCount < 7; ++
    segCount) {
    digitalWrite(pin, seven_seg_digits[digit][segCount]);
    ++pin;
  }
}

// show number
// 0부터 99까지 출력하는 함수.
// 1번 세그먼트와 2번세그먼트를 반복적으로 
// 보여줌으로써 눈속임을 이용해 2자리 숫자를 나타낸다.
void showDigite(byte pNum) {
  int num1 = pNum / 10;
  int num2 = pNum % 10;
  int cnt = 100;

  if (num1 == 0) {
    while(0 < cnt--) {
      digitalWrite(0, HIGH);
      digitalWrite(1, LOW);
      sevenSegWrite(num2);
    }
  } else {
    while(0 < cnt--) {
      digitalWrite(0, LOW);
      digitalWrite(1, HIGH);
      sevenSegWrite(num1);
      delay(10);
      digitalWrite(0, HIGH);
      digitalWrite(1, LOW);
      sevenSegWrite(num2);
      delay(10);
    }
  }
}
void loop() {
  showDigite(80);
}

showDigite() 함수가 2자리 수를 출력하는 함수이다. 원리는 간단하다. 두개의 세그먼트가 같은 숫자를 보여주지만 한번은 왼쪽 세그먼트를 끄고, 또 한번은 오른쪽 세그먼트를 끄고 출력하여 그것을 반복하여 눈속임을 하는 것이다. 그것을 함수로 작성하려고하니 눈속임을 할 수 있을 정도 한번 보여줄때 100번 반복을 통해 두자리인것 마냥 보여준다.

디지털 온도계 만들기


위 사진은 회로도이다. (Fritzing 라는 프로그램으로 편하게 작성할수 있다. 링크)두 개의 세그먼트를  5V에 주지 않고 0번과 1번 핀에 주어진 것을 볼 수있다. 다음으로 온도값을 가져오면 된다. 이것은 센서를 이용하여 간단하게 알 수 있기때문에 어려움은 없었다. 센서를 연결하고 loop()에 다음과 같은 코드만 추가시켰다.

아두이노 온도 센서사용하기


int val = 0;

void loop() {
  int reading = analogRead(0);
  
  val = (reading * 500.0) / 1024.0;
  showDigite(val);
  
  digitalWrite(0, LOW);
  digitalWrite(1, LOW);
  delay(1000);
}

결과 영상

마지막으로

보완해야할 점이 매우 많았다. 선을 너무 많이 사용해서 복잡한것도 있었고, 눈속임을 통해 보여주는 것이라 반복문을 돌고있는 중에는 다른 작업을 할수 없는것도 문제점이었다. 나중에 제대로 디지털온도계를 만들 때는 세그먼트 두개에 간략화를 해서 사용하던지, 그냥 2digit segment 를 사용해야겠다. 회로 연결하는 것은 어렵지 않았으나 코드를 작성할때 생각처럼 간단하지 않았던 실험이었다.


전체코드

Temperature.c


"본 제품은 아이씨뱅큐 무상체험단 21기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다."

7-세그먼트(SR-1056A) 사용하기

세그먼트 사용법을 알아보고자 한다. 먼저 사용되는 세그먼트는 SR-1056A로 다른 세그먼트와 핀이 다를 수도 있다. 세그먼트에 관한 정보는 링크를 통해서 확인하기 바란다.


출처 링크


회로 구성



프로그램 코드

byte seven_seg_digits[10][7] = { 
  { 0,0,0,0,0,0,1 },  // = 0
  { 1,0,0,1,1,1,1 },  // = 1
  { 0,0,1,0,0,1,0 },  // = 2
  { 0,0,0,0,1,1,0 },  // = 3
  { 1,0,0,1,1,0,0 },  // = 4
  { 0,1,0,0,1,0,0 },  // = 5
  { 0,1,0,0,0,0,0 },  // = 6
  { 0,0,0,1,1,1,1 },  // = 7
  { 0,0,0,0,0,0,0 },  // = 8
  { 0,0,0,1,1,0,0 }   // = 9
 };

void setup() {
  int pinNum = 2;
  // segment init
  for(pinNum = 2; pinNum < 10; pinNum++) {
    pinMode(pinNum, OUTPUT);
  }
  writeDot(0); // start with the "dot" off
}

void writeDot(byte dot) {
  digitalWrite(9, dot);
}

void sevenSegWrite(byte digit) {
  byte pin = 2;
  for (byte segCount = 0; segCount < 7; ++segCount) {
    digitalWrite(pin, seven_seg_digits[digit][segCount]);
    ++pin;
  }
}

void loop() {
  for (byte count = 10; count > 0; --count) {
    delay(1000);
    sevenSegWrite(count - 1);
  }
  delay(4000);
}


실험결과

0부터 1까지 카운트하는 코드로, 아주 잘 출력되었다. 2자리 숫자를 표현하려고했는데 핀에 꼽을 선이 너무많아 다른 방법을 찾아보아야겠다.


"본 제품은 아이씨뱅큐 무상체험단 21기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다."

패키지 업데이트 및 업그레이드

$ sudo apt-get update
( 혹은 $ sudo apt-get upgrade )
$ sudo shutdown -r now

라즈베리 파이 설정

$ sudo raspi-config
1. Expand Filesystem : 메모리 공간 확장
2. Change User Password : 암호 변경
3. Enable Boot to Deaktop : 부팅시 X-윈도우 바로실행
4. Internationalisation Options : 지역 설정 - 'ko_KR.UTF-8 UTF-8', 기본 설정 추천
  4-1. Change Timezone : 시간 설정 - 'Seoul'
  4-2. Change Keyboard Layout : 키보드 레이아웃 변경, 기본 설정
5. Enable Camera : 카메라 활성화
6. Add to Rastrack : 라즈베리 파이 사용자 분포 체크
7. Overclock
8. Advanced Options
  8-1. Overscan : 디스플레이 맞도록 설정
  8-2. Hostname : 호스트네임 변경
  8-3. Memory Split : 메모리 할당 관련 설정
  8-4. SSH : SSH 사용 여부 설정
  8-5. Update : raspi-config 툴 업데이트
9. About raspi-config : raspi-config 툴 설명
$ sudo reboot

유/무선랜 설정

유선 정적/동적 IP 지정하기 링크

무선 설정 링크

(iptime 공유기에서 외부접속 링크)

SSH 접속하기

링크

XRDP 접속

설치(라즈베리 파이)
$ sudo apt-get install xrdp
접속(윈도우)
실행(wind + R) > 'mstsc' 입력(원격 데스크톱 연결) > ip 입력후 접속

삼바 접속

1. 설치
$ sudo apt-get install samba samba-common-bin
2. 유저 추가 및 패스워드 설정
$ sudo smbpasswd -a pi
3. 설정
$ sudo vi /etc/samba/smb.conf
  [pi]
  comment  = rpi samba server
  # 공유할 폴더 지정
  path = /home/pi
  # 사용 가능한 유저 지정
  valid user = pi
  # 쓰기 가능 여부
  writable = yes
  # 공유 폴더 목록 보여주기 여부
  browseable = yes
4. 재실행
$ sudo service samba restart


아두이노에서 날짜, 시간 출력하기.

먼저 아두이노에서 링크를 통해 Time 라이브러리는 받는다. 압축을 해제하고 각 폴더들을 아두이노 라이브러리폴더안에 넣는다. (그냥 압축 풀고 통째로 넣으면 헤더파일을 읽어오지 못한다.)



다운로드 주소
http://playground.arduino.cc/Code/Time
아두이노 라이브러리 경로
C:\Program Files (x86)\Arduino\libraries 혹은
C:\Users\사용자명\Documents\Arduino\libraries

라이브러리를 사용하는 2가지 방법이 있다. 먼저 아두이노 설치경로안에 libraries 폴더 안에 넣거나, Documents 폴더내의 아두이노 폴더에 넣는 방법이다. 다른 점은 크게 없고, 어떻게 화면에 나누어지는가의 차이인 것 같다. 아래 사진은 Documents 폴더 내의 아두이노 라이브러리에 넣은 화면이다.(초록색)


실행하기

코드는 라이브러리 설치 후에 '파일 > 예제'에 있는 TimeRTC 코드를 조금 수정한 것으로, RTC(Real Time Clock)칩에 저장된 값을 불러와서 출력한다.

#include <Time.h>  
#include <Wire.h>  
#include <DS1307RTC.h> 

void setup()  {
  Serial.begin(9600);
  setSyncProvider(RTC.get);  
  setTime(17,39,0,24,2,15);
  if(timeStatus()!= timeSet) 
     Serial.println("Unable to sync with the RTC");
  else
     Serial.println("RTC has set the system time");      
}

void loop()
{
   digitalClockDisplay();  
   delay(1000);
}

void digitalClockDisplay(){
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.print(" ");
  Serial.print(day());
  Serial.print(" ");
  Serial.print(month());
  Serial.print(" ");
  Serial.print(year()); 
  Serial.println(); 
}

void printDigits(int digits){
  Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}
시간 설정
setTime(hr, min, sec, day, month, year);
예 : setTime(17,39,0,24,2,15); // 2015.2.24 17:39:00

업로드하고 난 뒤에, 시리얼 모니터를 확인하면 다음과 같은 화면을 보여준다.



관련 문제점

에러 : 'BYTE' was not declared in this scope

에러 : must be const in order to be put into read-only section by means of '__attribute__((progmem))'


결론

먼저 실행하기 전에 컴파일단계에서 에러때문에 꽤나 답답하였다. 위 코드에서 문제점은 현재시각을 출력하지 않는다는 점이다. 앞으로 컴퓨터나 핸드폰의 시간을 받아와서 출력하도록 해봐야겠다. 혹은 인터넷의 시간을 가져오는 방법도 찾아봐야겠다.


참고사이트 링크링크, 링크


문제점

Time.h 을 사용하려는데 발생하는 에러.


해결방안

Time 라이브러리가 있는 디렉토리에서 DateStrings.cpp 파일에서 PROGMEM을 모두 지우고 실행하였더니 에러가 발생하지않았다. 아래 파일은 PROGMEM을 지운 파일이다.

DateStrings.cpp


문제점

아래 코드에서 발생하는 에러

  int  value = 1;
  Serial.print(value, BYTE);
'BYTE' was not declared in this scope

해결방안

  int  value = 1;
  Serial.write(value);

참고사이트 링크

아두이노 온도 센서 사용하기

온도 센서에는 여러 종류가 있다. LM34, LM35, LM36 등이 있으며 각각 온도를 구하는 공식이 약간 다르다. 

LM35 = (5.0 * reading * 100.0) / 1024.0;
TMP36 = (((reading * 5.0) / 1024.0) - 0.5) * 100

이번 실험에는 LM35 를 사용한다. 생김새는 아래 그림과 같이 뒷부분에 LM35라고 적혀있으며 반대쪽은 둥근형태이다. Output은 Analog In에 연결한다.


사진 출처

사진 출처


실험결과

따로 저항도 필요없고 쉽게 연결할 수 있어서 매우 편리하다. 코드는 아래와 같이 간단하며, 두번째 사진은 실행결과이다. 이 점에서 값을 구하는 식이 다르다는 점을 반드시 확인하여야한다. 아무것도 모르고 있을 땐, 센서가 고장난 줄 알고 한참을 헤매였다.




"본 제품은 아이씨뱅큐 무상체험단 21기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다."


참고 사이트 링크, 링크, 링크

아두이노 편집기(IDE) 폰트 변경하기

먼저 '파일 > 환경설정'을 선택하면, 아래 추가적인 환경 설정은 직접 편집할수 있다고 알려준다. 그 경로를 선택한다.


font 부분에 자신의 원하는 폰트를 입력한다.

나눔고딕일 경우 > NanumGothic


안녕하세요. DFRduino UNO R3 Beginner Kit 개봉기를 올려보려고합니다.

ICBanQ 21기 체험단을 지원했을 때 그냥 '아두이노 비기너 킷'이라고만 생각하고 지원하였습니다.

그런데 검은색으로 평소 생각했던 파랑색의 아두이노와 달라서 긴가민가했습니다.

찾아보니 이 제품은 아두이노의 호환보드로 DFTobot에서 만든 DFRduino라고 합니다.

(하지만 기존의 아두이노와 100% 호환되며, 성능과 사용법이 모두 같다고 하네요. 참고)

 

먼저 박스를 개봉하고 제품의 모습입니다.


받기전에 사진을 보았을 땐 아주 컸던것 같은데, 직접보니 손바닥 크기로 생각보다 작았습니다.


박스를 열고 난 모습입니다. 첫 느낌은 정리가 아주 잘되어있다고 느꼈습니다.

오른쪽에는 들어있는 제품들의 목록이 적혀있고, 왼쪽엔 각각의 부품, 센서들을 사용하는 방법들이 그려져있는 카드가 들어있습니다. (회로에 대해서는 많이 부족한 저에게 정말 필요한 것이라서 아주 마음에 들었습니다.)


사용설명서와 리스트를 걷어내면 아주 잘 정리된 부품들을 볼 수 있었습니다.


하나하나 빼면서 나열하는데 정말 차곡차곡 잘 정리되어있었고, 처음 시작하기에 알맞은 많은 부품들이 있었습니다.


DFRduino UNO R3의 모습입니다. 라즈베리파이보다 조금 더 작은 크기같고, 기존 아두이노랑 거의 똑같이 생겼습니다.


쉴드 장착후 컴퓨터에 연결하고 테스트 해보았습니다. LED 불 들어오는 것만으로도 엄청난 성취감을 느꼈습니다..

그리고 기존의 아두이노는 ON LED가 파랑색인데 디에프알두이노는 빨간색인 것 같습니다. 처음엔 에러가 난건지 계속 고민했는데 그냥 빨간색 인것 같습니다..(제것만 그런건가요..?)

(그리고 노랑색 LED가 불량이라서 좀 아쉬웠습니다..하나는 브레드보드에 꼽았을 때 치칙!하면서 아예 타버려서 놀랐습니다..)

 

비기너 킷을 개봉하면서 많은 구성물(스위치, 모터, 리모콘, 센서, 알람, 세그먼트, 팬 등)과 잘 정돈되고 각 하나하나 스티커가 부탁되어있음으로 처음하는 사람들에게 아주 괜찮은 것 같습니다. 또한 많은 응용을 할 수 있을것 같습니다.

결과적으로 아주 아주 만족스러운 제품인 것 같습니다.

 

"본 제품은 아이씨뱅큐 무상체험단 21기 활동의 일환으로 체험 제품을 제공받아 작성되었습니다."

 Model

 Raspberry PI B+

 OS

 RASPBIAN 3.12

라즈베리파이 모션센서 사용하기



PIR Sensor를 라즈베리파이와 연결하고 간단한 테스트를 한다.

준비물
라즈베리파이, 점퍼선 3개, PIR 센서

PIR 센서, 라즈베리파이와 연결하기

아래 사진과 같이 PIR 센서의 핀과 라즈베리파이의 GPIO(핀 확인)와 연결한다. 센서는 아래를 확인하거나, 커버(?)를 떼어보면 확인할 수 있다.

출처 링크

코딩

1. 파이썬 파일 생성.

$ vi pir.py

2. 코드 작성

2-1. 예제 1.

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
PIR_PIN = 7

GPIO.setup(PIR_PIN, GPIO.IN)

try:
	print “PIR Module Test (CTRL+C to exit)”
	time.sleep(2)
	print “Ready”
	
	while True:
		if GPIO.input(PIR_PIN):
			t = time.localtime()
			print “%d:%d:%d Motion Detected!" % (t.tm_hour, t.tm_min, t.tm_sec)
		time.sleep(0.05)

except KeyboardInterrupt:
	print “ Quit”
	GPIO.cleanup()

2-2. 예제 2.

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
PIR_PIN = 7
GPIO.setup(PIR_PIN, GPIO.IN)

def MOTION(PIR_PIN):
	print "Motion Detected!"

print "PIR Module Test(CTRL+C to exit)"
time.sleep(2)
print "Ready"

try:
	GPIO.add_event_detect(PIR_PIN, GPIO.RISING, callback=MOTION)
 	while 1:
 		time.sleep(100)

except KeyboardInterrupt:
	print "Quit"
 	GPIO.cleanup()

3. 실행

sudo python pir.py


 반응속도는 0.5초가량 늦게 나타는 것 같으며, 감지하는 능력은 손가락 하나 움직이는 것도 인식할만큼 적은 움직임에도 반응한다. 또한 바로 정면에 있는 것만 인식하지 않고 넓은 부분을 모두 감지하는 것 같다.


참고사이트 Link, Link, Link, Link



 Model

 Raspberry PI B+

 OS

 RASPBIAN 3.12

문제점

라즈베리파이에 FTP 서버를 구축하고 사용한다.

해결 방안

1. 라즈베이파이에 vsftpd를 설치한다.

sudo apt-get install vsftpd

2. 설정파일을 자신에 맞게 변경한다.

sudo vi /etc/vsftpd.conf

vsftpd_setting.txt

개인적으로 변경한 부분.
'anonymous_enable = YES' 이 부분 찾아서 주석 처리하고 아래 내용 추가
(아래 내용들은 파일에 다 주석처리되어있어서 찾아서 변경하는 것보다 그냥 넣어주는 것이 편하다.)

#anonymous_enable=YES

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022

#chroot_local_user=YES
#user_sub_token=$USER
#local_root=/home/$USER/ftp

force_dot_files=YES
anon_max_rate=0
local_max_rate=0
trans_chunk_size=0

dirmessage_enable=YES
xferlog_enable=YES

connect_from_port_20=YES
xferlog_std_format=YES

idle_session_timeout=600
data_connection_timeout=120

ftpd_banner=Welcome to MDSL FTP service.
listen=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
항목별 기능(추후 추가)
anonymous_enable : 익명사용자 접속 허용 여부

3. vsftpd 재시작

sudo service vsftpd restart

* 문제가 생길 때 vsftpd 제거후 다시 설치 방법

sudo apt-get remove --purge vsftpd
sudo apt-get install vsftpd

참고사이트 Link, LinkLink, Link, Link

 Model

 Raspberry PI B+

 OS

 RASPBIAN 3.12

문제점

라즈베리파이에서 vim에디터를 사용하려한다.

혹은, .vimrc 파일을 넣었을 때 아래와 같은 에러가 발생한다.(설정파일 변경시)

'sorry the command is not available in this version syntax on'

해결 방안

1. 아래 명령어를 통해 vim을 설치한다.

sudo apt-get install vim

2. 작업하기 편리하게 설정파일을 편집한다.

개인적인 .vimrc 파일(아래 파일 첨부)

let g:MultipleSearchMaxColors = 8

hi Search0 ctermbg=blue guibg=blue ctermfg=white guifg=white
hi Search1 ctermbg=green guibg=green ctermfg=black guifg=black
hi Search2 ctermbg=magenta guibg=magenta ctermfg=white guifg=white
hi Search3 ctermbg=cyan guibg=cyan ctermfg=black guifg=black
hi Search4 ctermbg=brown guibg=brown ctermfg=white guifg=white
hi Search5 ctermbg=gray guibg=gray ctermfg=black guifg=black
hi Search6 ctermbg=red guibg=red ctermfg=white guifg=white
hi Search7 ctermbg=yellow guibg=yellow ctermfg=black guifg=black

map <F1> :wq<cr>
map <F2> :wq<cr>
map <F3> :w<cr>
map <F4> :q<cr>

"=========================================================
"  filetype setting
"=========================================================
filetype plugin on
filetype indent on

"=========================================================
" C compile
"=========================================================
au FileType c map <F5> :w!<CR>:!gcc % -o %<<CR>
au FileType c map <F6> :!./%<<CR>

"=========================================================
" CPP compile
"=========================================================
au FileType cpp map <F5> :w!<CR>:!g++ -o %< %<CR>
au FileType cpp map <F6> :!./%<<CR>

"=========================================================
" JAVA compile
"=========================================================
au FileType java map <F5>:w!<CR> :!javac % <CR>
au FileType java map <F6> :!java %<<CR>

"=========================================================
" Python Mapping
"=========================================================
au FileType python map <F5> :!python &<CR>
au FileType python map <F6> :!python &<CR>

"=========================================================
" C compile with Network socket func
"=========================================================
map <F9> :w! <CR> :!gcc % -o %< -lsocket -lnsl <CR>
map <F10> :!./%<<CR>

"=========================================================
" C Debug
"=========================================================
map <F11> :w! <CR> :!gcc % -o %< -ggdb <CR>
map <F11> :w! <CR> :!gcc % -o %< -ggdb -lsocket -nsl <CR>

"=========================================================
"=========================================================
set number	"line number
set ai
set tabstop=4   "tab키 설정
syntax on	"구문강조 사용
set hlsearch
set background=dark	"하이라이팅
set ruler	"커서의 줄, 칸 위치 표시
set title
set ignorecase	"검색시 대소문자 무시
set hlsearch	"검색어 강조
set cindent	"C언어용 자동 들여쓰기
set smartindent	"스마트한 들여쓰기
set autoindent	"자동 들여쓰기
set showmode	"현재 모드 표기
set shiftwidth=4  "자동 들여쓰기할 때 여백
set showmatch   "괄호를 맞춰줌
set history=50		" vi 편집기록 기억갯수
"set visualbell "키는 잘못눌렀을 때 화면 프레시
set showcmd		" display incomplete commands
set incsearch	"키워드 검색시 점진적 검색
"colorscheme desert  " vi 색상 테마 설정
set bs=indent,eol,start	"백스페이스 사용

.vimrc



 Model

 Raspberry PI B+

 OS

 RASPBIAN 3.12

문제점

인터넷 접속을 위해 고정 ip설정과 유동 ip 설정을 하기 위한 방법.

해결 방안


1. interfaces 파일을 편집기를 통해 실행한다.

sudo vi /etc/network/interfaces

2. 유동IP로 되어있는 기본 설정을 주석처리하고 고정IP를 추가한다.

#iface lo inet loopback
#iface eth0 inet dhcp

auto eth0
iface eth0 inet static
address [ip 주소]
network [ip주소에 마지막을 0으로]
netmask [서브넷마스크]
gateway [기본 게이트웨이]
broadcast [기본DNS서버]

3. 저장한 뒤, 네트웍을 재시작한다.

/etc/init.d/networking restart 혹은 sudo /etc/init.d/networking restart

오류 사항

에러메세지
ifup failed to open statefile /run/network/ifstate permission denied
해결방안
위와 같은 에러 메시지가 발생할 경우 라즈베리파이를 재부팅하였더니 해결되었다.
에러메세지
Running /etc/init.d/networking restart is deprecated because it may not re-enable some interfaces
해결방안
$ sudo ifdown eth0
$ sudo ifup eth0

참고사이트 Link, Link

 Model

 Raspberry PI B+

 OS

 RASPBIAN 3.12

문제점

라즈베리파이에서 ssh를 이용해 원격 접속하기

해결 방안

1. Raspberry Pi Software Configuration 으로 이동하기.
터미널에 아래와 같이 입력.
sudo raspi-config
2. '8. Advanced Options' 선택.
3. 'A4 SSH' 선택 후 Enable 설정.

1. window
putty 등의 프로그램으로 라즈베리파이의 IP주소로 접속한다.
2. mac
터미널에서 자신의 서버주소와 사용자명에 맞게 아래와 같이 입력
ssh [USER]@[IP]
ssh pi@192.168.0.2


참고사이트 Link, Link


 Model

 Raspberry PI B+

 OS

 RASPBIAN 3.12

문제점

라즈베리 처음 설치 할때 us로 변경하지 못한 경우나, 처음 부팅하고 다른 키가 입력될 때.

해결방안

1. 맨드창에서 아래와 같이 입력. sudo vi /etc/default/keyboard 2. 아래 내용 중 XKBLAYOUT 값 us로 변경 # KEYBOARD CONFIGURATION FILE # Consult the keyboard(5) manual page. ... XKBLAYOUT="us" ...


+ Recent posts