Feed on
Posts
Comments

Hi everyone, Christmas is coming in a few days, and soon we will be entering the year 2013. I figured this is time that I post about recent progress on OpenSprinkler. Sorry that I haven’t blogged for a while. Various projects have been keeping me busy. I am excited to post and talk about the details of these new projects in the near future. Anyways, what’s new at Rayshobby shop in the past month or so?

Sale Update. A few weeks ago we’ve just shipped the 600th OpenSprinkler. The sale really starting going up quickly ever since the Bay Area Maker Faire this year. I am hopeful that by the end of spring next year we will reach the 1000 mark. That would be awesome :). With a growing community of users, I’ve also started seeing people contributing to this project, including feature testing, debugging, writing scripts and mobile apps (see below). I am really thankful to everyone who supported and contributed to this project.

Software Revision. The latest firmware shipped with OpenSprinkler is 1.8.2. It has been relatively stable and I haven’t seen or received report of any major issue with it. Some of the commonly requested features are 1) adding back the parallel running mode (which was available in firmware 1.7 but disabled in 1.8.x to make space to other features); 2) adding a weather feature; 3) adding a microSD card for logging and storing Javascripts. I am hoping to get the first request done soon: since the feature already exists in previous versions, I just need some patience to sit down, optimize and reduce the current code and put it back in. As for the second request, a friend of mine has been helping me to implement the weather feature in Python script. The plan is to host the Python code on Rayshobby server. This way, the controller can periodically send requests to the server with the user’s zip code, and the Python script will return a simple number that reflects how the water time should be adjusted that day. This will free the microcontroller from having to carry out the necessary computation. It would be a simple scheme to fit a basic weather feature into the current generation of hardware. The third request cannot be implemented with the current hardware, due to the program memory limit. If you need logging, please use David’s Sprinkler Logger script that I blogged about in a previous post. It is available in the OpenSprinkler GitHub repository.


iOS/Android App. I’ve been holding back on developing an iOS or Android app for OpenSprinkler, partly because I am not familiar with programming mobile apps, and partly because the OpenSprinkler’s web interface is already functioning on mobile devices through their web browsers. But I do agree that a dedicated app would look much more appealing and make the product stand out. Fortunately the folks at FeedFriendly.com have developed an iOS app for OpenSprinkler called SprinklerAce. I’m quite excited and I’ve already seen the pre-release version of it. The app is extended from the previous version, which was dedicated to the IrrigationCaddy. It makes use of the manual operation mode on OpenSprinkler to directly control station valves. It’s currently undergoing the Apple Store approval process. I will make a separate post about it once it becomes available. Stay tuned!

Hardware Revision. The latest hardware version is 1.4, and we still carry both the full-assembled products (1.4s) as well as the DIY kits (1.4u). A while back when the last batch of DIY kits sold out, I was considering discontinuing it and start carrying semi-assembled kits, similar to the OpenSprinkler extension boards. But due to the popular requests from users, I decided to still offer the DIY kits, not only because its price is significantly lower than the fully-assembled versions, but also because many people enjoy the process of building a kit regardless of the price. In October 2012, I made some minor revisions to both 1.4u and 1.4s, mainly to improve the reliability of the power conversion circuit. Again, the hardware design is pretty much stable and I do not anticipate any major changes to it.

Also, I’ve been working with SeeedStudios to make a injection-molded case for OpenSprinkler. I’m quite excited because this is the first time I’m working on an injection-molded case. The folks at Seeed are awesome and very helpful. I will certainly learn a lot through the process.

Another bit of news is that I’ve started prototyping OpenSprinkler 2.0. The current plan is to simply upgrade the microncontroller to ATmega644 in order to fit in features like microSD card and more sophisticated weather-based control. Because I am planning to design it to fit the new project case, it will not be available until the case design has been finalized. So most likely it won’t be released until some time in late spring and early summer next year. I do have two prototype images to show off here. I was curious to experiment with different PCB colors, so I ordered a white version as well as a black version:

They both look gorgeous, but I personally prefer the black version because the dark background looks really cool. Feel free to let me know your preference/opinion. In addition to upgrading the microcontroller and adding the microSD card slot, I’ve also changed more components to surface mount packaging to facilitate manufacturing, and adding support pillars for the 16×2 LCD. Again, this is just a hardware prototype, I haven’t started working on the software code yet. The final version will also have to be designed together with the new case. So a lot of things need to be orchestrated before its release.

