탁자에서 떨어지지 않는 디오라고는 했지만

사실 탁자에서 떨어진다.

센서 감지 후 후진과 좌회전 로직에 의해 경계선에 있을 때에는...

그리고 경계선에 어색하게 사선으로 진입한 경우에는 센서 감지가 늦어서 떨어진다.

 

암튼...

지난 USB 케이블 연결에서 블루투스 모드로 테스트를 해 봤다.

블루투스 모드라고 해서 별도의 알고리즘 작성이 필요할 줄 알았는데...

아니었다.

 

아두이노 펌웨어를 USB연결 상태에서 블루투스 버젼 파일을 업로드한 후

PC에서 블루투스 장비 추가로 디오를 연결하고 포트연결을 확인 한 후

USB 연결선을 제거하고 USB연결 때와 같은 방식으로 포트만 달리하여 연결하면 되어

쉽게 셋팅이 끝났다.

 

그리곤 스크래치 파일을 열어서 그대로 '시작'

 

 

확실히 USB선이 없어서 회전이 깔끔하게 처리가 되어 좋았다.

 

이젠...

회전각 90도에 맞추어 정교히 회전하는 방법을 찾아보아야 하겠다.

그 전에 물론 모터 셋팅을 맞추고 난 후

모터 상의 문제를 최대한 줄여야 하겠고...

이 후에 모터 속도에 따른 회전 시간을 조절하여 맞추어 보아야 하겠다.

그런데 아무래도 바퀴가 좀 헐거운 듯해서 쉽지는 않을 듯...

Posted by 창석쌤
,

Dio를 가지고 만든 후 정리한 두 번째 미션

탁자 위에서 떨어지지 않는, 움직이는 디오 만들기


적외선IR 센서를 스크래치에서 쉽게 통제할 수 있다면 

라인트레이서와 같이 특정 영역 안에서 계속 돌며 '갇혀 있는 디오'만들기를 하고 싶었다.

하지만, 아직은 스크래치에서 IR 센서를 다루도록 되어 있지 않다는 말에...


나름 하게된 다른 비슷한 미션...

'탁자 위에서 떨어지지 않는, 움직이는 디오 만들기'


작동의 흐름은 이렇다.

디오가 전진을 하다가 탁자의 테두리 부분에 다다르면

전진을 멈추고 조금 뒤로 후진하여 왼쪽으로 방향을 틀어 다시 전진한다.

이를 탁자 위에서 디오가 떨어지지 않고 계속 반복하게 한다.


이를 위해서 IR 센서 대신에 선택한 것이

예전에 갈릴레오 보드 테스트로 받았던 세트에 포함된,

여분의 초음파거리 센서(Ultrasonic Range Finder HC-SR04)


디오 자체에 있는 초음파거리센서를 분리하여 위치를 조정하여 새로이 장착할 수도 있겠지만...

모든 재료의 활용이 자유롭지 않은 집에서 눈비비며 새벽에 작업하다 보니

복잡한 분리 과정 선택보다는

여분의 거리 센서를 적당한 방법으로 디오에 장착하여 연결하는 방법을 선택했다. 


먼저 한 일은

디오에 장착된 초음파거리센서의 연결 단자를 분리하는 것.

초음파센서 상단 연결핀에 바로 연결된 단자를 분리하니 다른 단자를 꼽기 쉽도록 되어 있었다.

아래 사진에서 정 가운데 부분에 흰색 단자 위에 작은 흰색 단자가 바로 초음파센서에 바로 연결되었던 단자 부이다. 



여분의 초음파거리 센서를 적당히 연결하여

처음에는 구조체를 만들어줄, 마땅한 것을 찾다가 활용한 것이 쓸모 없는 명함을 테이프로 연결하는 방법(^.^;;)

외모는 좀 허접해 보이지만 그래도 원하는 제 기능을 다 한다는...


작동 모습 - 동영상


