SimpleFOC
SoftwareArduino and PlatformIO field-oriented control library for BLDC and stepper motors. [1] [2] [3]
Installation & first result →Official websiteGetting started
- Source rights
- Named licenses are documented by part. Review licenses
- Unknowns
- operating system, compute requirements not fully established. Review gaps
Source researched · Not tested by us
Sources checked · Research details
Overview
SimpleFOC is an Arduino and PlatformIO field-oriented-control library for BLDC and stepper motors. It provides source implementations and hardware-configuration interfaces across multiple MCU families. This entry covers the software library, not every SimpleFOC-branded board or a complete motor system. Supporting an MCU family does not establish that any arbitrary pins, timer configuration, driver and sensor combination will work together. [1]
Is this for you?
- Known limitations
- Library MIT notice does not establish separate driver-board hardware rights.
- A source example is not a commissioned motor setup or verified current/voltage protection.
Editorial source-scope assessment; no installation, execution or compatibility test.
What you need
Installation & first result
Open the upstream getting-started guide [1] [2] [3]
- Inspect the pinned source instructions and select the documented configuration.
- Install only the dependencies for the chosen route; validate against the selected robot or model before hardware integration.
Editorial source-scope assessment; no installation, execution or compatibility test.
Project notes
Begin with the library and a selected hardware combination
The pinned README documents Arduino Library Manager installation: open Tools > Manage Libraries..., search for Simple FOC, install the library and reopen the IDE to find File > Examples > Simple FOC. PlatformIO and manual source installation are separate linked routes. Installing today's latest library does not necessarily reproduce the reviewed revision or its v2.4.0 release description. No board core or library was installed here. [1]
Before adapting the README velocity example, identify the actual MCU, motor pole-pair count, PWM driver pins, encoder pins/resolution and supply configuration. The example uses an 11-pole-pair motor, a three-PWM driver on pins 9/10/11 with enable pin 8, and an encoder on pins 2/3 with 2048 CPR. It sets a 12 V driver supply and uses default control parameters; these are example values rather than measurements or suitable settings for every motor. [1]
The setup initializes the encoder and interrupts, links the sensor to the motor, initializes and links the driver, selects velocity control, initializes the motor and calls initFOC(). Its loop calls loopFOC() and requests move(2), described as 2 rad/s. Study that sequence alongside the documentation for the chosen sensor, driver and control mode before powering hardware. This review did not upload or run the example. [1]
Initialization and protection need their own checks
The sampled BLDCMotor implementation returns an initialization failure when a driver is missing or uninitialized. It also constrains configured voltage/alignment limits against driver limits. The constructor sets voltage torque control by default. These are inspected source behaviors, not evidence that a particular driver is wired correctly, that initialization status is checked by every application, or that current protection has been commissioned. [3]
The README links motor-characterization, current-sense alignment and control-loop tuning guidance. Select those instructions for the actual hardware rather than assuming the defaults prove calibration or protection. No current-sense alignment, encoder zeroing, electrical limits, closed-loop stability or interruption behavior was tested. [1] [3]
The library's MIT notice applies to its software. Separate driver boards, bought-in motors, sensors, MCU cores and other dependencies require their own rights and compatibility review. No complete hardware budget, compile matrix, firmware upload, powered motor operation, thermal result or performance comparison was established here. [1] [2]
What we checked
Pinned source research only; selected implementation and setup text inspected. No dependency installation, upstream build, API export, robot simulation, hardware commissioning, timing or performance test performed.
Not yet established
- Requirements: operating system, host computer
- Version-specific hardware compatibility (ecosystem tags alone do not establish it)
Updates
- Upstream last updated
- Not established
- Latest release
- Not established
- Profile updated
- Nov 1, 2026
- Sources last checked
- Nov 1, 2026
- Next review
- Dec 1, 2026
- Reviewed revision
b3d8f39
Source files and licenses
Distinct robotics software implementation with inspectable source, declared license and bounded initial workflow.
| Layer | Availability / license |
|---|---|
| software | available · MIT Repository project notice; bundled/external dependencies and robot/model/CAD/hardware assets retain their separate terms. No whole-tree license audit or hardware rights clearance. [1] [2] [3] |
| documentation | available · MIT Repository project notice; bundled/external dependencies and robot/model/CAD/hardware assets retain their separate terms. No whole-tree license audit or hardware rights clearance. [1] [2] [3] |
Software entry; no separate physical design, firmware distribution, training-weight or dataset claim selected.
References
Each source links to the exact revision we read. “Used for” shows where this page relies on it.
- S001 README.md
Revision, date & where cited
simplefoc/Arduino-FOC contributors · github.com · revision
b3d8f39· README.md at · Accessed Nov 1, 2026
Used for: Overview, Is this for you?, What you need, Installation & first result and 3 more - S002 LICENSE
Revision, date & where cited
simplefoc/Arduino-FOC contributors · github.com · revision
b3d8f39· LICENSE at · Accessed Nov 1, 2026
Used for: Is this for you?, What you need, Installation & first result, Initialization and protection need their own checks and 1 more - S003 src/BLDCMotor.cpp
Revision, date & where cited
simplefoc/Arduino-FOC contributors · github.com · revision
b3d8f39· src/BLDCMotor.cpp at · Accessed Nov 1, 2026
Used for: Is this for you?, What you need, Installation & first result, Initialization and protection need their own checks and 1 more
Correction guidance · Discussion is not enabled · Profile format 0.7.0-draft.5