Creating the Smart Home Universal Remote

It’s been a while since I last made a smart home device, not because my home is fully automated or because there wasn’t a need for another device, but because I still live in a rented unit and didn’t want to to spend the time making and setting up custom devices that would need to be torn down in the future.

Well the other day I realized that I could build another home automation device without a long-term stationary placement requirement! Not too long ago I built voice integration into my smart home system using the Amazon Echo (check out the articles here). While this worked well for moments without ambient noise, it failed to work well during parties, while watching movies, or while listening to music on my sound system. Obviously I needed another way to interact with these smart home devices and the current method of pulling out a phone or tablet, unlocking it, then switching between apps just didn’t appeal to me. What I really wanted was a universal remote that could also talk to my smart home devices.

So I started designing and planning out the features that I would want in my smart home controller and it had to be wireless charged (because replacing batteries or being tethered to a wall is archaic). Here’s the requirements I came up with:

Essentially, the goal is to get it all placed inside of an enclosure like this:

universal-button

Here’s a video of the very early prototype’s functionality:

As well as a more in depth Hackster post:

https://www.hackster.io/anthony-ngu/universal-smart-home-remote-wirelessly-powered-896f3c

My Electric Longboard Build – BOM

While I was creating my first build and began to put my first working prototype together, I figured I would document my parts, their prices, and explain why I chose them. I’ve split up the BOM into two parts, the electric longboard components and the board components which are usable on their own for a normal longboard. I decided to go with a single motor design for my first build (it seems fairly trivial to add a second motor in the future) and so far it’s been handling pretty well on hills. The only downside is that sometimes if I lean all the way to the left, the right back wheel comes off the ground slightly and I lose the driving traction. For more info about the trade-offs, check out my previous post.

The way a typical electric longboard works is, you (the rider) use the transmitter to speed up or slow down. The transmitter interacts with a receiver that is hooked up to the ESC (Electronic Speed Controller) which interprets the signal and turns it into a motor signal. The ESC needs to be hooked up to the battery for power since the ESC is what drives the motor. The motor then turns a gear which is hooked up to a belt that will then turn another gear that is attached to your wheel. This is how your longboard will gain movement.

ElectricLongboardDiagram

 

Electric Longboard Components
$70 – 5065 170kV sensored brushless DIYElectricSkateboard motor with 8mm wide and 35mm long shaft
5065 designates the size of the motor and is a common size for electric longboards although they typically have a smaller shaft. 170kV designates the torque the motor can produce (the smaller the number the higher the torque, but the lesser it’s top speed).
motor
$25 – Wiiceiver – (Not needed if you are using the VESC)
 A way to control the input to the ESC coming from the wii nunchuck
wiiceiver
 Has a better feel and is less bulky than a traditional RC controller.wii-controller
$110 + $20 – VESC
I found someone with experience making them and bought one but it needed to be custome made and shipped to me. The extra $20 is because I had to solder on wires and 2200uf 63V capacitor myself.
PCB_Front-1024x683
I used this in the interim while I was waiting from my VESC to be made and shipped to me. With some configuration it turned out to work decently well. I was able to ride it on flat or a slight incline, but with less power and it would cut off if the motor started to draw too much power. 
mambamaxpro
They were a lot cheaper than the 6S1P 5000mah batteries and have decent power and capacity.
5S1PBatteries
DIYElectricSkateboard sells an aluminum part for the motor pulley and I figured that since it’s the part coming off the motor shaft and is only connected by two set screws, it makes sense to get this part made of aluminum to handle the stress.
FREE – 15mm width 36 tooth wheel pulley (3D-printed it myself)
Originally based off a 9mm pulley model, I had to add bigger holes for stronger screws and a couple other changes. I will link to the design I put together for this part once I’ve tested it and made it fit reliably.
OrangatangPulley
$10 – 8mm width 280mm length HTD5 belt
15mm width is better than the 8mm width belt due to it’s wider area and less likelihood of snapping, but an 8mm belt allows for some leeway in alignment.
$5 – 5x M5 x 70mm bolts + washers + nyloc nuts for the wheel mount
These come in a lot more usually than only 5, but it doesn’t hurt to have more just in case.
This works out well and is made of aluminum. This can be replaced with a cheaper non-adjustable mount, but I didn’t like the idea of welding on a mount to my longboard trucks and had not ability to do the welding.
MotorMount
Subtotal: $400

