기본 콘텐츠로 건너뛰기

CHIP 첫 구동

20170702 주말을 반납하고 연구실에 나가서 외로운 실험. 비가 많이 왔음 C.H.I.P를 구동하기 위해 데비안을 설치한 내용이다.. C.H.I.P는 두가지 정도의 OS가 사용이 가능하다. 하나는 GadgetOS, 그리고 흔히 쓰는 데비안이다. GadgetOS는 익숙하지가 않아서 데비안을 설치하였다. 일단. 설치를 진행하면서 다음과 같은 시도를 해보았다. 웹서버, 파이썬, SSH, WIFI lighttp를 apt로 설치하였더니 잘 작동한다. - 일단은 셋팅을 위해 웹서버만 구성하고 인덱스 페이지만 확인하였다. 파이썬 3를 pip, build essential git 모두 작동하였다. - 파이썬의 구동은 콘솔명령으로 구성하였다. wifi셋팅 - 잘 잡힌다. 하지만 내장되어 있는 세라믹 안테나는 수신감도가 조금 떨어지는 문제가 있는 것 같다. 안테나를 추가 장착할 것을 고려해봄직하다. SSH -putty로 접속 시도하고 이상없이 거의 완벽하게 콘솔을 사용하였다. 드러난 문제점 온도문제  히트싱크가 필요하다. 손으로 만져보니 기판 전체가 뜨거워져있다. 온도는 40도가 넘는것 같다. apt -get install중 프리징 프리징 현상이 일어나서 OS를 처음부터 다시 설치했다. 한번 프리징이 나면 답이 없다. nand에 기록 중에 과열로 인해 오작동이 일어나고 그 이후로는 제부팅 하고 나서도 뭔가 이상하다. nand에 기록하는데 한계가 있는지 조사해봐야겠다 해결책 히트싱크 장착 히트싱크는 좀 비싸다 라즈베리 파이용으로 구해서 장착해봐야겠다. wifi안테나 장착 원래 하나 준게 있는데 내가 잃어버렸다. 안테나가 있으면 수신감도도 좋아지고 작동속도나 전력효율면에서 유리해 질 것 같다. 더 해볼내용 I2c통신 시도 i2c 통신을 위해 몇가지 시도를 해보고 싶다. 내장되어 있는 pwm은 2개로 뭔가 제어하기에는 부족함이 많다. * 아는 것과 / 아는 것을 경험해 보는 것 / 그리고 아는 것을
최근 글

무명의 교사를 위한 노래

IT기술을 무지막지하게 사랑하지만, 인공지능이 교사를 대신 할수 없다고 생각한다. 교사는 단순한 지식을 전달하는 사람이 아니라  지식을 사랑하는 마음을 전하는 사람 민주시민의 영혼을 양육하는 사람이니... AI가 절대 대신해서는 안되는 직업이라 생각한다. 1정연수는 나에게는 정말 슬픈 시기였지만 연수원의 벽에서 만난 이 시는 내가 무엇을 해야하는지 깨워주었다. 조금은 고단한 새벽 다시금 이 시가 그리워 블로그에 올린다. -무명교사 예찬사- 나는 무명 교사를 예찬하는 노래를 부르노라. 위대한 장군은 전투에서 승리를 거두나. 전쟁에서 이기는 것은 무명의 병사이다. 유명한 교육자는 새로운 교육학의 체계를 세우나. 젊은이를 건져서 이끄는 자는 무명의 교사로다. 그는 청빈 속에 살고 고난 속에 안주하도다. 그를 위하여 부는 나팔 없고. 그를 태우고자 기다리는 황금마차는 없으며. 금빛 찬란한 훈장이 그 가슴을 장식하지 않는도다. 묵묵히 어둠의 전선을 지키는 그 무지와 우매의 참호를 향하여 돌진하는 그 이이니 날마다 날마다 쉴 줄도 모르고 천년의 적이 악의 세력을 정복하고자 싸우며 잠자고 있는 영혼을 깨워 일으키도다. 게으른 자에게 생기를 불어주고 하고자 하는 자에게 고무하며 방황하는 자를 확고하게 하여 주도다. 그는 스스로의 학문하는 즐거움을 젊은이에게 전해주며. 최고의 정신적 보물을 젊은이들과 더불어 나누도다. 그가 켜는 수많은 촛불 그 빛은 후일에 그에게 되돌아 그를 기쁘게 하노니 이것이야말로 그가 받는 보상이다. 지식은 새 책에서 배울 수 있으되 지식을 사랑하는 마음은 오직 따뜻한 인간적 접촉으로서만 얻을 수 있는 것이로다. 공화국을 두루 살피되 무명의 교사보다 예찬을 받아 마땅한 사람이 어디 있으랴. 민주사회의 귀족적 반열에 오를 자 그밖에 누구일 것인고

