Must-haves for EASY DIY controller?

The more I think about this, the more I think you want a serial port. If someone wants to save money; they could leave off the LCD and keys.

I realize that USB is available. But think about the casual user. They probably won't have a way to write code on the PC. Also are we going to write a USB driver (maybe there is one) for Windows 7, Vista, XP, 2000, 98. Ok, I realize that maybe not all those are needed, but when Window 8 comes someone better be around to rewrite the driver. I think you get my point.

I realise my approach isn't the way this is going to go [sigh, all on my own again... grin] but the USB chips I was referring to are in fact USB<->serial interfaces. On the AVR/Arduino side you use one of the devices serial ports. On the Mac/PC/Linux side you use the drivers shipped by the device manufacturer (FTDI, in this case. Drivers are already in the linux kernel, and are available for Mac/Windows from FTDI). The Mac/PC just sees another serial port (COMn: on the PC, /dev/cu/weird-name or similar on the Mac)

So, your code just opens a serial port. The USB nature of that port is hidden.

The difference between a standard serial port, and the USB approach (apart from the Mac not having any "standard" serial ports) is that you can have multiple serial ports on the USB bus, and *my* goal was to keep things modular. Again, I realise that's not the thrust of this project - I'm limiting myself to factual corrections these days [grin]

Cheers,
Simon
 
SpacedCowboy,

Thanks for clearing that up for me. I am completely interested and probably a little ahead of most people since I do embedded software. But I try to think inexpensive and easy (both to do and understand). Both of which I tink we want for this project.
 
On the Mac/PC/Linux side you use the drivers shipped by the device manufacturer (FTDI, in this case. Drivers are already in the linux kernel, and are available for Mac/Windows from FTDI).

As is the case with using an Arduino. The chip on the Arduino reference design is probably the same chip you're using, drivers are readily available from the manufacturer - AND they're included in the Arduino development environment, so it's the kind of thing that doesn't require a lot of effort.

I'm probably rubbing against the grain of people like Simon and TheFishMan by sticking with the Arduino as a development platform, but IMHO it's a reasonable approach given the target audience and the "ease" of use - The Arduino environment has been used to build reef controllers many times, there's a large support network, and a LOT of the groundwork for a project like this is done already - we will be able to grab code libraries for the LCD, I2C, One Wire, etc. And I'm also imagining that we'll develop our own libraries and/or standard programming for this project, so people that don't want to code can just copy a sample program, and, at worst, change a few variables to get the behavior they want. IMHO if you try to do anything more structured than that, you're going to end up trapped - either by tying your code too heavily to the exact hardware and features desired on one particular tank, or by "forcing" users to adjust the program through some awkward button interface on the device itself.

Again, I see this project as an entry point into DIY'ing controllers, and I see the Arduino environment as supporting that. I don't really WANT a 100% plug-and-play solution that requires ZERO effort, but I do want to make it easy!

Oh, and FWIW, the ATMega328P used in the Arduino has a hardware serial port, so people can use that for expansion in addition to I2C or One Wire.

So I guess what it really boils down to is what do we build in to the core unit (the shield) vs. what do we break out into other modules? Well, my approach to that has been that I might as well use up the space on the shield with "core" stuff that everyone is likely to want - so far, that looks like a pH circuit, headers to break out I2C and One Wire separate from the regular headers (which I find a pain to use anyways), an RTC, and an LCD controller. So that's what's on the shield right now. :D

I really appreciate the discussion thus far though and I don't want to shut things down by restating my position. :)
 
Text mostly. Anything with the Hitachi HD44780 chipset. That lets you choose from a variety of displays, from 1x16 characters to 4x20. Something like this:

LCD-011-000.jpg


Most of them can do custom characters to support limited graphics.
 
I was just curious. I think that is what I woul propose. I think it has what is needed, without the added cost and complexity of a true graphics display.
 
Exactly! I've seen people do "real" graphics on an Arduino and it always seems a little overwhelming/challenging. The good thing about the Hitachi chipset is that it's SO widely used, you can just slap on the display you want. These displays are available EVERYWHERE in all sorts of colors and prices, so there's something for everyone.
 
Silly me - I should have known they were out there somewhere! Just a bit more that I think is reasonable for a project like this, but I haven't priced them in a while.

Thanks Bean
 
TheFishMan65, no need to worry about drivers with the Arduino design. The FTDI chips used are now quite popular for USB<->Serial and on the computer side of things it is just a serial interface.

