Git un flux de treball IDE d’Arduino: la nova pila


Dr. Torq

Rob (drtorq) Reilly és un consultor, escriptor i orador independent especialitzat en Linux/OSS, informàtica física, pirateria de maquinari, mitjans tecnològics i el moviment DIY/Maker.

Fins i tot els petits projectes de microcontroladors requereixen múltiples iteracions del codi, a mesura que avança el projecte. En el passat, simplement he utilitzat números consecutius, units als noms dels fitxers per marcar cada darrera versió del codi Arduino. Tot i que és viable, és maldestre i no és tan fàcil de gestionar. Malgrat els fitxers de mida relativament modesta i simplistes, fer un seguiment dels canvis amb l’IDE Arduino és confús i requereix molt de temps.

Un projecte típic basat en Arduino utilitza fitxers de codi font que es converteixen a un format binari per carregar-los (com a firmware) a un microcontrolador Arduino.

Els mòduls tradicionals d’Arduino, com el Nano, tenen capacitats d’emmagatzematge de microprogramari força modestes i només poden gestionar tasques de lectura d’algunes entrades, càlculs i establiment de sortides bastant senzilles. Els microcontroladors més nous compatibles amb Arduino, com l’ESP32, tenen espais de programa molt més grans i poden acollir aplicacions molt més grans i complicades.

Amb un preu d’uns 8 dòlars cadascun, l’ESP-32 també té capacitat Wi-Fi i Bluetooth a bord. Combina-ho amb una petita pantalla LCD a color de 320 × 240 i tindreu els elements d’una plataforma de visualització de sensors compacta i interessant.

Estic treballant per combinar a Mòdul GPS amb l’ESP-32 i la pantalla LCD amb una caixa impresa en 3D per fer un petit rellotge que mai necessita reiniciar. Obtindrà l’hora de tots els satèl·lits GPS que suren per sobre. WiFi i BT ofereixen possibles futures interfícies d’usuari i funcions MQTT.

Avui veurem com utilitzar-lo git sistema de control de versions per gestionar el codi per a un flux de treball Arduino IDE.

La manera Arduino IDE

Abordo els meus projectes per fases. Feu que el microcontrolador parli amb l’IDE (entorn de desenvolupament interactiu) en una fase. Connecteu el microcontrolador a la pantalla LCD en un altre. Una tercera fase podria ser l’enviament de dades des del mòdul GPS al microcontrolador. Enteneu la idea.

Moltes vegades, estic aprenent a utilitzar un nou sensor o dispositiu de sortida en un projecte. Cada iteració es basa en els components individuals i els mòduls de codi fins que tenim un sistema complet. Completar cada fase ajuda a mantenir la motivació i soluciona qualsevol problema. La construcció de maquinari fins i tot senzill té una complexitat sorprenent.

Posar un projecte a git ho agrupa tot en un disseny de paquet convenient. En el passat, de vegades guardava una versió nova en algun directori predeterminat, després tornava més tard i em preguntava on anava quan no la trobava. Amb mitja dotzena de projectes en curs simultàniament, és fàcil quedar-se embolicat en expedicions de recerca de fitxers que fan perdre temps.

Configuració del projecte

La meva visió inicial del meu propi projecte és un microcontrolador de tipus Arduino, amb una petita pantalla LCD en color, que llegeix dades d’un mòdul GPS i mostra l’hora local actual. Com que estem discutint el flux de treball, els detalls tècnics específics del projecte no seran tan profunds com de costum.

Aquest projecte utilitza un comú Mòdul ESP32a Pantalla LCD TFT a color de 320×240una placa de prova i un senzill Power Stick de 2600 mAh que es va agrupar en una compra recent Paquet de sensor de visió intel·ligent JeVois.

La programació s’aconsegueix mitjançant una connexió USB a l’antic portàtil Dell Core-i7 de confiança amb Xubuntu 20.04.4 LTS. També estic executant l’IDE Arduino, versió 1.8.13.

Tots els fitxers de codi font del firmware Arduino resideixen en un directori anomenat. Quan es desa un fitxer nou, l’IDE d’Arduino genera automàticament un directori de programari, que reflecteix el nom del fitxer font. He canviat el directori del quadern d’esbossos de l’IDE d’Arduino a la pestanya de preferències per agrupar directoris de fonts nous de manera predeterminada. També és important portar totes les biblioteques al directori de consolidació, de manera que l’IDE d’Arduino hi pugui accedir durant la compilació.

La majoria de biblioteques d’Arduino ofereixen conjunts de fitxers de mostra que demostren l’ús de les funcions. Vaig obrir un programa d’exemple, a l’IDE d’Arduino, des del TFT_eSPI anomenada biblioteca TFT_Print_Test. Mostra un fons de colors aleatòriament amb diverses línies de text de diferents tipus de lletra i mida. És un programa d’una dotzena de línies que és fàcil de seguir i de modificar per a la demostració. Aquí teniu un gràfic de la pantalla.

