2016년 11월 27일 일요일

Arduino 2. 아두이노란 무엇인가?




Arduinoboard 뿐만 아니라 module, shield 그리고 종합세트인 kit이 있다. Module board에서 핵심 부분을 모아 더 작게 만든것이고, shieldboard의 부족한 기능(무선통신, 그래픽 등)을 보완하도록 만든 보조 장치다. 따라서 사용자의 목적에 따라 Arduino에 다양한 제품을 선택해 활용할 수 있다(그림 2).  


그림 2. 사용 목적에 따른 Arduino 제품들[1]


이번 실험에 사용할 Arduino Uno board는 초심자용 board 이지만, Arduino의 가장 기본적이고 대표적인 reference board 이다. Arduino 하면 가장 먼저 접하는 boardUno는 이탈리아어로 하나, 첫째라는 뜻이다. 가격은 board 1개에 8000원 정도로 저렴하며(그림 3), Atmel사의 ATmega328P microcontroller를 기반으로 구성되어 있다.



그림 3. Arduino Uno board

ATmega328P microcontroller pin map(그림 4)에서 알 수 있듯이, Arduino Uno boardATmegar328P microcontroller를 사용자가 쉽게 쓸 수 있게 각 pin의 기능을 board에 모으고 외부 장치와 연결을 편하게 해놓은 것이다





그림 4. Arduino Uno board에 핵심인 ATmega328 chip pin map[2]



Arduino Uno board14개의 digital input/output pin, 6개의 analog input pin, 16 MHz quartz crystal, USB 연결부, 외부전원 연결부로 구성되어 있다(그림 5). Arduino Uno board를 사용하기에 앞서 우리가 실제로 쓰는 부분의 역할에 대해 자세히 알아보도록 한다

그림 5. Arduino Uno board의 각 부분에 명칭과 역할[3]

 Board에서 가장 많이 쓰이는 것은 14개의 Digital I/O pin들이며 0 ~ 13번으로 표시되어 있다. Digital pin들 중 우리가 실제로 사용하는 것은 2 ~ 13 번으로, 외부에 digital 신호(0 또는 1의 이진수 신호)를 받거나 보내는데 사용한다. 신호를 받거나(입력) 보내는 것(출력)Arduino와 외부 스위치를 연결했을 때 스위치가 눌렀는지 아닌지를 확인(입력기능) 하거나, ArduinoLED를 연결했을 때 Arduino에서 LED를 켜고 끄는 장치(출력기능)로 사용하는 것을 말한다. 입력기능은 외부 스위치가 열려있는지, 닫혀있는지에 따라 포트로 들어오는 전압값이 0 V 혹은 5 V 인지를 인지하여 입력신호(스위치의 상태)를 알려준다. 출력기능은 Arduino와 연결된 장치에 전압을 주지 않으면(0 V) Low 신호, 즉 장치를 끄는 역할을 하는 것이고 전압을 주면(5 V) High 신호, 장치를 켜는 역할을 하는 것을 말한다. 특히 출력기능은 우리가 만든 프로그램으로 제어할 수 있어, 원하는 시간에 정확히 장치를 켜고 끄는 것을 할 수 있다.


[1] https://www.arduino.cc/en/Main/Products
[2] https://www.arduino.cc/en/Hacking/PinMapping168
[3] https://www.arduino.cc/en/Main/ArduinoBoardUno

2016년 11월 19일 토요일

Arduino 1. 아두이노란 무엇인가?

Arduino 아두이노
아두이노를 알기 위해서는 먼저 마이크로컨트롤러를 알아야 한다.
아래 글은 내가 학부실험을 위해 작성한 실험메뉴얼에 나온 내용이다.

마이크로컨트롤러
Microcontroller[1] 는 하나의 칩 안에 microprocessor, memory, analog to digital converter, digital to analog converter, parallel I/O interface, serial I/O interface, timer, counter 를 모두 포함하는 작은 컴퓨터를 말한다(그림 1). 사용자의 다양한 요구에 맞춰 사용하는 개인용 컴퓨터(personal computer, PC)와 달리 microcontroller는 미리 프로그램 된 특정 기능을 반복적으로 처리하는데 사용한다. 성능은 PC에 비해 낮지만 기본적인 연산 능력, 신호처리기능이 있으며 소형에 저전력(µW ~ mW)에서 작동이 가능하다. 따라서 우리 주변에서 흔히 보는 전기 밥솥, 세탁기, 에어컨, TV, 핸드폰 등 거의 모든 가전 및 산업제품에서 내장되어 사용자가 버튼을 눌렀을 때 정해진 기능을 수행하는데 쓰인다.  
이처럼 microcontroller는 현대사회의 기기에 널리 쓰이는 핵심부품이지만, microcontroller에 원하는 명령을 넣고 장치를 제어하는 것은 하드웨어와 소프트웨어에 대한 상당한 경험과 지식이 있는 전문가가 아니면 하기 어려운 분야이다. Microcontroller용 프로그램을 작성해 직접 사용하려면 전문교육과 실무 경험을 몇 년간은 해야 하는 것이 필수고, microcontroller제조사에 따라 프로그램을 새로 작성해야 하며 제조사가 같더라도 모델이 다르면 호환이 되지 않아 일반 사람들에게는 진입장벽이 무척 높은 영역인 것이었다.
Image result for microcontroller 구조

