Hey everybody I have a project that I think I can make happen using Audrino but wanted to ask to get some guidance.

I build portable solar power systems for a living www.PortableSolarPower.Biz and I'm looking for a way to take the data output feeds from two different devices and then display the data from both devices on 1 LCD Display so all the data is in one place.

I am assuming that Audrino can take in the data from both devices and then output that data onto one of the LCD screens that are available online.

The 2 devices that I am using that output data are different and output data in different formats.

So I need a Audrino board that is super efficient that can accept the output formats from both devices and have softward on the Audrino board that can process this data and send it out to a external LCD display in a organized format.

How difficult could this be for somebody who knows how to program Audrino?

Hey SolarDude, I quickly looked over the links you have attached and it looks like you just need 2 UART ports.The Arduino only has one real hardware UART port, but there is a software serial library which will allow you to create a software UART port on any 2 pins of an Arduino.That being said, any programmer can easily get this setup to work with an Arduino. Just have to understand all the commands in the manual.

Hey SolarDude, I quickly looked over the links you have attached and it looks like you just need 2 UART ports.The Arduino only has one real hardware UART port, but there is a software serial library which will allow you to create a software UART port on any 2 pins of an Arduino.That being said, any programmer can easily get this setup to work with an Arduino. Just have to understand all the commands in the manual.

Jay

Thank you very much for your feedback and I'm glad this is mainly a programming issue and the hardware is readily available.

I'll have to dig into learning about UART ports but I saw this board on Kickstarter and though it would be really nice if something this small and cheap would work for the task http://www.kickstarter.com/projects/digistump/digispark-the-tiny-arduino-enabled-usb-dev-board?ref=search

That board on kickstarter does not have enough pins and possibly not enough memory for your project. You need at least an Arduino Uno. If you make your own board, I would consider using a 1284P that CrossRoads has based some projects around.

