패킷전송이라는 부분은 특별한 것이 아닙니다.
시리얼 포트로 해당 데이터를 차례대로 보내면 됩니다.
전체 10 Bytes(0xAA부터 0x55까지)를 차례대로 보내면 됩니다.
전 C로 개발하지 않았습니다만..
C로 된 시리얼통신 소스가 많이 공개되어 있으니 그것을 이용하면 쉽게 해결할 수 있을 것입니다.
안녕하세요..
zbs-100은 저도 사용해보지는 못했습니다.
프로토콜이 동일하다면 사용할 수 있을 것입니다.(두 모델의 매뉴얼을 비교해 보세요)
그리고, H/W가 제대로 되어 있다면 PC에 모듈을 연결한 상태에서 이 프로그램으로 특정 명령을 전송하여 제어 가능합니다.
이준석
2010/11/10 10:04
안녕하세요. ZBS-200 모델을 사용하기 위해 정보를 찾다가 여기까지 오게 되었네요. 본사 홈페이지는 관리를 안하는것인지.. 자료도 별로 없고 메뉴얼이 너무도 허접하여 접근을 할수가 없네요;;
우선은 현재 ZBS-200 2개와 같은회사 제품인 USB Dongle 제품을 1개 가지고 있습니다. 이렇게 제품을 구입한 목적은
센서의 출력을 무선통신을 이용해서 PC 에서 받아보기 위함인데요.
저의 생각으로는 컨트롤러(FPGA)를 사용하여 센서의 출력값을 지그비 송신모듈로 전달하면,,,PC쪽의 USB Dongle 제품에서 수신하여 하이퍼 터미널 혹은 모니터링 프로그램을 사용해서 무선으로 값을 받아 볼수 있을거 같은데요.
접근 방법을 모르겠네요. 선풍기 제어 시스템을 만드셨다고 하셨는데요. 제품을 먼저 사용해보신 입장에서 조언을 구해보고자 합니다. 감사합니다.
안녕하세요..
정확히 어떤 부분이 알고 싶은 것이지 모르겠습니다만..
구입하신 ZBS-200으로 구현하는데 크게 문제는 없을 것 같지만 한 가지 제약이 있습니다.
센서의 출력을 PC로 전송하는 것이 주 목적인데요..
문제는 ZBS-200은 PC로 전송할 수 있는 데이터로 2Bytes만 제어할 수 있습니다.
매뉴얼에 보면 Command와 Value라고 표시되어 있는 부분으로 각각 1Byte씩해서 전체 2Bytes만 사용자가 사용할 수 있습니다.
센서의 출력 등 모든 데이터를 2Bytes 내에서 해결 가능하다면 구성하는데 별 문제는 없을 것 같습니다.
ZBS-200 모듈은 처음에 ID, Tx/Rx 등의 설정만 제대로 하면 큰 문제는 없을 것입니다.
이준석
2010/11/10 10:03
답변 감사드립니다.
모듈의 ID 를 설정한다고 하셨는데요. 송신부랑 수신부 2개의 ID가 달라야 하는거죠?
그리고 센서의 출력을 FPGA서 처리하고 그 데이터를 최대 16bit 까지 지그비로 보내줄수 있는거 같은데요.
그렇다면 지그비에서 데이터를 받는 속도는 어떻게 처리해야 하나요? FPGA에서 지그비 모듈로 데이터 넘기는 속도를 모르겠습니다. 감사합니다.
예. 송신부랑 수신부의 ID는 달라야 됩니다.
예.. 2Byte, 즉 16bit죠.
전 FPGA를 사용하지 않아서.. 잘 모르겠습니다..
그냥 ZBS-200과 연결된 시리얼 포트에 통신 속도만 설정하고 보내주면 됩니다.
이준석
2010/11/10 10:41
친절한 답변 감사합니다^^
너무안대ㅠㅠ
2010/11/17 19:54
안녕하십니까?
운영자님께서 만드신 ZBS-200 프로그램을 사용중인데요.
통신데이터 중에 체크섬이 패리티 체크 하는거 같은데 맞나요?
맞다면,,체크섬 값이 어떻게 연산되는지 모르겠네요.
메뉴얼에 보면 xor 연산을 한것으로 보이는데요.
손으로 푼 xor 연산과 프로그램상에서 체크섬 값이 차이가 나더라구요.
안녕하세요..
오래 되어서 정확히 기억이 나지 않습니다만...
저도 그때 체크섬 때문에 고민했었던 기억이 납니다.
제가 본 매뉴얼 상에는 체크섬 계산법이 Length부터 Value까지 모두 더하라고 되어 있는데 계산해보니 매뉴얼 상에 나와있는 값과 동일하게 나오지 않더군요.
제가 만든 프로그램 상에서는 값을 임의로 동일하게 하기 위해서 2번째 바이트부터 체크섬 바이트 이전까지(7 바이트)를 각각 더한 후 3을 빼줬습니다. 지금 계산해보니 이것도 맞지 않네요..
정확한 계산법을 알아내셔서 알려주시면 프로그램 수정해서 올리겠습니다.
너무안대ㅠㅠ
2010/11/18 15:16
음 그렇군요. 체크섬 이녀석이 너무 애매하네요..
운영자님 한가지만 더 질문하겠습니다;;
스타트1바이트 부터 시작해서 엔드1바이트까지 순서대로 보내게 되는데요.
스타트의 LSB부터 전송하는게 맞는건가요? (0xAA//1010_1010 이니깐,,데이터가 흘러들어가는 순서는 0101_0101이 되겠네요)
스타트 보내고 그리고 랭스 보내고,, 이런식으로 하는게 맞는지 궁금합니다.
감사합니다^^
- 제어장치(Server)로 명령(on/off) 전송 - TCP Client 소켓 프로그램을 제작하여 명령 전송(php 등의 스크립트 언어로 대체 가능) - 크론으로 1시간 간격으로 on/off 프로그램 실행 - NAS 장비 ds-106e 사용(일반 PC 또는 서버로 대체 가능)
4. 제어장치(Server)
- 임베디드 서버로부터 수신한 이더넷 형식의 명령을 시리얼 형식으로 변환한 후 무선(zigbee)으로 제어장치(Client)에게 명령 전송 - 구성: 시리얼/이더넷 변환기, 무선모듈(zigbee, ZBS-200), 케이스(스피커 이용) - 원래 이 부분은 무선모듈만 "임베디드 서버"(NAS, ds-106e)에 내장하여 콘솔용 시리얼 포트에 연결하여 사용하려고 만들지 않을려고 했으나, NAS의 콘솔용 시리얼 포트에서 송신만 가능하고, 수신이 불가능(콘솔 기능을 위한 특정 프로그램이 시리얼 장치를 사용하여 불가능한 것으로 예상)하여 이렇게 구성하였음
5. 제어장치(Client)
- 제어장치(Server)로부터 명령 수신후 해석하여 리모컨의 on/off 버튼 제어 후 결과를 제어장치(Server)에게 전송 - on/off가 되었는지 확인하기 위하여 MCU를 사용함(확인 필요없을 경우 무선모듈로만 처리 가능) - 구성: 무선모듈(zigbee), MCU, 케이스(고장난 마우스 이용) - 전원부: 5v, usb 커넥터 이용
6. 리모컨
- on/off 버튼과 GND 단자를 제어장치(Client)와 연결하기 위한 커넥터로 구성 - 나중에 이 부분은 직접 케이블로 제어장치(Client)와 연결하지 않고, 제어장치(Client) 내에 리모컨의 기능을 넣어볼 생각입니다. - 제어장치(Client)와의 연결은 아래 사진과 같습니다.
---------------------------------------------------------------------------------------------------- 하루 동안 동작시켜 보니 잘 동작됩니다^^
위 동영상에서 "탁" 소리는 키보드 엔터키 치는 소리입니다.
ds-106e에 있는 프로그램 실행에 따라 선풍기 on/off가 제어됩니다.
이제 제어장치(Client)를 이용하여 PC의 전원제어까지 해볼 생각입니다. 여름이 지나면 필요없기 때문에 다른 용도로 활용하는 것이죠.. 다른 용도로 활용하기 위해서 제어장치를 선풍기 내에 넣지 않고, 따로 만든 것입니다.
사실 PC는 WOL(Wake-on-LAN) 기능을 이용하여 외부(집 밖)에서 전원을 제어할 수 있지만, 제가 가진 PC는 최대절전모드를 이용하여 끌 경우 WOL이 동작하지 않습니다.
PC 전원 제어장치 제작 후에는 NAS에 연결된 백업용 외장 하드의 전원을 제어해볼 생각입니다. 백업 필요 시 전원을 켜서 백업하고, 완료 후 전원이 꺼지도록 하는 것이죠.. 이 경우 제어장치(Clinet)와 서버측의 프로그램만 하나 더 만들면 됩니다. 제가 선정한 무선모듈의 경우 1:n 통신이 가능한 제품입니다. MCU를 사용하지 않고, 무선모듈만 이용하여 제작할 예정입니다.