Upcoming New Products. As I mentioned above, I’ve been working on several new projects. Among which there is the OpenSprinkler Bee, which is an open-source controller for battery-operated sprinnkler valves. I already have a prototype and have demonstrated it at Maker Faire. I am working on making the kits ready soon.

Another product is a controller for watering indoor plants. It has built-in humidity, temperature, and light sensors, and will interface with a compact water pump to automatically water plants for you. I’ve temporarily named it OpenSprinkler Sip. This is a very exciting project that I hope to blog about soon.

All right, so much for the end-of-the-year OpenSprinkler Update. I hope everyone have a Merry Christmas, and see you again in 2013!

OpenSprinkler Logger

Logging is a useful feature which allows you to find out how OpenSprinkler has worked say, in the past week. While you can check the scheduled water programs using the ‘Program Preview’ feature, it does not account for dynamic changes like rain delay, power loss etc. This is where logging comes in handy: you can find out what OpenSprinkler has actually done in the past. Unfortunately I have not been able to include logging in the firmware because of the memory space that it would require to store the log data.

Recently, David Gustavson, an OpenSprinkler user, successfully implemented logging by using a PHP script that he wrote. The way it works is to have a computer that periodically polls the OpenSprinkler status say, every 20 seconds, and the script checks the differences between every two consecutive polls to record status changes. This is quite clever, as it does not require any modification on the OpenSprinkler side. All that it needs is for OpenSprinkler to return the status of each station, which it already does. Of course this does require a computer running on the side (or even remotely), but it’s pretty easy to set up, and you can use a plug computer or a Raspberry Pi which has very low power consumption.

David is kind enough to share his scripts and I’ve checked them in to the OpenSprinkler GitHub repository under the script/PHP/ directory. He also wrote a blog post about OpenSprinkler, which you can read about here. Thanks David!

Recently I received a request to customize OpenSprinkler for a 12V DC external relay board. It turns out to be relatively easy to do. Since it may be useful for other folks, I am writing a post here to briefly describe the modifications. First of all, the relay board has built-in opto-couplers and flyback diodes. It is designed to work directly with microcontroller pins. This particular relay board I received is an active low type. This means normally the relay control pin is pulled high; when the control pin is set low by the microcontroller, the relay will be activated. So before you go ahead and make changes, make sure to find out the type of your relay board.

OpenSprinkler can run on 12V DC power supply without any modification. As long as you keep in mind the polarity, it should work right away. Even if you connect the power supply in the wrong direction, it shouldn’t cause any damage because there is a protecting diode D1 that prevents reverse polarity. The only modification I needed to do is to replace the triacs (used to drive AC solenoids) by NPN transistors. Any common NPN transistor is fine. For example, 2N3904. The remaining step is to connect the station wires to the corresponding relay control pins.

The way it works is that normally the shift register outputs low. So all NPN transistors are turned off, and the collectors are pulled high by the relay board. When a station is open, the shift register pin outputs high, turning on the corresponding NPN transistor, and driving its collector low (to ground). This in turn activates the relay. That’s it.

Here is a video showing the relay board in action. The OpenSprinkler running a self test that turns on each station for 3 seconds.

It is also possible to use the NPN transistors to directly drive the relays. However, in this case, you need to add an additional flyback diode (between the collector of the transistor and the +12V line). The flyback diode is important to protect the transistor under inductive load. To accommodate this, I am planning to add PCB holes for these diodes in the future, which will make it easy to solder these extra components.

I had the urge to send this out a week ago, but I was holding on to it because I had to hear some feedback, suggestions, and issue reports from the initial users. Now I am ready to spread the words:

OpenSprinkler Firmware 1.8.1 is available for download in GitHub, go for it!

If you haven’t updated firmware before, here are the Firmware Update Instructions.

As always, the first question I need to answer is: what’s new in this version? Here is a list of highlights:
• New features:

  • Custom station names: each station can have a custom name up to 12 letters long.
  • Per-station master operation control: each station can individually activate the master station.
  • Run-once program: similar to the manual override feature on some sprinkler timers.
  • Station delay time, and master on/off adjusted time: fine tune station turn-on and turn-off time.
  • Water level/percentage: globally scales water time up and down based on local weather conditions.
  • Automatically reconnect: improves reliability on unreliable networks.
  • Support for RTC and automatic RTC detection: keeps time running even when power or network is lost.
  • Full range of time zones: living in Nepal? No problem.

