올 10월 10일 지나라는 회사에서 만든 타요 다기능 운전놀이를 지역 커뮤니티 카페에서 나눔 받았다.


받으면서 소리가 원래 났었는데 어느 순간부터 나지 않았다고 하신다.

원래는 카시트 앞보기를 하면서 심심할 걸 대비해서 받아온 것인데 유모차 앞에 시험삼아 장착을 해보니 빼라고 난리다.


그래서 현관 출입문에 끼어 놓았는데 불빛만 나오는 정도라 그냥 지나가다 가지고 노는 수준이다.

나중에 고치고 나서 알았지만 이 장난감에서 소리를 빼면 앙꼬를 뺀 붕어빵이다.


고치려고 분해를 해보니 왠지 스피커 부품이 고장이 나서 소리가 나지 않는 것 같았다.

얼마전에 가습기를 고치기 위해 구입한 멀티테스터로 스피커 쪽에 전압을 측정해보니 3V 정도의 전압이 들어오고 있었기 때문이다.


8옴짜리 0.25와트 스피커를 찾으려고 검색해보니 나오는 건 알리익스프레스이다.

가격은 싼데 배송도 길어서 언제 받을지 모르겠어서 어렵게 검색해서 나온 부품가게에 주문을 했다.


또한 집에 납땜기도 없어서 납땜을 위한 도구들도 주문했다.

늘어나는 전기 관련 공구도 담을 공구 박스도 구입했다. 초기 투자 비용이 쎄다. ㅎㅎㅎ


23일 목요일에 스피커까지 도착해서 작업.


붙어 있는 것이 고장난 스피커이다.


전에 있던 것은 납땜으로 열을 가해서 떼어 내고, 새로운 스피커에 납을 조금씩 녹여서 붙여주었다.

납땜 자체는 어렵지 않았는데 문제는 스피커에 자석이 있어서 인두에 쩔꺽 붙는 것이다. 스피커를 녹일 뻔 했다.


다리미로 밭혀놓고 무사히 납땜질 까지 하고 테스트 해보니 소리가 잘 난다.


이제 조립만 하면 되겠다 생각하는데 와이프가 납 연기 환기하라고 문열어논 틈을 타고 아이가 들어와서 가지고 놀려는데..


아내를 불러 소환시켰다.


무사히 조립해서 켜주니 잘 가지고 논다. 자러 갈 시간인데 신났음...



사실 고치기 전에 지나 A/S 센터에 문의를 했었는데 비용이 발생할 수 있다고 하고 시간이 걸린다고 해서 접수도 번거로워서 그냥 고쳐보기로 했는데 생각보다 쉽게 고쳤다. 이 글을 보시는 전국의 아버님들도 한 번쯤 도전해보시면 나름 보람도 있고 재미도 있습니다.


저작자 표시 비영리 동일 조건 변경 허락
신고

집에 테스터가 없어서 구입한 FLUKE-107가 어제 집에 도착했다.


간단히 사용법을 익혀서 저항하고 전압, 주파수 재는 법을 습득했다.


어디가 문제인지 판단을 위해 진단 시작.

진동자의 양극은 주파수가 엄청 높았다. 초음파 가습기라고 하는 것을 계측을 해보고 알았다.

보통 대한민국의 교류는 60Hz인데 진동자 연결부의 주파수는 20,000 Hz 이상이 계측되었다.


테스트로 회로로 만들어서 진동자 연결자와 진동자에 선을 만들어서 동작을 해보았다.


다행히 동작하는 것을 확인했다.


원인은 진동자의 접촉부에 있었다.

문제는 어떻게 연결을 하느냐이다.



다시 분리에 들어갔다.


진동자 연결부까지 분리해보니

오른쪽 진동자 접촉부가 스프링 탄성이 줄어들었는지 아니면 안에서 녹이 슬었는지 왼쪽 만큼 나오지 않았다.


그래서 접촉부를 2mm정도 앞으로 빼기로 했다.


NT커터 30도 칼로 일일이 수작업을 했다.


문제는 앞에가 잘리면 헐렁해서 뒤에 닿을 수 있다는 것.

그래서 뒷부분에 처음에 본딕으로 레벨링을 하다가 잘 안되어서 붙여버렸다.


접촉이 잘되나 결합전 사전 테스트


미스트가 잘 나온다.


노박 가습기 연결자 돌출부가 달라졌어요..



다시 결합해서 실 사용...



아침까지 문제 없었다.



제발 손 좀 안가게 했으면 좋겠다.

가끔 엔지니어로 살아가는 것이 삶에 도움이 될때가 있다.


저작자 표시 비영리 동일 조건 변경 허락
신고

결혼하면서 누나한테 선물받은 가습기이다.

가격은 20만원대의 적지 않은 금액이었던 걸로 기억하는데,


가습기 살균제 사망사건으로 살균제가 이슈화 되었을 때 스텐레이스 수조를 분리해서 따로 삶아서 소독을 할 수 있다는 아이디어가 괜찮아 보여 이 걸로 사줘 했었다.


그런데 사용하면서 몇 가지 문제점들이 보였다.


1. 대용량 수조의 물의 10센치 정도는 가습을 하지 못하고 가습기가 멈춤

2. 습도 센서가 제대로 작동안하는지 주위 습도와 상관없이 습도 표시가 됨

3. 가끔 원인을 알 수 없는 동작 불가

4. 스텐레이스에 딱딱한 이물질이 낌 (베이킹 소다, 구연산으로도 제거 불가)


