Your Wish List

I've been thinking about creating a new Arduino-related product in order to support the community and hopefully to earn some extra money to help out around here (always useful). I have been doing embedded programming in C/C++/Assembler/Scripts for 3 decades, and am very familiar with AVR and ARM chips, plus have some experience with FPGAs. So I'm wondering what you would like to see, in terms of either new hardware, new software, support, or training, that would be worth purchasing, in your mind.

One thing that comes to my mind is a new Arduino board with multiple CPUs on it. I have researched and seen several attempts at simulated multithreading on Arduino, using either cooperative tasking or preemptive tasking (FreeRTOS), or even multicore via I2C or FPGA. How about a blazingly faster Arduino board? I saw one with the AT91SAM9G20, a CPU which I have used for years, but there are other ARM CPUs that can run at nearly 800 MHz.

But don't limit your thinking to CPUs. What would you like to see, that would be worth buying, in your mind?

Thanks for thinking... Have a great week! 8)

Just an idea. Feel free to not like it. A board and cheap serial camera that already exists which will save still images to an SD card in an uncompressed format like TIF or BMP. Then the slow Arduino controller can analyze these images for simple things like the location of a laser dot. Or movement. Changes in brightness. Changes in a specific area of the image. It has enough power to do it I have proven it. The problem with my code is the time it takes the Arduino to save the file when it could be analyzing the data instead. There should be no lower limits to the size of the image file. Can you make this happen? I'll be your first customer! I already have a Serial JPG camera which works wonderfully. I can detect movement at 4FPS, but I want more. Not more speed, more flexibility. I cannot detect the location of a laser dot without first sending it to a PC for analysis. Not because I don't know how, but because it's compressed in a JPG. Sending the serial data uncompressed at 100k would be too slow. You see the problem?

Interesting topic... I have several immediate questions: (1) do you need real-time analysis of the images [assuming the slowness of storing them is removed]? (2) is your camera presently directly connected to the Arduino? (3) what is your connection & protocol for extracting the images from the board? (4) what is the model of camera you use today? (5) what range(s) of resolution are you looking for? (6) what range(s) of FPS are you hoping for? (7) are you looking for a new board that attaches to the Arduino, or a new board that IS an Arduino?

Thanks for replying... have a great day! ;)

I did a quick search for serial jpg cam, and saw this:

http://blog.makezine.com/2011/11/08/new-in-the-maker-shed-ttl-serial-jpeg-camera-with-ntsc-video/

http://www.makershed.com/TTL_Serial_JPEG_Camera_with_NTSC_Video_p/mkad23.htm&Click=37845

The above cam is Arduino-ready, and does motion detection already. Is this the type of cam you are using? Is the real issue that you can't decode the JPG data in Arduino code?

My JPG serial camera is similar to those in the links. I would like to immediately detect the presence of an IR dot from a laser, like I can already do with a PC. I'd like to do this with Uno only. If I can measure its X,Y coordinates then I can measure distance in real time. It is directly connected to the Uno. The Uno sends the data to the PC. I send commands to the camera which replies with 64 bytes at a time in JPG format. I would like a variable resolution from 640x320 to 10x10. FPS must also vary, because it would take awhile to analyze 640, but not long at all for 100x100. My motion detection is more configurable then the one that comes with your camera link. The real problem is that I cannot quickly decode JPG due to memory limitations. I would like a board, including the 328 or not, that can shared access the RAM that is being written to by the camera in an uncompressed format. If another processor did the writing, the Uno would be free to analyze the uncompressed data. Can you think of a better way to do this than using an SD card?

My original post to the forum is quoted below. I did find there was a radio shield from sparkfun but it would not give me the information on the phase of the carrier that I wanted to read. Obviously you would not sell many units dedicated to this particular application. However there are a lot of radio hams out there and some sort of general purpose radio shield that gave, amongst other things, the type of information I was looking for might have a market.

There is a Long Wave (LW) radio transmission using a 198kHz carrier. The carrier contains a Phase-Shift encoded digital signal. The phase of the carrier is advanced by +22.5deg and retarded by -22.5deg to encode the digital signal. Each bit of the digital signal takes 40ms to transmit, so 25bits/s are sent.

I would like to use an Arduino to receive the LW signal and continuously decode the digital signal in the carrier.

I have no radio or electronics expertise. My hope is that there is a Radio or DSP shield that could receive the LW transmission and output an analogue signal proportional to the phase shift of the 198kHz carrier. I could then sample the analogue signal say every 5ms and this would allow me to determine the encoded digital bits.

Can anybody point me towards shields suitable for this task? Suggestions of other ways to tackle the problem would also be welcome.

