KR20200034415A - A System For Recommending Source Codes And Module And A Module Assembly - Google Patents

A System For Recommending Source Codes And Module And A Module Assembly Download PDF

Info

Publication number
KR20200034415A
KR20200034415A KR1020180114171A KR20180114171A KR20200034415A KR 20200034415 A KR20200034415 A KR 20200034415A KR 1020180114171 A KR1020180114171 A KR 1020180114171A KR 20180114171 A KR20180114171 A KR 20180114171A KR 20200034415 A KR20200034415 A KR 20200034415A
Authority
KR
South Korea
Prior art keywords
module
information
recommendation
source code
topology
Prior art date
Application number
KR1020180114171A
Other languages
Korean (ko)
Other versions
KR102137667B1 (en
Inventor
손승배
정윤상
Original Assignee
주식회사 럭스로보
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 럭스로보 filed Critical 주식회사 럭스로보
Priority to KR1020180114171A priority Critical patent/KR102137667B1/en
Publication of KR20200034415A publication Critical patent/KR20200034415A/en
Application granted granted Critical
Publication of KR102137667B1 publication Critical patent/KR102137667B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0631Item recommendations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0613Third-party assisted
    • G06Q30/0619Neutral agent

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Strategic Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • General Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Economics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Marketing (AREA)
  • Human Resources & Organizations (AREA)
  • Development Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Data Mining & Analysis (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Toys (AREA)

Abstract

According to the present invention, a system for recommending a source code and a module comprises: a module assembly including a control module including a functional unit having a topology management unit for detecting and generating topology information, and a plurality of other modules including functional units different from the control module; a user terminal connected to the module assembly; and a recommendation server connected to the user terminal through a network, storing topology information of the module assembly, and providing information on recommended source code to the user terminal based on the topology information. The topology information module-specific information, weight information, and sub-connection module information. The recommendation server may determine a recommendation order of the recommended source code based on the module-specific information and the weight information.

Description

소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리{A System For Recommending Source Codes And Module And A Module Assembly}A System For Recommending Source Codes And Module And A Module Assembly}

본 발명은 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리에 관한 것으로서 보다 상세하게는, 다용도 모듈 어셈블리의 제작 툴에서 모듈 어셈블리의 조립 정보를 공유하고, 사용자가 필요한 조립 정보 및, 소스 코드 정보를 용이하게 추천받고 검색할 수 있는 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리에 관한 것이다.The present invention relates to a source code and module recommendation system and a module assembly, and more particularly, to share assembly information of a module assembly in a production tool of a multi-purpose module assembly, and to easily recommend assembly information and source code information required by a user. Source code and module recommendation systems and module assemblies that can be retrieved and retrieved.

최근 교육, 취미, 연구, 생산 등을 목적으로 하는 다양한 모듈 기반 제작 도구들이 제안되고 있다. 이러한 제작 도구들에 포함된 모듈들은 각각 특정한 기능을 수행할 수 있으며, 서로 연결되어 모듈 어셈블리를 형성할 수 있도록 제공된다. 이때, 각각의 모듈은 서로 전기적으로도 연결되어 에너지, 신호, 데이터 등을 송수신할 수 있도록 제공될 수도 있다. 사용자는 제공된 매뉴얼 또는 스스로 창작한 방식에 따라 모듈들을 조립하여 특정한 목적을 수행하는 모듈 어셈블리를 제작할 수 있다. Recently, various module-based production tools have been proposed for the purpose of education, hobby, research, production, and the like. The modules included in these manufacturing tools can each perform a specific function and are provided to be connected to each other to form a module assembly. At this time, each module is also electrically connected to each other may be provided to transmit and receive energy, signals, data, and the like. The user can assemble modules according to provided manuals or self-created methods to produce a module assembly that performs a specific purpose.

일 예로, 특허문헌 1(대한민국 등록특허 제1761596호)은 네트워크 모듈, 구동 모듈, 센서 모듈 등 다양한 종류의 모듈을 조립하여 제작한 모듈 어셈블리를 개시하고 있다. 이 때, 모듈 어셈블리는 학생이나 사용자가 모듈(10, 20, 30, 40)들을 조립하면서 전자 장치의 작동 원리를 이해할 수 있는 교육용 키트 또는, 연구원이 특정 목적을 수행하기 위한 장치를 제작하기 위해 사용되는 연구용 키트 및 사용자가 취미용으로 조립 가능한 장난감 키트 등의 다양한 용도로 활용될 수 있다.As an example, Patent Document 1 (Republic of Korea Patent Registration No. 17169696) discloses a module assembly produced by assembling various types of modules such as a network module, a driving module, and a sensor module. At this time, the module assembly is used to create an educational kit that allows a student or a user to understand the principle of operation of an electronic device while assembling modules 10, 20, 30, 40, or a device for a researcher to perform a specific purpose. It can be used for various purposes such as research kits and toy kits that can be assembled by users for hobby purposes.

이러한 모듈 어셈블리들은 위에 언급한 바와 같이 소프트웨어 또는 하드웨어의 전문가인 연구원부터 학생, 일반인 등 다양한 사람들이 이용하고 있다. 단, 전문가를 제외한 일반인이나 학생들은 각 모듈들을 조립하고, 조립된 모듈 어셈블리에 소프트웨어를 포팅하여 사용하는 것이 어려울 수 있어서, 상술한 모듈의 보급에 제약이 되고 있다.As mentioned above, these module assemblies are used by a variety of people, from researchers who are experts in software or hardware, to students, and the general public. However, the general public or students other than the experts can assemble each module and port the software to the assembled module assembly, which can be difficult to use, thus limiting the dissemination of the above-described modules.

따라서, 모듈 어셈블리의 다양한 활용 가능성을 누구나 쉽게 인지하여 조립하고, 또한, 사용할 소프트웨어를 자동으로 생성 및 추천하여 누구나 활용이 용이할 수 있게 하는 모듈 추천 시스템의 보급이 요청되고 있었다.Accordingly, there has been a demand for the dissemination of a module recommendation system that enables anyone to easily recognize and assemble various utilization possibilities of the module assembly, and to automatically generate and recommend software to be used, thereby making it easy for anyone to utilize.

상기한 문제점을 해결하기 위하여, 본 발명에 따른 모듈 추천 시스템은, 모듈 어셈블리의 조립 정보를 공유하고, 사용자가 필요한 조립 정보를 용이하게 추천받고 검색할 수 있는 모듈 추천 시스템을 제공할 수 있다.In order to solve the above problems, the module recommendation system according to the present invention can provide a module recommendation system that shares assembly information of a module assembly and allows users to easily receive and search for required assembly information.

따라서, 모듈 어셈블리가 교육용, 개인용 장난감 등으로 활용될 때에, 하드웨어 또는 소프트웨어를 잘 알지 못하는 비 전문가들도 쉽게 모듈 어셈블리를 조립하고 또한 사용할 소프트웨어를 자동으로 생성 및 추천하여 누구나 모듈 어셈블리를 쉽게 활용할 수 있는 모듈 추천 시스템 및 모듈 어셈블리가 제공된다.Therefore, when the module assembly is used as an educational, personal toy, etc., even non-experts who are not familiar with hardware or software can easily assemble the module assembly and automatically generate and recommend software to be used so that anyone can easily utilize the module assembly. A module recommendation system and module assembly are provided.

상기 기술적 과제를 해결하기 위하여, 본 발명에 따른 소스 코드 및 모듈 추천 시스템은, 토폴로지 정보를 감지 및 생성하는 토폴로지 관리부를 구비하는 기능 유닛을 포함하는 컨트롤 모듈 및 상기 컨트롤 모듈과 다른 기능 유닛을 포함하는 복수의 타모듈을 포함하는 모듈 어셈블리; 상기 모듈 어셈블리와 연결되는 사용자 단말; 및 상기 사용자 단말과 네트워크로 연결되며, 상기 모듈 어셈블리의 토폴로지 정보를 저장하고, 상기 토폴로지 정보에 기초하여 사용자 단말에 추천 소스 코드에 대한 정보를 제공하는 추천 서버를 포함하며, 상기 토폴로지 정보는 모듈 고유 정보, 가중치 정보 및 하위 연결 모듈 정보를 포함하며, 상기 추천 서버는 상기 모듈 고유 정보 및 상기 가중치 정보에 기초하여 상기 추천 소스 코드의 추천 순서를 결정할 수 있다.In order to solve the above technical problem, the source code and the module recommendation system according to the present invention include a control module including a functional unit having a topology management unit for detecting and generating topology information, and a control module and other functional units A module assembly including a plurality of other modules; A user terminal connected to the module assembly; And a recommendation server connected to the user terminal through a network, storing topology information of the module assembly, and providing recommendation source code information to the user terminal based on the topology information, wherein the topology information is unique to the module. Information, weight information, and lower connection module information, and the recommendation server may determine a recommendation order of the recommended source code based on the module-specific information and the weight information.

이 경우, 상기 복수의 타 모듈은 시멘틱 모듈을 포함하며, 상기 시멘틱 모듈에 부착되는 하위 연결 모듈은 컨트롤 모듈에 직접 부착되는 것과 동일하게 가중치가 부여되는 가중치 정보를 가질 수 있다.In this case, the plurality of other modules include a semantic module, and a lower connection module attached to the semantic module may have weight information that is weighted in the same way as being directly attached to the control module.

또한, 상기 토폴로지 정보는 단계 정보를 더 포함하며, 상기 단계 정보는 상기 모듈 어셈블리의 컨트롤 모듈로부터 해당 모듈까지의 최단경로 상의 모듈을 카운팅하여 결정되며, 상기 추천 서버는 상기 단계 정보, 상기 모듈 고유 정보 및 상기 가중치 정보에 기초하여 상기 추천 소스 코드의 추천 순서를 결정할 수 있다.In addition, the topology information further includes step information, and the step information is determined by counting a module on a shortest path from a control module of the module assembly to a corresponding module, and the recommendation server includes the step information and the module specific information And a recommendation order of the recommended source code based on the weight information.

또한, 상기 복수의 타 모듈은 시멘틱 모듈을 포함하며, 상기 시멘틱 모듈에 부착되는 하위 연결 모듈은 컨트롤 모듈에 직접 부착되는 것과 동일한 단계 정보를 가질 수 있다,In addition, the plurality of other modules include a semantic module, and the lower connection module attached to the semantic module may have the same step information as being directly attached to the control module.

또한, 상기 가중치 정보는 상기 단계 정보에 기초하여 결정될 수 있다.In addition, the weight information may be determined based on the step information.

또한, 상기 토폴로지 정보는 상기 복수의 타모듈 각각의 모듈 카테고리 정보를 더 포함하며, 상기 추천 서버는 상기 모듈 카테고리 별 우선순위 값에 따른 가중치를 이용하여 상기 추천 소스 코드의 추천 순위를 결정할 수 있다.In addition, the topology information further includes module category information of each of the plurality of other modules, and the recommendation server can determine a recommendation ranking of the recommended source code by using a weight according to a priority value for each module category.

또한, 상기 추천 서버는 상기 모듈 고유 정보 및 상기 가중치 정보에 기초하여 추가 또는 치환 가능한 복수의 모듈 어셈블리 구성의 추천 순서를 결정할 수 있다.Also, the recommendation server may determine a recommendation order of a plurality of module assembly configurations that can be added or replaced based on the module-specific information and the weight information.

또한, 상기 토폴로지 정보는 상기 컨트롤 모듈에 상기 복수의 타모듈이 연결된 순서를 나타내는 연결 순위를 더 포함하며, 상기 추천 서버는 상기 연결 순위에 기초하여 상기 추천 소스 코드의 추천 순위를 결정하여 상기 사용자 단말에 전송할 수 있다.In addition, the topology information further includes a connection rank indicating the order in which the plurality of other modules are connected to the control module, and the recommendation server determines the recommendation rank of the recommended source code based on the connection rank, and the user terminal Can be transferred to.

또한, 상기 토폴로지 관리부의 토폴로지 감지부는 상기 컨트롤 모듈의 하위 연결 모듈로부터 제공받은 모듈 고유 정보 및 하위 연결 모듈 정보에 기초하여 상기 모듈 어셈블리의 연결 상태를 감지할 수 있다.In addition, the topology detection unit of the topology management unit may detect a connection state of the module assembly based on module unique information and lower connection module information provided from a lower connection module of the control module.

또한, 상기 추천 서버는 추가적으로 상기 사용자 단말로부터 입력받은 키워드 정보에 기초하여 추가 또는 치환 가능한 모듈을 추천할 수 있다.In addition, the recommendation server may additionally recommend a module that can be added or replaced based on keyword information input from the user terminal.

또한, 상기 추천 서버는 메타 정보에 기초하여 소스 코드 및 추가 또는 치환 가능한 모듈을 추천할 수 있다.Also, the recommendation server may recommend source code and additional or replaceable modules based on meta information.

한편, 본 발명의 실시예에 따른 모듈 어셈블리는, 토폴로지 정보를 감지하여 생성하는 토폴로지 관리부; 통신 제어부; 모듈 정보 및 토폴로지 정보를 포함하는 메모리; 마이크로프로세서를 포함하며 사용자 단말에서 포팅한 프로그램을 실행할 수 있는 기능 유닛을 구비하는 컨트롤 모듈; 및 상기 컨트롤 모듈과 다른 기능 유닛을 각각 구비하는 복수의 타모듈을 포함하며, 상기 토폴로지 정보는 상기 복수의 타모듈의 모듈 고유 정보, 가중치 정보 및 하위 연결 모듈 정보를 포함하며, 상기 추천 서버는 상기 사용자 단말과 네트워크로 연결되며, 상기 모듈 어셈블리의 토폴로지 정보를 저장하고 상기 모듈 고유 정보 및 가중치 정보에 기초하여 상기 추천 소스 코드의 추천 순서를 결정할 수 있다.On the other hand, the module assembly according to an embodiment of the present invention, the topology management unit for sensing and generating topology information; Communication control unit; A memory including module information and topology information; A control module including a microprocessor and having a functional unit capable of executing a program ported by a user terminal; And a plurality of other modules each having a different function unit from the control module, wherein the topology information includes module specific information, weight information, and sub-connection module information of the plurality of other modules, and the recommendation server includes It is connected to a user terminal and a network, and stores topology information of the module assembly and determines a recommendation order of the recommended source code based on the module-specific information and weight information.

본 발명에 따른 모듈 추천 시스템은, 모듈 어셈블리의 조립 정보를 공유하고, 사용자가 필요한 조립 정보를 용이하게 추천받고 검색할 수 있는 모듈 추천 시스템을 제공할 수 있다.The module recommendation system according to the present invention can provide a module recommendation system that shares assembly information of a module assembly and allows users to easily receive and search for required assembly information.

따라서, 모듈 어셈블리가 교육용, 개인용 장난감 등으로 활용될 때에, 하드웨어 또는 소프트웨어를 잘 알지 못하는 비 전문가들도 쉽게 모듈 어셈블리를 조립하고 또한 사용할 소프트웨어를 자동으로 생성 및 추천하여 누구나 모듈 어셈블리를 쉽게 활용할 수 있는 모듈 추천 시스템 및 모듈 어셈블리가 제공된다.Therefore, when the module assembly is used as an educational, personal toy, etc., even non-experts who are not familiar with hardware or software can easily assemble the module assembly and automatically generate and recommend software to be used so that anyone can easily utilize the module assembly. A module recommendation system and module assembly are provided.

이 경우, 사용자는 모듈 어셈블리 조립 시 타 사용자가 조립한 모듈 어셈블리 및 모듈 어셈블리를 구동하는 소스 코드를 참조하여 새로운 모듈을 디자인할 수 있다.In this case, when assembling the module assembly, the user can design a new module by referring to the module assembly assembled by another user and the source code driving the module assembly.

도 1은 본 발명의 실시예에 따른 모듈 어셈블리가 조립된 모습을 보여주는 사시도이다.
도 2는 도 1의 제1 모듈의 내부 구조를 보여주는 평면도이다.
도 3은 본 발명의 실시예에 따른 소스코드 및 모듈 추천 시스템을 설명하기 위한 블록도이다.
도 4는 본 발명의 실시예에 따른 모듈 어셈블리의 기능 유닛을 설명하기 위한 블록도이다.
도 5는 본 발명의 다양한 실시예에 따른 모듈 어셈블리가 조립된 모습을 보여주는 사시도이다.
도 6은 본 발명의 실시예에 따른 토폴로지 정보를 설명하기 위한 표이다.
도 7은 본 발명의 실시예에 따른 모듈 어셈블리의 토폴로지를 설명하기 위한 블록도이다.
도 8은 본 발명의 실시예에 따른 토폴로지 감지 프로토콜을 설명하기 위한 도면이다.
도 9 및 도 10은 본 발명의 실시예에 따른 개발자 도구 앱의 유저 인터페이스를 나타낸 도면이다.
도 11은 본 발명의 실시예에 따른 모듈 어셈블리가 조립된 모습을 보여주는 사시도이다.
도 12는 본 발명의 실시예에 따른 시멘틱 모듈을 설명하기 위한 도면이다.
1 is a perspective view showing a state in which a module assembly according to an embodiment of the present invention is assembled.
FIG. 2 is a plan view showing the internal structure of the first module of FIG. 1.
3 is a block diagram illustrating a source code and module recommendation system according to an embodiment of the present invention.
4 is a block diagram illustrating a functional unit of a module assembly according to an embodiment of the present invention.
5 is a perspective view showing a state in which a module assembly according to various embodiments of the present invention is assembled.
6 is a table for explaining topology information according to an embodiment of the present invention.
7 is a block diagram illustrating a topology of a module assembly according to an embodiment of the present invention.
8 is a diagram for explaining a topology sensing protocol according to an embodiment of the present invention.
9 and 10 are views illustrating a user interface of a developer tool app according to an embodiment of the present invention.
11 is a perspective view showing a state in which a module assembly according to an embodiment of the present invention is assembled.
12 is a view for explaining a semantic module according to an embodiment of the present invention.

이하의 내용은 단지 발명의 원리를 예시한다. 그러므로 당업자는 비록 본 명세서에 명확히 설명되거나 도시되지 않았지만 발명의 원리를 구현하고 발명의 개념과 범위에 포함된 다양한 장치를 발명할 수 있는 것이다. 또한, 본 명세서에 열거된 모든 조건부 용어 및 실시예들은 원칙적으로, 발명의 개념이 이해되도록 하기 위한 목적으로만 명백히 의도되고, 이와 같이 특별히 열거된 실시예들 및 상태들에 제한적이지 않는 것으로 이해되어야 한다. The following is merely illustrative of the principles of the invention. Therefore, a person skilled in the art can implement various principles included in the concept and scope of the invention and implement the principles of the invention, although not explicitly described or illustrated in the specification. In addition, all conditional terms and examples listed in this specification are intended to be understood in principle only for the purpose of understanding the concept of the invention, and should be understood as not limited to the specifically listed examples and states. do.

또한, 이하의 설명에서 제1, 제2 등과 같은 서수식 표현은 서로 동등하고 독립된 객체를 설명하기 위한 것이며, 그 순서에 주(main)/부(sub) 또는 주(master)/종(slave)의 의미는 없는 것으로 이해되어야 한다.In addition, in the following description, ordinal expressions such as first and second are intended to describe objects that are equivalent to each other and are independent of each other, and in the order of main / sub or master / slave. It should be understood as meaningless.

상술한 목적, 특징 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해질 것이며, 그에 따라 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 이하에 첨부한 도면을 참조하여 설명한다.The above objects, features, and advantages will become more apparent through the following detailed description in connection with the accompanying drawings, and accordingly, those skilled in the art to which the present invention pertains can easily implement the technical spirit of the invention. . It will be described below with reference to the accompanying drawings.

도 1은 본 발명의 실시예에 따른 모듈 어셈블리가 조립된 모습을 보여주는 사시도이고, 도 2는 도 1의 제1 모듈의 내부 구조를 보여주는 평면도이다.1 is a perspective view showing a state in which a module assembly according to an embodiment of the present invention is assembled, and FIG. 2 is a plan view showing the internal structure of the first module of FIG. 1.

도 1 및 도 2를 참조하면, 본 발명의 일 실시예에 따른 모듈 어셈블리(1)는 서로 조립 가능한 복수 개의 모듈 (10, 20, 30, 40)들로 구성된다. 1 and 2, the module assembly 1 according to an embodiment of the present invention is composed of a plurality of modules (10, 20, 30, 40) that can be assembled with each other.

본 실시예에서, 모듈 어셈블리(1)는 서로 조립 가능한 하나 이상의 모듈(10, 20, 30, 40)들의 집합 또는 이들이 조립된 구조체로 정의될 수 있으며, 그 목적, 종류, 형태, 모듈의 개수 등에 의해 제한되지 않는다. 예를 들어, 모듈 어셈블리(1)는 학생이나 사용자가 모듈(10, 20, 30, 40)들을 조립하면서 전자 장치의 작동 원리를 이해할 수 있는 교육용 키트의 일부일 수 있다. 또는, 모듈 어셈블리(1)는 연구원이 특정 목적을 수행하기 위한 장치를 제작하기 위해 사용되는 연구용 키트의 일부일 수 있다. 또한, 모듈 어셈블리(1)는 사용자가 취미용으로 조립 가능한 장난감 키트의 일부일 수 있다.In this embodiment, the module assembly 1 may be defined as a set of one or more modules 10, 20, 30, 40 that can be assembled with each other, or a structure in which they are assembled, and the purpose, type, shape, number of modules, etc. Is not limited by. For example, the module assembly 1 may be part of an educational kit that allows a student or user to understand the principle of operation of the electronic device while assembling the modules 10, 20, 30, 40. Alternatively, the module assembly 1 may be part of a research kit used by a researcher to build a device for a specific purpose. Also, the module assembly 1 may be part of a toy kit that can be assembled by the user for hobby purposes.

설명의 용이함을 위하여 본 실시예에서는 모듈 어셈블리(1)가 도 1에 도시된 것과 같이 4개의 모듈(10, 20, 30, 40)들로 구성된 예를 설명하며, 각각 제1 모듈(10), 제2 모듈(20), 제3 모듈(30), 및 제4 모듈(40)로 지칭한다. For ease of explanation, this embodiment describes an example in which the module assembly 1 is composed of four modules 10, 20, 30, and 40, as shown in FIG. 1, respectively, the first module 10, Referred to as the second module 20, the third module 30, and the fourth module 40.

아울러, 본 실시예에서 모듈(10, 20, 30, 40)은 전압 또는 전류의 변화로서 나타내는 신호, 데이터, 또는 전기 에너지(이하 '전기적 신호')를 다른 모듈 또는 외부 장치와 송수신할 수 있도록 구성된 객체로 정의될 수 있다. 이러한 모듈(10, 20, 30, 40)들은 중앙처리장치(CPU), 메모리, 전원 등을 구비하거나 또는 다른 모듈의 제어를 받아 작동 가능한 감지(sensing) 수단, 처리(processing) 수단, 구동 수단 등을 구비하여 각각 독립적으로 구동 가능할 수 있다. 또한, 각각의 모듈(10, 20, 30, 40)은 독립적으로 특정한 기능을 수행하거나, 다른 모듈과의 상호 작용에 의해 특정한 기능을 수행하도록 구성될 수도 있다. 모듈(10, 20, 30, 40)들이 중앙처리장치를 구비하는 경우, 각각의 모듈별로 펌웨어가 설치될 수도 있다.In addition, in this embodiment, the modules 10, 20, 30, and 40 are configured to transmit and receive signals, data, or electrical energy (hereinafter referred to as 'electrical signals') indicated as changes in voltage or current with other modules or external devices. Can be defined as an object. These modules (10, 20, 30, 40) are provided with a central processing unit (CPU), memory, power supply, or other modules, and can be operated under the control of a sensing (sensing) means, processing (processing) means, driving means, etc. Equipped with each can be independently driven. Further, each module 10, 20, 30, 40 may be configured to perform a specific function independently or to perform a specific function by interacting with other modules. When the modules 10, 20, 30, and 40 are provided with a central processing unit, firmware may be installed for each module.

제1 모듈(10) 내지 제4 모듈(40)은 예컨대, 리모컨 등으로부터 적외선 신호를 수신할 수 있는 적외선 센서 모듈, 스마트폰 등과 무선 통신할 수 있는 무선 통신 모듈이고, 자이로스코프 센서 모듈 또는 모터(41) 등의 구동 모듈일 수 있다. 또한, 제1 모듈(10) 내지 제4 모듈(40)은 외부의 구동 장치(41)와 케이블(42)에 의해 연결될 수도 있다. 이 경우, 모듈 어셈블리(1)는 리모컨 또는 스마트폰의 신호를 수신하여 모터(41)를 선택적으로 작동시키는 장치일 수 있다. 상기와 같은 모듈 어셈블리(1)의 구성은 하나의 예에 불과하며, 각각의 모듈은 독립적으로, 또는 다른 모듈과의 연동을 통해 임의의 기능을 수행할 수 있도록 제공될 수 있다.The first module 10 to the fourth module 40 are, for example, an infrared sensor module capable of receiving infrared signals from a remote controller, a wireless communication module capable of wireless communication with a smartphone, etc., and a gyroscope sensor module or motor ( 41) and the like. Further, the first module 10 to the fourth module 40 may be connected by an external driving device 41 and a cable 42. In this case, the module assembly 1 may be a device that selectively operates the motor 41 by receiving a signal from a remote control or a smartphone. The configuration of the module assembly 1 as described above is only one example, and each module may be provided to perform any function independently or through interworking with other modules.

모듈(10, 20, 30, 40)들은 다른 모듈과 면 접촉 가능한 복수 개의 측면을 갖는 다각형 기둥 형상인 입체일 수 있다. 여기서, 면 접촉은 측면의 모든 면적이 모두 접촉되는 것 만을 의미하는 것은 아니며, 측면의 일부만 접촉되어 어느 하나의 모듈의 측면과 다른 모듈의 측면이 서로 마주보며 일부분이 접촉되는 것을 포함하는 의미로 이해되어야 한다.The modules 10, 20, 30, and 40 may be three-dimensional in the shape of a polygonal pillar having a plurality of side surfaces that can face-contact with other modules. Here, the surface contact does not only mean that all areas of the side are all in contact, but only part of the side is contacted so that the side of one module and the side of the other module face each other and is understood to include a part of the contact. Should be.

본 실시예에서는 모듈(10, 20, 30, 40)들이 모두 동일한 크기의 정사각형 형상의 평면을 갖는 것을 예로 들어 도시하였다. 즉, 본 실시예에서의 모듈(10, 20, 30, 40)들은 4개의 측면을 갖는다. 또한, 본 실시예에서는 모듈 (10, 20, 30, 40)들의 높이가 모두 동일하게 형성되어, 모듈(10, 20, 30, 40)들이 모두 동일한 크기를 갖는 직 육면체인 것을 예로 설명한다.In this embodiment, it is illustrated that the modules 10, 20, 30, and 40 all have a square plane having the same size. That is, the modules 10, 20, 30, 40 in this embodiment have four sides. In addition, in the present embodiment, it will be described as an example that the heights of the modules 10, 20, 30, 40 are all the same, and the modules 10, 20, 30, 40 are all rectangular parallelepipeds having the same size.

다른 실시예로서, 모듈(10, 20, 30, 40)들은 평면 상 정삼각형, 직사각형, 정오각형 등의 다각형 기둥 형상으로 형성될 수도 있고, 특히 정다각형 형상으로 형성될 수 있다. 일부의 모듈(10, 20, 30, 40)들이 서로 다른 입체적 형상을 가질 수도 있다. 또한, 모듈(10, 20, 30, 40)들 중 일부는 뿔, 다면체 등의 다양한 입체적 형상을 가질 수도 있다. As another embodiment, the modules 10, 20, 30, and 40 may be formed in a polygonal column shape such as an equilateral triangle, a rectangle, or an equilateral pentagon on a plane, and in particular, may be formed in a regular polygonal shape. Some modules 10, 20, 30, 40 may have different three-dimensional shapes. In addition, some of the modules 10, 20, 30, 40 may have various three-dimensional shapes such as horns and polyhedra.

여기서, 제1 모듈(10)은 외관을 형성하는 하우징(11)과, 하우징(11)의 측면에 노출되어 전기 신호 등을 연결된 다른 모듈에 전달하거나 수신할 수 있는 단자(107)와, 하우징(11)의 외부로 선택적으로 돌출되는 핀(180)이 제공된 핀 설치부(150) 및 다른 모듈의 핀이 삽입되는 핀 수용부(160)를 포함할 수 있다.Here, the first module 10 includes a housing 11 that forms an exterior, a terminal 107 that is exposed on the side of the housing 11 and can transmit or receive electric signals, etc. to other connected modules, and the housing ( 11) may include a pin mounting portion 150 provided with a pin 180 selectively protruding to the outside, and a pin receiving portion 160 into which pins of other modules are inserted.

하우징(11)은 예컨대, 직육면체 형상으로 형성된 케이스일 수 있다. 하우징(11)은 도 1에 도시된 것처럼 상부 케이스(11a)와 하부 케이스(11b)가 결합되는 형태로 제공될 수 있다. 하우징(11)을 구성하는 방법은 필요에 따라 상부 케이스(11a)와 하부 케이스(11b)가 일체로 형성되거나, 더 많은 부분으로 나뉘어 조립될 수 있다.The housing 11 may be, for example, a case formed in a rectangular parallelepiped shape. The housing 11 may be provided in a form in which the upper case 11a and the lower case 11b are combined as illustrated in FIG. 1. The method of constructing the housing 11 may be assembled as the upper case 11a and the lower case 11b are integrally formed or divided into more parts as necessary.

단자(107)는 전기 신호 등을 연결된 다른 모듈에 전달하거나 다른 모듈로부터 받을 수 있으며, 일 예로, 하우징 (11)의 내부에 제공된 기판(102)으로부터 전기 신호 등을 전달받아 단자(107)에 접촉된 다른 모듈의 단자로 전 달할 수 있다. 단자(107)는 다수개의 접촉 점이나 연결 핀을 가질 수 있으며, 이는 전기 신호 등의 전달방법, 표준화된 규격 등에 따라 다양한 형태를 가질 수 있다. 이와 같은 단자(107)는 핀(180), 핀 설치부(150), 핀 수 용부(160)와 한 셋트를 이루어 하우징(11)의 일 측면에 배치될 수 있다. 구체적으로, 단자(107)는 핀(180)과 핀 수용부(160) 사이에 배치될 수 있으며, 다른 모듈의 핀과 핀 수용부 사이에 배치된 단자에 접촉될 수 있다. The terminal 107 may transmit an electric signal or the like to another connected module or receive it from another module. For example, the terminal 107 receives an electric signal or the like from the substrate 102 provided inside the housing 11 and contacts the terminal 107 Can be delivered to the terminals of other modules. The terminal 107 may have a plurality of contact points or connection pins, which may have various forms according to a transmission method such as an electrical signal, a standardized standard, and the like. The terminal 107 may be disposed on one side of the housing 11 by forming a set with the pin 180, the pin installation portion 150, and the pin receiving portion 160. Specifically, the terminal 107 may be disposed between the pin 180 and the pin receiving portion 160, and may be in contact with a terminal disposed between the pin and the pin receiving portion of another module.

본 실시예에서는 하우징(11)의 모든 측면에 단자(107)가 제공되는 것을 예로 들었으나, 실시예에 따라서는 단자 (107)가 형성되지 않은 측면이 존재할 수도 있다.In this embodiment, the terminal 107 is provided on all sides of the housing 11 as an example, but depending on the embodiment, there may be a side on which the terminal 107 is not formed.

도 2를 참조하면, 하부 케이스(11b)는 외형 및 내부 구조를 형성하는 프레임(100), 프레임(100)의 내측에 제공되는 기판(102), 기판(102)에 설치되는 기능 유닛(104)을 포함할 수 있다.Referring to FIG. 2, the lower case 11b includes a frame 100 forming an external shape and an internal structure, a substrate 102 provided inside the frame 100, and a functional unit 104 installed on the substrate 102 It may include.

프레임(100)은 하우징(11)의 일부 또는 전부를 구성하는 구조물로서, 하우징(11)의 일부 또는 전부의 외형을 형성하고, 내부에 각종 부품이 설치되기 위한 공간과 구조를 제공할 수 있다. 본 실시예에서 프레임(100)은 하우징(11)의 하부 케이스(11b)를 형성하는 것을 예로 들어 설명하나, 본 발명의 권리범위는 이에 한정되지 않는다. 또한, 본 실시예에서 프레임(100)은 사각형 형상으로 형성되며, 4개의 코너(corner, 101)를 갖는다.The frame 100 is a structure constituting part or all of the housing 11, and may form an external shape of part or all of the housing 11 and provide a space and a structure for installing various parts therein. In this embodiment, the frame 100 is described as an example of forming the lower case 11b of the housing 11, but the scope of the present invention is not limited thereto. In addition, the frame 100 in this embodiment is formed in a rectangular shape, and has four corners (corner, 101).

기판(102)에는 제1 모듈(10)의 기능을 구현하기 위한 기능 유닛(104)이 실장될 수 있으며, 프레임(100)의 내측 공간 중앙부에 고정 설치될 수 있다. 기능 유닛(104)은 예를 들어 마이크로프로세서를 포함할 수 있으며, 이 때 제1 모듈(10)이 독립적인 펌웨어에 의해 구동되면 제1 모듈(10)을 제어하기 위해 제공될 수 있다. 또다른 예로서, 제1 모듈(10)이 적외선 센서 모듈인 경우, 기능 유닛(104)은 적외선 센서 및 적외선 센서로부터 감지된 값을 처리하는데 필요한 ADC(Analog Digital Converter) 및 다른 모듈 또는 외부 하드웨어와 통신하는 데 필요한 인터페이스 예컨대, I2C 또는 UART, 또는 USB 등의 통신 인터페이스 등 필요한 디바이스들을 포함할 수 있다. A functional unit 104 for realizing the function of the first module 10 may be mounted on the substrate 102, and may be fixedly installed in the center of the inner space of the frame 100. The functional unit 104 may include, for example, a microprocessor, and when the first module 10 is driven by independent firmware, it may be provided to control the first module 10. As another example, when the first module 10 is an infrared sensor module, the functional unit 104 may be configured with an analog digital converter (ADC) and other modules or external hardware required to process the infrared sensor and the values detected from the infrared sensor. Interfaces required to communicate, for example, I2C or UART, or may include necessary devices such as a communication interface such as USB.

본 발명의 모듈(10 내지 40)은 상술한 기능 유닛(104)의 기능에 따라 모듈의 종류가 정해진다. 예컨대, 기능 유닛(104)이 마이크로프로세서 및 메모리를 포함하고 있으며, 다른 유닛들을 제어할 수 있는 OS 또는 펌웨어를 포함하고 있는 경우에는 컨트롤 모듈이 된다. 또는, 기능 유닛(104)이 센서의 센싱 값을 다른 모듈 또는 외부 디바이스에 전달할 수 있는 경우에는 센서 모듈이 된다. 또는, 기능 유닛(104)이 NB-IOT, LTE, LoRa, WiFi, Bluetooth, USB, 케이블 모뎀 등 다양한 유무선 통신 장치를 포함하면서 다른 모듈로부터 전기적 신호를 수신하여 상술한 유무선 통신 장치를 통하여 다른 외부 디바이스에 전기적 신호를 전송할 수 있는 경우에는 통신 모듈이 될 수 있다. 또는, 기능 유닛(104)이 모터 등의 다양한 액추에이터 및 액추에이터 제어 회로들을 포함하여 구동이 가능하게 하는 경우에는 구동 모듈이 될 수 있다. 기타 본원 발명의 모듈의 더욱 상세한 구조 및 결합에 대해서는 대한민국 등록특허 공보 제10-1761596에 상세하게 기재되어 있으며, 본원 특허 명세서에 참조로서 포함된다.The types of modules of the modules 10 to 40 of the present invention are determined according to the functions of the above-described functional unit 104. For example, when the functional unit 104 includes a microprocessor and memory, and an OS or firmware capable of controlling other units, it becomes a control module. Or, when the functional unit 104 can transmit the sensing value of the sensor to another module or an external device, it becomes a sensor module. Alternatively, the functional unit 104 includes various wired / wireless communication devices such as NB-IOT, LTE, LoRa, WiFi, Bluetooth, USB, and cable modem, and receives electrical signals from other modules to other external devices through the wired / wireless communication device described above. If it is possible to transmit an electrical signal to the communication module. Alternatively, when the functional unit 104 includes various actuators such as a motor and actuator control circuits, it may be a driving module. Other more detailed structures and combinations of the modules of the present invention are described in detail in Korean Patent Publication No. 10-1761596, and are incorporated herein by reference.

이하에서는 도 3을 참조하여 상술한 구조의 모듈 어셈블리(1)를 조립하고, 조립된 모듈 어셈블리를 구동하기 위한 소스 코드를 작성할 때에 타 사용자가 조립한 모듈 어셈블리(1) 및 모듈 어셈블리(1)를 구동하는 소스 코드를 참조하여 새로운 모듈을 디자인할 수 있는 소스 코드 및 모듈 어셈블리 추천 시스템에 대하여 서술한다. 도 3는 본 발명의 일 실시예에 따른 소스 코드 및 모듈 어셈블리 추천 시스템을 설명하기 위한 블록도이다. 도 3을 참조하면, 본 발명의 실시예에 따른 모듈 어셈블리 추천 시스템은 모듈 어셈블리(1), 추천 서버(2) 및 사용자 단말(3)를 포함할 수 있다. Hereinafter, when assembling the module assembly 1 having the above-described structure with reference to FIG. 3 and writing source code for driving the assembled module assembly, the module assembly 1 and the module assembly 1 assembled by another user are described. Describes the source code and module assembly recommendation system that can design a new module with reference to the running source code. 3 is a block diagram illustrating a source code and module assembly recommendation system according to an embodiment of the present invention. Referring to FIG. 3, a module assembly recommendation system according to an embodiment of the present invention may include a module assembly 1, a recommendation server 2, and a user terminal 3.

이 경우, 추천 서버(2)와 사용자 단말(3)은 네트워크(4)로 연결될 수 있다. 본 실시예에서 상술한 네트워크(4)가 인터넷으로 구현되는 예에 대하여 설명하도록 한다. 단, 본 발명은 이에 한정되는 것은 아니며 당업자는 다양한 네트워크를 통하여 추천 서버(2)와 사용자 단말(3)의 연결을 구현할 수 있다.In this case, the recommendation server 2 and the user terminal 3 may be connected to the network 4. In the present embodiment, an example in which the above-described network 4 is implemented by the Internet will be described. However, the present invention is not limited to this, and a person skilled in the art can implement a connection between the recommendation server 2 and the user terminal 3 through various networks.

추천 서버(2)는 사용자 단말(3) 또는 모듈 어셈블리(1)로부터 토폴로지 정보를 네트워크를 통하여 수신할 수 있으며, 이러한 토폴로지 정보를 빅데이터로서 저장할 수 있다. 이 경우, 추천 서버(2)는 토폴로지 정보에 기초하여 활용 가능한 소스 코드 및 추가 또는 치환 가능한 추천 모듈을 추천해 줄 수 있다. 이 경우, 추가 또는 치환 가능한 모듈 정보는 모듈 어셈블리(1)의 현재 구성에서, 모듈을 추가 부착하여 현재 구성 대비 추가적인 동작을 수행하거나, 또는 현재 구성에서 치환할 수 있는 모듈에 대한 정보를 의미한다. 본 발명의 실시예에서는 추가 또는 치환 가능한 모듈 정보 및 해당 조합의 모델 어셈블리에 관련한 소스 코드가 추천 서버(2)에서 추천 및 다운로드될 수 있다. The recommendation server 2 may receive topology information from the user terminal 3 or the module assembly 1 through a network, and may store such topology information as big data. In this case, the recommendation server 2 may recommend usable source codes and additional or replaceable recommendation modules based on topology information. In this case, the module information that can be added or replaced means information on a module that can be attached to the current configuration of the module assembly 1 to attach an additional module to perform an additional operation compared to the current configuration, or to replace the current configuration. In an embodiment of the present invention, additional or replaceable module information and source code related to a model assembly of a corresponding combination may be recommended and downloaded from the recommendation server 2.

이 때 추천 서버(2)가 복수의 추가 또는 치환 가능한 모듈 조합 정보 및 관련 소스 코드를 제공하는 경우에 사용자 단말(3)은 선호하는 모듈 정보 및 소스 코드를 선택할 수 있는 인터페이스를 제공할 수 있다. 소스 코드 및 모듈 추천에 관한 상세한 프로세스는 후술하기로 한다.In this case, when the recommendation server 2 provides a plurality of additional or replaceable module combination information and related source code, the user terminal 3 may provide an interface for selecting preferred module information and source code. The detailed process of source code and module recommendation will be described later.

한편, 모듈 어셈블리(1)는 USB, RS-232, IEEE1394 등 유선 통신 수단을 통하여 사용자 단말(3)과 연결될 수도 있으며 또는 WiFi 또는 Bluetooth 등의 무선 통신 수단을 통하여 사용자 단말(3)과 연결될 수도 있다. 또는 모듈 어셈블리(1)는 네트워크를 통하여 사용자 단말(3)과 연결될 수도 있다.Meanwhile, the module assembly 1 may be connected to the user terminal 3 through wired communication means such as USB, RS-232, IEEE1394, or may be connected to the user terminal 3 through wireless communication means such as WiFi or Bluetooth. . Alternatively, the module assembly 1 may be connected to the user terminal 3 through a network.

앞서 기능 유닛(104)에 관한 설명에서 기술한 바와 같이, 모듈(10 내지 40)의 기능은 기능 유닛(104)의 구성에 따라 정해지게 된다. 이 경우, 편의를 위하여, 모듈(10)이 컨트롤 모듈이라고 가정한 후 설명한다. 이 경우, 컨트롤 모듈(10)은 도 4과 같은 구성을 가질 수 있다. As described above in the description of the functional unit 104, the functions of the modules 10 to 40 are determined according to the configuration of the functional unit 104. In this case, for convenience, it will be described after assuming that the module 10 is a control module. In this case, the control module 10 may have a configuration as shown in FIG. 4.

도 4를 참조하면 컨트롤 모듈(10)의 기능 유닛(104)은 토폴로지 관리부(1043), 통신 제어부(1044), 메모리(1045) 및 마이크로프로세서(1050)를 포함할 수 있다. Referring to FIG. 4, the functional unit 104 of the control module 10 may include a topology management unit 1043, a communication control unit 1044, a memory 1045, and a microprocessor 1050.

여기서, 토폴로지 관리부(1043)는 모듈 어셈블리(1)의 연결 구조(토폴로지)를 감지하는 프로토콜을 실행하여 토폴로지를 결정하는 기능을 수행한다. 보다 구체적으로, 토폴로지 관리부(1043)는 토폴로지 감지부(1043-1) 및 토폴로지 정보 생성부(1043-2)를 포함할 수 있다.Here, the topology management unit 1043 performs a function of determining a topology by executing a protocol that detects a connection structure (topology) of the module assembly 1. More specifically, the topology management unit 1043 may include a topology detection unit 1043-1 and a topology information generation unit 1043-2.

토폴로지 감지부(1043-1)는 토폴로지 감지 프로토콜을 포함하며 연결된 모듈들의 토폴로지를 감지할 수 있는 하드웨어 및/또는 소프트웨어 구성요소이다. 예컨대, 도 5을 참조하면, 본 실시예의 토폴로지 감지부(1043-1)는 컨트롤 모듈(10)을 중심으로 모듈 어셈블리(1)에 접속된 연결 순위를 감지하고, 컨트롤 모듈(10)과의 거리에 따라 해당 모듈의 단계(1st tier 내지 4th tier)를 정할 수 있다. 토폴로지 감지부(1043-1)의 상세한 감지 프로토콜은 후술하기로 한다.The topology detection unit 1043-1 includes a topology detection protocol and is a hardware and / or software component capable of detecting the topology of connected modules. For example, referring to FIG. 5, the topology sensing unit 1043-1 of the present embodiment detects the connection rank connected to the module assembly 1 centering on the control module 10, and the distance from the control module 10 According to the steps of the module (1 st tier to 4 th tier) can be determined. The detailed detection protocol of the topology detection unit 1043-1 will be described later.

이 경우, 토폴로지 감지부(1043-1)는 접속된 순서대로 연결 순위를 파악한다. 예를 들어, 도 5(a)에서 모듈들(20, 30, 40)이 컨트롤 모듈(10)에 순차적으로 접속한 경우에는, 모듈(20)은 연결 순위 1, 모듈(30)은 연결 순위 2, 모듈(40)은 연결 순위 3을 순차적으로 부여받게 된다. 이 때, 모듈(30, 40)이 컨트롤 모듈(10)에 접속하기 전에 먼저 결합하게 된 경우에는 모듈(30, 40)을 모듈 그룹으로 지정한 후, 동일한 연결 순위를 부여할 수도 있다. 이 경우, 모듈(20)은 연결 순위 1, 모듈(30, 40)은 연결 순위 2가 부여될 수 있다. In this case, the topology detection unit 1043-1 grasps the connection rank in the order of connection. For example, when the modules 20, 30, and 40 in FIG. 5 (a) are sequentially connected to the control module 10, the module 20 has a connection rank 1, and the module 30 has a connection rank 2 , Module 40 is sequentially assigned a connection rank 3. At this time, if the modules 30 and 40 are first coupled before connecting to the control module 10, the modules 30 and 40 may be designated as a module group, and the same connection rank may be given. In this case, the module 20 may be assigned a connection rank 1, and the modules 30 and 40 may be assigned a connection rank 2.

한편, 도 5(b)와 같은 경우에는 모듈(20, 30)이 각각 컨트롤 모듈(10)과 결합하고 있는데, 이 경우에는, 실제로 결합한 순서에 따라 연결 순위를 부여하게 된다. 예컨대, 모듈(20)이 컨트롤 모듈(10)에 먼저 결합한 경우에는 모듈(20)의 연결 순위가 1이되고, 모듈(30)의 연결 순위가 2가 된다.On the other hand, in the case of FIG. 5 (b), the modules 20 and 30 are combined with the control module 10, respectively. In this case, the connection order is given according to the actually combined order. For example, when the module 20 is first coupled to the control module 10, the connection rank of the module 20 is 1, and the connection rank of the module 30 is 2.

한편, 모듈 사이의 거리는 컨트롤 모듈(10)로부터 해당 모듈까지 최단 경로 상으로 연결된 모듈을 카운팅하여 결정된다. 예컨대, 도 5(a)와 같은 연결에서는, 컨트롤 모듈(10)로부터 다른 모듈(30, 20, 40)이 순차적으로 연결되므로, 모듈(20)의 거리는 1가 되고, 모듈(30)의 거리는 2이고, 모듈(40)의 거리는 3이 될 수 있다. 이 경우, 모듈 사이의 거리는 최단 거리상의 모듈 카운팅에 따라서 결정되기 때문에 도 5(b)와 같은 연결에서는, 모듈(20, 30)의 컨트롤 모듈(10)과의 거리가 1이 될 수 있다. 한편, 도 5(c) 및 도 5(d)는 기본적으로 도 5(b)와 같은 연결이지만, 모듈(20, 30)이 무선 또는 유선으로 연결된 경우를 나타낸 도면이다. 이 경우, 무선으로 연결된 경우는 예컨대, 블루투스 페어링이 되거나, 네트워크 상에서 논리적으로 포트 연결이 된 경우를 의미할 수 있다. 이 때, 모듈(20, 30)의 컨트롤 모듈(10)과의 거리는 도 5(b)와 동일하게 1이 될 수 있다.Meanwhile, the distance between the modules is determined by counting the modules connected in the shortest path from the control module 10 to the corresponding module. For example, in the connection as shown in FIG. 5 (a), since the other modules 30, 20, and 40 are sequentially connected from the control module 10, the distance of the module 20 becomes 1, and the distance of the module 30 is 2 , And the distance of the module 40 may be 3. In this case, since the distance between the modules is determined according to the module counting on the shortest distance, in the connection as shown in FIG. 5 (b), the distance between the control modules 10 of the modules 20 and 30 may be 1. On the other hand, Figure 5 (c) and Figure 5 (d) is basically a connection as shown in Figure 5 (b), but the module 20, 30 is a diagram showing a case connected by wireless or wired. In this case, when connected wirelessly, it may mean, for example, Bluetooth pairing or a logical port connection on a network. At this time, the distance from the control module 10 of the modules 20 and 30 may be 1 as in FIG. 5 (b).

토폴로지 정보 생성부(1043-2)는 감지된 토폴로지에 따라 도 6과 같이 모듈의 연결 토폴로지를 결정하여 메모리에 기입할 수 있다. 도 6은 도 7과 같은 토폴로지를 감지하여 생성한 토폴로지이다. 토폴로지 정보 생성부(1043-2)는 각 모듈의 ID, 연결 순위, 하위 연결 모듈 정보, 모듈 카테고리 정보 및 단계 정보를 포함하는 모듈 토폴로지 정보(1048)에 기초하여 토폴로지를 결정하게 된다. 여기서 모듈 토폴로지 정보(1048)의 상세 내용에 대해서는 후술한다.The topology information generation unit 1043-2 may determine the connection topology of the module and write it to the memory as shown in FIG. 6 according to the detected topology. FIG. 6 is a topology generated by sensing the topology shown in FIG. 7. The topology information generation unit 1043-2 determines the topology based on the module topology information 1048 including ID, connection rank, sub-connection module information, module category information, and step information of each module. Here, details of the module topology information 1048 will be described later.

단, 컨트롤 모듈(10)의 하위 연결 모듈로서 또다른 컨트롤 모듈이 접속되는 경우(도 6의 컨트롤 모듈 #2 또는 컨트롤 모듈 #3)에는 먼저 다른 모듈과 연결된 컨트롤 모듈이 메인 컨트롤 모듈로서 1 단계의 컨트롤 모듈이 된다. 즉, 컨트롤 모듈 #1이 다른 모듈인 모듈 #1이나 모듈 #2와 먼저 접속해 있는 경우에 컨트롤 모듈 #2가 단독으로 컨트롤 모듈 #1과 접속되는 경우에는 컨트롤 모듈 #1이 메인 컨트롤 유닛이 될 수 있다. 또는, 컨트롤 모듈에 별도의 우선순위를 저장해 놓고, 우선순위가 높은 컨트롤 모듈이 메인 컨트롤 모듈로, 우선순위가 낮은 컨트롤 모듈이 서브 컨트롤 모듈로 설정될 수 있다. 또는, 사용자 단말(3) 상에서 실행되고 있는 개발자 도구 앱(900)에서 메인 컨트롤 모듈 또는 서브 컨트롤 모듈을 지정할 수도 있다.However, when another control module is connected as a lower connection module of the control module 10 (control module # 2 or control module # 3 in FIG. 6), the control module connected to the other module is firstly operated as the main control module. Become a control module. That is, when the control module # 1 is connected to the control module # 1 alone when the first control module # 1 or the module # 2 is connected to the other module, the control module # 1 becomes the main control unit. You can. Alternatively, a separate priority may be stored in the control module, and a control module having a higher priority may be set as a main control module, and a control module having a lower priority may be set as a sub control module. Alternatively, a main control module or a sub control module may be designated in the developer tool app 900 running on the user terminal 3.

한편, 통신 제어부(1044)는 외부 기기와의 통신 및 모듈 사이의 통신을 제어할 수 있다. 외부 기기와의 통신은, NB-IOT, LTE, LoRa, WiFi, Bluetooth, USB, 케이블 모뎀 등 다양한 유무선 통신을 포함할 수 있다. 한편, 모듈 사이의 통신은 UART, I2C, LIN, CAN 등 다양한 내부 통신 수단을 이용하여 모듈간 통신을 수행할 수 있다. 통신 제어부(1044) 내에는 상술한 다양한 유무선 통신 수단 또는 모듈 사이의 통신 수단을 포함할 수도 있고, 별도의 네트워크 모듈과 연결될 때 별도의 네트워크 모듈을 제어하는 방식으로 통신할 수도 있다.Meanwhile, the communication control unit 1044 may control communication with an external device and communication between modules. Communication with an external device may include various wired / wireless communication such as NB-IOT, LTE, LoRa, WiFi, Bluetooth, USB, and cable modem. Meanwhile, communication between modules may be performed between modules using various internal communication means such as UART, I2C, LIN, and CAN. The communication control unit 1044 may include the above-described various wired / wireless communication means or communication means between modules, or may communicate by controlling a separate network module when connected to a separate network module.

메모리(1045)는 모듈 어셈블리(1)의 동작에 필요한 각종 정보, 소프트웨어 및 연결된 모듈의 토폴로지에 관한 각종 정보들을 포함하며, 예를 들어, 메모리(1045)는 모듈 정보(1046), 구동정보(1047), 토폴로지 정보(1048) 및 펌웨어(1049)를 포함할 수 있다.The memory 1045 includes various information necessary for the operation of the module assembly 1, software, and various information regarding the topology of the connected module. For example, the memory 1045 includes module information 1046 and driving information 1047 ), Topology information 1048 and firmware 1049.

모듈 정보(1046)는 모듈 ID, 모듈 카테고리, 기능 정보 및 메타 정보를 포함할 수 있다. 모듈 ID(1046)는 UUID(Universally Unique identifier)와 같은 모듈 고유의 식별자 일 수도 있다. 또는 컨트롤 모듈(10)에서 결합 시 부여하는 임시 ID 일 수도 있다. The module information 1046 may include module ID, module category, function information, and meta information. The module ID 1046 may be a module unique identifier such as a universally unique identifier (UUID). Or it may be a temporary ID assigned when the control module 10 is combined.

이 경우, 모듈 카테고리는 치환 가능한 모듈들을 찾는 것을 보조하기 위하여 복수의 모듈을 기능을 중심으로 유사한 기능을 가진 모듈들을 상위 개념으로 분류하는 개념이다. 예컨대, 센서, 키, 마이크 등 전기 신호를 입력하는 모듈들은 '입력', 액추에이터, 디스플레이, LED 등은 '출력', 또는 마이크로프로세서를 포함하며, 사용자가 포팅한 프로그램을 실행시킬 수 있는 모듈, 네트워크 모듈, 배터리 모듈 또는 가중치 표시 모듈은 '셋업' 등이 모듈 카테고리의 예가 될 수 있다. In this case, the module category is a concept of classifying modules having similar functions into higher levels by focusing on a plurality of modules in order to assist in finding replaceable modules. For example, modules that input electrical signals such as sensors, keys, and microphones include 'input', actuators, displays, LEDs, etc., 'outputs', or microprocessors, and modules or networks that can execute programs ported by users. A module, battery module, or weight display module may be an example of a module category such as 'setup'.

또한, 추가적으로 보다 세밀한 분류를 위하여 상술한 모듈 카테고리들은 계층 구조를 가지면서 하위 모듈 카테고리를 가질 수도 있다. 예를 들어, 아래 표와 같은 모듈 카테고리 체계를 가질 수도 In addition, in order to further classify, the above-described module categories may have a sub-module category while having a hierarchical structure. For example, you may have a module category scheme as shown in the table below.

상위 카테고리Top category 하위 카테고리Sub category 모듈module 셋업set up 컨트롤control 컨트롤 모듈Control module 네트워크network 블루투스 모듈Bluetooth module 와이파이 모듈Wifi module Zigbee 모듈Zigbee module LTE 모듈LTE module 배터리battery 배터리 모듈Battery module 시멘틱 모듈Semantic module 시멘틱 모듈Semantic module 입력input 센서sensor 가속도 센서Acceleration sensor 마이크 모듈Microphone module 카메라 모듈Camera module 대기질 측정 모듈Air quality measurement module 컬러 센서Color sensor 터치 센서Touch sensor 홀센서Hall sensor 적외선 센서Infrared sensor GPSGPS 자이로스코프Gyroscope 초음파ultrasonic wave 키 입력Keystroke 버튼button 키보드keyboard 출력Print 시각출력Visual output 디스플레이display LEDLED 구동Driving 액츄에이터 구동 모듈Actuator drive module 모터 컨트롤러 모듈Motor controller module 엑츄에이터Actuator 모터motor 리니어 엑츄에이터Linear actuator 솔레노이드Solenoid 음성 출력Audio output 스피커speaker 버저Buzzer 기타Etc 바퀴wheel 운동 변환 모듈
(회전 운동 -> 직선 운동)
Motion conversion module
(Rotational motion-> Linear motion)
단순 연결 모듈Simple connection module

한편, 기능 정보는 모듈의 상세 기능을 표시한 것으로, 예를 들어, 컨트롤 모듈, 적외선 센서 모듈, 스위치 모듈, 전원 모듈 및 네트워크 모듈 등이다. 이 경우, 모듈의 기능은 각 모듈 내의 기능 유닛(104)의 구성에 따라 달라질 수 있다. 메타 정보는 모듈 및 소스 코드의 검색이 필요한 기타 정보로서, 예를 들어, '선풍기' 등의 구체적인 기기 명이 될 수도 있고, '바람', 또는 '시원' 등과 같은 선풍기와 연관된 연관 검색어들이 될 수도 있다.모듈 구동정보(1047)는 각 모듈을 구동하기 위한 드라이버(Driver)이다. 이러한 구동정보는 해당 모듈이 저장하고 있다가 모듈 연결 시에 컨트롤 모듈(10)에 제공하거나 또는 컨트롤 모듈(10)이 토폴로지 정보를 인터넷을 통해 서버 또는 사용자 단말에 포함된 개발자 도구 앱(900)에 제공하는 경우에, 인터넷 상의 추천 서버 또는 해당 개발자 도구 앱으로부터 다운로드 받을 수 있다. 이러한 모듈 구동정보에 기초하여, 컨트롤 모듈(10)은 모듈 어셈블리(1)를 구동할 수 있다.Meanwhile, the function information indicates detailed functions of the module, for example, a control module, an infrared sensor module, a switch module, a power module, and a network module. In this case, the function of the module may vary depending on the configuration of the functional unit 104 in each module. The meta information is other information that needs to be searched for the module and the source code. For example, it may be a specific device name such as 'fan' or may be related search words associated with a fan such as 'wind' or 'cool'. The module driving information 1047 is a driver for driving each module. The driving information is stored in the corresponding module and is provided to the control module 10 when the module is connected, or the control module 10 provides topology information to the developer tool app 900 included in a server or a user terminal through the Internet. If provided, it can be downloaded from a recommendation server on the Internet or the corresponding developer tools app. Based on the module driving information, the control module 10 may drive the module assembly 1.

한편, 모듈 토폴로지 정보(1048)는 컨트롤 모듈(10)에서 수집한 토폴로지 정보로서, 도 6 및 도 7을 참조하여 상세히 설명한다. 도 7은 도 6의 토폴로지를 가진 모듈 어셈블리(1)의 토폴로지 정보를 예시적으로 나타낸다.Meanwhile, the module topology information 1048 is topology information collected by the control module 10 and will be described in detail with reference to FIGS. 6 and 7. 7 exemplarily shows topology information of the module assembly 1 having the topology of FIG. 6.

도 6에 따르면, 모듈 토폴로지 정보(1048)는 기본적으로 모듈 어셈블리(1) 내의 모듈들의 고유 정보(모듈 ID)(1048-1), 단계 정보(1048-2), 하위 연결 모듈 정보(1048-3), 연결 순위(1048-4) 및 모듈 카테고리(1048-6)를 포함할 수 있다. 추가적으로 모듈 토폴로지 정보(1048)는 연결 방향(1048-5)을 더 포함할 수 있다.According to FIG. 6, the module topology information 1048 is basically unique information (module ID) 1048-1 of modules in the module assembly 1, step information 1048-2, and lower connection module information 1048-3. ), Connection rank 1048-4 and module category 1048-6. Additionally, the module topology information 1048 may further include a connection direction 1048-5.

