You are on page 1of 29

Implementing a Mica2 MOTE Sensor Network

Crossbow - Mica2 MOTE

Mark Bramwell mjbramwe@uwaterloo.ca The University of Waterloo Waterloo, Ontario, Canada

July 2006

Acknowledgements
This document was prepared in partial fulfillment of a course project, CS-848 Query Processing for Emerging Applications presented by Professor Ihad IIyas. Professor IIyas is a member of the Database Systems Research Group within the Department of Computer Science at the University of Waterloo. I would like to thank Professor IIyas for providing the Crossbow Mica2 motes used throughout the duration of the project. The University of Waterloo is located within the city of Waterloo, Ontario, Canada. Crossbow Technology Inc is a manufacturer of Wireless Sensor Network hardware and is headquartered in San Jose, California, USA.

Table of Contents
Acknowledgements........................................................................................................................................ i INTRODUCTION ................................................................................................................................................. 1 Overview ................................................................................................................................................... 1 System Requirements ............................................................................................................................... 2 Software ................................................................................................................................................ 2 Hardware .............................................................................................................................................. 2 SOFTWARE INSTALLATION ................................................................................................................................... 3 Overview ................................................................................................................................................... 3 Installing UCB TinyOS 1.1.11 ..................................................................................................................... 4 The fi step ....................................................................................................................................... 4 rst Post Installation procedures ................................................................................................................ 5 Updating to TinyOS 1.1.15 cvs build ......................................................................................................... 6 Checking the TOS Installation ................................................................................................................... 7 Building the java tools............................................................................................................................... 8 Setting the Radio Frequency ..................................................................................................................... 8 The TinyDB GUI ......................................................................................................................................... 9 Compiling the TinyDB GUI for the PC .................................................................................................... 9 Starting the TinyDB GUI on the PC ........................................................................................................ 9 HARDWARE INSTALLATION ................................................................................................................................ 10 Overview ................................................................................................................................................. 10 Switch Settings ........................................................................................................................................ 10 MICA2 Mote Settings .......................................................................................................................... 10 MIB510CA Programmer Settings ........................................................................................................ 10 Testing the Motes ................................................................................................................................... 11 Overview ............................................................................................................................................. 11 Connecting the hardware ................................................................................................................... 11 Making MicaHWVerify ........................................................................................................................ 11 Programming MicaHWVerify via the MIB510CA programmer ........................................................... 12 Hardware COMMS check .................................................................................................................... 12

ii

MICA2 Radio Test .................................................................................................................................... 13 Installing TinyDB onto the motes............................................................................................................ 14 Overview ............................................................................................................................................. 14 Compiling and installing TinyDB.......................................................................................................... 14 Storing the Results Data in PostgreSQL (Optional) ................................................................................. 15 EXPERIMENTING WITH TINYDB .......................................................................................................................... 17 Overview ................................................................................................................................................. 17 Starting the TinyDB GUI on the PC .......................................................................................................... 17 Displaying the Topology .......................................................................................................................... 17 Simple Queries ........................................................................................................................................ 19 Correlation of Attributes Experiment ..................................................................................................... 21 APPENDIX....................................................................................................................................................... 25 Interesting Web Sites .............................................................................................................................. 25

iii

INTRODUCTION
Overview
This document describes how to implement a Wireless Sensor Network using Mica2 Motes loaded with TinyOS and TinyDB1. It is assumed that the motes are not currently programmed with TinyDB. When all of the software installation steps are completed, the operator will be able to use a Microsoft Windows based PC to insert SQL-like queries into the Sensor Network, perform some measurements and have the results returned to the base PC.

A Wireless Sensor Network

TinyOS + TinyDB is a declarative Database for Sensor Networks. WEB: http://telegraph.cs.berkeley.edu/tinydb/

System Requirements
Although it is possible to run the software under Linux or Microsoft Windows, all examples in this guide will assume that the PC is 450mhz or better and is running Microsoft Windows XP with Service Pack2. TinyOS and TinyDB has three major components. 1. A java based Graphical User Interface (GUI) that runs on a MS Windows based PC 2. A Compiled C program that runs as an embedded application on the mote (flashed as firmware) 3. A software development environment that allow creation of the above 2 items