I'm not sure it will help, but I found this link, which describes a circuit to do something like you are trying to do with the radio signal. It uses an HC11, but could probably be modified to work with an AVR. Of course, it would make the most sense for someone in England to work on that, I think!

http://cache.freescale.com/files/microcontrollers/doc/app_note/AN1597.pdf?WT_TYPE=Application%20Notes&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documentation

One quick note: this Arduino uses ARM, runs Linux, and has bunches of RAM. It could probably do the camera JPG decoding fairly easily, I think. Essentially, it IS a PC, but is also an Arduino.

http://rascalmicro.com/

Decided to search for low-RAM code to do JPEG decompression. Here is one example:

http://code.google.com/p/picojpeg/

cawhitley: One quick note: this Arduino uses ARM, runs Linux, and has bunches of RAM. It could probably do the camera JPG decoding fairly easily, I think. Essentially, it IS a PC, but is also an Arduino.

http://rascalmicro.com/

I'm not sure I would call it an Arduino, since it isn't designed by the Arduino company, and it isn't an Arduino work-alike/clone/etc. Now, eventually when the Due comes out, there will be an ARM based Arduino, but I imagine instead of running an OS like Linux (or real time variants), you will use the Arduino IDE to program it, just like with the current Arduino's built around the AVR chips.

Sure, it can do many of the things that Arduinos can, and it might be an interesting platform, but it isn't an Arduino.

Rascal. Doesn't say how much it costs. Can't order one. He's local to me.

2.4KB of memory is about 1K too much.

I have a Uno32, very cheap, and much faster than Arduino.

Make it happen! I'm sure many people would be interested. I will work together with you, if you'd like.

How about a camera that sends the data at a faster rate? Uncompressed? Not Serial.

Hardware: How can 2 controllers/processors read/write to as SD card at the same time?

Rascal=$200 I prefer Rasperry Pie yum!

Ok, I did some more research to see what kind of construction parts are out there. My thinking was to build a prototype using DIP parts, to make things easy, where the circuit would fit on an Arduino Proto Shield. I did not work out every detail of connections, but I did run across the following potential parts and related information:

Camera (RS232 & TTL editions): http://www.4dsystems.com.au/downloads/micro-CAM/Docs/uCAM-DS-rev7.pdf http://shop.4dsystems.com.au/43-camera-and-imaging-modules

CAD s/w: http://www.cadsoftusa.com/shop/pricing/?language=en

Arduino shield: http://arduino.cc/en/Main/ArduinoProtoShield

ARM DIP: http://blogs.arm.com/embedded/621-hey-hobbyists-dust-off-your-breadboards-dip-package-is-back/ http://www.digikey.com/product-search/en/integrated-circuits-ics/embedded-microcontrollers/2556109?k=arm%20dip http://www.nxp.com/documents/data_sheet/LPC111X.pdf

Cortex connectors: http://infocenter.arm.com/help/topic/com.arm.doc.faqs/attached/13634/cortex_debug_connectors.pdf

15nS SRAM 32Kx8: http://www.digikey.com/product-detail/en/CY7C199CN-15PXC/428-2158-5-ND/1206029

In theory, the camera and SRAM would connect directly to the ARM CPU, on the shield, with a SPI connection to the Uno attached to the shield. The only real problem I ran into was when I started doing the math--32KB is not enough SRAM to handle a 320x240 image, and certainly not a 640x480 image. On top of that, I would prefer that there be enough RAM to support 2 full frames, so that the Uno can work on (process) 1 frame (from RAM) while the ARM stores the next frame (to RAM).

In order to get more RAM, we need a different physical package (not DIP), and if we go with surface-mount, then we might as well use a different package for the CPU, thus opening up a huge list of potential CPUs. The downside is that surface-mount is much more difficult to prototype, although it can be done (I know a guy who does it).

Anyway, my thought is that if you want this to be successful, and as flexible as you specify, then it will require a reasonably fast ARM CPU and a whole bunch of SDRAM connected to that CPU. It should be possible to store an entire frame in SDRAM, and let the Uno grab just the portion of the image that it wants (given X, Y coordinates). Plus, I like the flexibility of the image sizes and data formats supported by the camera. To make a long story short... I don't think an SD card is required, particularly if you want real-time image processing.

So, I would like to know if other (more) people would be interested enough in such a project that they might wish to help fund its development, with the assumption of receiving finished boards when it is all working. The biggest 2 expenses would be the cost of having some circuit board company actually populate the production boards, and the initial cost of a commercial-use (Standard) edition of Eagle CAD. I'm not sure the cheap 2-layer edition will suffice. Plus there is the expense of all the miscellaneous parts (CAM, SDRAM, CPU, connectors, etc.)