모듈 고유 정보(1048-1)는 모듈 어셈블리에 포함된 연결된 모듈들의 모듈 ID(1046)를 나타낸다. 이 경우, 모듈 고유 정보(1048-1)는 UUID(Universally Unique IDentifier)와 같은 모듈 고유의 식별자 일 수 있으며, 컨트롤 모듈(10)에서 연결 시 부여하는 임시 ID 일 수도 있다.The module specific information 1048-1 indicates the module ID 1046 of connected modules included in the module assembly. In this case, the module-specific information 1048-1 may be a module-specific identifier, such as a Universally Unique IDentifier (UUID), or a temporary ID given when connecting from the control module 10.

단계 정보(1048-2)는 앞서 설명한 컨트롤 모듈(10)과의 거리를 의미하며, 컨트롤 모듈(10)로부터 해당 모듈까지 최단 경로 상으로 연결된 모듈을 카운팅하여 결정된다. 단, 상술한 모듈들 중 시멘틱 모듈에 부착되는 모듈의 경우에는 단계 정보(1048-2)가 시멘틱 모듈을 컨트롤 모듈(10)으로 가정하여 시멘틱 모듈로부터의 거리나, (시멘틱 모듈에 지정된 단계) + (시멘틱 모듈과의 거리) - 1 로 정해질 수 있다. 또는 시멘틱 모듈에 부착되는 경우에는 큰 가중치가 부여되어 시멘틱 모듈에 부착되는 모듈의 중요성이 강조될 수 있다.The step information 1048-2 means a distance from the control module 10 described above, and is determined by counting modules connected in the shortest path from the control module 10 to the corresponding module. However, in the case of a module attached to a semantic module among the above-described modules, the step information 1048-2 assumes the semantic module as the control module 10, or the distance from the semantic module (step designated in the semantic module) + (Distance from semantic module)-Can be set to 1. Alternatively, when attached to the semantic module, a large weight may be given to emphasize the importance of the module attached to the semantic module.