Software TinyOS is extremely sensitive to hardware and software configurations. The system has many dependencies that rely on specific versions of software components. Using older or newer versions of a particular component may cause incompatibilities resulting in the system refusing to build and execute. This document includes a CD-ROM that contains all of the necessary software components to build a system from the ground up and allows you to perform some simple experiments.

Hardware The hardware used in this guide was a selection of MICA2 Motes from Crossbow Technology Inc2. The Motes were model MPR400CB using the CC1000 900mhz data radio. The sensor boards used were the MTS300CA which enables the mote to measure temperature, sound and light in addition to the battery voltage (used to power the Motes). The base station interface unit, model MIB510CA, is RS232 based and serves two main purposes (1) It allows the user to reprogram any mote by plugging the mote directly into the base (2) operates as part of the root node interface giving the PC a data conduit onto the radio based sensor network.

Mica2 Mote

Sensor Board

Base Interface

Crossbow Technology Inc is a manufacturer of RF Sensor Network hardware and software WEB: www.xbox.com

NOTE: The MIB510CA interface must be connected to the PC via RS232. Many modern laptops are being produced without a serial/RS232 interface (DE9 port). If your laptop does not have such a port, you must use an USB to Serial Adapter such as the Startech ICUSB232 (pictured below).

RS232 (Back of laptop)

USB to RS232 cable

SOFTWARE INSTALLATION
Overview
This section will describe how to install the UBC TinyOS + TinyDB software onto a PC running WindowsXP.

The following steps will be performed: 1. 2. 3. 4. 5. 6. Install UCB TinyOS 1.1.11 Upgrade to TinyOS 1.1.15 Perform various fix-ups on the source code Compile, Load and Run Mote Hardware Verification software Compile and Load TinyDB software Perform some experiments to verify that the system is running

Installing UCB TinyOS 1.1.11


The f rststep i The first step is to install the base system of TinyOS. All of the required files can be found on the included CDROM or downloaded from the following website: http://www.tinyos.net/dist-1.1.0/tinyos/windows/

The installer is called tinyos-1.1.11-3is.exe. It is suggested that you perform a complete installation and stay with the default settings.

HINT: Have patience when starting the installer. It performs some system checks that can take up to 1 minute to complete; eventually the splash screen pictured above will appear. Depending on the speed of the machine and whether or not anti-virus software is installed3, it can take up to 15 minutes for the Installer to complete all steps.

Anti-virus software will dramatically slow down the installation as it scans thousands of files, many of them java source files which tend to be targets of virus writers. The Installer contains no viruses.

Post Installation procedures You should now have a Windows Program Group caled Cygw i Start the l n. Cygw i bash shelw hi w il n l ch l give you a Unix-like environment under Windows.

I you do not recei the error,ski thi secti and go di f ve p s on rectl to the dati Ti S 1. 15 cvs buid y U ng nyO 1. l . The first time you start the bash shell, it is possible that an error will be printed complaining about some missing security files. Not every installation of TinyOS receives the error pictured above, it depends on what networking protocols are configured into your PC and if you are authenticating against a network server (such as Microsoft Active Directory).

As suggested by the error message pictured above, run the following 2 commands: 1. mkpasswd l d 2. mkgroup l d > /etc/passwd > /etc/group

After the commands have completed, exit the shell and open a new one. A completely different set of messages will appear. The output should look similar to the picture below:

Once again you should exit the shell. You have completed the initial installation of the base software.

Updating to TinyOS 1.1.15 cvs build


Now that TinyOS 1.1.11 is installed, the system should be immediately upgraded to version 1.1.15. Open a new cygw i bash shelw i n l ndow . You must change the working directory to the same directory that contains the updated RPM file.

1. Determine where the CDROM is mounted by typing the command: mount 2. Change the working directory to the software directory. In my case, the CDROM was Windows drive E: which was mounted as /cygdrive/e That means the entire command for my machine was: cd /cygdrive/e/software

3. Install the updated system: rpm --force -ivh --ignoreos *.rpm

HINT: Expect the upgrade to take up to 5 minutes to complete.

Checking the TOS Installation


It is important that the development environment is capable of compiling applications without difficulty. The TinyOS distribution includes a program that will verify the configuration of your machine and will report back if any errors are found. The test must complete without errors, do not continue to any other steps in this document if you have errors in your configuration. To test your softw are confi gurati start a on, cygw i bash sheland type the f l i command: n l olow ng toscheck Most likely you will receive an error the first time you test your system. The CLASSPATH error is caused by a configuration issue with the java environment and will look similar to the screen shot pictured below.

