-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
e886b2a
commit 5460e7e
Showing
75 changed files
with
458 additions
and
11,564 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
public/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,6 @@ | ||
[submodule "themes/ataraxia"] | ||
path = themes/ataraxia | ||
url = https://github.com/gersonbdev/ataraxia-zola.git | ||
[submodule "themes/anatole-zola"] | ||
path = themes/anatole-zola | ||
url = [email protected]:longfangsong/anatole-zola.git |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,7 @@ | |
base_url = "https://SuperTails.github.io" | ||
|
||
default_language = "en" | ||
theme = "ataraxia" | ||
theme = "anatole-zola" | ||
|
||
# Whether to automatically compile all Sass files in the sass directory | ||
compile_sass = true | ||
|
@@ -61,11 +61,10 @@ smart_punctuation = false | |
[extra.social] | ||
author_link = "https://SuperTails.github.io" | ||
#twitter = "@user" | ||
links = [ | ||
{ name = "Email", url = "mailto:[email protected]", icon = "bi-envelope-fill" }, | ||
{ name = "GitHub", url = "https://github.com/SuperTails", icon = "bi-github" }, | ||
{ name = "LinkedIn", url = "https://www.linkedin.com/in/carson-swoveland-b45116231/", icon = "bi-linkedin" }, | ||
] | ||
github = "SuperTails" | ||
linkedin = "carson-swoveland-b45116231" | ||
#{ name = "Email", url = "mailto:[email protected]", icon = "bi-envelope-fill" }, | ||
#] | ||
|
||
[extra.seo] | ||
google_analytics = "G-X7Q1QJMZ5G" | ||
|
@@ -84,14 +83,17 @@ smart_punctuation = false | |
[languages.en] | ||
title = "Carson Swoveland" | ||
description = "Computer Engineer, Software Developer, Tinkerer" | ||
generate_feed = true | ||
feed_filename = "atom.xml" | ||
generate_feeds = true | ||
feed_filenames = ["atom.xml"] | ||
taxonomies = [ | ||
{ name = "tags", feed = true, paginate_by = 5 }, | ||
{ name = "categories", feed = true, paginate_by = 5 } | ||
] | ||
|
||
[languages.en.translations] | ||
home = "Home" | ||
about = "About" | ||
archive = "Archive" | ||
date_format = "%Y-%m-%d" | ||
post = "Post" | ||
category = "Category" | ||
tag = "Tag" | ||
|
File renamed without changes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
+++ | ||
title = "archive" | ||
template = "archive.html" | ||
+++ |
File renamed without changes
File renamed without changes
File renamed without changes
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
+++ | ||
date = "2022-08-13T00:00:00-05:00" | ||
template = "page.html" | ||
weight = 2 | ||
title = "BYOBC" | ||
slug = "breadboard-computer" | ||
draft = false | ||
|
||
[extra] | ||
time = "Ongoing" | ||
page_identifier = "projects-breadboard-computer" | ||
summary = "Teaching a course on homebrew computer design." | ||
|
||
[extra.image] | ||
path = "projects/breadboard-computer/breadboard_computer.jpg" | ||
alt = "breadboard_computer" | ||
visible_in_main = true | ||
+++ | ||
|
||
<iframe width="560" height="315" src="https://www.youtube.com/embed/36lvWIOPbbE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> | ||
|
||
### Overview | ||
|
||
"Build Your Own Breadboard Computer" (BYOBC) is a course that I teach as part of CMU's Student College. | ||
I am currently in my third semester teaching it. | ||
|
||
In the course, students build a complete computer with RAM, ROM, a serial port, and a screen. | ||
There is no expectation of prior electronics experience. | ||
|
||
<img src="class.jpeg" alt="Photo of the class" height=300> | ||
<img src="class2.jpeg" alt="Photo of a computer" height=300> | ||
|
||
The course features | ||
guest lectures from the CEO of Western Design Center <a href="https://en.wikipedia.org/wiki/Bill_Mensch">Bill Mensch</a>, | ||
connections to modern computer design, | ||
an entirely free-choice final project, | ||
and the ability to keep the whole computer afterwards. | ||
|
||
As part of developing the course I created a debugger board, | ||
an ATMega4809-based PCB that simulates the entire 6502 processor, | ||
while also providing EEPROM programming, | ||
a serial connection, and a rudimentary logic analyzer affectionately called "The Probe." | ||
It connects to a laptop over a USB-C cable to provide a GDB-like interface to students' computers. | ||
|
||
<img src="debugger_3d.png" alt="3D rendering of the debugger"> | ||
|
||
|
||
### History | ||
|
||
I've built about 3 of these computers before myself, | ||
which is part of the reason why I decided to teach the class. | ||
My most interesting attempt used a 6502 and about two dozen 74-series logic chips | ||
to recreate the 2A03 processor used in the Nintendo Entertainment System. | ||
By attaching a Raspberry Pi to the board, I could make it play Super Mario Bros, as shown below. | ||
|
||
<div class="col-auto"> | ||
<img src="SuperMarioBrosComputer1.jpg" alt="Breadboard NES" height=300> | ||
<img src="SuperMarioBrosComputer2.jpg" alt="Super Mario Bros demo" height=300> | ||
</div> | ||
|
||
I'd like to revisit the breadboard NES project at some point, | ||
now that I have a better idea of what's causing some of the timing problems. | ||
Maybe I'll design it out beforehand and make a proper PCB for it. |
File renamed without changes
21 changes: 8 additions & 13 deletions
21
content/projects/couchbot/index.md → content/couchbot/index.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
+++ | ||
date = "2024-08-13T00:00:00-05:00" | ||
template = "page.html" | ||
weight = 1 | ||
title = "Landhopper" | ||
slug = "landhopper" | ||
draft = false | ||
|
||
[extra] | ||
time = "Spring 2024" | ||
page_identifier = "projects-robobuggy" | ||
summary = "A self-charging, award-winning, GPS-enabled dumbwatch." | ||
|
||
[extra.image] | ||
path = "projects/landhopper/on_wrist.png" | ||
alt = "landhopper" | ||
visible_in_main = true | ||
+++ | ||
|
||
<iframe width="560" height="315" src="https://www.youtube.com/embed/pJQOzT7xFPs?si=kvnir8nJUfzGXw-r" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> | ||
|
||
### Overview | ||
|
||
Landhopper was my ECE capstone project that I created | ||
with the help of Gary Bailey and Twain Byrnes. | ||
|
||
It features: | ||
- Solar-based self-charging capability | ||
- Infinite battery life (when outdoors) | ||
- 10m precision GPS tracking | ||
- Offline map storage | ||
- Path recording | ||
- "Doom" | ||
|
||
And for our efforts we placed first in the end-of-semester project competition. | ||
|
||
### Design | ||
|
||
I was responsible for the schematic-level PCB design and evaluating energy harvesting methods, | ||
as well as writing a large portion of the firmware. | ||
|
||
Our initial attempts at energy harvesting were mechanical, based on the swinging of the user's wrist. | ||
I designed and 3D printed a 7:1 rotary gearbox that seemed promising. | ||
|
||
<img src="gearbox.png" height=300> | ||
|
||
However, we soon realized that solar power would be smaller, lighter, and more powerful. | ||
Thus, we switched to a solar panel. | ||
|
||
From there, I designed most of the system schematic. | ||
The energy harvesting circuit uses | ||
<a href="https://www.analog.com/en/products/adp5090.html">Analog Devices ADP5090</a> | ||
to do MPPT. | ||
The main microcontroller is an STM32L4, | ||
connected to a variety of peripherals to do battery level sensing, input handling, display, etc. | ||
|
||
<img src="schematic.png" height=300> | ||
|
||
Our Rust firmware leverages async/await to communicate with the Max M10S GPS unit | ||
while also loading map images from an SD card, saving location history to a file, | ||
and playing a little raycasted Doom-mockup that I put in at the last minute. :) | ||
|
||
<video controls> | ||
<source src="notdoom.mp4" type="video/mp4"> | ||
</video> |
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file was deleted.
Oops, something went wrong.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
+++ | ||
date = "2024-08-01T00:00:00-05:00" | ||
template = "page.html" | ||
weight = 5 | ||
title = "RISC-VCraft" | ||
slug = "riscvcraft" | ||
draft = false | ||
|
||
[extra] | ||
time = "Ongoing" | ||
summary = "Booting an OS where an OS should not be booted." | ||
|
||
[extra.image] | ||
path = "projects/robobuggy/rolls.jpg" | ||
alt = "robobuggy" | ||
visible_in_main = true | ||
+++ | ||
|
||
If you've read the Wasmcraft post you know that Minecraft is Turing complete. | ||
|
||
That's all well and good, but Minecraft is so 2012. | ||
The future is in <i>RISC-V</i>. | ||
|
||
Anyways, here's xv6's shell prompt: | ||
|
||
<img src="prompt.png"> | ||
|
||
RISC-Vcraft is an rv32sima emulator that runs entirely in Minecraft commands. | ||
That means it can run real, actual operating systems (if you wait long enough). | ||
The shell prompt above is a user space program, on a time-shared multitasking OS, | ||
that has a root filesystem loaded from a real (virtual) disk, | ||
that has all the coreutils you'd expect for a minimal teaching unixlike (echo, cat, ls, etc.). | ||
|
||
The only caveat is that it takes 11 minutes to boot, | ||
which I think is an acceptable cost if your only compute platform is Minecraft. | ||
|
||
Also, debugging the emulator got kind of hard sometimes, | ||
so to help myself out I wrote a custom gdb server so that I can use `gdb-multiarch` | ||
to connect to and debug my datapack running in the game. | ||
|
||
<img src="gdb.png"> |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.