시멘틱 모듈(Semantic module)은 예컨대, 모듈의 크기 나 다른 모듈에 영향을 주는 등 컨트롤 모듈(10)과 직접 연결이 어려운 경우에 개발자 프로그램에서 소스 코드 추천이나 모듈 추천에 있어서 중요한 모듈이라는 것을 하드웨어적으로 표시하기 위한 모듈이다. Semantic modules are hardware modules that are important for source code recommendation or module recommendation in the developer program when direct connection with the control module 10 is difficult, for example, affecting the size of the module or other modules. This module is for display.

예컨대, 사용자가 모듈을 조립하여 미니 자동차의 기능을 하는 모듈 어셈블리를 만들려는 의도가 있을 때에 모터 모듈이나 바퀴 모듈은 중요한 의미를 가지게 되지만, 바퀴의 사이즈 등으로 인하여 컨트롤 모듈(10)과의 거리가 멀어져서 의미를 주기 어려운 경우가 있을 수 있다. 이 경우, 모터 모듈 또는 바퀴 모듈을 시멘틱 모듈과 연결하게 된다면, 토폴로지 상에서 사용자의 의도가 반영되어 소스 코드 또는 추가 또는 치환 모듈의 추천이 보다 사용자의 의도에 가까워질 수 있다.For example, when a user intends to assemble a module to make a module assembly that functions as a mini car, the motor module or the wheel module has an important meaning, but due to the size of the wheel, the distance from the control module 10 There may be instances when it is difficult to give meaning to being far away. In this case, if the motor module or the wheel module is connected to the semantic module, the user's intention is reflected in the topology so that the recommendation of the source code or the additional or replacement module may be closer to the user's intention.

