안녕하세요 시더입니다.


오늘은 코인 억셉터 연구를 해볼려고 합니다. 


네? 코인 억셉터가 뭐냐구요? 음.. 그.. 인형뽑기 아시죠? 거기서 동전 넣는 부분입니다. 


즉, 이것이 동전인지 아닌지, 얼마짜린지 등을 판별하는 센서(?)라고 생각해 주시면 됩니다.


그런데 아X로X 사이트에 코인 억셉터가 하나 올려져 있더라구요. 가격은 역시나 부담되고(학생이 그렇죠) 


결정적인 부분은 외국 제품인데 국산 동전이 정확하게 센싱 될까? 하는 부분이죠.  그리고 12V로 동작.. 아두이노에서 


뽑아 내는 전압인 3.3V과 5V로는 동작 시킬 수 없으니 추가적인 전원 공급이 필요하죠. 아.. 머리가 복잡해집니다.


그래서 비스무리한것을 찾아 봤죠. (동전의 액수만 인삭할 수 있으면 된다!!)



인터넷에서 쉽게 구할수 있는 장난감... 동전 저금통입니다(중국산) 1원은 뭐지?응?


그럼 폭풍 분해 들어갑니다.




내용물은 요렇게 되있습니다. 아.. 빵판은 제외죠.. 5백원도 물론..



더 분해합니다. 이부분이 실질적으로 동전을 센싱하는 부분이죠.

네.. 위 사진과 같이 첨부해서 보시면 동전을 넣음으로써 밀려나간 거리만큼을 기준으로 해서 몇원짜리 동전이 통과 되었는지를 확인합니다. 사이즈 비슷한 철조각도 동전으로 인식하게 되겠네요.. 그래도 정상적인 동전의 금액은 생각보다 정확합니다.


3번 사진에 납땝작업을 해서 전선을 달아서 이것저것 테스트를 해봅니다. 몇가지 패턴이 있더라구요. 이것은 좀 시간을 들여서 기록해야할것 같네요. 이부분 분석이 끝나면 아두이노에 적용해볼 예정입니다. 




Posted by 시더
,

안녕하세요. 시더입니다. 


오늘은 다소 어렵지만 재밌는것을 해보려 합니다.


바로 안드로이드와 아두이노간의 시리얼 통신인데요.. 아이폰은 예전부터 지원됬으나 안드로이드는 지원이 된지


얼마 안된것으로 알고 있습니다. 


-준비물-

아두이노 Uno 

안드로이드 폰 (갤럭시 S3 테스트)

USB B타입 (F) to 마이크로B (M)  젠더나 케이블

기본 설정만 되어 있는 심플한 안드로이드 앱



그럼 시작하도록 하겠습니다.


가장 먼저 https://code.google.com/p/usb-serial-for-android/ 사이트에 접속해주세요.  들어가자 마자 반겨주는것


은 영어입니다. 다른 부분은 천천히 시간나면 읽어 보시구요. 우리는 빠른 진행을 위해서 ...Quick Start 을 읽어


줍니다.


Quick Start

1. Download usb-serial-for-android-v010.jar

// 저 jar 파일은 다운 받아주시구요.

2. Copy the jar to your Android project's libs/ directory. (See Android's FAQ for help).

// 여러분이 만든 안드로이드 프로젝트의 libs/ 디렉토리에 저장하세요.

3. Copy device_filter.xml to your project's res/xml/ directory.

// 그다음에 요 xml 파일은 다운받아서 res/xml/ 디렉토리에 저장하세요. 이 폴더는 기본 생성시 없으니 xml 폴더 추가해주시구요.

4. Configure your AndroidManifest.xml to notify your app when a device is attached (see Android USB Host documentation for help).

// 그리고 안드로이디 매니페스트.xml 파일에 해당 부분의 소스를 넣어줍니다.


<activity
   
android:name="..."
    ...
>
 
<intent-filter>
   
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
 
</intent-filter>
 
<meta-data
     
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
     
android:resource="@xml/device_filter" />
</activity>

이 부분을 넣어 주시면 되는데요. 일단 간단하게 설명하자면.. 메인 엑티비티 부분에 저 부분을 넣어주면 됩니다.


5. Use it! Example code snippet:

// 밑의 소스를 사용하면 됩니다.

// Get UsbManager from Android.
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);

// Find the first available driver.
UsbSerialDriver driver = UsbSerialProber.acquire(manager);

if (driver != null) {
  driver
.open();
 
try {
    driver
.setBaudRate(115200);
   
   
byte buffer[] = new byte[16];
   
int numBytesRead = driver.read(buffer, 1000);
   
Log.d(TAG, "Read " + numBytesRead + " bytes.");
 
} catch (IOException e) {
   
// Deal with error.
 
} finally {
    driver
.close();
 
}
}


위의 소스를 메인 엑티비티에서 적절히 넣고 활용해 주시면 됩니다. 간혹 driver 값을 인식이 잘 되지 않는경우가 있는 그럴 때는 아두이노 부분도 확인을 해보시는것이 좋습니다.


프로젝트 결과 화면





음.. 안드로이드 와 아두이노 두개의 연동이 이제 가능해 졌네요. 저 작은 부품(젠더)만 있으면 말이죠. 가격도 


