안녕하세요 시더입니다.


오랜만에 글을 쓰는것 같은데 요즘은 MQTT를 공부하고 있습니다.


오늘 쓰는 글은 하드웨어적 요소는 제외하고 소프트웨어 위주로 적어볼까 합니다.


일단 MQTT에 대한 자세한 설명은 생략하고 브로커 서버가 필요합니다. 즉 외부에서 접속가능한


IP를 확보한 컴터에 브로커를 설치하고 계속 켜두어야 한다는 소리죠.


간단하게 MQTT 테스트나 시험동작하기에는 좀 번거롭고 귀찮을 겁니다.


그래서 2가지 방식을 추천합니다.


1. www.mqtt-dashboard.com


이곳은 사용하기 참 간단합니다.  MQTT 서버 주소를 "broker.mqtt-dashboard.com" 로 적어두고


(기본포트 1883, 유저네임과 패스워드도 필요 없습니다.)


토픽과 메세지를 날려주면 됩니다. 정말 간단하죠? 회원가입이나 로그인 같은 번거로움도 없습니다.


단, 토픽과 메세지 내용이 전부 공개됩니다.


간단하게 접속및 간단한 테스트하는 용도로 사용하길 추천합니다.


2. cloudmqtt.com




주소로 들어가면 위 사진과 같은 화면이 나옵니다. 상단에서 Plans을 눌러봅니다.


지원중인 서비스 내용입니다. 우리는 간단한 테스트가 목적이니 무료 버전을 눌릅니다.


이후 이메일 주소넣는 화면이 나오고 이메일 인증하고 회원가입을 하면 됩니다.


아이디가 로그인되었으면 다음으로 넘어가보도록 하겠습니다.


적당한 이름과 브로커 서버 위치 (EU와 US 2개 서버를 고를 수 있습니다. )


생성하였으면 오버뷰 화면으로 넘어갑니다. Instance info 자세히 봐야할 부분은 서버 주소와 PORT입니다.

개인정보 부분은 블라인드 처리했습니다. Manage Users에서  유저이름과 패스워드를 하나 등록해둡니다.

여기서 등록한 유저아이디와 패스워드를 기억해 둡니다.



New Rule에서  방금전 등록한 유저를 고르고 사용할 토픽을 입력해 줍니다.

Read와 Write도 체크해줍니다.


위의 동작까지 완료되었으면 상단의 Websocket UI 버튼을 눌러주면 위의 사진과 같은 화면이 나옵니다.


옆에 Send message에 토픽을 입력후 늘르면 오른쪽에도 출력되고 장치와 데이터를 주고 받을수 있습니다.



Posted by 시더
,

안녕하세요  시더입니다.


오늘은 예전에 만들어둔 장난감을 업그레이드 해볼려고 합니다.


바로 블루투스를 이용한 RC 탱크죠. 예전에 만들때 유행이 거의 끝나간다고 생각했는데 요즘도 찾는사람이


많습니다. 그리고 예전보다 이것저것 배웠다보니 이번엔 좀 그럴듯하게 만들어 볼까 합니다.


먼저 예전에 만들었던 블루투스 탱크 사진입니다.




그리고 이번에 만든 블루투스 탱크 사진입니다.


일단 가장 먼저 사용 공간 면적이 절반가량으로 줄었습니다. 그리고 선정리가 좀 더 깔금해 졌죠.


(그 동안 납땜을 많이 해봤다는 이야기입니다-)


동일한 부분은 똑같은 탱크와 모터&기어박스 그리고 아두이노 나노보드를 사용, Hc06 블루투스를 사용한


부분입니다. 그럼 변경된 포인트를 몇군데 설명해보겠습니다.



일단 전원 공급 방식을 AA 건전지를 직렬로 연결하는 방식으로 사용했습니다. 기존 9V 건전지의 방전율이


생각보다 적어서 모터의 성능이 영 별루입니다.  괜찮은 선택이라고 생각합니다.



다음은 L293 모터드라이버 IC를 사용했습니다. http://www.ti.com/lit/ds/symlink/l293.pdf


130 DC 모터를 돌리는데 굳이 모터드라이버 모듈은 좀 오버 스팩이라고 생각하고 공간면적을


너무 차지하는것 같아 IC하나로 대체했습니다.




전원의 흐름도는 위와 같습니다. 건전지에서 아두이노의 Vin 핀으로 전원을 공급하고 아두이노에서는