가장 큰 문제는 가습기가 작동하지 않는다는 것.


인터넷에 검색을 해보니 다음과 같은 기사가 있었다.


“노박가습기, 습도가 안 올라요”…소비자 원성 높아, 소비자 경제


이 기사에 나오는 현상이 나와 유사하다.


심지어 노박가습기 as 및 결함으로 인한 피해모임 이라는 카페까지 생겼다.

보니 카페 폐쇄가 됨에 따라 이주해서 새로 만든 카페인 것 같다.


노박 홈페이지에 가보니 무상 업그레이드 관련 팝업이 떠서 메일 문의 했더니 아래와 같은 이미지가 있는 메일을 받았다.

2016년 12월


무상과 유상 AS로 나뉘어져 있었는데 업그레이드하면서 습도센서가 없어져 버렸다.

또한  가습기를 사용하면 옆으로 콜로이드 입자가 삐져 나오는데 문제를 인식했는지 유상 업그레이드는 실리콘 패킹이 추가 되었다.


2017년 5월 가습기를 AS를 보내려고 포장을 해놓았는데, 카페에 업그레이드 하고 나서 또 고장났다는 글들이 보여서 과연 이걸 보내서 제대로 된 물건을 받을 수 있을까 걱정만하다가 창고에 보관되었다.


그리고 2017년 건조의 계절 겨울이 들어오자 10월에 다시 창고에서 꺼내서 사용을 했는데 수증기가 안나온다.

팬은 동작하는데 말이다. 아마도 진동자의 접촉불량인 것 같아서 금속부분에 있는 녹을 살짝 제거하니 좀 나온다.


그런데 사용한지 하루만에 이젠 전원이 켜지지 않는다. 왠지 어댑터 문제인 것 같아서 다른 어댑터를 껴보니 그게 맞는 것 같다.


노박 홈페이지에 다시 가보니 무상 업그레이드 지원이 중단되었다고 한다.

무상A/S 기간종료 공지사항

저희 가습기를 사용해주시는 고객분들께 진심으로 감사드립니다.
2016년 10월부터( 2015년~2016년 판매제품) 적용되었던 무상A/S가 2017년 9월30일부로 무상기간이 종료되었습니다.
2017년 10월1일부터 접수되는 A/S는 부품수리비용이 유상청구되오니 이점 참고하시기 바랍니다.
2016년10월1일~2017년9월30일까지 유상보상판매(제품구매)를 받으셨던 고객님들께는 1년의 추가보증기간이 적용됩니다.
머커주식회사에서는 “NOVAC”모델 가습기는 별도로 판매하지않습니다.
추후 많은 관심과 애용 부탁드립니다.

고장수리 의뢰시 이메일로 A/S접수(고객명,연락처,주소,고장내용) 메일발송하시고, 아래의 주소로 제품을 잘 포장하여 선불 택배발송해 주시기 바랍니다.
(포장미흡으로인한 제품손상, 부품누락, 주소 오배송으로 인한 분실은 당사에서 책임지지 않습니다)

※ 고장수리접수 업무 PROCESS
▶고객수리요청메일접수▶고객 A/S센터 선불택배발송▶머커A/S접수▶수리견적후 고객메일발송▶고객수리비용 입금 및 수리요청메일발송
▶머커A/S입금확인 및 수리후 택배선불발송▶고객제품인도
(수리기간은 접수후 영업일기준 7~10일 소요됩니다)

※ AS센터 주소 : 서울시 서초구 서초동 1451-38 정주빌딩 9층(신주소: 서울시 서초구 반포대로20 정주빌딩9층)
– AS관련 접수 이메일주소 : info@merkerr.com

▣ 저희 머커는 더좋은 제품을 만들기 위해 최선을 다할것입니다. 많은 성원에 깊이 감사드립니다.


혹시나 이메일로 문의를 했더니 아래와 같은 대답이 돌아왔다.


안녕하십니까

고객님

머커주식회사입니다.

하기메일 내용으로 고객님 제품은 최초모델 상태이므로

A/S 내역은 하드외어를 교체해야합니다.

2017년 10월부터 실시되는 A/S 절차를 아래와같이 안내드리며,

수리진행을 원하시면 메일주시면  감사하겠습니다.

--------------------------------------------------

※ A/S 수리 진행 절차를 말씀드리겠습니다.

* 고객님 선불택배 발송=>수리접수 및 수리내역 견적 메일발송

   =>고객님 수리비용입금 및 수리요청메일발송(입금자/입금액/입금일자기재)

   =>센터 입금확인 및 수리완료후 택배발송(영업일기준7~10일소요)

  [단. 고객님 수리견적 접수후 고객님이 수리를 원하지 않으실경우 고객님께 제품을

   착불로 다시보내드립니다.]


* 통상적 수리발생비용

  - 구버젼(초기버젼)제품수리요청시 발생 예상금액 : 5만5천원~7만원 예상

아래의 주소로 제품을 잘 포장하여 선불택배 발송해 주시기 바랍니다.
(포장미흡으로인한 제품손상, 부품누락, 주소 오배송으로 인한 분실은 당사에서 책임지지 않습니다)

서울시 서초구 반포대로 20 정주빌딩 9층

이상입니다. 감사합니다.  


결국 유상 업그레이드 + 수리 비용이 청구되는 것으로 보인다.



혹시나해서 어댑터를 분해해보니 아니나 다를까 아래와 같이 회로에 검댕이 있었다.


