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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0631—Item recommendations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Administration; Management
- G06Q10/10—Office automation; Time management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0613—Third-party assisted
- G06Q30/0619—Neutral 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
Description
본 발명은 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리에 관한 것으로서 보다 상세하게는, 다용도 모듈 어셈블리의 제작 툴에서 모듈 어셈블리의 조립 정보를 공유하고, 사용자가 필요한 조립 정보 및, 소스 코드 정보를 용이하게 추천받고 검색할 수 있는 소스 코드 및 모듈 추천 시스템 및 모듈 어셈블리에 관한 것이다.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
이러한 모듈 어셈블리들은 위에 언급한 바와 같이 소프트웨어 또는 하드웨어의 전문가인 연구원부터 학생, 일반인 등 다양한 사람들이 이용하고 있다. 단, 전문가를 제외한 일반인이나 학생들은 각 모듈들을 조립하고, 조립된 모듈 어셈블리에 소프트웨어를 포팅하여 사용하는 것이 어려울 수 있어서, 상술한 모듈의 보급에 제약이 되고 있다.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
본 실시예에서, 모듈 어셈블리(1)는 서로 조립 가능한 하나 이상의 모듈(10, 20, 30, 40)들의 집합 또는 이들이 조립된 구조체로 정의될 수 있으며, 그 목적, 종류, 형태, 모듈의 개수 등에 의해 제한되지 않는다. 예를 들어, 모듈 어셈블리(1)는 학생이나 사용자가 모듈(10, 20, 30, 40)들을 조립하면서 전자 장치의 작동 원리를 이해할 수 있는 교육용 키트의 일부일 수 있다. 또는, 모듈 어셈블리(1)는 연구원이 특정 목적을 수행하기 위한 장치를 제작하기 위해 사용되는 연구용 키트의 일부일 수 있다. 또한, 모듈 어셈블리(1)는 사용자가 취미용으로 조립 가능한 장난감 키트의 일부일 수 있다.In this embodiment, the
설명의 용이함을 위하여 본 실시예에서는 모듈 어셈블리(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
아울러, 본 실시예에서 모듈(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
제1 모듈(10) 내지 제4 모듈(40)은 예컨대, 리모컨 등으로부터 적외선 신호를 수신할 수 있는 적외선 센서 모듈, 스마트폰 등과 무선 통신할 수 있는 무선 통신 모듈이고, 자이로스코프 센서 모듈 또는 모터(41) 등의 구동 모듈일 수 있다. 또한, 제1 모듈(10) 내지 제4 모듈(40)은 외부의 구동 장치(41)와 케이블(42)에 의해 연결될 수도 있다. 이 경우, 모듈 어셈블리(1)는 리모컨 또는 스마트폰의 신호를 수신하여 모터(41)를 선택적으로 작동시키는 장치일 수 있다. 상기와 같은 모듈 어셈블리(1)의 구성은 하나의 예에 불과하며, 각각의 모듈은 독립적으로, 또는 다른 모듈과의 연동을 통해 임의의 기능을 수행할 수 있도록 제공될 수 있다.The
모듈(10, 20, 30, 40)들은 다른 모듈과 면 접촉 가능한 복수 개의 측면을 갖는 다각형 기둥 형상인 입체일 수 있다. 여기서, 면 접촉은 측면의 모든 면적이 모두 접촉되는 것 만을 의미하는 것은 아니며, 측면의 일부만 접촉되어 어느 하나의 모듈의 측면과 다른 모듈의 측면이 서로 마주보며 일부분이 접촉되는 것을 포함하는 의미로 이해되어야 한다.The
본 실시예에서는 모듈(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
다른 실시예로서, 모듈(10, 20, 30, 40)들은 평면 상 정삼각형, 직사각형, 정오각형 등의 다각형 기둥 형상으로 형성될 수도 있고, 특히 정다각형 형상으로 형성될 수 있다. 일부의 모듈(10, 20, 30, 40)들이 서로 다른 입체적 형상을 가질 수도 있다. 또한, 모듈(10, 20, 30, 40)들 중 일부는 뿔, 다면체 등의 다양한 입체적 형상을 가질 수도 있다. As another embodiment, the
여기서, 제1 모듈(10)은 외관을 형성하는 하우징(11)과, 하우징(11)의 측면에 노출되어 전기 신호 등을 연결된 다른 모듈에 전달하거나 수신할 수 있는 단자(107)와, 하우징(11)의 외부로 선택적으로 돌출되는 핀(180)이 제공된 핀 설치부(150) 및 다른 모듈의 핀이 삽입되는 핀 수용부(160)를 포함할 수 있다.Here, the
하우징(11)은 예컨대, 직육면체 형상으로 형성된 케이스일 수 있다. 하우징(11)은 도 1에 도시된 것처럼 상부 케이스(11a)와 하부 케이스(11b)가 결합되는 형태로 제공될 수 있다. 하우징(11)을 구성하는 방법은 필요에 따라 상부 케이스(11a)와 하부 케이스(11b)가 일체로 형성되거나, 더 많은 부분으로 나뉘어 조립될 수 있다.The
단자(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
본 실시예에서는 하우징(11)의 모든 측면에 단자(107)가 제공되는 것을 예로 들었으나, 실시예에 따라서는 단자 (107)가 형성되지 않은 측면이 존재할 수도 있다.In this embodiment, the terminal 107 is provided on all sides of the
도 2를 참조하면, 하부 케이스(11b)는 외형 및 내부 구조를 형성하는 프레임(100), 프레임(100)의 내측에 제공되는 기판(102), 기판(102)에 설치되는 기능 유닛(104)을 포함할 수 있다.Referring to FIG. 2, the
프레임(100)은 하우징(11)의 일부 또는 전부를 구성하는 구조물로서, 하우징(11)의 일부 또는 전부의 외형을 형성하고, 내부에 각종 부품이 설치되기 위한 공간과 구조를 제공할 수 있다. 본 실시예에서 프레임(100)은 하우징(11)의 하부 케이스(11b)를 형성하는 것을 예로 들어 설명하나, 본 발명의 권리범위는 이에 한정되지 않는다. 또한, 본 실시예에서 프레임(100)은 사각형 형상으로 형성되며, 4개의 코너(corner, 101)를 갖는다.The
기판(102)에는 제1 모듈(10)의 기능을 구현하기 위한 기능 유닛(104)이 실장될 수 있으며, 프레임(100)의 내측 공간 중앙부에 고정 설치될 수 있다. 기능 유닛(104)은 예를 들어 마이크로프로세서를 포함할 수 있으며, 이 때 제1 모듈(10)이 독립적인 펌웨어에 의해 구동되면 제1 모듈(10)을 제어하기 위해 제공될 수 있다. 또다른 예로서, 제1 모듈(10)이 적외선 센서 모듈인 경우, 기능 유닛(104)은 적외선 센서 및 적외선 센서로부터 감지된 값을 처리하는데 필요한 ADC(Analog Digital Converter) 및 다른 모듈 또는 외부 하드웨어와 통신하는 데 필요한 인터페이스 예컨대, I2C 또는 UART, 또는 USB 등의 통신 인터페이스 등 필요한 디바이스들을 포함할 수 있다. A
본 발명의 모듈(10 내지 40)은 상술한 기능 유닛(104)의 기능에 따라 모듈의 종류가 정해진다. 예컨대, 기능 유닛(104)이 마이크로프로세서 및 메모리를 포함하고 있으며, 다른 유닛들을 제어할 수 있는 OS 또는 펌웨어를 포함하고 있는 경우에는 컨트롤 모듈이 된다. 또는, 기능 유닛(104)이 센서의 센싱 값을 다른 모듈 또는 외부 디바이스에 전달할 수 있는 경우에는 센서 모듈이 된다. 또는, 기능 유닛(104)이 NB-IOT, LTE, LoRa, WiFi, Bluetooth, USB, 케이블 모뎀 등 다양한 유무선 통신 장치를 포함하면서 다른 모듈로부터 전기적 신호를 수신하여 상술한 유무선 통신 장치를 통하여 다른 외부 디바이스에 전기적 신호를 전송할 수 있는 경우에는 통신 모듈이 될 수 있다. 또는, 기능 유닛(104)이 모터 등의 다양한 액추에이터 및 액추에이터 제어 회로들을 포함하여 구동이 가능하게 하는 경우에는 구동 모듈이 될 수 있다. 기타 본원 발명의 모듈의 더욱 상세한 구조 및 결합에 대해서는 대한민국 등록특허 공보 제10-1761596에 상세하게 기재되어 있으며, 본원 특허 명세서에 참조로서 포함된다.The types of modules of the
이하에서는 도 3을 참조하여 상술한 구조의 모듈 어셈블리(1)를 조립하고, 조립된 모듈 어셈블리를 구동하기 위한 소스 코드를 작성할 때에 타 사용자가 조립한 모듈 어셈블리(1) 및 모듈 어셈블리(1)를 구동하는 소스 코드를 참조하여 새로운 모듈을 디자인할 수 있는 소스 코드 및 모듈 어셈블리 추천 시스템에 대하여 서술한다. 도 3는 본 발명의 일 실시예에 따른 소스 코드 및 모듈 어셈블리 추천 시스템을 설명하기 위한 블록도이다. 도 3을 참조하면, 본 발명의 실시예에 따른 모듈 어셈블리 추천 시스템은 모듈 어셈블리(1), 추천 서버(2) 및 사용자 단말(3)를 포함할 수 있다. Hereinafter, when assembling the
이 경우, 추천 서버(2)와 사용자 단말(3)은 네트워크(4)로 연결될 수 있다. 본 실시예에서 상술한 네트워크(4)가 인터넷으로 구현되는 예에 대하여 설명하도록 한다. 단, 본 발명은 이에 한정되는 것은 아니며 당업자는 다양한 네트워크를 통하여 추천 서버(2)와 사용자 단말(3)의 연결을 구현할 수 있다.In this case, the
추천 서버(2)는 사용자 단말(3) 또는 모듈 어셈블리(1)로부터 토폴로지 정보를 네트워크를 통하여 수신할 수 있으며, 이러한 토폴로지 정보를 빅데이터로서 저장할 수 있다. 이 경우, 추천 서버(2)는 토폴로지 정보에 기초하여 활용 가능한 소스 코드 및 추가 또는 치환 가능한 추천 모듈을 추천해 줄 수 있다. 이 경우, 추가 또는 치환 가능한 모듈 정보는 모듈 어셈블리(1)의 현재 구성에서, 모듈을 추가 부착하여 현재 구성 대비 추가적인 동작을 수행하거나, 또는 현재 구성에서 치환할 수 있는 모듈에 대한 정보를 의미한다. 본 발명의 실시예에서는 추가 또는 치환 가능한 모듈 정보 및 해당 조합의 모델 어셈블리에 관련한 소스 코드가 추천 서버(2)에서 추천 및 다운로드될 수 있다. The
이 때 추천 서버(2)가 복수의 추가 또는 치환 가능한 모듈 조합 정보 및 관련 소스 코드를 제공하는 경우에 사용자 단말(3)은 선호하는 모듈 정보 및 소스 코드를 선택할 수 있는 인터페이스를 제공할 수 있다. 소스 코드 및 모듈 추천에 관한 상세한 프로세스는 후술하기로 한다.In this case, when the
한편, 모듈 어셈블리(1)는 USB, RS-232, IEEE1394 등 유선 통신 수단을 통하여 사용자 단말(3)과 연결될 수도 있으며 또는 WiFi 또는 Bluetooth 등의 무선 통신 수단을 통하여 사용자 단말(3)과 연결될 수도 있다. 또는 모듈 어셈블리(1)는 네트워크를 통하여 사용자 단말(3)과 연결될 수도 있다.Meanwhile, the
앞서 기능 유닛(104)에 관한 설명에서 기술한 바와 같이, 모듈(10 내지 40)의 기능은 기능 유닛(104)의 구성에 따라 정해지게 된다. 이 경우, 편의를 위하여, 모듈(10)이 컨트롤 모듈이라고 가정한 후 설명한다. 이 경우, 컨트롤 모듈(10)은 도 4과 같은 구성을 가질 수 있다.
As described above in the description of the
도 4를 참조하면 컨트롤 모듈(10)의 기능 유닛(104)은 토폴로지 관리부(1043), 통신 제어부(1044), 메모리(1045) 및 마이크로프로세서(1050)를 포함할 수 있다. Referring to FIG. 4, the
여기서, 토폴로지 관리부(1043)는 모듈 어셈블리(1)의 연결 구조(토폴로지)를 감지하는 프로토콜을 실행하여 토폴로지를 결정하는 기능을 수행한다. 보다 구체적으로, 토폴로지 관리부(1043)는 토폴로지 감지부(1043-1) 및 토폴로지 정보 생성부(1043-2)를 포함할 수 있다.Here, the
토폴로지 감지부(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
이 경우, 토폴로지 감지부(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
한편, 도 5(b)와 같은 경우에는 모듈(20, 30)이 각각 컨트롤 모듈(10)과 결합하고 있는데, 이 경우에는, 실제로 결합한 순서에 따라 연결 순위를 부여하게 된다. 예컨대, 모듈(20)이 컨트롤 모듈(10)에 먼저 결합한 경우에는 모듈(20)의 연결 순위가 1이되고, 모듈(30)의 연결 순위가 2가 된다.On the other hand, in the case of FIG. 5 (b), the
한편, 모듈 사이의 거리는 컨트롤 모듈(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
토폴로지 정보 생성부(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
단, 컨트롤 모듈(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 (
한편, 통신 제어부(1044)는 외부 기기와의 통신 및 모듈 사이의 통신을 제어할 수 있다. 외부 기기와의 통신은, NB-IOT, LTE, LoRa, WiFi, Bluetooth, USB, 케이블 모뎀 등 다양한 유무선 통신을 포함할 수 있다. 한편, 모듈 사이의 통신은 UART, I2C, LIN, CAN 등 다양한 내부 통신 수단을 이용하여 모듈간 통신을 수행할 수 있다. 통신 제어부(1044) 내에는 상술한 다양한 유무선 통신 수단 또는 모듈 사이의 통신 수단을 포함할 수도 있고, 별도의 네트워크 모듈과 연결될 때 별도의 네트워크 모듈을 제어하는 방식으로 통신할 수도 있다.Meanwhile, the
메모리(1045)는 모듈 어셈블리(1)의 동작에 필요한 각종 정보, 소프트웨어 및 연결된 모듈의 토폴로지에 관한 각종 정보들을 포함하며, 예를 들어, 메모리(1045)는 모듈 정보(1046), 구동정보(1047), 토폴로지 정보(1048) 및 펌웨어(1049)를 포함할 수 있다.The
모듈 정보(1046)는 모듈 ID, 모듈 카테고리, 기능 정보 및 메타 정보를 포함할 수 있다. 모듈 ID(1046)는 UUID(Universally Unique identifier)와 같은 모듈 고유의 식별자 일 수도 있다. 또는 컨트롤 모듈(10)에서 결합 시 부여하는 임시 ID 일 수도 있다. The
이 경우, 모듈 카테고리는 치환 가능한 모듈들을 찾는 것을 보조하기 위하여 복수의 모듈을 기능을 중심으로 유사한 기능을 가진 모듈들을 상위 개념으로 분류하는 개념이다. 예컨대, 센서, 키, 마이크 등 전기 신호를 입력하는 모듈들은 '입력', 액추에이터, 디스플레이, 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.
(회전 운동 -> 직선 운동)Motion conversion module
(Rotational motion-> Linear motion)
한편, 기능 정보는 모듈의 상세 기능을 표시한 것으로, 예를 들어, 컨트롤 모듈, 적외선 센서 모듈, 스위치 모듈, 전원 모듈 및 네트워크 모듈 등이다. 이 경우, 모듈의 기능은 각 모듈 내의 기능 유닛(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
한편, 모듈 토폴로지 정보(1048)는 컨트롤 모듈(10)에서 수집한 토폴로지 정보로서, 도 6 및 도 7을 참조하여 상세히 설명한다. 도 7은 도 6의 토폴로지를 가진 모듈 어셈블리(1)의 토폴로지 정보를 예시적으로 나타낸다.Meanwhile, the
도 6에 따르면, 모듈 토폴로지 정보(1048)는 기본적으로 모듈 어셈블리(1) 내의 모듈들의 고유 정보(모듈 ID)(1048-1), 단계 정보(1048-2), 하위 연결 모듈 정보(1048-3), 연결 순위(1048-4) 및 모듈 카테고리(1048-6)를 포함할 수 있다. 추가적으로 모듈 토폴로지 정보(1048)는 연결 방향(1048-5)을 더 포함할 수 있다.According to FIG. 6, the
모듈 고유 정보(1048-1)는 모듈 어셈블리에 포함된 연결된 모듈들의 모듈 ID(1046)를 나타낸다. 이 경우, 모듈 고유 정보(1048-1)는 UUID(Universally Unique IDentifier)와 같은 모듈 고유의 식별자 일 수 있으며, 컨트롤 모듈(10)에서 연결 시 부여하는 임시 ID 일 수도 있다.The module specific information 1048-1 indicates the
단계 정보(1048-2)는 앞서 설명한 컨트롤 모듈(10)과의 거리를 의미하며, 컨트롤 모듈(10)로부터 해당 모듈까지 최단 경로 상으로 연결된 모듈을 카운팅하여 결정된다. 단, 상술한 모듈들 중 시멘틱 모듈에 부착되는 모듈의 경우에는 단계 정보(1048-2)가 시멘틱 모듈을 컨트롤 모듈(10)으로 가정하여 시멘틱 모듈로부터의 거리나, (시멘틱 모듈에 지정된 단계) + (시멘틱 모듈과의 거리) - 1 로 정해질 수 있다. 또는 시멘틱 모듈에 부착되는 경우에는 큰 가중치가 부여되어 시멘틱 모듈에 부착되는 모듈의 중요성이 강조될 수 있다.The step information 1048-2 means a distance from the
시멘틱 모듈(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
예컨대, 사용자가 모듈을 조립하여 미니 자동차의 기능을 하는 모듈 어셈블리를 만들려는 의도가 있을 때에 모터 모듈이나 바퀴 모듈은 중요한 의미를 가지게 되지만, 바퀴의 사이즈 등으로 인하여 컨트롤 모듈(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
도 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
하위 연결 모듈 정보(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
연결 순위(1048-4)는 컨트롤 모듈(10)에 접속하는 순서를 나타내는 것으로, 추천 서버(2)에서 소스 코드 및 모듈을 추천할 때에 기초가 되는 정보이다. 연결 순위(1048-4)의 결정 방법에 대해서는 도 5에 대한 설명 부분에서 저술하였으므로 공통된 부분의 설명을 생략한다. 컨트롤 모듈(10)에 이미 결합되어 있는 복수의 모듈인 모듈 그룹이 결합되는 경우에는 모듈 그룹에 동일한 공통 연결 순위(1048-7)가 부여될 수 있다.The connection rank 1048-4 indicates an order of accessing the
연결 방향(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
이와 같은 토폴로지 정보는 아래와 같이 활용될 수 있다. 이하에서는 도 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
이러한 추천 소스 코드(950, 960), 추가 또는 치환 가능한 추천 모듈(970, 980) 및 추천 설치 위치(990)는 추천 서버(2)로부터 제공된다. 추천 서버(2)는 기존 사용자들이 이미 사용했던 모듈 어셈블리 토폴로지 이력 및 이에 대응되는 소스 코드를 저장하고 현재 사용자의 모듈 어셈블리(1)의 토폴로지 정보에 기초하여 소스 코드, 추가 구성 및 설치 위치에 관한 추천을 제공하게 된다.These
이 때, 추천 서버(2)는 토폴로지 정보 중, 연결 순위(915), 단계 정보, 모듈 카테고리, 사용자가 입력한 키워드(965) 및 메타 정보 등에 따라 추천 소스 코드 및 모듈과, 추천 순서를 결정하여 추천할 수 있다.At this time, the
먼저, 연결 순위에 대한 실시예를 살펴보면, 예를 들어, 도 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
또한, 도 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
이렇게 연결 순서에 따라 추천 소스 코드를 바꾸는 이유는 연결 순서에 따라 사용자의 의도가 바뀌기 때문이다. 예를 들어, 도 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
또는 추천 서버(2)는 키워드(965)에 의한 추천도 가능하다. 예컨대, 키워드로서 리모컨이 입력되는 경우에는 적외선 모듈이나 간단한 복수의 키를 포함하는 키 모듈 등이 추천될 수 있다.Alternatively, the
또는 추천 서버(2)는 메타 정보를 활용한 추천도 가능하다. 예를 들어, 모듈에 메타 정보로서 '선풍기'를 저장하고 있는 경우에, 동일한 메타 정보인 '선풍기'를 저장하고 있는 다른 모듈들을 추가 또는 치환 가능한 모듈로서 추천할 수 있다. 메타 정보는 '선풍기' 등의 구체적인 기기 명이 될 수도 있고, '바람', 또는 '시원' 등과 같은 선풍기와 연관된 연관 검색어들이 될 수도 있다. 메타 정보는 모듈 정보로서 추천 서버(2)에서 각 모듈 별로 저장될 수 있으며, 한편, 사용자가 추천 서버(2)에 접속하여 해당 모듈 메타 정보를 편집하는 것도 가능하다. 또는 메타 정보는 기계 학습에 의하여 입력될 수도 있다. Alternatively, the
또는 추천 서버(2)는, 사용자가 입력한 키워드(965)를 추가적으로 고려하여 추천 소스 코드 및 모듈과, 추천 순서를 결정하여 추천할 수 있다. 예컨대, 사용자가 '리모컨'를 입력한 경우에, 추천 서버(2)는 토폴로지 정보에 기초하여 선택한 소스 코드 및 추가 또는 치환 가능한 추천 모듈들 중, 리모컨에 관련한 것을 선별하여 사용자에게 나타낼 수도 있다.Alternatively, the
한편, 추천 서버(2)는 모듈 어셈블리(1)의 현재 구성(910 내지 940)과 동일한 모듈 어셈블리 조합 이력이 없는 경우에도 토폴로지 정보에 기초하여 일부 동일한 구성(유사한 구성)을 검색하여 추가 또는 치환 가능한 추천 모듈을 추천할 수 있다. On the other hand, even if there is no module assembly combination history identical to the
이 경우, 추천 서버(2)는 토폴로지 정보 중 모듈 어셈블리(1) 내 모듈들의 단계 정보(컨트롤 모듈로부터 해당 모듈까지의 거리)에 따른 가중치 및 가중치를 이용하여 연산한 연산 값에 기초하여 모듈 추천 순서를 결정할 수 있다. 또한, 가중치는 모듈 고유 정보에 기초하여 결정될 수도 있다. 또한, 가중치는 시멘틱 모듈에 부착된 경우, 컨트롤 모듈(10)에 직접 부착된 것과 동일한 가중치가 부여될 수도 있다. 예를 들어, 도 12를 참조하면, 컨트롤 모듈(10)에 직접 부착된 모듈(20)은 높은 가중치가 부여되고, 그 다음으로 부착된 모듈(30)은 모듈(20)에 비하여 낮은 가중치가 부여되지만, 컨트롤 모듈(10)에 직접 부착되지 않고 시멘틱 모듈(60)에 부착된 모듈(40, 50)은 컨트롤 모듈(10)에 직접 부착된 모듈(20)과 동일하게 높은 가중치가 부여될 수 있다.In this case, the
예를 들어, 추천 서버(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
위에서 알 수 있는 바와 같이, 가중치를 적절하게 사용하는 경우에는 유사한 구성을 쉽게 찾을 수 있으며, 예컨대, 가중치는 (상수(위의 실시예에서는 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
또한 추천 서버(2)는 추가적으로 사용자가 입력한 키워드 정보(980)를 추천에 활용할 수 있다. 예를 들어, 추천 수가 많은 경우에는 추천 서버(2)는 사용자가 입력한 키워드 정보(980)를 활용하여 추천되는 모듈의 수를 제한할 수 있다.In addition, the
한편, 위의 실시예에서는 모듈의 토폴로지 정보에 기초하여 연산을 수행하였으나, 자주 쓰이는 모듈들은 모듈 그룹으로 등록하여 이를 하나의 모듈처럼 취급할 수도 있다. 예컨대, 리모컨 신호를 수신할 수 있는 적외선 센서 모듈, 컨트롤 모듈 및 스위치 모듈은 하나의 리모컨 컨트롤 모듈로서 자주 활용될 수 있다. 이와 같은 모듈 조합들은 하나의 모듈 그룹으로 취급될 수 있다.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
그리고, 모듈 그룹(30,40)이 컨트롤 모듈(10)이 포함된 모듈 어셈블리와 결합할 때에는 컨트롤 모듈(10)에 가장 가깝게 결합되는 모듈(30)이 컨트롤 모듈(10)에 모듈 정보를 전송하게 된다. 이 경우, 컨트롤 모듈(10)은 모듈 그룹(30, 40)을 단일 모듈과 같이 처리할 수 있다. 즉, 모듈 그룹(30, 40)을 하나의 모듈로 등록할 수도 있다. In addition, when the
다시 도 4를 참조하면, 펌웨어(1049)는 모듈 어셈블리(1)를 동작 시키기 위한 소프트웨어로서, 컨트롤 모듈(10)이 토폴로지 정보를 인터넷을 통해 서버 또는 사용자 단말에 포함된 개발자 도구 앱에 제공하는 경우에, 인터넷상의 추천 서버(2) 또는 해당 개발자 도구 앱으로부터 소스 코드를 추천받고 사용자가 선택한 소스 코드를 컴파일한 실행파일(펌웨어)을 다운로드 받을 수 있다.Referring to FIG. 4 again, the
마이크로프로세서(1050)는 모듈 어셈블리(1) 상의 펌웨어나 또는 통신 제어부(1044), 토폴로지 감지부(1043)의 프로토콜 실행을 위한 연산장치로서, 당업자는 모듈 어셈블리(1)에 필요한 마이크로프로세서(1050)를 적절하게 선택하여 구현할 수 있다.The
이하에서는 도 8을 참조하여, 모듈 어셈블리(1)에서 컨트롤 모듈이 토폴로지를 감지하는 프로토콜을 상세하게 설명한다.Hereinafter, a protocol in which the control module senses the topology in the
본 실시예에서는 설명의 간략화를 위하여 3 단계의 연결을 구비하는 모듈 어셈블리(1)를 기준으로 설명한다. 단, 당업자는 본 실시예에 기초하여 다양한 변형을 가할 수 있다.In this embodiment, for simplicity of explanation, description will be made based on a
먼저, 새로운 모듈, 예를 들어, 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
또는, 하우징(11)의 외부로 선택적으로 돌출되는 핀(180) 및 핀 수용부(160)(도 2 참조)을 마그네틱으로 제작하고, 돌출되는 핀(180)이 다른 모듈의 핀 수용부(160)에 부착될 때, 돌출되는 핀(180)과 핀 수용부(160)의 결합을 센싱하여 컨트롤 모듈(10)로 하여금 새로운 모듈이 부착되었다는 것을 인식하도록 구성할 수도 있다.Alternatively, the
또는, 예컨대, 모듈과 모듈 사이에 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
컨트롤 모듈(10)이 정상적으로 확인 신호(Ack)를 수신하면, 다음으로는 모듈 ID(1046)를 질의하게 된다. 이에 대한 응답으로 새롭게 접속된 모듈의 모듈 ID(1046)를 수신하게 되면, 해당 모듈을 토폴로지 정보에 등록시키고, 해당 모듈에 대하여 연결 순위(Connection Ranking)를 부여한다. 그 후, 모듈 거리를 카운팅 하고, 해당 모듈의 가중치(Module Weight)를 부여한 후, 해당 모듈에 하위 연결 모듈에 대한 정보를 요청하게 된다(Connection Info). When the
한편, 컨트롤 모듈(10)이 하위 연결 모듈에 대한 정보를 수신하게 되면, 해당 하위 연결 모듈(3rd tier)이 제대로 연결되었는지를 확인하기 위하여 모듈 ID를 하위 연결 모듈에 질의한다. 컨트롤 모듈(10)은 질의에 대한 응답으로 수신한 모듈 ID와 2 단계 모듈(2nd Tier)로부터 수신한 하위 연결 모듈 정보를 비교하여 실제 연결상태를 확인한다. 이 때 실제 연결 상태와 다른 경우에는 에러가 발생하며, 컨트롤 모듈(10)은 2 단계 모듈(2nd Tier)에 하위 연결 모듈 정보를 재요청한다.Meanwhile, when the
컨트롤 모듈(10)은 2 단계 모듈(2nd Tier)로부터 수신한 하위 연결 모듈 정보가 실제 연결 상태와 일치하는 경우에는, 다시, 해당 모듈을 토폴로지 정보에 등록시키고, 해당 모듈에 대하여 연결 순위(Connection Ranking)를 부여한다. 그 후, 모듈 거리를 카운팅한 후, 다시 3 단계 모듈(3rd Tier)에 하위 연결 모듈 정보를 요청한다. 그리고, 컨트롤 모듈(10)은 하위 연결 모듈 정보가 없을 때까지 위의 프로토콜을 반복하여 토폴로지 정보를 완성한다.
토폴로지 정보가 완성되면 컨트롤 모듈(10)에 저장되고, 컨트롤 모듈(10)이 사용자 단말(3)과 연결되면, 사용자는 사용자 단말(3) 내에 설치되거나 또는 추천 서버(2)의 웹 인터페이스로 제공되는 개발자 도구 앱(900)을 통하여 현재까지 구성된 모듈 어셈블리(1)에 포팅이 가능한 추천 소스 코드(910)을 제공받는다.When the topology information is completed, it is stored in the
본 발명에 따른 모듈 추천 시스템은, 모듈 어셈블리의 조립 정보를 공유하고, 사용자가 필요한 조립 정보를 용이하게 추천받고 검색할 수 있는 모듈 추천 시스템을 제공할 수 있다.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.
소스 코드 및 모듈 추천 시스템.
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.
소스 코드 및 모듈 추천 시스템. 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.
소스 코드 및 모듈 추천 시스템.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.
소스 코드 및 모듈 추천 시스템.The method of claim 3, wherein the weight information is determined based on the step information,
Source code and module recommendation system.
소스 코드 및 모듈 추천 시스템. 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.
소스 코드 및 모듈 추천 시스템. 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.
소스 코드 및 모듈 추천 시스템. 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.
소스 코드 및 모듈 추천 시스템.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.
소스 코드 및 모듈 추천 시스템.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.
소스 코드 및 모듈 추천 시스템.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.
모듈 어셈블리.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.
모듈 어셈블리.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.
모듈 어셈블리.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.
모듈 어셈블리.15. The method of claim 14, The weight information is determined based on the step information,
Module assembly.
모듈 어셈블리.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.
모듈 어셈블리.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.
모듈 어셈블리.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.
모듈 어셈블리.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.
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)
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)
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 |
-
2018
- 2018-09-21 KR KR1020180114171A patent/KR102137667B1/en active IP Right Grant
Patent Citations (3)
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)
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 |