Single-board computers in various forms, such as a Raspberry Pi, a Beaglebone, or an Arduino, are ubiquitous today among “Makers” and in professional settings where automation of electrical components is required. Generally, they are cheap and easy to program; however, when such projects require cellular connectivity the integration of cellular features is difficult to perform and requires specialized knowledge beyond that which a typical “maker”, electrical engineer, or software developer would already have. For example, a user needs extensive knowledge of serial port communications and “AT” commands to configure and control a cellular modem. This extensive knowledge and expertise present a barrier to entry and creates development delays.
Detailed descriptions of implementations of the present invention will be described and explained through the use of the accompanying drawings.
The technologies described herein will become more apparent to those skilled in the art from studying the Detailed Description in conjunction with the drawings. Embodiments or implementations describing aspects of the invention are illustrated by way of example, and the same references can indicate similar elements. While the drawings depict various implementations for the purpose of illustration, those skilled in the art will recognize that alternative implementations can be employed without departing from the principles of the present technologies. Accordingly, while specific implementations are shown in the drawings, the technology is amenable to various modifications.
The disclosed device and software enables rapid prototyping of Internet of Things (IoT) devices by providing a low-cost single motherboard computer (single-board computer or SBC) with an integrated cellular modem that can automatically connect to a wireless telecommunication network. The cellular modem can be an 2G, 3G, LTE, 4G, 5G etc. modem. The single motherboard computer can be a Raspberry Pi computer, an Arduino, or any device capable of serial port communication, while the integrated cellular modem can communicate using any hardware-supported cellular protocols over a cellular wireless network. The modem can be configured to execute instructions associated with a modem AT command set, which is poorly documented, is hard to understand for most implementers, and requires extensive expertise to operate.
The disclosed software creates an application programming interface (API) subsuming the modem AT command set, where the API provides a higher-level functionality than the modem AT command set and where a function associated with the API includes multiple function calls to the modem AT command set. A user can easily enable the modem to establish connection to the telecommunication network by invoking, for example, a single API function using a familiar programming language or drag-and-drop tool in place of cryptic, difficult-to-understand AT commands.
A typical device can include a touchscreen, multiple general-purpose input/output (GPIO) pins, and multiple USB ports. Through the GPIO and USB ports, the device allows connection of various external devices, such as sensors to measure acceleration, orientation, temperature, pollution, humidity, etc. The typical device can be used as a controller of other devices through various wired and wireless connections and connection protocols. The device can be installed close to the location where the data is gathered and can perform the needed computation locally, therefore improving response times and saving network bandwidth. The device can be enclosed within a waterproof case and be able to operate in a humid or watery environment.
The typical device can store in a flash or a programmable read-only memory (PROM) memory a base operating system (OS) version and drivers for peripherals, GPIO pins, USB ports, and the modem. Further, the memory can store a simple application, launched at startup, that configures an available modem to connect to an available cellular network.
Various examples of the invention will now be described. The following description provides certain specific details for a thorough understanding and enabling description of these examples. One skilled in the relevant technology will understand, however, that the invention may be practiced without many of these details. Likewise, one skilled in the relevant technology will also understand that the invention may include many other obvious features not described in detail herein. Additionally, some well-known structures or functions may not be shown or described in detail below, to avoid unnecessarily obscuring the relevant descriptions of the various examples.
The description and associated drawings are illustrative examples and are not to be construed as limiting. This disclosure provides certain details for a thorough understanding and enabling description of these examples. One skilled in the relevant technology will understand, however, that the invention can be practiced without many of these details. Likewise, one skilled in the relevant technology will understand that the invention can include well-known structures or features that are not shown or described in detail, to avoid unnecessarily obscuring the descriptions of examples.
A GPIO pin is an uncommitted digital signal pin on an integrated circuit or electronic circuit board whose behavior—including whether it acts as input or output—is controllable by the user at run time. The user can define the purpose and behavior of the GPIO connecting an integrated circuit, such as a sensor, to the GPIO pin. A GPIO pin's state can be exposed to the software developer through one of a number of different interfaces, such as a memory-mapped peripheral, or through dedicated IO port instructions. GPIO pins can be configured to be input or output, GPIO pins can be enabled/disabled, GPIO pin input values are readable (typically high or low), GPIO pin input values are writable/readable, and GPIO pin input values can often be used as interrupts, typically for wakeup events, such as transitioning a processor from a low or medium power mode to a high-power mode.
The motherboard 110 can include a processor 150 and a memory 160 in communication with the modem 120 and the multiple I/O points 130, 140. The processor can be any low-power processor, such as those developed on the ARM core, Intel's Atom, etc. The memory 160 can be a flash memory or a PROM. The environmentally secure enclosure 170 can enclose the motherboard 110 and the modem 120.
The environmentally secure enclosure 170 can include a waterproof case, enabling the computer 100 to operate in a dusty, humid, or watery environment. The environmentally secure enclosure 170 can be extendable to accommodate additional sensors attached to the computer 100 or include environmentally sealable electrical/communication ports through which external sensors and other input or output devices can be connected to thereby couple such devices to the computer. The environmentally secure enclosure 170 can be large in size and capable of accommodating both the computer 100 as well as any external hardware coupled to the computer, such as an electrical component described in
The electrical component 200 can be a radio frequency sensor that can detect one or more mobile devices, such as a cell phone, a watch, a Fitbit, etc., in a surrounding environment, and can determine how the number of mobile devices in the surrounding environment varies over time. The electrical component 200 can be installed at a location such as a store, a shop, a restaurant, etc. By detecting the mobile devices in the surrounding environment, the electrical component 200 can monitor the number of visitors at the location and how that number varies over time. Consequently, the electrical component 200 can determine peak occupancy times at the location.
The electrical component 200 can be an environmental sensor that can measure one or more properties of a surrounding environment such as temperature, humidity, and/or pollution. The electrical component 200 can gather the environmental data. The electrical component 200 can analyze how the properties of the surrounding environment vary over time or can send the environmental data to a cloud computer for further analysis.
The electrical component 200 can also be a transceiver configured to communicate using an IoT communications protocol such as Bluetooth, LTE, 5G, NB-IOT, ZigBee, Z-Wave, IEEE 802.15.4, etc. For example, the electrical component 200 can communicate with a nearby device using NB-IOT to allow the computer 100, along with the electrical component 200, to be used as a hub controlling IoT devices in a home or an office.
Due to the small size of the computer 100, the computer along with the electrical component 200 can be carried in a backpack or mounted on a vehicle, such as a bike, a scooter, a car, or a bus, and can be carried throughout a geographic area to collect data from multiple sensors scattered about the geographic area. For example, the computer 100 and electrical component 200 can collect data about signal strength of an LTE or a 5G network to inform whether and where additional cell towers and/or sectors need to be installed.
In another example, the computer 100 and electrical component 200 can gather data from multiple sensors even cheaper than the electrical component 200 that measure environmental properties such as pollution, temperature, wind speed, humidity, etc. The computer 100, to preserve power, can enter a low power mode until the computer approaches an area populated with cheap sensors, from which readings need to be gathered. Upon entering an area known to have multiple cheap sensors, the computer 100 can receive a wake-up signal and can ping the cheap sensors to transmit their data to be gathered and stored at the computer 100.
Multiple computers 100 can be networked together as well and still be portable. The multiple computers 100 can be tasked to perform different collections by collecting data from different sensors. In one embodiment, multiple computers 100 can have various sensors attached to them and can each collect various measurements. One computer 100 among the multiple computers can be the coordinator computer. The coordinator computer 100 can collect and store data from the various computers 100 having various sensors collecting measurements.
The computer 100 can collect data in moving vehicles via in-vehicle diagnostic interfaces. The computer 100 can collect gas and/or atmospheric data (such as carbon monoxide levels) in building locations where power is inaccessible. The computer 100 can act as a motion or traffic counter in outdoor spaces. Three computers 100 equipped with radiofrequency (RF) radios can be networked together and used to triangulate signals from devices in communication with the three computers 100.
The computer 100 can gather the data and perform the computation using the processor 150 locally, without the need to send the data to a remote processor. The advantage of performing the computation locally, within the computer 100, is that the computer 100 can operate without an Internet or a cellular connection or with only an intermittent connection. Even if the computer 100 is reliably connected to a network, such as the Internet, the network bandwidth consumption is reduced because the data is processed locally and does not have to be transmitted through the network. In other words, the computer 100 performs data-intensive processing locally and need only provide the results of the processing externally, such as analyzing a large data set of environmental data collected locally and sending only statistically processed data via the cellular network. Further, the response time between requesting a computation and obtaining the result of the computation is improved because the computation is performed locally, without the need to transmit data to a remote cloud server to perform the computation and then transmit the results of the computation to the computer 100.
The device can store in a flash or a PROM memory a base OS version and drivers for the touch screen, GPIO pins, USB ports, and the modem. Further, the memory can store a simple application, launched at startup, that detects a strongest or best cell signal and automatically attempts to register the device with the cellular network, including asking the user for login credentials (e.g. user ID and password).
The base OS version can be the latest stable build of Linux with additional drivers for the display and modem. The modem 120 can be configured to access a predetermined cellular network, such as a T-Mobile network. Periodically, telemetry can be performed on the computer 100 so that customer support can identify the computer or device 100 on the network, even if a user hasn't logged in. The computer 100 can have a pre-provisioned eSIM with access to the cellular network. A startup application can direct an end-user to sign up with a plan or enter their cellular network credentials to sign into to an existing billing plan. The computer 100 can access a software repository with additional applications that the end-user can download from T-Mobile, which may include updates to the existing applications and further applications built after the device 100 ships.
To connect the modem 520 to the telecommunication network 500, through connections 530, 540, the modem 520 needs to be programmed using a modem AT command set, which is difficult to learn and can slow down or even discourage rapid prototyping. To address this issue, the software running on the electronic device 510 includes an abstraction layer 550 subsuming the modem AT command set, where the abstraction layer provides a higher-level functionality than the modem AT command set. The abstraction layer 550 is an API constructed based on the AT command set. A function associated with the abstraction layer can include multiple function calls to the modem AT command set.
The abstraction layer 550 can include multiple layers, at least one of which can be written in C++. The abstraction layer 550 provides bindings for other programming languages such as NodeJS, JavaScript and Python, as well as integration with a visual programming language such as Node-RED or Scratch. The abstraction layer 550 can enable the user to communicate with the modem 520 in a simplified way. For example, the user can, without issuing specific AT commands or without having to know them, instruct the modem to place a phone call or send or receive a text message, multimedia messaging service (MMS), or data. Using the abstraction layer 550, the user can interact with the modem in a modern programming language such as C++, Python, or JavaScript. In addition, through the abstraction layer 550 the user can interact with the modem using a visual programming language such as Node-RED, making the abstraction layer uniquely suitable for students and laymen.
To establish the connection 530, 540 between the electronic device 510 and the telecommunication network 500, the electronic device 510 can receive an input indicating an instruction to initiate the connection and can invoke a particular function associated with the abstraction layer to establish the connection between the modem and the telecommunication network.
To connect the electronic device 610 to a telecommunication network, the user can instantiate a connection node 620 in the browser-based visual programming tool 600. Upon executing the connection node 620, the electronic device 610 connects to the telecommunication network.
The electronic device 610 can provide a custom installation script configured to install the browser-based visual programming tool 600 on the electronic device 610. Upon installing the browser-based visual programming tool 600, the user can instantiate and run a single connection node 620, thus connecting the electronic device 610 to the telecommunication network.
Column 700 includes some of the common tasks to be completed. For example, the task 730 can be “configure the modem to connect to a cellular network.” Column 710 shows the AT commands that the user needs to be provided to the modem in order to complete the task 730. Column 720 shows the equivalent C++ code made possible by the disclosed technology. Similar commands also exist for NodeJS and Python. The equivalent Node-RED commands can be a node as shown in
In step 800, a hardware or software processor associated with the electronic device and executing instructions described in this application can create an abstraction layer or application programming interface subsuming the modem AT command set, as shown in
The higher-level functionality includes a binding to multiple programming languages, and a visual programming user interface. The multiple programming languages can include such as Python, JavaScript and/or NodeJS. The visual programming language can include Node-RED and/or Scratch. The function associated with the abstraction layer includes multiple function calls to the modem AT command set. In other words, the higher-level functionality can replace multiple AT commands with a single call to the higher-level programming language or a single node in the visual programming user interface.
For example, as shown in
In step 810, the processor can receive an input indicating an instruction to initiate a connection between the modem and the telecommunication network. In step 820, the processor can invoke a particular function associated with the abstraction layer to establish the connection between the modem and the telecommunication network.
To increase the ease of use and speed of prototyping, the electronic device can provide a custom installation script configured to provide a browser-based visual programming tool on the electronic device enabling visual programming by instantiating nodes associated with the browser-based visual programming tool. The browser-based visual programming tool includes multiple nodes associated with the abstraction layer. When an instantiated node is executed, the electronic device performs instructions contained in the instantiated node. In addition, multiple instantiated nodes can be wired together as explained in
To increase the ease of use and speed of prototyping, the electronic device can provide a browser-based visual programming tool on the electronic device enabling visual programming by instantiating nodes associated with the browser-based visual programming tool, as explained above and in relation to
Similarly, to increase the ease of use and speed of prototyping, the electronic device can provide a custom installation script configured to provide a high-level programming language on the electronic device enabling high-level programming by executing functions associated with the high-level programming language. The high-level programming language includes multiple functions associated with the abstraction layer. The high-level programming language can be Python, JavaScript, and/or NodeJS. When a function of the high-level programming language is executed the electronic device performs instructions contained in the function. When the function includes AT commands to establish a connection, upon executing the function, the electronic device is connected to the telecommunication network.
The visual programming layer 940 can make calls to the high-level programming language provided by the language bindings layer 930. The language bindings layer 930 in turn calls the C++ layer 920, which in turn calls the AT command set 910.
The terms “example,” “embodiment,” and “implementation” are used interchangeably. For example, reference to “one example” or “an example” in the disclosure can be, but are not necessarily, references to the same implementation, and such references mean at least one of the implementations. The appearances of the phrase “in one example” are not necessarily all referring to the same example, nor are separate or alternative examples mutually exclusive of other examples. A feature, structure, or characteristic described in connection with an example can be included in another example of the disclosure. Moreover, various features are described, which can be exhibited by some examples and not by others. Similarly, various requirements are described, which can be requirements for some examples but not other examples.
The terminology used herein should be interpreted in its broadest reasonable manner, even though it is being used in conjunction with certain specific examples of the invention. The terms used in the disclosure generally have their ordinary meanings in the relevant technical art, within the context of the disclosure, and in the specific context where each term is used. A recital of alternative language or synonyms does not exclude the use of other synonyms. Special significance should not be placed upon whether or not a term is elaborated or discussed herein. The use of highlighting has no influence on the scope and meaning of a term. Further, it will be appreciated that the same thing can be said in more than one way.
Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense, as opposed to an exclusive or exhaustive sense; that is to say, in the sense of “including, but not limited to.” As used herein, the terms “connected” or “coupled,” or any variant thereof, means any connection or coupling, either direct or indirect, between two or more elements; the coupling or connection between the elements can be physical, logical, or a combination thereof. Additionally, the words “herein,” “above,” and “below,” and words of similar import, can refer to this application as a whole and not to any particular portions of this application. Where context permits, words in the above Detailed Description using the singular or plural number may also include the plural or singular number, respectively. The word “or” in reference to a list of two or more items covers all of the following interpretations of the word: any of the items in the list, all of the items in the list, and any combination of the items in the list. The term “module” refers broadly to software components, firmware components, and/or hardware components.
While specific examples of technology are described above for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. For example, while processes or blocks are presented in a given order, alternative implementations can perform routines having steps, or employ systems having blocks, in a different order, and some processes or blocks may be deleted, moved, added, subdivided, combined, and/or modified to provide alternative or sub-combinations. Each of these processes or blocks can be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks can instead be performed or implemented in parallel, or can be performed at different times. Further, any specific numbers noted herein are only examples such that alternative implementations can employ differing values or ranges.
Details of the disclosed implementations can vary considerably in specific implementations while still being encompassed by the disclosed teachings. As noted above, particular terminology used when describing features or aspects of the invention should not be taken to imply that the terminology is being redefined herein to be restricted to any specific characteristics, features, or aspects of the invention with which that terminology is associated. In general, the terms used in the following claims should not be construed to limit the invention to the specific examples disclosed herein, unless the above Detailed Description explicitly defines such terms. Accordingly, the actual scope of the invention encompasses not only the disclosed examples, but also all equivalent ways of practicing or implementing the invention under the claims. Some alternative implementations can include additional elements to those implementations described above or include fewer elements.
Any patents and applications and other references noted above, and any that may be listed in accompanying filing papers, are incorporated herein by reference in their entireties, except for any subject matter disclaimers or disavowals, and except to the extent that the incorporated material is inconsistent with the express disclosure herein, in which case the language in this disclosure controls. Aspects of the invention can be modified to employ the systems, functions, and concepts of the various references described above to provide yet further implementations of the invention.
To reduce the number of claims, certain implementations are presented below in certain claim forms, but the applicant contemplates various aspects of an invention in other forms. For example, aspects of a claim can be recited in a means-plus-function form or in other forms, such as being embodied in a computer-readable medium. A claim intended to be interpreted as a means-plus-function claim will use the words “means for.” However, the use of the term “for” in any other context is not intended to invoke a similar interpretation. The applicant reserves the right to pursue such additional claim forms in either this application or in a continuing application.
The computer medium can include multiple media (e.g., a centralized/distributed database and/or associated caches and servers) that store one or more sets of instructions. The machine-readable (storage) medium can include any medium that is capable of storing, encoding, or carrying a set of instructions for execution by the computing system. The machine-readable medium can be non-transitory or comprise a non-transitory device. In this context, a non-transitory storage medium can include a device that is tangible, meaning that the device has a concrete physical form, although the device can change its physical state. Thus, for example, non-transitory refers to a device remaining tangible despite this change in state.
Number | Name | Date | Kind |
---|---|---|---|
5758081 | Aytac | May 1998 | A |
5889954 | Gessel et al. | Mar 1999 | A |
6134515 | Skogby | Oct 2000 | A |
6226286 | Danne et al. | May 2001 | B1 |
6343263 | Nichols et al. | Jan 2002 | B1 |
6363411 | Dugan et al. | Mar 2002 | B1 |
6594480 | Montalvo et al. | Jul 2003 | B1 |
6611584 | Khello et al. | Aug 2003 | B1 |
6721282 | Motley | Apr 2004 | B2 |
6788933 | Boehmke et al. | Sep 2004 | B2 |
6804711 | Dugan et al. | Oct 2004 | B1 |
6975705 | Boehmke et al. | Dec 2005 | B2 |
7061923 | Dugan et al. | Jun 2006 | B2 |
7080144 | Boehmke | Jul 2006 | B2 |
7099660 | Boehmke | Aug 2006 | B2 |
7137565 | Van et al. | Nov 2006 | B2 |
7634764 | Heinz | Dec 2009 | B2 |
7756475 | Rambo | Jul 2010 | B2 |
7894400 | Rahman et al. | Feb 2011 | B2 |
7913223 | Taber | Mar 2011 | B2 |
7991398 | Rune | Aug 2011 | B2 |
8005112 | Agmon et al. | Aug 2011 | B2 |
8036600 | Garrett et al. | Oct 2011 | B2 |
RE43046 | Bourgart | Dec 2011 | E |
8160565 | Wang et al. | Apr 2012 | B2 |
8271944 | Austin et al. | Sep 2012 | B2 |
8416769 | Lewis | Apr 2013 | B2 |
8498401 | Shafique | Jul 2013 | B2 |
8634302 | Khawer et al. | Jan 2014 | B2 |
8953488 | Puthenpura et al. | Feb 2015 | B2 |
9087296 | Sakunkoo et al. | Jul 2015 | B2 |
9148288 | Stewart | Sep 2015 | B2 |
9330511 | Webber et al. | May 2016 | B2 |
9332579 | Scherer et al. | May 2016 | B2 |
9413829 | Scherer et al. | Aug 2016 | B2 |
9473985 | Mattsson et al. | Oct 2016 | B2 |
9565318 | Tapia et al. | Feb 2017 | B2 |
9565629 | Ljung | Feb 2017 | B2 |
9608830 | Perez Martinez et al. | Mar 2017 | B2 |
9820089 | Annamalai | Nov 2017 | B2 |
9838483 | Mcmurry et al. | Dec 2017 | B2 |
10057844 | Lau | Aug 2018 | B2 |
10117090 | Jahangir et al. | Oct 2018 | B2 |
10200943 | Garcia Martin et al. | Feb 2019 | B2 |
10225746 | Mohammed et al. | Mar 2019 | B2 |
10291689 | Parikh et al. | May 2019 | B2 |
10349454 | Elbaz et al. | Jul 2019 | B1 |
10420162 | Gunnarsson et al. | Sep 2019 | B2 |
10536466 | Griffin | Jan 2020 | B1 |
10735553 | Johnston et al. | Aug 2020 | B2 |
10805791 | Synal et al. | Oct 2020 | B2 |
10869162 | Annamalai | Dec 2020 | B2 |
10880385 | Bugenhagen et al. | Dec 2020 | B2 |
10904398 | Kumar et al. | Jan 2021 | B1 |
10952274 | Gunnarsson et al. | Mar 2021 | B2 |
11115537 | Liu | Sep 2021 | B1 |
20020054629 | Roos | May 2002 | A1 |
20020083166 | Dugan et al. | Jun 2002 | A1 |
20020119771 | Boehmke et al. | Aug 2002 | A1 |
20020126822 | Boehmke et al. | Sep 2002 | A1 |
20020136224 | Motley | Sep 2002 | A1 |
20030101447 | Nathan et al. | May 2003 | A1 |
20050109837 | Van et al. | May 2005 | A1 |
20050141492 | Chan | Jun 2005 | A1 |
20050195854 | Agmon et al. | Sep 2005 | A1 |
20050249139 | Nesbit | Nov 2005 | A1 |
20060276131 | Rambo | Dec 2006 | A1 |
20070115898 | Stein | May 2007 | A1 |
20070197222 | Rune | Aug 2007 | A1 |
20070206750 | Bedingfield | Sep 2007 | A1 |
20080198804 | Rahman et al. | Aug 2008 | A1 |
20090028131 | Chowdhury et al. | Jan 2009 | A1 |
20090217097 | Laperi et al. | Aug 2009 | A1 |
20100093396 | Roundtree | Apr 2010 | A1 |
20100284335 | Raty | Nov 2010 | A1 |
20100296508 | Lewis | Nov 2010 | A1 |
20100305931 | Fordham | Dec 2010 | A1 |
20110280187 | Meyer | Nov 2011 | A1 |
20110294489 | Wang et al. | Dec 2011 | A1 |
20120026865 | Fan et al. | Feb 2012 | A1 |
20120028636 | Khawer et al. | Feb 2012 | A1 |
20120093075 | Derkach et al. | Apr 2012 | A1 |
20120147782 | Puthenpura et al. | Jun 2012 | A1 |
20120278378 | Lehane et al. | Nov 2012 | A1 |
20130022193 | Shafique | Jan 2013 | A1 |
20130100913 | Scherer et al. | Apr 2013 | A1 |
20130111046 | Scherer et al. | May 2013 | A1 |
20130166440 | Aguilar et al. | Jun 2013 | A1 |
20130198396 | Scherer et al. | Aug 2013 | A1 |
20130223432 | Cook | Aug 2013 | A1 |
20130229948 | Stewart | Sep 2013 | A1 |
20130235822 | Scherer et al. | Sep 2013 | A1 |
20130308511 | Ljung | Nov 2013 | A1 |
20140304214 | Sakunkoo et al. | Oct 2014 | A1 |
20150061826 | Webber et al. | Mar 2015 | A1 |
20150067807 | Williams et al. | Mar 2015 | A1 |
20150195006 | Dardenne et al. | Jul 2015 | A1 |
20150373391 | Naik Atul | Dec 2015 | A1 |
20160057209 | Parikh et al. | Feb 2016 | A1 |
20160135139 | Jahangir et al. | May 2016 | A1 |
20170208016 | Lehane et al. | Jul 2017 | A1 |
20170215135 | Lau | Jul 2017 | A1 |
20180011694 | Al-Fuqaha | Jan 2018 | A1 |
20180070204 | Annamalai | Mar 2018 | A1 |
20180132301 | Gunnarsson et al. | May 2018 | A1 |
20180146068 | Johnston et al. | May 2018 | A1 |
20190208404 | Georgiev | Jul 2019 | A1 |
20190273635 | Mcnamee et al. | Sep 2019 | A1 |
20190357293 | Gunnarsson et al. | Nov 2019 | A1 |
20200028744 | Rice et al. | Jan 2020 | A1 |
20200220791 | Aiello et al. | Jul 2020 | A1 |
20200288516 | Elbaz et al. | Sep 2020 | A1 |
20200296578 | Synal et al. | Sep 2020 | A1 |
20210014673 | Synal et al. | Jan 2021 | A1 |
20210105364 | Kumar et al. | Apr 2021 | A1 |
20220263917 | Simons | Aug 2022 | A1 |
20220308841 | Coil | Sep 2022 | A1 |
Number | Date | Country |
---|---|---|
2303987 | Nov 2008 | CA |
104699426 | Jun 2015 | CN |
110999258 | Apr 2020 | CN |
1273992 | Jan 2003 | EP |
201018201 | May 2010 | TW |
Entry |
---|
Simone Mora, RaploT Toolkit: Rapid Prototyping of Collaborative Internet of Things Applications, 2016, pp. 1-8. https://dl.acm.org/doi/abs/10.1016/j.future.2018.02.030 (Year: 2016). |
Francesco Gianni, Rapid Prototyping Internet of Things Applications for Augmented Objects: The Tiles Toolkit Approach, 2019, lines 1-16. https://ntnuopen.ntnu.no/ntnu-xmlui/handle/11250/2590468 (Year: 2019). |