Jul 31, 2011
Edit: Ohh My! :-) I won honorable mention in the contest! What fun. Too cool. happy jeffa, happy happy!
See all the winners here.
Click on any of the images in this blog post to enlarge.
nerdDoro is functionally two devices. nerdDoro is a standalone clock and thermometer with Pomodoro timer feature that can be operated by tilt actions. No buttons or switches. And it includes the Spinneret embedded web server that serves a configuration web page capable of setting the internal RTC (Real Time Clock) from a SNTP (Simple Network Time Protocol) source. It also delivers upon request an XML file of the current RTC time and temperature. Several examples accessing this data in php and .net are included. This site, www.rodaw.com, also has a widget displaying the dateTime and temperature from nerdDoro and a previous project based on Phidgets.
nerdDoro functions in these capacities very well. Yet nerdDoro can be capable of so much more. In the coming months I hope to explore aspects of home automation and incorporate a Spinneret in a new project that not only monitors but can initiate functions such as opening the garage door, turning on fans – the sky is the limit.
See nerdDoro in action in this embedded video or view on Youtube.
Inside nerdDoro viewed from the back with access cover removed. Note the black cable is a temporary programming cable. The long ribbon cable allows the Sensirion sensor to be placed up to twelve inches away from nerdDoro
nerdDoro block diagram with pin specifications.
nerdDoro web configuration page. Displays the time and temperature updated each time the page loads. From this screen nerdDoro can set the internal RTC from SNTP. The Spinneret usr led can be toggled on and off and the LCD Backlight can be toggled as well.
Sample XML output
nerdDoro produces XML of the current temperature and time. This can be read by many programs I might design without the need to reprogram the Phidget in my earlier Phidget controller project. This is much more versatile for me.
Bill of materials
- 1 – Parallax Spinneret Web Server #32203
- 1 - Parallax 4×20 Serial LCD (Backlit) #27979
- 1 – Parallax Sensirion Temperature/Humidity Sensor #28018
- 1 – Parallax Memsic 2125 Dual-axis Accelerometer #28017
- 1 – Parallax Prototyping Daughterboard #28310
- 1 – AA battery pack and batteries
- 1 – 7VDC wall power supply
- 2 – 220 ohm resistors
- 1 – 7805 5vdc voltage regulator
- 2 – 1o mf capacitors
- 1 – Parallax Prop plug (only used during programming) #32201
Origins of nerdDoro
Some time ago, long before I discovered Parallax, Inc. I began learning about interfacing the analogue world with the digital realm with Phidgets controllers. I learned to program the Phidget interface, LCD and temperature sensor in c++ on a linux box collecting that data and persisting to a MySQL db. Later I added reporting via php and jQuery flot web pages by way of Json. Much later I developed a wp7 application to display data acquired from this db.
Above is my Phidget controller and LCD housed in a Glad refrigerator storage bin. Later I would begin to learn to program my Windows phone 7 cell phone to display current and summary information from the Phidget project.
A screen shot of ePhidgetY my wp7 xapfest contest entry. I won a phone! –) More information on ePhidget can be found here. Don’t think I’ll have time to finish the new view model for this application before project deadline. Quite similar functionality and programming.
nerdDoro / Phidget WordPress Plugin
Note the jWidget on the right hand column. It displays the dateTime and temperature from the Phidget controller and the temperature from nerdDoro.
Detail view of jWidget a wordpress plugin to display data aquired from nerdDoro. See it right here on this site www.rodaw.com.
I created a Microsoft .net console application with an xml reader that deserializes the xml from nerdDoro and persisted to a sql express db by way of Entity framework code first. Source code published in parallax forums and attached to final entry post.
Future of nerdDoro
I put together a spread sheet with some WAG (Wild assumption guessing) on some parts. It would be interesting and educational for me to productize this. Perhaps nerdDoro may not be the next pet rock but I find it useful. What I’ve learned building it, and what I can learn from further development are invaluable stepping stones for whatever may be my next project.
An image of the spread sheet. Hmm how to embed this next time…
Specific responses checklist based on the official rules. This blog post that you are reading on www.rodaw.com should have all the required information. Additionally the following are links to original discussions and posts in the Parallax Spinneret forums as required.
Specifically, this is what we require for submitting a project:
- final submission: Create one or more posts in the forum thread for your project containing a schematic, a block diagram (if applicable), source code, a bill of materials, pictures, videos, (if applicable) and a project report. All files should be viewable with freely available tools, preferably open source. If there is any doubt, include a PDF copy of the file. Include links to other posts that you have participated in. All documentation must be provided in clear English language.
- project report: Create a report explaining the capabilities of your final project, demonstrating how well it meets judging criteria.
- source code: Well-formatted and documented code is required so the judges may develop a reasonable understanding of the functionality.
- pictures: Post at least three photographs of your project including the electronics and the project in use. Post at least one photograph of the project designer holding the project. Provide the photos in high-resolution.
- videos: If possible, provide videos of the project in action. The video may be posted as an attachment or hosted by a 3rd party video sharing site
Intention to enter contest is my first post and a continuing thread in the Spinneret forum under the original working title. JHA a play on my initials Jiffy Home Automation, or Just Home Automation. Once I had the idea to add the Pomodoro timer I changed the project name to NerdDor for nerd Pomodoro. This thread also details an enhancement I made to the RTC object to return ShortFmtDateTime to display on the LCD in nineteen characters and includes the source code changes to 35390A_GBSbuild_02_09_2011.spin.
PUB ShortFmtDateTime ' jeffa 7/12/2011 Returns similar to: "Tue Jul 12 08:51 AM" FmtDateTime bytemove (@DataBuffer, @DataBuffer, 12) bytemove (@DataBuffer, @DataBuffer, 3) bytemove (@DataBuffer, 0, 1) return @DataBuffer
As I first entered the contest and my first introduction to the Spinneret I felt overwhelmed looking for the starting place. I began this blog post in my jeffa account at forums.parallax.com.
One of my favorite aspect of this entire process was probably learning how to put some of my own code in a separate cog, and later to set semaphores with locknew, lockclr and lockset etc. to manage contention between running cogs for the RTC and Sensirion resources. What a difference on project stability and display the addition of the semaphores made.
Another highlight of the nerdDoro project was creating the user interface with a shake of the enclosure. This is a forum post with a Youtube embedded video of nerdDoro functioning after I added the accelerometer operation capabilities. http://forums.parallax.com/showthread.php?133267-nerdDoro-is-shakey-now&highlight=nerddoro
Forum thread with first take on block diagram http://forums.parallax.com/showthread.php?133432-Why-Sleep-nerdDoro-paint.net-block-diagram-schematic&p=1022695#post1022695
This post details the .net application I wrote to persist data read from the nerdDoro XML file. and includes a screen shot of MS SQL Server Management Studio with several queries, sample data and column definitions. http://forums.parallax.com/showthread.php?133355-nerdDoro-meets-ms-ef-cf-for-ndXml&highlight=nerddoro
Source code for nerdDoro is maintained on my github account https://github.com/jhalbrecht/nerdDoro and has been included in several forum posts.
I did quite a bit of debugging the HTML and XML output using Fiddler. I documented what I believe are errors with my original code with a fix for the reference code that is contained in the code repository. http://forums.parallax.com/showthread.php?133082-http-Protocol-violation&highlight=nerddoro
Forum posts demonstrating participation and assistance to others
Forum post where I answered thread on how folks are powering their Spinneret project. I originally designed a little project PooP Power over other Pairs (see also this) that I detailed in this post. I subsequently changed the way I power the project to include batteries and allow for stand alone operation with no connection to the world (disables XML/HTML capability) However I still use the PooP to eliminate the clutter of a wall wart connected directly to nerdDoro.
Bill of materials – please see above.
nerdDoro.spin source code is available on gitHub https://github.com/jhalbrecht/nerdDoro and will be attached to forum contest submission post.
Pictures and videos have been uploaded to the Spinneret project throughout my effort and are include in this blog post.
I hope folks find this project interesting. And thank you Parallax and Wiznet for sponsoring this Spinneret design contest.