@ -0,0 +1,91 @@
|
||||
--- |
||||
title: "Bank ATM" |
||||
description: "Bank ATM." |
||||
navigation: true |
||||
date: "2018-03-18" |
||||
img: "/img/bank-atm/arduino-fritzing.png" |
||||
tags: |
||||
- C++14 |
||||
- Qt4 |
||||
- Software |
||||
- Hardware |
||||
--- |
||||
|
||||
<small>Bank ATM.<br> |
||||
|
||||
The goal of this project was to create a banking system, including an ATM |
||||
client. It was created for one of the courses (project 3) at Hogeschool |
||||
Rotterdam and was written in C++14 and Qt4. |
||||
|
||||
The |
||||
[slides](https://docs.google.com/presentation/d/1W0L4e7r0Vqp5Qp3RaNcMhqrt1gkLSrU4T6heOZz_IqQ){target="_blank"} |
||||
for the presentation that I gave at Hogeschool Rotterdam. |
||||
|
||||
## Product demo |
||||
|
||||
Korte video waarin de meeste functionaliteit van de bank ATM wordt getoond. |
||||
|
||||
::VideoLazy{:src="https://riyyi.com/media/bank-atm-demo.webm"} |
||||
:: |
||||
|
||||
## Overzicht componenten |
||||
|
||||
- Bank |
||||
- MySQL server |
||||
- Native applicatie |
||||
- Arduino Nano |
||||
- RFID-RC522 |
||||
- Matrix membrane 4x4 keypad |
||||
- USB kabel voor seriële communicatie |
||||
|
||||
 |
||||
|
||||
## Overzicht systeem |
||||
|
||||
De applicatie bestaat uit 3 threads, welke allemaal een unieke functie hebben. |
||||
De main thread bevat de GUI. De database thread voert alle queries uit en slaat |
||||
deze data op. En als laatst de serial thread, deze thread bevat een listener die |
||||
alle seriële data ontvangt. Afhankelijk van wat de serial thread aan user input |
||||
ontvangt zal de SerialCommand class "commando's" uitvoeren die de GUI en |
||||
database thread gebruiken. |
||||
|
||||
 |
||||
|
||||
## Database ERD |
||||
|
||||
Hieronder is de ER (Entity-relationship) diagram te vinden. |
||||
|
||||
 |
||||
|
||||
## Database ontwerp |
||||
|
||||
- MySQL server |
||||
- Lokaal opgeslagen |
||||
|
||||
Hieronder is de EER (Enhanced entity-relationship) diagram te vinden. |
||||
|
||||
 |
||||
|
||||
## Arduino - fritzing |
||||
|
||||
- Arduino Nano |
||||
- RFID-RC522 |
||||
- Matrix membrane 4x4 keypad |
||||
|
||||
 |
||||
|
||||
## GUI |
||||
|
||||
- Native applicatie |
||||
- Geschreven in C++14 en Qt4 |
||||
- Cross platform (build tool: qmake) |
||||
- Multithreaded |
||||
|
||||
Ten alle tijden kan de sessie worden afgebroken door de pas uit de pinautomaat |
||||
te verwijderen, de interface wordt daarna naar de inlogpagina doorgestuurd. Alle |
||||
velden waar de gebruiker gegevens kan invoeren, hebben de mogelijkheid voor het |
||||
weergeven van foutmeldingen. |
||||
|
||||
Hieronder zijn schermvoorbeelden te vinden. |
||||
|
||||
 |
@ -0,0 +1,37 @@
|
||||
--- |
||||
title: "Elevator Floor Module" |
||||
description: "Elevator floor module." |
||||
navigation: false |
||||
date: "2017-12-02" |
||||
img: "/img/elevator-floor-module/backside-view-final.jpg" |
||||
tags: |
||||
- Hardware |
||||
--- |
||||
|
||||
The goal of this project was to create a working miniature elevator. Each member |
||||
of the team made his own level, which we would stack on top of each other in the |
||||
end. The engine room was a combined effort of the team and it would talk to all |
||||
the levels via I2C. This was my first project at Hogeschool Rotterdam. |
||||
|
||||
Het houten frame van de verdieping. |
||||
|
||||
 |
||||
|
||||
Hardware schema van alle sensoren, de Arduino Mega representeerd de motorkamer. |
||||
|
||||
 |
||||
|
||||
Het bedieningspaneel aan de voorkant van de lift. De 2 pushbuttons worden |
||||
gebruikt om de lift op te roepen. Het segment display geeft de huidige locatie |
||||
van de liftkooi weer en het ledje aan de bovenkant simmuleert de deur. |
||||
|
||||
 |
||||
|
||||
De sensoren worden aangestuurt met een Arduino Uno. |
||||
De uiteindelijke aansluiting ziet er als volgt uit. |
||||
|
||||
 |
||||
|
||||
Alle lift verdiepingen van ons project groepje opgestapeld tot een toren. |
||||
|
||||
 |
@ -0,0 +1,130 @@
|
||||
--- |
||||
title: "Guinea Pig Cage" |
||||
description: "Pet guinea pig cage." |
||||
navigation: true |
||||
date: "2018-06" |
||||
img: "/img/guinea-pig-cage/pig.jpg" |
||||
tags: |
||||
- Hardware |
||||
--- |
||||
|
||||
This is a custom designed and build cage for the guinea pigs of my girlfriend. |
||||
|
||||
## Design |
||||
|
||||
3D model of the cage.<br> |
||||
[View](https://www.tinkercad.com/embed/jtFlKzD78Hj) |
||||
the model in 3D.<br> |
||||
See the project at |
||||
[Thinkercad](https://www.tinkercad.com/things/jtFlKzD78Hj). |
||||
|
||||
 |
||||
|
||||
::GridWithImage |
||||
--- |
||||
rows: |
||||
- title: Saw |
||||
- title: File |
||||
- title: Sandpaper |
||||
- title: Drill |
||||
- title: Phillips head screwdriver |
||||
- title: Paint brush |
||||
- title: Tape measure |
||||
--- |
||||
:: |
||||
|
||||
## Shopping list |
||||
|
||||
::GridWithImage |
||||
--- |
||||
rows: |
||||
- title: OSB (244x122cm) |
||||
src: "/img/guinea-pig-cage/osb.jpg" |
||||
- title: Pond liner (200x250cm) |
||||
src: "/img/guinea-pig-cage/pond-liner.jpg" |
||||
- title: Timberboards (250cm) |
||||
src: "/img/guinea-pig-cage/timberboard-before.jpg" |
||||
count: 3 |
||||
- title: Dimensional lumber (270cm) |
||||
src: "/img/guinea-pig-cage/dimensional-lumber.jpg" |
||||
count: 4 |
||||
- title: Screws (5cm) |
||||
src: "/img/guinea-pig-cage/screws-5cm.jpg" |
||||
count: 50 |
||||
- title: Screws (3.5cm) |
||||
src: "/img/guinea-pig-cage/screws-3-5cm.jpg" |
||||
count: 10 |
||||
- title: Wind hook / window buckle |
||||
src: "/img/guinea-pig-cage/wind-hook.jpg" |
||||
- title: Metal rings |
||||
src: "/img/guinea-pig-cage/metal-rings.jpg" |
||||
count: 9 |
||||
- title: Hinges |
||||
src: "/img/guinea-pig-cage/hinges.jpg" |
||||
count: 1 |
||||
- title: Child safe paint (375ml) |
||||
src: "/img/guinea-pig-cage/paint.jpg" |
||||
- title: Brick |
||||
--- |
||||
:: |
||||
|
||||
## Build |
||||
|
||||
All measurements of the wooden materials. |
||||
|
||||
| OSB | | Timberboard | | Dimensional lumber | |
||||
|---------------------------------------------------|---|------------------------------------------------------------|---|------------------------------------------------------------------| |
||||
|  | |  | |  | |
||||
|
||||
\* = optional<br> |
||||
~ = around |
||||
|
||||
### Construction |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
The timberboard has to be painted on the inward facing side, for wear protection. |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
 |
@ -0,0 +1,80 @@
|
||||
--- |
||||
title: "Smart Outlet" |
||||
description: "Home automation smart outlet." |
||||
navigation: false |
||||
date: "2018-10-31" |
||||
img: "/img/smart-outlet/result.jpg" |
||||
tags: |
||||
- Hardware |
||||
--- |
||||
|
||||
This page describes my version of a smart socket for home automation. |
||||
The device can be toggled via the button on the enclosure or a wireless signal. |
||||
|
||||
## Build |
||||
|
||||
Pictured below is a scetch of the concept of the project.<br> |
||||
As well as an electrical circuit. |
||||
|
||||
 |
||||
|
||||
The MDF enclosure is cut out with a laser cutter. The base of the design is |
||||
generated via |
||||
[boxes.py](https://www.festi.info/boxes.py/ClosedBox). |
||||
Holes have been added to the base so that the cable, |
||||
socket, LED and button can be mounted. |
||||
|
||||
 |
||||
|
||||
The button is printed with a 3D printer, the bottom part of the button is |
||||
extended by 2mm on each side (4mm in total), so that it stays in place. |
||||
|
||||
 |
||||
|
||||
This is the final electrical circuit that was used, which is made in Fritzing. |
||||
All hardware components (minus the power supply) are incorporated in this |
||||
circuit. A red LED is used as an example appliance that can be toggled. |
||||
|
||||
 |
||||
|
||||
Pictured below is a model of the design in Tinkercad, the button will be printed |
||||
in 3D and the housing will be cut out with the laser cutter. The black cylinder |
||||
represents the power cable. |
||||
|
||||
Front view. |
||||
|
||||
 |
||||
|
||||
Side view. |
||||
|
||||
 |
||||
|
||||
Back view. |
||||
|
||||
 |
||||
|
||||
Box cut out. |
||||
|
||||
 |
||||
|
||||
3D printed button. |
||||
|
||||
 |
||||
|
||||
Overview of all the electronics. |
||||
|
||||
 |
||||
|
||||
The electronics mounted in the box. |
||||
|
||||
 |
||||
|
||||
Completed assembly. |
||||
|
||||
 |
||||
|
||||
Domoticz is used as a controller, which completes the smart outlet project. View |
||||
the demo below. |
||||
|
||||
::VideoLazy{:src="https://riyyi.com/media/smart-outlet-demo.webm"} |
||||
:: |
@ -0,0 +1,83 @@
|
||||
--- |
||||
title: "Xbox 360 Controller Type-C Mod" |
||||
description: "Mod to change the Xbox 360 wired controller to Type-C." |
||||
navigation: false |
||||
date: "2022-11-28" |
||||
img: "/img/type-c-mod/controller-after.jpg" |
||||
tags: |
||||
- Hardware |
||||
--- |
||||
|
||||
<small>Mod to change the Xbox 360 wired controller to Type-C.<br> |
||||
|
||||
## Result |
||||
|
||||
 |
||||
|
||||
 |
||||
|
||||
## Tools |
||||
|
||||
::GridWithImage |
||||
--- |
||||
rows: |
||||
- title: Soldering iron |
||||
- title: Wire stripper |
||||
src: "/img/type-c-mod/wire-stripper.jpg" |
||||
- title: Round file |
||||
src: "/img/type-c-mod/round-file.jpg" |
||||
- title: Nail file |
||||
src: "/img/type-c-mod/nail-file.jpg" |
||||
--- |
||||
:: |
||||
|
||||
## Shopping list |
||||
|
||||
::GridWithImage |
||||
--- |
||||
rows: |
||||
- title: Solder |
||||
- title: 3D printed bezel |
||||
src: "/img/type-c-mod/printed-bezel.jpg" |
||||
- title: USB Type-C female socket |
||||
src: "/img/type-c-mod/port.jpg" |
||||
--- |
||||
:: |
||||
|
||||
Unfortunately, the original design was a little fragile at the round part that |
||||
would slide into the housing and it would snap off. I tweaked the design by |
||||
moving the USB port up by 1mm and reinforcing it by attaching it on the sides, |
||||
as there was space to do so. The 3D bezel design was taken from here: |
||||
[thingiverse.com/thing:3066354](https://thingiverse.com/thing:3066354).<br> |
||||
The new edited design: |
||||
[thingiverse.com/thing:5664077](https://thingiverse.com/thing:5664077).<br> |
||||
This is the USB-C port I used: |
||||
[aliexpress.com/item/1005002328403673.html](https://aliexpress.com/item/1005002328403673.html) |
||||
|
||||
## Build |
||||
|
||||
Unmodified, the original cable hole is a little too narrow to fit a Type-C port. |
||||
|
||||
 |
||||
|
||||
I used the nail file to slightly widen the hole, this is what it looks like afterwards. |
||||
|
||||
 |
||||
|
||||
Initially, my plan was to replace the original connector with a male pin header |
||||
and dupont connectors, but my soldering iron couldn't get hot enough to melt the |
||||
solder of the thick pins. So instead, I repurposed the original wires. |
||||
|
||||
 |
||||
|
||||
I used a third hand to help keep the port in place while soldering. |
||||
|
||||
 |
||||
|
||||
Finished soldering. |
||||
|
||||
 |
||||
|
||||
Test fitting everything together. |
||||
|
||||
 |
After Width: | Height: | Size: 316 KiB |
After Width: | Height: | Size: 72 KiB |
After Width: | Height: | Size: 176 KiB |
After Width: | Height: | Size: 255 KiB |
After Width: | Height: | Size: 188 KiB |
After Width: | Height: | Size: 140 KiB |
After Width: | Height: | Size: 192 KiB |
After Width: | Height: | Size: 87 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 344 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 460 KiB |
After Width: | Height: | Size: 336 KiB |
After Width: | Height: | Size: 386 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 646 KiB |
After Width: | Height: | Size: 352 KiB |
After Width: | Height: | Size: 626 KiB |
After Width: | Height: | Size: 461 KiB |
After Width: | Height: | Size: 510 KiB |
After Width: | Height: | Size: 384 KiB |
After Width: | Height: | Size: 572 KiB |
After Width: | Height: | Size: 584 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 372 KiB |
After Width: | Height: | Size: 664 KiB |
After Width: | Height: | Size: 607 KiB |
After Width: | Height: | Size: 436 KiB |
After Width: | Height: | Size: 627 KiB |
After Width: | Height: | Size: 478 KiB |
After Width: | Height: | Size: 479 KiB |
After Width: | Height: | Size: 472 KiB |
After Width: | Height: | Size: 477 KiB |
After Width: | Height: | Size: 558 KiB |
After Width: | Height: | Size: 422 KiB |
After Width: | Height: | Size: 315 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 470 KiB |
After Width: | Height: | Size: 379 KiB |
After Width: | Height: | Size: 431 KiB |
After Width: | Height: | Size: 373 KiB |
After Width: | Height: | Size: 575 KiB |
After Width: | Height: | Size: 609 KiB |
After Width: | Height: | Size: 604 KiB |
After Width: | Height: | Size: 475 KiB |
After Width: | Height: | Size: 243 KiB |
After Width: | Height: | Size: 605 KiB |
After Width: | Height: | Size: 680 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 106 KiB |
After Width: | Height: | Size: 123 KiB |
After Width: | Height: | Size: 379 KiB |
After Width: | Height: | Size: 247 KiB |
After Width: | Height: | Size: 352 KiB |
After Width: | Height: | Size: 792 KiB |
After Width: | Height: | Size: 266 KiB |
After Width: | Height: | Size: 277 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 396 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 160 KiB |
After Width: | Height: | Size: 131 KiB |
After Width: | Height: | Size: 179 KiB |
After Width: | Height: | Size: 189 KiB |
After Width: | Height: | Size: 107 KiB |
After Width: | Height: | Size: 212 KiB |
After Width: | Height: | Size: 142 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 302 KiB |
After Width: | Height: | Size: 257 KiB |
After Width: | Height: | Size: 176 KiB |
After Width: | Height: | Size: 89 KiB |
@ -0,0 +1,46 @@
|
||||
<template> |
||||
<ul class="list-group pb-3"> |
||||
<li v-for="(row, index) in props.rows" :key="index" class="list-group-item d-flex justify-content-between align-items-start"> |
||||
{{ row.title }} |
||||
<div> |
||||
<span v-if="row.count" class="badge text-bg-primary rounded-pill">{{row.count}}</span> |
||||
<template v-if="row.src && row.count"> |
||||
|
||||
</template> |
||||
<a v-if="row.src" :href="getPublicPath(row.src)" class="text-end" target="_blank"> |
||||
<IFaImage class="text-end" /> |
||||
</a> |
||||
</div> |
||||
</li> |
||||
</ul> |
||||
</template> |
||||
|
||||
<script setup lang="ts"> |
||||
const props = defineProps<{ |
||||
rows: { |
||||
title: string, |
||||
src?: string, |
||||
count?: number |
||||
}[] |
||||
}>(); |
||||
</script> |
||||
|
||||
<!-- |
||||
Usage: |
||||
|
||||
YAML method. |
||||
|
||||
::GridWithImage |
||||
--- |
||||
rows: |
||||
- title: My title |
||||
- title: Another title |
||||
src: "/img/path-to-img.jpg" |
||||
--- |
||||
:: |
||||
|
||||
Inline method. |
||||
|
||||
::GridWithImage{:rows='[ {"title": "My title" }, {"title": "Another title", "src": "/img/path-to-img.jpg"} ]'} |
||||
:: |
||||
--> |
@ -1,3 +1,11 @@
|
||||
<template> |
||||
Man of few words. |
||||
<h2>CV</h2> |
||||
<p> |
||||
Download the PDF here: |
||||
<a href="https://riyyi.com/media/cv-en-rick-van-vonderen.pdf">English</a>, |
||||
<a href="https://riyyi.com/media/cv-rick-van-vonderen.pdf">Nederlands</a> |
||||
</p> |
||||
|
||||
<object data="https://riyyi.com/media/cv-en-rick-van-vonderen.pdf" type="application/pdf" |
||||
style="width: 100%; height: calc(100vh - 280px)"></object> |
||||
</template> |
||||
|