어댑터야 전류량 전압이 맞는 걸 사면 되니까...

 - 24V 

 - 2.5A


G마켓에서 승원전자 셀러한테 15,500원주고 어댑터 샀다.

어댑터를 바꾸니 다시 동작을 했다.


또 몇 일 지나자 또 진동자 부분이 작동을 하지 않는다.


내 그럴 줄 예상하고 어댑터 주문할 때 11번가에서 다이슨 가습기 할인 판매 하고 있길래 질렀다.

다이슨 가습기 한 대로 노박 3대를 살 수 있지만 이번엔 스트레스 안받고 좀 제대로 만들어진 가습기를 쓰고 싶었다.


그래서 2017년 10월 20일 AM-10 도착.



그런데 저 애물덩어리 노박을 어떻게 할지 처치 불량이다.

머커에 착불로 버릴까도 생각했는데 그래봤자 불평을 갖는 소비자만 하나 줄어드는 것이 머커에 좋은 일만 해주는 것일 것이다.

머커는 부품을 재활용하겠지...


그래서 나는 10월 31일 한 번 분해해보기로 하였다.


보니 윗 면에 을 반시계 방향으로 돌리면 빠지게 되어 있다. 나사를 분리하니 회로 판이 보이고 회로에서 진동자로 가는 배선이 되어 있었다. 위에서 공기가 들어가서 통안의 수분 콜로이드를 빼내는 구조이다. 


팬에 보면 스폰지 같은 것으로 필터가 있는데 먼지가 많이 쌓여있어서 진공청소기로 먼지를 빨아들이고 물로 씻었다.


회로에 보면 오른쪽 아래 소자에 검댕이 있는 것이 보인다.


회로 아래에 보면 금속 방열판 같은 것이 있는데 수분 콜로이드를 수증기로 기화시키기 위한 열을 만들기 위한 용도인 것 같다.

진동자에서 수분 콜로이드가 없이 오랫동안 팬이 돌면 윗판이 뜨거워지는 이유가 이 방열판 때문으로 보인다.



이 정도까지 분해하고 여기서 멈췄다.

그 이유는 수리를 위해서는 문제를 찾아야 하는데 찾을 수 있는 장비가 없기 때문이다.


그래서 이번에 큰 맘 먹고 테스터기를 구입했다.

계측기로 유명한 FLUKE사의 FLUKE-107 이다.


수리기는 2부로 이어집니다.




더 이상 시중에는 노박 가습기를 팔지 않는다.

다만 쿠쿠 맘편한 가습기로 판매처를 바꿨을 뿐...



저작자 표시 비영리 동일 조건 변경 허락
신고

요즘 IoT라는 단어가 핫하다.

가전이나 전기제품에 IoT라는 이름이 붙이면 가격도 더 비싸게 팔린다.


어제 퇴근하고 나서 갑자기 때 아닌 생활 코딩을 하게 되었다.

얼마 전부터 잘 때 스마트워치로 불을 끄면 좋을 텐데 라는 귀차니즘을 실행에 옮긴 결과이다.


4월 25일 취침등으로 필립스 휴2.0 스타터 키트를 구입했다. (자세한 건 링크 참고)

앱을 통해서 제어할 수 있는 비싼 전구 세트인데 API를 공개해 놓아서 여러가지로 응용을 할 수 있었다.

침대에 누웠는데 충전중인 스마트폰을 들고 불을 끄는 것이 번거로워서 잘 때도 차고 있는 손목 스마트시계에서 끄면 참 좋겠다는 생각을 하게 된 것이다.


협탁(충전중인 스마트폰) | 아내 | 나


이런 식으로 자고 있기 때문에 스마트폰을 집기 위해서는 아내를 넘어가는 불편이 있었기 때문에 아내한테 불꺼달라고 요청을 했는데, 먼저 자면 결국 내가 돌아서 스마트폰을 집어야 하기 때문이다.


어쨌든 사설을 길게 해봤자 감이 잘 안올 테니 좀 전에 아이폰으로 찍은 동영상을 보면 이해가 될 것이다.

참고로 내가 사용하고 있는 스마트 시계(라기 보다는 피트니스 시계)는 Garmin 의 Fenix 3 HR 이다.



쉽게 이야기 하면시계에서 사용할 수 있는 앱을 만들어서 시계에 넣고 동작 시킨 것이다.


앱은 단순하게 아래와 같이 불을 켜거나(Light On) 끌 수 있게(Light Off) 두 개의 영역으로 나누었다.

참고로 Sample에 있던 Attention 을 기반으로 수정을 했다.


DOWN 버튼을 누르면 회색 빛깔이 아래로 바뀐다.


동작은 START-STOP 버튼을 누르도록 했다.


즉 Light On 에 넣고  START-STOP 버튼을 누르면 불이 켜지는 것이고,

Light Off 에 넣고  START-STOP 버튼을 누르면 불이 꺼지는 아주 단순한 장난감 앱이다.



피닉스 3의 경우 앱 파일은 prg이라는 형식의 바이너리 파일이다.

USB 인터페이스로 컴퓨터에 연결하면 외장 USB 드라이브 처럼 연결이된다.


GARMIN/APPS/ 아래에 위치하면 실행이 가능하다.


가민의 스마트 워치는 애플와치나 갤럭시 기어에 비하면 일반인에게는 생소할 수 있어서 자세하게 어떻게 만들었는지 공개해도 별로 의미가 없긴 한데 주요 코드를 공개하면 아래와 같다.


불을 켜는 부분이다.

using Toybox.Communications as Comm;