그림 1. 일반적인 microcontroller 의 구성도



[1] Udayashankara, V., Microcontroller; Tata McGraw-Hill Education, 2009.

그러면 아두이노는 무엇일까 ?


2005년 이탈리아에 마시모 반지(Massimo Banzi) 교수는 디자인을 전공하는 학생들에게 IT를 융합한 작품을 만들도록 하기 위해 비전문가도 쉽게 microcontroller를 활용해 자신이 원하는 장치를 만들 수 있도록 Arduino[1] 라는 하드웨어와 똑같은 이름의 통합개발환경 (integrated development environment, IDE) 소프트웨어를 공개하였다. 공학도도 접근이 쉽지 않은 microcontroller를 임베디드 시스템(embedded system: 특정 기능을 수행하는 시스템) 개발 경험이 전혀 없는 사람도 쉽게 배우고 접근하여 사용할 수 있도록 하드웨어와 소프트웨어의 내용을 모두 오픈소스(open source) 형태로 공개하여 제공한 것이다.[2] 누구나 직접 Arduino board를 만들고 수정할 수 있게 회로도를 공개하였고, 실행 코드(code)를 기존보다 더 쉽게 제작하고 업로드(upload: 사용자가 만든 코드를 microcontroller에 전송 하는 것) 할 수 있도록 IDE 소프트웨어를 만들었다. IDE에는 편집이 쉬운 에디터(editor), 컴파일(compile: 인간이 만든 프로그래밍 언어를 기계가 인식할 수 있도록 함)과 업로드가 가능한 컴파일러 플랫폼(compiler platform)이 포함되어 있다. 프로그램 언어를 잘 모르는 초심자도 Arduino IDE 를 이용해 코딩(coding: 프로그램의 코드를 작성하는 것)을 쉽게 할 수 있도록 하였으며, 기존에 복잡한 컴파일과 업로드 과정을 벗어나 PCUSB 케이블로 연결하여 쉽게 컴파일과 업로드를 할 수 있게 만들었다. 더욱이 Arduino는 아폴로 우주 계획에 사용한 항법 컴퓨터와 비슷한 컴퓨팅 파워를 가지면서 가격은 1/35,000 수준이라 성능과 가격에 대한 부담없이 마음껏 활용할 수 있다. 따라서 예술가, 일반인, 심지어 어린이들까지도 머릿속의 상상을 실제로 구현해 볼 수 있는 환경이 Arduino를 통해 마련된 것이다. 실제로 Arduino와 사물인터넷을 결합해 집에 있는 TV, 에어컨을 제어하거나 농촌에서 자동으로 농작물에 물을 주고 습도를 조절하는 장치를 만든 예들을 쉽게 찾아 볼 수 있으며, 기분을 표현하는 디스플레이 장치, 의류, 조명등 감성과 결합한 장치들도 개발되어 있다[3]. 이처럼 Arduino 의 저렴한 가격, 낮은 진입장벽, 개방된 환경은 창업, 교육, 산업, 예술계와 같은 사회 여러 분야에 활용될 수 있는 가능성을 열어주었다.[4]



[2] 스마트과학관-사물인터넷 아두이노 http://terms.naver.com/entry.nhn?docId=3386838&cid=58369&categoryId=58369
[3] http://www.instructables.com/id/20-Unbelievable-Arduino-Projects/





2015년 10월 27일 화요일

수학과 과학을 재미있게 배우고 싶다면 ?

배우고 익히는 즐거움

https://www.khanacademy.org/



이 site는 모두에게 개방되어있는 무료 site이다.
Site 의 사명은

"A free world-class education for anyone anywhere."

라고 한다. 즉 어디에서나 누구나에게 세계적 수준의 교육을 제공해 주는 것이다. 

간단히 구글 계정으로 로그인이 가능하여 구글을 쓴다면 회원가입이 따로 필요 없다. 

백번 듣는 것 보다 한번 해보는게 좋다. 
 지금 당장 들어가서 하나씩 들어보자. ~!!
 