도 12는 본 발명의 실시예에 따른 모듈 어셈블리 중 시멘틱 모듈(60)이 부착된 경우를 설명하기 위한 도면이다. 이 경우, 통상적으로는 컨트롤 모듈(10)에 모듈(20, 30)을 통하여 시멘틱 모듈(50)이 부착되어 있고, 모듈(40, 50)은 시멘틱 모듈(60)을 통하여 컨트롤 모듈(10)과 부착되어 있다. 이 경우, 시멘틱 모듈(60)에 부착된 모듈(40, 50)은 가중치가 높게 부여되거나 또는 높은 단계 정보(컨트롤 모듈(10)과의 거리가 더 가까운)가 부여될 수 있다. 이 때, 시멘틱 모듈(60)은 중요 방향 표시(65)를 포함할 수 있다. 중요 방향 표시(65)가 시멘틱 모듈(60)에 포함된 경우에는 표시된 방향에 부착된 모듈(50)만 가중치가 높게 부여되거나 또는 높은 단계 정보를 부여받을 수 있다.12 is a view for explaining a case in which the semantic module 60 is attached in the module assembly according to the embodiment of the present invention. In this case, the semantic module 50 is usually attached to the control module 10 through the modules 20 and 30, and the modules 40 and 50 are connected to the control module 10 through the semantic module 60. Attached. In this case, the modules 40 and 50 attached to the semantic module 60 may be given a high weight or high step information (the distance from the control module 10 is closer). At this time, the semantic module 60 may include an important direction indication 65. When the important direction indication 65 is included in the semantic module 60, only the module 50 attached to the displayed direction may be given a high weight or high step information.

