VS Code ve PlatformIO mini rehberi

ckocagil

Kıdemli Üye
Katılım
24 Aralık 2019
Mesajlar
1,005
Forumda hala Arduino IDE kullananlar çok şey kaçırıyor. Hızlıca PlatformIO'ya geçiş yapabilmeleri için minik bir rehber.

1. VS Code yüklüyoruz. Sol bardan eklentileri seçip aramaya "platformio" yazıyoruz ve yüklüyoruz.
1707676625881.png


2. Birkaç dakika boyunca yükleyecek ve bitince bize kapatıp açmamızı söyleyecek, yapıyoruz.

3. Artık sol barda PlatformIO ikonu var. Eğer PIO Home sayfası otomatik olarak açılmadıysa soldaki ikona tıklayıp aşağıdan "PIO Home" altında "Open"a basıyoruz. (veya kısayol: ctrl+shift+p "home")
1707677063609.png


4. Sağ üstten "New Project"e basıyoruz.

5. Herhangi bir proje ismi giriyoruz. Sonra board seçiyoruz. Bende STM32 blue pill board olduğu için "bluepill" yazıyorum ve C6, C8 gibi MCU varyantlarından uygun olanı seçiyorum. Framework kısmında ise kullanacağımız framework var ki bence PlatformIO'nun en güçlü olduğu kısım burası: basit işler için Arduino kodu yazacaksak var, karmaşık işler için STM32Cube veya CMSIS var, hatta destekleyen işlemciler için FreeRTOS var. Arduino seçtik diyelim.

6. Finish'e basıyoruz. Gereken derleyici ve frameworkleri yüklüyor.

7. Yeni projemiz açılacak. src/ altında main.cpp ve onun içinde bildiğimiz Arduino başlangıç kodunu görüyoruz.
1707678008832.png


8. Derleyelim. Solda PlatformIO altında ihtiyacımız olan tasklar var: Build ve Upload. Build'e basıyoruz ve başarıyla derliyor.

1707678172110.png


9. Şimdi upload etmemiz lazım. Ama daha önce projeye konfigürasyon nasıl yapacağız onu göreceğiz. PlatformIO'nun en güçlü noktalarından birine geldik: projedeki platformio.ini dosyası. Artık Arduino IDEdeki gibi menüden upload ayarı yapmak yok. Bütün ayarlar bu dosyada gözümüzün önünde olacak. Ayrıca kütüphane yükeyeceğimizde de bu dosyayı değiştirip kaydetmemiz yeterli, yani artık kütüphane bul/indir/kopyala da yok.

1707678729740.png


10. Kullandığımız board'a ait PlatformIO websitesindeki bilgi sayfasını açıyoruz. Bu sayfadaki upload kısmında kullanabileceğimiz upload yöntemleri var. Muhtemelen biz ya stlink ya da jlink kullanmak isteyeceğiz. Sitede "default protocol is stlink" diyor yani stlink ile upload etmek için bizim hiçbir ayar yapmamıza gerek yok :). Ama elimiz alışsın, platformio.ini dosyasına upload_protocol satırını ekliyoruz.

1707678942700.png


11. Şimdi bir de kütüphane yükleyelim. Mesela bana L298 motor sürücü kütüphanesi lazım diyelim. PIO Home açıyorum. Libraries kısmına geliyorum. Arama çubuğuna L298 yazıp aratıyorum.

1707679654430.png


12. Sonuçlarda dikkat ederseniz uyumlu platformlar da yazıyor. Örneğin ilk sonuçtaki L298N kütüphanesini yükleyelim. L298N'e tıkladım. Kütüphanenin sayfası çıkıyor ve burada örnek kodları görüyoruz (bunlar çok işime yarıyor). "Add to Project" butonu da var, basıyoruz. Örnek projemizi seçiyoruz ve Add diyoruz. Yükleme işi bu kadar.

1707680332910.png


13. platformio.ini dosyamıza bakalım. Eklediğimiz kütüphane burada lib_deps alanında kayıtlı. Aslında biz arayüzden "Add to Project"e basmak yerine bu satırı yapıştırıp dosyayı kaydetsek kütüphane yine yüklenecekti. Aynı şekilde ben bu projeyi birine gönderirken kütüphaneleri de yollamak zorunda değilim. Projeyi alan kişi platformio.ini dosyasını da aldığı için kütüphaneler onun bilgisayarında otomatik olarak yüklenecek. Böylece zip indir, aç, dosyaları kopyala yapıştır vs. hamallığından kurtulduk.

Gereken çoğu şey bu kadar. Belki birkaç adım daha ekleyip seri port ayarlamayı da gösterebilirim. Bu kısma kadar yapamayan veya sorusu olan varsa sorsun. Yanlış veya eksik anlattığım kısımları düzelteyim.
 
Guzelmis, denemek lazim. Arduino IDE'de program yazmak cok kolay. Ama hem kart belleginde cok yer kapliyor, hem de cok yavas. Atmel Studio cok ama cok daha kucuk cikti uretip on kat falan hizli calisiyor. PlotformIO ile karsilastirip bakayim bir ara.

