PlatformIO: Erste Schritte - AZ-Delivery
Ciao e benvenuto al post di oggi.

Prima di tutto, vorrei ringraziare tutti i nostri lettori per il feedback vivace sul nostro articolo "PlatformIO Installation".

Molti hanno letto l'articolo, e anche installato il software.

Così oggi vorrei dare alcuni piccoli suggerimenti per iniziare.

1. Trovare e installare librerie

L'IDE di Arduino fornisce una gestione pratica della libreria. Questo rende abbastanza facile cercare le librerie, installarle e mantenerle aggiornate.
Il pulsante Librerie in PlatformIO offre una funzionalità simile:The Libraries button in PlatformIO provides a similar feature:


Scheda Librerie

Prima di tutto, voglio installare la mia libreria preferita per il controllo dei display: U8g2 di OliKraus. Per fare questo, inserisco il nome della libreria nella barra di ricerca: "U8g2" e confermare l'ingresso con Invio, o fare clic sull'icona lente di ingrandimento:

PiattaformaIO: Librerie: Ricerca

Il primo colpo è la libreria desiderata. Cliccando sulla libreria ci porterà alla pagina di panoramica della libreria. A questo punto, vengono visualizzate tutte le informazioni importanti sulla libreria e possiamo selezionare la versione desiderata (di solito prendo la più recente), e cliccando sul pulsante "Installa" possiamo installare la libreria.

PiattaformaIO: U8g2: Installazione

Dopo pochi istanti, il messaggio "Congratulazioni! U8g2 x 2.23.x è stato installato correttamente!".

PiattaformaIO: U8g2: Installare OK


Cliccando sulla scheda "Installato", possiamo vedere quali librerie sono installate e rimuoverle se necessario. Cliccando su "Rivela" si apre il file manager e ci mostra la cartella con le librerie installate.


Ciò significa che le librerie non verranno più installate nei propri documenti in "C:"Users"<Name>-Documents-Arduino-libraries" ma in "C:-Users-<Name>platformio-lib".


2. Crea il tuo primo progetto

Prima di poter utilizzare la libreria installata, è necessario creare un progetto.
Per fare questo, andiamo al pulsante "Home" in alto e fare clic su "Nuovo progetto" a "Accesso rapido".

 

PiattaformaIO: Nuovo progetto

Nella finestra successiva, assegniamo un nome e selezioniamo il microcontrollore. Nell'esempio, prendo il nostro Nano V3 – così entro Nano a "Board" e scelgo "Arduino Nano ATmega328". Lascio la voce per "Framework" a "Arduino". Gli utenti esperti possono scegliere tra altri framework a seconda della scheda.

PiattaformaIO: Nuovo progetto: Impostazioni

Ora viene creato il progetto. Questa operazione può richiedere alcuni minuti, soprattutto se si tratta del primo progetto con un microcontrollore specifico e tutti i file necessari devono essere scaricati da Internet.

PlatformIO: messaggio "Attendere"


Dopo di che, l'esploratore appare a sinistra e viene visualizzato il nostro progetto "OLED-TEST". Quando apriamo "src" vediamo un file chiamato "main.cpp". Corrisponde al nostro schizzo Arduino vuoto, con "void Setup()" e "void loop()".

PiattaformaIO: Progetto vuoto

Nella parte inferiore della barra di stato blu vengono visualizzati una varietà di piccoli simboli. Questi sono pulsanti, e ci permettono l'accesso a varie funzioni. Possiamo compilare il codice usando "Build". "Upload" carica il codice compilato nel microcontrollore.

Test-saggio, compilo lo schizzo vuoto e lo carico. Nella console viene visualizzato il seguente output:
 

> Esecuzione dell'attività: C:'Users''chrisp'.platformio'scriptv'platformio.exe run --target upload <