Board Components
I chose these due to the holes in the hub of the wheels that could hold screws in order to mount a gear through.
orangatang_kegel
Due to my choice of wheels, these had to be altered in order to fit them (I used a file to make a bit of room for the screws that hold the gear onto the wheel) If I were to do this again, I might try the Paris trucks since they are more symmetrical.
caliber2fifty
These are some of the better bearings and ride really smoothly.
bonesredsbearings
$100 – Board of your choice
Subtotal: $224

Total $510 with new wheels and trucks on an old longboard
Total $624 from scratch

Buy vs. Build a 3D Printer

I have been spending part of my spare time working slowly to get my Prusa i3 built and I am just now finishing the build. I’ve run into multiple problems throughout the experience and thought I would let you in on some of the frustrations. Here are some of those issues to keep in mind:

  • Sourcing all of the metric vs. inches components. Make sure that if you pick one, you stick with it for all the parts or be prepared to figure out which parts will require updates to the .scad files since they will need to be altered to fit your custom components. (Hint: metric is easier for following instructions but harder to source in the US)
  • While your dimensions may be right in the scad file, once printed, they may not match exactly to your specifications and may need to be reprinted.
  • There are many different models for each 3D printed part based on individual scenarios. If you are following instructions for a build, try to use their parts/print designs.
  • There are plenty of options for every component from the the hot-end to the extruder, bolts, rails, etc. and this makes sourcing the right 3D printed parts with the right bolts, nuts, etc. a lot more cumbersome than I initially expected.

Final Thoughts:

If you want to get the experience of building a 3D printer on your own or getting a cheaper 3D printer, the best solution is to buy a kit and then build it. You can alter most designs later to suit your desires. Since most kits for a Prusa i3 use the same Arduino Mega and RAMPS board setup, the software to control add-ons is pretty simple to change.

Now that I have gone through the process of sourcing and building my own, I wish I had just bought a kit and assembled all of those parts myself in order to save myself time, money, and frustration.

Technology and Regulations

I recently watched a Verge Youtube video starring Deadmau5 and during the video heard a good point being brought up. Owning a drone and flying one is not currently regulated, but will it ever be?

People have always had fears when it comes to new things and naturally people will want to put limits and regulate some of the new technology. The fact of the matter is that almost anyone with the time and money can learn to create a robot or drone through a simple web search. Similar to the regulations with guns where they can be sold and may require a license to buy or use them, the government can try to regulate the availability on the market of parts and sales of full devices. But it is vastly different in that the parts being used to make a drone are not specific to just drones and the ones that are can be easily 3D printed or fabricated (frame/blades). There are many applications for the motors, controller boards, batteries, etc. and people can buy the parts to make one quite easily.

The only thing that the government might be able to regulate are the flight patterns of long-range and non-hobbyist type drones. As scary as it is, if someone wanted to make a drone for illegal purposes, they could quite easily. Recently there was a drone discovered that had been used in an attempt to smuggle drugs across the U.S. border.

Imagine the futuristic scenarios from movies where robots are “regulated” but there are dozens of black-market electronics shops and chop shops. Sure there are the brilliant and specialized hackers with the capabilities to mod creations or even create their own, but in our current society it’s easy to become that hacker. Especially with the evolution of the Maker movement where most knowledge is shared and open sourced. It’s a future that is becoming closer every day and it’s going to be almost impossible to “put the genie back in the bottle”.

Hackster Hardware Weekend (Hackathon)

I had the chance to participate this past weekend in a Hackster.io Hardware Weekend in Seattle and was blown away by the setup. Like most hackathons, they had big sponsors like Intel, Microsoft, Spark, AT&T, etc. However, unlike most of the software hackathons I have been to, they provided some hardware for people to use including Intel Edison boards with Seeed Studio Starter Kits and more. They also provided some cool and useful swag like a portable charger (which I used to power a Spark Core for my demo) and a small portable Leatherman pocket tool that is perfect for my recent maker lifestyle. The energy they provided was just spectacular and even though it was their first time hosting a hackathon, I think it went smoothly.

The food wasn’t just your normal pizza and salad hackathon meals. It also included a legitimate breakfast with bacon, eggs, bagels, cheese, etc. Lunches and dinners were comprised of delicious sandwiches (kind of like Banh Mi), mexican food, and one meal of pizza. On the side they have a whole bunch of candy, popcorn, and more snacks along with the steady supply of coffee, soda, juice, and water.

Unfortunately, like with most hackathons, the crowd of participants thinned out by day 2 with most of the remaining people being interested in learning more or deeply involved in the hacking process.

I came to the event without a clue as to what I was going to build and not really sure if I wanted to join a team, make one, or run it solo. After hearing about some of the prizes for using certain APIs (Weather Underground and WebRTC) I decided to focus my time on the Weather Underground APIs. Even after deciding what I wanted to use, I didn’t really have a clear understanding of what my final product would be and how it could change the world. I just decided to start hacking something together that I thought would be cool to own and ended up going down the path alone.

