At Embedded World 2017 I saw something that initially made me very confused. It was a rugged piece of hardware that clearly looked like it was related to the Raspberry Pi in some way but upon opening it up I couldn’t see how a Pi would fit inside. The internal connector looked interesting because it had pins instead of a socket, so how could a Pi 3 plug on top of it? And it had many Ethernet and USB ports already fitted. It took someone to explain it to me. This was actually a complete new custom design that had the Raspberry Pi 3 already inside it!
The company, Hilsher, has worked with the Raspberry Pi 3 manufacturers in order to create an entirely new variant of the Raspberry Pi 3. After seeing and learning about it I really want one. It is the best Pi variant yet, ruggedized, with a decent power connector, expandable, and capable of operating in all typical Raspberry Pi usage scenarios and more as will be described. It is not currently available, but will be available soon.
What do Hilscher do?
The key to understanding the netPI is to examine the motivation for the product. Hilscher is a 30-year old company (originally established in Germany but now they are a global business) deeply involved in Real-Time Ethernet (also known as Industrial Ethernet). This technology (actually, a range of technologies – there are several standards) has become the dominant way of building automation within factories. Every time you see a robotic assembly line building a car, there will be a controller somewhere talking to many sensor devices and output devices, and all the communication between controller and such node devices is occurring over the Real-Time Ethernet connections.
Real-Time Ethernet takes traditional Ethernet but transports some protocols over it that can be deterministic. This means that message loss is not tolerated like in a non-industrial network. In a normal non-industrial network there is no guarantee that a packet will not be lost. It is up to the higher-layer protocol to re-send the packet if needed. Transmission Control Protocol (TCP/IP) is used to relieve the application layer (user applications) from the burden of reassembling packets of data and requesting retransmissions but these would cause delays that would be unacceptable in an industrial assembly line. To take one example, known as PROFINET IO, Real-Time Ethernet solves this typically by defining a type of ‘upper-class railway carriage’ type of scheme where there is a regular train time and the upper-class carriage portion of the train is never allowed to fill up with non-priority packets. Only the deterministic packets are sent in that carriage.
There can be different levels of determinism such as strict (which requires packets to arrive within a certain time) or soft determinism which doesn’t mind if the packet takes a little longer sometimes to arrive (but it must arrive and must not be dropped) depending on the particular type of Real-Time Ethernet that is being used. There are also techniques to ensure that packets do not sit for very long in a buffer. A normal (non-industrial) Ethernet interface will collect up the packet before it is announced to the application. With Industrial Ethernet it is possible to start serving the packet to the application (the sensor or output node software) as it arrives on the wire. This type of functionality is only possible with special hardware. A normal Ethernet interface does not have this capability.
Hilscher is a company which has developed custom chips to perform Real-Time Ethernet capability and embedded them into different products such as:
- Modules or Interface boards that can connect a computer (say using PCI-E) to the Real-Time Ethernet bus to perform controller or node operations depending on the specific use-case
- Interface PCBs that can connect embedded hardware (say using dual-port memory) to the Real-Time Ethernet bus
- Gateways that can perform Real-Time Ethernet operations and interwork them to traditional Ethernet and TCP/IP for sending over the network for server based applications to monitor or control or manage using protocols that function well over IP networks or the Internet, such as MQTT
- Test tools for diagnosing Real-Time Ethernet
In essence, the Hilscher products act like a bridge between the Industrial Ethernet world and any other hardware or software, either locally or over networks.
A while ago Hilscher launched a little PCB that could connect to the Raspberry Pi using the 40-pin connector on it. The PCB had Hilscher’s secret-sauce Real-Time Ethernet chip on it, a couple of Ethernet sockets (some Real-Time Ethernet technologies use both ports) and talked to the Pi using the serial peripheral interface (SPI) that allows applications running on top of Linux on the Pi to interwork with Real-Time Ethernet. This product allows for possibly the cheapest way for anyone to experience Real-Time Ethernet. It would even be possible to use several Pi’s and build up a controller and nodes and simulate a factory basically.
Having a high performance ARM chip opens up a lot of possibilities. Hilscher decided to take the leap and build a custom product that would use the heart of the Raspberry Pi but in a ruggedized industrial form-factor. For the software stack, Raspbian wouldn’t do; a hardened Linux kernel is needed for reliability and security. However to maintain ease-of-use Hilscher did a clever thing and provided Raspbian in a ‘software container’ so that software programmers still get the same Raspbian experience if this is desired, but in a protected container. This will be examined further below in a bit more detail.
The end result is a product that can be used and programmed the same as any normal Raspberry Pi in any preferred language of choice, and has applicability for a range of functions in industrial automation. The possibilities are immense. It could be used as a gateway, or a controller, or it could be used to attach additional custom sensors or actuators. It just depends on the software, and whatever users decide to attach to the netPI’s hardware interfaces.
Check out the discussion with Hilscher at Embedded World 2017 here:
The netPI has a single circuit board which contains Raspberry Pi 3 functionality including wireless and Bluetooth and video connections. It has the same 40-way connector inside so all the usual Pi accessory boards can be fitted inside the enclosure. The USB connectors are spread out, it has a total of 4.
It has the default Ethernet interface but also an extra two Ethernet interfaces built-in; these are intended for connecting to the industrial network. There is also a built-in real-time clock with power back-up.
What is very cool is that there is an expansion connector slot with blanking plate on the side and it allows for modules to be inserted and removed. These could be additional Ethernet interfaces or other future functionality.
The interface is based on a mini-PCIe connector but the connections carry general-purpose input/output (GPIO) and serial bus signals such as I2C and SPI. The details of the expansion interface will be opened up so it will be possible to design custom hardware to fit into the slot.
Industrial customers could benefit from the netPI even if they do not use it for real-time Ethernet, since it would be possible to design sensors or control circuitry to fit into the expansion module slot. A module that supports thermocouple probes could be a nice example.
Overall the hardware design is very nice. The radio antenna has been designed for good coverage by extending it beyond the metal chassis (a non-conductive shell to enclose the antenna is not shown in the photo). I also liked the easy-to-see LEDs, the space to install additional functions (even though the netPI is still very compact) and the wider-range power supply input with a more usable connector than micro USB.
The nice design extends beyond the hardware too. In order to provide something secure and reliable while remaining easy-to-use, Hilscher have taken the effort to produce a software image which uses a hardened Linux kernel (based on the Yocto project) at its core. On top of that a container technology is run (Docker). This is kind-of similar to virtualization but can be more efficient in terms of resource usage. Docker is one of the open-source success stories that is extremely valuable and worth experimenting with.
The end result is that it is possible to run Raspbian in a container, and upgrade it (and any applications) as required, remotely. The benefit of this is that software developers can make use of all the familiarity they already have with Raspbian (and can even develop apps on a traditional Pi 3 before deploying to the netPI). Furthermore there is reduced risk of software clashes; it is possible to add additional containers for all your new applications, each running on a separate Raspbian if desired. The container technology allows for safe upgrades because one can always fall back to an earlier container if a new one has any issues.
Hilscher supply a ready-made Raspbian container that already has technologies like Node-RED and all the drivers to support Real-Time Ethernet built-in. People can directly use that, or modify it by adding their own applications to create a new container and then deploy it remotely to as many netPI’s as desired.
I was impressed with the level of detailed attention paid to the product design and the software implementation to make it easy for developers and for deployment. I hope to see and experiment with more Hilsher technology in future, I like that they have found ways to make Real-Time Ethernet accessible for all.