아두이노 프로그래밍 Lecture #01 2018. 9. 20..

Slides:



Advertisements
Similar presentations
Dept. Computer Engineering DBLAB 정보처리개론 담당 교수 : 김정석 2009 년도 1 학기.
Advertisements

Youn-Hee Han, In-Seok Kang {yhhan, Laboratory of Intelligent Networks Advanced Technology Research Center Korea University of Technology.
1 모터 (Motors) 김원웅. 2 모터 (Motor) □ 모터 응용분야 □ Desktop PC 의 DVD ROM, HDD □ 러닝머신, 전동드릴, 선풍기 등 전력에 의해서 뭔가가 움직이 는 분야에는 거의 모두 모터가 사용 □ 우리가 배울 모터의.
컴퓨터의 기본 개념. 목 차목 차 컴퓨터의 정의 컴퓨터의 세대별 분류 컴퓨터의 분류 컴퓨터의 종류 컴퓨터의 구성 컴퓨터의 동작원리 컴퓨터의 외양 컴퓨터의 내부 구조 단위.
마이크로 컨트롤러 Microcontroller.
마이크로프로세서설계 - 3 ATmega128 마이크로컨트롤러의 특징 LED 실습 1
아두이노 활용 SW코딩 시작하기 아두이노 소개 개발툴 다운로드 USB 드라이버 설치하기 개발툴 실행하기
소프트웨어와 운영체제.
임베디드 시스템 개론 8. 임베디드 시스템 개발 환경 8주차 강의 자료 Embedded System Lab.
One Step Closer - AVR ATMEGA128 -
PIC는 우리의 친구 한국정보통신대학교 디지털미디어연구소.
PIC는 우리의 친구 한국정보통신대학교 디지털미디어연구소.
AVR 5관절 로봇 암 활용 예제.
Smart IoT 설계 시스템 Lecture 07. 센서와 액츄에이터 실습.
USER’S MANUAL 모델명: CCR-201 코드시스템(주)
아두이노 프로그래밍 1일차 – Part2 아두이노 사양 강사: 김영준 목원대학교 겸임교수.
컬러 LED바 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 컬러 LED바 이해 및 프로그램 실습 응용 작품 만들기.
제6장 FUSING.
제어기술 소개 목표 : 제어기의 종류, 제어 방식 등을 살펴본다. 주요내용 제어기의 종류 제어방식 : 시퀀스, 피드백, 등.
10장 주변장치 (PIO) Slide 1 (of 28).
ATmega 128 MCU를 이용한 MP3 보드 제작 김태호 김소정.
Arduino와 Led를 이용하여 Wearable Display 만들기
임베디드 하드웨어 Lecture #6.
FUSING.
임베디드 프로그래밍 Lecture #
자동제어 실험(2) 라인트레이서 제어.
임베디드 리눅스 시스템의 기본 개념 강의 목표 내용 임베디드 리눅스 시스템의 기본 개념과 주제 제시 1. 임베디드 시스템
DSP와 TMS320F28x의 이해.
Introduce to ATmega128 & Codevision
TinyOS 사용법 및 nesC Programming
1. 아두이노란 무엇인가? - 스마트 폰으로 제어하는 아두이노 -.
12. 아두이노와 센서를 이용한 제어 - 스마트 폰으로 제어하는 아두이노 -.
전원설비 포인트연결어댑터 교육자료 주식회사 필 트 론.
컴퓨터 구조.
Arduino uno의 Hardware 구성부품의 종류와 그 용도.
Embedded System Porting (2)
아두이노와 Node.js를 이용한 IoT 프로젝트
UNIT 02 Microprocessor 로봇 SW 교육원 조용수.
고등용 LED를 이용한 재미있는 표현.
제 3 장 아두이노 무조건 따라하기 - 스마트 폰으로 제어하는 아두이노 -.
아두이노 기초 제 1 주 강의 소개, 환경 설정.
AVR Studio 소개 1. AVR Studio의 다운로드 - AVR Studio 관련 홈페이지 -
사물인터넷(IoT) 융합실습을 위한 교육용 실습장비
ATmega128의 구조 및 TOOL의 이해 Robotics_LAB 발표자 : 유 홍 선.
캡스톤 물리 음성 인식을 통한 무드 등 지금은 6시 55분 조.
아두이노 프로그래밍 2일차 – Part2 PSD 거리센서 강사: 김영준 목원대학교 겸임교수.
아두이노 프로그래밍 2일차 – Part2 PSD 거리센서 강사: 김영준 목원대학교 겸임교수
NodeMCU를 이용한 SmartPot 제작
9. 아두이노를 이용한 FND 제어 - 스마트 폰으로 제어하는 아두이노 -.
홈 네트워크 시뮬레이션 정 찬 번 석 성 환.
아두이노 프로그래밍 1일차 – Part4 값출력 및 디지털 읽기 강사: 김영준 목원대학교 겸임교수
02강 아두이노 LED 기본 개념 LED Example1 LED Example2 LED Example3
8. 아두이노를 이용한 아날로그 제어 - 스마트 폰으로 제어하는 아두이노 -.
4. 아두이노로 LED 제어하기 - 스마트 폰으로 제어하는 아두이노 -.
센서값 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
ST모드에서 데이터 읽기 및 제어하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
유비쿼터스 계획보고서 Smart bicycle 1조 – 강성민 김수용 이승철 최병수 최소라.
홈네트워크 시뮬레이션 중간 보고서 정 찬 번 석 성 환.
코딩체험교실 아두이노 로봇 코딩 4차산업기술 체험 (SW코딩/자율주행기술).
아날로그일까? 디지털일까? -사용자 경험 기반 디지털 기술을 활용한 반응하는 액자 만들기-
아두이노 서보로봇 제어 (블루투스 스마트폰 조종) -03차시-
임베디드 하드웨어 Lecture #6.
4 LED 출력 LED 점멸 LED 밝기 조절 RGB LED로 색상 표현하기 FND 제어 4-digit FND 제어 Dot matrix 제어 Dot matrix를 이용한 애니메이션.
사물인터넷(IoT) 프로그래밍 기초 5. 시리얼통신.
Progress Seminar 양승만.
Lecture 7 7-Segment LED controller using u-controller
임베디드 프로그래밍 Lecture #
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
3. Arduino 실습 – 아날로그 입력(1) 아날로그 입력 – 먼지 센서 먼지 센서 개요 먼지 센서 특징 먼지 검출 센서
Presentation transcript:

아두이노 프로그래밍 Lecture #01 2018. 9. 20.

목 차 IoT 장치 개요 Arudino 실습환경 구축 Arduino 실습 디지털 출력(DO) 디지털 입력(DI) 아날로그 출력(AO) 아날로그 입력(AI) 시리얼 통신(Serial Comm.)

1. IoT 장치 개요(1) IoT 시스템 아키텍처 구성

1. IoT 장치 개요(2) IoT 장치 예:

1. IoT 장치 개요(3) IoT 장치의 주요 기능 데이터 수집 – 환경요인 센싱 및 데이터 생성 데이터 소비 – 환경요인에 대한 액추에이팅(제어) 데이터 통신 – 원격 호스트로 데이터 전송 또는 제어 명령 수신

1. IoT 장치 개요(4) IoT 장치 – 기본 구조 (1) Sensors Controller Comm. (MCU) I/F 디지털 전기신호 비트 스트림 Controller (MCU) Comm. I/F Actuators 아날로그 전기신호 별도의 ADC/DAC 장치가 필요

1. IoT 장치 개요(5) IoT 장치 – 기본 구조 (2) Controller 장치는 주로 MCU(Micro-Controller Unit) 기반으로 구현 Controller 장치는 Sensors/Actuators 장치와 전기 신호를 이용하여 인 터페이스한다. 전기 신호 – 디지털 신호 / 아날로그 신호 Controller는 디지털 신호와 아날로그 신호 입출력을 지원하여야 한다. 아날로그 신호 입출력을 위해 별도의 ADC/DAC 장치가 필요 Controller 장치는 시리얼 통신 방식으로 외부와 데이터 통신 비동기 시리얼 통신 – UART 동기 시리얼 통신 – I2C, SPI Controller 장치는 크기가 작아야 한다. Controller 장치는 저전력으로 동작하여야 한다.

1. IoT 장치 개요(6) IoT 장치 프로그래밍 간단한(경량) 알고리즘을 기반으로 프로그래밍하여야 한다. 주로 외부 장치와의 인터페이스 기능을 구현한다. 다음의 인터페이스 기능을 활용하여야 한다. 디지털 신호 출력 디지털 신호 입력 아날로그 신호 출력 아날로그 신호 입력 시리얼 데이터 통신(UART/I2C/SPI) 필요에 따란 인터럽트(Interrupt) 기반의 비동기 동작을 구현한다.

2. Arduino 실습환경 구축(1) Arduino 란? 오픈소스 하드웨어 프로토타입핑(prototyping) 플랫폼 3 가지 의미를 내포 A programming environment A community & philosophy A physical piece of hardware

2. Arduino 실습환경 구축(2) 아두이노 플랫폼 기본 구성

2. Arduino 실습환경 구축(3) AVR Atmega 8-bit microcontroller chip 사용 chip was designed to be used with C language Arduino Mega-ADK

2. Arduino 실습환경 구축(4) Arduino Diecimila Board • 16 kBytes of Flash program memory • 1 kByte of RAM • 16 MHz (Apple II: 1 MHz) • Inputs and Outputs • 13 digital input/output pins • 5 analog input pins • 6 analog output(PWM) pins • Completely stand-alone: doesn’t need a computer once programmed

2. Arduino 실습환경 구축(5) Arduino Mega-ADK Board • 256 KB of Flash program memory • 4 KB of EEPROM • 8 kB of RAM • 16 MHz (Apple II: 1 MHz) • Inputs and Outputs: - 40 digital input/output pins - 16 analog input pins - 14 analog output(PWM) pins • 4’s UART(serial) port • USB Host channel USB Host Channel ATmega2560

2. Arduino 실습환경 구축(6) 아두이노 하드웨어 변형 Lilypad Arduino Breadboard Arduino Arduino Mini Arduino Nano Arduino Bluetooth Arduino Ethernet Arduino Notebook Arduino DIY

2. Arduino 실습환경 구축(7) Arduino IDE 프로젝트 생성 및 프로 그램 소스 편집 프로그램 컴파일 프로그램 다운로드(ISP) 콘솔 모니터 Function Buttons Program Coding Area System Message Area

2. Arduino 실습환경 구축(8) Arduino IDE 설치 아두이노 웹사이트(www.arduino.cc)에서 설치 패키지 다운로드 설치 패키지의 압축을 풀어 적절한 위치에 설치 환경변수 설정 및 실행 : 환경설정 파일 /root/.bashrc #> pwd /root/다운로드 #> mv arduino-1.0-linux.tgz /opt #> cd /opt #> tar xvfz arduino-1.0-linux.tgz #> gedit ~/.bashrc : PATH=/opt/arduin-1.0:$PATH #> source ~/.bashrc #> arduino

lsusb 명령어를 이용하여 연결 여부 확인 가능 2. Arduino 실습환경 구축(9) Host PC와 아두이노 보드 연결 lsusb 명령어를 이용하여 연결 여부 확인 가능

2. Arduino 실습환경 구축(10) 아두이노 프로그램 개발 사이클 Make as many changes as you want Not like most web programming: edit ➝ run Edit ➝ compile ➝ upload ➝ run

2. Arduino 실습환경 구축(11) 아두이노 프로그램 작성 및 실행 Write your sketch Sketch : Arduino 보드에서 실행되는 프로그램 Press Compile button(to check for errors) Press Upload button to program Arduino board with your sketch

2. Arduino 실습환경 구축(12) 예제 프로그램을 이용한 테스트 LED Blink Example Step #1 : Arduino Board 연결 Step #2 : Arduino 프로그램 실행 Step #3 : Arduino 프로그램에서의 타겟 설정 사용하는 arduino 보드 타입과 연결 포트 설정

2. Arduino 실습환경 구축(13) 예제 프로그램을 이용한 테스트 Step #4 : LED Blink 예제 스케치 로딩 메뉴: File  Examples  1.Basics  Blick Step #5 : Compile 버튼으로 스케치 컴파일링 Step #6 : Unoload 버튼으로 스케치 업로드 Step #7 : 실행 결과 확인 보드 내의 led 13이 깜박이지를 확인

3. Arduino 실습 Arduino API Arduino 실습 issues https://www.arduino.cc/reference/en/ Arduino 실습 issues 시간 지연 디지털 출력 디지털 입력 아날로그 출력 아날로그 입력 인터럽트 시리얼 통신: I2C, SPI, UART

3. Arduino 실습 – 디지털 출력(1) 디지털 출력(1) – LED on/off 회로 구성 회로도: 연결도: 구성 회로: pin d8

3. Arduino 실습 – 디지털 출력(2) 디지털 출력(1) – LED on/off 회로 구성 온보드(on-board) 되어 있어 별도의 결선 없음 MEGA ADK 내장 LED는 Digital Pin 13번과 회로적으로 연결

3. Arduino 실습 – 디지털 출력(3) 디지털 출력(1) – LED on/off 스케치 프로그램 pinMode() – digital pin의 입출력 모드 설정 digitalWrite() – 디지털 신호 출력 #define LED_PIN 13 void setup() { pinMode(LED_PIN, OUTPUT); } void loop() { digitalWrite(LED_PIN, HIGH); // digitalWrite(LED_PIN, HIGH);

3. Arduino 실습 – 디지털 출력(4) 디지털 출력(2) – LED Blinking 점멸 간격을 1000ms(1sec)로 설정 시간지연 API 사용 delay()/delayMicroseconds() 회로 구성 앞 예제와 동일

3. Arduino 실습 – 디지털 출력(5) 디지털 출력(2) – LED Blinking 스케치 프로그램 #define LED_PIN 13 #define BLINK_INTERVAL 1000 // 1000 msec = 1sec void setup() { pinMode(LED_PIN, OUTPUT); } void loop() { digitalWrite(LED_PIN, HIGH); delay(BLINK_INTERVAL); digitalWrite(LED_PIN, LOW);

3. Arduino 실습 – 디지털 출력(6) 디지털 출력(3) – 외부 LED 모듈 제어 외부 LED 모듈의 다수 LED를 제어 여러 개의 LED들을 250ms 간격을 점멸 LED 모듈

3. Arduino 실습 – 디지털 출력(7) 디지털 출력(3) – 외부 LED 모듈 제어 LED 모듈 회로도

3. Arduino 실습 – 디지털 출력(8) 회로 구성 MEGA ADK 모듈과 LED 모듈 결선 결선 방법 MEGA ADK 모듈의 2 핀을 LED 모듈의 S1 핀에 연결 MEGA ADK 모듈의 3 핀을 LED 모듈의 S2 핀에 연결 MEGA ADK 모듈의 4 핀을 LED 모듈의 S3 핀에 연결 MEGA ADK 모듈의 5 핀을 LED 모듈의 S4 핀에 연결 MEGA ADK 모듈의 6 핀을 LED 모듈의 S5 핀에 연결 MEGA ADK 모듈의 7 핀을 LED 모듈의 S6 핀에 연결 MEGA ADK 모듈의 8 핀을 LED 모듈의 S7 핀에 연결 MEGA ADK 모듈의 9 핀을 LED 모듈의 S8 핀에 연결

3. Arduino 실습 – 디지털 출력(9) 디지털 출력(3) – 외부 LED 모듈 제어 스케치 프로그램 #define BLINK_INTERVAL 250 enum LEDPINS { LED1=2, LED2, LED3, LED4, LED5, LED6, LED7, LED8 }; void setup() { for (int i=LED1; i<=LED8; i++){ pinMode(i, OUTPUT); } void loop() { for (int i=LD1; i<=LED8; i++) { digitalWrite(i, HIGH); delay(BLINK_INTERVAL); digitalWrite(i, LOW); }

3. Arduino 실습 – 디지털 입력(1) 디지털 입력(1) – Push Button & LED on-off 스위치 (Switch) 연결을 만들거나 끊는데 사용하는 전자 부품 다양한 형태의 스위치를 사용 가능 간이 형태의 스위치를 만들어 사용 가능 Push Button Switch

3. Arduino 실습 – 디지털 입력(2) 디지털 입력(1) – Push Button & LED on-off 스위치 연결 회로 Pull-up resistor Digital IO 2 Arduino Vcc R Digital IO 2 Arduino GND R Pull-down resistor 스위치 on: High 스위치 on: Low 스위치 off: ?  Low 스위치 off: ?  High

3. Arduino 실습 – 디지털 입력(3) 디지털 입력(1) – Push Button & LED on-off 스위치 연결 회로 디지털 입력핀은 아무런 회로연결을 갖지 않는 경우  디지털 입력은 0V와 5V 사이를 움직이며(floating) 일정한 값을 갖지 못함 Pull-up Register / Pull-down Register 입력 핀을 5V 또는 0V 연결할 때 적용 Pull input up to 5V Pull input down to ground(0V) 스위치 연결 방식  스위치 동작 Press  HIGH Not Press  LOW

3. Arduino 실습 – 디지털 입력(4) 디지털 입력(1) – Push Button & LED on-off 사용 모듈 MEGA ADK 모듈 LED 모듈 Button 모듈

Pull-up resistor  버튼을 누르면 LOW 입력 3. Arduino 실습 – 디지털 입력(5) 디지털 입력(1) – Push Button & LED on-off Button 모듈 회로도 Pull-up resistor  버튼을 누르면 LOW 입력

3. Arduino 실습 – 디지털 입력(6) 디지털 입력(1) – Push Button & LED on-off 회로 구성 MEGA ADK 모듈의 2 핀을 LED 모듈의 S1 핀에 연결 MEGA ADK 모듈의 8 핀을 Button 모듈의 S1 핀에 연결

digitalWrite(ledBin, digitalRead(btnPin)); 3. Arduino 실습 – 디지털 입력(7) 디지털 입력(1) – Push Button & LED on-off 스케치 프로그램 digitalRead() – 디지털 신호 입력 int btnPin = 8; int ledPin = 2; void setup() { pinMode(ledPin, OUTPUT); pinMode(btnPin, INPUT); digitalWrite(ledPin, LOW); } void loop() { if (digitalRead(btnPin) == HIGH) { digitalWrite(ledPin, HIGH); else { delay(250); digitalWrite(ledBin, digitalRead(btnPin));

3. Arduino 실습 – 디지털 입력(8) 디지털 입력(2) – Push Button & LED Toggling 동작: 스위치 입력에 따라 LED on/off 동작을 toggling 스위치 입력의 에지 검출 필요 스위치 입력 신호: 에지 검출 (이전 입력 != 현재 입력) && (현재 입력 == HIGH)  상승 에지 (이전 입력 != 현재 입력) && (현재 입력 == LOW)  하강 에지 HIGH LOW Rising Edge Falling Edge

3. Arduino 실습 – 디지털 입력(9) 디지털 입력(2) – Push Button & LED Toggling 회로 구성 이전 실습 회로 사용

3. Arduino 실습 – 디지털 입력(10) 디지털 입력(2) – Push Button & LED Toggling 스케치 프로그램 int btnPin = 22; int ledPin = 9; int ledState = LOW; #define NO_EDGE 0 #define RISING_EDGE 1 #define FALLING_EDGE 2 int checkBtnEdge() { static int prevState = LOW; int currState = digitalRead(ledPin); int edge = NO_EDGE; if (prevState != currState){ if (currState == HIGH)) edge = RISING_EDGE; else edge = FALLING_EDGE; prevState = currState; } return edge; void setup() { pinMode(ledPin, OUTPUT); pinMode(btnPin, INPUT); digitalWrite(ledPin, ledState); } void loop() { if (checkBtnEdge() == RISING_EDGE) { ledState = !ledState; delay(250);

3. Arduino 실습 – 디지털 입력(11) 디지털 입력(2) – Push Button & LED Toggling 스위치 입력 에지 검출 issue: Button Bounce 현상 버튼을 누르거나 땔 때에 일시적으로 전압이 불안해지는 현상 Button Debounce Button bounce를 제거하는 동작 H/W 해결책 – capacity 활용 S/W 해결책 – 버튼 입력 상태가 바뀔 때에 약간의 지연을 허용

3. Arduino 실습 – 디지털 입력(12) 디지털 입력(2) – Push Button & LED Toggling 스케치 프로그램 int btnPin = 22; int ledPin = 9; int ledState = LOW; #define NO_EDGE 0 #define RISING_EDGE 1 #define FALLING_EDGE 2 #define BOUNCE_DELAY 50 // msec int checkBtnEdge() { static int prevState = LOW; int edge = NO_EDGE; long startDelay = 0; int currState = digitalRead(ledPin); if (prevState != currState){ if (startDelay == 0) { startDelay = millis(); } else if (millis() – startDelay > BOUNCE_DELAY) { edge = currState==HIGH ? RISING_EDGE : FALLING_EDGE; prevState = currState; startDelay = 0; } else { return edge; void setup() { pinMode(ledPin, OUTPUT); pinMode(btnPin, INPUT); digitalWrite(ledPin, ledState);

3. Arduino 실습 – 디지털 입력(13) 디지털 입력(2) – Push Button & LED Toggling 스케치 프로그램 void loop() { if (checkBtnEdge() == FALLING_EDGE) { ledState = !ledState; } digitalWrite(ledPin, ledState); delay(250);