2014년 11월 7일 금요일

논문 내는 절차

잘 정리된 거 같아 블로그에 남긴다. 출처는 (http://samtay.egloos.com/viewer/1026428). 어느 저널이든지 아래와 같은 절차로 진행될 것임.
(1) 논문 제출
(2) 학술지 편집자가 레프리 선정 (레프리는 보통은 한 명이지만, 사이언스나 네이쳐는 3명임. 나도 한 번 제출했다가 리젝트 먹은 적이 있어서 알고 있음.)
(3) 레프리가 심사하고, 그 결과를 편집자에게 줌.
(4) 편집자는 심사 결과 (레프리 코멘트 referee's comment라고 함)를 무기명으로 논문 저자에게 보냄. (contact author에게 보냄.) 그러나 가끔은 레프리가 자기 이름을 밝히라고 허용하는 경우도 있음. 레프리의 심사 결과는 대개 세가지. 크게 고칠 것은 없는 경우(minor revision), 논문 내용에 레프리가 크게 딴지를 거는 경우(major revision), 잡지에 실을 수준이 안되는 논문(reject). 요렇게 세 가지다.  
(5) 논문 저자가 교정하여 다시 편집자에게 답장을 씀. 출판 거절(reject)인 경우는 대개 편집자가 다른 레프리를 선정하라고 하거나, 웬만하면 제출 취소를 하라고 알려준다.
(6) 편집자가 레프리에게 다시 보냄.
(7) (3)번으로 감.
(8) 출판 허락이 떨어지면, 편집자가 원고를 type setter에게 보낸다.
(9) 이 과정에서 영어가 너무 엉터리인 문장들과 각종 오타들이 지적되어 날아 온다.
(10) 출판자는 이러한 과정을 거쳐서 만든 최종본을 type setting하고 galley proof를 보낸다. galley proof는 최종 인쇄 상태를 확인하는 마지막 절차이다.
(11) OK가 떨어지면 편집자가 논문이 실릴 학술지 권수와 페이지를 정한다.
(12) 요새는 대개 on-line 잡지가 먼저 출판되고, paperback은 나중에 출간된다.

2014년 10월 20일 월요일

배움을 위한 온라인 site (Massive Open Online Course)

www.opentutorials.org : 코딩에 대해 잘 몰라도 강의 동영상을 보고 따라하면 누구나 쉽게 기초부터 배울 수 있음. (한글)

www.codecademy.com : 인터넷만 되면 바로 사이트내에서 실습하면서 코딩을 배울 수 있음 (영문)

여기까지는 coding 을 배우기 위해 좋은 site 

---------------------------------------------------------------

여기 부터는 다양한 과목을 배울 수 있는 site

www.coursera.org : 놀라운 site. 비싼등록금 내면서 들을 수 있는 강의를 여기서는 무료로 들을 수 있음. 분야도 다양해서 일반 대학에서 들을 수 있는 주제들은 거의 다 있음. 

특히 단순히 대학교 강의를 비디오로 찍어서 올린게 아니라 온라인 교육 전용으로 만들어서 올려놓았음. 중간중간 퀴즈도 나오고, 강의 시간이 15분정도로 짧아서 틈틈히 보기에도 좋음.기한내에 해야되는 숙제도 있고 제출하면 채점도 자동으로 해서 주니까 정말 강의듣는 것 같음.다만 강의 스케줄이 있어서 마음대로 수업을 들을 수는 없고 수강신청 후 정해진 기간동안에만 수업에 참여할 수 있음. (영문)

www.khanacademy.org : 여기도 놀라운 site. coursera 가 대학교 수준의 강의만 제공한다면, 칸아카데미는 초등학교 부터 대학교 수준의 내용을 아주쉽게 설명해줌. 기초과학부터 회계 경제 강의까지 처음 시작하는사람들도 알아 들을 수 있게 쉽게 설명해줘서 누구나 들을 수 있음. 강의시간은 15분 이내고 아무때나 들어가 들을 수 있으며 진도를 쉽게 체크할 수 있음. 숙제나 점수가 없으며 기초부터 새롭게 시작하기에 가장 좋은 site임. (영문+ 일부 한글 자막)  

* 위의 site들은 전부 무료로  훌륭한 강의를 제공하고 있음.




2014년 9월 23일 화요일

마이크로소프트 워드 에서 곱하기 기호 넣기!


심볼에서 이거 찾기 정말 어렵다.
그렇다고 그냥 알파벳 x를 넣을 수는 없다.


해결책은: Insert | Symbol and choose character 00D7.



00D7... 외워 두자!


출처: http://www.techtalkz.com/microsoft-office-word/439427-multiplication-symbol.html