LucidControl USB IO Modules in a Nutshell

What is LucidControl?

The LucidControl product family consists of powerful Plug-and-Play USB IO devices turning a computer to a modular digital and analog data acquisition and control system.

LucidControl captures and generates analog and digital signals like voltages, temperatures, resistances and logic. The host computer can make use of this data e.g. for logging, monitoring or control tasks.

Additionally, LucidControl devices are able to generate output signals and they are ready to control power loads like lamps, fans or pumps simply via USB.

Are you looking for cost effective and easy to use control devices?

All LucidControl USB IO modules are controlled by using the same software which makes working with the modules extremely simple. Once a module is connected to the computer it starts working immediately.

LucidControl needs only to be connected to a computer via Universal Serial Bus. The power required by the devices is supplied by USB what makes the modules most cost effective since no additional components like power supplies or adapters needed.

Using LucidControl USB IO modules is absolutely straightforward. Utilizing the provided command line tool, the Java and the Python API give full access to all functions of the modules where it does not matter how many devices are connected to the computer.

Advantages of LucidControl USB IO Modules

Whenever a system for automation tasks is needed LucidControl product family should be considered as a good choice. The USB IO Modules provide outstanding technical features at a reasonable price and fit best for data acquisition, monitoring and control applications.

By capturing and generating analog and digital signals like logic states, temperatures, voltages, currents, resistances and clocks the flexible IO Modules are ready to control consumers like fans, pumps or even lamps via USB.

Offering a Universal Serial Bus interface, which is nowadays by standard available on nearly all computers, allows easy connection to a computer at lowest costs. Since LucidControl USB IO Modules are power supplied via USB, extra components like adapters or even power supplies are not needed.

Beside of being best prepared for home applications, LucidControl USB IO modules are also designed in order to fulfill many relevant criteria for industrial applications. Only to mention the possibility to mount them on standard DIN-Rails. This feature allows the integration of LucidControl USB IO modules into switch boxes of an automation project.

LucidControl USB IO modules are designed in order to be connected to various different computer systems. Thanks to the standardized device driver, which is available in operating systems like Microsoft Windows® and Linux, out of the box installation can be performed very easily within minutes.

Additionally, the USB IO devices are compatible with the famous Raspberry Pi® and Texas Instruments Beagle Bone Black computers. Employing these computer boards makes the creation of web services and mobile applications very easy.

In order to increase the usability and to improve the learning curve, LucidControl IO Modules are all compatible to the same control application. As soon as a module is available on a computer it starts working immediately.

Utilizing the available LucidIoCtrl command line tool makes working with the IO Modules straight forward and multiple IO modules connected to a single computer can be accessed properly. Application programming interfaces available for Java® and Python API complete the software package.

Controlling, Logging and Data Acquisition System

Diagram Logging Hot Water

LucidControl USB IO modules are useful for many automation projects. When signals have to be acquired or generated e.g. in the factory floor automation section, the modules can be employed in order to control fans, lawn sprinklers or other power loads. This makes it easy to build e.g. time switches or much more complicated systems which for example measures and logs temperature and humidity.

Additionally, the USB IO Modules are able to measure temperatures which makes them perfect for energy management applications. Clocked outputs and standardized analog 0 to 10 V interfaces can generate signals for controlling valves, mixers or pumps of a central heating systems controlled by calculations depending on measured temperatures.

In the hobby field the low-priced modules are ready to control LED lightning creating different lightning scenarios.

Not to mention that all applications can be controlled remotely over the Internet even by using smartphones. As soon as a LucidControl USB IO module is connected to a computer which itself is connected to the internet there are nearly no limits of possibilities and applications.

Flexible interfaces with USB Analog IO & USB Digital IO

Our goal is it to equip LucidControl USB IO modules with many different interfaces.

LucidControl USB digital input modules reads logic input signals and is compatible with 5V, 10V and 24V threshold levels which are common in automation industry. These inputs can communicate with other control system components or e.g. read the state of a push button or switch.