하위 연결 모듈 정보(1048-3)는 해당 모듈보다 단계가 낮은(컨트롤 모듈(10)과의 거리가 더 먼) 모듈의 모듈 고유 정보를 나타낸다. 기본적으로 각 모듈은 해당 모듈과 연결된 모듈들의 정보를 저장하고 컨트롤 모듈(10)에 연결될 때, 하위로 연결된 모듈의 정보를 컨트롤 모듈(10)에 제공할 수 있다.The lower connection module information 1048-3 indicates module-specific information of a module having a lower level than the corresponding module (the distance from the control module 10 is farther). Basically, each module stores information of modules connected to the corresponding module and when connected to the control module 10, it is possible to provide the control module 10 with information of a module connected to the lower part.

연결 순위(1048-4)는 컨트롤 모듈(10)에 접속하는 순서를 나타내는 것으로, 추천 서버(2)에서 소스 코드 및 모듈을 추천할 때에 기초가 되는 정보이다. 연결 순위(1048-4)의 결정 방법에 대해서는 도 5에 대한 설명 부분에서 저술하였으므로 공통된 부분의 설명을 생략한다. 컨트롤 모듈(10)에 이미 결합되어 있는 복수의 모듈인 모듈 그룹이 결합되는 경우에는 모듈 그룹에 동일한 공통 연결 순위(1048-7)가 부여될 수 있다.The connection rank 1048-4 indicates an order of accessing the control module 10, and is a basic information when the source server and the module are recommended by the recommendation server 2. The method of determining the connection rank 1048-4 is described in the description of FIG. 5, and thus the description of the common portion is omitted. When a module group, which is a plurality of modules that are already coupled to the control module 10, is combined, the same common connection ranking 1048-7 may be given to the module group.

연결 방향(1048-5)은 부가적인 정보로서, 하위 연결 모듈 및 상위 연결 모듈이 어떤 포트와 물리적으로 접속되었는지를 나타내는 정보이다. 예를 들어, 통신 모듈과 자이로스코프 센서 모듈이 있는 경우에, 통신 모듈의 전자기파가 자이로스코프 센서 모듈의 센싱에 영향을 줄 수도 있으므로, 상술한 연결 방향(1048-4)에 기초하여 가급적이면 영향을 주지 않는 위치에 서로 배치할 수 있다. 이 경우에는 연결 방향 정보 및 단계 정보를 활용할 수 있다.The connection direction 1048-5 is additional information, and is information indicating which port the lower connection module and the upper connection module are physically connected to. For example, if there is a communication module and a gyroscope sensor module, the electromagnetic wave of the communication module may affect the sensing of the gyroscope sensor module, and therefore, the effect is preferably based on the connection direction 1048-4 described above. They can be placed at locations where they are not given. In this case, connection direction information and step information may be used.

마지막으로 모듈 카테고리(1048-6)는 모듈의 기능에 따라 모듈을 분류한 정보이다. 예를 들어, 마이크로폰, 온도 센서, 자이로스코프 센서, 적외선 센서, 초음파 센서 등의 각종 센서, 다이얼, 버튼, 키보드 등의 입력되는 전기 신호를 수집하는 모듈들은 '입력' 으로 분류될 수 있다. 또는 모터 등의 액추에이터, 발광다이오드(LED), 액정 디스플레이 장치, 스피커 등은 '출력'으로 분류될 수 있다. 또한, 각종 네트워크 모듈(LTE, Bluetooth 등)은 '통신'으로 분류될 수 있다. 또한, 마이크로프로세서를 포함하며 사용자 단말기(3)에서 프로그래밍한 애플리케이션을 실행할 수 있는 모듈은 '컨트롤'로 분류될 수 있다. 이러한 카테고리 정보에 기초하여 서버에서는 모듈 추천 시 치환 가능한 모듈인지, 추가 가능한 모듈인지 여부를 판단할 수 있다. Finally, the module category 1048-6 is information that classifies modules according to the function of the module. For example, various sensors such as a microphone, a temperature sensor, a gyroscope sensor, an infrared sensor, and an ultrasonic sensor, and modules that collect input electric signals such as dials, buttons, and keyboards may be classified as 'inputs'. Alternatively, an actuator such as a motor, a light emitting diode (LED), a liquid crystal display device, and a speaker may be classified as 'output'. In addition, various network modules (LTE, Bluetooth, etc.) may be classified as 'communication'. Also, a module including a microprocessor and capable of executing an application programmed in the user terminal 3 may be classified as a 'control'. Based on the category information, the server may determine whether the module is replaceable or addable when recommending the module.

이와 같은 토폴로지 정보는 아래와 같이 활용될 수 있다. 이하에서는 도 9 및 도 10을 참조하여, 토폴로지 정보에 기초하여 서버에서 소스 코드 및 모듈을 추천하는 인터페이스 및 알고리즘에 관하여 상세하게 설명한다.Such topology information can be utilized as follows. Hereinafter, with reference to FIGS. 9 and 10, interfaces and algorithms for recommending source codes and modules in a server based on topology information will be described in detail.

사용자 단말기(3)에 연결된 모듈 어셈블리(1)의 토폴로지 정보가 사용자 단말(3)에 제공되면, 개발자 도구 앱(900)은 현재 구성(910 내지 940), 추천 소스 코드(950, 960) 및 추가 또는 치환 가능한 추천 모듈(970, 980)을 제공할 수 있다. 이 경우, 바람직하게는 개발자 도구 앱(900)은 추가 또는 치환 가능한 추천 모듈(970, 980)을 추천 설치 위치(990)와 함께 제공할 수 있다. When the topology information of the module assembly 1 connected to the user terminal 3 is provided to the user terminal 3, the developer tools app 900 is configured with the current configuration (910 to 940), recommended source codes (950, 960), and added Alternatively, replaceable recommendation modules 970 and 980 may be provided. In this case, preferably, the developer tools app 900 may provide additional or replaceable recommendation modules 970 and 980 together with the recommendation installation location 990.

이러한 추천 소스 코드(950, 960), 추가 또는 치환 가능한 추천 모듈(970, 980) 및 추천 설치 위치(990)는 추천 서버(2)로부터 제공된다. 추천 서버(2)는 기존 사용자들이 이미 사용했던 모듈 어셈블리 토폴로지 이력 및 이에 대응되는 소스 코드를 저장하고 현재 사용자의 모듈 어셈블리(1)의 토폴로지 정보에 기초하여 소스 코드, 추가 구성 및 설치 위치에 관한 추천을 제공하게 된다.These recommendation source codes 950 and 960, additional or replaceable recommendation modules 970 and 980, and recommendation installation locations 990 are provided from the recommendation server 2. The recommendation server 2 stores the module assembly topology history and the corresponding source code that the existing users have already used, and recommends the source code, additional configuration, and installation location based on the topology information of the current user's module assembly 1 Will provide.

이 때, 추천 서버(2)는 토폴로지 정보 중, 연결 순위(915), 단계 정보, 모듈 카테고리, 사용자가 입력한 키워드(965) 및 메타 정보 등에 따라 추천 소스 코드 및 모듈과, 추천 순서를 결정하여 추천할 수 있다.At this time, the recommendation server 2 determines the recommended source code and the module, and the order of recommendation according to the connection ranking 915, step information, module category, keyword 965 and meta information input by the user among the topology information Can recommend

먼저, 연결 순위에 대한 실시예를 살펴보면, 예를 들어, 도 9에서는 모듈 어셈블리(1)가 컨트롤 모듈(910)에, 액추에이터 모듈(920), 네트워크 모듈(940) 및 적외선 모듈(930) 순으로 조립되었지만, 도 10에서는 모듈 어셈블리(1)가 컨트롤 모듈(910)에, 적외선 모듈(930), 네트워크 모듈(940) 및 액추에이터 모듈(920) 순으로 조립된 것을 알 수 있다. (연결 순위(915) 참조) 이 때, 도 9 및 도 10에서는 동일한 모듈의 조합 구성이지만, 모듈의 연결 순위가 다르기 때문에 소스 코드의 추천 순서가 다르기 때문에 도 9에서는 소스 코드(950)가 1번으로 추천되지만, 도 10에서는 소스 코드(960)가 1번으로 추천되었다.First, looking at the embodiment for the connection ranking, for example, in FIG. 9, the module assembly 1 is in the order of the control module 910, the actuator module 920, the network module 940, and the infrared module 930 in order. Although assembled, it can be seen from FIG. 10 that the module assembly 1 is assembled to the control module 910 in the order of the infrared module 930, the network module 940, and the actuator module 920. (See connection rank 915) At this time, in FIG. 9 and FIG. 10, the combination of the same module, but because the connection order of the modules are different, the source code 950 is 1 in FIG. 9 because the recommended order of the source code is different. 10, the source code 960 was recommended as # 1.

