Codementor Events

How I built a full stack signage solution using Python, Tornado and Arduino.

Published May 14, 2018Last updated Nov 10, 2018
How I built a full stack signage solution using Python, Tornado and Arduino.

About me

I'm a programmer/problem solver in Toronto, Canada. I'm interested in Python, comp sci, ML/AI, AI safety, Effective Altruism, art, design, and other things.

The problem I wanted to solve

I was working as a consultant with a local design company that was installing a custom signage system. They needed a drive a series of LED signage display panels, allowing the end-users to update them with new text via a web portal.

What is How I built a full stack signage solution using Python, Tornado and Arudino.?

I built a full-stack solution, including a web-front end that allowed the signage text to be displayed, a Tornado web-server that converted text strings to 1-bit bitmaps at the correct target resolution, and sent the bitmaps to the GPIO pins that were connected to the LCD driver hardware.

Tech stack

I used used a standard HTML/JS frontend with bootstrap because we just needed a simple, clean, standard interface for the end-users to input text. For the server I used Tornado for light-weight request/response handling, running on an arduino with low memory resources.

The process of building How I built a full stack signage solution using Python, Tornado and Arudino.

The process involved working with the hardware designers and doing UI and output iterations over a few weeks, until the user experience was good and the system outputted the correct bitmap display info.

Challenges I faced

Challenges included working in a memory constrained target environment, on a short timeline.

Key learnings

I learned a bunch about the Tornado server environment and running servers on arduino.

Tips and advice

Tornado is a great server framework for handling web requests/responses on embedded systems like Arduino!

Final thoughts and next steps

Since doing this project I've mostly used Django for my web-server applications, but wheneve## r I need something lighter weight, I still consider Tornado.

You can read more about this and other projects I've done at my website.

Discover and read more posts from liavkoren
get started
post comments4Replies
scott taggart
6 years ago

Is this a resume or a project description? This write-up is deceptive. As near I can tell from your project description linked above, you are running a few lines of C code on the arduino and no python or other web server code as we are lead to believe. The real web server heavy lifting is, of course, done on a Rasp-Pi. Why the bait and switch?

liavkoren
6 years ago

Hi Scott. I’m… not sure why I should argue with you about my own project.
It was not written in C.
The linked project description has multiple Python code snippets.

scott taggart
6 years ago

followed your link above. Thought I followed a link there to the project you describe here. That talked about rasppi and arduinio and showed some C code for ardunio. Now I look and I see the blog posts there are 5 years old. Who knows. Are you claiming you are running a full-on py interpreter in your arduino? And, where is the “more” info on the project. You don’t need to argue if you back up your claims with sample code. As it is, you made about 20 claims above and have zero evidence of any of it.

liavkoren
6 years ago

Where do you see C code?
Honestly, I’d be pretty happy to have been writing C five years ago.

Show more replies