The nice things about these displays is that they are pin compatible between the various line x character configurations so people can use whichever they want. I have a couple of 2x16 but I think I'll get a 4x20 because I'm running out of space :)

DWZM, are you going to put an FT232 chip on the shield for USB connection or require one of the FTDI cables? There are 5V and 3V versions of the USB FTDI cable and I don't think they are interchangeable.
 
Very nice thread! Is it possible to monitor: pH, temperature, salinity, and calcium on a netbook computer? I would like to know what are the components that I will need and what software. Thanks!
 
DWZM, are you going to put an FT232 chip on the shield for USB connection or require one of the FTDI cables? There are 5V and 3V versions of the USB FTDI cable and I don't think they are interchangeable.

No USB chip on the shield, 'cause I'm assuming people will be plugging it in to a Duemilanove or clone. We kicked around the idea of putting the whole Arduino circuit on the shield but I don't think there's room, unless we make it huge or go SMT for several of the larger parts. And either of those routes would kind of kill it for me. Still open to the idea though if people think it's important. Designing the Arduino into the PCB would reduce cost but increase complexity, and it would be redundant for people who have (or want) an Arduino leftover from other projects.

Very nice thread! Is it possible to monitor: pH, temperature, salinity, and calcium on a netbook computer? I would like to know what are the components that I will need and what software. Thanks!

Yes you can, but it's a bit beyond the scope of this project. You basically need probes for each of those things you want to measure, then hardware to convert the probe's signal to something digital, then more hardware to convert the digital signal to something your PC can read. pH and temp are pretty easy; salinity and calcium I've never investigated because they strike me as rather complicated.

I am trying to design this project around a microcontroller (Arduino) that can stand alone, rather than require a PC to operate. But, you COULD plug an Arduino into a PC (via USB or serial connection, or add an ethernet shield and put it on the network) and use it in a PC-based project.
 
No USB chip on the shield, 'cause I'm assuming people will be plugging it in to a Duemilanove or clone. We kicked around the idea of putting the whole Arduino circuit on the shield but I don't think there's room, unless we make it huge or go SMT for several of the larger parts. And either of those routes would kind of kill it for me. Still open to the idea though if people think it's important. Designing the Arduino into the PCB would reduce cost but increase complexity, and it would be redundant for people who have (or want) an Arduino leftover from other projects.
Fair enough, a shield it is. I don't know about complexity (it is just 2-3 components more really) but yes, size might become an issue if we put the CPU and crystal in there as well.

So the addon will have PH, RTC, one port expander, one temp sensor, one speaker and some I/O for the relay board?
 
it could be entirely off topic

and well past not very productive.

but i saw an article yesterday about PixieOS, an OS for the Arduino.

it would probably require added a couple extra shields, but 'could' make controlling / programing easier..
 
Fair enough, a shield it is. I don't know about complexity (it is just 2-3 components more really) but yes, size might become an issue if we put the CPU and crystal in there as well.

So the addon will have PH, RTC, one port expander, one temp sensor, one speaker and some I/O for the relay board?

"Complexity" came in from a perspective of routing the thing and keeping it a reasonable size while maintaining shield compatibility. It's pretty much impossible to keep the headers in the same spot on the PCB if you're including any other components within the original footprint of the Arduino, which meant it would have made the thing like twice the size. So it looked like we'd either lose shield compatibility or end up with a fairly large PCB, neither of which I wanted. Though it might just be that I suck at layout. :lol:

I'll post a screen shot of the shield later today. It has the pH circuit, RTC, and a port expander (MCP2008 or whatever we talked about back a page) with a header specifically for LCD use. Plus, a 6x2 header broken out to the side for I2C and One Wire (two sets of pins for each), which is of course just duplications of standard pins. The only Arduino pins consumed are three analog (I2C takes two, pH takes one) and one digital (for the One Wire).

For the pH circuit, I kept the voltage inverter and negative voltage regulator to create -5V, then used the +5v from the Arduino's header for +5v. The inverter and - reg are fed from the raw Vin pin. I used a variant of the inverter chip that can take up to +12v, so we didn't need the diodes to drop the voltage.

The relay board would be on the I2C header and temp sensor would be on the One Wire header. I'd forgotten about the speaker, will take a look at that now.

Again though, if I'm making decisions that people think are unreasonable, please argue with me. :D

but i saw an article yesterday about PixieOS, an OS for the Arduino.

it would probably require added a couple extra shields, but 'could' make controlling / programing easier..

Don't know anything about it, I'll take a look.
 
Back
Top