top of page
  • curyustory

Arduino 004 네트워크&통신

최종 수정일: 2021년 7월 10일


++실습 예제 #10 : 초음파센서로 거리 측정하기

CODE

int echoPin = 12; int trigPin = 13; //초음파 센서의 핀번호를 설정한다. void setup(){ Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); // trig를 출력모드로 설정, echo를 입력모드로 설정 } void loop(){ float duration, distance; digitalWrite(trigPin, HIGH); delay(10); digitalWrite(trigPin, LOW); // 초음파를 보낸다. 다 보내면 echo가 HIGH 상태로 대기하게 된다.

duration = pulseIn(echoPin, HIGH); // echoPin 이 HIGH를 유지한 시간을 저장 한다. distance = ((float)(340 * duration) / 10000) / 2; // HIGH 였을 때 시간(초음파가 보냈다가 다시 들어온 시간)을가지고 거리를 계산 한다. Serial.print(distance); Serial.println("cm"); // 수정한 값을 출력 delay(500); }

++실습 예제 #10-1 : RGB LED 와 초음파센서 (예제#9-2 응용)

++실습 예제 #10-2 : RGB LED 여러가지 색깔 표현하기 (for문)

++실습 예제 응용 블루투스 통신

시리얼 통신으로 1인풋 신호를 받으면 LED가 점멸합니다. 예제 앱을 설치 하지못해서 범용앱을 검색해서 사용하여 테스트 하였습니다.

CODE

#include <SoftwareSerial.h> // 블루투스 통신을 위한 SoftwareSerial 라이브러리를 불러온다.

SoftwareSerial BTSerial(2, 3); // SoftwareSerial(RX, TX)

byte buffer[1024]; // 데이터를 수신 받을 버퍼

int bufferPosition; // 버퍼에 데이타를 저장할 때 기록할 위치

boolean temp = 0;

void setup(){

BTSerial.begin(9600);

Serial.begin(9600);

pinMode(13, OUTPUT);

bufferPosition = 0; // 버퍼 위치 초기화

}

void loop(){

if (BTSerial.available()){ // 블루투스로 데이터 수신

byte data = BTSerial.read(); // 수신 받은 데이터 저장

Serial.write(data); // 수신된 데이터 시리얼 모니터로 출력

buffer[bufferPosition++] = data; // 수신 받은 데이터를 버퍼에 저장

if(data == '1'){ // 블루투스를 통해 '1' 이 들어오면

if(temp == 0){ // LED가 꺼있을 경우 LED를 켭니다.

digitalWrite(13, HIGH);

temp = 1;

}else{ // LED가 켜져있을 경우 LED를 끕니다.

digitalWrite(13, LOW);

temp = 0;

}

}

if(data == '\n'){ // 문자열 종료 표시

buffer[bufferPosition] = '\0';

bufferPosition = 0;

}

}

}

++다양한 블루투스 통신 예제들++

https://www.kocoafab.cc 에 다양한 예제들이 있다.

프로젝트 / 스터디 사이트

instructables.com http://hackaday.com/ circuits.io arduino.cc io.adafruit.com sparkfun.com kocoafab.cc

부품구매처

부품(온라인) eleparts.co.kr devicemart.co.kr www.mechasolution.com http://artrobot.co.kr/ http://www.digikey.kr/ vctec.co.kr/

부품(오프라인) ds-parts.co.kr http://robot.co.kr/

fab academy 한글자막 넣으심

6강 part1 https://www.youtube.com/watch?v=Dh95e7cXXd4

6강 part2 https://www.youtube.com/watch?v=256OzVSktZE

7강 part1 https://www.youtube.com/watch?v=9LPY1it2lqA

7강 part2 https://www.youtube.com/watch?v=eb7ljBsyBm4

통신

Serial은 연속적으로 직렬로 주고 받는 통신이다.

신호가 가거나 오거나 한번에 한번씩 보낸다.

Parallel은 여러가지 신호를 동시에 보낼 수 있는 병렬방식이다

빠른 통신이 필요할때는 병렬방식이 유리하다.

시리얼 통신은 모스 부호와 비슷해서 중간에 신호를 듣게 되면 어디가 시작점이고 끝점인지 모를때 신호를 파악 할 수가 없다. 시작과 끝을 표시할 시리얼 클럭이 필요하다. 일렬로 정렬되 2진수 신호를 어느 타이밍에 읽을 것이가를 정하는 것이 baudrate이다.

++시리얼 통신_보(baud) 레이트와 비트레이트의 관계+자료메모

보 레이트는 초당 의미있는 정보의 전송갯수를 의미한다. 반면 비트레이트는 초당 전송되는 비트수를 의미한다. 예를 들어 9600 bps의 비트레이트로 아스키코드(1 byte = 8 bit)정보를 전송하는 경우 9600 bit / 8 bit = 1200 즉, 1200개의 아스키 코드를 표현 할 수 있는 정보 단위를 전송 할 수 있다. 따라서 9600 bps는 1200 baud rate라고 할 수 있다. 반면에 9600 bps의 전송속도로 bit 를 전송하는 경우에는 보레이트가 비트레이트와 같은 9600 baud rate가 된다.

보 레이트 - 초당 의미있는 정보의 전송량

비트레이트 - 초당 비트 전송량

출처: http://goodjian.tistory.com/entry/보baud-레이트와-비트레이트의-관계 [Slow walking man]

시얼얼 통신에 대해 좀더 알아보자

https://m.blog.naver.com/PostView.nhn?blogId=yuyyulee&logNo=220301424499&proxyReferer=https:%2F%2Fwww.google.co.kr%2F

다이렉트로 아두이노끼리 연결하여 통신 할 수 있다.

UART의 정의 Universal asynchronous receiver/transmitter

https://ko.wikipedia.org/wiki/UART

통신방식에 따라 1:N 1대 다수 N:N 다수대 다수 등 여러가지로 나뉜다

SPI

프로세싱 & 아두이노 https://processing.org/download/

프로세싱을 이용하여 아두이노와 인터랙션하는 컴퓨터그래픽 이미지를 만들수 있다

조회수 57회댓글 0개

최근 게시물

전체 보기
bottom of page