• Improved features:

  • Program now has an ‘enable’ flag which allows you to enable or disable each program individually.
  • Improved Graphical Preview feature, which shows each station’s name and scheduled on/off time.

So this is another major upgrade since Firmware 1.6. So what happened to Firmware 1.7? Well, that was a quick update for the preparation of OpenSprinkler 1.4 orders: except for added support of RTC, it didn’t have any major changes. So I had to number this one 1.8 to distinguish it from the previous version.

Also taking a suggestion from the Forum, I’ve starting using minor revision numbers (1.8.0, 1.8.1 etc.) to keep track of changes in between major releases. This way you can easily find out whether your version is up to date.

I’ve also made a video tutorial (above) for those who want a video guide on how to use this firmware. I ended up having to switch between different ways of recording, so the audio quality is not consistent. Sorry about that, and enjoy the video!

About two weeks ago we started shipping out OpenSprinkler v1.4, and I figured it is now time to write a short post to announce it. What are the new updates in v1.4?

• DS1307 RTC
The main update is that the external EEPROM (24LC128) is replaced by a DS1307 Real-Time Clock (RTC). I am aware that RTC has been requested since the beginning of OpenSprinkler, and I apologize for taking so long to add it. There are multiple reasons: the limited PCB space, the cost of DS1307, and the fact that NTP sync is often good enough. The limited PCB space is probably the biggest reason. Fortunately since the latest interval program does not use external EEPROM any more (i.e. everything is stored in internal EEPROM), there is now space to add RTC. The software has also been updated to support DS1307. Specifically, if RTC is enabled in options, the controller will not rely on NTP to get time any more. In addition, there is an on-board button cell battery which will keep the time running even when power is lost.

If you own a previous version of OpenSprinkler which does not have built-in DS1307, you can easily add an external RTC module, available in Rayshobby shop. Our module comes with a built-in rechargeable battery, pin headers, and jumper wires for easy connection to your OpenSprinkler board. Follow this link for instructions on how to connect. These modules are also available on eBay, or Adafruit, or SparkFun, but they are usually pricier and without jumper wires.

• Screw Terminals
As you may have noticed from the pictures, the screw terminals have been upgraded to the two-piece (plug and socket) type, which makes it easier for installing and uninstalling wires. Now when you need to make changes to wires, you can simply take out the plug piece, insert and tighten wires, and plug it back in. There is no need to open the enclosure.

• Pin Changes
The second update is that a few pin assignments been changed to free up analog pins A2 and A3. These pins are precious for connecting to external sensors. Also, digital pin D3 is now wired internally to the rain sensor, so you no longer need to solder a separate wire. As in previous version, if you are not use the RFM12B transceiver, digital pins D2 and D10 are also free to use.


• Surface Mount Version
The last major change is that there is now a surface mount (SMT) variant 1.4s, which uses the same circuit as the through-hole version 1.4u but most components have been changed to surface mount package. This variant is created to improve our productivity of full assembled and tested kits. So from now on, all orders of fully assembled kits will receive the SMT version, while the DIY kits will continue to use the through-hole version.

The images below are close-up views of the SMT version (front and back):

As you can see from the front image, most components are surface mount, except the peripheral components like screw terminals, connectors, buttons, and big capacitors. Two crystals and the button cell battery for RTC are on the back side. The SMT version uses the same software as the through-hole version, but it does have a few differences:

  • It has two extra analog pnis A6 and A7, which are accessible in Arduino programs.
  • The Ethernet connector is changed from SparkFun RJ45 jack to Hanrun 911105A, which is less expensive and more widely available.
  • There is a slide switch on the top-left corner of the PCB. This is used internally by us to switch between programming ATtiny45 and ATmega328. You should keep it in the ‘INT’ position.

Future Plans

To give you a heads-up, version 1.4 is likely to be the last one in this hardware generation, and will also be the last through-hole version. The next version OpenSprinkler 2.0 will be SMT only, and will switch to a completely different microcontroller in order to accommodate new features like better user interface, on-board wifi, logging, and more sensor options. However, the development of 2.0 will likely take more than a year, so it won’t be available until after summer next year (2013). Meanwhile, feel free to send me comments and suggestions on how to improve the OpenSprinkler functionality, and I will consider them for version 2.0!


« Newer Posts - Older Posts »