The ROTAforMI: a RObotic TAble for Microscopy

I have recently published another STEM oriented robotic project. It is the ROTAforMI device, a versatile robotic device for controlling the position and orientation of a microscope slide using four degrees of freedom. This prototype is a complementary development of the idea behind the Roto-microscope project. It was inspired by related projects of servo motors-controlled micromanipulators and 3D micro scanners.

The device is entirely 3D printed and is actioned by four small servos controlled by one Arduino Nano microcontroller. The device can be controlled manually using two micro joysticks (and possibly also automatically via a programmed sequence of movements). In addition, a Bluetooth remote can take snapshots with a smartphone’s camera.

The device is made modular to use for different purposes. For example, removing the Y-stage should be sufficient to fit it under a stereomicroscope. Although the electronic interface is quite bulky, the device is simple to assemble and use, and the controlling program is still in its early stages. The ultimate goal is to use it for automatic photo stacking or 3D image reconstruction. Still, we are sure there are other possible applications in which small motion in 3D dimensions and a rotation of the observation stage can be helpful.

This is a prototype, and there is a lot of space for improvements. So we hope you like it, and constructive comments and suggestions are always welcome!

If you want trying to build one, please follow to the link given above.

Physical Chemistry: The Simple Hückel Method (Part V)

In the previous four parts of this series of articles on the SHM (the links to the other parts are reported at the end of the article), we learned how to apply the Hückel method to conjugated linear and cyclic molecules containing only carbon atoms. However, an unsaturated molecular system can contain hetero atoms that can conjugate their electrons. The contribution of different theoretical chemists has extended the method by including semiempirical terms for the overlapping integrals that consider the presence of non-carbon atoms in the conjugated system. This effort has been summarized by the American chemist A. Streitwieser providing a set of parameters to approximate both Columb and bond integrals in the Hückel determinant [1]. The derivation of these parameters has been discussed in detail by Streiweiser [2] or by Lowe [2]. This article will teach us how to use these parameters to build up the Hückel determinant for this conjugated molecular system.

Continue reading

Easter 2022: Modelling and Designing of Birds Eggs for 3D Printing

A box without hinges, key, or lid,
Yet golden treasure inside is hid.

JRR Tolkien, The Hobbit

Easter 2022 is at the door and the occasion for the traditional appointment to talk about eggs and their mathematical shapes. This year with the help of my sons, we have created the following Instructable for STEM education:

The project aims to show how to use a simple mathematical model to generate the 3D form of real bird eggs utilizing several parameters. The 3D egg models can be saved as an STL file and then printed using a 3D printer. The printed egg can be painted or modified with a CAD program to add functionalities for egg-based gadgets or toys. An example of a modification to create a LED decorated egg is explained in detail.

More recently for fun, I have published another one using the same approach:

The egg modelling topic has been covered in previous article, and the interested reader can complement the information in the Instructable with other information provided in the following articles:

The Instructable gives the possibility to 3D print and modifies the 3D shape of bird eggs. It can be used for research, teaching and fun. I hope you will enjoy it, and constructive comments and suggestions are always welcome!




Come Creare Modelli Tridimensionali di Conchiglie e altri Molluschi