모터드라이버 제어 전원과 블루투스 동작전원에 5V을 분배 해줍니다. 모터가 5V 동작 가능이면 모터 동작


전원도 아두이노에서 끌어다 쓸수 있을거라 생각할수 있지만 아두이노 5V 핀의 출력이 2백인가 3백mA


인걸로 기억합니다. 모터 돌리기엔 아쉽죠.  그리고 좀 더 고속이동을 위해 6개짜리 직렬 건전지 (1.5V * 6)로


사용해 봤습니다.  4개보단 확실히 잘굴러가네요.  다음에 시간이 되면 리튬이온으로 테스트 해보려 합니다


Posted by 시더
,

안녕하세요 시더입니다.


오늘은 WiFi에 대해서 정리를 해볼까 합니다.


일단 오늘 사용할 부품은 많이 많이 쓰이는 ESP8266-01 입니다.


요렇게 생겨 먹었죠.  핀옆에 적어둔 숫자와 차트를 잘 봐야합니다.



1

 VCC

 3.3V 전원을 넣어줘야 합니다.

 2

 RST

 생략

 3

 CH_PD

 VCC와 같이 3.3V 전원을 넣어줘야 합니다.

 4

 TXD

 데이터 송신

 5

 RXD

 데이터 수신

 6

 GPIO0

 펌웨어 업로드 할때만 그라운드와 연결해 줍니다.

 7

 GPIO2

 생략

 8

 GND

 그라운드, 접지


안테나 방향 잘보시고 핀 순서를 해깔리지 않아야 합니다. 안그럼 훅가요 훅..


일단 제가 부품을 처음 받았을 때 baud 가 115200 입니다. 요즘은 아두이노 라이브러리가 좀


향상되어 소프트웨어 핀으로 된다고는 하던데.. 저 속도로 통신을 해보니 이상하게 노이즈 값이 섞여


나오더군요.  하드웨어 핀으로는 정상 작동하나 계속 물려놓고 쓰기엔 좀 무리인것 같아  한참을 삽질을


하다 baud 9600 짜리 펌웨어를 사용하기로 결정했습니다. (사실 사용하기 편한 라이브러리가 있으니..)


펌웨어를 업로드하기 위해 일단 아두이노 유노보드를 가져다가 다음과 같이 기본 스케치로 업로드 해둡니다.


그리고 다음과 같이 핀을 꼽고 정상적으로 핀이 연결 되었는지 간단한 명령어 문자를 입력해 봅니다.



AT+GMR 을 입력해 봅니다.(앞에 저건 뭐더라?)



다음에는 펌웨어 이미지와 업로드 프로그램을 받아 보도록 하겠습니다.


ESP8266_AT_V00180902_02_baudrate watchdog added.zip

 //펌웨어 이미지


ESP8266_flasher_V00170901_00_Cloud Update Ready.zip

//업로드 프로그램



압축을 풀고 업로드 프로그램을 실행 시킵니다. 경로는 짧고 한글이 들어가지 않기를 권장합니다.


위와 같은 화면이 나오면 Bin을 눌러 추가로 받은 이미지 파일과 COM 포트를 맞춰주고 다운로드를


눌러 줍니다. (GPIO0하고 GND 연결시켜 줘야 합니다)



위와 같이 나오면 성공적으로 펌웨어를 업로드 한겁니다. GPIO0에 GND 연결한것을 빼고 재부팅 해줍니다.


간단한 명령어로 정상적으로 동작하는지 확인해 봅니다.(baud 9600)




https://github.com/Diaoul/arduino-ESP8266


ESP8266 9600 baud 용 라이브러리 주소입니다.


라이브러리의 기본 예제를 아두이노 보드에 업로드하고 실행 시키면 다음과 같은 화면이 나오면 초기설정이


완료된것 입니다.




Posted by 시더
,

안녕하세요 시더입니다.


요즘 날씨가 참으로 더운것 같네요. 오늘은 에어컨의 적외선 리모컨을 만들어 볼까 합니다.


시원한 에어컨과 함께 공부도 할수있으니 얼마나 좋은가요!



(사진에서 오른쪽 리모컨 있는 부분입니다)


일단 에어컨 제어를 해보려 하니 회사 브랜드를 확인해 줍니다. 저의 경우는 LG 더군요.


(적외선 쪽은 Nec 포멧 부분이 머리아프기에 오픈소스를 사용하길 권장합니다)


라이브러리 주소: https://github.com/z3t0/Arduino-IRremote


풀어서 아두이노가 설치된 폴더의 라이브러리 폴더어 넣어줍니다.


