This is Canvas. It's a 40in IR powered touchscreen. It acts as a sort of family hub for big people and small. [laughter] Using Convex, [music] I built a number of small apps for it, such as this daily whiteboard, a family calendar, a daily chores and pocket money list for my son, and even a map so my wife can track me at all times. [music] I went on quite the roller coaster building this thing, but I'm quite happy with where it landed. So, in this video, I want to take you through everything was involved with building this thing. So, if you wanted, you could build one of these yourself. So, settle in, grab yourself a lovely cup of tea, [music] and let me take you on the journey through building Canvas. Okay, before we can talk about Canvas, we have to talk about my history with this project first. [music] So, let's hop back in my lovely time machine and go back in time. In time, in time. So, eight years ago, I built this thing, which I called my smart mirror. It was sort of like a family central hub thing and a personal information device and a hallway mirror all at the same time. It had a camera and a microphone so it could recognize who was stood in front of it and show information just for that person. and you could talk to it and ask basic questions like tell you the time which admittedly is has questionable utility but I thought it was cool back then and don't forget this was before AI so it was kind of cool and in my defense smart mirrors all the rage back then popularized by the magic mirror squared project which was slash is a community and software platform for building these kind of smart mirrors which are bas basically just small computers attached to a monitor and placed behind a two-way glass. Anyways, I remember spending ages agonizing over the planning and sourcing of materials for this thing. [music] I looked into a whole bunch of different single board computers and picked out the right camera and microphone and display that I wanted to use. And I remember disassembling the display so I could kind of like fit it all in and get like a low profile. I even went out and got a customsized two-way piece of glass cut for it, [music] which I remember not being cheap. I then went ahead and fabricated a custom wooden frame to house it all, but to be honest, I'm no woodworker, so bits of it was a bit sketchy. But anyways, once I had it all done, I assembled it all and hung it on the wall. But with all that glass and hardwood and whatnot, it was pretty heavy. And my wife was not overly confident in my construction or my stick on hooks way of attaching it to the rental apartment wall, but it did actually hold up um just fine and didn't come crashing down that night or at any point in the future for that matter. So there. But anyways, that was the first version of the mirror. I did also do a whole bunch of other clever stuff uh for writing my own software for it and even a whole plug-in system and whatnot, but I'll spare you all the details for that. I've left links down to it below where I wrote a big wrote up in a big blog post and even a video if you want to find out more. Now, this mirror what 8 years ago now worked well for a long time, but after a few years and when we moved house, I ended up simplifying a little bit. I removed the microphone and the camera as they never really worked very well to be honest. I also got rid of the actual glass mirror part as I found often that the reflection from the mirror was actually kind of annoying depending upon like the time of the day and the light conditions in the room. So yeah, it kind of ended up basically just as a computer with a monitor attached to it and then I just hung it on the wall. I did end up changing the frame at some point. So, I had this more like chic black number which looks quite nice. But sadly though, after eight years of nearly continual use, that monitor reached uh its end of life and the backlight just slowly started going out until one day it just finally gave up. I did briefly look into see whether I could uh fix that backlight or I or get it or get it replaced, but I decided it probably wasn't actually worth it in the end. And I also just kind of wanted to do a whole new version of the project anyway. Okay, so it's 2026 now and I decided it's time to give this project a bit of an upgrade. Over the years, I kind of simplified the old mirror's UI down to only displaying three main things really. These are the three things that I wanted to see most frequently on the on the screen. These things were one the time, two the weather, and three family videos. For this new version, I knew that I wanted to keep those three aspects, but I also wanted a bit more interactive this time. So rather than just being a purely passive consumption device that you look at, I wanted to be able to interact with it and touch it and, you know, have more functionality on it. So, what I wanted the hardware to be able to do was one, be big enough that I could see it from a distance. Two, make it so it's touchscreen so I can interact with it and make it simple for my son to be able to use. Three, it needed to be light enough to be able to wall mount this myself and be portrait mountable because it needed to fit in the al cove that I had for it for preferably inexpensive. I this needs to get past the wife, so I don't want it to be super expensive. So, with those goals in mind, I'd start to look into different options. What I was really looking for was something like those kind of touch whiteboards that you get in kids classrooms, if you've encountered those, but it turns out those things are super duper expensive. So, that one was kind of out of the question for now. But when I inspected the one in my son's classroom a little bit closer, I noticed that the touch interface isn't some clever capacitive layer like you get on your phone or tablet. Instead, it's kind of like this bolted on infrared sensor layer around the outside. And if you're not familiar with these, they kind of work by having a row of infrared emitters on two sides of the screen and then a corresponding row of infrared detectors on the other sides. So when you intercept one of those beams with your finger, then it's able to detect the X and Y location of that interception and register that as a touch. It's actually quite simple really, but it works surprisingly well and even supports multi-touch, which is awesome. And the very best news that these things are actually relatively inexpensive and are sold in kits that you can get to just about any size of screen that you want. So, I thought if these IR way of doing touch is good enough for those super expensive classroom whiteboards, then they're probably good enough for my own little project. So, I went ahead and ordered this 40in IR kit for uh $146, which is about 101 freedom dollars. So, the next question was the screen. How was I going to actually display the pixels? And fortunately, this one was actually a lot simpler to work out. I basically just wanted whatever was the cheapest 40in TV that I could find. I decided on TV rather than monitor because well it's cheaper and most the time you're going to be standing far enough away that you don't really care so much about the pixel density. And I decided 40 in was going to be around the size and cost trade-off that I was looking for and look okay in my al cove. But now I'm looking at it maybe I could have gone a little bit bigger. More on that later. My plan initially was to get [music] something secondhand from Facebook Marketplace, but unfortunately I'm 3 hours away from the nearest large city now, and thus the pool of available secondhand stuff here is a little bit limited. So, off to Good Guys I went. Good guys, by the way, is an Aussie version of what I think Americans call a big box store. You know, it's got like fridges, dishwashers, head massages, you know, all the really important stuff. Um, and it obviously also has a bunch of cheap TVs. So, I ended up picking up this 40in Falcon F40 S55 TV for 279 Aussie or about $194. It was just about the cheapest one I could find there. And I have absolutely no idea how long this TV is going to last for. But at this point in the project, I didn't even know if this was going to work. So, I didn't want to spend a lot of money at this point. Okay, so now I had the TV and I had a way to make it touch interactive. [music] The final piece I worried about was protecting the screen. You see, unlike phones or tablets, TVs aren't really designed for a bunch of six-year-olds poking them all the time. So, I knew I was going to have to put some layer of some sort in front of the TV to kind of act as a protector. Now, the ideal solution would have been a piece of glass like I did for my V1 smart mirror, but I really didn't want to have to fork out for a massive 40-in piece of glass and the hassle with [music] dealing with the weight of all that at this point. Fortunately though, I noticed that Bunnings, which is an Aussie institution by the way, had these large acrylic panels available that I think are maybe designed for windows or doors or windows indoors. Who knows? Anyway, all I know is they were just about big enough to cover my 40-in TV. So, I grabbed one of those for 89 bucks. Fast forward a couple of weeks and my IR kit has finally arrived. Huzzah! I gave it a quick test and it seemed to work. So, I decided to plow on and put the whole thing together. So, I popped the frame on the acrylic and cut it to about the right size and slapped it on the front of the TV. To bond the acrylic to the front of the bezel of the TV, I just used hot glue. I have no idea if it's the right call or not. It sort of works. It sticks sort of um but it's not the the strongest bond in the world. You'll also note on this picture here that I've painted the glue black. This was an attempt to prevent light leakage into the screen, which I thought might have caused some sort of internal reflections on the inside of the acrylic, but perhaps this wasn't necessary. I don't know. So far, so good. Things were going well. Perhaps too well. After leaving it to dry for a day or two, I excitedly hooked up to my Raspberry Pi that I was going to use for the project. And that's when I started noticing an issue. It seemed like the touch interface worked great in some parts of the display, but not in others. At first, I thought this is a driver level calibration issue or something. So, I had a chat with Codeex and we vived out this little Python-based calibration tool and it sort of worked. I could trace my finger around the display and it accurately traced in some parts but not in others. I mean, you can see in this video where the touch registration point just jumps around, but then other times it's good. Well, unfortunately, there's no official calibration software for Linux. There's only calibration software for Windows. So, I kind of thought, well, maybe this is a skill issue on my part, and maybe the only way I was going to be able to get this to work was to have it run on Windows. So, I had a go hooking up the uh the TV and the IR sensor to my Windows PC using the manufacturer's official Windows calibration tool. And no, the same issue still persisted even on Windows. Fortunately, the manufacturer's tool comes with some more low-level diagnostic stuff. And when I ran it, you can see clearly that the Xaxis is registering touches correctly, but the Y direction not so much. So, it was at this point I started to suspect I had a broken um IR kit. So, I contacted the manufacturer about it. To my surprise, a few days later, I had a WhatsApp request from some bloke called Rocky, apparently. Anyways, after a bunch of uh back and forth with him, um basically involving me progressively taking it apart and reattaching everything again, he eventually concluded that yes, I probably do have a defective unit and promised to send me out another. I was dubious whether or not I would actually ever see this replacement IR kit, but unfortunately I had to go on vacation for 10 days. It was lovely, by the way. The middle part of Western Australia is just perfect this time of year. But anyways, short to his word, a couple of weeks later when I returned home, I had an IR kit shaped package waiting for me. I excitedly unpacked it, assembled it, and learning my lessons from last time, I gave it a thorough testing first this time, and to my great relief, it worked perfectly. Now, I forgot to take any pictures or video of this part, but h the padded sticky stuff that came on the IR kit on the frame was extremely sticky and was clearly not designed to be removed once it had been stuck down. It took me a lot of very careful prizing with the tool to ease it up from the acrylic that I had previously stuck it to. But after an hour or so, I finally had it up and off and just a bit of residue around. So, I stuck the new frame down and then reh hot glued the acrylic to the TV bezel again where it had come off as I had um prized it off a little bit unfortunately. But finally, now I had my assembled and working touch TV screen. Now was just a matter of attaching it to the wall. Easy, I thought. Now, my wife will happily tell you that planning is not one of my strong suits. I'm more of a hack it together and learn as you go kind of guy, and I would probably agree with this, and generally, it has served me well in the past. This, however, was not one of those instances. You see, what I wanted to do was have the wall mount kind of adjustable so that my son or his friends could reach it and lower it down, and then adults could adjust it to their height better when they wanted to see it. So, I went out and paid quite a bit of money at 109 Aussie for this fancy gas powered wall mount. The mistake I made was not measuring quite how wide this part is and and thus how far it was going to stick out from the wall when it was attached inside of the al cove. So, yeah, it's going to look pretty stupid, I thought. Back to the drawing board and back to good guys again for one of these cheaper but still kind of pricey tiltable lowprofile fixed wall mounts. It meant that I wasn't going to be able to get that nice gas assisted adjustable feature. But at this point, my wife was starting to question how much exactly I was spending on this project. But as any respecting project obsessed husband, I assured her it will look great in the end and plowed on. After drilling some holes and getting it level and screwed in, I was just about ready to go and I had one last problem to solve. How I was going to attach the Raspberry Pi and power adapter to the back of the TV. The solution in the end, as with many of my projects, was hot glue and zip ties. I cut out these little bits of scrap wood I had lying around and then screwed the pie into it. I did the same for the power socket, cutting some holes that I then threaded zip ties through to hold it all together. I then applied liberal quantities of hot glue to the bits of wood and stuck them to the TV. That didn't hold amazingly well, so I also cracked out some super glue and let that dry for about a day or so, and that did work. Okay, so hardware done. Onto the software. And in the past, this part of the project would have taken me a long time. I mean, I remember spending weeks and weeks working on the custom software for my first mirror project. Now though, thanks to AI, all I did was crack open a codeex, give it a new project, give it a few instructions such as how to use Convex and how to SSH into the Pi, and just let it rip. An hour or two later, and bam, I had the very first usable version. Man, I love AI. It's so good. It however isn't perfect. So one thing I quickly realized is that if my son was going to be able to use this then all of the important controls were going to have to be at the bottom of the display and not at the top which is more usual in applications. So, I quickly fixed that and then I got on to thinking about what I actually wanted this for, which was to be both, you know, a digital photo frame that I loved from the previous iteration and I wanted to have like apps that I could interact with. Now, I didn't tell the agent how to do this exactly, but I just came up with this like quite clever screen saver like system that has widgets on it such as the weather, news, time, and calendar and such. And then when I touch it anywhere, it takes me to the kind of like this mobile phone layout apps display, which lets me select [music] um which app that I want from the switcher down the bottom. Now, I briefly touched upon these apps in the intro of this video, but I have um a number of different apps on there, and one of them is this family whiteboard, which wipes every single day. Well, I mean, you can go back to previous messages on each day, but it's a whiteboard, so you can change the color, and it even supports multi-touch drawing, which is really quite nice. But then we have this chores app, which replaces the uh old system we were using before that was just a whiteboard on the back of his door in his room, which was [music] Yeah, it was really starting to confuse me. But anyway, my son can come in here and he can check off what he's done himself as a chore. And then you can see at the top here how much pocket money he's going to get a result um at the end of the week. Then I have this to-dos apps list that syncs up to my Google tasks. So um you know my wife or whatever can come in and add a task for me to do so I don't forget because I forget [music] everything. Then we have this family calendar here which syncs up to my Google calendar. And finally, we have this home controls app. Lets me see and control the various IoT/ smart home things I've got connected to my home assistant server. It's also got this section here that hooks into my UniFi gateway, so I can see who's hogging the internet right now. And finally, we have this map at the top that shows where we are currently. It also hooks into UniFi to detect the devices as they enter or leave the Wi-Fi. And I have this Home Assistant app installed that tracks my GPS so my wife can see where I am in the world and make sure I'm up to no good such as buying more stuff from Bunnings that I don't need. Now, as this is a convex project, all of the data is nicely backed up to my to cloud database and because it's in the cloud, [music] if in the future I want to make a mobile app, say, then it's all going to hook into the the same database nicely and I won't have to worry about that. And again, like as I mentioned before, using AI plus the codeex convex plugin, everything just worked super smoothly. I didn't have to tell it about anything other than just use it. I just want to say you really don't have to be a Convex or programming expert to do any of this. You know, you can just let the AI rip on it and get an absolutely excellent product at the end of it. All right, conclusions time. So, in general, I think the project went really well and came together really quickly. And as for the expense of the project, well, these are the total numbers. So, the grand total was about $1,050, which is about $723 USD, more expensive than I would have liked. But if you exclude the wall mount that I bought by mistake and the pie, which I already had, then you actually get down to about $617 or roughly $425, which is a whole lot less than the classroom whiteboard. Or at least that's what I will tell my wife. Now, for things that I would change next time, as there are a couple of things. Firstly, I think next time I might choose the TV a little bit more carefully, particularly considering that it's going to be mounted in portrait rather than landscape. You might have noticed on the pics from before that this bump on the back of the TV, which is the bit that holds all the electronics to to run the TV. Well, this part is heavier than the rest of the TV. So, when it's mounted, it kind of sort of slants to one side because of the weight. And I kind of fixed it by hacking some tape onto one side of the mount rail to level it out. And it worked, but it's not a great solution. Now, the second thing I would change is maybe this acrylic panel. [music] It was still kind of expensive, cheaper than the glass, but still kind of expensive. And as you might expect, it it flexes when you poke it, which means it actually ends up touching the TV screen behind it, which it was designed to prevent. So maybe I should have gone with glass instead of the acrylic. Or maybe I could have done without it at all. Ah, I don't know. Maybe time will tell on that one, I guess. Finally, now that I look at it in the al cove, I think maybe I could have gone a touch larger on the display. It does look a little bit smaller horizontally. The problem though is if I did go bigger because of like the 16x9 aspect ratio that most TVs have, it would make it even taller as well. So, it would make the UI even harder to reach for small people. But anyway, did I accomplish my original mission? Yeah, I think I did. I I constructed a large portrait touchcreen that's got all of my favorite functionality from my old smart mirror project and a whole bunch more useful stuff so that it can continue to act as, you know, the Can family's central hub. It's a Canvas if you like. But anyways, I think that's just about all I have for you guys today. I do hope you enjoyed this video. It is a bit different from my usual and I hope that the algorithm gods do bless it. Um, but if you liked this kind of hardware project kind of video, please do drop me a message down below because that will encourage me and maybe the algorithm uh to do more of this kind of thing. But until next time, thanks for watching everybody. Cheerio.
Last month I built something I lovingly call Cann-vas. It's a 40-inch IR-based touch screen that's running custom-built software. It acts as a sort of family home hub and is designed for big and little people.
Using Convex I built a number of "apps" for it including a daily whiteboard, a family calendar, a chores and pocket-money list, todos and even a map so my wife can track me at all times. I went on quite the rollercoaster building this thing but in the end I am really happy with where it landed.
Mike high-fiving his son beside the finished Cannvas family touchscreen
You can see it in action in the video linked above, or read on for all the details.
History
Okay, before we can talk about Cannvas we have to talk about my history with this project first. Let's hop in my time machine and go back eight years.
Eight years ago I built my Smart Mirror. It was a sort of family central hub, personal information device and hallway mirror at the same time.
It had a camera and a microphone so it could recognise who was stood in front of it and show info just for that person. You could talk to it and ask basic things, like telling you the time.
Ye, questionable utility on that one, but I thought it was cool back then. Don't forget this was way before modern AI was a thing. In my defence, these things were all the rage and had been popularised by the MagicMirror² project, a community and software platform for building smart mirrors. They're basically small computers attached to monitors and placed behind two-way glass.
Anyways I remember spending ages agonising over the planning and sourcing of materials of this thing. I looked into lots of different single board computers and picked out the right camera and microphone and display I wanted to use.
I then went ahead and fabricated a custom wooden frame to house it all but to be honest I'm no wood worker so it was a bit sketchy in parts. But anyways once it was all done I assembled it all and hung it on the wall.
With all that glass and hardwood and whatnot it was pretty heavy and my wife wasn't overly confident in my construction or my stick-on-hooks way of attaching it to the rental apartment wall. In my defence it did actually hold up just fine and didn't come crashing down in the night or at any point for that matter.
But anyways that was the first version of the mirror. I did do a whole bunch of other clever stuff writing my own software for it and plugin system and whatnot but I'll spare you the details, I've left links to all of this at the bottom of this post.
Now this mirror worked well for a long time but after a few years when we moved house I ended up simplifying it a bit. I removed the microphone and camera as they never really worked well.
I also ended up removing the mirror part as I found that the reflection from the mirror was actually kind of annoying depending on the time of day and light conditions in the room. So ye it was basically just a computer with a monitor on the wall for a good while.
I did end up changing the frame out at some point so that it was this more sleek black number. Sadly though after 8 years of nearly continual use the monitor reached the end of its life as the backlight slowly started failing until one day it totally went.
I did look into trying to fix or replace it but decided it was probably not worth it particularly as I actually wanted to do something different for the next version.
The new mirror
Okay so it's 2026 now and I decided it was time to give this project a bit of an upgrade. Over the years I had simplified the old mirror's UI down to only displaying three things we wanted to see frequently.
the time
the weather
family videos
We, and plenty of our visitors, would just stand there watching the family videos and seeing how my son had grown over the years. It was genuinely lovely. So for the new version I wanted to keep that, but make the device interactive rather than purely passive.
I wanted it to run different apps and act as our central family smart hub, with our calendar, todos, chores and whatever else I added later. The hardware needed to be:
Large, big enough that you can see it from a distance
Touch, I wanted to be able to touch it to interact with it, this makes it simple for my son to use.
Light enough to wall mount myself and be portrait mountable because of the alcove it needed to fit in
Preferably inexpensive
So with those goals in mind I started looking into options. What I was really looking for was something like those touch-whiteboard that you get in classrooms for kids.
It turns out those things are super duper expensive though, so that was kind of out of the question.
But on closer inspection of the one in my son's classroom, I noticed that its touch interface isn't some clever capacitive layer like you get on a phone or tablet. It's just a bolted-on infrared sender and receiver.
If you are not familiar with these, they work by having a row of infrared emitters on two sides of the screen then a corresponding row of infrared detectors on the other side. When you intercept one of the beams with your finger then it's able to detect the X and Y location of that interception and register it as a touch.
It's super simple and works surprisingly well and even supports multitouch which is great. And the very best news is that these things are relatively inexpensive and sold in kits that you can get to just about any size you want.
I figured that if infrared touch was good enough for those super-expensive classroom whiteboards, it was good enough for my little project. AliExpress had kits in just about every size, so I ordered a 40-inch TaiTouch kit for $146 Aussie dollars, or about $101 freedom dollars.
So the next question was the screen and fortunately this one was a lot simpler. I basically just wanted the cheapest 40-inch TV I could find.
I decided 40-inch was going to be around the size to cost tradeoff but looking at it in my alcove now I think I could perhaps have gone a bit bigger. My plan initially was to get something secondhand from Facebook Marketplace but unfortunately I'm 3 hours away from the nearest large city and thus the pool of available second hand stuff here was a bit limited.
So off to The Good Guys I went. The Good Guys is an Aussie version of what I think Americans call a "big box" store. It's got fridges, dishwashers, head massagers and a bunch of cheap TVs. I picked up a 40-inch FFALCON FF40S55 on sale for $279 Aussie, or about $194 USD. I had no idea how long it would hold up, but at this point I didn't even know if the project would work, so I wasn't ready to pay for a premium TV.
All I cared about was that it worked, used little power and could be mounted on the wall. Alright, now I had the TV and a way to make it touch-interactive. The final piece I was worried about was protecting the screen.
You see, TVs unlike phones or tablets aren't really designed for having a bunch of six-year-olds poking them. In fact they really don't like it.
So I knew I was going to need a protective layer in front of the TV. The ideal solution would have been a piece of glass like I used for my v1 Smart Mirror, but I really didn't want the expense and hassle of dealing with glass again.
Fortunately, I found some large acrylic panels at Bunnings. An Aussie institution, by the way.
I think they're designed for windows, doors or maybe windows in doors? Who knows. All I knew was that they were juuuuust about big enough to cover my 40-inch TV, so I grabbed one for 89 bucks. A couple of weeks later the IR kit arrived. Huzzah!
I gave it a quick test and it seemed to work, so I decided to plough on and put everything together.
So I popped the frame on the acrylic then cut it to about the right size then slapped it on the front of the TV. To bond the acrylic to the front bezel of the TV I used hotglue. I have no idea if this was the right call or not, it sort of works, it sticks but I don't think it's the strongest bond in the world.
I painted the glue black in an attempt to prevent light leaking into the screen, which I thought might cause internal reflections. It probably wasn't necessary. So far, so good. Things were going well. Maybe too well.
After leaving it to dry for a day or two, I excitedly hooked it up to the Raspberry Pi I was going to use for the project. That's when I noticed an issue. The touch interface worked great in some parts of the display, but not in others.
I first thought this was a driver level calibration issue or something. So I had a chat with Codex and we vibed out this little python based calibration tool and it sort of worked.
I could trace my finger around the display and it was accurate in some parts but jumped around badly in others. The screenshot below is from that test. As there was no official calibration software for Linux, only Windows, I thought this might be a skill issue on my part and maybe the only way I was going to get it working was on Windows.
So I hooked it up to my Windows PC and tried the manufacturer's official calibration tool. Nope! The same issue persisted. Ughh.
Fortunately, the Windows tool includes some lower-level diagnostics. The screenshot below makes the fault pretty clear: the X axis registered touches correctly, but the Y axis did not. That's when I contacted the manufacturer.
To my surprise, a few days later I received a WhatsApp request from a bloke called Rocky. It turns out he was a reseller rather than the manufacturer. I guess this is just how things work on AliExpress?
Anyways, after a bunch of back and forth that involved progressively taking it apart and reattaching everything, Rocky concluded that I had a defective unit and promised to send another. I was dubious, but I had to go on holiday for 10 days. It was lovely, by the way. The middle part of Western Australia is perfect at this time of year.
But true to his word, a couple of weeks later I returned home to an IR-shaped package. I excitedly unpacked and assembled it, then, having learned my lesson, gave it a thorough test.
And to my great relief, it worked! Whoohoo!
I forgot to take any pictures or video of the removal itself, but the padded sticky stuff that came on the IR frame was EXTREMELY sticky and clearly was not designed to come off once it had been stuck down.
It took a lot of careful prising with a few tools to ease it away from the acrylic. After an hour or so I finally got it off. I stuck down the new frame and repaired the spots where my slightly overenthusiastic prising had separated the acrylic. FINALLY, I had an assembled and working touch TV screen thing.
Yay! Now it was just a matter of attaching it to the wall. Easy, I thought.
My wife will happily tell you that planning is not one of my strong suits. I'm more of a hack-it-together-and-learn-as-you-go kind of guy, and generally that has served me well. This was not one of those times.
I wanted an adjustable wall mount so my son and his friends could pull the screen lower, while adults could move it up to eye level. So I paid quite a bit of money, $109, for a fancy gas-assisted wall mount.
The mistake I made was not measuring how wide the mount's arm was, and therefore how far the TV would stick out of the alcove once attached to the wall. Ye, it was going to look pretty stupid.
Back to the drawing board, and back to The Good Guys for a cheaper but still kind of pricey tiltable low-profile wall mount. I had to give up the nice gas-assisted adjustment, but by this point my wife was starting to question exactly how much I was spending on the project.
But like any self-respecting, project-obsessed husband, I assured her it would look great in the end and ploughed on. After drilling some holes, levelling it and screwing it in, I was just about ready to go. I had one last problem to solve.
How was I going to attach the Raspberry Pi and power adapter to the back of the TV? In the end, as with many of my projects, hot glue and zip ties came to the rescue.
I cut out these little bits of scrap wood I had lying around and then screwed the Pi onto it. I then did the same for the power socket, cutting some holes that I threaded zip ties through to hold it together.
I then applied liberal quantities of hot glue to the bits of wood and stuck them to the TV. That didn't work so I cracked out the superglue and that DID work.
Software
In the past this part of the project would have taken a long time. I spent weeks and weeks on the custom software for my first mirror. This time, thanks to vibe coding, I cracked open Codex, created a new project, told it to use Convex and explained how to SSH into the Pi. Then I let it rip.
An hour or two later and bam, I had a first usable version. Man I love AI.
It wasn't perfect at first. One thing I quickly realised was that if my son was going to be able to use it then all of the important controls would have to be at the bottom and not the more usual top of the display.
So I fixed that. I also wanted it to work as the digital photo frame I loved from previous versions, while still having "apps" we could interact with.
I didn't tell the agent how to do this exactly but it came up with this quite clever "screen-saver" like system that has widgets on it such as the weather, news, time and calendar. Then when I touch anywhere it takes me to the apps display which lets me select the various apps from a mobile like switcher at the bottom.
I mentioned these in the intro. The family whiteboard wipes every day, so we can leave little messages for each other, change the colour and whatnot. It even supports multitouch drawing, which is nice. Then there's the chores page. It replaces our old system, which was starting to confuse the heck out of me.
Anyways my son can open the chores app and check off a chore once he has done it. The total at the top shows how much pocket money he'll get at the end of the week. Then I have a todo list that syncs with my Google Tasks.
Then I have a family calendar that syncs up to my Google Calendar too. This is super useful as my memory is terrible.
Finally we have the Home Controls app, which lets me see and control the various IoT and smart-home things connected to my Home Assistant server.
The Home Controls app also hooks into my UniFi Gateway. It detects devices as they enter or leave the Wi-Fi and shows who is hogging the internets right now.
Home Assistant supplies the location data, so my wife can see where I am and make sure I'm not up to no good, such as buying more stuff I don't need from Bunnings.
Because this is a Convex project, all of the data is backed up to my cloud database. If I build a mobile app later, it can use that same data.
Everything worked great. I didn't tell it anything about Convex beyond installing the Codex Convex plugin. It just ripped, creating the schemas, functions and whatnot with barely any involvement from me. You really don't need to be a software or Convex expert to do this.
Oh there was one place where I leveraged my Convex knowledge. When I drew quickly on the whiteboard, the lines would flicker as though the app was overwriting what I had just drawn.
I suspected the problem was caused by the way the AI had written the Convex code. It used the useQuery hook while rapidly mutating the data, so an older server update could overwrite the line I had just drawn. Once I explained this to Codex and pointed it to the solution in my effect-sim project, it quickly fixed the issue. Now it works perfectly.
To be honest, I used my Convex knowledge to debug this one, but Codex probably could have diagnosed it from the symptoms anyway. Thank you, Dr Codex.
Conclusions
Overall, I think the project went really well and came together quite quickly. As for the expense, these were the final numbers:
Part
Cost
FFALCON 40-inch TV
A$279.00
TaiTouch 40-inch IR touch frame, delivered
A$147.06
Bunnings acrylic purchase
A$89.43
LINDEN tilt wall mount
A$69.00
Cable Chick gas-assisted wall mount, delivered
A$109.90
Raspberry Pi 5 8GB setup, delivered
A$322.52
IR-frame USB A-to-B cable
A$14.95
1m mains power cable
A$5.24
Double power adaptor
A$2.84
USB wall plug
A$9.90
Indicative total
A$1,049.84
Adjusted total without the mistaken mount and Pi setup I already owned
A$617.42
So the indicative grand total was about $1,050 AUD which is about $723 USD. That mixes what I actually paid for the main parts with current replacement values for the Pi and little bits I already had. More expensive than I would have liked, but if you exclude the $109.90 wall mount I bought by mistake and the $322.52 Pi setup I already had, you arrive at $617.42 AUD, or roughly $425 USD, which is a whole lot less than the classroom whiteboard. At least that's what I'll tell my wife.
There are a few things I would change next time. Firstly, I'd choose the TV more carefully, knowing it was going to be mounted in portrait rather than landscape.
The TV has a large raised housing on the back that holds its electronics. That part is heavier than the rest of the TV, so in portrait mode it causes the whole display to slant to one side.
I "fixed" it by hacking some tape onto one side of the mount to level it. It worked-ish, but it's not great.
If the weight had been more evenly distributed, I wouldn't have had this issue. The second thing I might change is the acrylic panel.
It was kind of expensive, and it naturally flexes when pressed. That means it touches the TV screen, which is exactly what it's supposed to prevent. Maybe I should have used glass instead, or perhaps gone without a protective panel at all.
Time will tell on that one, I guess.
Finally, now that I can see it in the alcove, I think I could have gone a touch larger. It looks a bit small horizontally. The problem is that a larger 16:9 display would also be taller, making the UI even harder for small people to use.
So did I accomplish my mission? Ye I think so. I constructed a large portrait touch screen that has all my favourite functionality from my old smart mirror project AND a whole bunch more useful stuff so that it can continue to act as the Cann family's central hub.
A Cann-vas, if you like. That's about all I've got. This build is a bit different from what I usually write about, so if you'd like to read about more hardware projects like this, drop me a message in the comments!
But until next time, thanks for reading everyone. Cheerio!
Convex is the reactive backend platform that keeps up with you and your agents. Database, functions, workflow, sync, search, file storage, and more. All TypeScript, zero glue.