To choose the right controller for my IoT idea I start by listing the requirements. Some are essential others just nice to have. The controller is the brain of the system. All performances will depend on it so choosing the right device is essential. It is best to make this choice early to avoid a PCB redesign, rewritting the code, changing the specs.
Essential requirements
- Low sleep energy. Several weeks on battery, this implies different following choices.
- Using Bluetooth Low Energy. This is a very common wireless connection present on most smartphones.
- BLE certified module, worldwide, because the the low production volume would wouldn’t allow us paying for the certifications.
- OTA firmware update. This could also be achieved with an external flash.
- On chip user flash for parameter storage.
- Capacitive touch sensor controller.
- Lowest cost.
- Several GPIOs for peripherals.
- Easy starter kit to confirm my IoT idea is actually working before going any further.
Nice to have
- Battery level measurement.
- On chip voltage regulator.
- NFC, for easy pairing
- For faster time-to-market, it is best to stay with a manufacturer or tools we already have experience with. In my case this was Atmel, Freescale, Microchip, Altera and more generally the ARM Cortex M0 and M4. Howewer, this project is part of my portfolio; I do not mind learning to use new tools and gaining new experience with an unknown manufacturer. In such case, there should be enough material and examples to get us started quickly.
The candidates
The following candidates were considered as they were available in July 2016. The market is evolving so there might be something more suitable now.
- Cypress PRoC/PSoC 4 BLE. Flash 256k.
- Nordic nRF52832. ADC 12bit 200ksps+ comparator wake up 0.3uA. Flash 256/512. Ram 32/64.
- ATMEL SAM-B11.
- Microchip MCP IS1871. BLE4.2.
- Espressif ESP32.
My IoT controller choice
I was looking for a module with integrated support for capacitive touch sensing. This was not available on Nordic, Atmel, Microchip and Espressif, leaving me with Cypress as only option. To keep a broader choice I looked into external touch sensor controller such as the Microchip CAP1203.
Once you have selected the candidates it gets down to personal feelings. I’ve worked with the broad Microchip family, then went on Freescale for a few years. As an Ex-Atmel employee I know their products fairly well and some of them in very intimate details. Atmel has achieved the lowest current consumption on ARM. The development environment Atmel Studio is very mature, simple yet advanced using plugins. But this does not mean I’ll stick to something just because I know it well. Who knows me know that the reality is opposite; I like to explore, to discover, to learn, to setup new goals, new challenges.
That’s how I choose the Cypress PSoC 4 for the following reasons :
- Meets all the mandatory criteria.
- Low sleep energy.
- Bluetooth Low Energy.
- BLE certified module available, royalty-free tested Bluetooth IP included.
- On chip user flash.
- Proximity sensor.
- Enough GPIOs.
- Starter kit CYBLE-CY8CKIT-BLE for quick feasibility check and development.
- The Cypress PSoC 4 BLE is a very powerful device. I believe that acquiring experience with this ARM based controllers will open new opportunities.
- Cypress has released the family over a year ago, which means it’s up and running. There’s ample material available, online video, 1o1 lessons, forums and customer service.
I’ll write a separate post with my feedback with Cypress PSOC 4 BLE after a few months. Was this a good choice?