mercredi 7 juin 2023

Comment programmer un drone en C++

Le première idée qui me vient c'est une question ArduPilot ou PX4 ?

ChatGTP:

ArduPilot est une plate-forme de pilotage automatique open-source qui prend en charge une large gamme de drones, y compris les multirotors, les avions, les hélicoptères et les véhicules terrestres. Il est écrit en langage C++

PX4 est également une plate-forme de pilotage automatique open-source populaire utilisée pour les drones. Il est écrit en C++ et se concentre sur la modularité et la réutilisabilité du code. PX4 est connu pour sa stabilité et sa précision, et il est utilisé dans une variété de drones commerciaux et industriels. Il offre également des fonctionnalités avancées telles que la planification de trajectoires, la vision par ordinateur, etc.

Pour faire un choix :

  1. Type de drone : ArduPilot est souvent utilisé pour les drones DIY (Do It Yourself) et les projets amateurs, tandis que PX4 est plus couramment utilisé pour les drones commerciaux et industriels.
  2. Fonctionnalités requises : Évaluez les fonctionnalités spécifiques dont vous avez besoin pour votre projet et vérifiez si ArduPilot ou PX4 répondent à ces exigences.
  3. Communauté et documentation : Vérifiez la taille et la qualité de la communauté de développeurs et la documentation disponible pour chaque plate-forme. Une communauté active et une documentation détaillée peuvent être utiles lorsque vous avez des questions ou des problèmes.
  4. Expérience de programmation : Si vous avez déjà de l'expérience en programmation en langage C++, vous pourriez trouver plus facile de travailler avec l'une ou l'autre des plates-formes.

Voilà ...

Maintenant voici tous les véhicules que l'on peut programmer avec PX4 :

PX4 - airframes reference.html

C'est impressionnant...

Les capteurs :

Le système nécessite au minimum un gyroscope, un accéléromètre, un magnétomètre (boussole) et un baromètre. Un GPS ou un autre système de positionnement est nécessaire pour activer tous les modes automatiques et certains modes assistés. Les véhicules à voilure fixe et VTOL doivent également inclure un capteur de vitesse (très fortement recommandé).

Le Hardware

PX4 est designé pour s'exécuter sur Pixhawk Series.  

Sortie: Moteurs, Servos contrôles, Actuators ...

QGroundControl

Pour flasher le PX4 runs on Windows, Android, MacOS ou Linux.

https://docs.qgroundcontrol.com/master/en/getting_started/download_and_install.html

Je me lance j'installe, c'est complexe avec plein de Drivers.ArduPilot Ports

Simulation

Que peut-on simuler ?

https://docs.px4.io/main/en/simulation/

Les simulateurs permettent au code de vol PX4 de contrôler un véhicule modélisé par ordinateur dans un "monde" simulé. Vous pouvez interagir avec ce véhicule comme vous le feriez avec un vrai véhicule, en utilisant QGroundControl, une API externe ou une radiocommande/manette de jeu.

Perso je me laisserais tenté par : 

AirSim construit le moteur Unreal, je me souviens de Unreal Tournament quel pied ce jeux, ah les moteurs 3D... 

Gazebo : windows not supported.

Je sais pas vous mais moi ce schéma me fait tripper. Je verrais bien un simulateur AirSim derrière tout ça :

https://github.com/Microsoft/AirSim/releases

https://microsoft.github.io/AirSim/px4_setup/

On s'approche











vendredi 2 juin 2023

C++ avec Visual Studio 2019

Alors ce matin, je reprends le développement en C++ pour voir ce que l'on peut faire avec Visual Studio 2019... en C++. Quel sont les Templates les outils de test qui sont proposés par Visual Studio C++.

Visual Studio 2019 - Instanciation d'un projet Windows Desktop C++
Visual Studio 2019 - Instanciation d'un projet Windows Desktop C++

Après avoir fait pas mal de chose avec Arduino et avoir fait un tour complet des technologies Microsoft UWP, Balzor, WPF, MAUI ... je souhaite retourner faire un tour du côté de C++ mais à nouveau je retombe sur la difficulté de ce projet Template C++ instancié par Visual Studio 2019 et après ... et après on se sens tout nu.

Même Git est perdu avec tout ces fichiers temporaire décidément le développement d'application Desktop avec C++ ce n'est pas une sinécure. Je souhaite absolument ne pas installer les MFC ...