LucidControl USB digital output modules are prepared to control power loads like pumps or valves or to create different digital output signals. The outputs are carried out in three different types: Mechanical relays can be used in order to switch signals like temperature sensors without distortion of the signal. Solid state relays are the first choice when power loads should be controlled. They provide the best overall performance for most use cases. Finally, outputs are realized as open collector transistors which are the best choice for fast signal transitions as they are e.g. used for dimming LEDs.

LucidControl USB analog input modules are available for voltage input ranges of 5V, 10V and 24V. Especially analog voltage interfaces of 0 to 10 and 0 to 24V are often used in the automation industry.

LucidControl USB analog output modules are able to create voltages in the ranges 5V, 10V and 24V. Analog voltages interfaces of 0 to 10V and 0 to 24V are very common in the automation industry.
LucidControl USB analog output modules are also available with current outputs sourcing 0 to 20mA. These current loop interfaces are most often used in the automation industry for reliable and lossless analog signal transmission over long distances.

Finally, the LucidControl USB RTD input modules acquire the resistance and calculate the temperature of a standard Pt1000 sensor element. They are dedicated to energy management and can be used to control other modules of the LucidControl series.

Raspberry Pi® and Beagle Bone Black

LucidControl is compatible with most computers running Microsoft Windows or Linux. Recently, small computer boards like the Raspberry Pi® and the Beagle Bone Black became more popular. These boards provide USB and network interfaces and allow the connection of keyboard and display.

Thanks to the Linux operating system these computer boards can solve lots of tasks instantly. Tested and often free available software e.g. Internet servers and databases can make life much easier. After an Internet server has been installed, LucidControl can be accessed with all its functionality remotely simply by web browsers, secure and all over the world.

Professional databases like MySQL are very helpful when it comes to reliable logging of acquired process data with minimal effort.

Many available example applications demonstrate the use of LucidControl.

Software & Documentation

A large and still growing software package makes the setup of LucidControl IO systems very simple. Additionally, all functions are documented very well and tutorials give valuable information and ideas for manifold applications.

A first start could be the LucidIoCtrl command line tool which works with all LucidControl modules. It is ready for all major operating systems and runs without any necessary installation on most computers. It it the best choice to control the modules without a single line of programming

Popular programming languages like Python and Java are supported by application programming interfaces. Due to the comprehensive documentation the modules can be integrated into other programming languages without hassle.

Concept & Support

Our company – deciphe it GmbH – is the developer and manufacturer of LucidControl products and we use the devices for our own projects and purposes.

We try to to make the first steps into the LucidControl system as easy as possible but if you have some problem which you can not solve on your own, we will help you as good as we can to find a solution.

The hardware as well as the software follow a consistent and modular concept which is clear and expandable.

On customers request we are able to realize add-on modules providing additionally functionality without changing the basic functionality of a LucidControl USB IO module.

Because of the adaptable and upgrade able firmware, functions can be implemented and updated on the field easily.

In the past several of our customers used LucidControl USB IO Modules together with National Instruments LabVIEW and they developed their own VIs and projects.

Since the USB IO Modules can be interfaced by using a simple and well documented protocol based on serial port communication, they can be easily accessed by any programming language even if no Application Programming Interface is available for a specific environment.

Thanks to one of our clients we can now provide an example of a LabVIEW project using VIs made for the USB Analog Output Module (AO4).

This example explains how to communicate via the virtual serial port with the USB IO Module and includes VIs for:

Reading device information like device class or serial number from the USB IO Module

Setting the value of an analog output channel

Reading the value of an analog output channel

AO4 LabView Settings

The controls allow entering the comport to which the USB IO Module is connected to. The user can select a channel to update and the new output voltage to set.

AO4 LabView Device Info

This screen shows device relevant information like device class and type, firmware version and serial number of the USB IO Module.

The example explains reading from and writing to the USB IO Module. It is a starting point and should make it easier for a LabView developer implementing other modules.

The network connectivity of LucidControl USB IO Modules opens them to a much wider field of remote io applications. Together with the Raspberry Pi, the USB IO Modules are e.g. able to measure or control temperatures over the Internet.

In earlier articles I described how the LucidControl USB IO Modules can be accessed over a network by employing a Raspberry Pi. There are solutions available that make the USB IO Modules ready for remote io network communication.

Network Device Server and Client Computer