I believe I have enough knowledge (and/or people connections) about ARM, AVR, UART, SPI, C/C++, etc. to pull things together. I have a BS in Computer Science, and an MA in Digital Media (so I know something about video formats). With some playing, tweaking, and lots of prayer, it sounds doable in my mind.

But I don't have the cash needed to front the development. It's that simple.

Thoughts?

I did see an Arduino-compatible project on the KickStarter program. Is anyone familiar with that program? I'm wondering if it's a good way to get funding for a small project.

http://www.kickstarter.com/start

cawhitley: I did see an Arduino-compatible project on the KickStarter program. Is anyone familiar with that program? I'm wondering if it's a good way to get funding for a small project.

http://www.kickstarter.com/start

I've backed several projects on kickstarter, including digispark http://www.kickstarter.com/projects/digistump/digispark-the-tiny-arduino-enabled-usb-dev-board?ref=category that you may be referring to. Everybody has a different reason for backing a project. For technology projects I tend to only back the project if I want the thing in question, and the person has a working prototype, and is looking to get funds to get to the step of manufacturing it. I tend to skip projects that don't seem to have a firm grasp on the non-techy parts such as building and delivery.

Right now, in this thread, you are nowhere near the working prototype part, so I don't think it would be a successful kickstarter product.

In addition you need plans for how to build the thingy, and you need to think about what happens if your project is very successful. Digispark is a prime example, where they started out with small goals, and it keeps on growing to nearly $200k. But if you read the posts, you start seeing people getting snippy and expecting yet more variations on the shields they are producing, and the team has basically come to the conclusion that they cannot keep adding new board designs.

One of the kickstarter projects that I backed, had a 9 month delay in delivery due to a number of things, including a part they designed around had gone out of production, their designs weren't exact enough, and when they got the cases, many didn't fit, and dealing with foreign factories to add to the fun.

Note, to be a kickstarter project, you first have to be vetted by the kickstarter team. You also don't get the money unless your funding goal is reached in the time period you specify. As I follow various projects, a lot don't get funded. Also note, that Amazon payments and the kickstarter company get their slice of the funds before you see it, and it will be a month after the funding part of the project shuts down before you get the money, so you need to make your minimum amount you are asking for large enough to cover these. Don't forget to plan for dealing with taxes, etc. Just like a startup business or a political campaign, you need to rally the troops in order to get the orders in.

You need to do the elevator pitch, where you are in the elevator with somebody and you only have the time before they get to their floor to interest them in the project. Your pitch has to be memorable enough to stand out from the other 5,368 pitches they got in the same day.

Good information! Thanks. Yes, I've had some discussions with several folks, and they have provided input that is similar in a number of areas.

Sounds complicated. How can we make a simpler prototype? Let me summarize what we've discussed. I'd like a shared memory space where an Arduino can access an uncompressed still image by X,Y. An SD card is too slow? The sampling rate in FPS is not important to me. The image size is not important, I'd like to vary it. Even 320x240 might be acceptable.

Let's look at this from the Arduino point of view. Maybe we could send serial commands that return part of an image from another device with RAM. 115k would be fast enough if you only need 2 horizontal lines. Or 10x10 pixels. Already my camera can do that, 64 bytes at a time. The only problem is you can't choose the coordinates to retrieve. And you can only retrieve the entire image once. And it's compressed...

If it had 128k RAM maybe a UNO32 could uncompress my serial JPG camera, then respond to serial commands from a Uno.

More ideas?

We are on the same page in terms of thinking about a board that has RAM and can provide a portion of the image based on coordinates. But hang in there a bit. I'm in discussion with SparkFun about my proposed ARM implementation, and they like it. Could lead somewhere, not sure. I would like to wait and see.

Meanwhile, if we want to make a prototype, I suggest something relatively simple... there is a DIP-based ARM CPU, and DIP-based SRAM, and we could put together something, but it will take a fairly large breadboard to get enough RAM for a 128KB of RAM. But it could be done, I think. The ram chips are 32KB each, so it would require 4 of them.

I have not looked, but there may be DIP versions of the faster 32-bit AVR also. Could check on that...

Thank you for contacting Sparkfun about this! I think this is much better than Kickstarter. I have my MS in EE, but now I'm much better at software. I am willing to work with you on this. Let's make a prototype that Sparkfun can build!

it will take a fairly large breadboard to get enough RAM for a 128KB of RAM. But it could be done, I think.

http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_103982_-1

hey, oric_dan, thanks for the tip. that is wonderful... 128KB in a single DIP chip (poet XD).