임베디드 개발을 하기 위해서 하드웨어 보드를 간단하게 만들 수 있는 방법이 많다. 대표적으로 아두이노, 라즈베리파이 등 교육용 개발보드를 빵판이랑 연결해서 만들 수 있다. 이렇게 교육용 보드로 쉽게 원하는 작업을 만들 수는 있지만 제품을 양산하기 위해서는 프로젝트에 맞는 칩을 선정하고 보드를 직접 제작을 해야한다. pcb설계를 하면 반드시 테스트를 거치고 양산을 해야 한다. 따라서 제품을 만들기까지 개발과정은 다음과 같다. 1. pcb설계 후 테스트보드에 납땜하기 연구보안상의 이유로 보드사진은 모자이크처리를 하였다. 간략한 목표 동작은 Atmega8 칩 위에 적외선 센서를 연결하여 리모컨으로 수신을 받을 수 있도록 구현시켜야 한다. 이번 프로젝트에서는 타이머 인터럽트(카운터), 외부인터럽트(적외선 신호 ..
이번에는 아두이노에서 사용되는 칩셋 Atmega328P와 PC간 시리얼 통신하는법을 배워보자. 원칙적으로 UART통신을 하려면 별개의 단자를 이용해야 하지만 아두이노의 USB b타입 단자를 연결하면 업로드와 UART가 동시에 된다. (왜 이렇게 되는지 원리를 아시는분은 댓글로 설명좀...) UART 란? UART란 다양한 직렬(serial)통신방식중 하나이다. 대표적으로 시리얼통신방식으로 UART, SPI, I2C등이 있지만 이번에는 UART를 이용해서 putty로 통신하는것을 확인해보려고 한다. 직렬통신방식이 있으니 당연히 병렬(parallel)통신 방식도 있다. 직렬, 병렬통신은 각각의 장단점이 있다. 병렬통신 병렬통신을 이용하면 간단한 프로젝트를 할 때는 쉽고 직관적으로 코드를 작성 할 수 있으며 ..
아두이노는 원하는 작업을 쉽게 구현을 하고 편리한 IDE프로그램을 이용해 코딩도 쉽게 할 수 있다. 그러나 이는 단순히 '쉽게'구현 할 수 있을 뿐 실제 임베디드 개발을 하기 위해서는 제약이 많다. 그래서 이제부터 아두이노 언어를 사용하지 않고 AVR코딩을 하도록 습관을 갖자. 아두이노 - Microchip Studio 연동 아두이노에서 사용하는 칩셋은 Atmel사에서 제작한 'Atmega328P'이다. 자세한 데이터시트는 다음과 같으며 회로도도 보면서 설계하면 많은 도움이 된다. ATmega328P (microchip.com)(데이터시트) arduino-uno-schematic.pdf(회로도) 또, 아두이노와 마이크로칩스튜디오와 연동하기 위해서 다음 블로그를 참고하자. Microchip Studio를 ..
이번에는 AVR의 Atmel Studio를 사용하는 방법을 알아보고 레지스터 제어하는 법과 시뮬레이터 디버깅을 해보자. (이 회사는 인수되고 이름이 중구난방이 되버렸다....처음엔 AVR Studio였다가 Atmel Studio로 바뀌고 이젠 Microchip Studio란다....난는 뭔가 Atmel Studio가 더 편하고 친근하다.) 환경 설정 Atmel Studio7 설치 후 File - New - Project 을 누르면 칩을 선택하는 화면이 나온다. 여기서 사용할 칩을 선택하면 되는데 가장 많이 사용하고 교육용으로도 사용되는 흔하디 흔한 ATmega128을 사용해보자. 칩을 선택하면 비주얼스튜디오와 비슷한 화면을 맞이 할수 있다. 이제 여기서 신나게(?)코딩을 해주면 된다. AVR코딩은 C언어..
지난 여름방학때 아두이노를 했다면 이번 겨울방학때는 본격적으로 임베디드 구현을 해보려고 한다. STM32칩으로 시작을 해보자. 환경 구성 임베디드 개발에 있어서 환경구성을 하는것이 반을 차지할정도로 상당히 중요한 부분이며 시간도 상당히 오래걸린다. 준비물 stm32 개발보드 (누클레오, 제작보드 등), STlink, 점퍼선, 케이블 첫번째로 STM32 cube ide를 설치해준다. 이 프로그램은 arm컴파일러와같이 통합환경을 제공해주는 프로그램이다. 여러개로 흩어진 파일을 하나로 관리를 하면서 쉽게 다룰 수 있는 장점이 있다. 아두이노 IDE와 비슷한 프로그램이라고 생각하면 된다. STM32CubeIDE - Integrated Development Environment for STM32 - STMicro..
드디어 대학생활 2학년이 끝났다. 1년이라는 시간동안 뭐했는지 모르게 너무 빨리 지나가버렸지만 돌이켜 생각해보면 많은 우여곡절이 있었다. 2021년 되돌아보기 1. 전과에 대한 고민 2학년 복학을 앞두고 진로에 대해 많은 고민이 있었다. 갓 군대 전역을 하고 내가 무엇을 하고싶은지보단 사회의 트랜드와 유망한 분야를 동경의 눈으로 바라봤던 것 같다. 2021년 한해동안 경제신문의 절반이 반도체 관련내용이라 무작정 반도체 분야가 취업이 잘될줄 알았다. 마침 학교 '나노반도체 공학과'에서는 상반기에만 삼성전자에 13명이 입사했다고 현수막을 걸었고, 프로그래밍이 너무나 싫어서 전과를 하고싶었다. 그래서 지도교수님의 결재까지 받았지만 집에와서 다시한번 생각해 보았다. 내가 반도체에대해 잘 알고 관심이 있어서 가려..
2020년 8월 태영이한테 공모전을 같이 참여해보자고 연락이 왔다. 그시절 태영이는 데이터분석에 빠지게 되어 공모전까지 찾아보는데 (지금은 데이터 소리만 들으면 치가 떨린댄다...) 마침 나도 하는일이 딱히 없어서 같이 참여하게 되었다. 그당시 참여한 공모전은 한국데이터산업진흥원에서 주최한 마이데이터 홍보 공모전이였다. 다음은 그시절 나랑 태영이, 태영이 동생이랑 같이 마이데이터 공모전에 제출했던 카드뉴스이다. (그시절엔 블로그를 안해서 지금이라도 올려야지.... 이 또한 컨텐츠....) 마이데이터 공모전 카드뉴스 결론 및 느낀점 작년만 해도 마이데이터란 생소하고 낯선 용어였다. 그러나 코로나의 영향인지 휴대폰과 컴퓨터를 많이 사용하게 된 이후 우리의 정보를 인터넷상에서 입력하게 되는 상황을 자주 접하게..
지난번에 Disctrete RV에서 Binomial과 Poisson 분포에 관해 다뤘다면 이번에는 Continuous RV에서 Exponential RV을 알아보자. What is Exponential Random Varialbe Exponential RV란 한글로 지수분포라고 한다. 사건이 독립적일때, 일정 시간동안 발생하는 사건의 횟수가 포아송 분포를 따르면, 다음 사건이 일어날 때까지 대기시간은 Exponential 분포를 따른다. 즉, 시간에따른 함수이기 때문에 continuous한 형태임을 알 수 있다. 이 분포의 PDF는 이름에서 알 수 있듯이 지수함수적으로 감소하게 되며 CDF는 각각의 PDF를 적분한 형태이기 때문에 증가하는 모양을 보인다. PDF는 다음과 같다. 이제 매트랩을 이용해 PD..
확률과 통계학 수업을 하면서 여러 확률모델에 관해 배웠다. 그중 이산적(discrete)인 Empirical PMF을 통해 Binomial RV와 Poisson RV를 비교해 보자. What is Binomial Random Variable? Binomial RV란 고등학교 확률과 통계 수업에서 배우는 '이항분포'와 같은 개념이다. n번의 독립시행중 성공할 확률이 p일 때 갖는 이산확률분포이다. 말로 표현하기에는 와닿지 않으니 바로 PMF를 확인해 보자 위 식을 해석하자면 총 n번 시행 중 성공할 확률 : p, 실패할 확률 : q (=1-p) 일때 성공을 k번, 실패를 n-k번 발생할 때의 확률을 표현한 식이다. 평균 : E[X] = np 분산 : VAR[X] = npq = np(1-p) Binomial..
학부연구실 활동을 하면서 진행하던 프로젝트의 회로설계와 PcB Artwork를 끝마쳤다. 이제 남은건 보드를 받고 디버깅 하면서 제품을완성 하는 것이다. 설계를 완료한 보드는 외주를 맡겨서 2~3주간 시간이 남는다. 남는시간동안 보드에 사용될 부품에 대해서 공부를 해 보았다. 우리가 회로제작을 하면서 사용되는 부품은 크게 두 분류로 구분 할 수 있다. 바로, 수동소자(Active componenet) 능동소자(Passive component) 각각의 부품종류와 특징을 알아보자. 수동소자(Passive componenet) 수동소자는 우리가 주변에서 가장 흔히 접하는 부품이며 회로이론에서 가장 기본이 되는 부품이다. 그 중에서 R(저항), L(인덕터), C(캐패시터)가 대표적인 수동소자이다. 수동소자의 특..
대학교 1학년 처음 C프로그래밍을 접해봐서 아무것도 모른 채 무작정 코딩하는법, 문법만 주구장창 외운 기억이 있다. 그렇게 공부를 하니 제대로 이해를 못한 채 한학기가 끝나버렸다. 방학때 스스로 공부를 다시 천천히 해보니까 하나 둘씩 원리가 이해되면서 퍼즐이 맞춰지는 기분이 들었다. 복습하는 차원으로 다시 정리를 하고 더 나아가서 컴퓨터 구조인 메모리 관점에서도 확인해 보자. 포인터 포인터란 각자가 표현하는 방식이 다양하게 있지만 나는 '주소를 가리키는 것'이라고 표현하고 싶다. 백문이 불여일견 빠르게 예제를 통해 확인하자 위와 같이 코드를 작성한 후 실행하면 다음과 같은 결과가 나온다. 이런 코드를 구간별로 나눠서 자세히 그림을 통해 분석해보자. 1번 구간 변수 3개를 선언하여 메모리 공간이 할당되었고..
어릴적부터 새로운 전자기기에 관심이 무척 많았다. 주변에서 휴대폰을 바꾸거나 새로운 전자제품을 사면 귀를 쫑끗🐰세워서 한번만 만져봐도 되냐고 귀찮게 굴었다. 가장 큰 충격을 받은적은 2008년 초등학교 3학년때 엄마가 아이폰 1세대로 휴대폰을 바꿔서 처음으로 스마트폰을 접했다. 인터넷을 손바닥만한 크기의 핸드폰에서 사용할 수 있다니😱 당시만 해도 인터넷을 하기 위해서 데스크탑전원을 누른 후 약 3분이 지나서야 인터넷 접속을 할 수 있던 환경이였기 때문이다. 어쩌면 그때부터 나의 관심사는 '전자'로 박힌 것 같다. 그러고 나서 지금까지 정말 무서운 속도로 기술의 발전(칩셋, 통신 등)이 일어나면서 이젠 언제 어디서나 웹서핑을 할 수 있게 되면서 영상도 끊김없이 고화질로 즐길 수 있게 되었다. 신기한 점은 ..
많은사람들이 질문을 할 수 있을것이다. 비주얼스튜디오, vscode와 같이 다루기 쉬운 툴이 있는데 뭐하러 불편하게 리눅스에서 C언어를 공부하나?? 맞는말이다. 비주얼스튜디오는 C언어를 배우기 위해 잘 만들어진 소프트웨어 툴이다. 그러나 실제로 전자공학에서는 C언어로 MCU를 다루기 때문에 문제가 된다. 우리가 사용는 PC대부분은 64비트 프로세서라서 넉넉한 메모리공간을 갖고 있지만 PC이외의 임베디드 제품(냉장고, 로봇청소기, 프린터 등)은 전부 8비트, 16비트와 같이 매우 협소한 공간을 갖는다. 심지어 OS가 내장되지 않은 제품은 더욱 고려할 사항이 많아진다. 이번 포스팅에서는 리눅스에서 C언어 코드를 작성, 컴파일, 디버깅하는 과정을 다뤄보자. C 코드작성 1. C언어코드를 담을 디렉토리를 생성하..
방학동안 교내 비교과 수업을 듣던 도중 좋은 기회가 생겨 연구실에 들어가게 되었다. PcB수업을 듣던중 교수님이 하드웨어 설계에 관심있는 사람은 개인적으로 연락하라고 해서 메일을 드렸더니 몇번 미팅을 가진 후 어제 계약서 작성을 했다.....! 연말까지 연구하는 조건으로 소정의 연구비, 성과급을 받기로 했다.💰 단톡방을 들어갔는데 전부 3, 4학년....나는 아직 꼬꼬마 2학년👶 (but 학번과 나이는 내가 두번째...ㅎ) 교수님께서도 내가 2학년이라 전공지식도 아직 부족한 것을 아실텐데 미팅에서 보인 열정(?)을 좋게 보셔서 같이 하게 된 것 같다....ㅎ 사실 PcB설계에 관심이 있어서 들어간 것이 아니라 뭐라도 배우면서 선배와의 교류를 하기 위해 들어간 목적이 컸다. 다행히 나이차이도 얼마 나지 않..
라즈베리파이는 소형 컴퓨터 이다. 게다가 리눅스 기반 컴퓨터라 사용자가 마음껏 용도를 바꿀수도 있다. 이번 포스팅에서는 구글의 모바일 및 웹 애플리케이션 개발 플랫폼 'Firebase' 에서 클라우드와 파이의 카메라, GPIO에 모션감지센서를 연결 할 것이다. 방에 침입자가 들어오면 모션센서가 이를 인식한 후 카메라로 찍어서 클라우드에 사진을 전송하는 기능을 구현해 보자. Firebase 설정 1. Firabase홈페이지에 들어가서 구글계정으로 가입 Firebase (google.com) Firebase Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되는 Google의 모바일 플랫폼입니다. firebase.google.com 2. 시작하기 -> 프로젝트 추가(Raspber..
리눅에서는 일반 윈도우와달리 파일을 가리키는 용어가 명확히 구분되어있다. 윈도우에서는 내pc를 폴더, 파일 등 어떻게 불러도 상관없지만 리눅스에서는 이를 디렉토리라고 부르며 .txt같은 문서를 파일이라고 한다. 따라서 우리는 명령어를 통해 디렉토리라는 방을 들어가고 나가게 된다. 이제부터 본격적으로 리눅스 명령어를 알아보자. 디렉토리 확인, 이동, 만들기 1. pwd : 현재 작업위치 기본 터미널창에서 pwd라고 치게되면 현재 내 디렉토리의 위치를 알려준다. 위의 뜻은 현재 내 위치는 home안에 pi라는 방(디렉토리)에 있다 2. 1) ls : 현재 디렉토리에 있는 모든 디렉토리 및 파일을 보여줘라 2) ls -a : 현재 디렉토리에 있는 모든 디렉토리 및 파일과 숨겨진파일까지 모두 보여줘라 3) ls..
매트랩에서 이미지프로세싱하는법을 간단히 배웠었다. 영상처리에 관해 교수님께서 다양한 말씀을 해 주셔서 라즈베리파이와 카메라로 영상처리를 해보고 싶었다. 국내 자료로 찾기 힘들어서 유튜브에 영어로 검색해보니 많은 자료를 찾을 수 있었다. 이번 포스팅에서는 사물인식하는 과정만 다루고 차선검출은 다음 포스팅에서 다뤄보자. 'Tensor Flow'란 무엇인가? Tensor Flow는 구글에서 개발한 오픈소스 소프트웨어 기계학습 라이브러리이다. 해당 라이브러리로 인공지능, 머신러닝 등 다양한 작업을 할 수 있다. 이번 포스팅에서는 'Tensor Flow Lite'를 사용하는데 기존 텐서플로우에서 임베디드장치에 사용 할 수 있도록 경량화시킨 버전이다. 'Open CV'란 무엇인가? Open CV는 인텔에서 개발한 ..
우리집에 7년정도 된 오래된 프린터(ML-2160)가 있다. 해당 모델은 PC에 USB연결을 해야 되고 연결된 PC에서밖에 프린트를 하지 못한다. 그래서 가족중 한명이 프린트를 하기 위해서는 해당 PC로 파일을 옮겨야하는 번거로운 과정을 거친다. 이런 불편함을 해결하기 위해 라즈베리파이랑 프린터를 연결해서 공용네트워크로 어디서든 프린트를 할 수 있도록 만들어 보자. 준비물 라즈베리파이 USB프린터 네트워크 ex) 공유기(와이파이), 이더넷(유선) 파이설정(터미널) 1. 라즈베리파이 버전 최신화 최신버전으로 update & upgrade 진행 sudo apt update sudo apt full-upgrade 2. CUPS 설치 CUPS란 Common Unix Print System의 약자로 컴퓨터(라즈베..
FTDI란 데이터의 형태를 변환 후 전송하는 모듈이다. 서로다른 데이터 형태끼리 통신할때 사용되며 이번 포스팅은 회로설계를 다룰것이므로 자세한 동작 원리는 마이크로프로세서 포스팅에서 다루자. 해당 모듈이 사용되는 대표적인 경우는 바로 '아두이노 프로미니'에 데이터를 주입할 때 이다. 아두이노 프로 미니는 다음과 같이 생겼으며 눈씻고 찾아봐도 USB연결하는 단자를 찾아볼 수 없다. 이에 데이터 주입을 하기 위해서 점퍼선을 UART모듈과 연결해서 데이터를 주입해야 한다. 처음 PcB설계를 하기 때문에 시중에 나와있는 FTDI의 데이터시트를 자세히 보면서 따라 만들어보자. FTDI의 데이터시트를 보면 FT232R로 만들 수 있는 다양한 회로가 나오지만 그 중 두가지 기능을 합친 회로를 만들어 보자. 첫번째로 ..
하계방학 마지막 비교과 수업PcB를 배워보자. PC, 스마트폰, 선풍기, 에어컨 등 우리주변의 전자기기중 PcB가 없는제품은 없다. 사실상 전자제품의 마지막은 PcB라고 해도 과언이 아니다. 반도체 칩의 설계를 기가막히게 하고 회로구성을 완벽히 구성했다고 해도 PcB가 없으면 제품으로 양산 할 수 없기 때문이다. 그렇다면 PcB란 어떻게 생겨먹은 놈일까? 위와같이 흔히 전자기기를 뜯어보면 초록색기판으로 된 판을 PcB라고 한다. 얼마전 데스크탑 조립할때도 메인보드, 램, SSD전부 PcB로 이루어져 있었다. 심지어 PcB가 초록색이라 국민램 삼성전자의 DDR4의 별명도 시금치이다. PcB의 역할은 기판 위에 많은 칩들이 서로 조화를 이루어 최적의 성능을 발휘 할 수 있도록 하는 교통로 역할이다. 또, P..