Last time It was build and upload from the command line using ʻino, but this time I made a note of the method using
platformio`.
Like ʻino,
platformio` is introduced on the official page of arduino. Currently, I mainly use this.
The great thing about platformio
is that you don't need an IDE. ʻIno required a separate IDE, but
platformio` is not. It will be automatically downloaded as a package. Even better, it supports a variety of embedded boards.
It seems that the famous places are perfectly suppressed, and recent boards such as STM32 Nucleo are also supported. (http://platformio.org/#!/boards)
Like ʻino, it is written in
python and has no major dependencies so it is easy to install. I think it's easier than ʻino
because there is no IDE installed.
platformio
platformio
also has a serial monitor function. However, in the case of ubuntu, it is necessary to add the file to the ʻudev` rule due to the authority. (http://docs.platformio.org/en/latest/platforms/atmelavr.html)
Linux Users: Don’t forget to install “udev” rules file 99-platformio-udev.rules (an instruction is located in the file).
[ʻUdevrules file](https://github.com/platformio/platformio/blob/develop/scripts/99-platformio-udev.rules) is fine, but there are sample projects for various boards, so
githubDownload the main body from
.
#DL platformio project
$ git clone https://github.com/platformio/platformio.git
Copy 99-platformio-udev.rules
in the project
#Copy the udev rules file to your rules folder
$ sudo cp ./platformio/script/99-platformio-udev.rules /etc/udev/rules.d/
platformio
Install under the virtual environment of virtualenv
. (The virtualenv
environment construction is noted in here, so please take a look if you are interested.)
#Create virtualenv
$ mkvirtualenv --no-site-package platformio
(platformio)$ pip install platformio
(platformio)$ pip install --egg scons #A build tool that replaces make. I think this is also necessary.
If you specify a board in the initialization option (--board = <board name>
), various settings will be made. If you don't know your board name, you can see the list, or you can look it up on the Site (http://docs.platformio.org/en/latest/platforms/atmelavr.html#boards).
(platformio) $ platformio boards
Platform: atmelavr
---------------------------------------------------------------------------
Type MCU Frequency Flash RAM Name
---------------------------------------------------------------------------
flora8 atmega32u4 8Mhz 28Kb 2Kb Adafruit Flora
protrinket3ftdi atmega328p 16Mhz 28Kb 2Kb Adafruit Pro Trinket 3V/12MHz (FTDI)
protrinket3 atmega328p 12Mhz 28Kb 2Kb Adafruit Pro Trinket 3V/12MHz (USB)
#Omitted below
You can squeeze it with grep
, or you can squeeze it with additional options. I'm ʻuno`, so I'll search here.
(platformio) $ platformio boards | grep uno
uno atmega328p 16Mhz 31Kb 2Kb Arduino Uno
As another example, nano.
(platformio) $ platformio boards | grep nano
nanoatmega168 atmega168 16Mhz 14Kb 1Kb Arduino Nano ATmega168
nanoatmega328 atmega328p 16Mhz 30Kb 2Kb Arduino Nano ATmega328
You can specify the type
item that appears in the search with the board option.
platformio init
Creating a project is easy. platformio init --board = <board name>
will generate an empty subfolder and project file ( platformio.ini
). The format of platformio.ini
is INI file, and there are various options for detailed settings. (http://docs.platformio.org/en/latest/projectconf.html)
Create an empty folder for your project
(platformio) $ mkdir uno; cd ./uno
Creating an arduino project (this time generated with a general uno board)
(platformio) $ platformio init --board=uno
#Ask if you want to enable automatic uploads.
#later`platformio.ini`You can also edit and change the file
Would you like to enable firmware auto-uploading when project is successfully built using `platformio run` command?
Dont forget that you can upload firmware manually using `platformio run --target upload` command. [y/N]: y
#Guidance that you can change the project directory
The current working directory /home/hoge/uno will be used for the new project.
You can specify another project directory via
`platformio init -d %PATH_TO_THE_PROJECT_DIR%` command.
#Where to make a confit file`/home/hoge/uno`But is it okay? Question.
#Don't hesitate`y`
The next files/directories will be created in /home/hoge/uno
platformio.ini - Project Configuration File. |-> PLEASE EDIT ME <-|
src - Put your source code here
lib - Put here project specific or 3-rd party libraries
Do you want to continue? [y/N]: y
#success
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)
platformio serialports list
The built firmware is uploaded via the serial port. Since the default is / dev / ttyUSB0
, if you connect Arudino, the update will fail if it is left as it is because the port name is different. Therefore, it is necessary to check the serial port name and specify it in platformio.ini
. There are many ways to find out, but try using the platformio
command.
The platformio serialports list
command displays a list of serial information. You should know if it is an Arduino port from the Description
item. Mostly / dev / ttyACM0
for Ubuntu andtty.usbserial-*
for Mac.
(platformio)$ platformio serialports list
: #abridgement
/dev/ttyACM0
----------
Hardware ID: USB VID:PID=1a86:7523
Description: QinHeng Electronics USB2.0-Serial
Add the Arduino serial port name to platformio.ini
. The option name is upload_port.
(platformio)$ echo -e "\nupload_port = /dev/ttyACM0" >> platformio.ini
The usual LED blinking and serial display. Put the source in ./src
.
(platformio)$ vim ./src/sketch.ino
#define LED_PIN 13
void setup() {
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
Serial.println("Hello Arduino");
digitalWrite(LED_PIN, HIGH); delay(100);
digitalWrite(LED_PIN, LOW); delay(900);
}
platformio run
If there is no build target platform package, a download message will be displayed, so enter y
to get it. The download destination is ~ / .platformio / packages
.
(platformio)$ platformio run
If you like PlatformIO, please:
- follow us on Twitter to stay up-to-date on the latest project news > https://twitter.com/PlatformIO_Org
- give us a star on GitHub > https://github.com/platformio/platformio
Thanks a lot!
[Wed May 6 13:06:53 2015] Processing autogen_uno (targets: upload, platform: atmelavr, board: uno, framework: arduino)
---------------------------------------------------------------------------------------------------------
The platform 'atmelavr' has not been installed yet. Would you like to install it now? [y/N]: y
Installing toolchain-atmelavr package:
Downloading [####################################] 100%
Unpacking [####################################] 100%
Installing tool-avrdude package:
Downloading [####################################] 100%
Unpacking [####################################] 100%
Installing framework-arduinoavr package:
Downloading [####################################] 100%
Unpacking [####################################] 100%
Installing tool-micronucleus package:
Downloading [####################################] 100%
Unpacking [####################################] 100%
The platform 'atmelavr' has been successfully installed!
When Download is finished, it will be built and uploaded as it is. When you look at the main body, the LED should be blinking.
: #abridgement
Reading | ################################################## | 100% 0.13s
avrdude: verifying ...
avrdude: 998 bytes of flash verified
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: safemode: Fuses OK (H:00, E:00, L:00)
avrdude done. Thank you.
=================================== [SUCCESS] Took 64.38 seconds ===================================
platformio serialports monitor
platformio
also has a serial monitor function as standard. You don't need to install another minicom
or picocom
, but I think this is where you have different tastes.
(platformio)$ platformio serialports monitor -p /dev/ttyACM0 -b 9600
#monitor start
#Ctrl to exit+ ]
--- Miniterm on /dev/ttyACM0: 9600,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
Hello Arduino
Hello Arduino
Hello Arduino
Hello Arduino
You can easily upload packages and upgrade the main unit from commands.
--platformio upgrade
: Update of platformio
(platformio)$ platformio upgrade
You're up-to-date!
PlatformIO 1.4.0 is currently the newest version available.
--platformio update
: Package update
(platformio)$ platformio update
Platform atmelavr
--------
Updating toolchain-atmelavr package:
Versions: Current=2, Latest=2 [Up-to-date]
Updating tool-avrdude package:
Versions: Current=3, Latest=3 [Up-to-date]
Updating framework-arduinoavr package:
Versions: Current=16, Latest=16 [Up-to-date]
Updating tool-micronucleus package:
Versions: Current=1, Latest=1 [Up-to-date]
In addition, external libraries can be easily installed and there are various functions. For more information, please read the Official Document.
Here are some basic commands to play right away.
command | Description |
---|---|
platformio boards |
Board list display |
platformio init --board=<Board name> |
Project creation |
platformio run |
Build(Automatic upload depending on settings) |
platformio run --target=upload |
Build and upload |
platformio run --target=clean |
clean |
platformio serialports list |
Serial port list display |
platformio serialports monitor -p <device> -b <baud rate> |
Serial monitor |
In the future, I would like to import external libraries and try boards from other platforms. Anyway, I'm happy to be able to easily develop various embedded boards with one command line.
-Arduino IDE v1.6.4 (2015/05/07) from the command line It seems that it supported library installation etc. Still, if you mainly develop from the command line, I think ʻinoand
platformio` are easier to use.
Recommended Posts