Smart IoT Sensor Fusion: Unleashing the Power of the Infineon Ecosystem
Fun with the Infineon Ecosystem - Introduction.
This project introduces a blog series that will include several entry projects. In each blog I will include an MCU and connect Shields & sensors from bundle C to them.
But first, please check out this project which describes the Challenge and how I participated.
Connect things with code Landing Page
The challenge page states the following:
Sensors, actuators, microcontrollers, communication modules, and security components are part of every IoT device. Infineon, is a one-stop technology partner for realizing smart, energy-efficient, and secure IoT devices.
This challenge is calling upon the Hackster community of global developers to build projects that connect Infineon’s MCU development platforms with additional hardware (sensors, actuators, etc.) and bring it to life by creating device libraries that can be publicly reused.
This statement highlights the essential components that make up Internet of Things (IoT) devices and introduces Infineon as a technology partner specializing in creating smart, energy-efficient, and secure IoT devices. I would like to break down and elaborate on the key points in the statement:
Components of IoT Devices: IoT devices typically consist of several key components:
Sensors: These are devices that can gather data from the physical world. Examples include temperature sensors, motion sensors, and light sensors.
Actuators: Actuators are responsible for taking action based on the data collected by sensors. For instance, they can control motors, switches, or valves.
Microcontrollers (MCUs): MCUs are the brains of IoT devices, responsible for processing data, making decisions, and controlling other components.
Communication Modules: These enable the device to connect to a network, typically the internet. This allows data to be transmitted to and from the device, enabling remote monitoring and control.
Security Components: Ensuring the security of IoT devices is crucial to protect against unauthorized access and data breaches. Security components include encryption, authentication, and secure boot mechanisms.
Infineon as a Technology Partner: Infineon is presented as a reliable and comprehensive technology partner for IoT development. They offer a range of solutions and expertise to facilitate the creation of IoT devices that are not only smart and energy-efficient but also secure.
The Challenge: The stement introduces a challenge that is open to the Hackster community, which consists of global developers and innovators. The challenge is to create projects that leverage Infineon's MCU development platforms and integrate them with additional hardware components such as sensors and actuators. The goal is to bring these projects to life by developing device libraries.
Infineon's MCU Development Platforms: These are likely development kits or hardware platforms provided by Infineon for building IoT applications. Developers can use these platforms as a foundation for their projects.
Additional Hardware: Developers participating in this challenge are encouraged to expand the functionality of these platforms by integrating sensors, actuators, and other hardware components. This allows for the collection of real-world data and the ability to take actions based on that data.
Device Libraries: These are sets of software code and libraries that developers can use to interface with the Infineon MCU platforms and connected hardware. By creating these libraries, developers make it easier for others to build their own IoT solutions using the same components and software tools.
Overall, this challenge invites the Hackster community to innovate and collaborate by using Infineon's technology to create IoT projects that can benefit a wide range of applications. These projects should not only demonstrate the capabilities of Infineon's hardware but also contribute to a library of resources that can be shared and reused by other developers interested in building smart, energy-efficient, and secure IoT devices.
I am only allowed to submit one project for the competition. I have several projects that accomplish the main goal of the challenge which is to:build projects that connect Infineon’s MCU development platforms with additional hardware (sensors, actuators, etc.) and bring it to life by creating device libraries that can be publicly reused. This project forms as an introduction and will introduce the other projects that I have done to meet the main goal of the challenge mentioned above.
My Steps taken to meet the ChallengeFor each project I will basically use the folollowing points to specify each project
- To get started, I will need to Choose an Infineon MCU.There are many different MCU Development Kits to choose from. There are several included in the Bundle supplied.
- Once I have chosen a platform, I will need to Attach the peripherals that I want to use.
- Once I have chosen an MCU and peripherals, I will need to decide which Development Environment I will be using that is compatible with the MCU that I select
- Once attached, I will Create a device library. This library will contain the code that you need to control the peripherals. You can use the Infineon development tools to create the library.
- Once I have created the device library, I will Test the device library, by using the library from a separate project.
- Once tested, I will Share it with the community. This will allow other developers to use your library in their project.
Infineon awareded me with a free hardware bundle for the challenge. I will try to eventually connect all the sensors included in the Bundle C and the Arduino Shield to the following list of MCU’s and Shields,.
The components I connected will be researched, connected, tested and finally creating a library to gather data from them. I will use ModusToolbox 3.1 as my development Environment
Hardware MCU and Shields:
Bundle C
- MCU CY8CPROTO-062-4343W
- MCU XMC4200
- MCU XMC1300 Boot Kit
- SHIELD S2GO MEMSMIC IM69D MEMS Microphone
- SHIELD S2GO PRESSURE DPS368
- SHIELD S2GO 3D TLI493DW2BW-A0
- SHIELD S2GO HALL TLE4964-3M
- Sensor EVAL PASCO2 MINIBOARD (USED in Entry 2)
- SHIELD BLDC Shield IFX007T
Additional Hardware Available on my Desk, That I have used.
- MCU PSoC™ 62S2 Wi-Fi BT Pioneer Kit (USED in Entry 2 )
- MCU 62S4 Pioneer Kit CY8CKIT-062S4 (USED in Entry 1 )
- MCU PSoC 62S2 evaluation kit (CY8CEVAL-062S2) (USED in Entry 1)
- MCU PSOC4 100s Pioneer Kit CY8CKIT-041-41XX
- MCU Arduino NANO
- SHIELD Seeed Grove Starter Kit (Arduino Grove Shield + 10 grove modules)
- MODULE Seeed Studio Grove Socket LED Module (USED in Entry 1 )
Development Environments:
- Modus Toolbox
- Visual Code
- RTOS
- AWS/AZURE IoT cloud Services
This is a blog series that will include several entry projects. In each blog I will include an MCU and connect Several Shields from the above list to them.
1. The first project Blog Connect things with code entry 1, I demonstrate how I connected a Grove module from my Starter Kit to a PSoC6 Kit that contains an Arduino Header Form Factor. I created a library that ports the Arduino commands to access the connected module using the Digital Pins. I have submitted this project for the challenge.
Hardware:
MCU: Infineon PSoC 62S2 evaluation kit (CY8CEVAL-062S2)
Sensor: Grove Socket LED Module
2. Project Blog ENTRY2 - Connecting PAS CO2 Sensor demonstrates how I connected the Sensor EVAL PASCO2 MINIBOARD to the PSoC 62S2 evaluation kit. I also have subnitted this project since it includes a sensor from Bundle C.
Hardware:
MCU: Infineon PSoC 62S4 pioneer kit (CY8CKIT- 062S4)
Sensor: EVAL PASCO2 MINIBOARD
Other Possible projects involving components from bundle COne possible Idea is, A Project Blog to demonstrate how to connected a Grove Shield from my Starter Kit to a PSOc6 Kit that contains an Arduino Header form Factor. Create a library that maps the Arduino headers to the MCU pins and implements the Arduino API calls to access the Shield.
I;ve listed a few possible future projects involving using one of the MCU’s mentioned above and connecting one of the following Sensors from Bundle C:
S2GO PRESSURE DPS368
- This looks like a resonable project to get the presure and tempreture. And it claims to be waterproof. I'll need to do some soldering though before I acan connect jumbers to it. I will also need to determine which MCU to connect it to.
S2GO MEMSMIC IM69D MEMS Microphone
- I might try and connect this I2S MEMS Microphone to my Arduino MKR LoraWAN.
S2GO 3D TLI493DW2BW-A0
- I might experiment with this S2GO sensor to sense magnetic fields in 3D. I will need to solder the pins and find some projects to try here on hackster.
S2GO HALL TLE4964-3M
- I would like to use this Hall effect switch shield in Infineons 2Go from factor to detect the postition of a magnet. I will need to SOlder the pins on and figure out which MCU to use.
XMC1300 Boot Kit,
- I will Explore the XMC4200 Microcontroller with the XMC1300 boot kit. I will evaluate the capabilities of the XMC4200 Microcontroller multiple applications solutions, I will test it using Infineon’s Modus Toolbox as well as the Arduino IDE.
BLDC Shield IFX007T,
- I will connect it to my Arduino Nano and experiment with the Sketch in the manual. Then I'll try to connect the it to the MCU
I am a retired Senior Software Engineer with a Bachelor of Science degree in Computer Science from Boston University. I graduated in 1980 and worked as a Software Engineer until my retirement in 2018. I have acquired a vast amount of knowledge in embedded systems through participation in RoadTest and Design Challenges sponsored by various vendors on element14. I have also participated in challenges on Hackster.io. I have been supplied with many development kits from companies such as NXP, Lattice, Renesas, Nordic, Infineon, and Cypress. I have experimented with several models of the Raspberry Pi, along with various shields. I have also used several Arduinos (MKR Wan 1300, NANO 33 IoT, UNO) along with the Groove sensor starter kit. I have typically evaluated the embedded software environments of these development kits. I have also evaluated the communities surrounding the kits by utilizing the forums and support available on the company websites. I always evaluate and scrutinize the documentation for accuracy and interpretation.
My interest in embedded systems spans many areas of computer science. I have a great deal of interest in firmware development environments, and through my various projects on element14 and Hackster.io, I have been fortunate to experience the setup, configuration, deployment, and debugging of many, including Microsoft VS Code on Windows 10, Ubuntu, and Raspberry Pi Buster; ModusToolbox from Infineon; NXP's MCUExpresso; Eclipse IDE; nRFConnect-SDK from Nordic Semiconductor; Arduino IDE; and the Arduino cloud. For operating systems, I have used Windows 10/11, Linux Ubuntu, and a few flavors of the Raspberry Pi OS (Buster and Bullseye), and FreeRTOS and AzureRTOS on supported MCUs. I have also used several languages on these MCUs and single-board computers (SBCs): C/C++, Python, and MicroPython. I also have an interest in and have used open source embedded development tools. I have used various communication protocols, such as Wi-Fi, LTE, and LoRaWAN, for my projects.
Create a Library in ModusTookboxSince the goal of this challenge is to Create a device library, I found this great article on the Forum.
Enhance ModusToolbox™: Adding Custom Libraries for Better Efficiency
It gives a comprehensive guide on how to create and import third-party libraries into ModusToolbox This library will contain the code that you need to control the peripherals.
I followed the example using ModusToolbox 3.1
His example is available to download, but I had problems building on two versions of MTB 2.4 and 3.0
- MTB 3.0 Problem in make file
- MTB 2.4 Problem with getlibs command..
OK so now I followed the directions according to the article, and created the library from scratch and it worked great. SUCCESS!!
I used
- MTB3.1 and the the PSoC62S2 board
- in the workspace: C:\CY8_psoc62S2-WIFI-BE\Test1
The guide outlines two methods: the neat way and the easy way.
The neat way involves using the Eclipse IDE for ModusToolbox™ to create a static library. This method ensures that the library is built using the ModusToolbox™-compatible ARM Cross GCC toolchain. By creating a C project, adding the necessary source and header files, and configuring the project properties, you can build the static library within ModusToolbox™.
The easy way involves manually creating the custom library using the GCC toolchain. This method requires compiling the source files using the arm-none-eabi-gcc command and then generating a library using the ar command. The resulting static library file and header files can be used in ModusToolbox™ projects.
When it comes to using custom libraries in ModusToolbox™, the guide also presents two approaches: the easy way and the neat way.
The easy way involves copying the library file and header files to a specific directory within your project. ModusToolbox™ projects automatically search for header files and archives in the project directory, so this method is straightforward. You can then invoke the functions provided by the library and compile the project.
The neat way, on the other hand, involves manually modifying the project's makefile. You add the path of the header files to the INCLUDES variable and the path of the library archive file and its name to the LDFLAGS variable. This method provides more control and is recommended for complex projects with multiple static libraries. After making these modifications, you can compile the project and verify that the library's functions are working as expected.
This conludes the introduction project for the Connect things with code!
Please feel free to comment on the contents of this and my other project associated with my challenge entries.
Now please check out my entries to the challenge by visiting and commenting on my projects:
Comments