Internet of Things (IoT)

In recent years, there has been a lot of discussion about IoT.

While this term means different things to different people, it generally refers to using standard protocols to create interoperable devices and networks. Common examples of this include lighting controls and fixtures using Zigbee transceivers, and remote sensors using LoRa. These devices bring the added challenges of not only passing FCC certification, but also passing vendor or standards-body validation to gain access to the trademarked names of the protocols.

Quiet Software has taken multiple projects through FCC and standards certification and is ready to help you do this with your prototype to make it into a shippable product.

Embedded Systems

Embedded systems have a number of characteristics that make implementing them a challenge for the programmer accustomed to working in the desktop or server computing environment.

They are typically resource constrained, with limited RAM, program storage and CPU speed. Efficient coding becomes vital to a successful design.

The tasks to be performed can have very tight and precise timing requirements.

The systems tend to run for extended periods of time, and are expected to be highly reliable.

All of Quiet Software's engineers are highly experienced at developing successful embedded systems. We do not subscribe to the idea that inexperienced programmers can successfully implement an embedded system if they are merely given detailed enough specifications.

Research & Development

Our focus is on research and development of products for our clients. We focus on creating technology and successful products, while respecting the intellectual property and trade secrets of our clients. We are willing to enter into reasonable non-disclosure and confidentiality agreements with our clients to assist them in protecting their confidential and proprietary information. We also avoid having clients in competing business or overlapping technologies to help reduce the risk of accidental disclosure of confidential information.

Initial System Design

To the greatest extent possible, we try to work with our clients to fully understand their requirements and needs and to provide an accurate estimate of the scope and cost of the project. Although this can and does cost money we have found that this investment ultimately pays off in a successful project.

If the complexity justifies it, we may propose a small initial project with the goal of preparing a detailed proposal to accurately outline the costs of the full project.

Hardware & Firmware Design

Especially when working with today's microcontrollers, hardware and firmware design are a collaborative process where the firmware designer needs to understand what features are needed in the processor, work with the hardware designer on selecting the correct processor, and then advise the hardware designer on how the processor should be hooked into the circuit. Since most of the pins on a modern microcontroller can perform multiple functions depending on how they are configured by the firmware, a successful hardware design is a collaboration between the hardware and firmware designers.

Reliability Enhancement

This has been one of Quiet Software's strongest areas. We have a proven track record of working with client systems that are not performing at the expected level of reliability, analyzing those systems, and fixing the problems so that the system delivers the required level of performance.

First, we deal with the low-hanging fruit: Does the code compile without warnings? Typically 80 or 90% of the compiler warnings are harmless, but a few of them will point toward serious flaws in the code.

Next, we add consistency checking to the code. Even a system with nothing more than a single LED can blink an error code to indicate where the code detected a problem. It can seem counter-intuitive to intentionally crash the system in a consistency check to issue an error code, but as you eliminate the problems the overall system reliability goes up rapidly.

We also pay special attention to memory allocation and memory management. Memory leaks, and code that continues to use a memory block after it was freed can lead to mysterious failures in systems that have otherwise been running normally for lengthy periods of time.

An excellent example of this was a data collection and control system that was integral to the operations of a large manufacturing facility. This system had been running flawlessly for several years and it suddenly started crashing several times a day. We were brought in to find out why.

Since the obvious symptom of the failure was that the memory pool was exhausted, we instrumented the memory allocation routines. This led to the discovery that an error condition handler was attempting to free a memory block twice. The error was ultimately traced back to the fact that a data communications cable was resting against the housing of a large electric motor which created a communications error every time it started up. We fixed the programming errors, but also suggested that the factory relocate the cable to fix the problem immediately without having to wait for a new code release.

Optimization of Software Performance

This is usually done as a follow-on to the reliability enhancement process, and focuses on making the device do its job faster. It can also focus on reducing the code size to provide the space to implement additional features, or to allow the use of a smaller/cheaper microcontroller.

This process begins with analyzing and profiling the code to understand what routines are most critical and where the most benefit will be realized. Once the bottlenecks have been identified, those routines will be modified or rewritten. If ultimate performance and smallest possible code size is required, specific routines may be rewritten in assembly language. Processors such as the 8051 that are poorly suited to the C or C++ languages realize the greatest benefit from assembly language coding.

Code that interacts with mass-storage devices such as hard disks, CD-ROM drives or tape drives may improve dramatically if it can be rewritten to keep up with the native data rate of the device and minimize rotational delays or seeking.

Data Communications & Networking

This is a core skill of Quiet Software's engineering team. We have experience with multiple communications protocols and hardware, including:

RS-232, RS-422 & RS-485 including multidrop.
GE Superbus
CAN (Controller Area Network) including the implementation of CiA (CAN-in-Automation) standard device specifications
IEEE 802.3 / Ethernet
IEEE 802.11 / WiFi
Universal Serial Bus / USB
Multiple proprietary digital radio transceivers from Silicon Labs, Nordic, TI/Chipcon, Micrel & Atmel

Networking & communications protocols include:

IPv4 & IPv6
Internet Protocol Suite (TCP/IP)
CoAP - Constrained Application Protocol
MQTT & MQTT-SN (MQTT for Sensor Networks)
Serial Line Internet Protocol (SLIP) & Point-to-Point Protocol (PPP)
Simple Network Management Protocol (SNMP v1, v2 & V3)
Simple Mail Transport Protocol (SMTP)
Post Office Protocol (POP3) & Internet Message Access Protocol (IMAP4)
Modbus / Modbus+

Wireless Communications & Networking

Quiet Software has been developing wireless technology for over fifteen years, focusing on using low-cost digital transceivers operating in the ISM (Industrial/Scientific/Medical) Bands under the FCC Part 15.247 rules. We've developed systems for both the 900MHz and the worldwide standard 2.4GHz bands. We have achieved ranges of up to 1.5 miles (using 900MHz) and built systems for both point-to-point and multipoint wireless networks.

Wireless protocols:

IEEE 802.15.4
Bluetooth & Bluetooth Mesh
Zigbee 3

Remote Telemetry / Monitoring / Data Collection

Quiet Software has taken the basic wireless technology it developed and adapted it for the following applications:

Monitoring and control of primary & emergency lighting systems.
Pipe flow & pressure monitoring for oil wells
Tank level monitoring
Status monitoring for parking meters and remote parking purchases
Broadcast Advertising messages for shopping carts
Mobile panic button system with location information
Wire-replacement applications for a variety of different communication protocols

Distributed Systems

With embedded microcontrollers becoming ever more powerful and affordable, almost every device has one or more processors in it. We specialize in networking these processors together using a variety of technologies. This provides distributed processing, redundancy, and robust data collection and control systems.

These connections allow the data to be ultimately migrated to cloud-based servies such as Amazon AWS, Microsoft Azure or Google Compute Engine.

Industrial Controls

Software that controls machinery or industrial processes must be reliable. It has to incorporate internal consistency checks, use watchdog timers to ensure that the unit will never stop working for extended periods of time. It also needs to monitor all software and hardware for failures, exceptions and error conditions that need corrective action.

We specialize in implementing software and firmware that meets all of these requirements.

Designing with Safety in Mind

Introducing wireless communications into control systems can have a significant impact on safety. Wireless is inherently less reliable than a wired connection. This creates the need to fully understand what is required for each end-node to maintain safe operation even if it loses connectivity to a central control system. The design must incorporate the safety requirements of EACH end device and make sure that the software will maintain safe operation no matter what happens.

Incorporating safety into your design may sound expensive at first, but when you compare it to the costs of even a single catastrophic failure, it can be quite affordable.