Arduino IDE times
Recently i've started to play with Arduino and also different other micro controllers like esp8266.Originally i've used Arduino IDE to develop and upload sketches to the MCU.
But as a java/javascript software developer i always felt myself unhappy since i could not use my favourite IntelliJ IDEA for this. There is a CLion Arduino plugin present in IntelliJ plugins repository i've tried it but still was unhappy (also i used trial version of CLion since it does not have community version).
But recently i've found such a great project - PlatformIO created by Ivan Kravets from Ukraine which is very great since i'm also from Ukraine.
PlatformIO to the rescue
In short PlatformIO is free and open-source cross-platform code builder and library manager for Arduino with Continuos and IDE integration. It has pre-configured settings for the most Arduino Boards.The great thing is that it supports not only Arduino but other MCU's as well - you could see list of supported platforms here. Also it does not require installed Arduino IDE - it is completely independent solution: toolchain for specific platform is downloaded and managed by Platformio.
So how to use PlatformIO and how to integrate it with IntelliJ IDEA?
using PlatformIO within IntelliJ IDEA |
Installing PlatformIO
First of all we have to install PlarformIO. It uses python and supports most OS which includes Windows, Linux and OSX. I will describe installation under OSX since i'm using this OS, but you could read the official get started section to see how to install it under other platforms. All installation steps should be performed from command line.
So first of all check whether you have installed python package manager pip:
if pip is not installed you could install it by running the following command:
which pip
if pip is not installed you could install it by running the following command:
sudo easy_install pip
sudo pip install -U platformio
Creating new project with PlatformIO
Now lets create first project with platformio. Create folder where your test project will be placed, cd to this folder. Then run:
platformio init --board=uno
Here i've created project for the Adruino UNO board. If you wish to use other board - you could find it's name using the following command:
platformio boards
And then just find in the command output name of your board (for Arduino boards see atmelavr platforms section). An example output of this command is the following:
$ platformio boards Platform: atmelavr ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Type MCU Frequency Flash RAM Name ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- bluefruitmicro atmega32u4 8Mhz 28Kb 2.5Kb Adafruit Bluefruit Micro feather32u4 atmega32u4 8Mhz 28Kb 2.5Kb Adafruit Feather flora8 atmega32u4 8Mhz 28Kb 2.5Kb Adafruit Flora gemma attiny85 8Mhz 8Kb 512B Adafruit Gemma metro atmega328p 16Mhz 31Kb 2Kb Adafruit Metro protrinket3ftdi atmega328p 16Mhz 28Kb 2Kb Adafruit Pro Trinket 3V/12MHz (FTDI) protrinket3 atmega328p 12Mhz 28Kb 2Kb Adafruit Pro Trinket 3V/12MHz (USB) protrinket5 atmega328p 16Mhz 28Kb 2Kb Adafruit Pro Trinket 5V/16MHz (USB)
Name from type column is what you need to specify in --board parameter.
After initialising your project structure will be the following:
├── .gitignore ├── .travis.yml ├── lib │ └── readme.txt ├── platformio.ini └── src
.gitignore - handy if you going to store your project in git cvs.
.travis.yml - for CI integration
lib - place here your libraries
platformio.ini - main configutation file. For now its ok to use defaults here.
src - your sketch should be placed here.
Compiling and uploading sample blink sketch with PlarformIO
lets create sample blink sketch:- create file blink.ino in src folder
- copy blink example into this file:
void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); }
platformio run
The sample output looks like:
Sergeys-MBP:pltest sergey$ platformio run [Sun Jan 24 12:58:06 2016] Processing uno (platform: atmelavr, board: uno, framework: arduino) -------------------------------------------------------------------------------------------------------------------------------- avr-ar rcs .pioenvs/uno/libFrameworkArduinoVariant.a avr-g++ -o .pioenvs/uno/src/tmp_ino_to.o -c -fno-exceptions -fno-threadsafe-statics -std=gnu++11 -g -Os -Wall -.pioenvs/uno/FrameworkArduino/hooks.o .pioenvs/uno/FrameworkArduino/main.o .pioenvs/uno/FrameworkArduino/new.o .pioenvs/uno/FrameworkArduino/wiring.o .pioenvs/uno/FrameworkArduino/wiring_analog.o .pioenvs/uno/FrameworkArduino/wiring_digital.o .pioenvs/uno/FrameworkArduino/wiring_pulse.o .pioenvs/uno/FrameworkArduino/wiring_shift.o <cut ......> avr-ranlib .pioenvs/uno/libFrameworkArduino.a avr-g++ -o .pioenvs/uno/firmware.elf -Os -mmcu=atmega328p -Wl,--gc-sections,--relax .pioenvs/uno/src/tmp_ino_to.o -L/Users/sergey/.platformio/packages/ldscripts -L.pioenvs/uno -Wl,--start-group -lm .pioenvs/uno/libFrameworkArduinoVariant.a .pioenvs/uno/libFrameworkArduino.a -Wl,--end-group avr-objcopy -O ihex -R .eeprom .pioenvs/uno/firmware.elf .pioenvs/uno/firmware.hex "avr-size" --mcu=atmega328p -C -d .pioenvs/uno/firmware.elf AVR Memory Usage ---------------- Device: atmega328p Program: 998 bytes (3.0% Full) (.text + .data + .bootloader) Data: 9 bytes (0.4% Full) (.data + .bss + .noinit) ================================================= [SUCCESS] Took 1.17 seconds =================================================
Great! Compilation was sucessful!
Lets upload this sketch to the Arduino UNO board. Attach arduino board to your mac or pc and run the following command:
platformio run --target upload
platformio will try to recognize usb port to which arduino is attached and will upload your sketch to the board.
Thats it!
IntelliJ IDEA (and CLion as well as other IntelliJ products) integration
So starting from now you do not need Arduino IDE - you could compile and upload your sketches directly via command line!But wait... what about IntelliJ IDEA integration?
Well integration of PlatformIO with IDEA is far from excellent - unfortunately there is no IDEA plugin for PlatfomIO yet, so let's see what we could do.
Creating IDEA project from PlatformIO project
Lets create new IDEA project.
Choose File->New->Project from Existing Sources...
Then choose root folder of your PlatformIO project:
Then choose "Create project from existing sources"
Give name to the project or leave default one:
Then just click next:
And then "finish":
Now you could see our project opened:
You could use great IDEA terminal plugin to run PlatformIO commands right from IDEA:
And that's all?
Well there is one more thing we could do - we could use IDEA Ant integration to be able to run basic commands like compile and upload using IDEA build configuration.
Using Ant build file for IDEA build config support
Lets create build.xml file in the project root, and place the following text inside it:
<project default="compile" basedir="."> <target name="compile" description="compile the source"> <exec executable="platformio"> <arg value="-f"/> <arg value="-c"/> <arg value="intellij"/> <arg value="run"/> </exec> </target> <target name="clean" description="clean the source"> <exec executable="platformio"> <arg value="-f"/> <arg value="-c"/> <arg value="intellij"/> <arg value="run"/> <arg value="--target"/> <arg value="clean"/> </exec> </target> <target name="upload" description="upload binaries to the device" depends="compile"> <exec executable="platformio"> <arg value="-f"/> <arg value="-c"/> <arg value="intellij"/> <arg value="run"/> <arg value="--target"/> <arg value="upload"/> </exec> </target> </project>
After this we could add these ant targets to build config.
First open Ant plugin toolbar:
Then click on + sign and select build.xml file from the project root:
After this in Ant toolbar you will see available ant commands. You could run them right from the Ant build toolbar window:
Or you could create new build config.
To do this click "Edit Configurations..." in the main toolbar:
Click + sign to add new configuration and choose "Ant Target":
You will see new unnamed ant target build config:
Click on a ... button right below build config name - you will see all available ant targets. Choose one you want to execute, for example "upload":
Then click "Ok":
After this you will see new Ant build config in the toolbar:
So you could run it. First time you probably get error message that you have no configured JDK for the project. Despite the fact that you do not need JDK, you have to setup it in order to satisfy IDE requirements. Press Cmd+; and choose JDK:
Then click Ok.
After this you could run your PlatformIO commands right from IDE. You could see command output in the "Messages" panel:
That's it!
Not so much integration as you would probably expect, but for me it's much more better than using native Arduino IDE.
Thanks a lot for reading this long post to the end!
See you later!
Hi Sergey,
ОтветитьУдалитьThanks a lot for the great article! I've added it to our list http://docs.platformio.org/en/latest/articles.html
P.S: I see one issue in this configuration. You are going to call `platformio` from IntelliJ IDE subprocess without forcing prompts. It may hang up IDE.
Please add "-f -c intellij" options before "run" subcommand.
Docs: http://docs.platformio.org/en/latest/faq.html#platformio-blocks-command-execution-using-user-prompt
Regards, Ivan Kravets.
Just Another Dev Blog: How To Use Intellij Idea To Develop And Upload Software For Micro Controllers Like Arduino >>>>> Download Now
Удалить>>>>> Download Full
Just Another Dev Blog: How To Use Intellij Idea To Develop And Upload Software For Micro Controllers Like Arduino >>>>> Download LINK
>>>>> Download Now
Just Another Dev Blog: How To Use Intellij Idea To Develop And Upload Software For Micro Controllers Like Arduino >>>>> Download Full
>>>>> Download LINK Ku
Hi, Ivan. Great that that you liked this article!
ОтветитьУдалитьThanks for suggestions - i'll update the article
Hello! I was able to create a new project in IDEA, and i can run platformio in it's terminal. But no highlighting, auto-completion, or anything. By the way, is debugging working for you? If yes, that is just a miracle... And i would love to make it work in my IDEA too) Please help if you can.
ОтветитьУдалитьHi, Leonid.
ОтветитьУдалить1. Highlighting works for me since IDEA supports C/C++ highlighting.
2. Autocompletion: there is just a limited autocompletion support, since IDEA does not have arduino or other microcontrollers support for now.
3. Debug for sure does not working. But it does not works on other IDE as well.
Ok, thank you for your answer.
ОтветитьУдалитьHi Sergey!
ОтветитьУдалитьThank you for this post and your great IDEA! ;o)
Is it possible to run the platformio serial monitor from within Idea and get the output/ommunicate with the Arduino board?
Thank you & best regards,
Stephan from germany.
HI, Andi.
УдалитьYou can run serial monitor from IDEA's terminal plugin.
See one of my screenshots above.
Provides World Famous Cracks, Serial Keys, Patches for any PC software without surveys. Also Download IDM Crack
ОтветитьУдалитьhttps://crackpcmag.com/
What about using Java on Intellij and compiling it for Arduino?
ОтветитьУдалитьAbsolutely fantastic posting! Lots of useful information and inspiration, both of which we all need! Rellay appreciate your work.
ОтветитьУдалитьSoftware Testing Services
Software Testing Services in India
Software Testing Companies in India
Software Testing Services in USA
Software Testing Companies in USA
Software Testing Companies
Software Testing Services Company
Software Testing and Quality Assurance
I like your all post. You have done really good work. Thank you for the information you provide, it helped me a lot. You can Latest Software Crack Free Download With Activation Key, Serial Key & Keygen I hope to have many more entries or so from you. Download Crack Softwares Free Download
ОтветитьУдалитьfull latest version 2022 blog.
PreSonus Notion Crack
CLA-76 Compressor Crack
Ozone Imager Crack
1Keyboard Crack
4Front TruePianos Latest VST Crack
JetBrain CLion Crack
I thought this was a pretty interesting read when it comes to this topic. Thank you
ОтветитьУдалитьphpstorm-crack
window-12-pro-crack
videoproc-crac
pdf-expert-crack-2
Download Software for PC & Mac
ОтветитьУдалитьYou make it look very easy with your presentation, but I think this is important to Be something that I think I would never understand
It seems very complex and extremely broad to me. I look forward to your next post,
Mocha Pro Crack
BeeCut Crack
Blue-Cloner Crack
Sublime Text Crack
Video Copilot Element Crack
PyCharm Pro Crack
Resharper Crack
Agisoft Metashape Pro Crack
My response on my own website. Appreciation is a wonderful thing...thanks for sharing keep it up.
ОтветитьУдалитьXara Designer Pro Crack
Assassin’s Creed Valhalla 3
AppCode Crack
Deep Freeze Crack
FonePaw Screen Recorder Crack
Rubymine Crack