Stages of my Creation:

  1. Started with the idea to read the forecast for the day and display it to you through an small LCD screen so that I wouldn’t need to pull up an app to view the forecast. Decided to use the Intel Edison, Cylon.js, and the Weather Underground APIs to do this.
  2. Added functionality that would open your windows using a servo if your indoor temperature was past your comfortable zone and the outdoor temperature was colder. I also added functionality to change these settings through buttons and rotary angle sensors on the board.
  3. Added functionality to push the data to the cloud
  4. Realized that I could also connect to a Spark Core and communicate with it via WiFi and the Cloud from the Intel Edison, so I integrated a lighting scenario with a wireless connection.
  5. Created a prototype case for the now deemed “Hub” in Autodesk Fusion 360.
  6. Created a webpage using AngularJS on Azure that would showcase the data my back-end was receiving so that I could view information on the go.

The prototype Open Source Home Automation Hub was born.

Some things I’ve come to realize for my next hackathon:

  • Work in teams! I worked solo this weekend and although I did a lot of work to combine all the components, I definitely could have gone further with the idea and took it to the next level ending up with a professional product rather than a hacked together demo.
  • Set up a team before hand and know the expertise of everyone in the team and how best to leverage them. (This also might mean vet out the people who might have less to contribute if you are going hardcore)
  • Sometime’s it’s more about the presentation, the story, and the idea than the execution during the hackathon (although that might be due to the hardware nature of this hackathon). After all, you only have so much time both to hack and to present your creation.
  • Network! This is really just a great opportunity to meet other people in a related field and find out their skills and platforms of choice. Who knows? You might find a couple new tools that might be useful for your future endeavors.
  • Roll with it. A vision is great, but be able to adapt if things don’t work out quite like you expected.  Sometimes code breaks and it can be stressful but learn from it and debug better.
  • Have fun!

OpenSCAD (Required for the Maker)

Today after finishing the prints for the parts I need for my 3D printer model, I realized I had made a huge mistake. I hadn’t checked the measurements for the holes / rods and since I had gone with the US alternatives to the metric measurements, some parts just wouldn’t work. DOH!

This led to my next realization. The open source community provides the files in easily configurable SCAD files not Autodesk files or STL (STL would have been alot more difficult to edit although it can be taken and printed immediately).

In case you didn’t know, the beauty of SCAD files is that they are essentially programs. OpenSCAD is pretty much the open source standard for creating 3D objects before exporting them into STL format. It is a functional description Red and Yellow Cubes SCADlanguage that dictates the characteristics of the object that allows for reusable variables and one configuration file with the power to change your whole print library! Here’s an example that creates these two rectangular blocks:

If you have been reading my blog posts, I had started using Autodesk Fusion 360 and I thought it was one of the best programs for 3D modeling. Little did I know that the open source community didn’t hand out files consumable in Autodesk and the power behind SCAD files in the open source community is how easily the objects can be customized especially since altering a bunch of STL files would take serious time in Autodesk Fusion 360.

Solving Problems with 3D Printing Models

I recently stumbled upon a bizarre issue. I had this 3D model I had created in Autodesk Fusion 360 and it looked great, albeit strange due to the supports I added around it.

Model

It rendered properly on MakerBot Desktop, and I figured that I could just print it without issue and come up with something similar to my design and then perfect it later. Here’s what I ended up with:

lightbox_actual

Woah where’s the cavity? Why is it filling it in? I took a look at the print preview and how the slicer was splitting up the layers only to find that it had filled in the box!

rendered

I couldn’t figure out why the rendering showed it with a cavity but the printer was receiving instructions to fill it in. I thought that it might be the combination of Autodesk Fusion 360 and Makerbot Desktop software that is the problem, so I called them to ask about it. It turns out that it happens across the board from time to time with different 3D modeling software. Prints don’t necessarily turn out the same way they’re rendered, especially with more complex designs. (That’s how I learned to always check the print preview on a 3D printer. No one wants to spend a couple of hours on a wasted print.)

The Solution:

I heard about a repair tool that might help called Netfabb, so I decided to try it out and see how well it would perform. I can’t speak for the full downloadable tools, but I found out that they have a cloud service (https://netfabb.azurewebsites.net/) which will allow you to upload your STL files, repair them, and then download the fixed version (free as long as it’s for non-commercial use). This fixes some of the issues you might be seeing with your prints. (Remember to double check them through the print preview though)