Questo articolo è la traduzione di un recente instructable in lingua inglese creato in collaborazione con mio figlio Leonardo sul sito Instructables teachers ( Sull’argomento ho già scritto un altro breve articolo (anche questo in lingua inglese) nel passato, tuttavia, visto il considerable interesse ricevuto dall’instructable ( che ha vinto anche un premio runner-up nella competizione “made with math”) ho deciso di farne una traduzione per i lettori italiani del mio blog.

Continue reading

The Magic Sand Slicer

We have published for the first time a project on Instructables: a website specialised in publishing interesting DIY projects by an effervescent community of makers and educators.

The project is called the Magic-Sand Slicer and it is an education project initially conceived as a STEM activity to learn using Arduino, a 3D printer, and some exciting science. It is also a collaboration with my son Leonardo who helped me in evaluating the device as a STEM student. We have learned a lot together, and we want to share the results of this long journey. This project aims to create a device that automatically makes sections of a cylinder of easy-to-cut coloured material. That can be used for practising 3D image reconstruction of the coloured blogs hidden in the column. The so-called Magic-Sand (c), also known with other trademarks names, becomes suitable for this experiment.
What is the point of making pictures of thin layers of sand and then reconstructing it digitally? Is it just for the fun of it? It varies on who is using it. However, students and teachers from different disciplines (e.g. geology, biology, medical) can find it a helpful education device to practice with image reconstruction from the serial sections. It could also be of interest to a geologist interested in sedimentary material plasticity to study rock and the secrets it beholds, or to a process, engineering to emulate the packing of fine granular materials. Finally, an artist can make a fantastic program of unravelling magic forms generated by packing coloured sand. 

I was surprised that the project got so much interest in a very short time and I thank the Instructable community for their nice welcome! If you like to know more about the project (and try it!) then you can read our instructable here.

I also just realized that the Instructable was reviewed on the Arduino blog site by the Arduino team!

Retro programming nostalgia IV: L’Equilibrio e la Titolazione Acido/Base (Parte II)

Questo secondo articolo continua il mio personale viaggio retro-computazionale delle titolazioni acido/base. Nell’articolo precedente, ho mostrato come calcolare un equilibrio acido base per acidi e basi forti. In questo articolo, vengono descritte anche le subroutines per le titolazioni di acidi e basi deboli monoprotici. Il metodo che ho usato risolve in modo esatto il calcolo dei pH e si basa su articolo pubblicato sulla rivista di chimica “Rassegna chimica” da Prof Luigi Campanella (e Dr G. Visco) nel 1985. Ricevetti dall’autore stesso una copia dell’articolo quando frequentavo il suo corso di chimica analitica presso l’Università “la Sapienza” di Roma. Ricordo che scrivere un programma per lo studio delle titolazioni non solo fu divertente e stimolante ma mi aiutò molto a capire a fondo l’argomento. Pertanto raccomando il giovane lettore di provare a convertire il programma in un linguaggio moderno a voi più familiare (per esempio il Python) per meglio comprenderne il funzionamento.

Continue reading

Retro programming nostalgia IV: Acid/Base Balance and Titration (Part II)

This second article continues my journey of acid/base titrations.  In the previous article (, I showed how to calculate an acid-base equilibrium for strong acids and bases. This article also describes subroutines for titrations of monoprotic weak acids and bases. The method I used solves the pH calculation precisely and is based on an article published in the chemistry journal “Rassegna chimica” by Prof Luigi Campanella (and Dr G. Visco) in 1985. I received a copy of the article from the author while attending his analytical chemistry course at the University “La Sapienza” in Rome. I remember writing a program for the study of titrations was fun and stimulating, but it helped me understand the subject thoroughly. I recommend that the young reader try to convert the program into a modern language more familiar to you (e.g., Python) to understand its functioning better.

Continue reading

A Practical Introduction to the C Language for Computational Chemistry. Part 3

Sphere. From Space, from Space, Sir: whence else?

Square. Pardon me, my Lord, but is not your Lordship already in Space, your Lordship and his humble servant, even at this moment?

Sphere. Pooh! what do you know of Space? Define Space.

Square. Space, my Lord, is height and breadth indefinitely prolonged.

Sphere. Exactly: you see you do not even know what Space is. You think it is of Two Dimensions only; but I have come to announce to you a Third — height, breadth, and length.

Square. Your Lordship is pleased to be merry. We also speak of length and height, or breadth and thickness, thus denoting Two Dimensions by four names.

Sphere. But I mean not only three names, but Three Dimensions.

Adapted from: 
Flatland: A romance of many dimensions by Edwin A. Abbott


In part 2 of this tutorial, we have learned how to use arrays and how to read atomic coordinates from a file. In the appendix, you can find an example of the solution to the exercises given in the previous tutorial.

In this third part, we are going to learn how to generate three-dimensional coordination of atoms in a cubic crystal lattice and how to calculate non-bonded molecular potential and the force acting among them.

Continue reading

A Practical Introduction to the C Language for Computational Chemistry. Part 2

In the first part of this introduction to C language, we have learnt the basic of the C language by writing simple programs for the calculation of the non-bonded interaction between two particles at variable distances. Some solutions to the first part exercises are reported in the appendix of this article.

In this second tutorial, we will learn how to use arrays data types and how to load them with a set of data read from a file. We will also use these data to perform numerical calculations and write results in output files.

Arrays and Pointers Datatypes

The program that calculate the energy of interaction between two particle doe not take in account the actual position in space of the two particle but only their distance. If we want to study the dynamics of a system composed by multiple atoms in a tridimensional space, it is way more convenient to represent the and calculate their interactions by using the coordinates directly to evaluate the distances.

Continue reading