또한, 도 9 및 도 10에서는 동일한 모듈의 조합 구성이지만, 모듈의 연결 순위가 다르기 때문에 추천되는 추가 모듈 추천의 순서도 다르게 기재되어 있다. 즉, 도 9에서는 추가 모듈 조합(970)이 1번으로 추천되지만, 도 10에서는 추가 모듈 조합(980)이 1번으로 추천된다는 것을 알 수 있다.In addition, in FIG. 9 and FIG. 10, the combination of the same modules, but the order of additional module recommendations recommended because the connection order of the modules is different is also described differently. That is, in FIG. 9, the additional module combination 970 is recommended as number 1, but in FIG. 10, it can be seen that the additional module combination 980 is recommended as number 1.

이렇게 연결 순서에 따라 추천 소스 코드를 바꾸는 이유는 연결 순서에 따라 사용자의 의도가 바뀌기 때문이다. 예를 들어, 도 9와 같이 액추에이터 모듈을 먼저 컨트롤 모듈에 부착하고, 센서를 부착한 경우에 사용자는 센서에 의하여 특정 조건에서 멈추게 되는 이동 수단과 같은 장치를 만드는 경향이 있었다. The reason for changing the recommended source code according to the connection order is that the user's intention changes according to the connection order. For example, as shown in FIG. 9, when the actuator module is first attached to the control module, and the sensor is attached, the user tends to make a device such as a vehicle that is stopped at a specific condition by the sensor.

또는 예를 들어, 도 10과 같이, 센서를 컨트롤 모듈에 먼저 부착하고 액추에이터 모듈을 부착하는 경우에는 이동하면서 여러 위치의 센싱 대상을 파악할 수 있는 센서 장치를 만드는 경향이 있었다.Or, for example, as shown in FIG. 10, when a sensor is first attached to a control module and an actuator module is attached, there is a tendency to make a sensor device capable of grasping sensing targets at various positions while moving.

따라서, 사용자의 모듈 부착 순서에 따라 만들고자 하는 장치가 달라지는 경향이 있고, 이에 따라 본 발명의 발명자는, 사용자들이 손쉽게 소스 코드를 선택할 수 있도록 모듈 부착 순서(컨트롤 모듈에 연결하는 연결 순위)에 따라 다른 소스 코드를 추천할 수 있도록 추천 서버(2)의 알고리즘을 구성하였다.Therefore, the device to be made tends to vary according to the order of attachment of the modules by the user, and accordingly, the inventor of the present invention differs according to the order of module attachment (connection rank to connect to the control module) so that users can easily select the source code. The algorithm of the recommendation server (2) is constructed so that the source code can be recommended.

한편, 모듈 부착 순서와 소스 코드와의 관계는 학습에 의하여 정교하게 매칭될 수 있다. 예컨대, 모듈 부착 순서와 소스 코드와의 관계는 예를 들어, 결정 트리 학습법(Decision Tree Learning)에 의한 기계 학습이 가능하다. 또는 인공 신경망 모형이나 SVC 등의 학습 방법으로도 기계 학습이 가능하다.On the other hand, the relationship between the module attachment order and the source code can be precisely matched by learning. For example, the relationship between the module attachment order and the source code can be machine learning by, for example, a decision tree learning method. Alternatively, machine learning may be performed using an artificial neural network model or a learning method such as SVC.

또는, 추천 서버(2)는 단계 정보 및 모듈 카테고리를 이용한 추천이 가능하다. 예컨대, 2 단계에서 액추에이터 구동 모듈이 부착되는 경우에는 3 단계의 모듈로서 액추에이터 구동 모듈에 대응하는 액추에이터가 추천되거나, 또는 2 단계의 다른 부분에 추가될 모듈로서 해당 액추에이터 구동 시 자주 사용되는 센서 모듈이 추천될 수 있다.(단계 정보 이용) 또는, 키보드 모듈이 부착된 경우에 키보드 모듈을 치환할 다른 입력 모듈(예를 들어 마이크 모듈 등)을 추천하는 것도 가능하다.Alternatively, the recommendation server 2 can recommend using step information and module categories. For example, when the actuator driving module is attached in step 2, an actuator corresponding to the actuator driving module is recommended as a module in step 3, or a sensor module frequently used when driving the actuator as a module to be added to another part of step 2 It may be recommended (using step information), or it is possible to recommend another input module (for example, a microphone module) to replace the keyboard module when the keyboard module is attached.

또는 추천 서버(2)는 키워드(965)에 의한 추천도 가능하다. 예컨대, 키워드로서 리모컨이 입력되는 경우에는 적외선 모듈이나 간단한 복수의 키를 포함하는 키 모듈 등이 추천될 수 있다.Alternatively, the recommendation server 2 can also recommend by the keyword 965. For example, when a remote control is input as a keyword, an infrared module or a key module including a plurality of simple keys may be recommended.

또는 추천 서버(2)는 메타 정보를 활용한 추천도 가능하다. 예를 들어, 모듈에 메타 정보로서 '선풍기'를 저장하고 있는 경우에, 동일한 메타 정보인 '선풍기'를 저장하고 있는 다른 모듈들을 추가 또는 치환 가능한 모듈로서 추천할 수 있다. 메타 정보는 '선풍기' 등의 구체적인 기기 명이 될 수도 있고, '바람', 또는 '시원' 등과 같은 선풍기와 연관된 연관 검색어들이 될 수도 있다. 메타 정보는 모듈 정보로서 추천 서버(2)에서 각 모듈 별로 저장될 수 있으며, 한편, 사용자가 추천 서버(2)에 접속하여 해당 모듈 메타 정보를 편집하는 것도 가능하다. 또는 메타 정보는 기계 학습에 의하여 입력될 수도 있다. Alternatively, the recommendation server 2 may also recommend using meta information. For example, when the 'electric fan' is stored as meta information in the module, other modules storing the same meta information 'electric fan' may be recommended as an additional or replaceable module. The meta information may be a specific device name such as 'fan', or may be related search terms associated with a fan such as 'wind' or 'cool'. The meta information may be stored for each module in the recommendation server 2 as module information, and it is also possible for a user to access the recommendation server 2 and edit the corresponding module meta information. Alternatively, meta information may be input by machine learning.

또는 추천 서버(2)는, 사용자가 입력한 키워드(965)를 추가적으로 고려하여 추천 소스 코드 및 모듈과, 추천 순서를 결정하여 추천할 수 있다. 예컨대, 사용자가 '리모컨'를 입력한 경우에, 추천 서버(2)는 토폴로지 정보에 기초하여 선택한 소스 코드 및 추가 또는 치환 가능한 추천 모듈들 중, 리모컨에 관련한 것을 선별하여 사용자에게 나타낼 수도 있다.Alternatively, the recommendation server 2 may determine the recommendation source code and the module and the recommendation order by additionally considering the keyword 965 input by the user. For example, when the user inputs the 'remote control', the recommendation server 2 may select and display the selected one related to the remote control among the source code and the additional or replaceable recommendation modules based on topology information.

한편, 추천 서버(2)는 모듈 어셈블리(1)의 현재 구성(910 내지 940)과 동일한 모듈 어셈블리 조합 이력이 없는 경우에도 토폴로지 정보에 기초하여 일부 동일한 구성(유사한 구성)을 검색하여 추가 또는 치환 가능한 추천 모듈을 추천할 수 있다. On the other hand, even if there is no module assembly combination history identical to the current configurations 910 to 940 of the module assembly 1, the recommendation server 2 can search for some identical configurations (similar configurations) and add or replace them. You can recommend the recommendation module.

이 경우, 추천 서버(2)는 토폴로지 정보 중 모듈 어셈블리(1) 내 모듈들의 단계 정보(컨트롤 모듈로부터 해당 모듈까지의 거리)에 따른 가중치 및 가중치를 이용하여 연산한 연산 값에 기초하여 모듈 추천 순서를 결정할 수 있다. 또한, 가중치는 모듈 고유 정보에 기초하여 결정될 수도 있다. 또한, 가중치는 시멘틱 모듈에 부착된 경우, 컨트롤 모듈(10)에 직접 부착된 것과 동일한 가중치가 부여될 수도 있다. 예를 들어, 도 12를 참조하면, 컨트롤 모듈(10)에 직접 부착된 모듈(20)은 높은 가중치가 부여되고, 그 다음으로 부착된 모듈(30)은 모듈(20)에 비하여 낮은 가중치가 부여되지만, 컨트롤 모듈(10)에 직접 부착되지 않고 시멘틱 모듈(60)에 부착된 모듈(40, 50)은 컨트롤 모듈(10)에 직접 부착된 모듈(20)과 동일하게 높은 가중치가 부여될 수 있다.In this case, the recommendation server 2 recommends the module based on the operation value calculated using the weight and weight according to the step information (distance from the control module to the corresponding module) of the modules in the module assembly 1 among the topology information. Can decide. Further, the weight may be determined based on module-specific information. In addition, when the weight is attached to the semantic module, the same weight may be given as that directly attached to the control module 10. For example, referring to FIG. 12, the module 20 directly attached to the control module 10 is given a high weight, and the attached module 30 is given a low weight compared to the module 20. However, modules 40 and 50 attached to the semantic module 60 without being directly attached to the control module 10 may be given the same high weight as the module 20 attached directly to the control module 10. .

예를 들어, 추천 서버(2)는 모듈 카테고리 별로 우선순위를 지정하고, 단계 정보에 따른 가중치와 가중치합을 수행하고, 가중치 합에 따라 모듈의 종류를 결정할 수 있다. 예를 들어, 1 단계인 컨트롤 모듈(10)은 우선순위 1, 가중치 1000, 3 단계인 네트워크 모듈은 우선순위 2, 가중치 100, 2 단계인 입력 모듈(센서)은 우선순위 3, 가중치 100, 마지막으로 3단계인 출력 모듈(액추에이터)은 우선순위 4, 가중치 10이라고 하면, 가중치 합은 1*1000+ 2*100+ 3*100+ 4*10 = 1540이 되고, 이 값을 서버에 기 저장된 값들과 비교하여 가장 유사한 숫자를 가지는 상위 10개의 모듈 어셈블리 정보를 상술한 가중치 합의 순서대로 표시하고 추가 또는 치환 가능한 추천 모듈 및 추천 소스 코드(950, 960)을 표시할 수 있다. For example, the recommendation server 2 may assign priority to each module category, perform weighting and weighting according to step information, and determine the type of module according to the weighting. For example, the first level control module 10 has priority 1, weight 1000, and the third level network module has priority 2, weight 100, and the second level input module (sensor) has priority 3, weight 100, last If the output module (actuator) in step 3 is priority 4 and the weight is 10, the sum of weights becomes 1 * 1000 + 2 * 100 + 3 * 100 + 4 * 10 = 1540, and these values are stored in the server. Compared with, the top 10 module assembly information having the most similar numbers can be displayed in the order of the weight agreement described above, and additional or replaceable recommended modules and recommended source codes 950 and 960 can be displayed.

위에서 알 수 있는 바와 같이, 가중치를 적절하게 사용하는 경우에는 유사한 구성을 쉽게 찾을 수 있으며, 예컨대, 가중치는 (상수(위의 실시예에서는 10))^(모듈 어셈블리 내 전체 모듈 수 - 단계 값 + 1)으로 정할 수 있다. As can be seen above, a similar configuration can be easily found if weights are used appropriately, for example, the weight is (constant (10 in the example above)) ^^ (total number of modules in module assembly-step value + 1).

이 경우, 연산된 가중치 연산 값을 통해 모듈 추천 순서를 결정할 수 있다. 도 9를 참조하면, 연산 값이 더 높은 추천 모듈(960)이 연산 값이 낮은 추천 모듈(970)에 비하여 더 상위로 추천될 수 있다. 사용자는 개발자 도구 앱(900)에서 복수의 치환/추가 가능한 모듈 조합 정보 중 어느 하나를 선택할 수 있다. 이 경우, 선택된 모듈 조합 정보에 대응하는 소스 코드(950, 960)가 사용자 단말(3)에 표시될 수 있다. In this case, the module recommendation order may be determined through the calculated weight calculation value. Referring to FIG. 9, the recommendation module 960 having a higher computation value may be recommended higher than the recommendation module 970 having a lower computation value. The user may select any one of a plurality of replacement / addable module combination information in the developer tool app 900. In this case, the source codes 950 and 960 corresponding to the selected module combination information may be displayed on the user terminal 3.

또한 추천 서버(2)는 추가적으로 사용자가 입력한 키워드 정보(980)를 추천에 활용할 수 있다. 예를 들어, 추천 수가 많은 경우에는 추천 서버(2)는 사용자가 입력한 키워드 정보(980)를 활용하여 추천되는 모듈의 수를 제한할 수 있다.In addition, the recommendation server 2 may additionally utilize keyword information 980 input by the user for recommendation. For example, when the number of recommendations is large, the recommendation server 2 may limit the number of recommended modules by using the keyword information 980 input by the user.

한편, 위의 실시예에서는 모듈의 토폴로지 정보에 기초하여 연산을 수행하였으나, 자주 쓰이는 모듈들은 모듈 그룹으로 등록하여 이를 하나의 모듈처럼 취급할 수도 있다. 예컨대, 리모컨 신호를 수신할 수 있는 적외선 센서 모듈, 컨트롤 모듈 및 스위치 모듈은 하나의 리모컨 컨트롤 모듈로서 자주 활용될 수 있다. 이와 같은 모듈 조합들은 하나의 모듈 그룹으로 취급될 수 있다.On the other hand, in the above embodiment, the operation is performed based on the topology information of the module, but frequently used modules may be registered as a module group and treated as a single module. For example, an infrared sensor module, a control module, and a switch module capable of receiving a remote control signal can be frequently used as one remote control module. These module combinations can be treated as a single module group.

또한, 앞서 설명한 바와 같이, 추천된 등록된 모듈 그룹이 메인 컨트롤 모듈(10)에 결합될 때에는 공통 연결 순위가 부여될 수 있으며 또는 공통 단계 정보가 부여될 수도 있다. 또는 모듈 그룹은 메인 컨트롤 모듈(10)이 하나의 모듈로 취급할 수도 있다. 이 경우, 모듈 그룹에 포함되는 각각의 모듈은 결합되는 모듈의 정보를 각각 획득한 후, 컨트롤 모듈(10)에 가장 가깝게 결합되는 모듈이 모듈 그룹의 정보를 컨트롤 모듈(10)에 전송할 수 있다. 예컨대, 도 11의 경우, 컨트롤 모듈(10)과 모듈(20)이 결합되어 있는 모듈 어셈블리에, 모듈 그룹(30, 40)이 결합하는 경우에 관한 것이다. 이 경우, 모듈 그룹에 속하는 모듈(30, 40)은 결합 시, 상호 간에 모듈 정보를 주고받는다. 이 때 주고받는 모듈 정보는 도 6에 기재된 토폴로지 정보의 항목의 정보들을 포함할 수 있다. 또한, 이 경우, 각각의 모듈(10 내지 40)은 메타 정보를 포함할 수도 있다. 메타 정보는 예를 들어, 추가 또는 치환 가능한 모듈 정보, 또는 모듈 그룹을 구성할 수 있는 타 모듈들에 대한 정보를 포함할 수 있다. In addition, as described above, when the recommended registered module group is coupled to the main control module 10, a common connection ranking may be assigned or common step information may be assigned. Alternatively, the module group may be handled by the main control module 10 as one module. In this case, each module included in the module group may acquire information of the combined module, and then the module coupled closest to the control module 10 may transmit information of the module group to the control module 10. For example, in the case of FIG. 11, it is related to a case where the module groups 30 and 40 are coupled to a module assembly in which the control module 10 and the module 20 are coupled. In this case, the modules 30 and 40 belonging to the module group, when combined, exchange module information with each other. At this time, the module information exchanged may include information of items of topology information described in FIG. 6. Also, in this case, each module 10 to 40 may include meta information. The meta information may include, for example, module information that can be added or replaced, or information about other modules that can constitute a module group.