// ...

class AttentionView extends Ui.View {

// ...

// Turn on light

function lightOn(isOn) {

var params = {

"on" => isOn

};

var headers = {

// body will be encoded as '{"on":true}'

"Content-Type" => Comm.REQUEST_CONTENT_TYPE_JSON,

// accept responses that are reported as json-compatible

"Accept" => "application/json"

};

var options = {

:method => Comm.HTTP_REQUEST_METHOD_PUT,

:headers => headers

};

Comm.makeWebRequest("http://192.168.1.2/api/fmx2mSqgrIznR7JKoOilDeuy1elBSIkhRtwZrTUV/lights/2/state", params, options, method(:onReceive));

}


    // Handle communication events

    function onReceive(responseCode, data) {

    }


피닉스3에서는 HTTP 클라이언트 기능이 가능한데, 직접적으로 네트워크에 연결해서 통신을 하는 것이 아니라 블루투스로 스마트폰을 프록시(Proxy)를 이용해서 간접적으로 통신을 한다.


Fenix 3 HR -> Smart Phone (iPhone/Android) -> Garmin Connect App -> Network (Wi-Fi or LTE ...)


참고로 Toybox.Communications를 사용하기 위해서는 manifest.xml에서 권한을 명시해야 한다.

아래 블럭중 <iq:uses-permission id="Communications"/> 부분이다.

<!-- This is a generated file. It is highly recommended that you DO NOT edit this file. --><iq:manifest xmlns:iq="http://www.garmin.com/xml/connectiq" version="1">

    <iq:application entry="AttentionApp" id="966D8948C2494F72ACEBD1A7A9719644" launcherIcon="@Drawables.LauncherIcon" minSdkVersion="1.3.0" name="@Strings.AppName" type="watch-app">

        <iq:products>

            <iq:product id="fenix5"/>

            <iq:product id="fenix5x"/>

            <iq:product id="fenix5s"/>

            <iq:product id="fr935"/>

            <iq:product id="fr630"/>

            <iq:product id="fr235"/>

            <iq:product id="fr735xt"/>

            <iq:product id="fr230"/>

            <iq:product id="vivoactive"/>

            <iq:product id="fenix3"/>

            <iq:product id="fenix3_hr"/>

            <iq:product id="fenixchronos"/>

            <iq:product id="d2bravo"/>

            <iq:product id="d2bravo_titanium"/>

            <iq:product id="fr920xt"/>

            <iq:product id="epix"/>

            <iq:product id="edge_1000"/>

            <iq:product id="edge_520"/>

            <iq:product id="vivoactive_hr"/>

            <iq:product id="edge820"/>

            <iq:product id="oregon7xx"/>

            <iq:product id="rino7xx"/>

        </iq:products>

        <iq:permissions>

        <iq:uses-permission id="Communications"/>

       </iq:permissions>

        <iq:languages>

            <iq:language>eng</iq:language>

        </iq:languages>

    </iq:application>

</iq:manifest>



저작자 표시 비영리 동일 조건 변경 허락
신고

지난 번 '스마트한 조명? 필립스 휴(HUE) 구입, 전구 하나 반품!'의 후속 글


아이폰에서 HUE 앱을 설치해서 사용하는데, 알림이 보여서 확인해보니 '소프트웨어 업데이트'에 (1)이 보여서 누르면 앱이 죽는 일이 계속 벌어졌다. 나만 그런줄 알았는데 아내도 마찬가지라고 한다.


이럴 때 해결하는 방법은 아래와 같다.

HUE API를 이용해서 하면 된다.


HUE가 있는 네트워크내에서 PC에서 하면 된다.


1. HUE 브릿지의 IP를 확인한다.

 주소: https://www.meethue.com/api/nupnp

에 접속하면 아래와 같이 현재 HUE의 내부주소가 보인다.

2. #1에서 얻은 IP로 API debug 툴에 들어간다.

 주소: 본인의 internalipaddress 로 사용한다.

 나의 경우 내부 IP가 이므로, http://192.168.25.5/debug/clip.html 로 접속을 하였다.

이 페이지는 개발을 할 때 테스트를 위한 일종의 Restful 도구라고 보면된다.

웹 브라우저에서는 GET 밖에 할 수 없으므로 PUT, POST, DELETE같은 다른 메소드(verb)를 수행할 수 있게 해준다.

메세지 바디랑 결과까지 입력/확인 할 수 잇는 영역이 있는 셈이다.


우선 개발 도구를 사용하기 위해서는 개발 키가 필요하다.



3. 개발 키 받기.

 주소: http://<bridge ip address>/api

CLIP API Debugger의 URL 부분에 /api를 넣고

Message Body:에는 아래와 같은 내용을 넣고

{"devicetype":"my_hue_app#iphone namo"}


 POST 버튼을 누른다.


그러면 아래와 같이 '링크 버튼이 눌리지 않았다'는 결과를 받게 되는데,


브릿지의 버튼을 한 번 눌러주고 POST를 하면 아래와 같은 결과를 받게 된다.


해당 username 이 바로 API를 이용하기 위한 KEY이다.


4. 브릿지의 현재 상태 확인하기.

 주소: /api/{username}/config

