Friday, April 18, 2014

1st 1/4 of '14

     It's April and I haven't posted much about any of the projects I've been working on. I haven't completed any big projects that I thought warranted their own blog post, but I'll use this one to explain what I've been doing and what I plan on doing soon. 

     I’ve been regularly playing with my TI K-TM4C123GXL Launchpad. I’m taking an online course called “Embedded Systems - Shape the World”, and although it is nearly all material I already know, the programming exercises are good review for programming a different microcontroller than I’m used to.

     I’ve been perusing /r/jailbreak a lot lately. I’ve been jailbreaking my iPhone for many years now, but never really installed many tweaks. It seems like every day, a new tweak comes out that I couldn’t have lived without!

     I made an improvement to my Printrbot 3D printer that I’ve wanted to do for a long time – I installed springs in each of the corners of my heated bed to allow me to level it more easily. So far it is an improvement, but there is still some work that can be done. Having a 3D printer convinced my coworker to finally troubleshoot some problems that he ran into on his Cupcake printer years ago that caused him to shelf it. I printed some stepper motor mounts for his Cupcake printer to upgrade from the DC motor extruder that was stock on it. Our work on this convinced another coworker to buy a Prusa 3D printer so now we all compare notes to get the best quality prints.

Working on my Printrbot

     I became fed up with using Sketchup to design models, so I downloaded Solidworks. I used Solidworks during my freshman year of college, so I dug out my notes and quickly relearned how to use the software. Around this same time I finally got my Backwoods logger working, so I decided to build a case for it. I have initial design complete, but more work needs to be done to get a working design.

Backwoods Logger and unfinished case design

     During the process of fixing up my 3D printer, I printed a heart-shaped box. While I had no use for this initially, I decided to build a simple circuit that would light the box from inside. I first had ideas of it lighting up in a heartbeat pattern, but after beginning to build it, I noticed that it wasn’t turning out as nice as I expected. Since I built the box first, and then the circuit based on those dimensions, I was required to use a coin cell batter from the size constraints. This caused the LEDs to not be bright enough to illuminate the box very well so I simplified the circuit drastically. I used a ATtiny13a to detect when a switch was closed and blink the LEDs a few times. I used a spring for the switch so when the box is hit against a surface, the spring makes contact with a metal header and causes the box to flash. The code is on Github

The box. This album contains more photos of the project.

     I used w3schools to learn CSS and JavaScript since I was very familiar with HTML and wanted to build more than the most basic websites. During this process, I used my skills to build a web clone of the iOS 6 calculator app. Using CSS, I was able to make the buttons seem “pressable” and have the button presses show up in the calculator screen, but eventually got stuck in making the screen text resize when the digits would overflow, so I moved on to other projects. I learned a lot working on this project and hope to get the motivation to finish it someday, but it was only a learning tool for me. My work so far is hosted on github

     I have an audio system in my bedroom that I use when I am tinkerering on projects. In the past I’ve always had a wired connection to whatever device I was playing music from, but when I saw that the Chromecast SDK came out, I thought about using my Chromecast to bridge the gap and make it wireless. I researched the SDK and played with some of the examples to see how it worked so the next step was to make the hardware that would convert the HDMI out to an audio signal. I combed through the HDMI specification and initially looked into building a decoder on an FPGA. When this proved difficult, I researched some existing chip combinations that would first extract the audio signals from the HDMI line and then decode these audio signals so I could feed them into an amplifier. This method looked entirely feasible but the chips were expensive and the parts were at end of life from the manufacturer. In the end, I just bought a Bluetooth dongle from amazon, but it was fun researching how HDMI works.

     Another example of my research going too far was the result of me buying a cheap humidity sensor from eBay. I couldn’t find any examples of people using this part to actually measure humidity, so I wanted to be the one that did it. At first I wrote a python program that could calculate the humidity from the temperature and the impedance of the sensor based on the values given in the sensor’s datasheet. The next step was to build a circuit that could accurately measure the impedance of the sensor. I tried a simple circuit based on an Arduino and a RC filter but it didn’t give me the exact results I was looking for. I found a fantastic chip that seemed it would perfectly measure the impedance and even got lucky and ran across an open-source project on github that combined this chip and an Arduino. I explored this option for a while, but eventually decided there was no reason to continue trying to get this sensor to work. The impedance-measuring chip is $25 when the sensor is only $1. I could buy another humidity sensor that I know works for only $2. 

     I am going to use this new humidity sensor with a Spark Core to wirelessly monitor the humidity. I would like to use push notifications from the Spark to my phone with Pushover to alert me if the humidity is out of the desired range. I will also need to create a circuit using a li-po battery to keep the device powered. This will involve putting the Spark into low power states while it is not sending data.

     The last project that I am actively working on is a refresh of my electric imp relay. I noticed from comments on my post describing it that I have the relay on the wrong wire. I plan on fixing this and adding more options to the switcher app. I originally used iWebKit to build the web app but it is very out of date. I have recently found a few different frameworks that can make an iOS7-style web app and decided on using Ratchet because the documentation is amazing(this is the #1 thing I look for in an open-source project) and it uses Jekyll (something I’ve wanted to learn for a long time). In just a few hours, I was able to create a design for the web app that greatly improves on the original version. Since I am rewriting the app, I will also add more features to the Electric imp that I have wanted based on the past few months of nearly daily use. I will surely create a new post on the topic when it is finished.