Refactor Quick Start page

This commit is contained in:
Ivan Kravets
2016-03-02 22:01:21 +02:00
parent 288eb4df25
commit 6a0cd46da7
3 changed files with 229 additions and 53 deletions

View File

@ -21,16 +21,8 @@ Project Examples
Preconfigured demo projects are located in `PlatformIO GitHub <https://github.com/platformio/platformio/tree/develop/examples>`_ repository.
PlatformIO IDE Demo
^^^^^^^^^^^^^^^^^^^
Soon.
PlatformIO CLI Demo
^^^^^^^^^^^^^^^^^^^
Wiring Blink
------------
"Blink Project"
---------------
.. image:: _static/platformio-demo-wiring.gif

View File

@ -78,6 +78,9 @@ Manual Installation
.. image:: ../_static/ide-atom-platformio-install.png
.. _atom_ide_quickstart:
Quick Start
-----------

View File

@ -11,69 +11,250 @@
.. _quickstart:
Quickstart
==========
Quick Start
===========
.. note::
Please read `Get Started <http://platformio.org/#!/get-started>`_
from the official WebSite.
If you are looking for a Qucik Start for PlatformIO IDE please follow to
:ref:`PlatformIO IDE Quick Start <atom_ide_quickstart>` page.
PlatformIO IDE
--------------
This tutorial introduces you to the basics of PlatformIO Command Line Interface
(CLI) workflow and shows you a creation process of a simple cross-platform
“Blink” Project. After finishing you will have a general understanding of how
to work with the multiple development platforms and embedded boards.
Please follow to the Quickstart section of :ref:`ide_atom`.
Setting Up the Project
----------------------
PlatformIO CLI
--------------
PlatformIO CLI provides special :ref:`cmd_init` command for configuring your projects.
It allows to initialize new empty project or update existing with the new data.
1. :ref:`installation`.
What is more, :ref:`cmd_init` can be used for :ref:`ide`. It means that you will
be able to import pre-generated PlatformIO project using favourite IDE and
extend it with the professional instruments for IoT development.
2. Find board ``type`` using `Embedded Boards Explorer <http://platformio.org/#!/boards>`_
or via :ref:`cmd_boards` command.
This tutorial is based on the next popular embedded boards and development
platforms using *Arduino Wiring-based Framework*:
3. Initialize new PlatformIO based project via :ref:`cmd_init` command with the
pre-configured environments for your boards:
.. list-table::
:header-rows: 1
* - Platform
- Board
- Framework
* - Atmel AVR
- Arduino Uno (8-bit ATmega328P)
- Arduino Wiring-based Framework
* - Espressif
- NodeMCU 1.0 (32-bit ESP8266)
- Arduino Wiring-based Framework
* - Teensy
- Teensy 3.1 (32-bit ARM MK20DX256)
- Arduino Wiring-based Framework
Board Identifier
----------------
:ref:`cmd_init` command requires to specify board identifier (ID/TYPE). It can
be found using `Embedded Boards Explorer <http://platformio.org/#!/boards>`_
or :ref:`cmd_boards` command. For example, using :ref:`cmd_boards` let's try
to find Teensy boards:
.. code-block:: bash
$ platformio init --board=TYPE_1 --board=TYPE_2 --board=TYPE_N
> platformio boards teensy
The current working directory *** will be used for the new project.
You can specify another project directory via
`platformio init -d %PATH_TO_THE_PROJECT_DIR%` command.
Platform: teensy
---------------------------------------------------------------------------
Type MCU Frequency Flash RAM Name
---------------------------------------------------------------------------
teensy20 atmega32u4 16Mhz 31kB 2.5kB Teensy 2.0
teensy30 mk20dx128 48Mhz 128kB 16kB Teensy 3.0
teensy31 mk20dx256 72Mhz 256kB 64kB Teensy 3.1 / 3.2
teensylc mkl26z64 48Mhz 62kB 8kB Teensy LC
teensy20pp at90usb1286 16Mhz 127kB 8kB Teensy++ 2.0
The next files/directories will be created in ***
platformio.ini - Project Configuration File. |-> PLEASE EDIT ME <-|
src - Put your source files here
lib - Put here project specific (private) libraries
Do you want to continue? [y/N]: y
Project has been successfully initialized!
Useful commands:
`platformio run` - process/build project from the current directory
`platformio run --target upload` or `platformio run -t upload` - upload firmware to embedded board
`platformio run --target clean` - clean project (remove compiled files)
According to the table above the ID/TYPE for Teensy 3.1 is ``teensy31``. Also,
the ID for Arduino UNO is ``uno`` and for NodeMCU 1.0 (ESP-12E Module)
is ``nodemcuv2``.
Put your source files ``*.h, *.c, *.cpp or *.ino`` to ``src`` directory.
4. Process the project's environments.
Initialize Project
------------------
Change working directory to the project's root where is located
:ref:`Project Configuration File (platformio.ini) <projectconf>` and run:
PlatformIO ecosystem contains huge database with pre-configured settings for the
most popular embedded boards. It helps you to forget about installing
toolchains, writing build scripts or configuring uploading process. Just tell
PlatformIO the Board ID and you will receive full working project with
pre-installed instruments for the professional development.
1. Create empty folder where you are going to initialize new PlatformIO
project. Then open system Terminal and change directory to it:
.. code-block:: bash
# create new direcotry
> mkdir path_to_the_new_directory
# go to it
> cd path_to_the_new_directory
2. Initialize project for the boards mentioned above (you can specify more
than one board at time):
.. code-block:: bash
> platformio init --board uno --board nodemcuv2 --board teensy31
The current working directory *** will be used for the new project.
You can specify another project directory via
`platformio init -d %PATH_TO_THE_PROJECT_DIR%` command.
The next files/directories will be created in ***
platformio.ini - Project Configuration File. |-> PLEASE EDIT ME <-|
src - Put your source files here
lib - Put here project specific (private) libraries
Do you want to continue? [y/N]: y
Project has been successfully initialized!
Useful commands:
`platformio run` - process/build project from the current directory
`platformio run --target upload` or `platformio run -t upload` - upload firmware to embedded board
`platformio run --target clean` - clean project (remove compiled files)
Congrats! You have just created the first PlatformIO based Project with the
next structure:
* :ref:`projectconf`
* ``src`` directory where you should place source code
(``*.h, *.c, *.cpp, *.S, *.ino, etc.``)
* ``lib`` directory can be used for the project specific (private) libraries.
More details are located in ``lib/readme.txt`` file.
* Miscellaneous files for CVS and :ref:`ci` support.
.. note::
If you need to add new board to the existing project please use
:ref:`cmd_init` again.
The result of just generated ``platformio.ini``:
.. code-block:: ini
#
# Project Configuration File
#
# A detailed documentation with the EXAMPLES is located here:
# http://docs.platformio.org/en/latest/projectconf.html
#
# A sign `#` at the beginning of the line indicates a comment
# Comment lines are ignored.
# Simple and base environment
# [env:mybaseenv]
# platform = %INSTALLED_PLATFORM_NAME_HERE%
# framework =
# board =
#
# Automatic targets - enable auto-uploading
# targets = upload
[env:uno]
platform = atmelavr
framework = arduino
board = uno
[env:nodemcuv2]
platform = espressif
framework = arduino
board = nodemcuv2
[env:teensy31]
platform = teensy
framework = arduino
board = teensy31
Now, we need to create ``main.cpp`` file and place it to ``src`` folder of our
newly created project. The contents of ``src/main.cpp``:
.. code-block:: cpp
/**
* Blink
*
* Turns on an LED on for one second,
* then off for one second, repeatedly.
*/
#include "Arduino.h"
void setup()
{
// initialize LED digital pin as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
// turn the LED on (HIGH is the voltage level)
digitalWrite(LED_BUILTIN, HIGH);
// wait for a second
delay(1000);
// turn the LED off by making the voltage LOW
digitalWrite(LED_BUILTIN, LOW);
// wait for a second
delay(1000);
}
The final Project structure:
.. code-block:: bash
$ platformio run
# if you don't have specified `targets = upload` option for environment,
# then you can upload firmware manually with this command:
$ platformio run --target upload
# clean project
$ platformio run --target clean
project_dir
├── lib
│   └── readme.txt
├── platformio.ini
└── src
└── main.cpp
Useful links:
Process Project
---------------
PlatformIO CLI provides special :ref:`cmd_run` command to process project. If
you call it without any arguments, PlatformIO Build System will process all
project environments (which were created per each board specified above). Here
are a few useful commands:
* ``platformio run``. Process (build) all environments specified in
:ref:`projectconf`
* ``platformio run --target upload``. Build project and upload firmware to the
all devices specified in :ref:`projectconf`
* ``platformio run --target clean``. Clean project (delete compiled objects)
* ``platformio run -e uno``. Process only ``uno`` environment
* ``platformio run -e uno -t upload``. Build project only for ``uno`` and upload
firmware.
Please follow to :option:`platformio run --target` documentation for the other
targets.
Finally, demo which demonstrates building project and uploading firmware to
Arduino Uno:
.. image:: _static/platformio-demo-wiring.gif
Further Reading
---------------
* `Project examples <https://github.com/platformio/platformio/tree/develop/examples>`_
* :ref:`userguide` for PlatformIO commands
* `Quickstart for Espressif ESP8266 <https://github.com/esp8266/Arduino/blob/master/doc/platformio.md>`_
* :ref:`userguide` for PlatformIO CLI commands