diff --git a/config.toml b/config.toml index eaa8a5c..a312fe0 100644 --- a/config.toml +++ b/config.toml @@ -16,6 +16,10 @@ profilePicture = "img/triangels.png" pygmentsCodeFences = true pygmentsCodeFencesGuessSyntax = true +[markup] + [markup.goldmark] + [markup.goldmark.renderer] + unsafe = true [outputs] home = ["HTML"] diff --git a/content/posts/framework-gamepad.md b/content/posts/framework-gamepad.md index b6790cf..78d83e7 100644 --- a/content/posts/framework-gamepad.md +++ b/content/posts/framework-gamepad.md @@ -3,23 +3,27 @@ title: "Framework joystick" date: 2025-07-11T22:11:00+01:00 draft: false summary: "PSP joystick extension with ch32v003 for framework laptops..." -images: ["/static/img/led-cricle-rainbow.png"] +images: ["(/img/FW-EC-PSP-Joy-inserted.jpg"] --- I attended [38c3](https://events.ccc.de/congress/2024/infos/index.html) last year and it was amazing as always. I brought a modified robot vacuum to the event (it has BLDC motors and goes fast). But I forgot the gamepad so I chouldn't even drive it around :/ So instead of goofing around I goofed around in KiCad and make this[^1]: - -![FW-EC-PSP-Joystick](/img/FW-EC-PSP-Joy-inserted.jpg#center) - -I ordered the PCBs just before leaving for new years eve. And with every PCB project I needed a secound iteration. The error that got me wasn't actually in the design. I left the tickness of the PCB at the standard of 1.6mm and so the USB-C plug did not fit as its designed for 0.8mm PCBs 🤦. -It wasn't nice but by bending all of the USB-C plug's pins I was able to solder them. After flashing the [gamepad example](https://github.com/cnlohr/rv003usb/tree/master/demo_gamepad) from cnlohr's software usb library for the ch32v003[^2] it just works :D It could use some offset calibration (leaving the joystick in the middle does not result in it reporting 0,0) and the imu sensor i added has no driver yet, but I was able to control the robot at this point so I call the project done for now :) +
+ FW-EC-PSP-Joystick + FW-EC-PSP-Joystick uninserted +
-...I put the design files[^3] and the code on [github](https://github.com/schnilz/FW-EC-PSP-Joy). So feel free to make your own (there be dragons; no documentation, ask questions maybe) +It is an extension module for Framework computers. I own a Framework 13 laptop which has 4 slots to put extension cards in. My configuration is now 1 green USB-C, 1 USB-A, 1 HDMI and 1 Joystick. -![FW-EC-PSP-Joystick uninserted](/img/FW-EC-PSP-Joy-uninserted.jpg) +I ordered the PCBs just before leaving 38c3 for new years eve. And with every PCB project I of cause needed a secound iteration. The error that got me on the first version wasn't actually in the design. I left the tickness of the PCB at the standard of 1.6mm and so the USB-C plug did not fit as its designed for 0.8mm PCBs 🤦. +It wasn't nice but by bending all of the USB-C plug's pins I was able to solder them and validate the rest of the design. After flashing the [gamepad example](https://github.com/cnlohr/rv003usb/tree/master/demo_gamepad) from cnlohr's software usb library for the ch32v003[^2] it just works :D But because of the wrong thickness and bend USB pins the PCB was realy twisted when inserted into the laptop. Thats why I reordered the PCB with the correct thickness[^3]. This secound version's hardware works as well and after tweeking the example-software a bit (changed the joystick axes to ADC measurments) the overall thing works quite well i must say. It could use some offset calibration (leaving the joystick in the middle does not result in it reporting 0,0) and the imu sensor i added has no driver yet, but I was able to control the robot at this point so I call the project done for now :) + + +...I put the design files[^4] and the code on [github](https://github.com/schnilz/FW-EC-PSP-Joy). So feel free to make your own (there be dragons; no documentation, ask questions maybe) [^1]: the PCB, the rest was designed later [^2]: THE 10cent riscV microcontroller! -[^3]: all CAD files created with [FreeCAD](https://www.freecad.org/) <3 \ No newline at end of file +[^3]: And I included some minor changes like a complete redesign to make one sided PCB assembly possible. +[^4]: all CAD files created with [FreeCAD](https://www.freecad.org/) <3 \ No newline at end of file diff --git a/static/img/FW-EC-PSP-Joy-inserted.jpg b/static/img/FW-EC-PSP-Joy-inserted.jpg index 1ceb613..f944d9f 100644 Binary files a/static/img/FW-EC-PSP-Joy-inserted.jpg and b/static/img/FW-EC-PSP-Joy-inserted.jpg differ diff --git a/static/img/FW-EC-PSP-Joy-inserted_small.jpg b/static/img/FW-EC-PSP-Joy-inserted_small.jpg new file mode 100644 index 0000000..c2dd2b8 Binary files /dev/null and b/static/img/FW-EC-PSP-Joy-inserted_small.jpg differ diff --git a/static/img/FW-EC-PSP-Joy-uninserted.jpg b/static/img/FW-EC-PSP-Joy-uninserted.jpg index 43e9b2a..dc8fda6 100644 Binary files a/static/img/FW-EC-PSP-Joy-uninserted.jpg and b/static/img/FW-EC-PSP-Joy-uninserted.jpg differ diff --git a/static/img/FW-EC-PSP-Joy-uninserted_small.jpg b/static/img/FW-EC-PSP-Joy-uninserted_small.jpg new file mode 100644 index 0000000..d98fa52 Binary files /dev/null and b/static/img/FW-EC-PSP-Joy-uninserted_small.jpg differ diff --git a/themes/nils-theme/layouts/partials/head.html b/themes/nils-theme/layouts/partials/head.html index 94f9648..f960820 100644 --- a/themes/nils-theme/layouts/partials/head.html +++ b/themes/nils-theme/layouts/partials/head.html @@ -254,6 +254,19 @@ margin: 0.7rem; } + .image-row { + display: flex; + justify-content: center; + gap: 1rem; + /* space btwn images */ + margin: 1rem 0; + } + + .image-row img { + max-width: 100%; + height: auto; + } + article .footnotes { font-size: 0.75em; clear: inline-end; @@ -292,4 +305,4 @@ - + \ No newline at end of file