To fix this problem, you must edit one of the configuration files and make a few changes. Using whatever editor is familiar to you, edit /opt/tinyos-1.x/tools/java/javapath Line 41 was this: unshift @add, "."; But should be this: #unshift @add, ".";

More edits on next page

Lines 57 & 60 were this: print "$addpath;$oldpath\n"; But should be this: print "$addpath;$oldpath;.\n"; Line 64 was this: print "$addpath\n"; But should be this: print "$addpath;.\n"; After you have made the edits to the file, save them and exit the shell. Open a new shell and re-run the toscheck. It should now complete without errors

Building the java tools


This step compiles the java tools. Type in the commands below and wait for them to complete: cd /opt/tinyos-1.x/tools/java make cd /opt/tinyos-1.x/tools/java/jni make install HINT: Expect this step to take less than 5 minutes to complete.

Setting the Radio Frequency


The MICA2 platform can be purchased with a variety of radio chipsets. It is important that the proper frequency range is configured into the source code. The chip used on the MPR400CB,MICA2,900MHZ is the CC1000 running at 900mhz. Using whatever editor is familiar to you, edit the configuration constants for the MICA2 radio frequency Filename: opt/tinyos-1.x/tos/platform/mica2/CC1000Const.h Starting at Line 214, change the file to look like the following: #ifdef CC1K_DEFAULT_FREQ #define CC1K_DEF_PRESET (CC1K_915_998_MHZ) #endif #ifdef CC1K_MANUAL_FREQ #define CC1K_DEF_FREQ (CC1K_915_998_MHZ) #endif #ifndef CC1K_DEF_PRESET #define CC1K_DEF_PRESET (CC1K_915_998_MHZ) #endif

The TinyDB GUI


Compiling the TinyDB GUI for the PC The TinyOS + TinyDB system is comprised of 2 major components. One part of the system runs as a java application on the ROOT PC providing the menus and graphing environment; the other part of the system runs as compiled C code on the motes themselves.

To compile the java GUI for the PC, type the following commands: cd /opt/tinyos-1.x/tools/java/net/tinyos/tinydb/ make Starting the TinyDB GUI on the PC The following commands will start the TinyDB GUI on the PC: cd /opt/tinyos-1.x/tools/java java net.tinyos.tinydb.TinyDBMain

WARNING: The commands listed above are case sensitive. They must be entered exactly as shown otherw i a ava.ang. oCl se j l N assD efFoundErrorm essage w ilbe di ayed and the system w ilrefuse to l spl l start. HINT: If you are using anything but COM1, you will receive an error when the GUI tries to start. The resolution is to modify the Tinydb configuration file to point to the proper com port. As an example, on one particular laptop running an USB-to-Serial adapter, Windows XP assigned COM4 to the device. The reference from COM1 had to be changed to COMx (where in this case x=4). The filename that required modification was: /opt/tinyos-1.x/tools/java/net/tinyos/tinydb/tinydb.conf tinydb.conf Line 28 used to have this: comm.string:serial@COM1$57600 tinydb.conf Line 28 now has this: comm.string:serial@COM4$57600 After the modification was completed, java was able to start TinyDB without difficulty.

HARDWARE INSTALLATION
Overview
This section of the document will describe the steps required to setup, test and program the MICA2 hardware with the appropriate codes.

Switch Settings
MICA2 Mote Settings The MICA2 platform has a single slide switch. It is the power switch for the batteries. Various websites state that the batteries should not be installed while programming the motes because the programmer board provides the power while the mote is connected.

The circuit diagram contained in the Crossbow manual MPR-MIB_Series_Users_Manual.pdf clearly shows that the slide switch disconnects the batteries when in the OFF position. That said, it is unnecessary to remove the batteries IF you ensure that the slide switch is always in the OFF position whenever the mote is plugged into the MIB510CA programmer. During normal operation (not connected to the programmer), slide the switch to the ON position which will provide battery power to the mote. WARNING: Do not attempt to power the mote from both the on-board batteries as well as the programmer board. Always slide the MICA2 power switch to OFF while connected to the programmer. MIB510CA Programmer Settings The programmer has a single slide switch that affects how data is sent on the serial com port. It must be in the OFF position to both program and use the motes.

