Enable Secure Communication with TLS and the Mosquitto Broker

MQTT is a lightweight  and broadly used internet protocol (see “MQTT with lwip and NXP FRDM-K64F Board“). And probably the majority of IoT applications today are using Mosquitto as server (or ‘broker’ in MQTT language). By default, Mosquitto is using a protocol without encryption. In “Introduction to Security and TLS (Transport Layer Security)” I have covered the basics and needs for encryption. This article is about how to enable Mosquitto and clients to use the TLS protocol.

TLS Handshaking with certificates and keys

TLS Handshaking with certificates and keys

Continue reading

Advertisements

MQTT with lwip and NXP FRDM-K64F Board

In the area of IoT (Internet of Things), one obvious need is to have a way to send and receive data with an internet protocol. MQTT (or Message Queue Telemetry Transport) is exactly like that: a light-weight Machine-to-Machine communication protocol. With the MQTT protocol a microcontroller (or ‘client’) can send data and/or subscribe to data. For example to the Adafruit.IO:

Adafruit MQTT IO Feed

Adafruit MQTT IO Feed

Continue reading

MCUXpresso IDE: Installing Processor Expert into Eclipse Neon

In “MCUXpresso IDE: Importing Kinetis Design Studio Projects” I explained how Kinetis Design Studio projects can be imported and used inside the MCUXpresso IDE. Processor Expert projects can be used, but no new components added, modified or new Processor Expert projects created. To fully use Processor Expert, two plugins need to installed, and this is what this article is about.

Processor Expert in MCUXpresso IDE

Processor Expert in MCUXpresso IDE

Continue reading

MCUXpresso IDE: Importing Kinetis Design Studio Projects

Many of my currently active projects are using Kinetis Design Studio (KDS) V3.2.0 from NXP (I have published many of my projects on GitHub). Now with the advent of the MCUXpresso IDE (see “MCUXpresso IDE: Unified Eclipse IDE for NXPs ARM Cortex-M Microcontrollers“), I have migrated several projects from KDS to MCUXpresso. This post is about how to easily get KDS projects ported and running in MCUXpresso IDE.

Debugging KDS Project in MCUXpresso IDE

Debugging KDS Project in MCUXpresso IDE

Continue reading

MCUXpresso IDE: S-Record, Intel Hex and Binary Files

This is another article about the NXP MCUXpresso IDE (see “MCUXPresso IDE: Unified Eclipse IDE for NXPs ARM Cortex-M Microcontrollers“), this time it is about Post-build steps. Post-build steps are custom actions which can be executed after the build (or link phase), and are typically used to generate S-Record, Binary or Intel Hex files (see “S-Record, Intel Hex and Binary Files“).

Post Build Steps Details

Post Build Steps Details

Continue reading

MCUXpresso IDE: Unified Eclipse IDE for NXPs ARM Cortex-M Microcontrollers

There are many mergers going on in the industry, and one of the largest one was in 2016 the integration of Freescale Semiconductor with NXP Semiconductors, with both providing Eclipse based IDE’s to their customer base. Consequently, the company merger triggered a merger of the IDE’s, and last week NXP has released the result: the MCUXpresso IDE.

MCUXpresso IDE

MCUXpresso IDE

Continue reading

Tutorial: Using Eclipse with NXP MCUXpresso SDK v2 and Processor Expert

To me, software and tools are by far more important than the microcontroller. Because the silicon is a ‘one time kind of thing’, where the software has to be maintained and working over a longer time. And at least my software usually needs to be ported to a new device, so portability and available software and tools are critical to me.

The combination of MCUXpresso SDK (formerly Kinetis SDK) and Processor Expert is unfortunately not supported by NXP. But I have found a way to get them work together in a nice way, and this article is about making that combination possible :-).

SDKv2 Project with Processor Expert

SDKv2 Project with Processor Expert which is supposed not to work together

Continue reading

Better FreeRTOS Debugging in Eclipse