그리고, 모듈 그룹(30,40)이 컨트롤 모듈(10)이 포함된 모듈 어셈블리와 결합할 때에는 컨트롤 모듈(10)에 가장 가깝게 결합되는 모듈(30)이 컨트롤 모듈(10)에 모듈 정보를 전송하게 된다. 이 경우, 컨트롤 모듈(10)은 모듈 그룹(30, 40)을 단일 모듈과 같이 처리할 수 있다. 즉, 모듈 그룹(30, 40)을 하나의 모듈로 등록할 수도 있다. In addition, when the module groups 30 and 40 are combined with the module assembly including the control module 10, the module 30, which is coupled to the control module 10 closest, transmits module information to the control module 10. do. In this case, the control module 10 can process the module groups 30 and 40 like a single module. That is, the module groups 30 and 40 may be registered as one module.

다시 도 4를 참조하면, 펌웨어(1049)는 모듈 어셈블리(1)를 동작 시키기 위한 소프트웨어로서, 컨트롤 모듈(10)이 토폴로지 정보를 인터넷을 통해 서버 또는 사용자 단말에 포함된 개발자 도구 앱에 제공하는 경우에, 인터넷상의 추천 서버(2) 또는 해당 개발자 도구 앱으로부터 소스 코드를 추천받고 사용자가 선택한 소스 코드를 컴파일한 실행파일(펌웨어)을 다운로드 받을 수 있다.Referring to FIG. 4 again, the firmware 1049 is software for operating the module assembly 1, and when the control module 10 provides topology information to a developer tool app included in a server or a user terminal through the Internet In, the source code is recommended from the recommendation server 2 on the Internet or the corresponding developer tool app, and an executable file (firmware) that compiles the source code selected by the user can be downloaded.

마이크로프로세서(1050)는 모듈 어셈블리(1) 상의 펌웨어나 또는 통신 제어부(1044), 토폴로지 감지부(1043)의 프로토콜 실행을 위한 연산장치로서, 당업자는 모듈 어셈블리(1)에 필요한 마이크로프로세서(1050)를 적절하게 선택하여 구현할 수 있다.The microprocessor 1050 is a computing device for protocol execution of the firmware on the module assembly 1 or the communication control unit 1044 and the topology sensing unit 1043, and those skilled in the art need the microprocessor 1050 required for the module assembly 1 It can be implemented by selecting appropriately.

이하에서는 도 8을 참조하여, 모듈 어셈블리(1)에서 컨트롤 모듈이 토폴로지를 감지하는 프로토콜을 상세하게 설명한다.Hereinafter, a protocol in which the control module senses the topology in the module assembly 1 will be described in detail with reference to FIG. 8.

본 실시예에서는 설명의 간략화를 위하여 3 단계의 연결을 구비하는 모듈 어셈블리(1)를 기준으로 설명한다. 단, 당업자는 본 실시예에 기초하여 다양한 변형을 가할 수 있다.In this embodiment, for simplicity of explanation, description will be made based on a module assembly 1 having three stages of connection. However, various modifications can be made by those skilled in the art based on the present embodiment.

먼저, 새로운 모듈, 예를 들어, 2 단계(2nd Tier) 모듈이 컨트롤 모듈(10, 1st Tier)에 접속한 직후 인터럽트(interrupt) 신호를 컨트롤 모듈(10)의 마이크로프로세서(1050)에 인가하게 된다. 또는, 예를 들어, 컨트롤 모듈(10)이 정기적으로 토폴로지를 인식하기 위하여 정기적으로 질의(query)를 각 모듈에 보내고 새로운 모듈이 접속했는지 여부를 각 모듈이 하위 연결 모듈 정보를 전송하여 알 수도 있다. 단, 본 실시예에서는 각 모듈이 기본적으로 휴대 가능한 모바일 유닛이기 때문에 전력을 아끼기 위하여 연결되었을 때에 인터럽트 신호를 보내는 것으로 설명한다.First, a new module, for example, a second stage (2 nd tier) module immediately after the access to the control module (10, 1 st Tier) interrupt signal (interrupt) signal is applied to the microprocessor 1050 of the control module 10 Is done. Alternatively, for example, the control module 10 may periodically send a query to each module in order to recognize the topology, and whether or not a new module is connected, each module may transmit sub-connection module information to know. . However, in this embodiment, since each module is basically a portable mobile unit, it is described as sending an interrupt signal when connected to save power.

또는, 하우징(11)의 외부로 선택적으로 돌출되는 핀(180) 및 핀 수용부(160)(도 2 참조)을 마그네틱으로 제작하고, 돌출되는 핀(180)이 다른 모듈의 핀 수용부(160)에 부착될 때, 돌출되는 핀(180)과 핀 수용부(160)의 결합을 센싱하여 컨트롤 모듈(10)로 하여금 새로운 모듈이 부착되었다는 것을 인식하도록 구성할 수도 있다.Alternatively, the pin 180 and the pin accommodating part 160 (see FIG. 2) selectively protruding to the outside of the housing 11 are made of magnetic, and the protruding pin 180 is a pin accommodating part 160 of another module. When attached to), it is also possible to configure the control module 10 to recognize that a new module is attached by sensing the combination of the protruding pin 180 and the pin accommodating part 160.

또는, 예컨대, 모듈과 모듈 사이에 CAN(Controller Area Network) 프로토콜을 사용하여 통신하는 경우에는, 먼저, 모듈과 모듈이 결합될 때, 각 모듈에서 모듈 ID를 메시지로 전송하여 해당 모듈이 부착되었음을 선언할 수도 있다. 각 모듈은 CAN 버스를 통하여 서로 연결되어 있으며, CAN 버스가 점유되지 않은 경우에는 어떤 모듈(노드)도 메시지 전송이 가능하며, 두 개의 모듈에서 동시에 전송을 시도하는 경우에는 정해진 우선 순위에 따라 우선 순위가 높은 메시지가 먼저 전송되게 된다. 이 때, 우선 순위는 모듈 카테고리에 따라 결정될 수 있다. CAN 통신을 통하여 모듈들을 서로 연결하게 되는 경우에는 버스를 공유하기 때문에 UART와 같은 일대일(point to point) 방식에 비하여 배선이 증가되지 않으므로, 유리하다.Or, for example, when communicating using a CAN (Controller Area Network) protocol between a module and a module, first, when the module and the module are combined, each module transmits a module ID as a message to declare that the module is attached. You may. Each module is connected to each other through the CAN bus. If the CAN bus is not occupied, any module (node) can transmit messages. If two modules attempt to transmit at the same time, priority is given according to the specified priority. The highest message is sent first. At this time, the priority may be determined according to the module category. When the modules are connected to each other through CAN communication, since the bus is shared, wiring is not increased compared to a point-to-point method such as UART, which is advantageous.

한편, 컨트롤 모듈(10)은 인터럽트가 발생하는 경우에는 이러한 인터럽트가 정상적인 인터럽트 신호인지를 확인하기 위하여 접속 확인 신호(Connection Check)를 송신하고, 이에 대한 응답으로 확인신호(Ack)를 수신한다. Meanwhile, when an interrupt occurs, the control module 10 transmits a connection check signal to check whether the interrupt is a normal interrupt signal, and receives an acknowledgment signal Ack in response to this.

컨트롤 모듈(10)이 정상적으로 확인 신호(Ack)를 수신하면, 다음으로는 모듈 ID(1046)를 질의하게 된다. 이에 대한 응답으로 새롭게 접속된 모듈의 모듈 ID(1046)를 수신하게 되면, 해당 모듈을 토폴로지 정보에 등록시키고, 해당 모듈에 대하여 연결 순위(Connection Ranking)를 부여한다. 그 후, 모듈 거리를 카운팅 하고, 해당 모듈의 가중치(Module Weight)를 부여한 후, 해당 모듈에 하위 연결 모듈에 대한 정보를 요청하게 된다(Connection Info). When the control module 10 normally receives the acknowledgment signal Ack, the module ID 1046 is queried next. When the module ID 1046 of the newly connected module is received in response to this, the module is registered in the topology information, and a connection ranking is given to the module. After that, the module distance is counted, the module weight is assigned, and information on the lower connection module is requested from the module (Connection Info).

한편, 컨트롤 모듈(10)이 하위 연결 모듈에 대한 정보를 수신하게 되면, 해당 하위 연결 모듈(3rd tier)이 제대로 연결되었는지를 확인하기 위하여 모듈 ID를 하위 연결 모듈에 질의한다. 컨트롤 모듈(10)은 질의에 대한 응답으로 수신한 모듈 ID와 2 단계 모듈(2nd Tier)로부터 수신한 하위 연결 모듈 정보를 비교하여 실제 연결상태를 확인한다. 이 때 실제 연결 상태와 다른 경우에는 에러가 발생하며, 컨트롤 모듈(10)은 2 단계 모듈(2nd Tier)에 하위 연결 모듈 정보를 재요청한다.Meanwhile, when the control module 10 receives information on the lower connection module, the module ID is queried to the lower connection module to confirm whether the corresponding lower connection module (3 rd tier) is properly connected. Control module 10 confirms the physical connection state by comparing a sub-module connection information received from the module is received in response to a query ID and step 2 modules (2 nd Tier). If the real time connection with the other cases, and an error occurs, control module 10 will request re-sub-module connection information to the step 2 module (Tier 2 nd).

컨트롤 모듈(10)은 2 단계 모듈(2nd Tier)로부터 수신한 하위 연결 모듈 정보가 실제 연결 상태와 일치하는 경우에는, 다시, 해당 모듈을 토폴로지 정보에 등록시키고, 해당 모듈에 대하여 연결 순위(Connection Ranking)를 부여한다. 그 후, 모듈 거리를 카운팅한 후, 다시 3 단계 모듈(3rd Tier)에 하위 연결 모듈 정보를 요청한다. 그리고, 컨트롤 모듈(10)은 하위 연결 모듈 정보가 없을 때까지 위의 프로토콜을 반복하여 토폴로지 정보를 완성한다.Control module 10 if the sub-connection module information received from the step 2 module (2 nd Tier) match the actual link state, the back, and to register the module in the topology information, connection ranking with respect to the module (Connection Ranking). Then, after counting the module distance, request another sub-module connection information in the step 3 module (3 rd Tier). Then, the control module 10 repeats the above protocol until there is no lower connection module information to complete the topology information.

토폴로지 정보가 완성되면 컨트롤 모듈(10)에 저장되고, 컨트롤 모듈(10)이 사용자 단말(3)과 연결되면, 사용자는 사용자 단말(3) 내에 설치되거나 또는 추천 서버(2)의 웹 인터페이스로 제공되는 개발자 도구 앱(900)을 통하여 현재까지 구성된 모듈 어셈블리(1)에 포팅이 가능한 추천 소스 코드(910)을 제공받는다.When the topology information is completed, it is stored in the control module 10, and when the control module 10 is connected to the user terminal 3, the user is installed in the user terminal 3 or provided as a web interface of the recommendation server 2 The recommended source code 910 that can be ported to the module assembly 1 configured to date through the developer tool app 900 is provided.

본 발명에 따른 모듈 추천 시스템은, 모듈 어셈블리의 조립 정보를 공유하고, 사용자가 필요한 조립 정보를 용이하게 추천받고 검색할 수 있는 모듈 추천 시스템을 제공할 수 있다.The module recommendation system according to the present invention can provide a module recommendation system that shares assembly information of a module assembly and allows users to easily receive and search for required assembly information.

또한, 본 발명에 따르면, 모듈 어셈블리가 교육용, 개인용 장난감 등으로 활용될 때에, 하드웨어 또는 소프트웨어를 잘 알지 못하는 비 전문가들도 쉽게 모듈 어셈블리를 조립하고 또한 사용할 소프트웨어를 자동으로 생성 및 추천하여 누구나 모듈 어셈블리를 쉽게 활용할 수 있는 모듈 추천 시스템 및 모듈 어셈블리가 제공된다.In addition, according to the present invention, when the module assembly is used as an educational, personal toy, etc., even non-experts who are not familiar with hardware or software can easily assemble the module assembly and automatically generate and recommend software to be used, so that anyone can assemble the module. Provided is a module recommendation system and a module assembly that can be easily utilized.

이 경우, 모듈 어셈블리를 구성함에 있어서, 기존의 사용자가 이미 조립했던 구성들에 대한 정보를 활용하여, 필요한 모듈 어셈블리를 빠르게 제작할 수 있고, 관련 소스 코드를 빠르게 검색할 수 있는 시스템을 제공할 수 있다.In this case, in constructing the module assembly, a system capable of rapidly manufacturing a required module assembly and quickly searching for related source codes can be provided by utilizing information on configurations already assembled by an existing user. .

또한, 사용자는 모듈 어셈블리 조립 시 타 사용자가 조립한 모듈 어셈블리 및 모듈 어셈블리를 구동하는 소스 코드를 참조하여 새로운 모듈을 디자인할 수 있다.Also, when assembling the module assembly, the user can design a new module by referring to the module assembly assembled by another user and the source code driving the module assembly.

이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 수정, 변경 및 치환이 가능할 것이다. The above description is merely illustrative of the technical idea of the present invention, and those of ordinary skill in the art to which the present invention pertains may make various modifications, changes, and substitutions without departing from the essential characteristics of the present invention. will be.

따라서, 본 발명에 개시된 실시예 및 첨부된 도면들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예 및 첨부된 도면에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구 범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리 범위에 포함되는 것으로 해석되어야 할 것이다. Therefore, the embodiments disclosed in the present invention and the accompanying drawings are not intended to limit the technical spirit of the present invention, but to explain the scope of the technical spirit of the present invention. . The scope of protection of the present invention should be interpreted by the claims below, and all technical spirits within the scope equivalent thereto should be interpreted as being included in the scope of the present invention.

Claims (20)