10

Testing the Motes


This section will describe how to test the MICA2 mote hardware. Overview 1. Connect the hardware 2. Compile and load a program onto the MICA2 3. Run an application on the PC that communicates with the MICA2 Connecting the hardware The programmer must be connected to the PC with a serial cable. If you do not have a serial port on your PC, an USB to Serial adapter must be used. All examples in this guide will assume you are connected to COM1: You must plug a MICA2 into the MIB510CA programmer. A sensor-board is not required for this test. The programmer must be powered via a wall adapter Both the MICA2 and the MIB510CA must have their slide switches set to OFF.

MICA2 plugged into MIB510CA programmer

Making MicaHWVerify O pen a cygw i bash sheland type the f l i com m ands: n l olow ng cd /opt/tinyos-1.x/apps/MicaHWVerify make mica2 At this point you now have a custom MICA2 compatible program ready to be programmed into the mote.

11

Programming MicaHWVerify via the MIB510CA programmer The previous step created an application ready for transferring into the MICA2. To write the firmware image to the MICA2 chip, type the following command: make mica2 reinstall mib510,/dev/ttyS0 NOTE: The above command is case sensitive. /dev/ttyS0 = com1 Hardware COMMS check This step will attempt to communicate with the MICA2. Make sure the slide-switches on both the programmer board and the MICA2 are set to OFF. To create the PC test program, type the following command: make f jmakefile To run the program and display a small report, type the following command: MOTECOM=serial@COM1:mica2 java hardware_check /dev/ttyS1=com2 /dev/ttyS2=com3 /dev/ttyS3=com4

It all goes well, you should see a small report that displays the Node Serial ID (as pictured below)

The commands listed above are case sensitive. Type them exactly as shown, the only deviation being the COM Port if you are not using COM1. It is helpful to perform this test on at least 2 MICA2 nodes.

12

MICA2 Radio Test


This test requires 2 MICA2 nodes. One unit will be used as the base root node and the 2nd node will be used as the remote node. During the test, the 2 nodes will communicate with each via the radio link. Node #1: Take one ofthe nodes that has passed the ardw are Com m s Check i H , nstal batteri and slde l es i the switch to ON. The lights on the MICA2 will start to blink, the node is now active! Node#0: This node will be our root node and will stay connected to the programmer board. It must have som e speci al base stati softw are program m ed onto the M I on CA2 in order for this test to operate correctly.

To compile and load the base station software onto the MICA2, type the following commands: cd /opt/tinyos-1.x/apps/TOSBase make mica2 make mica2 reinstall mib510,/dev/ttyS0

Re-run the ardw are Com m s Check H cd /opt/tinyos-1.x/apps/MicaHWVerify MOTECOM=serial@COM1:mica2 java hardware_check

The Node Serial ID report will be displayed. Notice that the ID of the remote node was displayed, not the Node ID of the MICA2 plugged directly into the base station. The base station acted as a data conduit passing the serial data onto the radio network; the remote node saw the data on the RF interface and responded.

Re-run the MOTECOM program with the remote node powered off. The test will appear to hang as it waits for a response from the remote node. Turn on the power on the remote node and the ID will be displayed within 5 seconds.

You have completed the hardware tests, you can now Proceed to the next stage and install TinyDB onto the motes.

13

Installing TinyDB onto the motes


Overview Each MICA2 must be programmed with an unique copy of the TinyDB software. One node is called the ROOT Node and during normal operation is always connected directly to the base station (MIB510CA programmer board). The Node ID of the ROOT Node is always zero. All other nodes must have an unique non-zero Node ID.

Compiling and installing TinyDB The following steps will compile and install TinyDB on each MICA2 node. 1. Change the working directory to the TinyDB directory: cd /opt/tinyos-1.x/apps/TinyDBApp

