I have known about the raspberry pi for quite some time. So why did I spend so much time working with embedded systems like pic and stm32 ? Initially I thought of the extremely low cost and power requirements for those devices. My initial estimates were for a controllable tracked video bot for as little as $25, which is still realistic.
I’m going to weigh the costs and benefits of each system and we can see they are different systems, kind of like comparing apples to oranges. So yes I think both systems are very desirable. The pi gets me where I want to be faster, and it can support ROS. To me ROS makes all the difference so I’m going down the Pi path for that reason. But I’m going to release all of my code for the stm and everything I have worked on so far in case someone else wants to still pursue the embedded path.
The last thing I completed was a phone controlled bot based off of the stm32f4 discovery board. I was using a bluetooth module and was getting about a 250×100 frame every 2 seconds on my phone. I have a full api thats easy to use and all of the source is open and free here. There are android and pure java clients that get the video feed. Even thought the HC-05 module boasts 1.3Mbps it also says 160Kbps which is the max speed I was able to push through it. If anyone figures out the actual max speed please let me know !
https://code.google.com/p/stm-phone-camera-bot/source/checkout
With all of this working at a frame every 2 seconds I still had in the back of my head that with jpeg that could be 1/16 compression giving me 8 frames per second. I was also planning to implement nordic rf 2401 which gives a possible 2 mbps which would greatly increase the frame rate. What I would end up with in the end would be pretty spectacular but it would not run ROS.
So lets compare everything.
Assuming !
Motor control circuit is the same
Power charge circuit is the same
And disregarding passive components as negligible
Plan A:
Stm32F4, Bluetooth module connect direct to telephone.
Difficulty to Implement: Moderate
Todo: Interface with Ov2460, more drivers for HC-05
Modular: Low
Product | Cost | dBm | Range ft | Ram MB | Clock | Mbps | Volts | mA | Watts |
STM32F407VET6 | 10.99 | 0.125 | 168 | 3.3 | 87 | 0.287 | |||
HC-05 | 5.66 | 4 | 30 | 3.3 | 50 | 0.165 | |||
OV2640 | 9.99 | 3.3 | 45 | 0.149 | |||||
sum | 26.64 | 4 | 30 | 0.125 | 168 | 0 | 9.9 | 182 | 0.601 |
Plan B:
STM32F4 based, nordic chip. For this to work I would need to make a dongle board for converting the nordic input to usb. This would be very hard and possibly slow things down considerably, but at least I would need chips on both ends to control everything. I would use a lower cost stm32 for the Dongle end.
Development: Hard
Todo: dongle, spi nrf interface driver, camera driver
Product | Cost | dBm | Range ft | Ram MB | Clock | Mbps | Volts | mA | Watts | ||
STM32F407VET6 | 1 | 10.99 | 10.99 | 0.125 | 168 | 3.3 | 87 | 0.287 | |||
STM32F051K8U6 | 1 | 3.17 | 3.17 | 0.0625 | 48 | 3.3 | 22 | 0.073 | |||
OV2640 | 1 | 9.99 | 9.99 | 3.3 | 45 | 0.149 | |||||
FTDI-FT230XS-R | 1 | 2.04 | 2.04 | 2 | 5.5 | 8.3 | 0.046 | ||||
nrf2401AG | 2 | 4.2 | 8.4 | 1 | 3.6 | 18 | 0.065 | ||||
2.4Ghz Antenna | 2 | 3.25 | 6.5 | 984 | 0 | ||||||
sum | 8 | 33.64 | 41.09 | 0 | 984 | 0.1875 | 216 | 1 | 19 | 180 | 0.619 |
Plan C:
Use a raspberry pi (Model A) and usb camera, stream over wifi. Of course there are obvious issues with this like how do I embedd a usb dongle or webcam into the final product. In a few units I can dismantle and solder but I would need a better solution for mass production. Also I will need to integrate a usb hub whereas in the other designs that was not nessisary.
Difficulty: done
Todo: Add configuration, Create Circuit board, Test
Product | Cost | dBm | Range ft | Ram MB | Clock | Mbps | Volts | mA | Watts | ||
rPi Model A | 1 | 35 | 35 | 256 | 700 | 5 | 500 | 2.5 | |||
Logitec C200 | 1 | 3.3 | 3.3 | 5 | 200 | 1 | |||||
RTL8188cus | 1 | 4.75 | 4.75 | -65 | 300 | 150 | 3.3 | 600 | 1.98 | ||
2.4Ghz Antenna | 1 | 3.25 | 3.25 | 0 | |||||||
TUSB2046BIVFRG4 | 1 | 3.2 | 3.2 | 3.3 | 40 | 0.132 | |||||
8gb microsd | 1 | 5.95 | 5.95 | ||||||||
sum | 6 | 55.45 | 55.45 | -65 | 300 | 256 | 700 | 150 | 16.6 | 1340 | 5.612 |
Summarizing and including the model B since model A does not always seem to be available.
Product | Cost | Cost | dBm | Range ft | Ram MB | Clock | Mbps | Volts | mA | Watts | |
STM BT | 0 | 26.64 | 4 | 30 | 0.125 | 168 | 0.16 | 9.9 | 182 | 0.601 | |
STM NRF | 0 | 41.09 | 0 | 984 | 0.1875 | 216 | 1 | 19 | 180 | 0.619 | |
RPI – A | 0 | 55.45 | -65 | 300 | 256 | 700 | 150 | 16.6 | 1340 | 5.612 | |
RPI – B | 0 | 71.45 | -65 | 300 | 256 | 700 | 150 | 5 | 1540 | 7.7 |
The big things to note are 150Mbps(pi) vs 1Mbps(STM) and the mA 1.5A (Pi) vs .180A (STM). So all things the same the STM plan would last 8 times as long as the Pi on the same battery charge. For example I’m using two CR123 Rechargables at 800mAh in the pi that gives me 32 Minutes, the STM would last for 4.3 hours on the same two light batteries. However when we are pumping motors continually the amps used by the PI might not be so important. For example if our motors (fa-130 for example) use from 200 to 2.2A each then we round that to 2A we need a larger battery solution. The 150Mbps vs 1Mbps is a no brainier if you are trying to push any decent video size through the device.
At the cost of only $14 more it seems like the Pi is the clear way to continue. The stm plans would only support one set of per devices like cameras, wireless etc whereas the pi has tons of drivers and a huge list of already supported devices.
So with all that in mind I’m moving forward knowing that I will be pulling something like 3A and will need a large battery solution. Since the motors and several other parts of the circuit would be the same regardless of the “brain” then we can always go back. But with things like ROS and Ubuntu I dont think there is going to be any turning back. The most I might do is use my STM32 knowledge to integrate smart perphs into the pi.