Je trouve une page pour développer une fenêtre :

Microsoft Learn - Créer une fenêtre - Win32 apps

Plus généralement :

Microsoft Learn - Créer des applications Windows de bureau à l’aide de l’API Win32

Je trouve également

Microsoft - Win2d

Je cherche un peu dans mes archives et finalement, je trouve ce projet MFCPlusNiveauSup  :

Visual Studio C++ - MFC - Application à la façon "MS Office"
Visual Studio C++ - MFC - Application à la façon "MS Office"

Je ne vous raconte pas le bouzin, le code tout à la main pas un designer graphiques si je veux vraiment faire du C++ je vais me rabattre sur :

GitHub - mabyre/Console-CPlusPlus-StarterKit
 For developers to work in C++ and C this is the best trace tool ever

Je crois que je vais tout fermer et aller à la plage...

Mais sinon il y a peut être un truc bien Ici  avec une machine virtuelle installée avec un environnement de développement.

Alors sinon, ce matin je reprends cette problématique de "comment développer en C++" et je décide de mettre à jour mon Visual Studio 2019 avec les features MFC et me voilà avec bien plus de possibilités :

Visual Studio 2019 Ajout des features MFC
Visual Studio 2019 Ajout des features MFC

J'ai un tas de choix à effectuer :

  • Type d'applications : on se rappelle MDI (Multiple Document Interface) choix de l'interface avec plutôt des boites de dialogues, un seul document, plusieurs documents
  • Propriétés du modèle de document : le type de document traité par l'application
  • Propriété de l'interface utilisateur : propriété des menus à rubans, des barres d'outils
  • Fonctionnalités avancées : on trouve par exemple Sockets Windows, Aperçu avant impression.
  • Classe générées : possibilité de modifier le nom des classes autre que CMFCApplication1App

On trouve par exemple la possibilité de choisir le style du projet :

Donc plus de doute, pour développer en C++ pas d'autres possibilités que les MFC ... Mais c'est un peu vieillot tout ça "Office 2007" ne date pas d'hier.

Du coup je vous propose de découvrir Qt/C++

Mais bon, allons un peu plus loin en instanciant quelques Templates, je choisie l'utilisation des MFC dans une bibliothèque statique et le thème Windows Native/Default :

Visual Studio 2019 - Application Desktop en C++
Visual Studio 2019 - Application Desktop en C++

C'est joli mais on remarque déjà un problème d'Encodage UTF8 ...

Parce que je suis joueur j'instancie une deuxième application avec un autre thème :

Visual Studio 2019 - Application Desktop en C++
Visual Studio 2019 - Application Desktop en C++

C'est bien vieux tout cela et je ne suis par sûr qu'il faille aller plus loin. C'est clair, le développement d'application modernes ne passe désormais plus que part .NET. Sinon on aurait au moins un concepteur graphique pour les pages .CPP alors que l'on en a un pour les Boites de Dialogues c'est curieux non ?

J'ai une petite technique à vous donner ici lorsque je me trouve face à tous ces choix pour les Template je fais des choix et j'instancie ces projets son le même ici en l’occurrence MFCApplication1 et je les compare. 

Voici deux choix MFC dans une lib statique et MFC dans une DLL partagée voici la différence :

MFC dans une librairies statique ou dans une librairie partagée
MFC dans une librairies statique ou dans une librairie partagée

On vient de voir très rapidement comment aujourd'hui développer une application Desktop en C++ avec Visual Studio 2019.

Si vous avez du code en C++ à faire tourner en mode Console, je vous conseille :

GitHub - mabyre/Console-CPlusPlus-StarterKit

Ou à la rigueur avec une Interface Graphique un peu plus "user friendly" :

GitHub - Mabyre/MFC-CplusPlus-StarterKit

Voilà de bons outils pour travailler votre C++.

Have fun!












mardi 28 juin 2022

Framework de Test Unitaire en C++

Comment écrire des Tests Unitaires en C++, une fois encore il y a peut-être Visual Studio et le reste du monde sous Visual Studio, il vous suffit d’instancier un projet de Test Unitaire, dit natif.

Alors dans la doc, on nous parle de :

  • Framework de tests unitaires Microsoft pour C++
  • Google Test
  • Boost.Test
  • CTest

Si j'instancie un nouveau projet avec mon Visual Studio 2019 :

Tests Unitaires avec Visual Studio C++
Tests Unitaires avec Visual Studio C++

