Lifelong Learning a blog of all the things I've learned about…

6Aug/150

DSC Alarm + Envisalink3 + DSCServer + SONOS = Alarm Announcements!

Electricty Chaos

Image courtesy of antpkr at FreeDigitalPhotos.net

Long title and a large degree of entropy? Nah! This is a system that was built in layers but the components are largely used and fairly niche in their use. I've just decided that I'd use them to provide something even more niche, an alarm zone announcer for my house. Sounds cool to you then keep on reader, otherwise go back to your other boring business reading materials...

This all started when my wife and I decided to buy our "forever" home. A wonderful home on a bit of land in the city where our families lived, thus, the "forever" home label. The problem with our forever home is that it's a 2 and 1/2 story home and I'm always concerned with security, mainly the security of my family while we are home. I could really care less about someone stealing my junk as long as my family is safe. I wanted a way to ensure we would be aware if someone entered our home while we were home, awake or sleeping.

Long story short, I purchase a DSC Powerseries PC1864 system and the wireless sensors to put on each door and window. After we moved in and I got the system operational I realized the hectic process of leaving each morning would likely result in the alarm not getting armed so I sought out a way to remotely view and control it. I found the Envisalink3 card for my system. Nice little tool but the software is massively lacking in both features and security (no SSL for goodness sakes). That led me to the DSCServer software written for Android and Linux by MikeP. Great product and was the last piece to the puzzle for me....

Well, that was until I noticed my in-laws ADT system had a cool feature which would verbalize the zones that get opened...I loved that so much more than the beep...beep...beep my system made when a door was opened while the alarm was disarmed. Searching the interwebs left me empty, nothing was available to plug into my security system to give me that same awesome feature, I guess I'd have to roll my own. That's where my SONOS system (a total of 5 speakers) comes into play, it's got a wonderful full-featured API and it only took a few minutes to find a full-featured PHP library to control my system.

I leveraged the same raspberry pi that I was using for DSCServer to run apache2 and fixed up a nice PHP page which would announce which zone was opened based on a query string parameter passed to it. I then added an action for each zone in DSCServer to call the URL with the correct query string value for each zone. Volia! My SONOS speakers will quickly pause, a nice British lady will announce which zone was opened, and then the speaker goes back to whatever it was doing before the announcement.

I'm hard to please and this solution while dependent on layers of technology, works exceedingly well. There is a 2-4 second delay in the announcement which I'm strongly suspecting is the lack of power on my Raspberry Pi running DSCServer. I'm going to upgrade it to a Raspberry Pi 2 and see if I can reduce the lag time some. Otherwise, this project is complete.

As always, I believe knowledge should be free and freely shared. The PHP page I wrote is attached to this post for all to use. I've also linked below to the components I used (I'm not endorsing any retailer, it's just where I purchased).

DSC Powerseries Alarm & Envisalink3

DSCServer Software For Envisalink3

SONOS Speakers (I have several Play3s and Play1s)

SONOS PHP Library

zoneOpened
Title: zoneOpened (24 clicks)
Caption:
Filename: zoneopened.zip
Size: 1 kB

19Jun/144

blink(1) mk2 for the win…

blink(1) mk2 by ThingM

Last week I finally received my two new shiny blink(1) mk2 USB RGB "things"; these were rewards for helping fund the KickStarter project from ThingM. The mk2 is the second generation and even cooler version of thier RGB blink(1) devices. They are hackable USB powered indicators and I had a project in mind for one my mine which I jumped on right away. I wanted a way to indicate to cube mates when I was on the phone and shouldn't be disturbed (folks are always interrupting as they can't tell I'm on the phone before they barge in asking questions, awkward for all involved really). These blink(1) devices are the perfect fit for such a problem. I taped one up on my monitor, fired up Visual Studio and build myself a quick system tray applcation that will allow me to change the indicator color with a single click. The application also automatically switches the indicator when it detects I'm idle for 5 minutes. As soon as I interact with my computer again, the indicator automatically switches the indicator back. Super quick project and couldn't have been possible without the .Net library for the blink(1) by Jean-Francois Talbot and the great hardware from ThingM. As always source code is below and I've even recorded a quick video of the system working. Now to find a project for the other blink(1).....

blink(1)SysBarCTRL
Title: blink(1)SysBarCTRL (584 clicks)
Caption:
Filename: blink1sysbarctrl.zip
Size: 682 kB

24Sep/120

I <3 Raspberry Pi

I finally got my shipment of Raspberry Pis today and I am stoked! I didn't pay the crazy prices on eBay and so I now have a $36 computer. I've allocated both of my PIs as XBMC boxes to power my basement and living room TVs. I had been running a BoxeeBox and while I initially loved it, I've grown to HATE it. They should rename it "FlakeyBox"; a $200 box of crap.

