Steroiduino

Hi,

This is just a post to collect some ideas and contributions for our Steroiduino (its just a name...).

We developed Steroiduino with a specifical purpose, has a remote data acquisition unit.

Steroiduino is composed of:

  • 2 ATmega2560 processors
  • 1 ATmega328P processor
  • The Main ATmega2560 has 56k of RAM
  • The 3 processors are able to share the SD Card
  • SD Card resource is managed by the ATmega328P
  • The ATmega 328P is able to remotely update the ATmega2560 firmware
  • The secondary ATmega2560 is responsible for external comunications, manage the GPRS or ethernet external modules
  • Modbus and 1-wire support
  • Several Analog and Digital Input/output
  • RJ45 plugs presented are D I/O for simplication of connection of external modules

Any suggestions and ideas will be very welcomed

Thanks

LuisSoares:
This is just a post to collect some ideas and contributions for our Steroiduino (its just a name...).

A name that is not particularly indicative to its intended function, and one that will probablly ensure it the International Olympic Committe will never promote its use (Steroiduino). :wink:

LuisSoares:
Any suggestions and ideas will be very welcomed

However, other than changing the name I do have serious comments/questions. While your design has impressive capabilities, it would be nice to know about its on-board voltage regulation (I can't make out the markings of the likely IC from the image). Also, is it possible to program the multiple ATmega chips directly with the Arduino or other IDEs, or is it ICSP only?

Hi,

In terms of onboard voltage regulation, the board can be powered up with any DC power supply between 15 and 7 VDC. It has 2 onboard LDO voltage regulators, one for 5V (supply MCUs and other electronic) and another for 3,3V (supply SDcard and voltage translation to access it).

Yes they can all be programmed using ICSP or the arduino IDE. In the second case you need the sparksfun FTDI (for example, https://www.sparkfun.com/products/9115 ) to connect to a vertical DIP pinout existent on the board, to program it.

Thanks for the quick response!

Nice RJ45 setup. How many of the 140+ IOs can you get at?

Modbus and 1-wire support

Modbus over ??.

Is the 1-wire bit-banged or have you used a transceiver chip?

How do the three processors communicate?

BTW don't be upset if there isn't much response, the forum is very much into the bicycle shed model whereby complex projects don't get much airtime :slight_smile:


Rob

That's an interesting looking board. Can you tell us more about the application? I guess from the description that it's made more for real-time number-crunching rather than hardware control. There's another thread discussing running multiple processors from a single clock - could you do that here? It might allow for higher speed communication between the processors. I'm also curious about how the remote firmware update works.

Hi,

In terms of IO´s one of the big limitations is the space onboard, which is dependent on the standart box we use (standardized cheap box). But taking into consideration that the objective is to have analog and digital aquisition (Digital with hardware interrupt PCINT mainly) and digital output, we have:

  • 7 analog and digital IO (this digital IO don´t have hardware interrupt attached)
  • 7 analog and digital IO (this digital IO have hardware interrupt attached
  • 6 digital IO (this digital IO have hardware interrupt attached)
  • 8 digital IO, RJ45 connector number 1
  • 4 digital IO + SPI communication (4pins MCU2), RJ45 connector number 2

The Modbus is over RS-485.
The 1-wire is not Bit banged, we used I2C and transceiver onboard.
The 3 processors communicate using Digital IO and the 2 ATmega 2560, have an UART channel between them. They could use the SPI bus to but in our case we didn´t considered that option.
Here is the link for a simplified architecture - ImageShack - Best place for all of your image hosting and image sharing needs

The idea is not multiple processing of data, but more like separate tasks and allowing for completely different tasks to take place at the same time. In this case you have MCU1 which is responsible for managing acquisition of data which includes: analog and digital IO, protocols, timming, parsing big JSON files (there is where 56k RAM come in handy) to know what it has to acquire etc...
MCU2 is responsible for communication management and robustness, GPRS or Ethernet. It is able to decide when to send or get specific data files from web servers and runs a webserver to receive small contacts for specific verifications.
MCU3 is responsible for managing the resource SDcard/SPI bus and knowing when new firmware is downloaded so it can update the MCU1 or MCU2 (Basically we download an .HEX file which is later written via SPI to the flash of a specific processor).

Very nice. Is the firmware update sent by serial from the 328 to a bootloader on the 2560? There are several ISP sketches for Arduino, but I don't know of any that can upload over serial. Would you be prepared to publish your code?

BTW, what kind of ideas and contributions are you seeking?

Hi,

The firmware updater is still being developped, i am using as a base the ATmega_hex_uploader project from Nick Gammon.
The code is loaded by SPI interface, this method is explained in the page 349 of the Datasheet of the 2560 it´s known as "Serial downloading".

In terms of contributions, i want generical comments and ideas, as i am doing the hardware design alone sometimes i do mistakes that i only see after a while and basically there might be better ways to do parts of the project.

i am doing the hardware design alone sometimes i do mistakes that i only see after a while

Well do I know that feeling.

To get any good feedback though you'll have to release the schematics. Even if just to a few people interested in contributing.

For example it sounds like you have plenty of spare IO but you have only implemented 56k of external RAM, with a few extra pins you could add paging and go to 512k or more.

Maybe that RJ45 pinout could do with some improvement.

What about an expansion header for the unused IO pins?

But without seeing the real details there's not much I can say that's not extremely generic.


Rob

You mentioned a box for this board; I assume that would be sold with the product? If not, you could really use some mounting holes.

I´ll check if I can post the schematics...

The box that we are using doensn´t need mounting holes (typical DIN rail plastic box),the PCB fits perfectly in it and that´s why i didn´t designed.
Besides that there isn´t really much space, the board is a little bit crowded.