content: Move all images to WEBP due to size reduction and quality improvement.

This commit is contained in:
William Floyd 2022-03-17 02:17:58 -05:00
parent eecec98bb6
commit 85abe78976
Signed by untrusted user who does not match committer: william
GPG key ID: B3EEEDD81893CAF9
143 changed files with 276 additions and 289 deletions

View file

@ -2,7 +2,7 @@
title: "DIY 'Smart' Coffee Maker"
date: "2020-07-05"
author: "William Floyd"
featured_image: "media/20200702_120123.jpg"
featured_image: "media/20200702_120123.webp"
categories: [
"Hardware",
"Electronics",
@ -27,30 +27,30 @@ I got so far as adding a sleek new brand name model to my Amazon cart, but thank
Instead, I opted to swing by the local Goodwill the next day, to see what secondhand options might be available.
As luck would have it, I found a no-frills, single button coffee maker for the princely sum of $4, and I was on my merry way.
[![The Spoils of Goodwill](media/20200610_204856.jpg)](media/src/20200610_204856.jpg)
[![The Spoils of Goodwill](media/20200610_204856.webp)](media/src/20200610_204856.jpg)
***
Later that evening, opening the black box up (thankfully I had the correct triangular screwdriver head), I found very easily hackable innards.
[![Poor lighting is the worst...](media/20200610_205351.jpg)](media/src/20200610_205351.jpg)
[![Poor lighting is the worst...](media/20200610_205351.webp)](media/src/20200610_205351.jpg)
The control board ([front](media/20200610_205847.jpg), [back](media/20200610_205841.jpg)) is very simple - two buttons in parallel, an LED, and a couple resistors.
The control board ([front](media/20200610_205847.webp), [back](media/20200610_205841.webp)) is very simple - two buttons in parallel, an LED, and a couple resistors.
I'm not quite sure what the logic is upstream (it un/latches on each press), but the buttons short to ground, and this is something I can work with.
The control board has wires for ground, signal, and 5V, in that order.
The ordeal of hacking into the thing, and my missteps trying to do so, is rather boring really, but it produced this:
[![Interception!](media/20200702_120309.jpg)](media/src/20200702_120309.jpg)
[![Interception!](media/20200702_120309.webp)](media/src/20200702_120309.jpg)
[![Perfboard](media/20200702_120302.jpg)](media/src/20200702_120302.jpg)
[![Perfboard](media/20200702_120302.webp)](media/src/20200702_120302.jpg)
[![D1 Mini](media/20200702_120328.jpg)](media/src/20200702_120328.jpg)
[![D1 Mini](media/20200702_120328.webp)](media/src/20200702_120328.jpg)
The brains I added was a Wemos D1 Mini (thanks, Aliexpress!), with a 3.3V<->5V converter between to sense when the coffee maker is on, and also turn on a mosfet to short the button to ground.
I initially had issues with the coffee maker turning on whenever I plugger the D1 Mini in, but a pulldown resistor solved this.
[![External USB Plug](media/20200702_120334.jpg)](media/src/20200702_120334.jpg)
[![External USB Plug](media/20200702_120334.webp)](media/src/20200702_120334.jpg)
I also opted for an external USB plug - this allows me to possibly reflash this without opening the enclosure, and also meant I did not need to splice into the mains line inside, which I was reluctant to do.

Binary file not shown.

BIN
content/posts/coffee/media/20200610_204856.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/posts/coffee/media/20200610_205351.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/posts/coffee/media/20200610_205841.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/posts/coffee/media/20200610_205847.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/posts/coffee/media/20200702_120123.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/posts/coffee/media/20200702_120302.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/posts/coffee/media/20200702_120309.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/posts/coffee/media/20200702_120328.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/posts/coffee/media/20200702_120334.webp (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -2,7 +2,7 @@
title: "Home Automation at School"
date: "2021-04-21"
author: "William Floyd"
featured_image: "media/20200813_023018.jpg"
featured_image: "media/20200813_023018.webp"
categories: [
"Software"
]

Binary file not shown.

Binary file not shown.

View file

@ -2,7 +2,7 @@
title: "Analysis of a 2005 Nissan Altima Remote Keyfob"
date: "2021-01-08"
author: "William Floyd"
featured_image: "media/fob/closed.jpg"
featured_image: "media/fob/closed.webp"
categories: [
"Hardware",
"Electronics",
@ -30,12 +30,12 @@ I am reluctant to tap into the CAN bus directly, so instead I am going to invest
# The Hardware
[![Opened remote](media/fob/opened.jpg)](media/src/fob/opened.jpg)
[![Opened remote](media/fob/opened.webp)](media/src/fob/opened.jpg)
While I may analyze the original fob at some point, for the time being I shall work from the aftermarket fob.
Opening the casing reveals a rather simple circuit ([front](media/fob/pcb_front.jpg), [back](media/fob/pcb_back.jpg)) - battery contacts, four buttons, a smattering of passives, an oscillator, the main control chip, 8 test points, and an antenna trace running around the perimeter of the PCB.
Opening the casing reveals a rather simple circuit ([front](media/fob/pcb_front.webp), [back](media/fob/pcb_back.webp)) - battery contacts, four buttons, a smattering of passives, an oscillator, the main control chip, 8 test points, and an antenna trace running around the perimeter of the PCB.
[![Closeup](media/fob/closeup.jpg)](media/src/fob/closeup.jpg)
[![Closeup](media/fob/closeup.webp)](media/src/fob/closeup.jpg)
Rather unhelpfully, the control IC is unmarked, so either I'll need to wait until I can look at the original fob to find any clues, or try to find what I need online.
@ -62,7 +62,7 @@ With this information in hand, I ordered a cheap RTL-SDR (a Nooelec NESDR Mini 2
# SDR Analysis
[![4 Presses of the Locking Key](media/4_locks.png)](media/4_locks.png)
[![4 Presses of the Locking Key](media/4_locks.webp)](media/4_locks.webp)
The radio, being a North American model, operates at 315MHz.
Using Universal [Radio Hacker](https://github.com/jopohl/urh), I began capturing examples of locking and unlocking signals.
@ -112,7 +112,7 @@ In any case, this extra trailing bit is always 0.
Finally we have something like this:
[![Decoded data](media/decoded.png)](media/decoded.png)
[![Decoded data](media/decoded.webp)](media/decoded.webp)
The top four entries are when locking, the bottom four when unlocking.
The highlighted segments from left to right, as per the technical document, are:
@ -131,9 +131,9 @@ What we know now is that the keyfob does indeed use a rolling code algorithm, th
I do not have access to the original keyfob at this time, so some image searching may be in order.
Several leads appeared, but the main one was this:
<!-- [![Different model fob with same compatibility](media/research/alt_1.jpg)](media/research/alt_1.jpg) -->
[![Pre-owned OEM fob](media/research/alt_2.jpg)](media/research/alt_2.jpg)
<!-- [![Similar model to mine](media/research/alt_3.jpg)](media/research/alt_3.jpg) -->
<!-- [![Different model fob with same compatibility](media/research/alt_1.webp)](media/src/research/alt_1.jpg) -->
[![Pre-owned OEM fob](media/research/alt_2.webp)](media/src/research/alt_2.jpg)
<!-- [![Similar model to mine](media/research/alt_3.webp)](media/src/research/alt_3.jpg) -->
None of text appears especially legible, so the first thing I can do is compare the logo on the OEM fob to existing rolling code chip manufacturers.
As it happens, Microchip is the company in question, producing the widely documented KeeLoq product line ([leaked spec sheet](http://keeloq.narod.ru/decryption.pdf)).

Binary file not shown.

BIN
content/posts/nissan-keyfob/media/4_locks.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/posts/nissan-keyfob/media/decoded.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/posts/nissan-keyfob/media/fob/closed.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/posts/nissan-keyfob/media/fob/closeup.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/posts/nissan-keyfob/media/fob/opened.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/posts/nissan-keyfob/media/fob/pcb_back.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/posts/nissan-keyfob/media/fob/pcb_front.webp (Stored with Git LFS) Normal file

Binary file not shown.

BIN
content/posts/nissan-keyfob/media/research/alt_1.webp (Stored with Git LFS) Normal file

Binary file not shown.

BIN
content/posts/nissan-keyfob/media/research/alt_2.webp (Stored with Git LFS) Normal file

Binary file not shown.

BIN
content/posts/nissan-keyfob/media/research/alt_3.webp (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -0,0 +1 @@
0c5dab9c716b6d76382a75765ca35597

View file

@ -0,0 +1 @@
f715aae112e3cc887738f7cadcdfbd96

View file

@ -0,0 +1 @@
952703b2c11f53810cb99271d55929ad

View file

@ -2,7 +2,7 @@
title: "Smart Yogurt Maker Part 1"
date: "2022-01-25"
author: "William Floyd"
featured_image: "media/IMG_20220125_113949_cleaned.jpg"
featured_image: "media/IMG_20220125_113949_cleaned.webp"
categories: [
"Development",
"Hardware",
@ -18,6 +18,10 @@ tags: [
]
---
Part 1 | [Part 2](../smart-yogurt-maker-part-02)
***
A certain [Rice](/2018/smart-rice-cooker) [Cooker](/2018/dumb-rice-cooker) has been languishing in a box for the last several years - now it is time to revisit it.
It is a tale of Solder, Software, and Streptococcus thermophilus.
@ -76,13 +80,13 @@ $$
In my case, I found the points of reference using a setup like so:
![Measuring water temperature and thermistor resistance](media/IMG_20220124_174144.jpg)
![Measuring water temperature and thermistor resistance](media/IMG_20220124_174144.webp)
Do note that in order to reach a full boil (and $100^\circ \text{C}$ on the thermocouple), the lid of the rice cooker was attached.
While I could show the calculations, and they wouldn't be difficult, I'll be honest: I used an [online calculator](https://www.thinksrs.com/downloads/programs/therm%20calc/ntccalibrator/ntccalculator.html).
![Calculator results](media/calc.png)
![Calculator results](media/calc.webp)
Using the measurements:
@ -128,7 +132,7 @@ In the meantime, a Wemos D1 Mini on a breadboard is ready to go (they're cheap a
I wire it up with a $6.8\text{k}\Omega$ resistor (what I had handy), and away I went.
The circuit looks something like this, where the two trailing wires connect to the thermistor bank:
![Wired breadboard](media/IMG_20220125_114006_cleaned.jpg)
![Wired breadboard](media/IMG_20220125_114006_cleaned.webp)
To prevent confusion, here is my final working config, then I'll explain.
@ -211,7 +215,7 @@ $$
Further tuning is required, but this held well overnight - mostly...
![First overnight test](media/log.png)
![First overnight test](media/log.webp)
I did change the set point from $105^\circ\text{F}$ to $107^\circ\text{F}$ halfway through, as well as tweaked some of the PID tuning.
The concerning spike at 9:00 is marked by a momentary loss of connection with the ESP board - my automation failed to account for a loss of connection and so allowed the heat to continue rising.
@ -225,13 +229,13 @@ I am notoriously _not_ picky when it comes to food, but I think it turned out gr
Filling the rice cooker about halfway with whole milk, I heated it to $180^\circ \text{F}$ for a few minutes (I read I ought to go for longer...), cooled to about $110^\circ \text{F}$, then added a liberal few spoonfuls (think 1/5 volume of milk) of plain Dannon yogurt.
I let it proof in the rice cooker for 7.5 hours, with the lid sealed.
![First batch, still warm](media/IMG_20220125_105918.jpg)
![First batch, still warm](media/IMG_20220125_105918.webp)
I put the whole rice cooker in the fridge to cool, with the lid sealed.
Trying it later that same evening, I quite enjoyed it.
I'll start my next batch from this one, and hopefully it'll be even better.
![Spoonful of the good stuff](media/IMG_20220125_180035.jpg)
![Spoonful of the good stuff](media/IMG_20220125_180035.webp)
# "Next time, on Rice Cooker Adventures"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
content/posts/smart-yogurt-maker-part-01/media/calc.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/posts/smart-yogurt-maker-part-01/media/log.webp (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -2,7 +2,7 @@
title: "Clickbait - The Automatic Fishing Caster"
date: "2020-03-13"
author: "William Floyd"
featured_image: "media/20191120_224129.jpg"
featured_image: "media/20191120_224129.webp"
categories: [
"Hardware",
"Engineering",
@ -38,7 +38,7 @@ And so it was that we began brainstorming.
***
[![Laying the groundwork](media/20190919_143530.jpg)](media/src/20190919_143530.jpg)
[![Laying the groundwork](media/20190919_143530.webp)](media/src/20190919_143530.jpg)
The idea was fairly simple - use two smooth rods and a leadscrew to pull a carriage against springs that would then somehow fire the fishing weight.
The choice of this mechanism was, for the most part, due to availability of parts.
@ -46,9 +46,9 @@ I already owned the necessary rods and bearings, and springs were readily availa
***
[![First print](media/20190919_224711.jpg)](media/src/20190919_224711.jpg)
[![First print](media/20190919_224711.webp)](media/src/20190919_224711.jpg)
Soon, we had [some](media/20190919_213947.jpg) basic 3D printed parts in order - for it was 3D printing that was most accessible to us, and allowed largely unattended manufacturing while classes continued.
Soon, we had [some](media/20190919_213947.webp) basic 3D printed parts in order - for it was 3D printing that was most accessible to us, and allowed largely unattended manufacturing while classes continued.
Despite this early start of progress, however, the ever present tendency toward procrastination crept in.
The usual array of excuses were made by all, and little actual work was accomplished.
@ -61,22 +61,22 @@ Nor was it realistic for us to budget a baitcasting reel instead of a much cheap
***
[![T'was but a Fanta-sea](media/20191010_152148.jpg)](media/src/20191010_152148.jpg)
[![T'was but a Fanta-sea](media/20191010_152148.webp)](media/src/20191010_152148.jpg)
Eventually, however, some progress was made - progress in something of a wrong direction, but progress nonetheless.
As the shape of our ungainly creation began to emerge, it was clear progress needed to be made quickly.
Once we coupled our stepper motor to the leadscrew and power tested the unit, it was also clear that change was in order.
So a decision was made: a cheap cordless drill would be pilfered for a battery, motor and chuck.
A H-Bridge would need to be bought for the drill motor (I [tried to](media/20191025_194859.jpg) [make one](media/20191102_144426.jpg), but the magic smoke was released...), and a latching system needed to be made.
A H-Bridge would need to be bought for the drill motor (I [tried to](media/20191025_194859.webp) [make one](media/20191102_144426.webp), but the magic smoke was released...), and a latching system needed to be made.
***
[![Latching Track Installed](media/20191110_014623.jpg)](media/src/20191110_014623.jpg)
[![Latching Track Installed](media/20191110_014623.webp)](media/src/20191110_014623.jpg)
The next week or so resulted in the beginnings of a working launch mechanism.
With the aid of a rubber band, a latching track was put under the rods and springs, such that the motor would tension the launching carriage, then return to the front of the mechanism to allow the eventual release of the catch using a servo.
Soon after this, the motor was [appropriately mounted to the frame](media/20191110_072012.jpg), with a carefully fit 3D printed socket.
Soon after this, the motor was [appropriately mounted to the frame](media/20191110_072012.webp), with a carefully fit 3D printed socket.
It was, it seemed, all coming together.
***
@ -89,7 +89,7 @@ The end was near, or so it seemed.
***
[![Reel Mounted](media/20191115_090125.jpg)](media/src/20191115_090125.jpg)
[![Reel Mounted](media/20191115_090125.webp)](media/src/20191115_090125.jpg)
Following soon after was the reel being mounted to the device also.
Attempts were made to use a small DC motor, but with no luck.
@ -100,7 +100,7 @@ Remaining at this point was a means of reeling in the line, a means of depressin
***
[![Plenty of Torque](media/20191118_032416.jpg)](media/src/20191118_032416.jpg)
[![Plenty of Torque](media/20191118_032416.webp)](media/src/20191118_032416.jpg)
As it turned out, the very same stepper motor that had once tried to turn our leadscrew now instead would be pressed into service reeling in the line.
Overkill, to be sure, and it's power most wastefully used, it did indeed reliably turn our reel, albeit slowly.
@ -110,7 +110,7 @@ This saved the most time 3D printed as compared to a smaller pulley with other p
***
[![It'll Send You Reeling!](media/20191120_224129.jpg)](media/src/20191120_224129.jpg)
[![It'll Send You Reeling!](media/20191120_224129.webp)](media/src/20191120_224129.jpg)
Finally, the mechanics of the project were completed, with each component individually power tested, though not yet in tandem with one another.
As all of this was coming about, I had also begun getting the electronics in order.

Binary file not shown.

BIN
content/projects/clickbait/media/20190919_143530.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/projects/clickbait/media/20190919_213947.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/projects/clickbait/media/20190919_224711.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/projects/clickbait/media/20191003_000323.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/projects/clickbait/media/20191004_160107.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/projects/clickbait/media/20191010_152148.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/projects/clickbait/media/20191025_194859.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/projects/clickbait/media/20191102_144426.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/projects/clickbait/media/20191110_014623.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/projects/clickbait/media/20191110_072012.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/projects/clickbait/media/20191115_090125.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/projects/clickbait/media/20191118_032416.webp (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
content/projects/clickbait/media/20191120_224129.webp (Stored with Git LFS) Normal file

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more