Anyhow, I spent about 30 minutes working on it and I have my first Pi up and running and streaming 1080 video to my TV without issue. If you are in the market for a Pi allow me to suggest Adafruit. If you want information on how you too can use a Raspberry Pi as a media center, check this site out. There are several different firmwares available for XBMC but I've settled on Raspbmc for now, it's fast enough for daily use and seems very stable.

 

Update (2/11/2013):

Make sure you use a powered USB hub and pick up one of these power supplies for your PI, otherwise it'll be very unstable. I learned this the hard way. These power supplies from AdaFruit supply 5.25V to the PI which helps with it's rather shoddy power design which will allow the board to become under powered and reset.

25Jul/120

Why did I wait so long to toast my boards?

PCB Toaster OvenI've recently redesigned my Retro WiFi Radio project to include some "extra" functionality and the design requirements required some tiny spacing of the components in addition to some tiny SMD parts. While I'm all for hand soldering SMD when needed, I wasn't looking forward to attempting this board build by hand...I really needed to look for a better, faster and more reliable way to solder SMD boards. I'd read articles from Adafruit and some other sites about utilizing electric skillets to re-flow boards but I've also read plenty that say it's not the ideal way to re-flow. I even went  as far as to "Watch" some eBay listings for a few cheap Chinese re-flow ovens. I knew folks had been having lots of luck using a PID controller and a toaster oven and after reading reviews about those cheap Chinese re-flow ovens, I figured my $50 investment in a toaster oven from wally world would be the safest gamble. I knew I wanted a toaster with no digital controls (easier to hack up, I suspected) and dual top and bottom heating elements. I also had read some good reports using toaster ovens with a fan which supposedly prevented hot/cold spots in the oven. I found a Black and Decker at Wal-Mart for about $40 that fit the bill perfectly so I made the plunge, I sure hope it would reach high enough temps fast enough to hold a good re-flow profile.... The first test for the toaster before tearing it apart was to ensure it'd get hot enough without any modifications.

My particular oven has both a "Baking" and "Toasting" settings with the difference being the "Baking" setting enables the convection fan. I tested the oven in both settings to ensure it'd easily exceed the required 250C my lead-free profile would require for re-flow. It didn't take any time at all for the toaster to exceed my temperature requirements in both settings. Looks like I got myself a champ here folks! Given the fact that I had already purchased an appropriate solid state relay for a different project and I had a spare Arduino laying around, I knew I could quickly throw together a PID controller and test the toaster's ability to hold a profile. I used a sketch from these great folks (which they use for their Arduino re-flow shield) and an LCD display I had laying about. I had a working PID controller in about 45 minutes. So far, this project was looking like it was going to be super easy! Why hadn't I done this before? Using my Fluke meter (with temp probe), I manually charted the temperatures of 3 re-flow runs and while not as accurate as an industrial re-flow oven, I think it'll do just fine. My first few boards worked perfectly and I must say, it's WAY faster and easier than soldering by hand! Bring on those 0603 resistors now!  

Update:

Not one to leave good enough alone, I decided there were a few easy things I could do to improve the responsiveness of the toaster and help it follow my profile more accurately. Here's what I did to the toaster to "improve" it and the results. 1. Added reflective "flue tape" to the inside of the toaster's internal metal walls (back wall and bottom with ceramic fill inside cavity) as well as the glass front door (minus the "peep" window). 2. Filled internal voids with ceramic fiber insulation wool. Got some cheap from eBay

Unaltered Toaster:

Time to 250C (Toast Setting): 3:41.3 Time to 250C (Bake Setting): 6:46.9

"Improved" Toaster:

Time to 250C (Toast Setting): 2:25.8 Time to 250C (Bake Setting): 3:53.6

24Nov/102

Homemade Blinky Christmas Ornaments

Small picture of PCBLast year I decided to jazz up our family Christmas cards with LED power, inspired by this article. While I was totally happy with the cards I sent out, I was wanting something a bit more this year so I've decided to take it one step further and create Christmas ornaments for our family that will be sent with this year's Christmas cards.

I had a few criteria that drove my design for the ornament not to mention I had a very short timeframe so simplicity was important:

1. Have the same shape as a typical Christmas ornament (it is an ornament after all).
2. Lots of LEDs, folks in my family love LED blinky things.
3. Battery powered and last as long as possible on battery.
4. Hackable. I wanted the board to be easily hacked by family and friends that were so inclined.
5. Maximize the visual appearance of the front of the board (no through-hole components), I was also going to put a Christmas message on the front in silkscreen.

After a few hours piecing together the schematic, I was pretty happy with the reChristmasOrnamentsults. Ironically when I went to start the board design I ran into a simple but problematic issue of how to evenly place the LEDs on the round board, being the true geek that I am, I wrote a C# app which you can see in the ZIP file attached to this post. It gave me the x and y coordinates for each LED given the radius, origin and degree. Being late at night when I finally got around to laying out the board, this was a true life saver!