2. Compile and install a custom version of TinyDB for the ROOT node (Node#0) make mica2 install.0 mib510,/dev/ttyS0

3. Remove the ROOT Node and connect one of your remote nodes. The following command sets the N ode I to 1 and program s the M I D CA2 node. make mica2 reinstall.1 mib510,/dev/ttyS0

Repeat Step #3 until all MICA2 nodes have been programmed. Remember to increment the Node ID giving each node an unique number.

HINT: To avoid confusion, It is helpful to label the MICA2 nodes with a paper sticker. HINT: If you are not using COM1, you must use the appropriate driver name: /dev/ttyS0 = com1 /dev/ttyS1=com2 /dev/ttyS2=com3 /dev/ttyS3=com4

14

Storing the Results Data in PostgreSQL (Optional)


When TinyDB receives results from the Sensor Network, the data is stored and displayed within the TinyDB GUI as a spreadsheet. Although this is adequate for quick adhoc queries, it becomes difficult to access the data if queries are performed over an extended period of time. It may be desirable to have the data stored within a PostgreSQL database. PostgreSQL is an open source project offered as a free download from http://www.postgresql.org/ PostgreSQL is available on a wide variety of platforms including but not limited to Windows, Macintosh/OSX and Linux. It is beyond the scope of this document to try to describe how to install PostgreSQL server on your machine. It is suggested that the above website is used to download and install the software on the server platform of your choice. If you decide to use the Windows version of PostgreSQL, a full-screen graphical interface is provided in addition to the command line tools.

Screen shot of PostgreSQL Administrator running under Windows

15

Ti nydb requi a database to be created caled nydb An usernam e caled em ust be created and res l ti . l tel requi perm i on to access nydb res ssi ti . The PostgreSQL command to create the table is:
create table queries (query_table varchar(10), query_time timestamp, query_string varchar(500));

The TinyDB configuration file must be edited to reflect the username/password and location of the database. Configuration file: /opt/tinyos-1.x/tools/java/net/tinyos/tinydb/tinydb.conf %postgres server settings postgres-user:tele postgres-passwd:tiny postgres-db:task postgres-host:localhost

Once the changes have been made to reflect the true location and attributes of the PostgreSQL database, you will be able to use the [Log to Database] option in TinyDB.

Screen shot of TinyDB GUI with 'Log to Database' selected

16

EXPERIMENTING WITH TINYDB


Overview
This section deals with the usage of the Sensor Network. We will perform some simple queries that are desi gned to test the netw orks abii to recei and respond to queri as w el as the base stati s lty ve es l on ability to display the results. In the paper titled Model Driven Data Acquisition in Sensor Networks4 , it was suggested that there was a correlation between the values of certain attributes. An experiment will be conducted to investigate this claim.

Starting the TinyDB GUI on the PC


The following commands will start the TinyDB GUI on the PC: cd /opt/tinyos-1.x/tools/java java net.tinyos.tinydb.TinyDBMain

If the system refuses to start, refer to the section titled Ti B G U I i thi docum ent f m ore The nyD n s or information.

"Model Driven Data Acquisition in Sensor Networks"; Amol Deshpande, Carlos Guestrin, Samuel Madden, Joseph Hellerstein, and Wei Hong; VLDB 2004.

17

Displaying the Topology


The first test of the Sensor Network is to determine if indeed you have a network. When you start the TinyDB GUI, a screen similar to the picture below will appear.

Clicking on the [Display Topology] button causes the system to insert a query into the network that causes all nodes to respond. Their responses prove that a each node is alive and as well as embedded in the response is the layout of the network (parent child forwarding tree). Have patience when you attempt to display the topology. In a 8-node network, it can take up to 1 minute for the result to be displayed.

18

The Sensor N etw ork Topol ogyscreen pi ctured bel i a graphi representati ofthe l ow s cal on ayout ofthe sensor netw ork.The ghtattri Li bute i used to provi a vi s de suali cati of the attributes value. ndi on Node 0 is the ROOT Node and was plugged directly into the base station interface. All other nodes were scattered around three adjoining offices. The office containing Node#4 had the lights turned off (the room was dark) and the graph clearly shows a low value for that attribute. Node#2 was on the floor behind a desk in a shadow; the graph shows a darker (but not dark) region near that node. All other nodes were in brightly lit areas.

HINT: When the topology is first displayed, it might be difficult to read because the icons are either offscreen or piled on top of each other. Click on [Fit Network] to force the GUI to put all icons on the visible portion of the graph. You can then click and drag on the Laptop Icon or any Node Icon to move it to a more appropriate area of the graph.

19

Simple Queries
The strength of the TinyDB GUI is the ease in which the user can inject queries into the Sensor Network and have the results returned and displayed on the base station PC. Pictured below is the main screen of TinyDB. To start a query, scroll through the list of available attributes in box #1. Note that although the list contains all supported attributes, not all nodes will have the sensors installed to perform that measurement. Make sure you do not try to read from something that does not exist. When you double-click on an attribute in box #1, the attribute will appear in the listing in box #2 as well as a SQL-like query will be constructed in box #3. If you have clicked on something accidently, double-click on the attribute in box #2 to remove it from the list. When you have selected all of your desired attributes, click on #4 [Send Query] to start the querying of the network.

TinyDB Main Screen as seen on the base station PC

20

Once the query has been injected in the Sensor Network, the nodes will perform readings and send back the results to the base station PC connected to Node 0. A chart will be created in real-time that looks similar to the one pictured below.

Results being received and charted by TinyDB

The above graph represents the plot of light from 3 nodes over a period of 2,490 samples. NOTE: Have patience when you send a new query into the network. It can take over a minute for the query to be encoded, transmitted to all nodes and the for the first response to migrate through the network back to the base station PC. Once the results start to arrive, they will do so at the expected rate without delay.

21

Correlation of Attributes Experiment


In the paper titled Model Driven Data Acquisition in Sensor Networks5 , it was suggested that there was a correlation between the values of certain attributes. The paper offers the following table to show how much power (in Joules) is required to perform a sensor reading:

Attribute Power Reading Requirements

From the above table, we can clearly see that the amount of power required to perform a sensor reading of the temperature is many times higher than the amount of power required to measure the motes battery voltage. The paper claims that if we were to measure both the voltage and the temperature of a mote during a change in temperature, the plotted curve would show a correlation between the two values (both would rise or fall together). If this relationship exists, a reduction in power can be realized by frequently performing voltage measurements instead of temperature readings (refer to the paper for more detailed information). For those of us that have tried to start their automobile on a frigid Canadian winter morning, we already know that battery voltage seems to drop with temperature. However some analytical data showing evidence of this correlation is preferred.

"Model Driven Data Acquisition in Sensor Networks"; Amol Deshpande, Carlos Guestrin, Samuel Madden, Joseph Hellerstein, and Wei Hong; VLDB 2004.

22

In order to conduct this experiment, a method of cooling the mote is required. A small office refrigerator was used to chill the device.

Thermal Radiation Absorption Chamber with a Mica2 Mote

The Mica2 mote was placed into the refrigerator and the door was kept closed. Luckily the rubber seals on the refrigerator are wide enough to allow the radio signal to escape and it did not operate as a Faraday Cage6. Measurements were taken every 2 seconds over a period of approximately 40 minutes.

Over 1,200 sample readings were performed and reported back to the base PC via the Sensor Network

Note: Only a single Mica2 mote (in addition to the base station) was used during this experiment

A Faraday Cage would have blocked the radio signal from reaching the base station. For more information regarding Faraday Cages, see the following WEB link: http://en.wikipedia.org/wiki/Faraday_cage

23

The TinyDB GUI provides a graphing interface but it is not the best method of displaying the results from multiple attributes. The resulting data was read into Microsoft Excel and a graph of the two generated values was plotted.

Plot of Voltage versus Temperature over Time

The graph pictured above clearly shows that as the Mica2 was chilled over a period of 40 minutes, both the Temperature Sensor as well as the Voltage Sensor reported a drop in the returned attribute values. The results of this experiment validates the cl m s m ade by the authors of ai Model Driven Data Acquisition in Sensor Networkswhen those two specific sensors are used in that type of testing environment.

24

APPENDIX
Interesting Web Sites
Web Site containing this document and support files http://hamster.foxhollow.ca/TinyOS University of Waterloo, Computer Science Department http://www.cs.uwaterloo.ca/ Web Site of Professor Ihab IIyas http://www.cs.uwaterloo.ca/~ilyas/ TinyOS main support site http://www.tinyos.net/ TinyDB main support site http://telegraph.cs.berkeley.edu/tinydb/ Online Archive of TinyOS installation files. http://www.tinyos.net/dist-1.1.0/tinyos/windows/ Crossbow Technology Inc, manufacturer of Sensor Network hardware http://www.xbow.com/ PostgreSQL open source database software http://www.postgresql.org/ What is RS232 http://en.wikipedia.org/wiki/RS232

25

You might also like