동영상을 꼼꼼하게 보면 알겠지만...

mini-USB 선이 디오의 자연스런 좌회전을 막는다.

손이 좀 꼬이면서 일정한 각도의 회전이 되지 않는 점이 있다.


USB를 뽑아도 제대로 작동이 될까 싶어서 해보았는데... 작동이 안된다. 뽑기 전 최종 작동을 계속하는...

아두이노의 스케치 내용처럼 보드에 관련 알고리즘이 업로드되어 자유롭게 스스로 작동하지는 않는 듯하다.

이부분은 문외한이라 일단 관찰 결과만...



명함과 테이프로 연결한 것이 좀 마음에 걸려서

디오의 원래 상판을 이용하여 나름 업그레이드 실시

하지만 글루건이 없어서 그냥 만만한 테이프로 연결

앞에서의 초음파거리센서 값보다는 조금 상향 조정하여(설치 높이가 높아진 관계로) 장착

아래 사진들은 장착 모습을 다양한 각도에서 찍은 것들





무게가 앞으로 쏠려 제대로 작동할까 싶었는데 나름 잘 작동한다.

 

 

작업한 알고리즘 스크래치 파일

 

dio_always-on.sb2

 

 

이번 알고리즘을 만들면서의 Tip 또는 띵킹~!

 

1. 센서를 가급적 앞으로 돌출시켜야 바퀴가 탁자의 테두리를 타고 넘어가는 일이 없다.

  ==> 이는 아마도 디오 자체에서 라인단위의 알고리즘 진행 과정에서 라인과 라인 사이의 시간 텀이 비교적 길기 때문에 나타나는 문제점으로 보인다. 

   예전에 코드아이 연수 받을 때 제작자이며 강사인 쌤이 라인단위 실행에서 다음 라인으로의 진행을 위한 기본 시간 텀이 있다는 말을 얼핏 들은 기억이 난다. 

  아마도 이 때문에 로직에서 직진하다가 센서 측정값에 따라 바로 후진할 때에 일정한 시간이 걸리고 그 시간 때문에 여차하면 넘어가는 문제점이 다소 발생하기도 하는 것 같다.

  특히 테두리를 따라 사선방향으로 디오가 진행하는 경우 센서 측정값이 일정 수준에 다다르기에는 시간이 걸려 디오가 넘어가는 사례가 '종종' 있었다.


2. 초음파 거리 센서를 장착할 때에는 약간 전진하는 방향을 향해 '살짝' 센서를 틀어서 설치하면 좋다.

  ==> 초음파 거리 센서의 측정값을 좀더 일찍 확인하게 되어 시차발생문제(1번과 같은)를 해결하는 데 효과적인 것으로 생각된다.


3. USB선을 빼어도 제작한 프로그램 대로 디오가 작동할 수 있는 방법을 찾아 보아야 하겠다.

  ==> USB선의 트위스트 정도가 결국에는 디오의 회전에 영향을 미치는 것을 확인할 수 있었다.


4. 다음에는 난수를 발생시켜 어떤 때에는 좌회전, 어떤 때에는 우회전을 하도록하여 USB선의 트위스트를 최소화 하는 방향으로 조정해봐도 좋겠다.


5. IR센서처럼 바닥의 5개의 민감 센서로 어느 센서 먼저 탁자 밖으로 삐쳐나가는 가를 측정할 수 있다면

  그에 맞추어 적당히 좌회전과 우회전을 지정해 주어 더욱 효과적인 움직임이 가능하도록 조정할 수 있을 것이다.


6. 초음파 거리 센서를 디오에 3개를 동시에 장착하여 측정, 연동할 수 있다면 좋겠다는 생각... 그러면 5번의 생각을 IR 없이도 구현할 수 있지 않을까?


 

Posted by 창석쌤
,

나만의 아두이노 보드가 생긴다면 가장 먼저 작업해 보고 싶었던 것이

