The Arduino's processing power is not sufficient for some of the tasks I would like it to perform...

I'm thinking of making a Home Automation System and would like some serious processing power at the center of it all.

So I'm wondering if I can just use standard PC parts to essentially put together my own board?!?

Is this possible???

  • 2
    Is there a reason why you can't interface with the Arduino but process with the computer? – Ignacio Vazquez-Abrams Nov 3 '16 at 1:02
  • 1
    Just connect an Arduino to the PC and do the heavy processing on the PC and then tell the Arduino over serial what to do. Or use something like an Raspberry Pi. But it really depends how your home automation system is set up. If you are communicating with your other devices over WiFi or Bluetooth you just need a normal PC with WiFi/Bluetooth. What do you actually want to do with a powerful "Arduino", that you can't do with just a PC/Arduino? – gre_gor Nov 3 '16 at 1:08
  • 3
    The old IBM PCs ran at 4.77 MHz. Your Arduino runs at 16 MHz. I'm a little sceptical that it can't keep up with turning on and off your lights in a timely way. – Nick Gammon Nov 3 '16 at 5:57
  • 1
    An mbed board would give more cpu power (most are in the 100MHz Arm M3 region, some are slightly faster M4s) while staying bare metal like an Arduino. If that's not enough I'd agree with a Pi rather than a PC. – Andrew Nov 3 '16 at 13:58
  • 1
    For home automation, it IMHO makes sense to have a central "server" (raspberry pi is enough) that can serve webpages. This webpage would be connected to a "gateway" that can send TCP/IP (or http) commands to Arduino's or ESP8266’s. This way, you can make use of your existing network or wifi. The Arduino/ESP8266 will be vast enough to read a message, change an output according to the message and return an "OK". Which is all you need on an endpoint. – Paul Nov 4 '16 at 7:12

A regular Arduino uses an AVR, more "pimped" Arduino might go to ARM. Some special versions of Arduinos uses other chips, such as the ever iconic ESP8266.

For home automation, an ESP8266 is WAY enough. Using an ARM is quite and overkill for home automation. But I've never seen anybody using a full PC for it. Why? Because it is around 10-20 times more expensive. They require much more components and many other things.

Something close to a full PC that you can get is a Raspberry Pi (any version would do). They act like a small PC, some even use it as a laptop. See PiTop. The Raspberry Pi is stronger, more powerful, and much faster then any Arduinos. The Pi also has ethernet, a graphic interface, and an audio interface built in. That means that you can pretty much connect it to a monitor and it will work as a normal PC running either Windows or Linux. You can then watch a video, with graphics and sound, from the inthernet without external modules like you would need on an Arduino. Their only weakness is that it is harder to program them to read may sensors. That is why the Arduino is popular for covering that.

At the end of the day, it is your choice. I would personnally suggest an ESP8266. This module has many GPIOs, depending on the breakout that you have, and has WiFi built in. This is a great feature for home automation. Most home automation builders use this module.

If you have any questions about the informations I just gave you, comment it, I'll reply.

  • I assume he wants to make a controller with a WebUI/GUI and stuff. A ESP8266 won't be enough for that. – gre_gor Nov 3 '16 at 1:34
  • @gre_gor, actually, the ESP8266 can do a small web server with a VERY simple UI. – Dat Ha Nov 3 '16 at 1:37
  • One of the Arduino ESP8266 examples is a web server with uploadable files (in SPIFFS). Adding the appropriate routes is all it takes to make a decent web controller. – Ignacio Vazquez-Abrams Nov 3 '16 at 4:01

One thing a PC lacks, which is kind of critical for working with sensors and things, is easy access to IO.

A PC has a number of buses, but no GPIO pins. To get any form of GPIO you will have to add extra hardware in the form of PCI cards, etc. Those kind of things, since they are not widely used, are rare and hence expensive.

People have "hacked" their PC hardware before now to add I2C devices to the I2C bus that is present on all DDRx DIMM slots (used for module identification) and using that you could add I2C IO expanders to get some GPIO pins - however that is not easy to do, and then you have the problem of programming it on top of that.