Plus de littérature à lire Ici :

MSDN - Ecrire des tests unitaires pour C/C++ dans Visual Studio

Google Test ce n'est pas banale, j'ai déjà entendu ce terme.

jeudi 7 avril 2022

Programmer un micro-contrôleur ATtiny avec VSCode et PlatformIO

Programmation du processeur ATtiny3226

Connecteur ICSP

Repérer la PIN 1 du connecteur sur le PCB reliée à la résistance R114 (cf. schéma en bas à droite) et la PIN 1 sur le connecteur ICSP de l’Atmel-ICE :




AVR cores are maintained by SpenceKonde mega Tiny Core is for ATtiny 3226

https://github.com/SpenceKonde/megaTinyCore


Programming the new ATtiny from Arduino using UPDI [Beginner Tutorial]

https://www.youtube.com/watch?v=AL9vK_xMt4E

Programmateur Arduino – Micro

J’ai une carte Arduino micro, essayons d’en faire un programmateur UPDI pour ATTiny.

jtag2updi sketch : clone or download to upload sketch jtap2updi.ino into programmator board :

https://github.com/SpenceKonde/jtag2updi

Dans la page ci-dessus, on trouvera un autre sketch en cliquant sur « More ... », c’est en fait la suite de SpenceKonde qui laisse à Dlloydev l’opportunité de maintenir et poursuivre le développement du projet jtag2updi. Attention en cliquant sur More… vous êtes dans le Wiki, il faut revenir au Code.

https://github.com/Dlloydev/jtag2updi

Uploaded scketch in programmator using Arduino-IDE

rename jtag2updi-master to jtag2updi


Choose type of card « micro »


Read from the card



Téléverser le scketch :


Ce scketch n’est pas adapté à la arduino board micro… Il compile si on choisit le type de carte nano ...

Tout en bas de la page :

compare HV UPDI see USE_HV_PROGRAMMING in sys.h

rien à faire avec une micro

To Be Continued...

Programmateur Atmel-ICE

Buring Arduino bootloader with Atmel-ICE results in avrdude throwing a "verification error"

https://stackoverflow.com/questions/65477291/burning-arduino-bootloader-with-atmel-ice-results-in-avrdude-throwing-a-verific

Unofficial list of 3rd party boards support urls · arduino/Arduino Wiki · GitHub

Availability since Q4 2021 :

https://github.com/SpenceKonde/megaTinyCore/blob/master/megaavr/extras/ATtiny_x26.md

En savoir plus sur la famille des ATtiny :

ATtiny microcontroller comparison chart - Wikipedia

https://github.com/SpenceKonde/megaTinyCore/blob/master/megaavr/extras/PlatformIO.md

https://github.com/platformio/platform-atmelavr/issues/268

https://forum.arduino.cc/t/resolved-avrdude-w-arduino-nano-every-cant-upload-any-code-to-arduino-ide/623464/6

Unable to burn bootloader with Atmel-ICE in Arduino IDE 1.8.13

https://github.com/arduino/Arduino/issues/11107

https://github.com/arduino/avrdude-build-script/releases/tag/6.3.0-arduino19

To Be Continued…

J'ai travaillé avec un ATmega sur carte Arduino, je souhaite affubler mon micro-contrôleur principal d'un ATtiny et maintenant que j'ai un projet complet avec ATmega que faire pour l'adapter à mon nouveau micro-contrôleur ATtiny ?

https://github.com/platformio/platform-atmelavr/issues/268

https://github.com/SpenceKonde/megaTinyCore

Buring Arduino bootloader with Atmel-ICE results in avrdude throwing a "verification error"

https://stackoverflow.com/questions/65477291/burning-arduino-bootloader-with-atmel-ice-results-in-avrdude-throwing-a-verific

Unofficial list of 3rd party boards support urls · arduino/Arduino Wiki · GitHub

Availability since Q4 2021

https://github.com/SpenceKonde/megaTinyCore/blob/master/megaavr/extras/ATtiny_x26.md

https://github.com/SpenceKonde/megaTinyCore/blob/master/megaavr/extras/PlatformIO.md

https://github.com/platformio/platform-atmelavr/issues/268

https://forum.arduino.cc/t/resolved-avrdude-w-arduino-nano-every-cant-upload-any-code-to-arduino-ide/623464/6


Unable to burn bootloader with Atmel-ICE in Arduino IDE 1.8.13