Ilk gozlem sonucu : Cikti Arduino IDE gibi cok fazla yer kapliyor. New projet deyip kendi ekledigi 4 satiri derleyince 444 Byte oldu. Atmel Studio ciktisi 140 Byte yer kapliyor. Bir de bu Rus seylerine pek guvenemiyorum ben. ( Ukrayna, Rus, ?? )

PlatformIO.jpg
 
Son düzenleme:
Forumda hala Arduino IDE kullananlar çok şey kaçırıyor. Hızlıca PlatformIO'ya geçiş yapabilmeleri için minik bir rehber.

1. VS Code yüklüyoruz. Sol bardan eklentileri seçip aramaya "platformio" yazıyoruz ve yüklüyoruz.
30374 eklentisine bak

2. Birkaç dakika boyunca yükleyecek ve bitince bize kapatıp açmamızı söyleyecek, yapıyoruz.

3. Artık sol barda PlatformIO ikonu var. Eğer PIO Home sayfası otomatik olarak açılmadıysa soldaki ikona tıklayıp aşağıdan "PIO Home" altında "Open"a basıyoruz. (veya kısayol: ctrl+shift+p "home")
30376 eklentisine bak

4. Sağ üstten "New Project"e basıyoruz.

5. Herhangi bir proje ismi giriyoruz. Sonra board seçiyoruz. Bende STM32 blue pill board olduğu için "bluepill" yazıyorum ve C6, C8 gibi MCU varyantlarından uygun olanı seçiyorum. Framework kısmında ise kullanacağımız framework var ki bence PlatformIO'nun en güçlü olduğu kısım burası: basit işler için Arduino kodu yazacaksak var, karmaşık işler için STM32Cube veya CMSIS var, hatta destekleyen işlemciler için FreeRTOS var. Arduino seçtik diyelim.

6. Finish'e basıyoruz. Gereken derleyici ve frameworkleri yüklüyor.

7. Yeni projemiz açılacak. src/ altında main.cpp ve onun içinde bildiğimiz Arduino başlangıç kodunu görüyoruz.
30378 eklentisine bak

8. Derleyelim. Solda PlatformIO altında ihtiyacımız olan tasklar var: Build ve Upload. Build'e basıyoruz ve başarıyla derliyor.

30379 eklentisine bak

9. Şimdi upload etmemiz lazım. Ama daha önce projeye konfigürasyon nasıl yapacağız onu göreceğiz. PlatformIO'nun en güçlü noktalarından birine geldik: projedeki platformio.ini dosyası. Artık Arduino IDEdeki gibi menüden upload ayarı yapmak yok. Bütün ayarlar bu dosyada gözümüzün önünde olacak. Ayrıca kütüphane yükeyeceğimizde de bu dosyayı değiştirip kaydetmemiz yeterli, yani artık kütüphane bul/indir/kopyala da yok.

30381 eklentisine bak

10. Kullandığımız board'a ait PlatformIO websitesindeki bilgi sayfasını açıyoruz. Bu sayfadaki upload kısmında kullanabileceğimiz upload yöntemleri var. Muhtemelen biz ya stlink ya da jlink kullanmak isteyeceğiz. Sitede "default protocol is stlink" diyor yani stlink ile upload etmek için bizim hiçbir ayar yapmamıza gerek yok :). Ama elimiz alışsın, platformio.ini dosyasına upload_protocol satırını ekliyoruz.

30382 eklentisine bak

11. Şimdi bir de kütüphane yükleyelim. Mesela bana L298 motor sürücü kütüphanesi lazım diyelim. PIO Home açıyorum. Libraries kısmına geliyorum. Arama çubuğuna L298 yazıp aratıyorum.

30383 eklentisine bak

12. Sonuçlarda dikkat ederseniz uyumlu platformlar da yazıyor. Örneğin ilk sonuçtaki L298N kütüphanesini yükleyelim. L298N'e tıkladım. Kütüphanenin sayfası çıkıyor ve burada örnek kodları görüyoruz (bunlar çok işime yarıyor). "Add to Project" butonu da var, basıyoruz. Örnek projemizi seçiyoruz ve Add diyoruz. Yükleme işi bu kadar.

30384 eklentisine bak

13. platformio.ini dosyamıza bakalım. Eklediğimiz kütüphane burada lib_deps alanında kayıtlı. Aslında biz arayüzden "Add to Project"e basmak yerine bu satırı yapıştırıp dosyayı kaydetsek kütüphane yine yüklenecekti. Aynı şekilde ben bu projeyi birine gönderirken kütüphaneleri de yollamak zorunda değilim. Projeyi alan kişi platformio.ini dosyasını da aldığı için kütüphaneler onun bilgisayarında otomatik olarak yüklenecek. Böylece zip indir, aç, dosyaları kopyala yapıştır vs. hamallığından kurtulduk.