오늘 테스트할 기능은 ON/OFF 입니다. 그러기 위해선 해당 신호을 알아야겠죠.


가장 먼저 IRrecvDemo 예제를 아두이노에 업로드 해줍니다.



에어컨 리모컨을 가져와서 아두이노에 연결한 적외선 수신부에 전원 버튼을 열심히 눌러줍니다.


쭉 보다보면 같은 패턴이 보이실겁니다. 제가 얻어낸 신호는 다음과 같습니다. (회사와 기기에 따라 다를수 있습니다.)


전원 ON : 880084C

전원 OFF : 0x88C0051


이걸 28비트로 쏴주면됩니다. 그런데 우리는 이미 오픈소스를 확보했으니 편하게 갈수있죠.


irsend.sendLG(0x880084C, 28);  이런식으로 사용하면 됩니다.


여기서 테스트를 해보면 전원 ON/OFF 제어가 잘됩니다. 저는 여기에 Wifi를 접목시킬 생각입니다만


지금은 시간이 없어서 다음으로 미뤄봐야겠네요.


------------------------------- WiFi 내용 추가 ------2016.06.27--------------------------------



WiFi 모듈을 적외선하고 붙여봤습니다. 동작은 원활하고 스마트폰과 WiFi모듈(AP모드) 간에 통신은


TCP 소켓통신으로 구현해봤습니다. ESP8266 모듈이 전류 소비량이 무척 크다는 한가지 문제점이


있습니다. 아두이노의 3.3V Pin OUT으로는 답이 없죠. 이부분은 ams1117 레귤레이터(5V->3.3V)를


사용해서 5V의 OUT을 끌어다 써야합니다(5V쪽이 더 많이 나오네요) 그리고 전해콘덴서를 사용해서


부족한 부분을 업그래이드 해볼 생각입니다.


그리고 배터리 위에 있는 아두이노 보드는 WiFi모듈이 내장된 보드인데 시간이 부족해서 다음에


정리해서 올리도록 하겠습니다.



추가 자료1

적외선 LED의 +/- 극은 다리의 길이를 보면 됩니다. 그런데 사용하기 편리하게 하기 위해서 다리를


잘랐으면...! 버려야죠!  LED안을 자세히 보시면 금속같은 부분이 큰쪽이 GND 입니다.

(LED마다 다를순 있습니다. 다리 긴쪽이 100% + 이며, 안쪽 부품의 크기에 너무 의존하면 안됩니다)






Posted by 시더
,

안녕하세요 시더입니다.


오늘은 좀 제목을 평소랑은 다르게 만들어 봤습니다.


길게 늘려놓고보니 대단한걸 한것 같지만 실제는 스마트폰으로 스텝모터 조정한게 전부입니다.


일단 데이터의 흐름은 제목과 같습니다.


[스마트폰 -> 블루투스 -> 아두이노 -> 모터드라이버 -> 스테핑모터]


이렇게 말이죠.


일단 모터를 테스트하기 위한 프레임을 부품을 골라서 조립을 시작합니다.



예상보다 부품 수는 적었습니다.


이것은 조립완성 사진, 모터의 회전 방향에 따라 가운데 있는 물체가 좌,우로  이동하게 됩니다.


저 스텝모터의 선은 4줄입니다. 관련 정보를 쭈륵 찾아보니 모터 드라이버가 필요하다는 결론에 도달합니다.



이 모터는 12V 1.7A를 요구하기에 12V 2A 짜리 어뎁터를 모터드라이브 전원공급쪽으로 물려줍니다.


모터드라이버의 반대쪽 핀을 아두이노와 연결하고 제어가 가능하도록 코드를 작성해 줍니다.


생각보다 무리없이 잘돌아 가더군요.


이제 본문의 제목처럼 스마트폰으로 조작하기 위해서 납땜으로 간단한 모듈을 만들어 줍니다.



포멕스를 이용해서 모터드라이버와 사이좋게 같이 붙여 줍니다. 이제 도망갈수 없다!!

모터의 수동 테스트를 위해서 좌,우 버튼을 만들어줍니다. 화면에 잘안보이지만 10K 저항 사용했습니다.



이제 목표로 하던 블루투스를 딱! 박아줍니다.  네 참 잘되네요!! 개인적으로 저 직선운동 기기의 프레임이


튼튼해서 마음에 드는데 가격이 좀 쌥니다 ㅜ.ㅜ  동작 영상 첨부합니다!



Posted by 시더
,