Wild whisky days, so i bought two new Whisky’s ..
When there is only a little left, i keep some for nosing and nipping.
The little ones .. stored in my cocktail cabinet.
Util recently i’ve been using a android application to keep track.



I started to get some composite video generated with a arduino for my 6502 project.
UPDATE: 20221021
It is based on Grant Searle’s design, and yesterday I had some signals on my scope which looked like a screen with a character. But my monitor would not recognize a usable signal.
Today I tried a second version and another set of chips and crystals.

It looks like a signal, but I can’t see a clock pulse from the crystal?! So .. how?

Maybe I used a bad power supply. And killed something?
UPDATE: 20221021
After switching to another power supply, and checking the atmega328p fuses again (also wrong) .. at least SOME success!
Some minipro info #Erase minipro -p ATMEGA328P@DIP28 -E #Flash hex code minipro -p ATMEGA328P@DIP28 -w SBCVideo.hex #Flash fuses minipro -p ATMEGA328P@DIP28 -e -c config -w fuses #Used fuses file lfuse = 0xf7 hfuse = 0xd9 efuse = 0xfc lock = 0xff lfuse = 0xff hfuse = 0xff efuse = 0xff user_id0 = 0xff user_id1 = 0xff user_id2 = 0xff user_id3 = 0xff user_id4 = 0x37 user_id5 = 0x37 user_id6 = 0x39 user_id7 = 0x36 #Dump all from atmega328p minipro -p ATMEGA328P@DIP28 -r dump -f ihex
Some info about the fuses:
https://www.allaboutcircuits.com/projects/atmega328p-fuse-bits-and-an-external-crystal-oscillator
I’ve had this Shelly sensor for a long time. But never posted anything about this.
Last weekend we had a -situation- in our kitchen, so what better time to test this device again!
This little disc shaped device has three metal points on its bottom side, those are the flood (water) sensors.
It stay’s in sleep mode when all’s good.
It does several things when it detects water.
There are connection point on the print you can use .. happy hacking!
My node-red configuration
Above is the part where the mqtt messages gets processed by Node-Red
Sending it to PushOver and my little MqttLcdNotifier
Above is the MqttLcdNotifer .. there are several parts to this
Wellll, put this in place 2 years ago, never looked at it again .. still works
There are a lot of old develop boards for all kinds for cpu’s.
These where build to learn machine code programming. Mostly made in the 80’s, and based on populair cpu’s at that time.
I own a some of these SDK’s (System Design Kits)
Most of these use a keyboard scanner which is also connected to 7 segment displays.
The way they work is practically the same. There is a VIA or PIA. Versitile interface adaptor, or Peripheral interface adaptor. These have two times 8 bits to control devices.
When using 4 bits and convert these to 16 lines by using a 75ls145 for example. If you put a counter on those 4 bits, you sequently activate 1 of 16 lines. These lines you can use to scan a keyboard matrix OR display a character on a 7 segment display. These display’s won’t hold the data (and show the character) when not activated. The trick is to update de display fast enough so you don’t see the flickering on/off.
Activate a line and read a byte with the VIA = Reading keyboard row
Activate a line and write a byte with the VIA = Display on a segment
These VIA/PIA’s where made with specific timings to match the CPU.
6522/6820/8255
Below you see some different implementations of these keyboard/display combo’s
When looking at the 8085 version you see transistors being a ULN2003 is a chip with those transistors/amplification enclosed.
It doesn´t draw much current from the bus, and diodes protect the way the current flows.