With debugging FreeRTOS applications in Eclipse, it is a big to have views available showing all the threads, queues, timers and heap memory allocation. One of the best Eclipse plugins are the one NXP provides for FreeRTOS: they are free of charge and give me pretty much everything I need. However, if you are not that familiar with FreeRTOS itself, here are a few tips to get more out of the plugins.

Better FreeRTOS Debugging in Eclipse

Better FreeRTOS Debugging in Eclipse

Continue reading

McuOnEclipse Components: 12-Mar-2017 Release

I’m pleased to announce that a new release of the McuOnEclipse components is available in SourceForge, with the following main features and changes:

  • Wait: Busy-Waiting using ARM DWT cycle counter
  • Percepio FreeRTOS+Trace: Updated to version 3.1.1, simplified usage of streaming and snapshot mode
  • GenericSWI2C: MCUXpresso SDK can be used with the bit-banging I2C driver support
  • FreeRTOS: includes updates of the 9.0.1 release, ‘optimized task selection, enabled MPU support (experimental)
  • Graphical GUI drivers for screens, windows, icons, headers, text widgets and more
  • SSD1351: display driver for Solomon Systech SSD1351 display
  • More components are now supported by the McuLibConfig settings
  • Many other smaller bug fixes and enhancements

Continue reading

Tips for Making Copy of Eclipse CDT Projects Easier

Instead creating a new project from scratch, often it is simpler to copy an existing Eclipse CDT project, then change it and go on.  To copy-past the a project in Eclipse:

  1. Select the project in the Project Explorer View (CTRL-C on Windows)

    Copy of a project

    Copy of a project

  2. Then paste it in the Project Explorer View (CTRL-V on Windows), and I can specify the new name:

    Paste of Project

    Paste of Project

However, to make that process simpler, a few things have to be done right in the ‘source’ project first.

Continue reading

McuOnEclipse Components: 28-Jan-2017 Release

I’m pleased to announce that a new release of the McuOnEclipse components is available in SourceForge, with the following main features and changes:

  • New Sharp Memory Display Driver supporting 96×96 and 128×128 pixel ultra low power display
  • PID_Int can be used without hardware
  • GenericTimeData has added functions to convert date/time into strings
  • HardFault can now disable write buffers on ARM Cortex to simplify debugging faults
  • Folder support for SEGGER SystemView and Percepio FreeRTOS+Trace
  • Component usage without Processor Expert
  • NXP MCUXpresso SDK support for FreeRTOS using tickless idle mode and low power timer
  • Many other smaller bug fixes and enhancements
SourceForge

SourceForge

Continue reading

Zephyr: Thoughts and First Steps on the ARM Cortex-M4F with gcc, gdb and Eclipse

The concept of Linux (Open Source, broad developer base and broad usage) is a success story. While there is a lot of diversity (and freedom) in the Linux world, Linux is Linux and again Linux :-). And the world has (mostly) standardized on Linux and its variants on the high embedded system side.

On the other side, the ‘middle and lower end’ Embedded world is fragmented and in many aspects proprietary. So it was no surprise to me when the Linux Foundation announced the ‘Zephyr’ project back in February 2016:

“The Linux Foundation Announces Project to Build Real-Time Operating System for Internet of Things Devices. Open source Zephyr™ Project aims to deliver an RTOS; opens call for developers to help advance project for the smallest footprint IoT devices.

Ζεφυρος (Zephyros) is the Greek good of spring and the west wind. Obviously this inspired the logo for the Zephyr project:

Zephyr logo

Zephyr logo (Source: https://www.zephyrproject.org/)

Continue reading

Debugging ARM Cortex-M0+ HardFaults

To me, one of the most frustrating things working with ARM Cortex-M cores are the hard fault exceptions. I have lost several hours this week debugging and tracking an instance of a hard fault on an ARM Cortex-M0+ device.

Next assembly step will cause a hard fault

Next assembly step will cause a hard fault

Continue reading

Upgrading to Sharp 128×128 Pixel Memory Display

In “Low Power LCD: Adafruit Breakout Board with Sharp Memory Display” I used a 96×96 Sharp Display (LS013B4DN04) with the Adafruit breakout board, but because that one seems to be EOL (End Of Life), I searched for a replacement. I have found the 128×128 pixel version (Sharp LS013B7DH03), and best of all, it is pin compatible :-). With a small tweak of the driver, it works :-):