The most flexible solution is to use USB. Using the PC as the "core" processor for heavy data processing, image capture, network communication, etc is simple enough and commonly done. Then using USB you interface to the devices you want to work with - cameras, etc. You can get USB-based IO boards which provide different forms of IO communication, such as TTL UART (FT232 boards, etc), parallel GPIO, I2C buses, SPI, etc. Of course, programming those things becomes somewhat tricky, and you may end up with a massive number of dongles on your computer to interface with the large number of things you want to connect to.

So a more flexible and sensible approach is to create your own USB interface to your sensors and other items. And one of the best and easiest systems to do that is, of course, the Arduino and Arduino-like boards.

An Arduino, or multiple Arduinos, become a sensor interconnect board which you program to communicate with whatever you need to communicate. That can then pass data back to the PC through USB which then performs the heavy number-crunching and what have you. Data can then be passed back through the USB to the Arduino for controlling other things (fans, lights, heaters, whatever).

So yes, you can use a PC as a powerful processor system in a larger plan, but the PC itself cannot replace an Arduino.

Of course, all this is assuming you have a PC to waste on the project, or you have the requirements of massive amounts of processing power that you can't get from any decent micro-controller or SoC.

One thing to remember: there are micro-controllers available cheaply today with considerably more power than the first pentium PCs - I regularly work with 200MHz MIPS based MCUs with embedded FPU - that's 3.33 times more powerful than the first pentiums (and without the floating point bug ;) )

The current Raspberry Pi embedded Linux computers provide all the GPIO and interfacing you should need at a tiny fraction of the price of a PC. They are (as of version 3) a quad-core 1.2GHz 64-bit SoC. The same quad-core 1.2GHz core that is used in many smart phones. That's more powerful than my laptop.


You could simply opt for a different platform? A Raspberry Pi or Beagle Bone? Either would probably have enough processing power and ram. The Onion Omega2 is a SoC with a 400Mhz CPU, 64MB of DDR2 RAM, 16MB of on-board flash storage, 802.11b/g/ WiFi at 150 Mbps, 18 digital GPIOs, I2C, SPI, and USB2.0, a full Linux Operating System, and it costs $5. The Onion Omega


One approach that I am using in a project right now is to use both an Arduino Mega 2560 (for interfacing the hardware, as it has many 5 V GPIO pins, analog inputs and very predictable timings) and a Raspberry Pi (for running a Node.js-based Web server). They communicate through a level-shifted serial link, using a protocol roughly shaped on this command line interpreter.

This way I have both the ease of interfacing hardware provided by the Arduino and the power of a real computer.

Not saying it is the right solution for you, but as you did no provide details on your project's requirements, we can only make suggestions.


Adding to Candice the Cyborg's answer I would go for esp8266-12 (for a specific breakout board) if you choose to go down that route-where Candice the Cyborg writes " "pimped" Arduino" this does not refer to the esp8266. But if you're using a PC to begin with you might as well get a PC based hardware to do the home automation. Arduino can't compete with PC for power and features-but it was never designed to.

You could try linking multiple Arduino's together communicating through the serial port pins-essentialy it would work something like a parallel processor. If it's just run of the mill home automation things then this can be broken down into a parallel problem. If you update your question with more info I can give you a more specific answer. I mean if your tasks only require a little extra processing power then it may be possible to do using an addition Arduino for example.

The cheapest way to set up a PC for home automation is probably add in a parallel port card-there are project around the internet that show how to use a PC for home automation with parallel port-if you don't have a parallel port then you can get a parallel port card for less than $5-so its cheap way to get IO pins-this was the way things could be done before the days when Arduino existed.

Using an Arduino UNO or the like is not a good idea for interfacing to USB devices -like cameras -if you has that in mind- that's because the ATMEGA chip does not natively support USB host and it's non-trivial to implement USB interface host yourself on Arduino-it would take deep knowledge of USB protocol as a minimum.

Sorry to say it on an Arduino site- but it may turn out cheaper to use a full PC (if your project can be run on an old PC you can get cheap or free) with no Arduino- a PC after all has much more hardware already built into it -lots more ports, video output and so on. Adding the cost of shields to do something similar on Arduino could cost a lot-it depends on the specifics of your question -which you don't give.

Not the answer you're looking for? Browse other questions tagged or ask your own question.