Add hardware articles
@@ -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 |
@@ -20,6 +20,7 @@ declare module 'vue' {
|
||||
IFaGithub: typeof import('~icons/fa/github')['default']
|
||||
IFaGitlab: typeof import('~icons/fa/gitlab')['default']
|
||||
IFaHome: typeof import('~icons/fa/home')['default']
|
||||
IFaImage: typeof import('~icons/fa/image')['default']
|
||||
IFaLink: typeof import('~icons/fa/link')['default']
|
||||
IFaLinkedinSquare: typeof import('~icons/fa/linkedin-square')['default']
|
||||
IFaMoonO: typeof import('~icons/fa/moon-o')['default']
|
||||
|
||||
@@ -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>
|
||||
|
||||