https://github.com/arduino/Arduino/issues/11107

https://github.com/arduino/avrdude-build-script/releases/tag/6.3.0-arduino19


C'est quoi la programmation UPDI ?

L'Atmel-ICE est un programmateur UPDI cela signifie que je peux le connecter à un connecteur ICSP pour programmer mon ATtiny en UPDI.

Making your own programmateur

https://create.arduino.cc/projecthub/john-bradnam/create-your-own-updi-programmer-1e55f1

Bitluni vidéo :

https://www.youtube.com/watch?v=AL9vK_xMt4E

Plus simple que la vidéo :

Getting started with the new ATtiny chips - Programming the Microchip's 0-series and 1-series ATtiny with the Arduino IDE - Electronics-Lab.com

C'est pas gagné, je me suis bien battu mais là ... je suis un peu au bout de ce que je sais faire mais j'y reviendrai car ce monde de l'Arduino est passionnant.

lundi 6 décembre 2021

Microcontroller debugging ou comment déboguer son micro-contrôleur ?

Voilà j'élargie un peu le sujet du débogage, j'étais braqué sur arduino et les interfaces de débogue ISP, SPI, JTAG, JTAGICE, debugWIRE mais en fait, je vais tenter de répondre à une question plus large ; comment déboguer mon microcontrôleur ? Quelque soit son type, sachant que la solution dépendra certainement du type (Harvard vs Princeton). Et je verrais bien ce que je peux utiliser avec Arduino ou autre.

Microcontrolleur ATmega 2560
Comment déboguer mon microcontrôleur Atmel AVR

Le débogue de microcontrôleurs est toujours une affaire de protocole entre l'IDE qui gère la chaîne de développement avec ses outils de compilation, de linkage et de débogue. Pour avoir une idée rapide de ce que peut-être un protocole de débogage, je vous propose de visiter rapidement la page : The debugWire protocol

Je dirais peut-être trop rapidement que debugWire est lié à l'AVR (structure du cœur du microcontrôleur). Ce que je ne souhaite pas c'est un protocole Liaison Série LS qui prenne la place du débogage à l'aide de TRACEs qui elles aussi passe par la LS car dans ce cas il est stipulé que vous devez retirer de votre code ce qui dialogue sur la LS.

Déboguer son microcontrôleur consiste à pouvoir le stopper dans un état stable où peut avoir accès aux mémoires et aux registres. On dit que l'on met un point d'arrêt à l'aide de l'IDE en face d'une ligne de code source et l'on peut alors visualiser le contenu des variables et des registres internes du microcontrôleur pour corriger une éventuelle erreur d'exécution.

