Course module 11 describes connecting things to the Internet and Cloud services.


I think the proof reader didn't get to these slides .  In the Module syllabus, I don't think that "Try to keep bullets short and to a minimum" was a topic.  And on the topic of IPv6, I think the world's population must have exploded if each person can only get 4000 addresses.



The proliferation of network devices - driven by mobile phones and IoT devices has necessitated the adoption of  IPv6.  IPv6 also provides other improvements like improved packet delivery and security.


IoT has also driven the expansion of communications and networking protocols to handle its broad range of use cases.


IoT utilizes multiple network topologies and data needs to be secured at multiple nodes and protocols.


Cloud computing is a system of services that have been created to handle the processing and storage of data from the distributed WAN.  Different models allow on demand access to a shared pool of configurable computing and storage resources.


There was a short discussion of IBM's Cloud services as a PaaS and IaaS offering.




Lab8 Exercise - Interacting with Sensor expansion board


Lab8 interfaces with the environmental sensors on the X-NUCLEO-IKS01A1 expansion board using the X-Cube MEMS1 library in the mbed API.  Note: we received the IKS01A2 rather than the IKS01A1, but that did not seem to create any problems.


The IKS01A2 board  contains the following sensors:

  1. LSM6DSL MEMS 3D accelerometer (±2/±4/±8/±16 g) and 3D gyroscope
  2. LSM303AGR MEMS 3D accelerometer (±2/±4/±8/±16 g) and MEMS3D magnetometer (±50 gauss)
  3. LPS22HB MEMS pressure sensor, 260-1260 hPa absolute digital output barometer
  4. HTS221: capacitive digital relative humidity and temperature


The picture below from the lab video shows the sensors from the earlier IKS01A1 board.

This lab uses I2C to interface the processor to the environmental sensors and the UART (via USB) to communicate the data to the PC.  The project code template was provided as a Keil MDK project.


On the initial build attempt, I received a warning due to a problem with the project configuration.


Getting a microlab warning:

*** Warning: You are compiling one or more files of source type C++ and have selected 'use MicroLIB'. MicroLIB does not support C++!

Uncheck Use MicroLIB


After locating and correcting that option, I ran into the next build problem.


Getting an "Internal command error":

After some Google searching I determined that it was another configuration error and fixed it.


Under utilities Debug Driver Settings: need to set Connect & Reset Options to Connect under reset.


I believe these errors are a side effect of the project having been built with a much older version of the MDK.  These labs should provide updated project files.


Below is a short video of the program sending data to the PC - being captured in a serial Putty terminal.





Lab9 Exercise - Set up device as BLE server

Lab9 programs the BLE expansion board as a BLE server to emulate a heart rate sensor.  We received an X-NUCLEO-IDB05A1 rather than the X-NUCLEO-IDB04A1 board used in the lab.  This proved to be problematic but I encountered a different issue first.  Arm Education told me that the labs in this course should be able to be completed using the free Keil MDK-Lite version that has a 32KB size restriction, but I quickly discovered that the BLE program exceeded that limit.


BLE program exceeds the size limitation of MDK-Lite (32KB)


I then attempted to get a 7 day Evaluation license for the full MDK but I struggled for days never getting the directions in the online documentation to work.


About that time I was also surprised by being locked out of the course at VitalSource.


Turns out that due to a communication error, we had only received 30 day access to the course content.  Randall got that fixed quickly but that was quite a surprise.


Arm Education was not able to help me with my MDK licensing problem, so I contacted Arm Sales (Keil division) and they quickly provided me with a temporary evaluation license.


At that point everything seemed to work.


Initialization output via serial monitor looks good.


But unfortunately, I could not see the device using the BLE Scanner app on my Nexus 7 tablet.  It seems that the device is not advertising, so something is wrong.  I moved on to the final project, a weather station server, and see if I might have any better luck.  I'll cover that in the next post.