C.H.I.P 을 구동하기 위해 서칭한 내용

오늘 서칭한 내용. C.H.I.P의 ADC해상도와 채널 늘리기 (센서) C.H.I.P의 ADC는 해상도가 매우 낮으며 1개 채널만을 가진다. 해상도는 6비트에 불과하며 많은 사람들이 16비트의 해상도와 얻기 위해 사용하는 부품이 있다. https://www.adafruit.com/product/1085 이 부품은 아날로그를 디지털 방식으로 변환해 주며 통신방식은 I2C를 이용한다. I2C의 통신을 위해 4개의 GPIO핀을 소모해야한다. 사용되는 IC는 ADS1115이다. 포럼의 많은 사람들이 이 칩을 신뢰하는 것으로 보인다. 라즈베리파이의 gpio소스를 사용하면 센서를 읽는 것이 가능할 것으로 보인다. 굳이 아두이노 소스를 사용해야 할 경우 gpio를 통해 펌웨어를 업로딩하는 것이 가능할 것이다. 센서를 교체해야 할 경우 사용가능할 것으로 보인다. 위의 ADC를 사용하기 때문에 굳이 필요하지는 않을 것같다. C.H.I.P의 PWM 채널 늘리기 (액츄에이터) PCA9685 16채널, PWM 이다. i2c인터페이스이다. https://www.adafruit.com/product/815 아이디어/4개채널은 DC모터 컨트롤에 활용할 수 있겠다. 12개 채널은 서보모터를 컨트롤하면 4족보행로봇이 가능하겠다. 스크래치 https://scratch.mit.edu/developers php로 파이썬 바로 실행 https://stackoverflow.com/questions/19735250/running-a-python-script-from-php https://stackoverflow.com/questions/32119703/php-exec-external-python-script-permission-denied 블로키- 아...구글은 정말 아름답다. https://developers.google.com/blockly/guides/create-custom-blocks/blockly-developer-tools

PID제어 2편 I제어 - 잔류편차 없애기

  1편에서 설명한 P제어는 움직임의 효율을 크게 개선한다. P제어만 하더라도 초등학교 소프트웨어 교육에 적용한다면 학습자들이 로봇의 움직임을 구현하는데 만족도가 클 것이다. 그러나 엄밀하게 말하면 실제 목표값에 도달하지는 못한다.   실제 구현하게 되면 로봇은 일종의 진동운동을 하게 된다. 이 진동은 더 줄어들지 못하고 주행하는동안 계속 유지되는 일종의 "안정"된 상태를 유지한다.  그러나 만약 이안에 사람이 타승했다 가정하고 직진해야 하는 로봇이 계속 좌우 진동을 한다면 멀미가 날 것이다. "안정된 진동"현상을 개선하기 위해서는 특별한 방법이 필요하다. P제어에 I제어를 첨가한다. 로봇의 움직임을 상상하기 위해 탱탱볼로 비유해보고자 한다. 이 탱탱볼을 탄성계수가 매우 이상적인 형태로 원래 입사한 방향에 반사된다고 가정한다. 일단 ON/OFF제어를 이용한 탱탱볼은 다음 그림과 같이 움직일 것이다. 점선은 탱탱볼의 우리가 원하는 진행방향이고 아래 벽은 우리가 설정한 경계값, 그리고 위쪽 벽은 탱탱볼이 센서를 읽은 궤적이라 치자. 그리고 파란색 선은 탱탱볼이 실제로 움직인 모양을 표현했다. 이 비유는 약간의 오개념은 있지만 필자가 보기엔 그럭저럭 비슷하다. 만약 ON/OFF 제어를 P제어로 바꾼다면 이런 그림의 탱탱볼운동으로 바뀔것이다. 보라색 선은 오차를 계산해서 진행방향에 직진성을 더해가는 P제어의 지점들이다. 실제 경계선은 없지만 점선과의 거리에 의해  수정된 가상의 벽면이다. 이 벽면은 점점 그 거리가 오므라 드는가 싶더니만 마침내 평행하고 만다. 이렇게 평행한 상태의 오차를 "잔류편차" 또는 "잔차"라고 한다.  (용어를 정확히 알아두는 것은 중요하다고 생각한다. 왜냐하면 더 발전된 내용을 검색하거나 남에게 설명할때 시행착오의 여지를 없애기 때문이다.) 잔차의 원인은 필자의 생각에는 이렇다. 1. 샘플링 주기- 센서의 샘플링 주기가 잔차의