First of all, and that’s true for all described solutions, a TCP communication is established by running ser2net on the network device server. The ser2net application is routing a data stream from a TCP socket to a local device like a serial port. And since our LucidControl USB IO modules use the standard USB CDM profile, they behave like a standard serial port. The LucidIoCtrl command line tool as well as the API support direct socket communication what is recommended for remote io solutions.

USB IO Module Network Device Server with socat and ser2net

I also described how to create a virtual serial device with socat on a Linux client computer. Virtual devices are routed to a TCP socket of a network device server ser2net is listening to. The virtual devices are transparent and accessible on the client computer the same way as a local device is.

In this article I show now a method how to create virtual remote io devices on Windows operating systems that are routed to a USB IO Module connected to a network device server.

But why should you use this method, when the LucidControl tools support direct TCP connections?

Beside of the tools that are provided by us it is also possible to access the USB IO modules directly. Since the protocol of the USB IO modules is fully documented and easy to understand, a developer can implement the USB IO module from scratch sending data frames to them.

ProfiLab-Expert Application

For the USB IO Modules is an implementation for ProfiLab-Expert 4.0 available. ProfiLab-Expert is a program for visualization and control of analog and digital signals. It allows you to use the USB IO Modules in order to control e.g. a temperature by changing the state of a digital output module which controls a heater by switching it on and off.

ProfiLab-Expert accesses the USB IO Modules natively without using an API by sending data frames directly via the serial port to the IO Module.

Creation of a virtual Remote Io Device on a Windows Client

LucidControl USB IO Modules can be used with Windows without the need of a driver. The IO modules implement the standard CDM profile that is natively supported by most Windows versions.

Linux has with ser2net and socat all tools available which are helpful in order to create a network device server as well as a virtual device on the client computer connected to the network device server.

For Windows the situation is different as third party tools are necessary for this task. A comport interface can only be installed as a new device what needs a kernel mode driver. Such software is different compared to application software and needs special knowledge of the Windows Driver Development Kit (WDK).

If an application which is running in user mode has a bug it should not crash the whole system. In worst case the application terminates, but the system should remain responsive and other applications are not supposed to be affected by this and should continue running.

In kernel mode things are different and everyone who is involved into driver programming knows that the famous “blue screen” still exists and is not a thing of the past.

We did some driver project in the past for our RFID Universal Reader Module what is a reader for contactless cards that can e.g. access contactless passports and can also be used in banking applications. In this field PC/SC is a standardized interface and a reader should support the Windows Smart Card API. Having this experience, I think I can estimate how complicated it is to make a new device operating.

Fortunately, there are serial port redirectors available that install a new serial port which is forwarded to a TCP socket. We successfully tested our USB IO Modules e.g. with COM2TCP and the VSP driver of HW Group.

Finally, we put special attention on the open source project com0com. It is not a port redirector as e.g. the VSP driver is, but a null-modem emulator that installs a pair of virtual serial ports connected to each other.

Connecting to a Network Device Server with com0com Null-Modem Driver

The picture explains the concept of connecting to a network device server via a null-modem emulator driver. At a first glance it seems to be difficult using two virtual serial ports instead of one. The gray highlighted part shows the function of the kernel mode driver, the yellow highlighted part shows applications running in user mode.

com0com creates a pair of serial port devices (here COMa and COMb) that are connected to each other. Data sent to COMa is received by COMb and vice versa.

This concept has a big advantage because it allows having an application running in user mode between the serial ports that accesses the serial port COMa and connects it with a remote io TCP socket. The program com2tcp (not to mix up with COM2TCP) connects a serial port with a remote TCP socket. It belongs to the com0com project but it is not automatically installed by the setup and must be downloaded separately.

Setup com0com for TCP redirection

The com0com project can be downloaded as a Windows installable file. When the driver is supposed to be installed on a recent Windows operating system a problem will arise because of the driver not being signed with a valid signature but with a test signature only.

Nowadays, Windows needs drivers being signed with a valid signature. While this was earlier only true for the 64 bit versions of Windows 7 it became more difficult in newer Windows versions to run unsigned kernel mode software. The validation of driver signatures can be disabled in general (e.g. when the system is started) but the complete deactivation should only be a temporary solution for a development computer. We cannot recommend this for a productive system.

