Services and solutions

Embedded systems

We offer complete embedded solutions including design, hardware, firmware and high level software.


Compact, deep embedded systems

These are embedded systems that are constrained in size, memory, processing resources and usually run on a very low power budget. These can be sensing elements of the "IoT" that are low cost, small, smart devices with efficient sensors that collect, process and relay data to larger systems nodes for the smart-house).

Medium and large embedded systems

These are devices that can run operating systems, where space/consumption are not constrained, but more performance and features are required.: Home Management Systems, Surveiance devices, Programable logic controllers, Measurements systems for industry, specialized gateways.




Embedded Hardware

  • Circuit design and schematic capture;
  • PCB design and layout;
  • PCB ordering at a specialized manufacturer;
  • Prototype development and assembly;
  • Low volume PCB production and assembly.

Embedded Firmware

The firmware for the microcontrollers is written mainly in C, C++ or assembly language; in some cases a small real-time operating system can be added. For larger embedded systems, that run a full-blown operating system we also use higher level languages.

Connectivity

Nowadays, all devices require connectivity. We have experience interconnecting devices using:

  • Ethernet: Wired and WiFi;
  • GSM & 3G/4G cellular technologies;
  • Bluetooth;
  • USB;
  • Internet using various protocols;
  • Low power RF (ZigBee, 2.4GHz);
  • Industrial protocols (RS485, modbus,etc.);
  • Automotive protocols (CAN, LIN).

We are constantly using and integrating new protocols.

Sensor interfacing

We can choose smart sensors for your application because we have already worked with many types from different manufacturers in each category: video, audio, ultrasonic, pressure, acceleration, weight, force, touch, light, color, infrared, position, distance, velocity, magnetic field, voltage, current, temperature, humidity.

Custom sensors can be built for certain applications, or sensor fusion can be performed by intelligently combining data from multiple sources.

User interface

The user interfaces can range from classical:

  • Alphanumeric screens;
  • Segmented displays;
  • Keypad, joystick;

to modern ones, where possible:

  • Small graphical display;
  • Medium, full color display;
  • Touch input and proximity sensing;
  • Larger graphic displays with touch screen interface.

Signal processing

We can develop efficient signal processing algorithms that can run in real-time in resource constrained devices. Examples include image processing, digital filtering of sensor signals, sound processing.

Algorithms are usually developed and validated on high level languages and then ported to the embedded device.

Custom bootloaders

In order for the microcontroller firmware to be easily updated in the field (wired or over-the-air programming), it must have an internal bootloader. This can be built to be reliable, have security features and have various options for program or parameter modification.

We have done extensive work building PIC bootloaders from the popular "Tiny PIC Bootloader" to custom commercial implementations.

Custom test HW & SW

When a new embedded product is developed from ground up, in order to optimize development and testing, a set of specific tools are usually built:

  • Custom test and programming hardware;
  • Software for test, debug, and communication with embedded systems.

Ultimate optimization

We are experts in low level programming and assembly language for a variety of platforms. For the projects that need sub-microsecond precise timing or for those where every processor cycle or byte of memory counts, we have the answers.

Custom protocols

Even if we have used over a hundred different communication protocols, often times the need arises to build optimized custom protocols. We designed and implemented protocols for low level communication between small embedded devices (physical and data link layer) and also for higher level, Internet transport layer.





Software development


Software applications

The software applications are often dedicated GUIs for interaction with an embedded system. These include new software or migration of old applications to modern GUI with drag&drop and multitouch interractivity.

Another category of applications are engineering support tools for desktop or for embedded systems, like custom bootloader interfaces, transpilers, diassemblers, etc.

For high level applications, our programming languages of choice are C# and Python, although we have build applications using various other languages and frameworks:

Web applications

  • Backend applications are using Google Cloud Services, and the software is based on Python libraries. These services handle the data collection from embedded devices, field sensors, communication with mobile devices and the serving of web pages.
  • Website front end is built with responsive styles that adjusts to phones, tablets, and desktops and is compatible with all modern browsers.
  • User interfaces for hybrid mobile applications are built similar to the front-end, but could be enhanced as single-page applications to provide a better user experience.

Mobile Application Development

We use the following cross-platform tools to develop mobile applications of high level of nativity (that run on both Android and iOS):

Unity3D is used for graphic heavy 3D or 2D applications like games or presentations. Xamarin is used when it is reasonable to reuse C# libraries from the desktop environment. Cordova is used when the application requires the use of web technologies.


Additional to the mobile application we offer:

Server-side development: cloud based applications or integration with corporate information systems;

 

Interfacing the mobile app with other hardware peripherals like input devices, printers, etc;

 

Native Java application development for Android OS (full applications, services or plugins);

Data processing & Research

We are involved in scientific research in the domains of control theory, image processing, signal processing, communication protocols and autonomous robotic systems. We apply the research results and novel algorithms to solve particular customer problems.

The signal processing methods are developed using specialized high level tools centered around Matlab and Python. Sometimes the algorithms we develop are running on a computer, processing externally collected data, other times they are ported and optimized in C to run in real-time inside one of our embedded systems.