Photon/Core philosophy (Particle vs. Arduino)


I would like to better understand the boards from . From what I saw, the boards come with ARM Cortex M core and a Wifi chip and a kind of RTOS to manage connectivity ?

However, I am a bit confused where Arduino sketches fit in, and if/why it’s rather hard to use the board as Arduino compatible clone with Wifi.

Background is that I am working on book “Node.js for embedded systems” - where I try to discuss low-level hardware, Node.js libs for hardware up to connecting hardware to cloud services.
For this, I have experimented quite a lot with Arduino and SBCs (RPi, Galileo, Edison), but as a reader asked for discussion of the Photon, I am looking for help how/where to discuss this powerful board best.

Any help/support with this would be highly appreciated! Thank you!


Hey @poseid, happy to help!

Our development kits (the Core, the Photon, and the Electron) are tools designed for people building hardware connected to the internet; the Core and Photon use Wi-Fi and the Electron uses a cellular connection (2G/3G).

These are internet-connected microcontroller development boards, and so far we’ve used STM32 MCUs (ARM Cortex M3), though that may not always be true for future boards. The boards are inexpensive and very powerful (when compared to 8-bit processors like an Arduino Uno).

Because the boards are designed solely for devices that are connected to the internet, our development experience also relies on that internet connection. Although you can program them over USB, our tools are designed around over-the-air firmware updates. You can write firmware in our web IDE, Particle Build, or in our downloadable IDE, Particle Dev, which is based on Github’s Atom project. You can also use our Command Line Interface to push software that you’ve written in another IDE (many people use other IDEs like Netbeans or Eclipse).

Our development boards come with a cloud-based messaging platform that lets you easily send messages to- and from- the devices in a secure way regardless of where you are. That platform is included for free.

Our platform is particularly well-suited for people who are developing products which they want to scale. If you’re building a prototype and down the road you want to make 10,000 or more, we sell hardware inexpensively at volume or we can pass you off to our semiconductor partners to get it even cheaper. We also sell our cloud platform to companies deploying IoT products, and it’s currently being used by hundreds of companies, from Fortune 500 OEMs to tiny start-ups.

When it comes to Arduino, we use Wiring, the same programming framework as Arduino, which we have ported to the STM32 microcontroller. Because of that, many Arduino libraries work out of the box on Particle, although some require porting (since our hardware is a different architecture). There are hundreds of libraries that have already been ported to Particle by the community, and those can be accessed through Build, our web IDE.

That said, Particle is not a completely Arduino-compatible product; you can’t (yet) use the Arduino IDE, and our products have a different footprint. Our original Kickstarter campaign for the Spark Core did call it “Arduino Compatible”, but that’s a confusing way to describe it, because “Arduino Compatible” means different things to different people. Since then we now communicate our development experience as “Arduino-like”. If you’re familiar with Arduino, it’s very easy to transition to Particle, but it is a different experience with different tools that are specifically designed for internet connectivity.

Over time we’d like to increase our compatibility and portability with the Arduino ecosystem, and we’re working on making our libraries work with the Arduino library spec (which didn’t exist when we launched). But for today, the best way to describe Particle is “similar to Arduino but different, and specifically designed for developing internet-connected hardware”.

Hope that helps!


Also I changed the title of the thread to make it more searchable, hope that’s okay!

1 Like

Oh, one last thing. Since you’re writing on Node.js, we have a Javascript library for communicating with Spark/Particle devices using our APIs:

Thanks! That is a very helpful overview. It fits perfectly in the line of my chapter on MCUs. Indeed, an ATMega328 has rather limited processing capacity when it comes to networking. I now understand much better the focus of Particle!

By the way, initially, networking and connectivity was not so much the focus of the book. But it turns out that JavaScript is a good fit for IoT projects too (IMHO). So, 6-7 from 10 book chapters now touch networks in some way or another.

I find FreeRTOS usage another interesting aspect of Particle boards. I played a bit with Nuttx in the context of IOT.js; but it still in development. Another interesting development are boards with ESP8266 - but also there the toolchain feels a bit rough.

1 Like

Hmm… probably, “Internet Connected Microcontrollers” is a book chapter on its own. Let’s see what I can do.

@poseid, the Digitstump Oak, based on ESP8266, will be joining the Particle ecosystem soon as will the Red Bear Duo and the bluetooth BLuz. The IoT space is quite “wide”. :grinning:


More like a category of its own nowadays, and it’ll only get bigger with time :wink:

Are there plans to use Arduino IDE to build Particle products?

@IgorGanapolsky Not sure if you know about Particle DEV or not but here is link to Particles IDE programming interface if you have not heard of it.

1 Like

Thanks @RWB. I downloaded the software. I like how they forked it from Atom IDE and created a custom implementation. Although it is vastly different from Arduino IDE, I’m looking forward to learning it…

Out of interest, why would you have preferred the Arduino IDE (over the Web IDE for example)?

@Moors7 Because Arduino is more ubiquitous, in my opinion, and has been around longer than Particle. So there are more books and samples, and experts online for Arduino.

Most of those books and samples are still valid for Particle, though some hardware related things might have to be changed. But that’s also true for the newer Arduino boards. The programming language remains the same though.
As for experts online, I think the Particle community is one of the best you’ll find. Not only are the people very nice, the Particle folks themselves browse through the forums every now and then. On top of that, this community might be more focused on the whole concept of IoT than Arduino would be (since it’s so widespread).
Furthermore, though Arduino has been around longer, they haven’t been into the IoT world for that long, something in which Particle has built up quite some experience.

Regardless, give the platform a shot and let us know what you think? Don’t be afraid to ask any questions, should you encounter roadblocks.


Hmm, what expertise does the actual IDE require?
If you are looking for C++/Wiring experts, this community might be smaller than the Arduino world, but doesn’t need to fear any comparison with any other community.

Having said this, I do agree that having the Arduino IDE support Particle devices would be a perk for many people who want to transition from there to Particle - that’s a reason why I had asked for Arduino IDE support from 2013 on :wink:
While it’s not a requirement to have this platform shine, it would still be nice to have it too


Thanks for the feedback! I agree that native compilation / development support in the Arduino IDE would be awesome, I’ll mention this to the team and see if we can’t get a spot for it on the roadmap!