숫자를 입력받아 2진수로 표현한 후, 이를 차례로 꼽혀있는 LED로 2진수값을 표시하는 것이었다.


드디어 손꼽아 기다리던 Dio의 도착...

삼둥이들을 위해 스마트폰 앱으로 런닝 핑크피그의 모습으로 2일정도 지내다가 

드디어 밤중 작업으로 도전~~~!


핑크 피그의 모습



사실 디오를 스크래치와 연동하도록 하는데 이틀을 썼다.

이유인 즉슨... 정상적으로 모두 설치되고 셋팅이 되었으나, 메뉴얼 파일에 나타난 것처럼

정상적으로 연결이 되면 스프라이트 창에 디오가 나타나는 줄로 알고

"왜 내 컴에서는 안되는 거야?"하면서 이틀을 보냈다. 

고지식해서리... ㅠㅠ

알고보니 메뉴얼 위에 있는 파일명을 보고 같이 제공하는 디오용 스크래치 파일을 하나 열어보면 될 것을...


특히 Dio_start.sb2 파일이던가??? 암튼...


먼저, LED 불켜기 테스트...



일전에 스크래치로 짜두었던 2진수 판정 파일을 일부 손 보고...

Dio의 구조상 LED가 4개 뿐이어서... 0~15까지 표현하는 것으로 하고

몇 가지 파일 변경처리...


시도 1> dio_led_2bite.sb2

숫자를 입력받아서 16미만인지 확인한 후 

16미만이 아니면 재입력을 요청하고,

16미만이면 그에 따라 2진수판정 블록에서 2진수를 판정하고

그 결과를 이용하여 LED 4~1까지 차례에 따라 불을 켜도록 하여 처리


시도 2> dio_led_2bite_0~15.sb2

아래 그림은 자동으로 0~15까지의 수를 차례대로 1씩 키우면서

2진수 판정 블록으로 2진수를 판정하여 표시하고

그 결과를 이용하여 LED 불을 켜도록 처리하는 방법을 담고 있다.

스크래치 파일은 다운받아서 첨부파일로 쏙....



인증샷...

15를 입력하여 PC화면에서 2진수로 1111 임을 표시하고,

디오의 LED에서 4~1번 모두 불이켜지도록...




일단 '시도1'의 상황을 촬영한 것으로

컴퓨터 스크래치 상황에서 0~15까지의 숫자를 키보드로 입력하면 그 값을 받아 2진수를 판정하고

LED로 불을 켜주는 알고리즘의 시연 모습



'시도2'의 상황을 촬영한 것으로

컴퓨터 스크래치 상황에서 0~15까지의 숫자를 자동으로 1씩 키워 2진수로 이를 판정하고

LED로 1초간 불을 켜주는 알고리즘의 시연 모습

앞의 약 30초는 화면과 LED를 같이 보여주는 장면이고

뒤의 약 30초는 LED만 좀더 확대해서 다시 보여주는 장면...


ㅋㅋㅋ

물론 갈릴레오 2세대 보드로도 작업이 가능했을 것이다.

스크래치와 연동하여...

하지만 문제는 LED와 저항이 그렇게 여러 개 가지고 있지 않아서... 

디오가 오면 해볼것으로 노아둔 상황이다.


아무래도 수학적 아이디어가 많은 상황인지라...

2진수를 기계적으로 풀어주는 로직을 짜 두고... 이것을 이런데 응용해먹고 앉았다.


다음에는 디지털 디지트 표시 가능한 장비를 달아서...

한쪽에는 입력받은 10진수를 디지트로 표시하고

옆에서는 자리값을 표시한 LED로 2진수를 표시하는 것으로 도전해 보아야 하겠다.


SW 중점학교로 지원도 곧 될테구...

그에 따라 적당한 부속들과 교구로 이를 현실로 구현해보아야 하겠다...

Posted by 창석쌤
,