In order to add wheel odometry I made additions hardware, electronics and software. For the hardware I needed to add a wheel encoder disk to the motor axles. This was 3D printed. As for the electronics, in order to pickup interruptions of that encoder disk, I needed to position a light barrier such that it doesn't jam the moving parts. For the software I had to get that PCF8583 I2C realtime clock chip to work as an impulse counter.
In order to accomodate for the Lidar, for which the SLAM algorithms in turn require wheel odometry data and the ESP32-CAM in order to provide a video stream, I had to rework much of the robot from 2018. I repositioned the electronics, swapped the main controller and rewired components to commincate via I2C making the robot more easily extensible.
For quite some time I've wanted to purchase a 360 lidar for one of my robots. They give the robot the ability to measure distances of obstacles surrounding it. 360 lidars are commonly used on robotic vacuums, but have been available for hobbyists for some time. I just couldn't justify the price for hobbyist projects. Recently the 'YouYeeToo' / 'WayPonDev' / 'LDRobot' 'FHL-LD20' or 'D200 Lidar Kit' came to by attention. It costs only 48 Eur. Let's see, if I can get it to work. If the signal is clean enough we can try Simultaneous Localization and Mapping.
Amateur radio and software defined radio is a big field with a lot to learn. It touches on various fields of technology from voice communication, but also digital transmission for WiFi, Smart Home and IoT. As such I've come into contact with it from various angles from time to time. The following summarizes what I've learned about receivers, antennas, connectors, cables, useful software and some signals I've received.
My small Raspberry PI Home-Server failed once again after approx. 2 years of operation. This time the SD-Card literally burned up. I'll reinstall it, document the process and share some insights I've had from over a decade of running home servers.
Our fridge broke down. I took it apart, debugged the issue and added some smart home temperature sensors to be sure it works reliably after the repair.
Distributed computing is becoming more and more relevant in various fields. The following is an overview of technologies and algorithms that have stood out to me.
With the Atari ST sitting my living room, I get asked from time to time whether I've written software for it. I'll explain the process for everyone that has a knack for retro computing like I do.
At this point we can increase the screen resolution to 640x480 4 bits-per-pixel and enhance the interface for user-applications to build more interesting software for the CustomOS.
It would be nice to be able to extend the CustomOS without relying on other operating systems to write additional software for it. For this I've added a text editor to the CustomOS. It can be used to write code. An additional built-in C-Code compiler can compile and run code. With both combined we can write, compile and run code from inside the CustomOS.
Most would agree that Sim City 4 is by far the best city-building simulation game. It's a 20 year old game that hasn't received any updates since. But recently there have been significant advancements in plug-in development for the game. I've written a plug-in for Sim City 4 that allows viewing game metrics in a web browser. The web browser can run on a secondary monitor, smart phone or tablet. This adds basic second-screen/multi-monitor capabilities to the game.
After just two days and, well, approx. 1500 shredded pages, my inexpensive Olympia PS 16 document shredder broke down. I've opened it up, found the issue and replaced the motor and broken gearbox with a cordless drill. It's a simple hack that will work on most of these shredders and save the machines from landfill. Along the way I've taken the opportunity to try out options for connecting motors to axles.
With the honeypot set up we can see the successful login attempts, but not much is happening appart from strange SSH-Keys being added. This is likely due to the honeypot being detected as such by the malware. The honeypot is not covert enough and is lacking features to log the passwords and commands that were attemped. In the following we'll enhance it.
Let's see what the cat dragged in. With the Honeypot Qemu machine working we can analyse the logs.
After detecting failed login attempts at my SSH server let's setup a fake SSH server (a honeypot) and see what these bot are upto.
My SSH-Server has been receiving a lot of failed login attempts. Let's see where they come from and what traces the log files contain.
To speed up future development we can adapt the build process and introduce a package manager.
The Esp32-Cam board is very cheap board with a dual-core ARM chip that is officially supported by the Zephyr Project. We'll flash and test it with the Arduino code provided with the Esp32-Cam SDK and then setup and build a flash image with Zephyr.
My Fujitsu fi-5110c auto-feed scanner broke down due to age-old feed rollers that have become sticky. The feed rollers had passed a threshhold of stickiness that prevent papers from passing through the feed mechanics.
Monitoring Soil Moisture with a Wemos D1 Mini, MCP3008 and cheap soil moisture probe. Some years ago I bought roughly a dozen cheap plant soil moisture probes. In the following I'll describe how to connect them to a Wemos D1 Mini Dev-Board with an mcp3008 Analog-Digital-Conveter and how to send messages with the readings to your Telegram chat client.
There is a lot to consider when buying a 3D scanner. I'll compare some use-cases, cameras and technologies in order to make the right choice.
Some thoughts on enhancements: Better Graphics Drivers, font improvements, running user-space applications.
After trying out Rust and some experiments interfacing it with C we can move forward with the implementation of the graphical terminal.
To further enhance the CustomOS we need a shell. We can write it in the Rust programming language. Here are the first steps to get started.
Pure text-based input/output gets boring fast. This time around we'll add graphics.
With an Android device running an aftermarket operating system and root capabilities we can configure it as a low-cost low-power Linux home server.
Using a rooted Android device is an option for a small home server that is low-cost, low-power and low-maintainance. For this we need to replace the stock operating system with a new one and gain root access.
As with other strategy games that invole building a base, also in C&C Generals ZH, the order the player builds objects is vital to succeed in the game. In order to analyse build sequences we need to parse the replay file format of the game.
I've been using Stable Diffusion a lot lately for image generation and inspiration. It can generate images by textural description and generates images that have been previously unseen. Naturally you wonder how that works. This has led me down a path of recapitulating tricks from the A.I field that I've come across over the years.
A visit to the Signal Tower at the Nürnberg main train station. The Nürnberg train station, due to its location in Europe, is one of the most frequented train stations. It has three different generations of railroad signalling systems from relay-based electro-mechanical to fully digital. I've collected what I recall from memory with images found on various pages across the internet.
Using the approach I've described previously to create 3D models we can also create custom content for the game Sims 4
The creation of 3D models purely with Open-Source-Software is challenging. In the following I'll decribe my workflow for creating meshes (in OpenScad), creating textures (in Gimp), applying them (in Blender), viewing them (in Open3D View) and using them in Game Engine (in Ursina)
When looking up at the sky we see that the stars move. If we want to point a telecope at a star we find that it not only moves out of the field of view, but is in a different location every night. How can we calculate where a star is from our observation point?
The initial setup of my solar power system is about 2 years ago. It’s an island system with a battery that does not feed into the grid and is completly off-grid capable.
Reading and writing to a disk for data persistency is a prerequisite for most applications. I'll be working on basic functionality to store data by reading and writing to disk.
BluePill development boards are common in hobbyist projects. Unfortunately online shops have been flooded with cheap knock-offs and it has become increasingly difficult to source genuine parts. I've tried to replace the fake Stm32 chip on a knock-off development board with a genuine part. That ultimately failed, but I'll share my experiences.
The keyboard and mouse of my 30 year old Mega ST seems to still function, but the keyboard has been dropped many times and it’s bound to break. I found a project [1] on the internet to build an adapter in order to connect a modern mouse and keyboard to the Atari and I’m trying to recreate it.
Git-Annex is an extension for Git that I'm testing to synchronize files between my Android Devices and computers.
On-demand streaming services use methods to protect their content. These methods are intended to allow subscribers to view, but not download and distribute the content. For this the transfer of media data is encrypted and elaborate key exchange mechanisms are used to transfer the required information for decryption to the player software.
There have been some advancements in storage device emulation for vintage Atari computers. We can now build SD-Card adapters that connect to the Atari's ACSI port rather easily.
Particle Simulation is an interesting field with numerous applications. In the following we'll look at a very basic particle simulation that can be used as a code basis for future simulations in other fields such as robot localisation.
So far we've read the state of the keyboard by actively polling it. A better method of reacting to keyboard events is by using interrupts.
For a Custom OS to be any kind of useful we need some means of interaction with the user. One way to interact with our custom OS is keyboard input. With the ability to print text on screen and get keyboard input from the user we can already build simple dialog systems.
Last time around we built the cross-compiler. With it we can now compile the barebones tutorial from the osdev-Forums. We can then boot this custom kernel safely in QEmu, a hypervisor, that emulates a computer CPU.
Inspired by the osdev-forums and the likes of TempleOS, as a challenge and to learn more about modern computer architectures, I'll give writing a tiny custom operating system from scratch a try. I'll be documenting the process in this multi-part series.
In a joint effort and over the course of a year ingofritsch.at and I have built and released a smart phone app.
The QT/QML based native app with a custom chart component runs on Android and iOS, is designed to be minimalistic and is meant for tracking personal weight information on-device without cloud storage for data privacy.
Read More >>
CNC (=computerized numerical control) milling is the process of removing material by using a rotary cutter that is positioned by a computer. I have been constructing my own CNC milling machines and after many attemps with various levels of success, I switched to a commercial mechanics kit that I then modified for my purposes.
The DirtDevil Spider M607 is a cheap entry-level vacuum robot. It does not feature optical mapping, but rather randomly moves around until it hits an obstacle and then turns to avoid it. This works reasonably well, but I purchased the robot in order to modify it.
A small speaker and a small single board computer with some Linux software is all that is required to build a WiFi speaker. With it you will be able to listen to music within WiFi range and optionally control music with your smartphone.
The Atari ST Mega home computer was produced from 1985 to 1994. It uses the Motorola 68k line of chips as its main processor with a 16 bit data bus. The Atari ST Mega that I have came with an Atari Megafile hard disk and Atari SM124 monochrome monitor. In the following I describe the modifications I have made to make the computer useable in the 21st century.
I’ve been growing herbs on my balcony in the summer. The heat causes the water to vaporate quickly meaning I have to water the growing beds every day. If I’d forget or when I’m on a business trip, the herbs would dry up. So the only solution is automatic watering.
PCB etching is the process of making your own circuit boards. There are multiple ways of achieving this. This is a description of my experiences and why I now avoid PCB etching, whenever possible.
The DigiStump DigiSpark is an excellent microcontroller development board. The price of only 1-2 Euro is so low you can drop it in your designs and leave it there. […] This Guide will show you how to setup the Arduino IDE, configure it for use with the DigiSpark Board, set up the drivers, connect it and compile and program the „Echo“ Example, which enables sending data to and from the DigiSpark via USB using either Python or C++.
The image was taken by my group during the practical exercises for the astrophysics course.
(Course work submission for the 2016 'Do it yourself' (DIY) lecture at the University of Erlangen-Nürnberg)
Cooking can be a real hassle at times. Especially, when one has a manually controlled stove. [..] Therefore, we propose the next logical step: bring the revolution to the kitchen! We start by automating the stove.
(An easy method for controlling servo motors from your computer's USB port)
I've adapted the I2C script for reading the compass module, so that I can now use it to talk to a PCA9685 PWM driver IC. This enables me to control pulse width modulated servo motors.
(A method for connecting a compass module to a computer via USB using only an FTDI chip, 4 wires, 2 resistors and a single Python script)
I've written code to read out the HMC5883 compass module via I2C using an FTDI FT232RL in BitBang-Mode.
My doorbell doesn't work properly. So I set out to fix it. But then I realized I couldn't do so easily. The reason is a faulty switch outside of my appartment. I can't repair it, because there is mains current running through another switch next to it. I can't shut that off, because the fuse is located somewhere in the building and I don't know where. But I had to do something. After all I had set out to 'fix' something. So I decided to connect my doorbell to the internet.
Got my hands on an ESP8266 WiFi-Module. These modules cost next to nothing (around 3 Eur from Chinese suppliers on eBay, and about 8 Eur from a German supplier, if you need them fast). I want to use them in order to monitor the gas usage for heating and water in my apartment.
I've finally gotten around to completing my WiFi controlled car. This project has been lying around for ages. I recently bought a hand-held circular saw and with it I can cut aluminum rods. That got me the motivation to finish the cars chassis.
The car connects to the local area network via WiFi. It runs two web servers, one for controlling the motors and one for viewing the web cam. After turning it on all I need to do is open the two webpages in my browser and I can control the car and see where it's going
Some time ago I had an interest in astronomy. I made an effort to take photos of some of the objects in the sky I found particularly interesting. We started with the Moon, then Saturn and Jupiter with some of its Moons. Then we tried photographing galaxies and nebula - some of the Messier objects - but this is where we reached the limitations of our set up.