On our download page we provide a signed driver of com0com that can be used in conjunction with our USB IO Modules. The installation is straight forward and it is explained in this document.

Note:We are not the developer of com0com, we only signed the existing kernel modules and we appreciate the developers work very much. The com0com project can be found on Sourceforge.

Validation of the com0com Driver Signature

Continue the installation as explained and at some point Windows will ask you to confirm the installation of the signed software.Click Install in order to agree that you want to install the kernel mode driver signed with our signature. You might be asked several times to confirm the driver installation.

Windows Driver Update Installation of com0com Null-Modem Driver

For some reason Windows might be searching Windows Update for a more recent driver what does not make sense for me and can be skipped by clicking Skip obtaining driver software from Windows Update. But even then it might take a few minutes (at least on my system) to complete the installation.

Device Manager with com0com Devices

After the installation has completed, com0com devices appear on the Ports section. In this example COM6 and COM7 serial ports have been installed.

The settings of the com0com ports can be changed and also new ports can be created by using Setup for com0com. This application is copied onto the system during the com0com setup.

Setup for com0com Application

This screen shot shows the current configuration on our machine. A new pair of linked serial ports can be created by clicking Add Pair. The installation of a new pair of serial ports took some time on our machine because Windows Update was looking for some more recent driver versions.

Pending Installation of com0com

Setup for com0com – new serial Port

The fresh created ports have the names CNCA2 and CNCB2.

For compatibility reasons we recommend using standard names for serial ports. Some applications may not be able to work with a serial port name like CNCA0 but needs standard names like COM6. We also recommend activating use Ports class what installs a serial port in the Ports section of the device manager. Otherwise the port pair appears in the com0com section only.

The setup program recognizes the slow installation and shows a dialog that can be confirmed in order to complete.

Setup for com0com – new serial Port

The fresh created ports have the names CNCA2 and CNCB2.

For compatibility reasons we recommend using standard names for serial ports. Some applications may not be able to work with a serial port name like CNCA0 but needs standard names like COM6. We also recommend activating use Ports class what installs a serial port in the Ports section of the device manager. Otherwise the port pair appears in the com0com section only.

Connecting Serial Ports to a Remote Io TCP Socket

One virtual comport of the pair can now be connected with the TCP socket of a network device server running ser2net.

Connecting to a Network Device Server with com2tcp

com2tcp –ignore-dsr \\.\COM6 RPI-AZ-2 4001

This command connects the virtual serial port COM6 (that is connected to COM7) with the TCP port 4001 of the computer named RPI-AZ-2.

Accessing USB IO Modules with com0com

This command connects to COM7 that is connected to COM6. COM6 is opened by com2tcp and redirected. LucidIoCtrl asks the USB IO Module for device information. The Analog Input Module answers and returns that it is able to measure 4 voltages in the range of 0 to 10V.

Summary

This article explained how a virtual serial port that is connected to a TCP socket can be installed on a Windows operating system and how a connection to a network device server can be established by using the LucidIoCtrl tool.

Although our tools and API support direct TCP socket communication, a virtual comport that is redirected to a TCP socket is helpful for compatibility reasons e.g. using the USB remote io modules together with ProfiLab-Expert.

By using com0com there is no software change necessary when switching from a local connected IO Module to a remote io device. By changing the comport number the measurement object can be routed to an IO module connected to a remote network device server.

https://www.lucid-control.com/wp-content/uploads/2013/04/LucidControl-RI8-Web-Product.png600800decipheithttps://www.lucid-control.com/wp-content/uploads/2018/04/LucidControl_blue_black_340_156.pngdecipheit2016-05-01 12:28:442018-09-06 06:44:13Connect to a remote IO Module with Windows

https://www.lucid-control.com/wp-content/uploads/2018/04/LucidControl_blue_black_340_156.png00decipheithttps://www.lucid-control.com/wp-content/uploads/2018/04/LucidControl_blue_black_340_156.pngdecipheit2016-04-02 14:20:242018-09-02 09:33:43Accessing a USB IO Module in a Network by using Linux and socat