 HTTP: GET

나의 경우 

"swupdate": { "updatestate": 2, ... } 로 받았다.

위의 그림에서 updatestate가 3인 것은 캡쳐를 업데이트 명령을 내린 후에 캡쳐한 것이라서 상태가 이미 3으로 바뀐 것이 찍혔다.



updatestate가 2라는 것은 업데이트가 가능하다는 것이다.

관련 상태 다이어그램은 아래와 같다.


5. 업데이트 명령을 내리기

updatestate가 3이되면 브릿지가 업데이트를 하게 된다. (전제조건: updatestate가 2 [업데이트가 가능]여야 한다.)


 주소: /api/{username}/config

 Message Body: {"swupdate": {"updatestate":3}}

 HTTP: PUT





6. 상태 확인. (바로는 아니고 시간이 좀 지나야 한다)

 주소: /api/{username}/config

 HTTP: GET


를 해보면 updatestate가 1로 바뀌었음을 알 수 있다.

1의 의미는 현재 시스템 업데이트를 위한 다운로드가 진행중인 것이라는 의미이다.



자세한 것은 개발자 문서 https://developers.meethue.com/documentation/software-update 를 참고하면 된다.

저작자 표시 비영리 동일 조건 변경 허락
신고

블랙박스를 장착할 때 상시모드로 시공을 했다.

문제는 겨울철이다보니 배터리 방전 염려가 생겼다. 실제로 방전까지 간 것은 아니였지만 주차모드 상태에서 다음날 블랙박스 상태를 보니 꺼져있었다. 저전압 차단 기능이 있어서 블랙박스가 먼저 꺼진 것이어서 다행이다. 하지만 만에 하나 배터리 방전이라도 되면 연료 절감형 스탑&스타트 시스템(ISG시스템; Idle Stop & GO)이 적용된 1.5 터보 말리부에는 FLA(Fluid Lead Acid) 배터리 보다도 비싼 AGM(Absorbed Glass Mat) 배터리를 교체해야 한다. 참고


블랙박스에 전원 스위치가 있어서 운행을 마치고 끌 수는 있는데 문제는 다음에 운행을 할 때 블랙박스를 끈 채로 다니다가 켠 적이 한 두번이 아니였다. 그래서 시동이 켜지면 블랙박스도 녹화가 시작될 수 있었으면 좋겠다는 생각이 들었다.


블랙박스를 설치한 쪽에 문의를 해보니 주행모드로만 사용할 경우 B+ 단자를 ACC랑 조인트하면 된다고 한다.


인터넷을 보니 이미 스위치를 부착한 글도 있어서 참고를 했다.

http://blog.naver.com/jjunblog/220778684939


그래서 옥션에서 스위치를 구입했다.

http://itempage3.auction.co.kr/DetailView.aspx?itemNo=A607121965


스위치는 490원인데 배송비가 2,500원! 배보다 배꼽이 더크다.

옵션에 보면 배선작업하면 230원이 더 부가되는데 배선도 신청했다.


토요일에 주문해서 월요일에 도착했다. 판배자가 논산쪽 이었는데 금방왔다.

부품이 원래 작기 때문에 아래와 같은 박스에 담아서 보내주었다.


배선달린 스위치 이외에 케이블 타이, 수축튜브, 조인트 캡, 마운트 등을 같이 넣어줬다.


한밤중(22:32)에 지하주차장에 내려갔다.

첫 차라서 퓨즈박스 여는 것부터 어려웠다. 매뉴얼을 보았는데 솔직히 도움이 되지 않았다.

인터넷으로 찾아보니 오른쪽 홈을 - 자 드라이버로 찔러 넣어야 빠진다고 했는데 빠지지 않았다. 결국 힘으로 해결.

빼보고 나니 그냥 빼면 되는 구조이다. 나처럼 처음 빼는 동일 오너를 위해 사진 첨부.

사진을 보면 알다시피 넣을 대는 홈이 경사가 완만하고, 뺄때는 경사가 급해서 잘 안빠지게 되어 있다.


작업전에 만일을 대비해서 사진을 찍어놓았다. 나중에 배선할 때 참고할 수 있으니 꼭 찍어놓자.


설명서상의 퓨즈박스의 배선은 다음과 같다.

F37(앞좌석 보조 전원 소켓)에 ACC, F17(전동식 허리받침대)에 B+ (상시) 전원이 연결되어 있었다.



처음에 할 일은 배선의 피복 벗기기. 가져간 라디오 펜치의 날이 무뎌서 잘 잘리지 않아서 라이터로 열을 이용해서 녹여냈다.

피복 벗기는 것은 미리 집에서 해가길 추천한다. 추운날씨에 피복 벗기기가 퓨즈함 여는 것 다음으로 어려웠다.


상시전원(F17)을 스위치의 검정색 선으로, VCC(F37)에 물려있던 블랙박스 적색 선과 스위치의 적색을 이어서 F37에 꼽았다.

블랙박스의 노란색 B+ 단자는 스위치의 노란색 가운데 배선에 조인트 했다.


퓨즈함을 닫기 전에 테스트를 했다.

스위치를 작업전(상시녹화 모드)으로 해놓고 동작을 했더니 잘 동작한다.

그런데, 주행전용모드로 스위치를 바꾸고 테스트를 했는데 블랙박스가 꺼지지 않는 것이었다.


혹시 배선이 잘못되었나 싶어서 VCC 조인트한 스위치를 제거했는데 이번에는 블랙박스가 켜지지 않는 것이었다.


몇 번 테스트를 하다보니 원인을 찾았다.

시동을 끄고 난 이후에 VCC 전원이 바로꺼지는 것이 아니라 문을 열고 나가는 동작을 해야 그제서야 차단되면서 꺼지는 것이었다.


스위치는 안쪽으로 밑으로 내려서 늘여놓았다.

처음으로 퓨즈함을 작업을 했는데 처음에는 퓨즈함 여는 것도 어려웠는데 작업을 하고 보니 생각보다 간단해서 다음에는 더 잘 할 수 있을 것 같다.

저작자 표시 비영리 동일 조건 변경 허락
신고

데이터를 올바른지를 검증하기 위해서 패리티라는 추가 데이터를 심심치 않게 사용한다.

내가 처음 들었던 것은 네트워크 수업 때였지만 일상생활에도 많이 쓰인다.


잘 알려진 예로는 주민등록번호 맨 마지막 자리라던지 바코드 등이다.

궁금하면 http://tdremon.tistory.com/entry/주민등록번호-패리티-코드에 많은 예제가 나와 있다.


재산세 납부 영수증이 와서 보고 있는데 가상계좌번호에 패턴이 보이기 시작했다.

같은 주택을 공동 소유 하고 있기 때문에 가상계좌를 일련번호가 있을 것으로 가정하고 보니

아래와 같이 일련번호 + 패리티가 보이기 시작했다.

농협

790133-85-77207P

790133-85-77208P


우리은행

273-443551-18-37P

273-443551-18-38P


신한은행

562-109-5665630P

562-109-5665631P


국민은행

503690-14-10PPPP

503690-14-09PPPP


농협, 우리은행, 신한은행은 맨 마지막 자리가 패리티이고, 국민은행만 4자리의 패리티를 사용하는 것으로 추측된다.


혹시 패리티 알고리즘을 알고 있는 분은 댓글로 맞추어 보길 바란다.

저작자 표시 비영리 동일 조건 변경 허락
신고

여름 휴가를 영국으로 가게 되었다. 그래서 집을 10일 이상 비워야 하게 되었는데 기르던 금붕어 먹이 급여가 문제였다.

다자란 성어라면 괜찮을 것 같은데 하루에 4번씩 조금씩 자주 줘야 하는 유어/치어 들이라서 걱정이 되었다.


벤치마킹

인터넷에서 '자동먹이급여기'로 검색을 하면 꽤 여러가지 상용 제품이 있다.