PID 제어 1편 P제어

현실의 내용을 반영해야 하는 로봇이나 피지컬 컴퓨팅의 경우 다양한 센서 부품을 사용하게 된다. 센서는 그 값을 아날로그 또는 디지털로 프로그램에 전달하는데, 이때 센서의 값을 효율적으로 이용함으로써 로봇과 피지컬 컴퓨팅 기기를 효율적으로 작동시킬 수 있다.  이 글에서는 센서의 값을 효율적으로 이용하기 위해 가장 기초적으로 사용한다는 피드백 제어와 PID 제어에 대해서 이야기 하고자 한다. 어디에 쓰이는가.  센서의 값을 움직임에 반영하는 거의 대부분의 기기에 활용된다. 예를 들어 에어컨의 온도조절, 드론의 수평잡기, 먼~ 예로 우주선의 착륙 등에 활용될 수 있다. 어떤 제어 과정을 거치는가   위키백과 영문판을 구글링 해보면 PID feedbaack 컨트롤의 블럭 다이어 그램이 제시되어 있다. PID feedback process By Arturo Urquizo - http://commons.wikimedia.org/wiki/File:PID.svg, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=17633925   다이어 그램의 PID는 각각 비율, 적분, 미분을 의미한다. 최초 r(t)라는 값은 지난번 처리된 y(t)와 함께 처리되어 e(t)가 되며 e(t)는 P,I,D세가지 과정을 거쳐 u(t)로 되고 다시 이것이 처리되어 결과인 y(t)가 된다. y(t)는 출력되거나 다음 번들어오는 r(t)의 처리를 위해 활용된다. 즉 r(t)의 값이 센서의 값이라면 이것은 PID의 과정을 거쳐 새로운 값이 되어 모터등의 작동에 반영되고 반영된 값은 다시 들어오는 센서값에 영향을 주게 된다는 의미이다. 라인트레이싱에서의 적용 On/Off알고리즘과 P제어 먼저, 라인트레이싱의 예로 P제어를 설명해보고자 한다.  P는 proportion 비율의 첫 글자이다. 초등학교 로봇교육에서는 대부분 On/Off알고리즘을 활용하여 라인트레이싱을 구현하고 있다. 학생들이

프로세스의 다섯가지 상태 (process's five states)

OperatingSystemConcept를 참고하면 프로세스는 new, ready, running, waiting,  terminated 다섯가지 상태를 지닌다. 일단 프로세스를 메모리에 적재되어 실행되는 프로그램으로 정의한다면 각 상태는 다음과 같이 설명할 수 있다. new : 프로그램을 메모리에 적재하기 위해 프로세스를 생성중이다. ready : 프로그램이 메모리에 적재되었고 처리기에 할당할 준비가 되었다. running : 처리기에 의해서 명령어들이 실행중이다. waiting : 프로세스는 어떤 사건을 기다리고 있다. 이 사건이 충족된후 ready상태가 될 것이다. terminated : 프로세스의 실행이 종료되었다. 한편 이 다섯가지 프로세스 상태들은 다음 다이어그램과 같이 전이된다.

캐쉬(Cache)

Cache란? 캐쉬는 접근속도가 다른 저장 시스템간의 속도차를 보완 해주는 장치이다.   A라는 장치에서 B라는 장치로 내용을 요구하는 경우,cache는 B라는 장치보다 접근 속도가 빠르다고 가정한다.  B라는 장치에 있는 내용의 일부가 cache에 저장되어 있다면 A는 B에 내용을 요구하는 것보다 cache에 요구하는 것이 속도면에서 나을 것이다. B를 아예 cache로 대체하면 좋겠지만, cache는 B보다 속도가 더 빠르기 때문에 당연히 가격도 비싸다. 따라서 cache는 일정 크기만 구비해 두고 자주 쓰이는 데이터만 저장한다. Cache를 이용한 처리 과정의 예 캐쉬는 속도차가 큰 저장시스템간에 사용될 수 있다. cpu와 주기억장치 사이에 있는 cache가 그 예중 하나인데,  운영체제가 Cache를 이용하여 프로그램을 수행한다면 다음과 같은 과정이 된다. 데이터를 주기억장치 로부터 cache로 복사 cache에서 데이터를 꺼내 처리 다음 데이터 요구시 cache를 검사하여 원하는 데이터가 있으면 cache에서 데이터를 받아 처리 만약 데이터가 없다면 주기억장치로 부터 cache로 데이터를 복사후 데이터를 처리