Once I had the LEDs placed, I decided to go back and add some blue and white LEDs on the neck of the board to enhance the "blinky" factor. Skip ahead 4 more hours and I had finished the board layout. I always give myself a day or two after the board is done before I come back to it and QA the layout, saves me tons of time staring at a problem and not seeing it! My QA found several issues and once resolved I sent it off to the boys over at BatchPCB.com for fabrication.

Fabrication typically takes three weeks or more but I was nicely surprised when my boards shipped after only 7 days and being the OCD type I am, I had to assembly one of the boards as soon as they came in the mail. It took me about 3 hours to assemble the first board, I was being overly cautious and deliberate in each solder and relearning how to use my hot air rework station. The total time for the first board included soldering up my homemade ATMega TQFP programming board which I used to burn the Arduino Uno boot loader onto the ATMega chips I had leftover from a previous project. I'll post about it in more detail later, I have a few minor tweaks to make to the design before I think I'll be totally happy with it, but it served me well for this project.

With the boot loader loaded, the final test would be attempting to load a sketch on it using my FTDI cable. To my total elation, it loaded the sketch without issue and my blinky utopia began! I was absolutely filled with joy when those LEDs started blinking away, who knew something so trivial could be so satisfying. I learned a lot with this project and I gained some important confidence in my design and layout skills which should serve me well with my next project.

As for battery life, I've adjusted some of the animations so that I could eliminate having all the LEDs on for extended periods of time and found that I was able to leave the ornament on constantly and the batteries died (the board actually froze) after about 40 hours. I thought about putting in a sleep mode after 6 hours of use or something but I think I'll pass and allow the user to just remember to shut them off, heck those inclined could do it themselves!

Well, I'm giving out the ornaments on Thursday (Thanksgiving) so that friends and family can enjoy them on their trees this holiday season, I sure do hope they enjoy them as much as I enjoyed building and designing them! Check out a video of them in action below!

ChristmasOrnament
Title: ChristmasOrnament (507 clicks)
Caption:
Filename: christmasornament.zip
Size: 22 MB

ChristmasOrnament
Title: ChristmasOrnament (507 clicks)
Caption:
Filename: christmasornament.zip
Size: 22 MB

1Aug/106

IKEA Lampan RGB LED Light

A few months ago, I saw this blog and video. The gentlemen had hacked a Lampan light from IKEA with LEDs, I was immediately enamored with the idea of building it and giving a few of them to my young nieces for Christmas. I figured they'd be far more excited about a one-of-a-kind light than a few more dolls in the 'ole toy box.

I also wanted to further my design knowledge of PCBs as well as better understand using PWM in AVRs, until this point I'd really only played with my Arduino and a few ATTiny13s. I quickly came up with the following design to suite my requirements.

My Requirements:
1. AVR with at least 3 PWM channels. (I used the ATTiny2313)
2. Super bright RGB LEDs.
3. Warm white light for normal use, not the normal blue hued white LEDs.
4. In-circuit programmable design.
5. Fit in the base of an IKEA Lampan.
6. UL approved power source.

First Version of my Lampan RGB LED PCB

Lampan RGB LED PCB

I used quite a few surface mounted components to get the size down.

The lamp uses a single momentary button to switch (you need special drill bits to drill the hole in this thin plastic, trust me, check Harbor Freight for them!) between the colors and the two color mixing modes (one, I jokingly refer to as "light switch rave" and the other a slow color changing mode). My wife absolutely hates the blue hue of normal LEDs, so I knew my design would have to incorporate a few warm white LEDs in addition to the RGB LEDs, thus the 3 warm white LEDs in the middle of the board.

I got the 5mm RGB LEDs from here, highly recommended! And yes, I did use a single resistor for each color, typically a no-no in design, but the trade-off was worth it for me. I wasn't overly concerned with exact color intensity from each LED.


Anyhow, this was a fun build and Christmas was a hit, the family loved them. I've attached the Eagle schematic and AVR Studio files to the post if anyone is more interested in the design.

Lampan RGB Firmware
Title: LampanRGBDriver (921 clicks)
Caption: Lampan RGB Firmware
Filename: lampanrgbdriver.zip
Size: 3 kB
Lampan Eagle Schematic and Board Files
Title: LampanRGBLedSchematic (852 clicks)
Caption: Lampan Eagle Schematic and Board Files
Filename: lampanrgbledschematic.zip
Size: 34 kB

Lampan Eagle Schematic and Board Files
Title: LampanRGBLedSchematic (852 clicks)
Caption: Lampan Eagle Schematic and Board Files
Filename: lampanrgbledschematic.zip
Size: 34 kB
Lampan RGB Firmware
Title: LampanRGBDriver (921 clicks)
Caption: Lampan RGB Firmware
Filename: lampanrgbdriver.zip
Size: 3 kB

Page 1 of 212