BMP - General debugging methods
Article distrayant sur les différentes méthodes pour déboguer son microcontrôleur. On y apprend quelques abréviations fortes utiles :
ICE : In Circuit Emulator : il s'agit de remplacer la puce par une puce permettant d'accéder aux opérations internes du processeur (c'est cher).
ICD : In Circuit Debug : le chip propose en interne une partie et une liaison vers l'IDE permettant de le déboguer.

Le site vous présente d'autres techniques amusantes comme déboguer avec la Liaison Série, des Leds un LCD, pourquoi pas. Personnellement, sans système de déboguing je crois beaucoup dans les systèmes de TRACE.

Concernant les IDEs qui dialoguent "protocole de débogage" avec des microcontrôleurs, ce n'est pas difficile à priori, il n'y en a qu'un pour les "petits microcontrôleurs" et c'est microship :

MPLAB X IDE

Il vous faudra installer "en dessous" une chaîne de compilation qui correspond au microcontrôleur que vous souhaitez déboguer :

Toolchains for AVR (MCUs)

Attention cette page pourrait vous faire penser que vous ne pourrez déboguer que sur ARM-32bits mais il n'en est rien, il faut aller tout en bas de la page pour découvrir des Toolchain (cross-platform) pour d'autres plateformes : Windows, Linux mais également Darwin ou Mac OS X.

Et tout en bas de la page de la documentation : microship - onlinedocs

A expérimenter. 

Ce monde du débogue de microcontrôleur n'est pas "si ouvert" que cela finalement, mettre un point d'arrêt en face d'un ligne de code source et pouvoir s'y arrêter pour visualiser le contenu des variables de la mémoire et des registres de votre microcontrôleur ce n'est pas encore pour M. Jourdain.

Autres lectures :

github - ElTangas/jtag2updi
Micrologiciel à télécharger sur un ATmega MCU AVR qui lui permet de s'interfacer avec avrdude en utilisant le protocole jtagice Mk2 via une interface série. Ce mircologiciel fournit un pont pour programmer la nouvelle famille de MCU attiny817, qui utilisent l'interface UPDI :avrdude -> Interface série matérielle -> MCU programmeur (par exemple Mega328P) -> Série SW sur PD6 -> MCU cible (par exemple tiny817)


mercredi 17 novembre 2021

Arduino débogueur JTag Atmel-ICE et VSCode

Comment déboguer mon firmware téléversé dans une carte Bluno Mega à base de microcontroller ATmega à l'aide d'une sonde Atml-ICE sonde pour les AVR/ARM (SAM) ? 

Atmel a, un temps, "détourné" Visual Studio pour en faire Visual Micro (ou Atmel Studio) ... Le problème est que cette solution est abandonnée au profit de Microship et lorsque vous installez Atmel-Studio maintenant, vous êtes détourné vers la version payante Microship-Studio...

ARDUINO IDE FOR VISUAL STUDIO

Malheureusement, Ici :

vMicro Debugger Support Listing

Curieux qu'aujourd’hui la sonde Atmel-ICE ait un Port AVR ? Il servirait uniquement à téléverser un script par le Port ICSP de ma Bluno Mega ...


Sonde Atmel-ICE Port SAM(ARM) ou AVR

Côté Débogueur, je trouve avec VSCode l'extension suivante :


Malheureusement du côté documentation, je trouve :

vscode-arduino - debuggerUsbMapping.json

Alors que moi, je chercherais plutôt du côté de JTag !

Ce que je ne comprends pas encore, c'est que le micro-contrôleur ATMega possède bien les sorties (10 pins) de connexion au format JTag alors de l'autre côté, côté Débogueur il n'y a que Microship-Studio ...  

La seule solution que je vois actuellement est de passer par Microchip-Studio se serait le seul que je connaisse à pouvoir discuter JTAG (qui est un protocole de haut niveau) avec le module Arduino.

Le tuto, suivant dit que pour l'instant c'est impossible (pas de solution pour l'instant) ! 

ARDUINO sous VSCode : Utilisation du debugger de l'extension Arduino

ARDUINO sous VSCode : Utilisation du debugger de l'extension Arduino

Après avoir patiemment suivi ce tuto fort intéressant et fort bien fait, je n'ai pas OpenOCD d'installé avec ma Configuration de PlateformIO pour ATmega ... Ce tuto utilise des cartes Arduino à base de SAMD21.

Au cas ou vous en auriez envie ou besoin pour configurer votre plateforme, voici un zoom sur le fichier de configuration launch.json dont le débogueur à besoin pour trouver les outils correspondants au débogage :

VSCode - Debogue - launch.json

Le premier chemin est celui vers le Débogueur /tools/arm-none ... que je n'ai pas sur mon installation.

Vous avez trouvé la solution pour déboguer votre ATmega2560 avec VSCode et Atmel-ICE, partageons-la, envoyez-moi votre commentaire.

mercredi 10 mars 2021

Arduino problème avec le driver du port série de Windows 7

Quel le problème avec le driver série Arduino pour Windows ? Le Driver s'installe avec l'ensemble du logiciel Arduino mais cela ne fonctionne pas bien longtemps.

Vous êtes sans cesse en train de pluguer, déplugguer votre module Arduino et un moment donnée :

Problème port série Windows avec le module Arduino
Problème port série Windows avec le module Arduino

En plus ce n'est pas tout à fait le bon message, depuis il a évolué et j'ai le message suivant :


Alors la solution c'est de réinstaller le driver en désinstallant puis réinstallant tout le logiciel Arduino "correctement". Prendre soin de déplugguer pour que le port série soit "libre" pour désintaller proprement. Un fois résintallé le logiciel complet Arduino, le port est vierge et lors du prochain plugging de votre module Arduino. Windows répondra par un  :

Arduino le pilote de périphérique a été installé
Arduino le pilote de périphérique a été installé

Et vous pourrez continuer à jouer avec votre module Arduino mais ce n'est pas simple avec l'utilisation du port série et des logiciels de développement, il arrivera que le driver "plante" à nouveau et votre module ne sera plus reconnu par Windows !

Ceux qui galèrent :

Un autre Ici :


Ils galèrent mais ils arrivent toujours à faire quelque chose pour le Port_COM refonctionne...

La seule solution ?

Résinstaller le logiciel complet Arduino !!! Ça fonctionne mais c'est curieux non ? 

Attention : ne pas oublier de faire un petit redémarrage de Windows avant de replugguer votre module Arduino sinon il risque de ne pas prendre le bon driver..

Comment le logiciel peut-il se mettre à planter alors que ce n'est "que du soft". Et bien la réponse est dans la question.

Ce n'est pas tout à fait "que du soft", l'UART serial COM est sollicitée et l'on sait que sous Windows avant Windows 10 ce module est très perfectible. Il manque notamment une couche de virtualisation qui vous permettrait de connecté à une machine de cloud mais cela non plus ne fonctionne pas.

Mais j'ai peut-être une autre solution il vous faut savoir que le driver arduino se trouve dans :

\\Program Files (x86)\Arduino\drivers\arduino.inf

Ce qui peut vous permettre de le réinstaller en faisant :

Démarrer -> Périphériques et imprimantes :

Je vois mon module Arduino dans mon système windows

Où dans :

Menu Démarrer -> Panneau configuration -> Système -> Gestionnaire de périphérique 

Vous pouvez alors faire bouton droit mettre à jour et aller chercher le .inf ci-dessus cité. Mais en général si vous voyez votre module dans Windows, c'est que tout va bien ... Grrrrr !

Sinon vous pensez que tous ces caractères chinois ont quelques chose à voir avec ces plantages ...

Mauvaise gestion du port série ce communication avec le module Arduino
Mauvaise gestion du port série ce communication avec le module Arduino

Vous avez le site officiel arduino qui raconte en gros la même chose ...


Le problème c'est que quand votre module n'est pas reconnu "unknown device" vous ne pouvez pas le mettre à jour. Le message que j'ai eu en essayant de mettre à jour c'est :

"il n'existe pas de driver compatible avec windows 64 bits"

Autre dépannage

Si un driver "Unknown device" devait s'installer à la plage de "Arduino ..." n'hésitez pas à désinstaller le driver correspondant et à redémarrer votre machine lorsque vous enficherez votre module dans le port USB, windows devrait reprendre le bon driver ...

Franchement, c'est de très mauvaise augure. Comment peut-on imaginer de réaliser un développement de bonne qualité dans ces conditions... 

Les Athéniens s'atteignirent...

Mise à jour en novembre 2021

Je ne peux pas vous expliquer pourquoi mais depuis, je n'ai plus aucun problème de driver ! Le driver Arduino Bluno Mega est resté stable.

lundi 8 mars 2021

Arduino primordial links

Des liens importants vers les sites arduino ... des liens officiels mais aussi quelques pépites.

Arduino Lien primordiaux
Arduino Lien primordiaux

Sites de référence

https://www.arduino.cc
Site Officiel Open source Arduino

https://www.locoduino.org/
Qui signifie littéralement : "dingue de arduino"

Très bon site Arduino - très complet

Librairies de référence

Information sur les librairies de référence :

https://www.arduino.cc/en/reference/libraries

https://platformio.org/lib/show/5597/ArduinoTrace

Librairie de Traces

Je cherche une librairie Trace :

https://platformio.org/lib/search?query=trace

Arduino Trace dans Github bblanchon :

https://github.com/bblanchon/ArduinoTrace

Mémoire des cartes mères Arduino




Arduino Simulateurs

Si vous développez en C++ pour Arduino et que votre matériel est un peu complexe notamment si ce matériel n'est pas toujours disponible car trop encombrant ou difficile à mettre en oeuvre, vous allez vouloir vous tourner vers un simulateurs qui va vous permettre de "faire tourner" votre code sans avoir tout le bazar autour.

Alors est-ce possible que trouve t-on sur le marché ? Ma recherche Internet débute donc avec : "arduino simulateur" elle me conduit naturellement vers le site suivant :

https://leresteux.net/simulateur-arduino/

Qui nous explique pas à pas le simulateur 123D Circuits mais j'ai l'impression qu'il n'existe plus, même plus chez Autodesk library.io. Chez eux le simulateur de tout cela c'est TINKERCAD.

Vous devez vous enregistrer pour créer un compte d'utilisateur :

Autodesk Tinkercad

Dans le simulateur, si l'on écrit le bon code : 

/*
  Clignotement
  Allume la LED pendant 1 seconde,
  puis l'éteint pendant 1 seconde.

*/

// Numéro de la broche à laquelle est
// connectée la LED

int led = 13;

// le code dans cette fonction est exécuté une fois au début

void setup() {

  // indique que la broche de la LED une sortie :
  // on va modifier sa tension
  pinMode(led, OUTPUT);

}

// le code dans cette fonction est exécuté en boucle

void loop() {

  digitalWrite(led, HIGH);   // allumer la LED (tension 5V sur la broche)
  delay(1000);               // attendre 1000ms = 1s
  digitalWrite(led, LOW);    // éteindre la LED (tension 0V sur la broche)
  delay(1000);               // attendre à nouveau 1seconde

}

Vous verrez clignoter la LED.

Pour poursuivre, je vous propose l'article suivant : 

windowsreport - Les 5 meilleurs simulateurs Arduino pour PC

1 - Autodesk Eagle
Free download, toujours cette même accroche cela signifie que l'on vous donne le droit de télécharger mais après, vous ne pourrez pas faire grand chose que d'acheter une licence.

2 - Proteus
Idem, free donwload mais on vous explique ce qui est limité sur la version "free" là encore on n'ira pas loin vous ne pouvez par exemple pas sauvegarder votre travail.

3 - Virtronics 
Je trouve pas pro ... pas cher non plus 19.99 $ ???

4 - PSpice
Pour le pris il vous faudra contacter le service client, moi je trouve toujours cela gênant on a l'impression d'être un marchant de tapis le commercial en face essaye de vous vendre 100 000 exemplaire alors que vous n'avez besoin que d'un seul !

5 - Fritzing
Initiative Open source deux version à 8 € et une autre à 25 € ... ??? 
Un petit tuto rapide ça à l'air ludique graphique fun sans plus accessible que les autres solutions.

Conclusion sur simulateur Arduino

Oui, il faut investir en temps, en argent, je pense même qu'il faut démarrer un projet Arduino par la simulation plutôt qu'un kit hardware.

Avec mon kit hardware, j'ai actuellement de sérieux problème avec le port COM, je dois vous avouer que je suis avec une machine Windows 7 mais la gestion du port COM avec Arduino est un peu tuchy...

D'où l'utilité d'un simulateur.

Simulateur Arduino en 2022

Je retourne chez TinkerCad, et je constate l'évolution. Il n'est plus question d'écrire du code :

Dans votre compte : Cricuits -> Try Circuits.

Je me retrouve avec une plaque arduino :

Compte chez Autodesk Tinkercad

Je choisi de simuler un circuit je choisie Arduino -> Editer

Tinkercad édition du circuit Arduino

Je clique sur code :

Tinkercad édition du code du circuit Arduino
Tinkercad édition du code du circuit Arduino

C'est énorme, je vois du code sous forme de blocs dans un graphique on parlait de no-code hier c'est bien du no-code.

Il y a même un bouton  "Démarrer la simulation" :

Tinkercad édition démarrage de la simulation sur Arduino
Tinkercad édition démarrage de la simulation sur Arduino

1 - On peut voir l'alimenation par le port USB se brancher à la carte Arduino

2 - La fameuse Led clignote

Dans la liste des kits de démarrage, je vois tout un tas de plaque Arduino.

Tinkercad éléments de simulation Arduino
Tinkercad éléments de simulation Arduino

On trouve tout un tas d'éléments pour réaliser des simulateurs Arduino de quoi faire de petite réalisations électronique avec microcontrôleur.

Ce que je trouve étonnant, c'est la présence parmi les microcontrôleurs d'un ATTiny comme choix de composants, on peut le poser sur une platine d'essai. Mais la programmation de l'ATTiny est pour le moins ardue.

Have fun!


mercredi 3 mars 2021

Connaissez-vous Arduino IDE for Visual Studio (Visual Micro) ?

Je suis à la recherche du meilleur IDE pour Arduino et je trouve : Arduino IDE for Visual Studio (Visual Micro). Un outil d'édition de construction de déploiement et de débogage pour Arduino entièrement compatible cross plateforme et gestionnaire de Librairie. 

Plusieurs moniteurs série. Projets de code partagé, bibliothèques personnalisées, tests unitaires, GIT, CLI. Matériel GDB et débogage WiFi.

Arduino IDE for Visual Studio (Visual Micro)

Franchement, moi j'ai installé l'extension directement depuis Visual Studio Community 2019 :

Gestion des extensions dans Visual Studio Community 2019
Gestion des extensions dans Visual Studio Community 2019

Et bien c'est la même chose ! 

Donc autant installer l'extension depuis Visual Studio dans le menu Extensions -> Gérer les extensions.

Une fois l'extension installée, il s'agit de créer un bout de code et de téléverser dans la carte Arduino. 

Pour cela, j'ai trouvé l'option pour créer directement le Blink project un classique d'Arduino qui consiste à faire clignoter la LED de la Carte :

Nenu Fichier -> Nouveau projet, dans la liste des Templates de Projet :

Visual Studio s'ouvre avec le code et vous accédez au menu vMicro (comme Visual Micro) avec la gestion des cartes, suivant le kit Arduino que vous avez commandé :

Visual Studio Community avec l'extension ArduinoIDE
Visual Studio Community avec l'extension ArduinoIDE 

Vous vous retrouvez devant l'environnement nécessaire et suffisant pour développer en C++ pour Arduino.

Visual Studio Community avec l'extension ArduinoIDE
Visual Studio Community avec l'extension ArduinoIDE 

A vous de jouer, personnellement, je vais installer Visual Studio Code avec les même extension.

Have fun!


lundi 1 mars 2021

Développer en C++ avec Arduino Software (IDE)

Deux ou trois choses à savoir pour bien démarrer avec l'IDE d'Arduino pour Arduino. Pour savoir par exemple lorsque vous instanciez un projet où se trouvent les fichiers comment sont-ils organisés.

Arduino préférences

Le meilleur moyen de savoir comment Arduino IDE fonctionne c'est d'aller dans ses préférences :

Arduino IDE - Préférences

Vous obtenez ainsi l'emplacement du carnet de croquis et plus de préférences encore dans le fichier suivant : Arduino 15\preference.txt

Arduino IDE - Arborescence des répertoires

On voit également un fichier de Log :


\\AppData\Local\arduino15\logs\application.log

A priori l'application IDE Arduino vient écrire dans ce fichier chaque fois qu'elle s'exécute.

D'autres fichiers json library_index.json ce sont les librairies.

Un autre répertoire important, c'est le répertoire d'installation de Arduino, on y trouve tous les exemples et toutes les librairies pour travailler et l'exécutable :

\\Program Files (x86)\Arduino

Vous souhaitez savoir si votre board est correctement connectée ,c'est la commande : Récupérer les informations de la carte :

Arduino IDE - Outils

Un autre article très important c'est le Moniteur série qui vous permet de visualiser des traces émises par votre programme.

Dans tous les environnements Arduino vous retrouvez les exemples :

Arduino IDE - Exemples

Voilà les commandes de base les reste est dans la doc ;-)

Développer en C++ avec Arduino Create Agent

Comment démarrer un développement en langage C++ avec Arduino ? Le plus simple c'est de se retrouver sur la site Arduino et de commencer par le Tutorials dans :

arduino.cc

Arduino Tutoriels

Dans DOCUMENTATION -> TUTORIALS, je clique sur GETTING STARTED



Pour mémoire, voilà l'ensemble des Tutos Arduino, j'accède à la première série de Tutos en cliquant sur Getting Started.

Getting Started with Arduino products

Il vous faut vous enregistrer, créez votre compte d'utilisation chez arduino mais à ce prix, vous pouvez utiliser l'éditeur Web Editor... Code online :


Vous reconnaissez les deux fonctions de base de la plateforme Ardunio setup() et loop().

Pour pouvoir téléverser dans une carte arduino, il faut avoir installer sur votre post : 


Installer sur votre post de quoi communiquer avec le Web Editor

Par la suite dans le Web Editor pour Arduino, vous devrez choisir la carte que vous avez connectée par le port USB à votre ordinateur.


Au passage, un driver demande à s'installer sur votre machine ...


Puis un deuxième liée toujours au contrôle de liaison USB entre le Web Editor et votre carte Arduino ...



Et puis un troisième soft désire s'installer...


Et enfin cela y est, votre carte est connecté au Web Editor Arduino


Vous vous retrouvez avec les boutons classiques Verify et Upload pour téléverser votre code HEXA dans votre carte Arduino... Vous pouvez alors récupérer les exemples au moment d'une modification dans l'éditeur Web Editor.

CQFD !