The ultimate Raspi-Meeting-Room project

COVID-19…virtues of an extended lockdown !

Intro

Javascript | Typescript | NodeJS | Rest-API | MS Graph API | Google API | Raspberry | Raspbian | e-Paper | Serial Peripheral Interface | Sketchup | 3D printing

Genesis

A few years ago, I became very interested in an emerging technology known then only via e-readers devices; I’m talking about electronic ink.

What fascinated me at the time was not the lightness and flexibility of the screens, but rather the persistence or “afterglow” of the display and the absence of backlighting, ie the gain in terms of consumption.

There was, in my opinion, matter of declining its use in multiple fields, and I quickly imagined applications for companies: paper-board, meeting room bookings display, digital signage, etc.

But the different technologies used did not yet allow us to consider a use other than those of e-readers and labeling. It lacked essential components such as color, size of the displays (very limited at the time) and a suitable refresh rate. So I suspended my investigations while waiting for the technologies to evolve.

A few years later at the end of 2018, I learned about the progress that had possibly been made, and it is clear that they were major ones. The refresh rate was incomparable, even if not suitable for playing videos (except on R&D prototypes, still far from being industrialized). And then the color pointed its nose since it was now possible to find screens supporting simultaneously 2 to 3 colors. Those offering RGB compatibility were rare and above all, very expensive. It still lacked the size which remained too limited to consider for example replacing paper-boards (as well as a slightly wider range of colors).

My curiosity was then enough exacerbated and it was then obvious that to quickly test this range of screens.

I hadn’t planned on setting up a startup to market a finished product. I only wanted to have fun through a small DIY development, approached as a Proof Of Concept.

My choices in terms of computing language have always been contextuals. At that time I had just completed the development of a middle-size JAVA application for my business. I do not normally code anymore – I have passed the age – but I was in urgent need and did not have the resources to accomplish this development.

Obviously, so I opted for JAVA. And since other evidence was induced, that of using a Raspberry PI module. Personally, I also quickly became interested about these cheap tiny hardware modules. This is strongly linked to my professional experience since I evolved in the embedded world for a very long time. I have designed many electronic boards and have developed just as many firmwares and industrial applications. My interest in digital electronics has always remained intact; even if I switched to IT in the meantime.

Then, it remained to find a not too expensive e-paper screen and a project to motivate my work. I embarked on the development of a meeting room bookings display as we can see a lot proliferating for a while (at that the time e-paper versions did not yet exist). It seemed to me that there was a major interest in using this technology, once again for its low consumption. And the question of the refresh rate was secondary.

I chose a Waveshare product for its price and also for its ease of supply (available on Amazon). Regarding the Raspberry module, my choice turned to the Zero W mainly because of its form-factor. Indeed, even if these small modules are more intended to be used for learning and testing, this version (less than the Compute Module) nevertheless seems to me to be fairly close to what one would expect for being an industrialized product. In all cases, more easily adapted to a box setting.

Regarding the meeting room event manager, I had my professional environment available, namely Office 365 Business

In early 2019, after many intensive evenings passed to coding, I had a running prototype and even succeded to bluff my boss. A challenge !

At the same time, while I was responsible for managing the relocation of our professional offices, I had fun drawing a 3D layout plan to allow all our anxious collaborateurs to plan a serain futur. Sketchup was no longer a mystery for months, and it was therefore just as obvious that I embarked on the design of a box (or small cabinet) that I had 3D printed by a third-party.

Others personal and professional projects then came to interrupt this Proof Of Concept which lacked the support of Google GSuite.

Last March 2020, COVID-19 turned everything upside down. Overnight, I was confined to my home, with no other option than to find new indoor occupations to fill the frustration of a lockdown.

By doing a little storage, I came across my box and the embedded e-paper screen. Why not take advantage of this lockdown time to complete this project ?

As I wrote above, my technological choices are contextual. I had undertaken the last 6 months developing a useful app for a non-profit organization for which I am very involved. Being a cloud-oriented app, I made the choice of angular for the front and Node.js for the back, everything  based on a Google GSuite environment dealing with API.

6 months my nose into typescript definitely encouraged me to redesign from scratch my meeting room booking display POC, adopting this language, certainly a little disorienting due to its event-driven approach, but based on a technology quite simpler to implement on a small module such as the Raspberry PI, without having to operate a “gas factory” with the JVM. In addition typescript now offers the possibility of coding in Javascript with the formalism quite close to the large family of JAVA, C++ and C, which I have been familiared to for several decades

And that’s not counting the JIT (Just In Time, and compiling) and now the HolyJIT which greatly accelerates the time between coding and running, with a very light completion phase compared to java and other languages. It is also a great positive point for debugging.

Now it’s done and the project is achieves !

I have opted for a 3-color version (black, white and red). The refresh rate of this screen is low, especially when it concerns color display. But this is nevertheless reasonable for this usage. There are certainly much faster screens, but it was important to me to favor the cost and the interfacing technology (I2C, SPI, Serial, etc .), in any case to avoid a too complex bus-communication to implement with a Raspberry.

Sharing

I’ve spent a lot of time on the web looking for tips and solutions. It has seemed obvious to me passing the buck. Especially since I spent a lot of time investigating and testing the interface with Google GSuite and Microsoft Graph APIs.

Again this is only a proof of concept and definitly not a finished product that is probably ‘trapped’ with bugs. At the same time everything was done in total agility. The inconsistencies are the pure fruit. Please consider this work as a modest knowledge base. I hope it will be useful to others.

The code is free and have to be taken as is. I made an effort to comment on it, as you know a real plague of developers !

Site map

The way of presenting the project is a logical step-by-step course:

  1. Hardware: connecting pieces
  2. Raspbian image: setting and configuring image, incl. dependencies.
  3. Microsoft Graph: for whose who own a Business O365 environment
  4. Google API: for the others who have choosed a Google GSuite solution.
  5. Server: the app collecting metting room bookings and dispatching to the display devices.
  6. Display: the app handling meeting rooms display’s screen.
  7. Case: an example of 3D case.
  8. Tips&Trick: to help performing some usefull stuffs.

Let’s start !

0 Comments