 - G마켓 - Automatic Fish Feeder (FF-03) (매뉴얼: PDF / 급여영상: YouTube25,000원 

 - 옥션 - 자동먹이 공급장치 AF-2009D (매뉴얼, 스캔PDF / 급여영상: YouTube) 23,000원


 - Amazon: EHEIM (급여영상: YouTube / 제작사: https://www.eheim.com/en_GB/products)


DIY 벤치마킹

해외: DIY Automatic Fish Feeder Using Arduino Nano (링크) / 동영상: YouTube


국내: 초이스님::설 연휴 대비 급조한 자동 먹이 공급기 (링크)


         ARDUINO 기반의 서보모터를 이용한 자동먹이 급여장치 구현 (링크)


먹이를 지속적으로 급여를 위해서는 모터가 필요했다.

 - 주기적으로 급여

 - 회전 운동 -> 중력에 의한 먹이 투하


가지고 있는 모터는 '서브모터'(임의의 각도로 제어가 가능한 모터, 초이스님 작품 참고)와 '기어박스가 장착된 DB 모터' 부품이 있었다.

나는 DC 모터를 이용하기로 했다.


DC 모터 양방향으로 제어하기 (링크) by L293D 모터 드라이버 칩 이용

1. 급여 통 : 빨대

2. 립톤 아이스티 스푼


처음에 급여 통을 공차 같은 버블티용 큰 빨대를 이용하려고 생각했다.

문제는 큰 알갱이들만 있을 때는 별 문제가 없었다.

문제는 작은 치어들을 위해서 가루를 빻아서 같이 넣으니 생겼다. 작은 알갱이가 큰 알갱이랑 같이 결합해서 마찰(?)을 증가하는 역할을 하게 된 것.


동영상을 보면 먹이가 일정하게 나오지 않고 있는 문제점이 보인다. (작은 먹이를 넣기도 전에 균일하게 나오지 않는 문제가 있었어..)

또한 문제가 모터를 계속 돌리다 모니 빨대까 나중에는 모터에서 빠지는 문제도 있었다.


벌써 이때가 새벽 2시였고 영국에 가는 날이었다.


다음 생각해본 것은 영국국에 있는 날이 12일이니깐 중간 6일정도에 한꺼먼에 먹이를 투여 하면 어떨까라는 생각이 들었다.

서브모터 돌리는 대기시간을 6일 후에 맞춰놓으면 될테니깐.


그래서 다음에 생각한 것은 티스푼을 돌리는 것으로 바꾸었다.


생각보다 단순하고 먹이도 100%로 원하는 시간에 투여가 가능했다.

티스푼으로 바꾸고 나서 생각을 해보니 저런 형태의 큰 스푼이면 여러번 돌려도 괜찮을 것 같다는 생각이 들었다.


빨대 -> 티스푼 -> 립톤아이스톤 스푼


그래서 최종 완성된 형태는 아래와 같다.


립톤 스푼에 먹이의 양을 많이 담을 수 있다는 점은 좋았으나 먹이가 한꺼번에 떨어지는 것은 티스푼하고 동일했다.

그래서 감자망과 랩을 컵 입구에 고무줄로 묶었고, 랩에 구멍을 뚫어서 먹이가 떨어지는 정도를 조정했다.


동작하는 동영상을 보면 제법 잘 작동함을 알 수 있다.


배선은 딱히 기록을 해놓지 않았는데

2, 4, 9번 핀을 사용한다. 9번핀을 모터를 동작하게 하는 아날로그 핀드로 사용했고, 2, 4번 핀을 드라이버의 모터 출력 핀으로 사용했다.

(L293D 모터 드라이버에는 2개까지 모터를 연결 할 수 있다.)


소스코드는 다음과 같다.  sketch_aug02a_motor.ino


주기적으로 시간을 통제하기위해 SimpleTimer라는 공개된 타이머 소스를 사용했다.

 http://playground.arduino.cc/Code/SimpleTimer

에서 다운받을 수 있으며 다운받은 소스를 libraries 폴더 아래에 넣으면 된다. (위치가 어디인지 잘 모르겠으면 http://www.arduino.cc/en/Guide/Libraries 를 참고한다.)


8월 6일에 만들고 여행을 갔다 돌아온 17일에 잘 동작을 하고 있는 집에 오자마자 확인했다.

금붕어들은 잘 활발히 돌아다니고 있었고 일부 사료가 잎사귀에 떨어져 있는 것을 확인했다. 이것은 먹이를 중력에 의해 떨어뜨리는 방식에 단점이다. 뭔가 레일이나 떨어지는 길을 통제를 할 수 있다면 개선 할 수 있는  것이다.


아무튼 11박 12일의 영국 여행은 잘 다녀왔다~



저작자 표시 비영리 동일 조건 변경 허락
신고

Arduino UNO R3는 아두이노를 처음 시작할 때 가장 많이 사용되는 하드웨어라고 한다.

관련 공식 웹사이트 주소는 다음과 같다:

- https://www.arduino.cc/en/Main/ArduinoBoardUno


ATmega328에 기반한 보드라고 하고 자세한 시트는 링크를 참고: 링크

회로도는 다음과 같다: https://www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf


전원공급

보드에 전원을 공급하기 위한 방법은 2가지가 있다.

1. USB 소켓에 USB-B형 케이블로 연결

2. DC 소켓에 7~12V DC 어댑터(외경 : 5.5mm / 내경 : 2.1mm)를 연결


USB로 연결하면 아래와 같이 LED에 불이 들어 온다.



LED 불 깜박이기(예제)

https://www.arduino.cc/en/Main/ArduinoBoardUno 에 있는 샘플이다.

USB를 연결하고 아두이노 개발 IDE를 띄운다.

예제는 File > Examples > 1.Basics > Blink. 에 있다.


(복사 & 붙여넣기를 위한 코드)


/*

* 깜박이기

*

* LED의 불을 1초는 켜고, 끄는 것을 반복한다.

* 이 예제는 public 도메인에 속한다.

*/ void setup() {  // 출력을 위한 디지털 핀을 초기화한다.  // 대부분의 아두이노 보드들에는 Pin 13에 LED가 연결되어 있다.  pinMode(13, OUTPUT); } void loop() {  digitalWrite(13, HIGH); // LED를 켠다  delay(1000);            // 1초를 기다린다  digitalWrite(13, LOW);  // LED를 끈다  delay(1000);            // 1초를 기다린다 }


자신의 보드 선택하기

도구 메뉴에 보면 보드와 포트가 있는데 자신의 보드에 맞게 선택한다.

나는 Arduino Uno와 /dev/cu.usbmodemfa131을 선택했다.


프로그램 컴파일 / 업로드

스케치(코드)를 작성하고 보드와 포트 설정만 잘 되어 있으면 쉽게 올릴 수 있다.

컴파일: 버튼, 스케치 메뉴 > 확인 / 컴파일 (단축키⌘-R)을 누르면 된다.

업로드: 버튼(단축키: ⌘-U / 메뉴: 스케치 > 업로드)을 누르면 프로그램을 바로 업로드 할 수 있다. 올리고 나면 메모리의 사용량을 알려준다.


올리고 나면 보드의 상태가 바로 바꾼다. 오렌지색 LED가 깜박거림을 알 수 있다.


프로그래밍 리팩토링

프로그래밍 세계에서는 리팩토링(refactoring)이란 용어가 흔희 쓰이는데 '결과의 변경 없이 코드의 구조를 재조정함'을 의미한다. 같은 기능의 코드를 가독성 있고 좀더 알기 쉽게 바꾸는 작업이다.


우선 13이라는 매직넘버를 기호 상수로 의미를 부여할 것이다.

전역 변수로 LED의 값을 뺀다. (LED라는 전역 변수가 등장하였다. 주석(//로 시작되는 회색의 라인)도 같이 나왔다.)

이제 해당 변수로 대체할 예정이다. 13이 무엇을 의미하는지가 좀더 명확해졌다.


다음은 1000이라는 매직넘버에 의미를 부여해 볼 수 있다.


리팩토링과 임베디드에 대한 고찰

매직넘버를 기호 상수로 바꾸기 작업은 사람에게는 가독성을 준다. 하지만 메모리 제약이 있는 임베디드의 세계에서는 어떻게 보면 안그래도 적은 메모리를 더 부족하게 되는 원인이 될 수 있다.

실제 두 개의 전역 변수를 만들고 나서 프로그램을 올려보면 전역변수의 크기가 9바이트에서 13바이트로 4바이트가 늘어난 것을 알 수 있다.

여기서 int타입은 2바이트 임을 알 수 있다. (4바이트 / 2개 = 2바이트)


책에서 나온 소스코드에서는 처음에 led 라는 변수를 통해 코드가 있었지만, 지금 시점의 코드에는 이 변수가 없어진 것도 되짚어 보면 이런 전역 변수를 줄이기 위함이 아닌가 생각이 된다.


맥용 IDE의 버그(?)

스케치 '확인 / 컴파일'의 단축키가 ⌘-R라고 위에서 언급했는데, 이상하게 가끔 아래와 같은 오류 메세지가 뜨는 것이 보였다.

분명히 문법상 오류가 없는데 발생했다.

/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/../lib/gcc/avr/4.8.1/../../../../avr/lib/avr5/crtm328p.o:(.init9+0x0): undefined reference to `main' collect2: error: ld returned 1 exit status 컴파일 오류 발생.


알고보니 '입력 소스'가 한글로 되어 있을 경우 ⌘-R을 누르면 위의 화면 처럼 컴파일 오류가 발생함을 알게 되었다.

따라서 단축키로 동작을 할 때 불편하지만 언어를 영어로 바꾸고 해야 한다.

정 불편하면 버튼을 누르면 된다.


저작자 표시 비영리 동일 조건 변경 허락
신고

회사에서 도서 주문의 지원을 해주고 있다.

어떤 분이 아두이노 키트가 포함되어 있는 도서를 주문했다.

 - 아두이노 완전정복 + Arduino KIT

가격은 놀랍게도 14만 5천원!!1


회사에서 자기계발을 위해 도서를 지원하는데 이런 키트가 포함되어 있는 것까지 구입할 수 있다니 좋다. 또한 재미있을 것 같아서 같이 나도 스터디를 하기로 얘기를 하고(우리 팀 말고 다른 팀에도 이 키트를 주문한 사람을 발견) 나도 주문을 했다.


그리고 지난 수요일(6/24) 도착.


안에를 열어보니 책과 키트가 들어있었다.


아두이노 보드는 UNO R3였다.

 아두이노가 무엇인지 처음 듣는 사람들은 TED에서 마시모 반지라는 사람이 발표한 영상을 보는 것이 좋을 것 같다.

https://www.youtube.com/watch?v=UoBUXOOdLXY / TED 웹사이트의 영상 (링크) -> 이쪽은 자막도 나온다!

동영상을 유심히 본다면 우리가 '아두이노'라고 붙인 이름이 /아르뒤이노/라고 들린다.


아두이노 공식 웹사이트에 가봐도 아직 Rev.3이 팔고 있는 걸로 보아 아직까지 최신의 보드인 듯 싶었다.

 - https://store.arduino.cc/product/A000066


키트에 포함되어 있는 보드 (Arduino UNO R3)


뒷판에 보면 제품명이 들어가 있다.


현재 웹사이트의 보드의 뒤 판하고는 조금 다르긴 하다.



개발환경 갖추기

프로그래밍을 할 때 콘솔(혹은 터미널 혹은 명령 프롬프트)에 직접 타이핑을 할 수 있으나 통합개발환경(IDE)라고 하는 것에서 개발하는 것이 편하다. 그러하듯 아두이노도 IDE를 제공을 한다.

오픈 소스 프로젝트이므로 플랫폼도 다양하게 지원한다. 참고로 나는 집에서 Mac OS X Yosemite를 사용하고 있어서 맥 환경을 택할 것이다.


공식 웹사이트에보면 맥에서 개발환경을 갖추는 방법이 잘 적혀있다. : https://www.arduino.cc/en/Guide/MacOSX


우선 https://www.arduino.cc/en/Main/Software 에 가보면(아직 한글로 번역되어 있는 사이트가 없어서 영어를 선택했다.) 자기 컴퓨터에 맞는 플랫폼을 선택한다. 나는 맥이라서 'Mac OS X 10.7 Lion or newer'를 선택하였다.


다운로드를 받으려고 링크를 누르면 기부하라는 중간 페이지가 나온다. 기부는 개인의 주머니 사정에 맞게 적절하게 하고 (만약 기부를 원하지 않는다면 'JUST DOWNLOAD'를 누르면 된다.) 링크를 누르면 된다.

다운로드 폴더에 가보면 arduino-1.6.5-macosx.zip 형식의 파일이 있다. 물론 파일 이름은 다운로드를 받는 시점에 따라 버전이 바뀔 수 있으므로 숫자 같은 것은 달라질 수 있다. 내가 받은 버전은 1.6.5 버전이네.

압축을 풀고 열어보면 'Arduino.app' 파일이 있는데 개발을 자주 할 것이라면 '응용 프로그램' 디렉토리로 드래그 해서 사용을 한다.


실행을 해보면 인터넷에서 다운로드된 응용 프로그램이라고 경고성 창이 뜨는데 '열기' 버튼을 누른다. (당연히 인터넷에서 다운로드 했지;;;) 기존 매버릭스에서는 ctrl + 열기를 해야 인터넷에서 다운로드 받은 파일을 실행할 수 있었는데 요세미티에서는 불편해서 그런지 단순 경고창이 뜨는 것으로 바뀐 것 같다.


실행이 되면 아래와 같은 창이 뜬다. 맥에서는 메뉴 창이 공용으로 뜨므로 같이 캡쳐를 했다. 윈도우라면 응용 프로그램마다 별도의 메뉴창이 뜨는 것 같았다.


기본적인 뼈대(stub) 코드가 들어가는데 setup()과 loop() 함수가 있다.

아두이노는 C언어를 이용하여 코딩을 한다고 들었다.


저작자 표시 비영리 동일 조건 변경 허락
신고