Sharp Memory Display 128x128

Sharp Memory Display 128×128

Continue reading

Using Python, Gatttool and Bluetooth Low Energy with Hexiwear

Now I can use the data on the Hexiwear over BLE with the gatttool (see “Tutorial: Hexiwear Bluetooth Low Energy Packet Sniffing with Wireshark” and “Tutorial: BLE Pairing the Raspberry Pi 3 Model B with Hexiwear“). This article is taking things a step further and uses a Python script on Linux to access the sensor data on the BLE device:

Accessing Hexiwear Sensor Data with Python

Accessing Hexiwear Sensor Data with Python

Continue reading

Tutorial: Hexiwear Bluetooth Low Energy Packet Sniffing with Wireshark

For a university reasearch project I try to pair the Raspberry Pi 3 with a Mikroelektronika Hexiwear using BLE (Bluetooth Low Energy). Most of things worked after a lot of trial and error, but at a certain point I was stuck trying to write to send data from the Raspy to the BLE device.The Hexiwear BLE protocol description is very thin, so I ended up using a BLE sniffer to reverse engineer the protocol with Wireshark.

Sniffing BLE Packets between Raspy and Hexiwear

Hardware setup between Raspy and Hexiwear

Continue reading

Tutorial: BLE Pairing the Raspberry Pi 3 Model B with Hexiwear

The Hexiwear (see “Hexiwear: Teardown of the Hackable ‘Do-Anything’ Device“) is a small and portable sensor node with built-in BLE (Bluetooth Low Energy) transceiver. In a research project we try to use multiple Hexiwear in a classroom environment and to collect sensor data on a Raspberry Pi. The Raspberry Pi 3 Model B running Linux has an on-board BLE transceiver too, so why not binding them (wirelessly) together?

Raspberry Pi 3 connected with Hexiwear over BLE

Raspberry Pi 3 connected with Hexiwear over BLE

Well, things seemed easy at the beginning, and as always, there are many things to learn on a journey like this…

Continue reading

Low Power LCD: Adafruit Breakout Board with Sharp Memory Display

Many projects benefit from a small display as a user interface. For very low power applications this is usually a no-go as the display needs too much energy. I have used e-paper displays from Kent: while these e-paper displays do not need any power to keep the image, changing the display content is not for free, plus is very slow (around 1 second needed to update the display). So I was looking for something low power and fast for a long time, until Christian (thanks!) pointed me to a display from Sharp: both very low power and fast:

Font Test with Sharp Memory Display

Font Test with Sharp Memory Display

Continue reading

McuOnEclipse Components: 12-Dec-2016 Release

Time is passing by so fast, and the year end is approache fast! I’m pleased to announce that a new release of the McuOnEclipse components is available in SourceForge:

  • Percepio Trace V3.1 for FreeRTOS which includes both Segger RTT continuous streaming and snapshot tracing in a single API
  • Generation of sources and drivers so they can be used without Processor Expert using McuLibConfig, removal of dependency to NXP Kinetis SDK: components use a generic API approach to have them working with other SDKs.
  • New contributed ExceptionsHandler component
  • Callback Setter and Getter in USB CDC stack for simpler option handling
  • GenericTimeDate with flexible RTC support and added Unix Timestamp functions
  • LongKey events in Key component
  • FreeRTOS with optimized task selection on Cortex-M4/M7
  • Many smaller bug fixes and enhancements
SourceForge

SourceForge

Continue reading

Making-Of Sea Shell Sand Clock

The year is coming to an end, the Holiday season is approaching. In case you are looking for a nice present: I have completed my version of a sand clock: a clock writing the time into sand:

Sandclock

Sandclock

If you are interested to build your own version, I have documented the different steps with tips and tricks…

Continue reading