토폴로지 정보를 감지 및 생성하는 토폴로지 관리부를 구비하는 기능 유닛을 포함하는 컨트롤 모듈 및 상기 컨트롤 모듈과 다른 기능 유닛을 포함하는 복수의 타모듈을 포함하는 모듈 어셈블리;
상기 모듈 어셈블리와 연결되는 사용자 단말; 및
상기 사용자 단말과 네트워크로 연결되며, 상기 모듈 어셈블리의 토폴로지 정보를 저장하고, 상기 토폴로지 정보에 기초하여 사용자 단말에 추천 소스 코드에 대한 정보를 제공하는 추천 서버를 포함하며,
상기 토폴로지 정보는 모듈 고유 정보, 가중치 정보 및 하위 연결 모듈 정보를 포함하며, 상기 추천 서버는 상기 모듈 고유 정보 및 상기 가중치 정보에 기초하여 상기 추천 소스 코드의 추천 순서를 결정하는,
소스 코드 및 모듈 추천 시스템.
A module assembly including a control module including a functional unit having a topology management unit for detecting and generating topology information, and a plurality of other modules including the control module and other functional units;
A user terminal connected to the module assembly; And
It includes a recommendation server that is connected to the user terminal and the network, stores the topology information of the module assembly, and provides information about the recommended source code to the user terminal based on the topology information,
The topology information includes module-specific information, weight information, and sub-connection module information, and the recommendation server determines a recommendation order of the recommended source code based on the module-specific information and the weight information,
Source code and module recommendation system.
제1항에 있어서, 상기 복수의 타 모듈은 시멘틱 모듈을 포함하며, 상기 시멘틱 모듈에 부착되는 하위 연결 모듈은 컨트롤 모듈에 직접 부착되는 것과 동일하게 가중치가 부여되는 가중치 정보를 가지는,
소스 코드 및 모듈 추천 시스템.
The method of claim 1, wherein the plurality of other modules includes a semantic module, and a lower connection module attached to the semantic module has weight information that is weighted in the same way as being directly attached to a control module.
Source code and module recommendation system.
제1항에 있어서, 상기 토폴로지 정보는 단계 정보를 더 포함하며, 상기 단계 정보는 상기 모듈 어셈블리의 컨트롤 모듈로부터 해당 모듈까지의 최단경로 상의 모듈을 카운팅하여 결정되며, 상기 추천 서버는 상기 단계 정보, 상기 모듈 고유 정보 및 상기 가중치 정보에 기초하여 상기 추천 소스 코드의 추천 순서를 결정하는,
소스 코드 및 모듈 추천 시스템.
The method of claim 1, wherein the topology information further includes step information, and the step information is determined by counting a module on a shortest path from a control module of the module assembly to a corresponding module. Determining a recommendation order of the recommended source code based on the module-specific information and the weight information,
Source code and module recommendation system.
제3항에 있어서, 상기 복수의 타 모듈은 시멘틱 모듈을 포함하며, 상기 시멘틱 모듈에 부착되는 하위 연결 모듈은 컨트롤 모듈에 직접 부착되는 것과 동일한 단계 정보를 가지는,
소스 코드 및 모듈 추천 시스템.
The method according to claim 3, wherein the plurality of other modules includes a semantic module, and a lower connection module attached to the semantic module has the same step information as being directly attached to the control module.
Source code and module recommendation system.
제3항에 있어서, 상기 가중치 정보는 상기 단계 정보에 기초하여 결정되는,
소스 코드 및 모듈 추천 시스템.
The method of claim 3, wherein the weight information is determined based on the step information,
Source code and module recommendation system.
제1항에 있어서, 상기 토폴로지 정보는 상기 복수의 타모듈 각각의 모듈 카테고리 정보를 더 포함하며, 상기 추천 서버는 상기 모듈 카테고리 별 우선순위 값에 따른 가중치를 이용하여 상기 추천 소스 코드의 추천 순위를 결정하는,
소스 코드 및 모듈 추천 시스템.
The recommendation server of claim 1, wherein the topology information further includes module category information of each of the plurality of other modules, and the recommendation server determines the recommendation order of the recommended source code by using a weight according to a priority value for each module category. Deciding,
Source code and module recommendation system.
제1항에 있어서, 상기 추천 서버는 상기 모듈 고유 정보 및 상기 가중치 정보에 기초하여 추가 또는 치환 가능한 복수의 모듈 어셈블리 구성의 추천 순서를 결정하는 것을 특징으로 하는,
소스 코드 및 모듈 추천 시스템.
The recommendation server of claim 1, wherein the recommendation server determines a recommendation order of a plurality of module assembly configurations that can be added or replaced based on the module-specific information and the weight information.
Source code and module recommendation system.
제1항에 있어서, 상기 토폴로지 정보는 상기 컨트롤 모듈에 상기 복수의 타모듈이 연결된 순서를 나타내는 연결 순위를 더 포함하며, 상기 추천 서버는 상기 연결 순위에 기초하여 상기 추천 소스 코드의 추천 순위를 결정하여 상기 사용자 단말에 전송하는,
소스 코드 및 모듈 추천 시스템.
The method of claim 1, wherein the topology information further includes a connection rank indicating an order in which the plurality of other modules are connected to the control module, and the recommendation server determines a recommendation rank of the recommended source code based on the connection rank. To be transmitted to the user terminal,
Source code and module recommendation system.
제1항에 있어서, 상기 토폴로지 관리부의 토폴로지 감지부는 상기 컨트롤 모듈의 하위 연결 모듈로부터 제공받은 모듈 고유 정보 및 하위 연결 모듈 정보에 기초하여 상기 모듈 어셈블리의 연결 상태를 감지하는,
소스 코드 및 모듈 추천 시스템.
According to claim 1, The topology detection unit of the topology management unit detects a connection status of the module assembly based on module-specific information and sub-connection module information provided from a lower connection module of the control module,
Source code and module recommendation system.
제1항에 있어서, 상기 추천 서버는 추가적으로 상기 사용자 단말로부터 입력받은 키워드 정보에 기초하여 추가 또는 치환 가능한 모듈을 추천하는,
소스 코드 및 모듈 추천 시스템.
According to claim 1, The recommendation server additionally recommends a module that can be added or replaced based on keyword information received from the user terminal,
Source code and module recommendation system.
제1항에 있어서, 상기 추천 서버는 메타 정보에 기초하여 소스 코드 및 추가 또는 치환 가능한 모듈을 추천하는,
소스 코드 및 모듈 추천 시스템.
The method of claim 1, wherein the recommendation server recommends a source code and an additional or replaceable module based on meta information.
Source code and module recommendation system.
추천 서버와 네트워크로 연결되는 사용자 단말과 연결될 수 있는 모듈 어셈블리에 있어서,
토폴로지 정보를 감지하여 생성하는 토폴로지 관리부; 통신 제어부; 모듈 정보 및 토폴로지 정보를 포함하는 메모리; 마이크로프로세서를 포함하며 사용자 단말에서 포팅한 프로그램을 실행할 수 있는 기능 유닛을 구비하는 컨트롤 모듈; 및
상기 컨트롤 모듈과 다른 기능 유닛을 각각 구비하는 복수의 타모듈을 포함하며,
상기 토폴로지 정보는 상기 복수의 타모듈의 모듈 고유 정보, 가중치 정보 및 하위 연결 모듈 정보를 포함하며, 상기 추천 서버는 상기 사용자 단말과 네트워크로 연결되며, 상기 모듈 어셈블리의 토폴로지 정보를 저장하고 상기 모듈 고유 정보 및 가중치 정보에 기초하여 상기 추천 소스 코드의 추천 순서를 결정하는,
모듈 어셈블리.
In the module assembly that can be connected to the user terminal connected to the network and the recommended server,
A topology management unit detecting and generating topology information; Communication control unit; A memory including module information and topology information; A control module including a microprocessor and having a functional unit capable of executing a program ported by a user terminal; And
It includes a plurality of other modules each having a control module and another functional unit,
The topology information includes module-specific information, weight information, and sub-connection module information of the plurality of other modules, and the recommendation server is connected to the user terminal and the network, stores topology information of the module assembly, and uniques the module Determining a recommendation order of the recommended source code based on the information and weight information,
Module assembly.
제12 항에 있어서, 상기 복수의 타 모듈은 시멘틱 모듈을 포함하며, 상기 시멘틱 모듈에 부착되는 하위 연결 모듈은 컨트롤 모듈에 직접 부착되는 것과 동일하게 가중치가 부여되는 가중치 정보를 가지는,
모듈 어셈블리.
The method according to claim 12, wherein the plurality of other modules includes a semantic module, and a lower connection module attached to the semantic module has weight information that is weighted in the same way as being directly attached to a control module.
Module assembly.
제12항에 있어서, 상기 토폴로지 정보는 단계 정보를 더 포함하며, 상기 단계 정보는 상기 모듈 어셈블리의 컨트롤 모듈로부터 해당 모듈까지의 최단경로 상의 모듈을 카운팅하여 결정되는,
모듈 어셈블리.
The method of claim 12, wherein the topology information further includes step information, and the step information is determined by counting a module on a shortest path from a control module of the module assembly to a corresponding module.
Module assembly.
제14항에 있어서, 상기 복수의 타 모듈은 시멘틱 모듈을 포함하며, 상기 시멘틱 모듈에 부착되는 하위 연결 모듈은 컨트롤 모듈에 직접 부착되는 것과 동일한 단계 정보를 가지는,
모듈 어셈블리.
The method according to claim 14, wherein the plurality of other modules includes a semantic module, and the lower connection module attached to the semantic module has the same step information as being directly attached to the control module,
Module assembly.
제14항에 있어서, 상기 가중치 정보는 상기 단계 정보에 기초하여 결정되는,
모듈 어셈블리.
15. The method of claim 14, The weight information is determined based on the step information,
Module assembly.
제12항에 있어서, 상기 토폴로지 정보는 상기 복수의 타모듈 각각의 모듈 카테고리 정보를 더 포함하며, 상기 추천 서버는 상기 모듈 카테고리 별 우선순위 값에 따른 가중치를 이용하여 상기 추천 소스 코드의 추천 순위를 결정하는,
모듈 어셈블리.
The recommendation order of the recommended source code according to claim 12, wherein the topology information further includes module category information of each of the plurality of other modules, and the recommendation server uses a weight according to a priority value for each module category. Deciding,
Module assembly.
제12항에 있어서, 상기 추천 서버는 상기 모듈 고유 정보 및 상기 가중치 정보에 기초하여 추가 또는 치환 가능한 복수의 모듈 어셈블리 구성의 추천 순서를 결정하는 것을 특징으로 하는,
모듈 어셈블리.
The recommendation server of claim 12, wherein the recommendation server determines a recommendation order of a plurality of module assembly configurations that can be added or replaced based on the module-specific information and the weight information.
Module assembly.
제12항에 있어서, 상기 토폴로지 정보는 상기 컨트롤 모듈에 상기 복수의 타모듈이 연결된 순서를 나타내는 연결 순위를 더 포함하며, 상기 추천 서버는 상기 연결 순위에 기초하여 상기 추천 소스 코드의 추천 순위를 결정하여 상기 사용자 단말에 전송하는,
모듈 어셈블리.
The method of claim 12, wherein the topology information further includes a connection rank indicating an order in which the plurality of other modules are connected to the control module, and the recommendation server determines a recommendation rank of the recommended source code based on the connection rank. To be transmitted to the user terminal,
Module assembly.
제12항에 있어서, 상기 토폴로지 관리부의 토폴로지 감지부는 상기 컨트롤 모듈의 하위 연결 모듈로부터 제공받은 모듈 고유 정보 및 하위 연결 모듈 정보에 기초하여 상기 모듈 어셈블리의 연결 상태를 감지하는,
모듈 어셈블리.
The method of claim 12, wherein the topology detection unit of the topology management unit detects a connection state of the module assembly based on module-specific information and sub-connection module information provided from a lower connection module of the control module,
Module assembly.
KR1020180114171A 2018-09-21 2018-09-21 A System For Recommending Source Codes And Module And A Module Assembly KR102137667B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180114171A KR102137667B1 (en) 2018-09-21 2018-09-21 A System For Recommending Source Codes And Module And A Module Assembly

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180114171A KR102137667B1 (en) 2018-09-21 2018-09-21 A System For Recommending Source Codes And Module And A Module Assembly

Publications (2)

Publication Number Publication Date
KR20200034415A true KR20200034415A (en) 2020-03-31
KR102137667B1 KR102137667B1 (en) 2020-07-24

Family

ID=70002181

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180114171A KR102137667B1 (en) 2018-09-21 2018-09-21 A System For Recommending Source Codes And Module And A Module Assembly

Country Status (1)

Country Link
KR (1) KR102137667B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240057152A (en) 2022-10-24 2024-05-02 주식회사 엠오브에스 System and method for providing automatic coding services based on artificial intelligence

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160026523A (en) * 2014-09-01 2016-03-09 한국과학기술연구원 Assembly unit and assembly unit set
KR20170010720A (en) * 2015-07-20 2017-02-01 이준희 Block Toy Having Topology Recognition Function and Contents Providing System
KR20170023022A (en) * 2014-06-30 2017-03-02 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 Code recommendation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170023022A (en) * 2014-06-30 2017-03-02 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 Code recommendation
KR20160026523A (en) * 2014-09-01 2016-03-09 한국과학기술연구원 Assembly unit and assembly unit set
KR20170010720A (en) * 2015-07-20 2017-02-01 이준희 Block Toy Having Topology Recognition Function and Contents Providing System

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240057152A (en) 2022-10-24 2024-05-02 주식회사 엠오브에스 System and method for providing automatic coding services based on artificial intelligence

Also Published As

Publication number Publication date
KR102137667B1 (en) 2020-07-24

Similar Documents

Publication Publication Date Title
US10491380B2 (en) Firmware of modular assembly system
KR101817206B1 (en) Circuit board kit for Studying coding
US10427065B2 (en) Building blocks with lights for guided assembly
EP3424108B1 (en) Modular assembly toy system
KR102304692B1 (en) A System For Recommending Source Codes And Module And A Module Assembly
US10591798B1 (en) Dynamic tenancy
US10734759B2 (en) Configurable smart object system with magnetic contacts and magnetic assembly
KR102137667B1 (en) A System For Recommending Source Codes And Module And A Module Assembly
US20210247745A1 (en) Assembly information providing system and module assembly
US11229841B2 (en) Reader participation type electronic book system using module and operation method
US11455147B2 (en) System for coding without compilation and a module assembly
TWI768442B (en) Reader-participated e-book system and operation method using modules
US11392392B2 (en) Plug and play module assembly and plug and play system
US20200376655A1 (en) Action robot, authentication method therefor, and server connected thereto
KR102479950B1 (en) A coding training system enables module assembly through augmented reality
US20230399197A1 (en) Stackable non-intrusive device for touchless operation of an elevator through finger gestures

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant