Numato Lab’s NL-ETHG-C-016 module is a low cost easily deployable solution for connecting your PC to other electronic circuitry through a network. This GPIO module can be accessed through a simple web interface, Telnet, or HTTP commands. Ease of use and wider operating system compatibility are the primary goals behind this product’s design. This simplicity allows the use of off-the-shelf Terminal Emulation programs such as PuTTY, TeraTerm for controlling the module with a simple set of human-readable commands through TELNET, HTTP, or through an easy-to-use Web interface. For power users, this module can be controlled by writing programs in various programming languages.
- 16 TTL (3.3V) compatible GPIOs
- 10 Analog input channels (Multiplexed with GPIOs)
- 10 Bit Analog input resolution
- All GPIOs can be individually configured as input or output
- GPIO contacts available on easy to plug headers
- Can be controlled by using standard serial console applications through TELNET, web-interface, HTTP or custom applications
- readall/writeall support to read/update all GPIOs with a single command
Some of the possible uses of this module includes:
- Home Automation
- Industrial Automation
- Building automated test fixtures
- Add more IOs and Analog channels to industrial/modular computers
- Add more IOs and Analog channels to Raspberry Pi, Intel Edison, BeagleBone and similar CPU boards
- Add IOs to Android-based systems (Smartphones, Tabs and custom devices)
- DIY and Hobby
This product is compatible with the following operating systems:
- Windows XP and later versions (Windows 7, 8/8.1, 10 and future versions)
- Windows 7 Embedded and later
- Mac OS X
- Or any other operating system that supports USB CDC devices.
And these are some of the languages that can be used for programming:
- Visual Basic (VB6, VB2008, VB2010 express and other editions)
- Visual Basic for Applications (Microsoft Office VBA)
- And many more…
|Number of GPIOs||16|
|Number of analog inputs (Multiplexed with GPIOs)||10|
|Digital circuit power supply voltage (External)||12||V|
|Maximum IO source current : IO0, IO7 – IO15||2||mA|
|Maximum IO source current : IO1 – IO6||25||mA|
|Maximum IO sink current : IO0, IO7 – IO15||2||mA|
|Maximum IO sink current : IO1 – IO6||25|| mA
|GPIO input low voltage||0.15||V|
|GPIO input high voltage||3.3||V|
|GPIO output low voltage||0||V|
|GPIO output high voltage||3.3||V|
|Full scale range||0 – VDD||V|
|Recommended Impedance of Analog Voltage Source||2.5||KΩ|
* All parameters considered nominal. Numato Systems Pvt. Ltd. reserves the right to modify products without notice.
How to Use NL-ETHG-C-016
The following section describes how to use this module
Along with the module, you may need the items in the list below for easy and fast installation.
- CAT 5e Ethernet Cable(Straight through cable)
- 12V A DC power supply
- USB A to USB B cable
Use a Straight Through Ethernet cable for communication when connecting the board to a switch or router. A Crossover Ethernet Cable may be required in some situations if connecting directly to a PC/Laptop port. Use a USB A to B cable to connect the module to the PC to configure the module.
The following sections identify individual connections in detail.
The onboard USB Interface helps to communicate and configure this module seamlessly while connected to a PC. This module detects as COM port and the user can configure the module using any serial emulator program like PuTTY, TeraTerm, etc. Use FTDI drivers for the USB COM port device.
Use a USB A to B USB cable to connect to a PC. Please visit numato.com to buy cables and accessories for this product.
The onboard Ethernet port supports Ethernet 10 Mbps transmission speed that helps a computer to communicate and control this module easily. There are two basic network configurations for this board that can be used in two ways.
- Direct connection to Local Area Network(LAN) via straight-through Ethernet cable.
Eg: Connecting the module to a switch in a network.
- Direct connection to a PC through a cross-over Ethernet cable.
Eg: Connecting the module directly to the PC. Some PC/Laptops can detect and adapt to the cable type. In such situations, a straight-through cable also can be used.
FCT_RST Jumper is used to resetting the settings onboard to factory defaults. To execute the factory reset, please follow the steps below.
1. Power off the device.
2. Configure the FCT-RST Jumper to 2-3.
3. Power on the device.
4. Wait for 15-20 sec until the LED D5 onboard turns on.
5. Configure the FCT-RST Jumper back to 1-2.
6. Connect the module to a PC using the USB Cable.
7. Power off the board and back on.
8. Using any serial emulation software connect to the COM Port and ENTER.
9. Login using the config user name and password as “admin” and send a “reboot” command.
10. LED D5 will turn off and you can see the Config details on the terminal.
Please use this feature only for recovering the User name / Password. This action will reset the User name, Password, Device ID, and also other settings as well. After reset, the board can be accessed using the default User name and Password.
The factory default settings will be as below table.
|Config user name||admin|
|IP0 to IP9||255.255.255.255|
|MAC0 to MAC9||FF FF FF FF FF FF|
The module has 16 General Purpose IO pins that can be used for various custom applications. Some of these pins can be used as Analog to Digital Converter inputs as well. All IO pins support 3.3V TTL signals and the ADC input range is 0 to +3.3V. The ADC can acquire analog signal at the resolution of 10 bits per sample. It is recommended to use a series resistor with the GPIO/ADC pins when interfacing with other circuits. A 470 Ohms series resistor is recommended for current limiting when connecting LED to a GPIO.
In contrast to GPIOs Analog inputs can read voltages at any level between 0 to 3.3V volts. It is recommended to use a series resistor to protect the input from stray voltages and spikes. The internal Analog to Digital converter supports 10 bits resolution which is adequate for most applications.
The table below summarizes the GPIO and Analog to Digital Converter input positions on the header P6.
The table below summarizes the GPIO and Analog to Digital Converter input positions on the header P7.
Connect a DC power supply and power up the device as mentioned in the DC Power Supply section above. A red LED (PWR) will glow which indicates active power. For configuration over USB connect the module to a PC using a USB A to B cable. Also connect the module to a PC or a Switch/Router as mentioned in the Ethernet Interface section above. Run any serial terminal program like TeraTerm, PuTTY, etc.
NB: By default, the module is configured with factory settings. To login to USB configuration settings, users need to send a reboot command from telnet or do a factory reset.
Users will be prompted to enter the User name and Password. The default User name and Password is ‘admin‘. You may change the User name and Password once logged in.
If the user name and password are correct, we will be able to see the login successfully message.
Configuration Command Set
|1||usr||usr set xxxxxxxx||where x can be any alphanumeric character. The username can be 1-8 characters long.|
|usr get||Read the current username of telnet. The default username is "admin".|
|2||pass||pass set xxxxxxxx||Sets the new password for telnet, where x can be any alphanumeric character. The password can be 1-8 characters long.|
|pass get||Read the current password of telnet. The default password is "admin".|
|3||config usr||config usr set xxxxxxxx||Sets the new username for configuration over USB, where x can be any alphanumeric character. The username can be 1-8 characters long.
|config usr get||Read the current username of configuration over USB. The default username is "admin".|
|4||config pass||config pass set xxxxxxxx||Sets the new password for configuration over USB, where x can be any alphanumeric character. The password can be 1-8 characters long.|
|config pass get||Read the current password for configuration over USB. The default password is "admin".|
|5||telnet||telnet auth on/off||Enable and disable the telnet authentication. telnet auth on enabling the telnet authentication and telnet off disabling the telnet authentication.
|telnet auth get||Read the status of telnet authentication.|
|telnet port set xx||Sets the telnet port, where xx can be in the range of 00 to 99. The default value of telnet port is 23.
|6||access||access ip on/off||Enable or disabling the IP based access to the module, this command adds filtering. Once the command is enabled, the stored IP using the access ip set command will be able to access the module. By default access IP is disabled.|
|access ip set N xxx.xxx.xxx.xxx||Set the acceptable IP in the network and save the same. Where N is the number 0-9, maximum 10 IP we can store in the non-volatile memory.
Eg: access ip set 0 192.168.0. 2
|access ip get||Read the stored IP in the memory.|
|access mac on/off||Enable or disabling the MAC-based access to the module, this command adds filtering. Once the command is enabled, the stored MAC using the access mac set command will be able to access the module. By default access MAC is disabled|
|access mac set N XX XX XX XX XX XX||Set the acceptable MAC in the network and save the same. Where N is the number 0-9, maximum 10 MAC we can store in the non-volatile memory.
Eg: access mac set 0 D4 93 98 D2 4A 34
|access mac get||Reads the stored MAC in the memory.|
|7||dhcp||dhcp on/off||Enable or disable the DHCP of the module.|
|8||ip||ip set xxx.xxx.xxx.xxx||Sets the static IP to the module.
Eg: ip set 192.168.5.48
|ip get||Read the status of DHCP and the static IP. If DHCP is enabled it will display the DHCP status and if it is disabled it will display the static IP too|
|9||mac id get||mac id get||Read the MAC id of the module.|
|11||gpio||gpio poweron xxxx xxxx||This command is to control Power-On GPIO Direction and status in a single operation.
gpio poweron 0000 11c5 – Sets GPIOs IO direction and status respectively at each bit position according to the bits of the specified hexadecimal value.
IO direction: 0 – To set the GPIO as output mode & 1 – To set the GPIO as input mode.
IO status: 0 - To clear the GPIO & 1 - To set the GPIO.
‘0000 11c5’- (0000 0000 0000 0000) (0001 0001 1100 0101):
All GPIOs are set to output mode.
GPIO 0,2,6,7,8 & 12 are set to High
GPIO 1,3,4,5,9-11,13-14 & 15 are set to Low.
Powering Up NL-ETHG-C-016
Connect a DC power supply and power up the device as mentioned in DC Power Supply section above. A red LED (PWR) will glow which indicates active power. Connect the module to a Switch/Router as mentioned in the Ethernet Interface section above. Run Numato Lab Device Discoverer.jar, and click on Discover Devices. The window will display the IP address, Host Name, MAC Address, and Other information.
IP Address and MAC Address can be seen in the command prompt also, only after connecting the module through the web page. Open the command prompt and type the command ‘arp -a‘. This will display the available network interfaces and connected devices along with the MAC address and IP address of each device. Look for the IP address that corresponds to your device’s MAC address. The MAC address for each Relay Module is printed on a label on the board for your convenience. Use the IP address obtained in order to access the device.
Accessing the Module
The module can be controlled by using all of the three interfaces below.
- Through HTML/Web Page served from the device.
- Through a Serial Terminal Emulator that supports TELNET (Eg: Hyper terminal, Teraterm, PUTTY…)
- Through HTTP commands
Accessing the module using web interface
The easiest method for controlling the module is through web page served from the device. To open the administration web page, type in the IP address in to the address bar of any web browser and press enter.
You will prompted to enter User name and Password. The default User name and Password is ‘admin’. You may change the User name and Password once logged in.
Enter the default User name and Password then click OK.
You will be presented with the device home page that shows the status of GPIOs
GPIO Status and Control
This board has 16 general-purpose inputs/outputs and 10 analog inputs (multiplexed). Click on the GPIO/ADC link on the menu bar to access GPIO configuration page. The GPIOs can be turned on/off by clicking on the Toggle GPIO button next to the corresponding GPIO.
Individual GPIO can be configured in three modes.
- Digital Input(I/P)
- Digital Output(O/P)
- Analog Input
Analog Input (I/P)
To configure a GPIO as Analog Input, click on the corresponding GPIO’s Change Config button. Select Analog I/P radio and click the Submit button.
Individual GPIOs on the board can be turned on/off by clicking the Toggle GPIO button next to the corresponding index. The status change will be displayed on the page immediately for feedback.
10 GPIO pins can be used as Analog to Digital Converter inputs as well. The ADC input range is 0 to +3.3V. The ADC can acquire analog signal at the resolution of 10 bits per sample. It is recommended to use a series resistor with the GPIO/ADC pins when interfacing with other circuits.
Device Settings page displays the current firmware version, Device ID, Account Settings and Basic Network Settings. A logged-in user can change and save the Device ID, User name, Password and network settings.
In the above image, the firmware version is displayed as A0M01.01, default device ID 00000000, default User name and Password as ‘admin’. The user can change and save the Device ID, User name and Password as explained in command set or changing the appropriate field on this page and clicking on the save button on the right side. The User name and Password can be reset to factory defaults via Factory Reset explained elsewhere in this document. The Basic Network Settings Shows the Device MAC address, Host Name, and IP Address. The default hostname and IP Address can also be changed according to the user’s wish. After saving changes the board will reboot with the new network settings.
Controlling the module through TELNET interface
The simple set of ASCII based human readable command sets supported by this module makes controlling relays easy via TELNET protocol very easy. The following sections give examples of how to use the module with PuTTY and TeraTerm.
To use this module with PuTTY, please follow the steps below.
- Connect the module to the LAN.
- Open PuTTY and enter the IP address corresponding to the module, leaving the port number as 23.
- Click Open.
- If everything goes well, you should be presented with a screen as below.
- Type in the TELNET User name and Password when asked and press enter key.
- Commands listed in the table in section “Sending Commands” can be entered here now. For example, here is the response for “ver” command.
Using this module with TeraTerm is just as easy. Please follow the steps below.
TeraTerm is an open source software. A free copy can be downloaded from http://en.sourceforge.jp/projects/ttssh2/releases/
- Run TeraTerm and type in the IP address corresponding to the module in the “New connection” dialog and click OK.
- Then select the terminal setup from the setup button and make sure the settings are as shown below, and press OK.
- Type the User name and Password when asked.
- Press ENTER key and the command prompt should appear. Commands listed in the table in section “Sending Commands” can be entered here now. For example, here is the response for “ver” command.
One of the most powerful features of this module is the simple easy to use command set it supports. This command set allows for a very simple interface to access the features of the module through the TELNET protocol. The following sections give details of the command set and how to use the command set.
The Commands Set
This product supports a very simple command set that is designed to be less cryptic and easy to use manually (using serial terminal emulation programs that support TELNET) or through a program written in many supported languages.
List of currently supported commands.
|1||ver||none||ver||Returns firmware version|
|2||id||get||id get||Reads Module ID|
|set xxxxxxxx||id set 12345678||Assign ID to the module|
usr set admin
|Read user name of the module
Set user name of the module
pass set admin
|Read password of the module
Set password of the module
|gpio set 000|
gpio clear 000
|Control the GPIOs|
|read xxx||gpio read 000||Read GPIO Input status|
|status xxx||gpio status 000||Read GPIO status|
|readall||gpio readall||Read all GPIO status at a time|
|writeall xxxx||gpio writeall ffff||Control all GPIOs at a time|
|iomask xxxx||gpio iomask ffff||Control GPIOs mask status|
|iodir xxxx||gpio iodir 0000||Control GPIOs direction|
|gpio notify on|
gpio notify off
|Control Notify feature|
|notify get||gpio notify get||Read Notify Status|
|6||adc||read xxx||adc read 000||Read Analog to Digital Converter input value|
|7||info||None||info||Displays Device information like Name, IP address, MAC ID, GPIO status etc...|
|8||reboot||None||reboot||Exit the application mode and enter to the configuration interface and start the configuration via USB.|
The table below has more detailed information about available commands.
|1||ver||ver||Returns firmware version.|
|2||id||id get||Reads the module ID.|
|id set xxxxxxxx||Assign an 8-digit ID to the module, where ‘x’ can be any alphanumeric character.|
|3||usr||usr get||Reads the user name of the module.|
|usr set xxxxxxxx||Set new user name to the module.
“x” stands for alphanumeric characters including symbols. The user name can be 1 – 8 characters length.
|4||pass||pass get||Reads the password of the module.|
|pass set xxxxxxxx||Set new password to the module.
“x” stands for alphanumeric characters including symbols. The password can be 1 – 8 characters length.
|5||gpio||gpio set xxx||Set GPIO ‘xxx’ output status to high.
gpio set 000 – Sets IO0 to high state
xxx can be 000 – 015
|gpio clear xxx||Sets GPIO ‘xxx’ output status to low.
gpio clear 000 – Sets IO0 to low state
xxx can be 000 – 015
|gpio read xxx||Read the input status present at ‘xxx’.
gpio read 007 – Read input status of IO7 and print either ‘1’ or ‘0’ depending on the status
xxx can be 000 – 015
|gpio status xxx||Read the GPIO status present at ‘xxx’ without changing the GPIO to inputs.
gpio status 007 – Read status of IO7 and print either ‘1’ or ‘0’ depending on the status
xxx = 000 to 015
|gpio iomask xxxx||Masks/Unmasks all GPIOs in a single operation.
gpio iomask ff00 – Masks and/or unmasks GPIO at each bit position according to the bits of the specified hexadecimal value.
0 – To mask the GPIO & 1 – To unmask the GPIO.
‘ff00’ – 1111 1111 0000 0000: Masks GPIOs 0 – 7 & unmasks GPIOs 8 - 15.
|gpio iodir xxxx||Sets direction of all GPIOs as Input/output mode in a single operation.
gpio iodir 540f – Sets GPIOs as input/output at each bit position according to the bits of the specified hexadecimal value.
0 – To set the GPIO as output mode & 1 – To set the GPIO as input mode.
‘540f’ – 0101 0100 0000 1111:
Sets GPIO 0,1,2,3,10,12 & 13 as input mode
Sets GPIO 4,5,6,7,8,9,11,13, & 15 as output mode.
|gpio readall||Read status of all GPIOs in single operation.
gpio readall – Read all GPIO status and print xxxx.
xxxx is a hexadecimal value, with binary 1 at positions for GPIOs in HIGH and 0 for GPIOs in LOW state.
|gpio writeall xxxx||Control all GPIOs in single operation.
Gpio writeall 67a4 – Sets and clears GPIO at each bit position according to the bits of the specified hexadecimal value.
0 – To clear the GPIO & 1 – To set the GPIO
‘67a4’ – 0110 0111 1010 0100:
Sets GPIO 2,5,7,8,9,10,13 & 14
Clears GPIO 0,1,4,6,11,12 & 15.
Refer Understanding readall/writeall commands for GPIO Modules to know more.
|gpio notify on||This command enables the gpio input change notification. When the gpio notify feature is enabled, changes to the input pins will be detected and a notification is sent to the host.
To use notify feature on a GPIO, the GPIO must be set to input mode by using “gpio iodir” command.
The GPIO change notification is sent to the host is in the below format.
If GPIO change notification is “FFFE FFFF FFFF”, then
1. Current IODIR value is FFFF which means all GPIOs are set to input mode.
2. Previous GPIO values are FFFF.
3. Current GPIO values are FFFE.
The GPIO 0 value is changed from logic 1 to 0. This change triggered the device to send this notification.
|gpio notify off||This command disables the gpio input change notification feature.|
|gpio notify get||Returns whether Notify feature is enabled or disabled.|
|6||adc||adc read xxx||Reads the analog voltage present at the ADC input mentioned. “xxx” stands for the number of ADC input. The response will be a number that ranges from 0 – 1023. Please see examples below.
adc read 000 – Reads analog input 0
adc read 004 – Reads analog input 4
xxx can be 000 to 009
|7||info||info||Displays Device information like Name, IP address, MAC ID, GPIO status etc...|
|8||reboot||reboot||Exit the application mode and enter to the configuration interface and start the configuration via USB.|
Refer Understanding readall/writeall commands for GPIO Modules to know more.
Analog to Digital Converters (ADCs)
NL-ETHG-C-016 does support Analog to Digital Conversion on some of the IO terminals. A list of GPIOs that supports analog function in this product is listed elsewhere in this document. There is no special command required to execute to switch between analog and digital modes. Executing the “adc” command will set the GPIO to analog mode and executing the “gpio” command will set the GPIO back to digital mode on the fly. The resolution of the ADC is 10 bits unless otherwise noted. The input voltage range of the ADC is 0 – VDD (this product uses 3.3V power supply, so the range will be 0 – 3.3V). The result will be returned as a number starting at zero and ending at 1023. Zero indicates zero volts at the ADC input and 1023 indicates VDD (3.3V for this product) at the ADC input.
GPIO with Switches
It is possible to read the position of a switch that is connected to a GPIO. An SPST or SPDT switch is recommended to use with GPIOs. Push switches do maintain the contacts closed only for a very short time so using them is discouraged. The fundamental idea of using a switch with GPIO is to have the switch cause a voltage level change at the GPIO pin when pressed. Usually, this is achieved by using an external pull-up resistor along with the switch. The pull-up resistor is connected between the GPIO and VDD and the switch is connected between the GPIO and ground. When the switch is not pressed, the pull-up resistor will cause the GPIO to stay at the VDD voltage level. When the switch is pressed, the GPIO is short-circuited to the ground and stays at zero voltage. This change in voltage and thus the position of the switch can be read using the “gpio read” command.
Frequently Asked Questions (FAQs)
Q. What are the serial parameters I need to use when communicating with this board?
A. Since this module uses USB as the underlying transport mechanism, most of the serial parameters do not affect the communication. You can leave all parameters to any legal value (Eg: 2400, 4800, 9600 etc… for baud rate) except Flow control. Flow control needs to be set to “None”.
Q. Where do I find driver for this product?
A. Visit http://numato.com and navigate to the product page. There will be a link to download windows driver. Linux does not require driver installation since in most cases they are shipped with the driver pre-installed.
Q. Why there is no .sys or .exe file in the Windows driver package I downloaded?
A. This product uses USB CDC driver binary which is already present on Windows. All Windows versions (with the exception of Embedded Editions) has this driver binary installed by default. The .inf and .cat files present in the zip file helps Windows identify the device properly and associate appropriate driver (.sys) to the device
Q. Does this product work with Linux?
A. Yes, this product works with Linux. Please see more details on how to use this product with Linux elsewhere in this document.
Q. Does this product work with Mac OSX?
A. Yes, this product works with Mac OSX. Please see more details on how to use this product with Mac elsewhere in this document.
Q. What are the serial terminal software that this product work with?
A. This product works with a lot of different Serial Terminal software. Some examples can be found elsewhere in this document. Different Serial Terminal software are written by different developers with different purposes in mind. So you may encounter some software that may not work with this product. But usually alternatives are available in most if not all cases.
Q. The GPIO looses its previously set value when trying to read the status. Why it is so?
A. When a gpio is to output a value (high/low), that particular GPIO is put to output mode. When you are trying to read the GPIO, it needs to be put in input mode. In input mode, the GPIO will go to high impedance state and thus looses the previously set value.
Q. I’m using x language for programming. How do I find out if this language can be used to program and control the GPIO module?
A. Find out if the language of interest supports some kind of APIs/Functions/Components for serial communication. If it does, most likely you should be able to use that language with this module.
Q. What is the connector marked as ICSP on this module?
A. This connector is used to program the on-board microcontroller. This connector is primarily intended for factory use.
Q. I need a customized version of this product, can Numato do the customization for me?
A. Yes, we can definitely do customization but there may be minimum order requirements depending on the level of customization required. Please write to [email protected] for a quote.
Q. Where can I buy this product?
A. All Numato products can be ordered directly from our web store http://www.numato.com. We accept major credit cards and Paypal and ship to almost all countries with a few exceptions. We do have distributors in many countries where you can place your order. Please find the current list of distributors at http://numato.com/distrib.