Elaborazione nanoatmega328 (piattaforma: atmelavr; scheda: nanoatmega328; quadro: arduino)
---------------------------------------------------------------------------
PackageManager: Installazione di tool-avrdude
Download [- 100%
Decomprimere la decompressione ['''''''''''''''''''''''''''''''''''''''''".
La modalità dettagliata può essere abilitata tramite l'opzione '-v, --verbose'
PIATTAFORMA: Atmel AVR > Arduino Nano ATmega328
SISTEMA: ATMEGA328P 16MHz 2KB DI RAM (30 KB Flash)
Libreria Dependency Finder -> http://bit.ly/configure-pio-ldf
MODALE LDF: CERCA(catena) COMPATIBILITY(soft)
Raccolte 25 librerie compatibili
Dipendenze di scansione in corso...
Nessuna dipendenza
Compilazione di .pioenvs-nanoatmega328
Archiviazione .pioenvs, nanoatmega328,libFrameworkArduinoVariant.a
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino-CDC.cpp.o
Compilazione di .pioenvs,nanoatmega328- FrameworkArduino,HardwareSerial.cpp.o
Compilazione di .pioenvs,nanoatmega328-FrameworkArduino-HardwareSerial0.cpp.o
Compilazione di .pioenvs,nanoatmega328-FrameworkArduino-HardwareSerial1.cpp.o
Compilazione di .pioenvs,nanoatmega328-FrameworkArduino-HardwareSerial2.cpp.o
Compilazione di .pioenvs,nanoatmega328-FrameworkArduino-HardwareSerial3.cpp.o
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino-IPAddress.cpp.o
Compilazione di .pioenvs,nanoatmega328-FrameworkArduino-PluggableUSB.cpp.o
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino-Print.cpp.o
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino-Stream.cpp.o
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino-Tone.cpp.o
Compilazione di .pioenvs,nanoatmega328-FrameworkArduino-USBCore.cpp.o
Compilazione di .pioenvs,nanoatmega328-FrameworkArduino-WInterrupts.c.o
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino-WMath.cpp.o
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino-WString.cpp.o
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino-abi.cpp.o
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino-hooks.c.o
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino-main.cpp.o
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino-wiring.c.o
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino-wiring_analog.c.o
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino-wiring_digital.c.o
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino-wiring_pulse. S.o
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino-wiring_pulse.c.o
Compilazione di .pioenvs-nanoatmega328-FrameworkArduino-wiring_shift.c.o
Archiviazione .pioenvs-nanoatmega328-libFrameworkArduino.a
Collegamento di .pioenvs-nanoatmega328-firmware.elf
Edificio .pioenvs-nanoatmega328-firmware.hex
Dimensione di controllo .pioenvs-nanoatmega328-firmware.elf
Utilizzo memoria -> http://bit.ly/pio-memory-usage
DATI: [ ] 0.4% (utilizzato 9 byte da 2048 byte)
PROGRAMMA: [ ] 1,4% (utilizzato 444 byte da 30720 byte)
Configurazione del protocollo di caricamento in corso...
DISPONIBILE: arduino
CORRENTE: upload_protocol e arduino
Ricerca della porta di caricamento in corso...
Rilevato automaticamente: COM25
Caricamento di .pioenvs-nanoatmega328-firmware.hex

avrdude: dispositivo AVR inizializzato e pronto ad accettare le istruzioni

Proprietà Reading . ################################################## | 100% 0,00s

avrdude: Firma del dispositivo : 0x1e950f (probabilmente m328p)
avrdude: lettura del file di input ".pioenvs"nanoatmega328-firmware.hex"
avrdude: scrittura flash (444 byte):

Proprietà Writing . ################################################## | 100% 0,15s

avrdude: 444 byte di flash scritti
avrdude: verifica della memoria flash rispetto a .pioenvs-nanoatmega328-firmware.hex:
avrdude: caricare i dati flash dei dati dal file di input .pioenvs- nanoatmega328-firmware.hex:
avrdude: il file di input .pioenvs-nanoatmega328-firmware.hex contiene 444 byte
avrdude: lettura dei dati flash su chip:

Proprietà Reading . ################################################## | 100% 0,11s

avrdude: verifica ...
avrdude: 444 byte di flash verificati

avrdude: modalità provvisoria: Fusibili OK (E:00, H:00, L:00)

avrdude fatto. Grazie.

La S.r.l. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Das Terminal wird von Aufgaben wiederverwendet, dr'cken Sie zum Schlie'en eliebige Taste.

 

Nella parte inferiore dell'Explorer è il file "platformio.ini". Quando li selezioniamo, riconosciamo il microcontrollore selezionato . A questo punto, possiamo cambiare la porta per il caricamento, se necessario.

Per fare questo, possiamo aggiungere l'opzione "upload_port" in questo file, ad esempio con la riga "upload_port - COM25".

Per ulteriori opzioni sulle opzioni di caricamento, vedere https://docs.platformio.org/en/latest/projectconf/section_env_upload.html#upload-port

Suggerimento: nella home page Di PlatformIO: in "Dispositivi" sono elencate tutte le schede connesse e riconosciute:
PiattaformaIO: Scheda: Dispositivi

PiattaformaIO: Dispositivi

Ora possiamo integrare la biblioteca per mezzo di #include. Io uso lo schizzo campione dal nostro eBook al display OLED da 0,91" i2c con piccole regolazioni.

 

 

#include <Arduino.H>
#include <U8g2lib.H>

U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0, // reset / U8X8_PIN_NONE);
u8g2_uint_t compensare;
u8g2_uint_t Larghezza;
Const Char *Testo = "Test";

Vuoto Installazione() {     u8g2.Iniziare();     u8g2.setFont (carattere di comando)(u8g2_font_logisoso32_tf);     Larghezza = u8g2.getUTF8Width (larghezza intallina)(Testo);     u8g2.setFontMode (modalità setFont)(0);
} 

Vuoto Ciclo() {     u8g2_uint_t X;     u8g2.Firstpage();     Thu {         X = compensare;         u8g2.setFont (carattere di comando)(u8g2_font_logisoso32_tf);             Thu {              u8g2.drawUTF8 (disegno UTFa8)(X, 32, Testo);              X += Larghezza;     } Mentre ( X < u8g2.getDisplayWidth (informazioni in lingua inlingua).() );     u8g2.setFont (carattere di comando)(u8g2_font_logisoso32_tf);     u8g2.Setcursor(0, 64);     u8g2.Stampare(Larghezza);
} Mentre ( u8g2.Nextpage() );
compensare -= 1;
Se ( (u8g2_uint_t)compensare < (u8g2_uint_t) - Larghezza ){     compensare = 0;     u8g2.clearBuffer (buffer di chiaro)();     }
}

 

Dopo la compilazione e il caricamento, il testo viene visualizzato sul display:

 Testo "Test" appare sul display

Tutti gli inizi sono difficili. Passare a un nuovo software non è solo difficile, ma richiede anche molta disciplina, in quanto sarebbe molto facile avviare rapidamente l'IDE di Arduino e caricare rapidamente il codice.

Spero che questa guida passo-passo possa aiutarvi a resistere a questa tentazione.

 

Vorremmo sapere com'è stato il tuo ingresso nel mondo di PlatformIO. Scrivi le tue esperienze nei commenti o inviaci una breve e-mail. Quali ostacoli dovevi superare? Riuscite a immaginare di rinunciare completamente all'IDE di Arduino? Quali aspetti di PlatformIO vorresti vedere altri post sul blog?

Non vedo l'ora di ricevere il vostro feedback e dire addio a oggi.

Il tuo Markus Neumann

 

Für arduinoGrundlagen software

15 commenti

Jörn Weise

Jörn Weise

Hallo Peter,

im Prinzip geht es mit dem einbinden von externen Bibliotheken, siehe dazu https://docs.platformio.org/en/latest/projectconf/sections/env/options/library/lib_extra_dirs.html
Jedoch würde ich das nicht empfehlen, wenn nicht die Libraries sehr speziell sind. Das Prinzip hinter PlatformIO ist, dass jedes OS die Libs runterladen kann und dort abspeichert, wo es passt. Wenn nun Extra-Libs angenommen werden, so kann es nachher zum Fehler kommen.

Gruß

Jörn

Peter

Peter

Vielen Dank für den tollen Artikel.
Wie ist es möglich, lokal gespeicherte Libraries (Arduino-IDE) in Platformio zu integrieren,, bzw. über die Suchfunktion entsprechenden Libraries zu filtern.
Beispiel: Bei der Suche nach einer Library mit dem Namen “Wire” werden mehr als 600 Treffer angezeigt. Auch solche in denen der Name “Wire” im Namen nicht enthalten ist.

Julia

Julia

vielen Dank für den hilfreichen Artikel, ich bin begeistert. Nur das Hochladen auf den ESP32 klappt nicht.
Ich arbeite mit macOS Big Sur Vers. 11.2.3
mit Windows klappt es
Fehler: A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
den Boot Button auf dem ESP32 habe ich gedrückt während des Hochladens,
beste Grüße von Julia

Jürgen Beckamp

Jürgen Beckamp

Danke für den guten Beitrag,
ich kann Libraries nur in ein Projekt installieren.
Bei mir fehlt der gezeigte Schalter “Install…” (viertes Bild).
Ich habe dort “Add to Project” als einzige Auswahl und muss dann auch das Projekt auswählen in das die Libs installiert werden.
So werden viele “gleiche” Libs in den unterschiedlichen Projektordnern abgelegt.
Es wird jedesmal .pio unter dem Projekt erzeugt und darin ist libdeps\esp32… mit den Libs.
( z.B. für ein Webserverprojekt wird .pio mit 110MB und 167Dateien gross) je nach Projekt und installieren Libs, die beim Upate ja auch berücksichtigt werden.
Den erwähnten Ordner „C:\Users\\.platformio\lib“ habe ich nicht.
Ich habe mein Userverzeichnis auf Laufwerk D: verlegt (weil C: klein ist), und da ist kein Verzeichniss „D:\Users\\.platformio\lib“.
Was muss ich in den Einstellungen ändern um auch ein gemeinsames Liraries-Verzeichnis zu bekommen?

In der platformio.ini habe ich dann z.B. :
lib_deps =
AsyncTCP@^1.1.1
ESP Async WebServer@^1.2.3
Im Main.cpp dann die normalen #include und es geht…
aber die Libs kommen dann wohl aus dem Unterordner .pio aus dem jeweiligen Projekt.

Danke für die Unterstützung
Mit freundlichem Gruß
Jürgen

Markus W

Markus W

Anntwort für Daniel:
Sehr einfach, indem man auf den src-Ordner im Arbeitsbereich mit der rechten Maustaste klickt und dann “Neue Datei” wählt. Dann benennt man die Datei und sie ist auch gleich als neuer Tab geöffnet.
Ich habe mir hier die “ordentliche” Arbeitsweise mit Header- und Quelltextdateien angewöhnt.

Das einzige, was ich noch nicht vertsnden habe, ist die Verwendung von Git.

Daniel

Daniel

Hallo, ich bin auch gerade dabei, von der Arduino IDE auf PlatformIO umzusteigen. Vielen Dank für den hilfreichen Beitrag.
In der Arduino IDE kann man den Code eines Projektes (z.B. der Übersichtlichkeit halber) einfach in mehrere .ino Dateien aufteilen.
Wie macht man sowas in PlatformIO?

Viele Grüße
Daniel

R. Otto

R. Otto

Hallo,
ist es möglich aufzuzeigen, wie man mit einem Programmer (zB STK500) oder /und mit dem Bottloader das Programm auf den Arduino überträgt- wo wird das konfiguriert?

Dieter Behm

Dieter Behm

hallo Herr Markus Neumann,

der Artikel ist super, danke auch für Ihren Einsatz für meine Ersatzlieferung. Nach anfänglichen Problemen komme ich meinem Ziel mit Ihren Artikeln ein Stück näher.
Danke dafür

Dieter Behm

Markus

Markus

Ich habe ein Problem mit dem seriellen Monitor unter PlatformIO (in VSC) und dem “ESP32 NodeMCU Module WLAN WiFi Development Board mit CP2102” von Euch.

Unter der Arduinio Ide funktionierte der Zugriff auf die serielle Schnittelle (für Debug-Ausgaben) problemlos.

Unter PlatformIO scheint der ESP32 nicht zu funktionieren, sobald ein “Serial.begin(115200);” in der setup-Funktion erscheint.
Ohne diesen Zugriff auf Serial.XY macht der ESP32 was er soll. (hab mal zum testen die LED blinken lassen)
Welche Einstellungen sind in PlatformIO nötig, damit der serielle Zugriff funktioniert?

Umgebung: MacOS

Einstellungen z.B. für Board habe ich genauso wie hier beschrieben übernommen:
https://docs.platformio.org/en/latest/tutorials/espressif32/arduino_debugging_unit_testing.html

Wer kann mir helfen?

Danke + Gruß

Markus

Bert

Bert

Hallo, wie kann mann die Deutsche Sprache Installieren vielen Dank im voraus Gruß Bert

Thomas

Thomas

Auch vom mir vielen Dank.
Nun kann ich ganz prima Bibliotheken einbinden. Doch wie werde ich die wieder los?
Wie kann man Bibliotheken deinstallieren?
Weiß das jemand?
LG au Berlin

Michael

Michael

Danke für diese Anleitung. Dadurch fällt der Wechsel von der Arduino IDE auf PlattformIO leichter :-)

Udo Scharnitzki

Udo Scharnitzki

Hallo,

es gibt relativ wenige Tutorials, die wie dieses hier, ausführlich und engagiert eine Software vorstellen. Es hat unter Windows 10 alles auf Anhieb geklappt. Für eine Bewertung habe Sie volle Punktzahl mit Auszeichnung verdient.

Vielen, vielen Dank für die Arbeit, die Sie sich gemacht haben. Sowas braucht die Welt!!! Ihnen “ALLES GUTE” weiterhin.

Stephan Strittmatter

Stephan Strittmatter

Super Artikel, ich bin auch recht schnell von der Arduino IDE auf Platform.io umgestiegen. Die IDE ist um Welten besser.

Bernd

Bernd

Das hat einwandfrei funktioniert! Vielen Dank für diese Hilfe!

Lascia un commento

Tutti i commenti vengono moderati prima della pubblicazione