비싸지 않은 편이라 부담없이 도전해볼만 하다고 생각합니다만 그.. 안드로이드가 익숙하지 않은 분들은 난이


도가 조금 높게 느껴지실 겁니다


p.s: https://code.google.com/p/usb-serial-for-android/ 주소에서  지원되는 usb 변환 칩과 지원가능한 기기 목록이 적혀있으니 이부분도 확인해보세요. 

Posted by 시더
,

안녕하세요 시더입니다. 오랜만에 포스팅을 하게 되네요.


날이 갈수록 바빠서 고민입니다. 남는건 없는데 시간만 쪼달리니 말이죠.


오늘은 아두이노 카페에서 눈팅을 하던중 재미있는 게시글을 보고 되었고 호기심에 실험을 해보았습니다.


그것은 바로 [스마트폰 전원으로 아두이노 동작] 입니다. 



솔찍히 처음 동영상 볼떄는 반신반의 했습니다. 스마트폰 전원으로 아두이노를 동작시킨다니... 의심이 많은 성격이


라.. 이론상 아두이노도 5V 동작이고 스마트폰도 5V 동작이니 될것 같긴 하지만.. 직접 해보지 않으면 못살죠. 


그리고 빠른 부품검색... 은 했으나 인터넷에선 usb B(F) to micro B(A) 케이블은결국 못찾았습니다. 찾으면 명탐정 


캐이블의 종류는 수도 없이 많은데.. 검색은 너무 힘들더라구요. 결국 젠더로 결정.. 이것은 비교적 쉽게 찾았습니다.


다른분들도 도움이 되고자 모델명 남깁니다 장사 아닙니다    [Coms USB 젠더 - Micro B(M)/A(F)]


그리고 결과 화면.. 소스를 올려서 동작시키지는 않았지만.. 아두이노에 전원 Led가 들어와 있는것을 볼 수 있습니다.


나름 신기하더라구요. 다음 포스트는 스마트폰과의 시리얼 통신을 작성해보도록 하겠습니다.






Posted by 시더
,

안녕하세요. 시더입니다. 새해 첫 게시글이 된것 같네요.


오늘은 아두이노 스토리 카페를 보다가 관심가는 글을 보게 됬습니다.


대략적인 내용은 


1)USB 포트에 스마트 기기를 연결되면 아두이노에서 특정 동작을 하도록 지시하는 것

2)스마트폰에서도 연결 상태를 인식해서 특정 동작을 할 수 있게 하는것 


요렇게 2가지로 되있는데.. 


1번은 당연히 될거라고 생각하고 바로 테스트를 해봅니다.



오.. 연결만하면 MCU에서도 바로 디바이스에 대한 정보를 얻을 수 있네요. 


SPP를 쓰는 방법으로 어플을 설치해야만 데이터 교환이 가능하다고 알고 있었는데 디바이스 정보등은 별도로 저장된걸 가져다 볼 수 있네요.


자세히 보면 Product ID가 다른것을 볼 수 있고, Vendor ID는 같네요.(둘다 삼성 제품이니까..)


하여튼 1번 조건은 디바이스가 연결되면 MCU에서 특정 동작을 실행 시키는건 쉽습니다. 


2번은 스마트폰에서 디바이스로 데이터를 전송시키는 방법은 SPP을 쓸것이고, 그럴려면 어플을 설치시켜서 어플로 시리얼 데이터를 보내는 것으로 끝내면 이것도 쉬운데.. 


문제는 

-그 어플을 사용자가 어디서 구해서 설치하는가?

-QR코드가 근처에 있어서 다운받으면 된다고 해도 사용자가 귀찮아서 과연 사용할까?


이 문제를 해결해야 할것 같네요. 루팅해 루팅.. OS까지 뜯어보면 해결책이 있을지 몰라.





Posted by 시더
,

안녕하세요 시더입니다. 오늘은 오랜만에 이더넷 쉴드를 꺼내서 뭘좀 해보려 합니다.


그것은 바로.. 한글 인코딩!


네.. 아두이도 개발툴에서 한글이 좀 깨지는 현상이 발생하죠. (1.0 이후버전은 설치를 안해봐서 모르겟네요)


그렇다고해서 실제 값까지 깨지거나 하진 않습니다.


그런데 웹서버를 동작시켜 보면 그림과 같은 현상이 발생하게 되는데..



네.. 잘깨집니다. 자세히 보면 저런 형식으로 깨지는 한글은 인코딩 문제일 가능성이 높습니다. (웹프로그래밍을 좀 해보다보니 뭔가 감이 오더라구요.)


그래서 소스를 바로 수정합니다.

euc-kr 도 깨지고, uft-8로 정상적으로 출력되네요.



client.println("Content-Type: text/html; charset=utf-8"); 


이렇게 소스를 작성 해주시면 됩니다.



늘 그렇듯 하드웨어 사진도 한장 첨부합니다.  다음에는 트위터 봇을 한번 만들어볼까 생각중입니다.

(그전에 저 쉴드가 너무 뜨거워지네요. 방열판 부터 구해야할것 같습니다.)




Posted by 시더
,