Gereken çoğu şey bu kadar. Belki birkaç adım daha ekleyip seri port ayarlamayı da gösterebilirim. Bu kısma kadar yapamayan veya sorusu olan varsa sorsun. Yanlış veya eksik anlattığım kısımları düzelteyim.
Herşeyi otomatik yapıyor uğraştırmıyor güzelmiş ama aklıma takılan durumlar oldu,

Diyelim ben bir board dosyasını kurcaladım ve custom hale getirdim;
Örn:
Arduino kartları için yazılan board dosyasında delay gibi işleri yürütmek için meşgul ettiği timer'ı board dosyasını düzenleyerek serbest bıraktım.

Ben bu custom hale getirdiğim board dosyasını nasıl pIO'a ekleyeceğim?
Veya ben programlamak icin pIO ile başladım pIO bu board dosyalarını nereye kaydediyor cloud mu? bilgisayar hafızasında mı?

Kendi yazdığım kütüphanemi nasıl ekleyeceğim?

vs code için özel bir tema geliştirme imkanım var mı arduino ide için kendi temamı oluşturdum arka planı karanlık ve dikkat etmem gereken komut renklerini kendim seçtim.
 
Cikti Arduino IDE gibi cok fazla yer kapliyor. New projet deyip kendi ekledigi 4 satiri derleyince 444 Byte oldu. Atmel Studio ciktisi 140 Byte yer kapliyor.
Evet bu gayet normal. Çünkü bahsi geçen PlatformIO, VSCode için bir eklenti. Yani yeni bir derleyici değil. Muhtemelen bilgisayarınde yüklü olan Ardunio IDE ile gelen aynı derleyici kullandığı için sonuç aynı oluyor. Bende VSCode u eski ismiyle proton yeni ismiyle positron derleyici için kullanıyorum. Çok pratik özellikleri var. Kod otomatik tamamlama, seçilen metni projenin her yerinde işaretleme, proje içerisinde alt kütüphaneler dahil köprü linkler oluşturması, çoklu sayfa kullanımı, envayi çeşit tema, codemap gibi özellikler gayet kullanışlı.
 
framework arduino zaten. bu yüzden arduino ne kadar kod alanı kaplıyorsa bu da aynısı olacak. platform io arduino üzerine giydirilmiş bir ide arabirimi sadece.
 
Herşeyi otomatik yapıyor uğraştırmıyor güzelmiş ama aklıma takılan durumlar oldu,

Diyelim ben bir board dosyasını kurcaladım ve custom hale getirdim;
Örn:
Arduino kartları için yazılan board dosyasında delay gibi işleri yürütmek için meşgul ettiği timer'ı board dosyasını düzenleyerek serbest bıraktım.

Ben bu custom hale getirdiğim board dosyasını nasıl pIO'a ekleyeceğim?
Veya ben programlamak icin pIO ile başladım pIO bu board dosyalarını nereye kaydediyor cloud mu? bilgisayar hafızasında mı?
Bilgisayarda. platformio.ini dosyasıyla bu ve benzeri birçok şeyi yönetebiliyorsun.

Kendi yazdığım kütüphanemi nasıl ekleyeceğim?
klasörü gösterek

vs code için özel bir tema geliştirme imkanım var mı arduino ide için kendi temamı oluşturdum arka planı karanlık ve dikkat etmem gereken komut renklerini kendim seçtim.
evet.
 
Ben Attiny13'ü nano yada uno üzerinden kodlayabiliyorum. Platformio da bu nasıl olacak?
 
Tercih nedeni olur mu blmem. Platformio seri monitörde türkçe karakterler düzgün görünüyor. Serial print kütüphanelerinde değişiklik gerekmiyor.
 
Platformio ile USB ASP kullanarak program yüklemek için platformio.ini dosyasını şu şekilde düzenleyin. Işık hızında program yüklüyor...

Kod:
[env:usbasp]
platform = atmelavr
board = nanoatmega328
framework = arduino
upload_protocol = usbasp
upload_flags = -e
 
Platformio ile USB ASP kullanarak program yüklemek için platformio.ini dosyasını şu şekilde düzenleyin. Işık hızında program yüklüyor...

Kod:
[env:usbasp]
platform = atmelavr
board = nanoatmega328
framework = arduino
upload_protocol = usbasp
upload_flags = -e
atmel ice?
 
Konuyu en olmayacak yerden ele almışım.
RP2040(WIFI) PIC0W programlayayım dedim "uf2" dosyası gen edip benden port istiyor : )) port veremeyincede yükleyemedim deyip hata veriyor.

Earle abi bir çözüm önerisi vermiş.
 
src klasöründe main.cpp hariç başka bir ***.cpp dosyası oluşturup onu derleyip yükleyebiliyor muyuz arduinoya? main.cpp hariç başka bir dosya yüklemenin yolunu bulamadım. Acaba böyle bir opsiyon yok mu?
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
6,985
Mesajlar
119,302
Üyeler
2,835
Son üye
alpermete

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top