본문 바로가기

분류 전체보기483

아두이노 미세먼지 측정기 만들기 (PMS7003센서 사용기) 개요 미세먼지 농도를 측정하는 아두이노 프로젝트입니다. 제법 정밀한 센서로 알려져 있는 PMS7003센서를 사용하고 아두이노를 이용해서 센서를 동작하고 데이터를 확인하도록 하겠습니다. 준비물 PMS7003 센서 아두이노 우노 R3 아두이노 업로드 및 전원용 USB케이블 점프케이블 빵판 PMS7003 센서 특징 PMS7003센서는 공기중의 부유 미세입자의 농도를 측정하는 센서입니다. 그리고 측정된 결과는 디지털 인터페이스(UART)로 출력합니다. datasheet의 성능요약 테이블을 살펴보겠습니다. 측정가능한 최소 입자크기는 0.3마이크론 까지인데 보시는것 처럼 측정효율이 많이 떨어집니다. 그래서 실질적인 측정가능 입자크기는 최소 0.5마이크론으로 봐야 겠습니다. 측정 농도의 범위는 PM2.5를 기준으로 .. 2019. 3. 11.
Visual Studio를 Arduino IDE로 사용하기 (Visual Studio에서 Arduino 코딩, 업로드, 디버깅) 개요 아두이노 프로젝트는 비전공자들도 마이크로 프로세서를 거부감없이 사용할 수 있도록 한 획기적인 아이템이죠. 그래서 많은 사람들이 사용을 하고 있고 요즘 코딩교육 의무화와 같은 바람에 편승해서 학생들 교육용으로 많이 사용되고 있습니다. 그만큼 쉽다는 얘기인데, 늘 쉽고 간단하다는 것은 자유도가 떨어진다는 반면을 가지고 있기 마련인것 같습니다. 이번에 다룰 내용은 아두이노 코드를 작성하고 보드에 업로드하고 디버깅하는 아두이노의 개발환경입니다. 아두이노 공식 IDE는 이것저것 설정할 필요도 없이 프로그램 하나만 설치하면 코딩부터 펌웨어 업로드까지 한번에 할 수 있기 때문에 무척이나 간편한 환경을 제공해주고 있습니다. 그러나 앞서 얘기했듯, 간편하다는 장점만큼 별다른 사용자 편의기능이 없어서 불편하고 귀찮은.. 2019. 3. 9.
아두이노 시작하기 - 메이커가 되어봐요 개요 요즘 아두이노 많이들 사용하고 계실텐데요. 저도 공대를 졸업하긴 했지만 전자/전기/컴퓨터쪽은 아니라서 마이크로 컨트롤러를 잘 모릅니다. 그렇지만 이런분야에 관심이 많아서 늘 공부해보고 만들어보고 그런 욕심이 있었습니다. 그런데 제가 학교다닐때 이런 플랫폼이 없었어요. 코딩을 할래도 에디터부터 복잡하고 펌웨어 구울려면 뭐 롸이터 따로 만들어야 하고 또 뭐라더나 암튼 이해도 안되는 복잡하고 신비로운것들이 많았습니다. 그리고 도서관에서 책을 봐도 뭔말인지도 모르겠고 그렇더라구요. 그래서 포기하고 살았어요 ㅎ 그런데 이 아두이노라는 만능보드가 나와줘서 참 다행히 더 늦기전에 마이크로컨트롤러를 써볼수있게 되었습니다. 이건 보드만 사서 컴퓨터에 USB만 연결하면 되니 정말 이건 거저먹기더군요. 하지만, 저도 .. 2019. 3. 9.
아두이노 우노 R3(Arduino Uno R3) 기본사양 개요아두이노 공식 홈페이지의 아두이노 우노 제품설명 페이지의 요약본입니다. 아두이노 우노 보드를 처음 사용하시는 분들은 한번쯤은 읽어보면 도움이 될것 같네요.아두이노 기본스펙 Microcontroller ATmega328P Operating Voltage 5V Input Voltage (recommended) 7-12V Input Voltage (limit) 6-20V Digital I/O Pins 14 (of which 6 provide PWM output) PWM Digital I/O Pins 6 Analog Input Pins 6 DC Current per I/O Pin 20 mA DC Current for 3.3V Pin 50 mA Flash Memory 32 KB (ATmega328P) of w.. 2019. 3. 6.
C++ 동적 메모리 (Dynamic Memory) 할당 필요성 동적할당이 왜 필요할까요? 동적메모리 할당은입력갑에 의존적인 프로그램을 만들어야 할 경우 유용하게 쓰일 수 있습니다. 예를들어 사진이나 영상 등 어떤 파일을 읽어야 하는데 읽기 전에는 그 크기를 모르기 때문에 메모리에 얼마나 공간이 필요한지 알수가 없는데 이럴때는 동적할당이 꼭 필요합니다. 다음과 같은 코드를 컴파일 해보면 컴파일 에러가 납니다. int i = 5; int arr[i]; i라는 변수에 5가 할당되니까 정수형 배열 “arr[i]”은 정수형 x 5개 만큼의 크기가 필요하다는 것이 자명한데 왜 에러가 날까요? 이유는 컴파일시에 변수 i 가 정수형이라는 것만 정해지지 여기에 값 5가 들어가는건 프로그램이 실행될 단계에서 일어나는 일이라고 합니다. 그래서 컴파일러는 “i”에 뭐가 들어가있는.. 2019. 2. 28.
[파이썬의 기본] 함수(Function) 함수 함수는 어떤 기능을 하도록 구현한 코드들의 묶음으로 필요에 따라 함수이름만 가지고 호출해서 사용할 수 있습니다. 그래서 이 함수를 만들어서 코드를 잘 정리하면 가독성도 좋아지고 유지보수에도 도움이 됩니다. 파이썬의 함수도 다른 언어들과 마찬가지로 함수의 선언과 호출로 사용하고 파라미터와 반환값을 주고받습니다. 함수의 선언 함수를 만드는 방법입니다. “def”라는 키워드를 사용합니다. 그뒤어 사용할 함수의 이름, 괄호, 콜론(:)을 차례로 적어어서 함수의 언선이 시작되는 부분임을 표시합니다. 함수는 코드의 덩어리가 묶여있는 형태이기 때문에 함수의 단락이 이어지고 있음을 표시해야 겠죠. C언어에서는 중괄호( {, } )를 이용해서 함수단락의 시작과 끝을 표시하는데 반해, 파이썬은 단순히 들여쓰기로만 표.. 2019. 2. 28.
[파이썬의 기본] 반복문(while, for) while while문은 주어진 조건이 참이면 계속 반복해서 코드를 실행하도록 하는 명령어 입니다. 그러다가 조건이 거짓이 되면 while 루프를 빠져나가서 그다음 코드를 계속 실행하게 됩니다. 예제: i=1 while i=0: i=i+1 if i==2: print(“Skip”) continue if i==5: print(“Break”) break print(i) print(“Finish”) 결과: for 리스트나 레인지처럼 한정된 범위내에서 반복을해서 작업을 수행해야 할 경우에 사용할 수 있는 명령어 입니다. 예제: words = ["hello", "world", "spam", "eggs"] for word in words: print(word + "!") for i in range(5): print(.. 2019. 2. 28.
[파이썬의 기본] 분기문 (if, elif, else) 분기문 “if”, “elif”, “else” 구문에 대한 설명입니다. 조건의 참 거짓 여부에 따라서 프로그램 실행방향을 결정하는 구문입니다. 이역시 컨셉은 C++이나 기타 언어와 동일합니다. 파이썬의 특징이라고 한다면 다중조건의 분기를 만들때 elif라는 키워드를 사용합니다. C++의 “else if”와 같은 역할을 하는데 이마저도 줄여서 사용하네요. 요즘 인싸들은 줄임말을 많이 사용하던데 역시 파이썬은 인싸들의 언어였네요. ㅋ 예제를 보죠. 예제: x = 1 if x==1: print("One") elif x==2: print("Two") else: print("Three") 예제는 if로 첫번째 조건을 확인하고 elif문으로 2번째 조건을 확인합니다. 그리고 마지막으로 조건1과 조건2 어느것에도 속하.. 2019. 2. 26.
에버노트 아이패드앱에서 텍스트 서식없이 복사/붙여넣기 최근에 블로그에 올릴 글을 준비하는데 에버노트를 많이 사용하고 있습니다. 아이패드에서 티스토리 에디터가 변변치 못한대신 에버노트와 연동이 되서 그나마 다행이긴 하죠. 아무튼 자료 준비를 하거나 공부를 할때 다른 앱에서 텍스트를 복사해서 에버노트로 가져온다음 편집해서 사용하는 일이 종종있습니다. 그런데 이때 그냥 복사, 붙여넣기를 하면 서식이 같이 따라와서 서식정리를 다시 해줘야하는 불편함이 있습니다. 예를 들어 이런 상황이죠. 아래 그림처럼 웹브라우저에서 복사할 텍스트를 선택하고 복사하기를 합니다. 그런다음 에버노트앱으로 돌아와서 붙여넣기를 하면 이렇게 원래 웹브라우저에서 보이던 서식이 그대로 반영되어서 붙여넣기가 됩니다. 이렇게 원래 서식이 유지가 되는건 단순 스크랩이 목적이라면 편한데, 일부 발췌를 .. 2019. 2. 26.
메리페어 와우 (TPE) 사용 후기 사무용 의자를 하나 구매했습니다. 전에 쓰전 의자가, 제가 직접 고른거긴 하지만, 워낙 싸구려를 샀던터라 방석은 얼마되지 않아 금방 쿠션이 꺼지고 허리받침은 매쉬였는데 탄력이 없어져서 허리를 받쳐주지 못하고 심지어 축이 기울어서 의자에 앉으면 몸이 한쪽으로 기울어지는 바람에 도저히 쓸수가 없었습니다. 메리페어 와우라는 의자에 관심을 가지게 된 건 1년전 쯤이었던거 같습니다. 어느 게시판에서 이름을 들어본적도 없는 메리페어라는 브랜드의 의자를 왜 구입하게 되었는지 그리고 써보니 어떤점이 좋은지 등을 아주 설득력있게 써놓은 어느 선구자님의 글을 보게 되었습니다. 지금 기억에 남는건 무엇보다 남다른 상체의 견인력(?)으로 허리가 아주 편안해 진다는 그런 내용이었던 것 같습니다. 그래서 매장에 가서 앉아보고 다.. 2019. 2. 20.
핵 가성비에 완전꿀템 모니터암 NB-F80 사용기 가성비 끝판왕 시리즈 그 두번째 아이템 입니다. ㅎ 다이소에서 구입한 무선충전패드가 첫번째 였는데, 그때는 가성비에서 가격이 1이고 성능이 1이어서 가성비가 1이되었다면 이번에는 가격은 1이지만 성능은 그 이상이라서 체감가성비가 더욱 큰 핵 가성비 아이템 되겠습니다. 바로 모니터암 입니다. 명칭이 이게 맞는가 모르겠지만 그냥 그렇게 부르겠습니다. 제가 구입한 모델은 NB-F80이란 제품입니다. 제가 사용하고 있는 모니터가 삼성의 32인치 모니터입니다. (삼성 보급형 4K 모니터 [U32J590] 구매후기) 그런데 이 제품은 17~27인치가 공식 지원되는 모니터 크기입니다. 그런데 제가 왜 이걸 샀느냐가 이번 포스팅의 또다른 꿀팁 되겠습니다. ^^ 모니터암이란게오래전부터 써보고 싶은 아이템이었는데 그때는 .. 2019. 2. 15.
[파이썬의 기본] 리스트(Lists) 리스트 리스트(Lists)는 파이썬의 구조체입니다. 인덱싱된 요소들을 시리즈로 저장하는 역할을 합니다. 리스트 선언 대괄호([ ])로 둘러싸고 쉼표(,)로 요소 요소를 구분해서 리스트를 생성합니다. 그리고 요소의 시작 인덱스는 "0"부터 시작됩니다. 형태와 사용법이 C++의 배열과 유사하네요. 예제: >>> numbers = [5, 7, 10] >>> print(numbers[0]) 5 >>> print(numbers[2]) 10 그런데 특이하게도 리스트는 요소들의 타입이 서로 다른경우도 허용하고 있습니다. 예제: >>> number=5 >>> allthing=[33, “string”, [0,1,number], 3.14] >>> print(allthing[2][2]) 5 문자열에 대해서 리스트와 동일하게.. 2019. 2. 12.
[파이썬의 기본] 입출력과 연산 입출력 파이썬에서 기본적인 화면 입력과 출력에 “print”와 “input”이라는 명령어를 각각 사용합니다. 앞으로 GUI환경에서 프로그래밍을 주로 할 예정이긴 하지만 기본적인 개념이니 알고는 있어야 겠죠. 예제: >>>print('Hi') Hi >>>input('') Hi 'Hi' >>> 기본 연산 파이썬도 여느 프로그램 언어와 마찬가지로 가감승제에 대해서는 “+, -, *, /“ 의 기호로 표시할 수 있습니다. 예제: print(1+2) print(2*3) print(3-4) print(4/5) 결과: 여기서 재미있는 파이썬의 특징이 나왔네요. 위 예제코드에서 “4 나누기 5”를 했는데 결과값이 0.8이 나왔습니다. 정수 나누기 정수를 했는데 알아서 실수값으로 출력이 되었죠. 파이썬은 나누기를 하면 .. 2019. 2. 12.
[파이썬의 기본] 문자열 문자열 선언 파이썬에서는 문자열을 표현하기 위해서는 문자열 앞, 뒤에 작은따옴표(')나 큰따옴표(")를 사용합니다. 그리고 작은따옴표나 큰따옴표 자체를 문자열에 사용하기 위해서는 역슬러시를 사용합니다. 예제: >>> print('It\'s mine.') ‘It’s mine.’ 개행(new line) "\n"으로 개행을 표시할 수 있습니다. 그리고 추가적으로, 개행을 표현하는 다른 방법도 있습니다. 큰따옴표 3개로 둘러싼 문자열에서는 엔터로 줄바꿈을 하면 개행문자를 자동으로 집어넣어 줍니다. 문자열 연산 연결(Concatenation) 두개의 문자열을 합치는 명령어 입니다. 연결을 할때 문자열이 큰따옴표로 만들어 졌는지 작은따옴표로 만들어졌는지는 상관하지않고 그냥 합쳐줍니다. 예제: >>> "Spam" +.. 2019. 2. 12.
[파이썬의 기본] 변수 변수 파이썬의 큰 특징으로 변수에 특별하게 타입 지정이 필요없다는 점을 들 수 있습니다. 변수선언이나 정의가 간단하고 사용에 제약도 거의없어서 C++처럼 많은 고민이 필요없어 보입니다. 예제: >>> x = 123.456 >>> print(x) 123.456 >>> x = “This is a string” >>> print(x + “!”) This is a string! 게다가 만들어진 변수는 언제든지 재정의 할 수 있는데, 정수에서 실수로 심지어는 문자열로까지 형변환도 자유롭게 가능합니다. 변수를 사용함에 있어서 높은 자유도가 있기 때문에 베이직언어를 배우는것 처럼 거부감이 없어서 좋네요. 그렇지만 변수를 아무렇게나 막 사용할 수 있는건 아닙니다. 최소한의 규칙은 지켜야겠죠. 파이썬 변수사용 규칙 변수.. 2019. 2. 11.