Voulant m'initier à la programmation sur arduino, j'ai recherché un environnement le permettant.
J'utilise déjà Emacs pour programmer en C++ ou faire quelques pages html pour agrémenter mon site web.
De ce fait, je n'ai bien entendu pas utilisé la solution de facilité qu'est vscode ou vscodium.
Certaines personnes m'ont regardé avec des yeux effarés en me disant que ça ne marchera pas, mais le résultat est là : ça fonctionne tout aussi bien avec l'avantage de maîtriser son environnement.
Pour pouvoir disposer d'un environnement convenable, il vous faudra ces logiciels ou paquets.
Je fais l'installation sur mon ordinateur portable ou j'ai installé la distribution Archlinux.
Je n'ai pas essayé sur Debian. Il vous faudra, si vous possédez cette distribution, possiblement compiler certains logiciels
Les logiciels nécessaires :
Les paquets dans Emacs :
Pour pouvoir interagir avec les paquets d'emacs qu'on a installé, il faudra rajouter quelques lignes de configuration
Je vous donne les miennes, mais vous pourrez les modifier comme vous le souhaitez
pour lsp :
(setq lsp-clangd-executable "clangd")
(setq lsp-clients-clangd-executable "clangd")
pour which-key :
(use-package which-key
:config
(which-key-setup-minibuffer)
:ensure t
:diminish which-key-mode
:init
(which-key-mode))
pour company :
(use-package company
:ensure t
:config
(setq company-idle-delay 0)
(setq company-minimum-prefix-length 1)
(global-company-mode t)
)
pour arduino :
(use-package arduino-mode
:defer t)
(add-to-list 'auto-mode-alist '("\\.ino$" . arduino-mode))
(use-package arduino-cli-mode
:ensure t
;; :hook arduino-mode
;; :mode "\\.ino\\'"
:custom
(arduino-cli-warnings 'all)
(arduino-cli-verify t))
pour platformio :
(use-package platformio-mode
:ensure t)
;; Enable ccls for all c++ files, and platformio-mode only
;; when needed (platformio.ini present in project root).
(add-hook 'c++-mode-hook (lambda ()
(platformio-conditionally-enable))
)
Maintenant que tout est configuré, on va pouvoir se focaliser sur la mise en oeuvre et la production de code arduino. Voici la procédure détaillée :
Pour lister toutes les cartes prises en charge par Platformio :
platformio boards
Pour rechercher le modele de carte arduino :
lsusb
ce qui donne
Bus 001 Device 009: ID 1a86:7523 QinHeng Electronics CH340 serial converter
sudo dmesg
ce qui donne
[ 326.251431] usb usb2-port4: Cannot enable. Maybe the USB cable is bad?
[ 326.251487] usb usb2-port4: attempt power cycle
[ 327.231357] usb 1-4: new full-speed USB device number 9 using ohci-pci
[ 328.194853] usb 1-4: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.64
[ 328.194869] usb 1-4: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 328.194875] usb 1-4: Product: USB Serial
[ 328.201706] ch341 1-4:1.0: ch341-uart converter detected
[ 328.218005] usb 1-4: ch341-uart converter now attached to ttyUSB0
pio device list
ce qui donne
/dev/ttyUSB0
------------
Hardware ID: USB VID:PID=1A86:7523 LOCATION=1-4
Description: USB Serial
ces indications ne fournisse pas la référence de la carte arduino car c'est certainement la référence de la carte USB et non du module arduino.
En tous les cas j'ai pris pour exemple le modèle nodemcu et tout fonctionne
Pour créer l'embryon du projet :
pio init --ide emacs --board nodemcu
cette commande créée tous les fichiers et dossiers nécessaires à la bonne réalisation du projet
Pour pouvoir avoir les commandes nécessaires à l'évaluation de lsp :
pio run -t compiledb
Le fichier compile_commands.json est créé
Initialiser le dépôt git ;
git init
Vous pouvez également le faire dans emacs avec magit
Dans emacs :
Voilà en quelques minutes un environnement de développement pour arduino opérationnel sur Emacs sans passer par l'usine à gaz de vscode