Bare-bones esp32/ tauler LCD en color que mostra text

Bare-bones esp32/ tauler LCD en color que mostra text

El directori dels fitxers Arduino es va configurar amb el següent en un terminal de text Xubuntu.

drtorq% cd /home/rob
drtorq% mkdir esp32-lcd
drtorq% cd mkdir esp32-lcd

Tornant a l’IDE, el fitxer d’exemple es va desar a TFT_Print_Test.ino. L’IDE va ​​generar automàticament a TFT_Print_Test directori sota el /home/rob/esp32-lcd directori.

Aquí hi ha un segment de codi del fitxer després del primer desat a l’IDE.

Fitxer original Arduino esp32-lcd

Fitxer original Arduino esp32-lcd

A continuació, vaig tornar al terminal de text per configurar la instància git.

drtorq% git init
drtorq% ls (per recordar-me el nom del directori esp32-lcd, que és “TFT_Print_Test”)
drtorq% git add TFT_Print_Test
drtorq% git commit -m "initialized the esp32-lcd basic project code under git control"
drtorq% git status

Estat inicial de git

Estat inicial de git

Com podeu veure, ara només fem el seguiment dels fitxers del projecte ESP-LCD i no de les biblioteques. Amb la mateixa facilitat podríeu posar els fitxers de la biblioteca a git, amb un “git afegir *‘ comandament. En alguns casos, això podria ser desitjable, com ara els fitxers de configuració personalitzats. Vaig triar no fer-ho per senzillesa en aquest cas. A més, git fa un seguiment de tots els fitxers a nivell de directori. Així, tot el que s’afegeix o s’actualitza al fitxer TFT_Print_Test directori, sota el /home/rob/esp32-lcd El directori es fa un seguiment amb git.

Afegiu una funció nova amb una branca nova

Amb el codi base indexat a git, és senzill configurar una branca base a git, per al seu ús posterior. Per fer-ho, hem de conèixer el número de referència del commit de git. Utilitzeu l’ordre git log.

drtorq% git log

Registre git inicial que mostra el número de confirmació del fitxer Arduino original

Registre git inicial que mostra el número de confirmació del fitxer Arduino original

Aquí, veurem un nombre bastant gran, a sobre de la línia de l’autor, etiquetat com “commit”. Els darrers compromisos estan a la part superior. Copieu aquest número al porta-retalls del vostre terminal Linux amb c.

Volem crear una branca nova, de manera que això es faci fàcilment amb l’ordre tradicional git checkout.

A continuació, enganxeu el número de commit a git checkout amb l’opció -b i el nom de la branca. En aquest cas, he utilitzat “orig-state” per al nom. Utilitzeu una v a la línia d’ordres per enganxar el número.

drtorq% git checkout -b orig-state [commit number]

Ara fes a estat git i trobareu que esteu al nou creat estat d’origen branca. Sortiu de l’IDE d’Arduino. No canvieu res i només torneu a la branca mestra amb una altra git checkout.

drtorq% git status
drtorq% git checkout master

De fet, la majoria dels usuaris probablement voldran utilitzar l’ordre git switch més recent per passar entre branques. Fa el mateix que la compra, és més recent, més fàcil de recordar i té menys caràcters per escriure. Aquí teniu un exemple.

drtorq% git switch master

Vaig afegir un parell de comentaris al fitxer, el vaig desar, després vaig sortir de l’IDE d’Arduino i vaig fer el habitual. git add i git comprometre’s. Si torneu a canviar a estat d’origen veureu el text original “Hola, món” quan obriu l’IDE d’Arduino. Sortiu de l’IDE, canvieu git a mestre i, a continuació, reinicieu l’IDE. Els darrers canvis mestres es mostraran a l’IDE.

Consulteu la darrera versió de la branca mestra del fitxer.

segment de codi que mostra la versió de la branca mestra

segment de codi que mostra la versió de la branca mestra

Ara podeu modificar el vostre codi (a la branca mestra) per a noves funcions, sabent que el fitxer inicial es torna a indexar de manera segura a la branca d’estat d’origen.

És important desar i tancar el fitxer font a l’IDE d’Arduino abans de cada commit. git gestiona tota la màgia de versions.

Embolicar

Hem parlat de com començar a utilitzar git amb l’entorn de desenvolupament interactiu Arduino. Només recordeu configurar els vostres directoris correctament i després desar i treure els fitxers abans de fer a git add i git commit. Canvia a la branca escollida. A continuació, torneu a obrir el fitxer per obtenir la versió escollida.

Poseu-vos en contacte amb Rob “drtorq” Reilly per a consultes, conferències i projectes encarregats a [email protected] o 407-718-3274.

The New Stack és una filial de propietat total d’Insight Partners, un inversor de les empreses següents esmentades en aquest article: Torq.