Marlin 3D printer firmware: Delta inverse kinematics

With a simple cartesian printer, the carriage mechanism moves directly along rails in each of the x, y and z directions.  If you want to move a print head from the origin to, say, (10,10,20) you simply direct the motors to move it 10mm along the x axis rail, 10 along the y axis rail and 20 along the z. With a delta printer, it’s not so simple.  Moving any one of the carriages which run up and down the three vertical towers will cause movement of the printer nozzle in x,y and z simultaneously.  Inverse kinematic calculations are required to work out how to move all three carriages to move the print head to the given (x,y,z) coordinates.

Continue reading

Dissecting the ErgoDox – The Ergonomic Programmable Keyboard

Invented by Dominic Beauchamp (a.k.a Dox), the ErgoDox is an ergonomic mechanical keyboard that uses an open hardware and software. This keyboard uses a split design that allows your arms to rest naturally at your sides. The split also allows you to angle the boards and doesn’t force you to contort your wrists. The keyboard is also fully programmable. Lets find out how it actually works.

Continue reading

Detecting similar and identical images using perseptual hashes

Couple of my hobbies are traveling and photography. I love to take pictures and experiment with photography. After several years, I have over 200K photos distributed across several disks and machines. I had to find a way to organize these photos and create a workflow for future maintenance. In this post I want to address one of the issues I had to solve: finding duplicate images.

Continue reading

Dissicting the 82559 Ethernet controller – From bits to waves

When I first started working, I was very interested in learning about the Linux kernel. Specifically the TCP/IP stack and the inner workings of an Ethernet controller. To learn more, I picked one of the most widely used Ethernet controllers at that time, the Intel 82559 10/100 Fast Ethernet Controller and one of its open-source drivers, the eepro100.

Thought 82559 chip is no longer manufactured and the eepro driver has been deprecated, this article will still serve as a guide for how an ethernet controller works. We’ll look at how the eepro100 driver interfaces with the Intel 82559 chipset and how the 82559 converts the packets sent by the driver to signals transmitted over physical ethernet cable.

Continue reading