With a conference room named "Spaceball I," it's only fitting that it contains a "callable wall." While it's not all the way there, here is the start.
Earlier this month, I had the chance to attend the Google I/O extended event at the Boulder campus. My initial plan was to hear about the latest and greatest, and enjoy what I assume would be an amazing food selection (it was). What I didn't expect was how drawn in I was by the work being done with Google Home. Most of the functionality of these products is incredibly close to high-end home automation systems from five years ago, with incredible advances in AI allowing easier ways to interact with the systems (think of the voice recognition and interaction available through Google Assistant and the Home Hubs).
I'm a pretty big Apple fan, so the fact Google hardware was getting me excited was a pretty big deal. Thanks to the sale that day, I went home and ordered a Home Mini and Nest Hub from Google (technically Nest now). After playing around with them, getting comfortable with the always-listening mics, and playing around with some custom commands, I was ready to take this to my realm: by putting it on a Raspberry Pi. It never crossed my mind that Google didn't have a version of Home Hub that worked on the Pi. Chromium OS and browser works on the Pi, Duo works on the Pi, even their AIY and Vision Kits are based off the Raspberry Pi, so of course I figured I could get the Home Hub software onto a Pi. Sadly, I was wrong. Among the many great things Google has put on the Pi, Home Hub wasn't one of them.
This was a bit crushing. I had grand plans of using a Pico Projector and turning a whole wall of my bedroom into a display for a Nest Home Hub, using an old receiver and floor speakers for audio (yes, a bit overkill, but it was part of the theme of the project). In addition, it was a major setback on writing this piece (After six years of Enginursday, I'm running low on topics and projects).
So with my mind still on projecting video on walls, I turned my attention to one of my favorite projects I've never been able to accomplish: the wall phones from the movie Spaceballs. If you're unfamiliar with the movie, it's a comedic play on the original Star Wars movies. The bad guys have a large spaceship that features video walls you can call people on. The best part about the walls (and a great bit in the movie) is that there isn't a mechanism to answer the call, so the call automatically goes through, leading to great lines like, "I told you to never call me on this wall!"
Those familiar with the SparkFun building will know that our conference rooms are named after fictitious spacecraft, one of which being the spaceship from Spaceballs, Spaceball I. Ever since the room was named, I've wanted to recreate one of the video-call walls. But there have been two large snags: video conferencing on the Pi and auto-answer. Seeing as a conference room isn't the greatest spot for a device that can tune-in whenever, auto-answer wouldn't be something I'd need to overcome, but the video conferencing options up until recently had been a bit scant.
As of the last few years, there has been a surge in projects that have made video calls or conferencing more feasible. A lot of work has gone into the likes of UV4L and Jitsi Meet, and should definitely be looked into should you want to do video calls on the Pi. But for this project, Google Hangouts seemed to be the best fit. It would allow the users who could call the wall to be limited within our organization, and would allow for a more permanent, linkable solution.
The project itself is fairly simple and about as plug-and-play as it gets. In the past, set up of the Pi would have required some command line work, and this project still will a little bit, but the Rasbian image has come so incredibly far that most of these tasks either happen automatically or can be set from the desktop or browser.
I used the following parts for this project:
Once the Rasbian Image is on the MicroSD card, the majority of the setup is getting the Pi hooked up and booted. As a good rule of thumb when working with the Pi, everything should be connected when powering on so the peripherals are recognized by the system. In the past, you would want to update the Pi in the command line with sudo apt-get update and sudo apt-get dist-upgrade, but this seems to happen on boot now. In addition, a prompt comes up to change the password for the device; it's important for most uses of the Pi and this is no exception.
Once the Pi is up and running, Hangouts needs to be set up within the Chromium browser. Obviously a Google account is needed for this, but it's pretty straightforward on Chromium, like other browsers. I used my own Google account for this, but you could also create one for the wall specifically, so it's actually the wall you're calling. Once Hangouts is all set to go, you may have to change the mic and speaker sources if they're not your default. You can do this in the settings in the video call the first time, which should then default to these settings in subsequent calls. Finally once everything is set, you can make the browser window full screen by hitting F11. There's a command to make this happen with Chromium on startup as well. There's even a way to put it into kiosk mode. However, since I'm not the equipment administrator for said conference room, I'm going to make it as easy as possible to disable for now.
Obviously this wasn't the project I wanted to showcase, and it kind of amounted to just a Hangout machine, but I felt it was a good start in the direction of video conferencing, which has a ton more useful applications than replicating movie gags. I do hope to get this project into a much more finished form as a staple of the Spaceball I conference room, but I think auto answer will be forever off the table. If you do want to replicate this with auto answer, I was going to take the direction this gentleman took with his video doorbell project using Python commands (PyUserInput) to replicate mouse movements and clicks.