During my study Computer Engineering (Dutch: Technische Informatica, or TI), I have completed a variety of projects. Every project was based on a real-life scenario and generally had to be completed in two months. By performing these projects I have learned how to apply the knowledge learned during the courses. Furthermore, I have learned how to develop and deliver a product while cooperating in a team of 4-7 team members. A short summary of important concepts in the projects below are:
- OOP languages: Java, C# and .Net, C++
- C, NodeJS
- OOM (UML)
- Databases (SQL), JSON
- Data Communication and Networking
- Embedded Systems
- 2D- and 3D programming
- Computer vision
- Teamwork, version control with Git and develop methods like Xtreme Programming, Scrum and the V-model
On this page brief information can be found concerning the projects I have completed.
Graduation internship Croonwolter&dros: LoRaWAN Current project
#LoRaWAN #C #IoT #Internet of Things #EmbeddedThe department of Technical Automation and Computerization (Technische Automatisering en Informatisering) was interested in the new LoRaWAN IoT technique. In this graduation internship I haveresearched (the differences between) LoRa and LoRaWAN, as well as the different types of LoRaWAN-hardware on the current market. Moreover, I have build end-to-end applications that communicated via the LoRaWAN KPN network and The Things Network.
Computer Vision and recognition of objects with Artificial Neural Networks Completion: January 2018
#OpenCV #Artificial neural network #C++
During the minor Vision & Robotics I have built two different projects.
Firstly I created a OpenCV-application combined with an artificial neural network to identify electronical parts that were placed under a video camera.
By training the neural network in advance with images of electronical parts, the application could classify objects by determining object features.
Secondly, together with a multidisciplinary team we have built a system to identify tomato plants and determine their stem diameter through computer vision.
Stem diameter measurements normally harm the plant, but with computer vision algorithms the plant will not experience any harm or stress.
Virtual Reality project for the department of Biology and Medical Laboratory Research Completion: June 2017
#Virtual Reality #HTC Vice #C++The department of Biology and Medical Laboratory Research of my university was interested in the possibility to explore biological cells in 3D, instead of 2D images in books. Students can now explore biological cells by walking 'inside' them. They can point at cell organelles to get a more detailed description and students can play quizzes to test their knowledge.
3D simulations, Unity and shaders Completion: June 2017
#OpenGL #Unity #C++ #Shaders #Physics enginesIn a period of 6 months, I have deepened my 3D programming skills by developing different projects with OpenGL and Unity. Furthermore, I deployed these projects in Virtual Reality (HTC Vive, Oculus Rift), augmented reality (Vuforia), the Avans VR CAVE and on a PC.
Internship TNO: ZigBee Completion: January 2017 (6 months)
#Internet of Things #IoT #Embedded #ZigBee #XbeeThe department of Distributed Sensor Systems (DSS) needed practical information in order to be able to apply wireless communication technologies to current and future projects. I have acquired knowledge about different communication technologies like LoRaWAN and Z-Wave, but I primarily focussed on ZigBee. I have built a wireless (ZigBee/XBee) setup for an existing project which was operating on wired communication and I have tested the possibilities of ZigBee (and other wireless communication technologies). During this project I also learned a lot about how these protocols are build and how they function, for example the variety of network topology that exists.
3D graphics interactive game Completion: June 2016
#C++ #OpenGL 3DDuring the last project of the second academic year, we have built an interactive 3D graphics game. The main purpose of this project was to acquire the basics of OpenGL, like: OpenGL rendering, wireframes, colours and textures, models, lighting, heightmaps and optimisation. We chose to make use of the Nintendo Wii remote controllers and we added pressure plates, connected via Arduinos, to control the game. The game is set in ancient Japan and two players need to cooperate in order to defend their castle from enemy troops. With the remote controllers players can shoot arrows with their bows, and the pressure plates on the floor can provide power-ups. When a player steps on a pressure plate when it is fully lit, the plate will activate a power-up, like enlarging the enemies, so it is easier to hit them with arrows and clearing all enemies from the battlefield.
Microcontrollers mini project Completion: April 2016
#Embedded #C #Big AVRIn the microcontrollers course we have worked with an Atmel ATmega128. We have discussed topics like interrupts, polling, 7 segment displays, LCD modules, timers/counters, PWM and ADC, Serial Communication and a brief introduction to Assembly. To finish this course we have made an application that displays text (given by the user) on two 8 x 8 led matrix displays.
Energy saving mini project Completion: April 2016
#Raspberry pi #Linux #Python #NodeJS #JavaScriptIn this "mini project" I have build a system to save energy by only turning a light on if there is any motion in the area and the light level is low enough. It is also possible to override the sensors by using the controls on the website, that is available on devices like a laptop and mobile phone. All this data is monitored and saved to a database. This way it is possible to show graphs and stats and for example calculate power usage. This entire system runs on a Raspberry Pi. The hardware is controlled by Python, whereas the website controls and database connection is served by a NodeJS REST API.
IP based Alarm Clock (embedded) Completion: March 2016
#Embedded #C #Atmel MicroControllerAn existing hardware system (SIR120 by StreamIT) is used in this project to realize a IP bases Alarm Clock. StreamIT has provided very basic software (based on the NutOS operating system) that needs to be extended with functionalities. Users have to be able to use the device as an alarm device that will play Internet Radio Streams when an alarm goes off. We've developed an online user panel which can be accessed through a browser. Users can install their alarms on the device or manage their alarms and other settings online. The device will receive these settings from a server, to enhance the user experience.
Mobile Guiding System Completion: January 2016
#C-sharp .Net #Windows10 #LINQ #UWP #XamlA fictional tourist information center asked us to build a Windows 10 Phone App that provides tours throughout Breda, our student city. We used GPS to track the users location and provided them with a choice of tours to take (Monuments, bars etc.). After the selection is made, the user will be guided through the city. Arriving at a location (for example a monument) will trigger an event on the phone and will provide the user with varied kinds of information about the location. This project provided us some new insights into Windows 10, phone developing and some cool C# stuff.
Philips Hue Mobile Application Completion: January 2016
#C-sharp .Net #JSON #UWPPhilips Hue is a wireless lighting system that has many posibilities. For example turn on the lights when entering a room, flashing green when you receive a WhatsApp message etc. I have built a (mobile) UWP App to test such possibilities. My main goal was to succesfully connect with Hue Light bulbs and alter their settings like color and brightness.
Remote Healthcare Application Completion: October 2015
#C-sharp .Net #Data NetworkWe built a remote healthcare application to provide a client - doctor experience, where the doctor is sitting in his office and the client can be anywhere in the world. The client only needs an exercise bicycle (Kettler X7) and our application. The doctor will provide the client with his personal credentials so he can connect with the doctor, using an encrypted SSL connection to guarantee privacy. The doctor can monitor his clients progress and it is possible to chat via the chat in the application. We have also added additional training video's for the client to practice on his or her condition. After each session all data will be saved to the server so the doctor can see all data, sessions etc. of his clients. The client can also look into his own session recordings. This way we have tried to improve usability for all users and decrease the need for clients to visit a hospital. For example they can now have sessions at home, which will ultimately be better for the environment because of the reduction of hospital visits.
Arena Hunters Game Completion: June 2015
#Java #Java2D #OOM #Nintendo Wii
Fictional amusement park 'Essteling' asked us to build an interactive attraction for their visitors.
We achieved this by building a 2 - 4 player game that is controlled by the Nintendo Wii remote.
The rules:
- Playable for 2 - 4 persons
- Different game modes: team vs team or free for all
- Every round all players start with 4 arrows
- If a player shoots an arrow and that arrow hits a player, the player that has been hit is down
- If an arrow that has been shot does not hit a player, but hits a wall instead, it can be picked up by any player. Giving that player an additional arrow.
Festival Planner Completion: April 2015
#Java #Java2D #OOMWe built a simulator to simulate a festival to check if the chosen festival setup will suffice during a real festival. Via a calendar you can add stages and fill them with artists on a given day and time. After this you can place all objects, like stages, shops, food stands, trees etc. Next the simulation will start and visitors will enter the festival through the entrance. They have several needs, like thirst, hunger and will act to that by buying a hamburger or visiting a restroom when needed. When a stage has an artist that is starting his show, the spotlights will turn on on that stage and the people will attend to that stage. We can then see if the setup is bad or good, by analysing whether there are any chokepoints. This will result in an optimised festival setup. To enhance usability I have built a web-portal with an accessible agenda view of the festival.
Asteroids game Completion: April 2015
#Java #Java2D #OOMThis project has been done solo by me. To test my 2D skills I created a game and added a physics engine (JBox2D) to detect and react to collisions. Some fun math calculations were required to let the game play the way I wanted. The game can be controlled by keyboard and mouse.
Automatic Guided Vehicle Completion: January 2015
#Java #Embedded Systems #OOM #GitDuring this project we had our first experience with embedded systems, sensors and actuators. In this case a business man wanted a robot prototype that was able to patrol his warehouses, on it's own, to act as an security guard. The robot had to be able to follow a line that would be put on the floor so the robot could use these as paths and could calculate at which intersection it had to turn. These calculated routes could be sent by an application we built that uses a Bluetooth signal. It was not allowed for the robot to get stuck, bump into anything or fall into holes that were in the floor (because the warehouses were in a bad condition). For these tasks we used a BoeBot, a robot kit with a programmable Javelin Stamp microcontroller. Some parts that we had to use:
- Driving mechanism: RC Servomotors
- Detection of objects and depth: antennas and infra-red detectors
- Manual control via a remote control: decoding of infra-red messages
- Linefollowers: QTI sensors
- Communication between computer application and the bot via Bluetooth IEEE 802.15.1
Internet Weather Station Completion: October 2014
#Java
This was a rather simple and introductory project. Our case study:
On top of the Avans main building an Internet Weather Station (IWS) is installed.
This IWS measures weather data like temperature, wind speed, humidity etc which is saved to a MySQL database.
We were given the task to develop a GUI (Graphical User Interface) for this data, that was capable to show weather data from a given data(range).
It also had to calculate specific weather conditions like:
- number of degree days in a given period
- longest period with longest temperature rising
- etc
Overall, this project was an introduction to programming with algorithms, teamwork and an Object-Oriented Programming (OOP) language: Java.