Everycoldatom.com

I made a new webpage everycoldatom.com! It displays all cold atoms groups in the world.

EveryColdAtom.com Screenshot

Background

I worked in a cold atoms laboratory at Jo┼żef Stefan Institute in 2016, where they cool Caesium atoms to nano Kelvins above absolute zero. I was wondering, how many other labs have cold Caesium atoms, but couldn’t find a good source. There exists Ultracold Atom News (UCAN) webpage, which helpfully lists all cold atoms groups – sadly without the information about which atoms they use.

How it’s made?

Database

First I parsed the whole database from the UCAN webpage.

Then I used the info (institution name and country) to obtain the geolocation using geocoding from Google Maps API. It was successful for all but around 20 groups. I obtained the location of those manually – the most common problem was, that a group had two institutions listed and that confused Google Maps API.

Lastly, the information about which atoms are used needed to be obtained. I did this assisted-manually. I tried to get the info by manually looking at the group’s website, and by google searching for Hydrogen OR Helium OR Lithium OR Sodium OR Potassium OR Rubidium OR Caesium OR Calcium OR Strontium OR Chromium OR Dysprosium OR Erbium OR Ytterbium OR thorium OR barium site:website. The search query started with a list of atoms I was aware of that are cooled and expanded it when I found out about another atom. As there are around 250 groups on the list, I limited myself to a couple of minutes on each webpage. There were a few problems I encountered on the way. Firstly, a lot of webpages didn’t work. I tried my best to find the new webpage and included it in the comment. Similar problem was, that the webpage linked to the webpage of the whole department/institution, not just the group. Similarly, some groups at the same institution had a common webpage – I attributed all of them with all the atoms I found on the webpage and added a “See also” in the comment. Finally, for some groups, I was unable to find out this piece of information, which I find baffling.

The map

I recently found out about Leaflet – a javascript library for displaying maps. And part of the motivation for this project was, to learn how to use Leaflet. The usage is pretty straightforward. I had a big json database, generated by Python, which included all data about markers. I additionally used two plugins – Overlapping Marker Spiderfier for the spread out/spiderify effect when you click on a group of markers close together; and Leaflet-SVGIcon for marker customization.

There was a bit of playing around, to manage to update the map according to filters underneath.

The periodic table

The periodic table is based on this example. Except for fixing spelling mistakes in atom names, changing the design, and adding onClick events, I didn’t change much.

The table

The table was generated by a Python script.

Sorting was copied from TablesGenerator.com and I have no idea, how it works.

Updates

I am planning on periodically checking the UCAN webpage and reflecting their updates on my page (automatic diff detection, but manual updates). In the few weeks between me completing the webpage and writing this blogpost, they updated their webpage, so I had to rewrite the parser.

Christmas Tree Lights

Last Christmas (2016) I wanted to make custom lights for a Christmas Tree but ran out of time. This Christmas (2017) I succeeded.

The idea

The idea was to use an Arduino to power WS2812 LED strips. WS2812 are RGB LEDs with an included microprocessor, that allows you to control all of them with a single data pin. This greatly simplifies the wiring process. At the time I had four 1m strips with 30 LEDs each. They were bought at different shops (mostly on AliExpress). Sadly this was noticeable – the colors and brightnesses were slightly different. Also one led was broken, but luckily only the LED, not the microprocessor, so the successive LEDs worked correctly.

Each LED uses around 20mA of current per color when fully lit. That means 120*3*20mA = 7.2A for all of them on full brightness white. The best power source I had was 3A phone charger, which limited the max brightness. I could have full brightness on one color (red, green or blue), but not white. Luckily the full brightness was too bright for a Christmas tree in the dark, so that wasn’t a problem.

Software

At first, it was meant to be controlled by many buttons. Because I only had 4 correct resistors I only used 4 – one for mode, color, brightness, and speed. Each button press goes to the next setting until it loops back around. Later I also added serial control, for easier debugging and more accurate control. I don’t like interrupts, so I wrote it without them. There are still a few bugs (mostly with serial control), but I will fix them next year.

  • There are 7 modes
    • All On – All LEDs are statically turned on.
    • Fill Up – The LEDs turn on one by one, and then turn off one by one along the strip.
    • Fade Out/In – All the LEDs brightness dims out and back on up to the full brightness as set by brightness setting.
    • Rainbow – The LEDs have different colors, like on a color wheel. The order and colors are not actually as on a rainbow. The colors move around the strips in a circle. The color setting obviously doesn’t do anything in this mode.
    • Every Second – Every second LED is lit, and then it switches to the other every second lit.
    • Every Fifth – Every fifth LED is lit, and the lit LED move by one.
    • Every Tenth – The same, but every tenth LED is lit.
  • 5 colors (red, green, blue, yellow, white)
  • 25 brightness settings (in steps of 10 from 5 to 255)
  • and 10 speed settings. The same speed setting has a different meaning in different modes. But the speed number always means that the delay is that multiple of some base delay.

Changing the color/brightness/speed preserves the state in the current mode (it doesn’t restart).

Code

I haven’t found a good way to embed GitHub code in this blogpost, so here it is. Warning: the code is not that pretty.

Future development

Next year, it will be controllable via Wi-Fi (using ESP8266 or something similar). And even more LEDs – just after Christmas I finally received another 2 meters that I ordered back in November. Now I also received some 60LED/m and 144LED/m strips. I just need to solve the power supply problem. I also have ideas for new modes, most importantly a mode similar to “Every Second”, but that the LEDs slowly fade out and at the same time the next LED fades in.

I started a science and tech blog.

Hi there.

I started a science and tech blog (this thing that you are reading now). The main goal of this platform is to give me more motivation to finish (side) projects (like this website) and to write about them. Planned projects include (but aren’t limited to) things to do with Arduino, Raspberry Pi, programming, video making… I don’t have a schedule or a desired frequency of posts (yet). It will probably start fast, as I finished a few projects before finishing this webpage, but then it will slow down.

A quick About me

From: Ljubljana, Slovenia.
Occupation: physics student at the University of Ljubljana.1
Free time: Work.2
Other free time: Alpinism.