The Arm Education IoT course presents an overview of the Internet of Things and provides an description of its components - infrastructure, hardware, and software. It takes a detailed look at embedded development tools and hardware through hands-on labs that go through the creation of a weather station implementation that interfaces with a smartphone app. I think the design of the content is good, but the execution of both the lectures and labs is horrible. My understanding is that this course was recently upgraded to refresh the content, but it appears that effort was primarily aimed at the lecture material.
The course required the following hardware which was provided (except for the Android device)
- ST Nucleo F401RE Development Board
- X-Nucleo IDB05A1 Bluetooth Low Energy Board
- X-NUCLEO-IKS01A2 Motion MEMS and Environmental Sensor
- Android phone/tablet with BLE
I captured the details of my roadtest experience in a series of blogs that correspond roughly to the course modules:
- Arm Education: Internet of Things Course - Getting started
- Arm Education: Internet of Things Course - Digital Input/Output and GPIO
- Arm Education: Internet of Things Course - Keil MDK
- Arm Education: Internet of Things Course - Interrupts and Low Power Features
- Arm Education: Internet of Things Course - ARM V7 - A/R - ISA Overview
- Arm Education: Internet of Things Course - Smartphone Programming
- Arm Education: Internet of Things Course - Mbed Platform and CMSIS Library
- Arm Education: Internet of Things Course - Introduction to Bluetooth Low Energy
- Arm Education_Internet of Things Course - Arm Cortex-A9 Processor
- Arm Education: Internet of Things Course - Networks and Connecting Things to the Cloud
- Arm Education: Internet of Things Course - Weather Station
- The overall structure and content of the lectures were good and the duration of the videos seemed about right (20-30 minutes except for the ARM V7 which was 45 minutes).
- The lab content was very good. It highlighted development tools like the Mbed SDK, the Keil MDK, Arm Development Studio, and Android Studio. And it demonstrated the use and programming of many MCU and peripheral features (UART, GPIO, I2C, BLE, sensors)
- The lecture material (videos and slides) contained many errors and appeared to not be fully vetted
- The presentation style of the videos was very poor - the presenter was literally reading every single word on the slide as if he didn't understand the material he was presenting
- There was a licensing issue with the Keil MDK. Arm Education believed that the free MDK-Lite was sufficient for all the labs, but the 32KB size restriction prevented building of labs in the last two modules. The automatic licensing of the 7 day evaluation of the full MDK did not work for me. Arm did end up providing that license for me after an email request.
- The lab projects provided were built with much older versions of the tools than are currently available. This caused many configuration issues that needed to be fixed in the current tools (both Keil and Android).
- The new version of the BLE shield is not compatible with the old lab code and did not work. I ended up using updated sample code from ST instead.
My overall experience with this course in a single word is FRUSTRATED! It's a real shame because I did learn from this course and I did get exposed to new tools and hardware. The whole experience could have been so much better if this course had been properly updated. Struggling to fix all the issues with the old lab projects was a terrible waste of time. My recommendation to Arm Education is that they remove this course from their curriculum until the labs can be updated and vetted. Please make sure your examples actually work! And please provide the required MDK license for the duration of the course.