Februari 2021 i made a website to view images and movies in a browser to do some quick sorting. (borrowed some code from a codepen page i recall correctly)
At the time i didn´t have a good way to view webp webm media.
I wanted to view multiple files at the same time, and make it short and simple.
BTW no webserver needed, just open the file from a directory!
jpg’s png’s webm webp mp4 svg and animated gifs work. (maybe more, didn’t test more, whatever your browser supports)
With recent updates of the chrome browser the video attributes to mute is broken, i so made a workaround.
Also everything is in one file now.
Except for one issue .. i couldn´t create one file for images AND videos.
There is a piece of javascript i could not fix … yet
I have to do execute a document.createElement which is different for images and videos.
Also the attributes of video are mute,autoplay,loop,playinline
Examples:
index.html
<a href="video.html">Video version</a>
<div id="drop-area">
<form class="my-form">
<label class="button" for="fileElem">Drop some images</label>
</form>
<div id="gallery" /></div>
</div>
<style>
body {
font-family: sans-serif;
}
#drop-area {
border: 2px solid #ccc;
}
.my-form {
margin-bottom: 10px;
}
#gallery {
margin-top: 10px;
}
#gallery img {
width: 300px;
}
}
#fileElem {
display: none;
}
</style>
<script>
let dropArea = document.getElementById("drop-area")
;['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, preventDefaults, false)
document.body.addEventListener(eventName, preventDefaults, false)
})
;['dragenter', 'dragover'].forEach(eventName => {
dropArea.addEventListener(eventName, highlight, false)
})
;['dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, unhighlight, false)
})
dropArea.addEventListener('drop', handleDrop, false)
function preventDefaults (e) {
e.preventDefault()
e.stopPropagation()
}
function highlight(e) {
dropArea.classList.add('highlight')
}
function unhighlight(e) {
dropArea.classList.remove('active')
}
function handleDrop(e) {
var dt = e.dataTransfer
var files = dt.files
handleFiles(files)
}
function handleFiles(files) {
files = [...files]
files.forEach(previewFile)
}
function previewFile(file) {
let reader = new FileReader()
reader.readAsDataURL(file)
reader.onloadend = function() {
let img = document.createElement('img')
img.src = reader.result
document.getElementById('gallery').appendChild(img)
}
}
</script>
video.html
<a href="index.php">Images version</a>
<div id="drop-area">
<form class="my-form">
<label class="button" for="fileElem">Drop some videos</label>
</form>
<div id="gallery" /></div>
</div>
<style>
body {
font-family: sans-serif;
}
#drop-area {
border: 2px solid #ccc;
}
.my-form {
margin-bottom: 10px;
}
#gallery {
margin-top: 10px;
}
#gallery video {
width: 300px;
}
}
#fileElem {
display: none;
}
</style>
<script>
let dropArea = document.getElementById("drop-area")
;['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, preventDefaults, false)
document.body.addEventListener(eventName, preventDefaults, false)
})
;['dragenter', 'dragover'].forEach(eventName => {
dropArea.addEventListener(eventName, highlight, false)
})
;['dragleave', 'drop'].forEach(eventName => {
dropArea.addEventListener(eventName, unhighlight, false)
})
dropArea.addEventListener('drop', handleDrop, false)
function preventDefaults (e) {
e.preventDefault()
e.stopPropagation()
}
function highlight(e) {
dropArea.classList.add('highlight')
}
function unhighlight(e) {
dropArea.classList.remove('active')
}
function handleDrop(e) {
var dt = e.dataTransfer
var files = dt.files
handleFiles(files)
}
function handleFiles(files) {
files = [...files]
files.forEach(previewFile)
}
function previewFile(file) {
let reader = new FileReader()
reader.readAsDataURL(file)
reader.onloadend = function() {
let video = document.createElement('video')
video.setAttribute('volume', '0');
video.setAttribute('height', '300');
video.setAttribute('autoplay', true);
video.setAttribute('loop', true);
video.setAttribute('playsinline', true);
video.setAttribute('oncanplay', 'this.muted=true');
video.src = reader.result
document.getElementById('gallery').appendChild(video)
}
}
</script>
We bought some servers a while ago, but these have old ILO versions (2).
To manage these servers via ILO was no problem until modern browsers refuse to connect to these web services, because of TLS 1.0 issues.
So what i did was using a second user account on my workstation with a old (downloaded from a ESR archive) version firefox. To administer the ILO
wget https://ftp.mozilla.org/pub/firefox/releases/50.0/linux-x86_64/en-US/firefox-50.0.tar.bz2 extract in other users homedir usage: # ssh with X forwarding and start old version ssh -X otheruser@localhost firefox/oldfirefox
While this was working for me on a debian based machine it didn’t work for my friend who was using Fedora on Wayland.
So i made a more generic solution which would work always. Also when working from windows.
I downloaded a old Fedora version ISO.
https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/15/Fedora/x86_64/iso/
Using the DVD iso i knew the old JAVA was present.
So i started virt-manager and created a new virtual machine
Select your downloaded Fedora 15 ISO
Create a disk image for the OS, don’t worry about the size we are going to shrink it to a minimum (thin provisioned)
Disable all thats not needed! .. Only Gnome Graphical internet .. and JAVA
Create users, complete the install and reboot.
Test your installation.
Shutdown
sudo qemu-img info /var/lib/libvirt/images/fedora15.qcow2
When above gives you a RAW image, you need to convert from RAW to QCOW first.
Mine showed a 9G qcow2 image .. far to large
sudo apt install guestfs-tools
virt-sparsify -v fedora15.qcow2 fedora15spars.qcow2
9665380352 okt 10 13:05 fedora15.qcow2
2926444544 okt 10 13:21 fedora15spars.qcow2
From 9 down to 3GB
Testing the Java applet console
Success!
I only have to check my new design for a generic matrix keyboard once again, and then i’m going to order a few of these prints.
I’ve used the opensource tool freeroute to autoroute the coppertraces
TODO: Look into charlieplexing ! For input and Led control
I had a crash recently on one of my raspberry-pi’s ..
SDcard failure, they are not made for a lot of write actions.
In the past i’ve changed some images to read only and with a r/w overlay.
Also tmp filesystems in memory .. all not ideal.
So i’ve started to make every RPi ssd bootable.
I’ve got several ssd already from other projects.
Sata to USB adaptors are cheap, only a few euro’s.
Steps to take:

So .. without attaching a screen or keyboard, just a network cable. I have a running OS on a RPi from SSD