'2017/04'에 해당되는 글 2건

  1. 2017.04.19 아빠와 함께 하는 아두이노 2017.05.13
  2. 2017.04.05 Delphi P2P Socket Library
아빠와 함께하는 아두이노 2기를 시작합니다 ^^*

이번에는 NodeMCU를 이용해서 인터넷 활용 작품을 만들어 가는 주제로 정했습니다.
또한 참가자격에 대한 기준을 두지 않기로 했습니다.



주제: 스마트 스위치 개발하기

  • Micro Python을 이용합니다.
  • C/C++로 진행하는 강의보다 쉽게 접근 할 수 있을 것이라 판단하여, 파이썬을 사용하기로 했습니다.
  • 아이들이 참가하기 때문에 위험한 220v를 사용하지 않고, 시계 건전지와 LED를 이용한 시제품 만들기를 목표로 합니다.


참가비가 있습니다.

  • 2만원 (재료비, 간식비 등에 사용)

시간 및 장소


강의 내용
  • 아이들도 따라 할 수 있는 형태로 진행합니다.
    • 타자가 서투신 분들은 준비된 예제를 하나씩 실행하면서 동작 원리를 배웁니다.
    • 가벼운 변형을 하면서 이해를 돕습니다.
  • 목차
    • 프로그래밍 입문자를 위한 준비 운동
      • LED 깜박이기
      • 효과음 만들기 (피아노 연주 등)
    • 원격 스위치 만들기
      • 인터넷 연결
      • 신호 수신 (LED 켜고 끄기)
      • 릴레이 스위치 사용 법
      • 외부 전원을 이용한 프로젝트 완성


준비물
  • 노트북
  • 스마트폰 데이터 케이블 (OTG)
    • 있는 분들은 가져오시기 바랍니다.  (없는 분들은 그냥 오세요)
    • 아래 링크와 같은 케이블입니다.
  • 부품 담아가실 작은 상자 또는 쇼핑박스 등


참가 신청 및 연락처
  • ryujt658@hanmail.net 으로 참가신청하시면, 선착순으로 선별하여 참가 가능 여부를 알려드립니다.
    • 참가 인원 및 나이를 알려주세요.
    • 연락처 남겨주세요.
    • 참가 인원이 모두 차거나, 강의 1주일 전에 확정통보하겠습니다.
  • 010-5752-0658 (강의실 찾기 어렵거나 할 때 연락 주세요)


저작자 표시 비영리 변경 금지
신고

Posted by 류종택

소스는 아래 링크에서 받으시면 됩니다.


사용의 예제는 SuperSocket\Delphi\Samples\P2P UDP 폴더에 서버와 클라이언트를 참고하시면 됩니다.


제가 진행했었던 1:1 온라인 강의 시스템에 사용했던 소스 일부를 새로 정리해 본 것입니다.  예전 소스를 거의 무시한채 새로 만들었기 때문에 버그가 많을 수 있습니다.  이슈에 남겨주시면 틈틈히 고쳐 나가겠습니다. 


기본적으로 UDP를 이용해서 P2P로 패킷을 전송하지만, P2P로 보낼 수 없는 상황이되면 TCP를 이용해서 서버를 통해 릴레이를 하게 되어 있습니다.


원래는 1:1 서비스에서 사용했지만 n:m 상황에서도 사용할 수 있도록 수정했습니다.  기본적인 로그인 처리 및 사용자 처리 등의 패킷이 정의 되어 있습니다.

  • 서버
    • UDP 홀펀칭을 위해서 외부 주소 및 포트를 전달하기 위한 게이트웨이 역활
    • UDP 홀펀칭이 실패하면 서버가 TCP로 릴레이로 전달하는 기능
  • 클라이언트
    • 접속, 로그인, 패킷 전송


자세한 사용법은 기회가 될 때 온라인이나 오프라인 강의로 진행하도록 하겠습니다.


예제를 컴파일 하시면 SuperSocket\Bin 폴더가 생기면서 실행 파일 두 개가 생성됩니다.  우선 P2P_Server.exe를 실행하고, Client.exe를 두 번 실행합니다.


Client.exe 실행 화면


  • 상단 왼쪽에 서버 주소를 입력합니다.  
    • 127.0.0.1이 기본 설정되어 있습니다.
  • Room-01에 방 이름을 입력합니다.  
    • 동시에 여러 강의실(대화실)을 개설하기 위해서 사용했습니다.  
    • 저는 실적용에서 랜덤한 긴 문자열을 사용했습니다.
  • User-A에 사용자 아이디를 입력합니다.
    • 암호 처리는 서버 소스를 참고해서 추가하셔야 합니다.
    • 같은 방에 같은 아이디로 접속하면 기존의 아이디가 로그아웃 됩니다.  이를 클라이언트에서 신호를 받아 접속을 끊어야 하는데, 지금보니 해당 처리가 빠져있네요.  다음 커밋에서 추가하도록 하겠습니다.
  • Connect 버턴을 클릭하고, Login 버턴을 클릭하면 됩니다.
  • 가장 긴 빈 에디터에서 메시지를 입력하고 리턴하면 접속 된 사용자에게 모두 메시지를 보냅니다.
  • Start 버턴을 누르면 연속되는 숫자를 계속 보냅니다.  혹시 하나라도 누락이 되면 현재 숫자가 표시됩니다.  
    • UDP로 원격지에서 오는 메시지가 얼마나 사라지는 지 확인하기 위해서 테스트로 만들었습니다.
  • 사용자 입장 및 퇴장 그리고 목록 보이기 등의 기능이 구현되어 있지만, 예제에 완전히 표현되지 않았습니다.  다음 커밋에 추가하도록 하겠습니다.



저작자 표시 비영리 변경 금지
신고

Posted by 류종택


티스토리 툴바