Embedded devices no longer work only on their own. Today, in the emerging era of Internet of Things, even the smallest devices through connection to other nodes may play totally different role then they would if they were not connected. As a electronic design company we are often asked what are connectivity options for embedded devices.  For making connection to the world we have lots of choices. The types of networks we may use are PAN, LAN, WAN to name just basic few. There are several standards which let us build solutions for connectivity in these areas. Wireless connections are of special interest for embedded devices. No wonder Bluetooth, BLE, ZigBee, 3G/4G and Wi-Fi modules made it into embedded world.

Wi-Fi connections were for long time seen as an option for devices with generous resources. Protocol stack that has to be implemented has its demands. Products we developed for our customers used (let’s say) „traditional” approach. For this approach the stack of protocols is presented in Figure 1.

connectivity1-300x273

Figure 1. Protocol stack using standard Wi-Fi module

The lowest layers were implemented in Wi-Fi module while the rest was implemented as software to be handled by main CPU. This is the solution that we succesfully used in embedded systems built around TI AM335x processors with Linux handling the driver for the Wi-Fi device and all protocols specifics including security aspects of the connection. Having Linux on-board has also other advantages: we may use all the available software to handle our software needs – starting from ready to use implementation of well known services like running web server or accessing e-mail, ending on anything we could think of with access to raw sockets. The important factor for the client is that including well tested and ready-to-use components for building the system we may reduce both price and time of device development.

But not all devices are created equal. For some devices we do not have resources to run Linux. What then? What about reduction of cost and time of development of Wi-Fi connected device? The solution is quite simple: offload the main processor of as many components as possible. We can do it with CC3100 chip from TI. How is it helpful in described situation? Take a look at Figure 2.

connectivity2-292x300

Figure 2. CC3100 embedded software (source: ti.com)

With CC3100 chip not only the lowest layers are implemented but lots of other functionality too. It includes also implementation of the driver, TCP/IP protocol stack and even application layer with e.g. web server ready to serve any files you upload to Flash memory, for which control is also included in the available API. It supports WPA2 Personal and Enterprise security, several Wi-Fi provisioning methods. Sounds like advertisement material? But it really is that simple. And in case it was not enough for the final application we may always fallback into good, old BSD sockets to handle things our way. In case you need your device to act as an AP it supports this mode of operation too. All we need is SPI or UART communication which will be used for controlling the chip.

To make things even better we may use CC3100 modules with integrated oscillators, passive elements, 1MB Flash memory and the package comes with FCC, IC, CE certifications.

Wireless connectivity presents some challenges too. The main issues we have to cope with are: network accessibility, power consumption, bandwidth and security. Unfortunatelly the issues come from different areas and there is no simple solution to address all of them, that is where compromises come from. No matter what, there is no reason really not to consider Wi-Fi connection in your next product.