I have seen the digispark before. It is based around a Attiny85 from Atmel. It does not have any UART ports so you would be using purely software serial ports. I am not sure if the current Arduino library will work with it but if it does, it should be pretty strait forward. I would recommend a Pro Mini (http://www.jayconsystems.com/arduino-pro-mini-328-5v-16mhz.html) or Arduino Mini (http://arduino.cc/en/Main/ArduinoBoardMini) for the job since it is already supported and you can get one for just about the same price. It will be a lot easier to do on these boards.

I have seen the digispark before. It is based around a Attiny85 from Atmel. It does not have any UART ports so you would be using purely software serial ports. I am not sure if the current Arduino library will work with it but if it does, it should be pretty strait forward. I would recommend a Pro Mini (http://www.jayconsystems.com/arduino-pro-mini-328-5v-16mhz.html) or Arduino Mini (http://arduino.cc/en/Main/ArduinoBoardMini) for the job since it is already supported and you can get one for just about the same price. It will be a lot easier to do on these boards.

Jay

Thanks again.

So the Digispark could work with its 6 ports (2 pins for Data Input #1, 2 pins for Data Input #2, and 2 Pins for Serial Data I/O for LCD Screen)? The 2 input ports will need to be running software to turn them into the Serial Ports that are needed.

The thing I like about the Digispark is that it can accept up to 35v DC input for power and does not require a 3 or 5v power source. The systems use 12v batteries so with the Digispark I would not need any 12v to 3 or 5v down conversion to run the other 2 mini boards you linked to.

Sounds good. You should be able to make it all work. I don't see any problems.I would double check how much space the USB boot loader uses on the digispark, so you know how much flash memory you have left to work with.

Note, the kickstarter phase of digispark has closed 3 days ago. They do plan on offering digisparks for sale after the initial kickstarter pledges are sent out. At the moment, they are talking about general availability in December, but I've had some kickstarter campaigns that were 9 months late in delivering their rewards. There is the tweensy 3.0 that ends in 2 days, that will have 3 separate UARTs and is based on an Arm processor. While it will use similar libraries to that on the Arduino, it isn't and Arduino, and there may be some initial teething pains. I should mention that I have put money down for digisparks and tweensy.

Hey cyclegadget, I think he plans on using a Serial (I2S) Backpack for the LCD, in which case he should be OK.

Jay

Yes I plan on using the 2 wire Serial (I2S) for the screen.

Here is the data for the Digispark:

The all-important technical specifications are as follows:

Support for the Arduino IDE 1.0+ (OSX/Win/Linux) Power via USB or External Source - 5 V or 7-35 V (automatic selection) On-board 500ma 5 V Regulator Built-in USB (and serial debugging) 6 I/O Pins (2 are used for USB only if your program actively communicates over USB, otherwise you can use all 6 even if you are programming via USB) 8k Flash Memory (about 6k after bootloader) I2C and SPI (vis USI) PWM on 3 pins (more possible with Software PWM) ADC on 4 pins Power LED and Test/Status LED (on Pin0)

Note, the kickstarter phase of digispark has closed 3 days ago. They do plan on offering digisparks for sale after the initial kickstarter pledges are sent out. At the moment, they are talking about general availability in December, but I've had some kickstarter campaigns that were 9 months late in delivering their rewards. There is the tweensy 3.0 that ends in 2 days, that will have 3 separate UARTs and is based on an Arm processor. While it will use similar libraries to that on the Arduino, it isn't and Arduino, and there may be some initial teething pains. I should mention that I have put money down for digisparks and tweensy.

It really depends on how much data we are talking about. If it is tens of bytes in a second, it is probably fairly easy to do it in an Arduino/digispark, and you likely won't need a hardware URT (which can help with the buffering, etc.). If you are dealing with lots of data, particularly if the Arduino has to do a lot of number crunching, then the Arduino might not be able to keep up, or have enough memory to process the data. In that case you probably want to go to a faster processor with more memory (such as an Arm based processor).

If you don't have to use a serial line, and can design the other two pieces to talk to the Arduino, you could have them be SPI or I2C devices. If they are existing devices, you have to adapt to the fixed format.

It really depends on how much data we are talking about. If it is tens of bytes in a second, it is probably fairly easy to do it in an Arduino/digispark, and you likely won't need a hardware URT (which can help with the buffering, etc.). If you are dealing with lots of data, particularly if the Arduino has to do a lot of number crunching, then the Arduino might not be able to keep up, or have enough memory to process the data. In that case you probably want to go to a faster processor with more memory (such as an Arm based processor).

If you don't have to use a serial line, and can design the other two pieces to talk to the Arduino, you could have them be SPI or I2C devices. If they are existing devices, you have to adapt to the fixed format.

I'm not really sure how much data is being sent out per second between the 2 devices but its probably a decent amount of data. I'm clueless about bits and bytes but somebody would have to look at the data outputs to see exactly how much data were talking about.

Here is some data about the MODBUS data output format and a list of data points that are avaliable to pull from.

The SunSaver MPPT supports the industry standard MODBUS® application protocol via its Meter RJ-11interface. A Meterbus to Serial Converter (MSC) is required to adapt the Meter interface to an isolated RS-232interface**.

This document assumes the user is familiar with the MODBUS® protocol and its terminology.

Please refer to the documents listed in the References section for more information.

I suspect before buying hardware, you should write a program on your PC that can read two serial lines and displays the data you want in a format that would be similar to the LCD you plan on using. Write this in C or C++ and not higher level languages like perl/python/etc. This will tell you if it is doable. After that, I would buy an UNO, and see if it can handle the flow. If it does, you can then look at custom PCB parts using an AVR chip so you can get the cost down for the finished product.

If the UNO can't keep up, you probably need to step up to an arm. I tend to think the tweeny 3.0 which has multiple UARTs might keep up with really fast streams, and it has hardware floating point. Hardware serial ports tend to support signalling when they are ready to read data, so it is less likely you might have dropped data, which is important if the device just sends a full status report every minute or so. Obviously if there is a command to send just the data you are interested in rather than a summary of the entire machine state, that can speed things up.

There are many other ARM solutions, but you would probably need to carefully read the data sheet of the particular ARM chip involved. Even so, the most power reduced ARM is probably an order of magnitude faster than the AVR. Again, like with the UNO, you might start with a more expensive development kit, and then once you have a proof of concept, refine the design so it is cheaper and easier to manufacturer.