Modifications

Aller à : navigation, rechercher

Atelier logiciel

21 479 octets ajoutés, 20 avril
Edition des étiquettes
|ingrédients=logiciel,
|url=[http://fablabo.net/wiki/SCAO SCAO]
}}
==Définition==
L'atelier logiciel est l'un des [http://fablabo.net/wiki/SCAO#Les_ateliers_de_prototypage ateliers de prototypage] du SCAO.
*un '''[https://iiyama.com/fr_fr/produits/prolite-e1902s-1/ écran iiyama 19 pouces]'''
*un '''[http://www.sony-optiarc.us/endoflifeproducts/dvddrives/desktop/ad7170asandawg170as.html graveur Nec]'''
*deux quatre disques durs :
**un '''[http://www.ldlc.com/fiche/PB00084982.html disque Western digital véloce de 150 GO]''' (/dev/sda)
**un '''[https://www.wdc.com/fr-fr/products/internal-storage/wd-black-mobile.html disque Western digital de 500 GO]''' dédié initialement aux sauvegardes ATA WDC WD5000AACS-0 (/dev/sdb)
**un disque complémentaire Western digital ATA Samsung SSD 860 de 500 GO ATA WDC WD5000AAKS-2 GiO (/dev/sdc)**un disque externe WD Elements 25A2 de 1 TO dédié aux sauvegardes.
===Compaq===
Deux fournisseurs sont identifiés :
* [https://www.util-pocket.com/ Util'Pocket]
* [https://be.eurocircuits.com Eurocircuits]. Pour matérialiser les trous dimensionner la largeur de la piste en fonction du courant qui la traverse, il convient de se référer au document [http://sebastien.bernard.free.fr/cours-tp-td-exo/Conception-des-circuits-imprimes.pdf conception des circuits imprimés]. Pour la découpe laser d'une [https://laserhub.com/fr/materiaux/cuivre/ plaque de cuivre]. ===Pull-up and Pull-down resistors===[https://www.electronics-tutorials.ws/logic/pull-up-resistor.html Pull-up and Pull-down resistors] are used to correctly bias the inputs of digital gates to stop them from floating about randomly when there is no input condition.===Serveur de stockage en réseau (NAS)===En référence à Planète Linux n°118, l'article intitulé "Installation d'un serveur de fichier".Tout d'abord voici la définition de Wikipédia : "''Un [https://fr.wikipedia.org/wiki/Serveur_de_stockage_en_r%C3%A9seau serveur de stockage en réseau], également appelé stockage en réseau NAS, boîtier de stockage en réseau ou plus simplement NAS (de l'anglais Network Attached Storage), est un serveur de fichiers autonome, relié à un réseau, dont la principale fonction est le stockage de données en un volume centralisé pour des clients réseau hétérogènes.'' " Ce NAS est installé au sein d'un réseau local constitué à partir de la freebox, il est constitué :* d'un ordinateur simplifié* du logiciel XigmaNAS. === Oscilloscope ===L'achat est effectué sur le site en ligne Farnell pour le [https://fr.farnell.com/pico-technology/picoscope-2204a/oscilloscope-pc-10mhz-avec-awg/dp/2365425?ost=2365425 Picoscope 2204A]. La [http://www.farnell.com/datasheets/3162087.pdf datasheet du Picoscope 2204A]. [[fichier:Picoscope.png |thumb|center|upright=2 | Picoscope]] ==Installation logicielle==Liste des installation et vérifications :* [https://fablabo.net/wiki/Atelier_logiciel#Cr.C3.A9er_une_cl.C3.A9_USB_bootable_Ubuntu Créer une clé USB pour installer Ubuntu]* booter sur la clé et les découpes installer Ubuntu* [https://fablabo.net/wiki/Atelier_logiciel#Git_et_Git-hub Git]*[https://fablabo.net/wiki/Atelier_logiciel#Libraries Libraries]* choisir un empilage[https://fablabo.net/wiki/Atelier_logiciel#Minicom Minicom]*[https://fablabo.net/wiki/Atelier_logiciel#Les_logiciels_applicatifs Librecad]* detected Miling[https://fablabo.net/wiki/Atelier_logiciel#Les_logiciels_applicatifs Openscad]*[https://fablabo.net/wiki/Atelier_logiciel#Les_logiciels_applicatifs Kicad]* Edge cuts[https://fablabo.net/wiki/Atelier_logiciel#Les_logiciels_applicatifs Inkscape]*[https://fablabo.net/wiki/Atelier_logiciel#Gestion_de_versions SCAO]* [https://fablabo.net/wiki/Atelier_logiciel#Installation_de_l.27.C3.A9diteur_Atom Atom]* [https://fablabo.net/wiki/Atelier_logiciel#Environnement_de_developpement Arduino IDE]* cliquer sur chaque objet[https://fablabo.net/wiki/Atelier_logiciel#Environnement_de_developpement Arduino cli]*Créer les [https://fablabo.net/wiki/Atelier_logiciel#Cr.C3.A9er_un_alias alias]* appliquerVérifier les accès à fablabo et [https://fablabo.net/wiki/Atelier_logiciel#Personal_access_tokens_.28PAT.29 github]. ==Personal access tokens (PAT)==En référence à la version anglaise de Wikipédia, "''In computer systems, an [https://en.wikipedia.org/wiki/Access_token access token] contains the security credentials for a login session and identifies the user, the user's groups, the user's privileges, and, in some cases, a particular application. Typically one may be asked to enter the access token (e.g. 40 random characters) rather than the usual password (it therefore should be kept secret just like a password).''" Pour obtenir un PAT, il faut suivre le lien suivant [https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ token-authentication-requirements-for-git-operations]. L'accès à Github s'effectue comme par le passé avec l'identifiant classique (Nom utilisateur + mot de passe). Par contre, il faut prévoir un PAT nécessaire à l'exécution de certaine commande git comme :*<code>'''git push origin master'''</code>Mon PAT (Token for AIREL) est mémorisé dans un fichier personnel stocké sur une clé USB. Si nécessaire, on peut effacer toutes les informations d'identification mises en cache dans git à l'aide de la commande suivante :* modifier panier<code>'''git config --global --unset credential.helper'''</code>
==Synchronisation==
* la gestion de version avec Git et Git-hub pour les fichiers du sous répertoire /home/leruste/SCAO
* la communication à partir d'un réseau local pour les fichiers personnels des autres sous-répertoires de /home/leruste.
==Développement logiciel==
===Environnement de developpement===
L'[https://fr.wikipedia.org/wiki/Environnement_de_d%C3%A9veloppement environnement de développement] '''« intégré »''' (abrégé EDI en français ou [https://en.wikipedia.org/wiki/Integrated_development_environment IDE] en anglais, pour '''integrated development environment'''). Cet [https://en.wikipedia.org/wiki/Integrated_development_environment IDE] peut être réalisé à partir soit de :
* l'[https://blog.arduino.cc/?ie=UTF-8&oe=UTF-8&s=IDE&domains=&sitesearch= arduino IDE]
* l'[https://blog.arduino.cc/2020/03/13/arduino-cli-an-introduction/ arduino CLI] qui offre la possibilité d'utiliser l'éditeur de son choix, [https://atom.io/ atom] en particulier. Pour l'installer, choisir l'option '''"use the install script"''' du tutoriel [https://arduino.github.io/arduino-cli/latest/installation/ installation], voir ensuite :
** [https://arduino.github.io/arduino-cli/ la documentation]
** [https://github.com/arduino/arduino-cli github]
** [https://arduino.github.io/arduino-cli/getting-started/ getting started].
* [https://fr.wikipedia.org/wiki/Eclipse_(projet) Eclipse].
 
===Les plateformes===
Dans le contexte de cet atelier logiciel, les [https://fr.wikipedia.org/wiki/Plate-forme_(informatique) plateformes] sont des [https://fr.wikipedia.org/wiki/Environnement_de_d%C3%A9veloppement environnements de développement] '''« intégré »''' (abrégé EDI en français ou [https://en.wikipedia.org/wiki/Integrated_development_environment IDE] en anglais, pour '''integrated development environment''').
 
Une plateforme est généralement constituée d'un ordinateur et d'un [https://fr.wikipedia.org/wiki/Microcontr%C3%B4leur microcontrôleur] raccordé par un câble USB.
 
Le [https://fr.wikipedia.org/wiki/D%C3%A9veloppement_de_logiciel développement du logiciel] dédié au [https://fr.wikipedia.org/wiki/Microcontr%C3%B4leur microcontrôleur] se réalise selon les phases suivantes :
* au sein de l'[https://en.wikipedia.org/wiki/Integrated_development_environment IDE] installé sur l'ordinateur :
** saisie du programme
** vérification
** téléversement de l'ordinateur vers le [https://fr.wikipedia.org/wiki/Microcontr%C3%B4leur microcontrôleur]
* au sein du [https://fr.wikipedia.org/wiki/Microcontr%C3%B4leur microcontrôleur] exécution du programme.
Les phases décrites ci-dessus peuvent être exécutées autant de fois que nécessaire jusqu'à obtention du fonctionnement souhaité.
 
A partir du moment où le câble USB est déconnecté, le [https://fr.wikipedia.org/wiki/Microcontr%C3%B4leur microcontrôleur], si son alimentation est autonome (batterie), va exécuter en permanence le dernier programme téléversé.
 
====Plateformes Arduino et Teensy====
Les deux plateformes sont constituées à partir du même ordinateur complété, soit d'un [https://fr.wikipedia.org/wiki/Microcontr%C3%B4leur microcontrôleur] de la famille [https://fr.wikipedia.org/wiki/Arduino Arduino], soit d'un [https://fr.wikipedia.org/wiki/Microcontr%C3%B4leur microcontrôleur] [https://www.pjrc.com/teensy/ Teensy]. Les deux plateformes utilisent le même [https://en.wikipedia.org/wiki/Integrated_development_environment IDE].
L'[https://en.wikipedia.org/wiki/Integrated_development_environment IDE] est :
* soit l'Arduino web editor (disponible uniquement pour Linux 64 bits en date du 14/03/2018)
* soit l'Arduino IDE (Linux '''32 bits''' et 64 bits)
les deux sont accessibles par ce [https://www.arduino.cc/en/Main/Software lien].
 
La [http://playground.arduino.cc/uploads/Main/arduino_notebook_v1-1.pdf documentation].
 
Dans le cas du [https://www.pjrc.com/teensy/ Teensy], il est complété de [https://en.m.wikipedia.org/wiki/Library_(computing) librairies spécifiques].
 
Prenons l'exemple de l'installation de l'IDE arduino-1.8.8
*sur le site arduino, télécharger l’archive arduino-1.8.8-linux64.tar.xz
*la décompresser puis installer avec les commandes :
**tar Jxvf arduino-1.8.8-linux64.tar.xz
**./arduino-1.8.8-linux-setup.sh $USER
**reboot
**lancement arduino.
 
====Plateforme Microchip====
Elle est traitée en un projet séparé accessible par le lien [http://fablabo.net/wiki/PIC PIC].
 
===Organisation des fichiers Arduino===
En référence à l'article [http://www.didel.com/coursera/GererFichiers.pdf Gérer vos fichiers Arduino] et selon l'exemple du fichier volumineux [https://github.com/AIREL46/SCAO/blob/master/Arduino/e-p-wifi/e-p-wifi.ino e-p-wifi.ino], une organisation en plusieurs fichiers devient nécessaire. Le principe est de mettre les définitions, fonctions, modules dans des fichiers [https://en.wikipedia.org/wiki/Include_directive "header"] séparés, par exemple '''a.h''', et de l'appeler avec l'ordre :
 
<code>#include a.h</code>.
 
Le programme Arduino peuta être divisé en 5 paragraphes :
# Introduction
# Initiation des paramètres
# Fonctions spécifiques
# Fonction setup
# Fonction loop
Supposons que nous voulions organiser notre fichier .ino en 2 fichiers séparés, la procédure est la suivante :
* créer dans le même répertoire un nouveau fichier, par exemple a.h
* concernant les paragraphes 1, 2 et 3 :
** dans le fichier .ino sélectionner puis couper les lignes que vous souhaitez transférer dans le fichier a.h
** coller ces lignes dans le fichier a.h
** répéter l'opération pour chaque paragraphe
* au paragraphe 2 le déclarer par <code>#include a.h</code>
* concernant le paragraphe 4 setup :
** procéder au transfert des lignes de code comme précédemment (couper puis coller)
** dans le fichier .ino appeler le fonction <code>setup_a ();</code>
** dans le fichier a.h créer la fonction void setup_a () {lignes de code précédemment copier}
* concernant le paragraphe 5 loop limiter au strict minimum le nombre de lignes de code en appelant les fonctions spécifiques qui se trouvent au paragraphe 3.
===Arduino forum===
Avant d'utiliser le forum, il est prudent de prendre connaissance du [https://forum.arduino.cc/index.php?topic=148850.0 How to use Arduino forum].
 
Ce document comporte 16 rubriques, les 5 premières sont essentielles, elles sont rappeler ci-dessous :
* 1. Register and '''sign in''' (en français connection, tandis que '''sign out''' veut dire déconnexion)
* 2. Choose an appropriate forum section - '''Attention''' cette étape est '''indispensable''' pour avoir accès au '''New Topic button''' [5] qui permet l'édition d'une requête.
* 3. Choose the correct language
* 4. Do some research before posting
* 5. Click on the New Topic button
* 8. You can add attachments (images should be no more than a couple of hundred K bytes
* 9. You can insert images.
 
===Gestion de versions ===
Un [https://fr.wikipedia.org/wiki/Logiciel_de_gestion_de_versions logiciel de gestion de versions] est un logiciel qui permet de stocker un ensemble de fichiers en conservant la chronologie de toutes les modifications qui ont été effectuées dessus. Il permet notamment de retrouver les différentes versions d'un lot de fichiers connexes.
====Git et Git-hub====
Il en existe de nombreux, [https://fr.wikipedia.org/wiki/Git Git] est le logiciel créé par Linus Torvald, auteur du Kernel Linux. Il utilise des commandes comme commit, branches, merge... L'hébergement des fichiers sources s'effectue sur [https://fr.wikipedia.org/wiki/GitHub GitHub], ce qui permet de collaborer facilement sur des projets qui utilisent des logiciels libres.
 
La formation recommandée est [https://openclassrooms.com/courses/gerer-son-code-avec-git-et-github Gérer son code avec git et github sur Openclassroom].
 
Pour installer git taper dans un terminal :
* <code>sudo apt install git</code>
 
Pour créer une copie du projet SCAO en provenance du site github, taper dans un terminal la commande :
* <code>git clone https://github.com/AIREL46/SCAO</code>.
 
====Git-lfs====
Un message de warning est affiché :
 
'''File Plan-de-management/plan de management.odt is 53.71 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB'''
 
La préconisation est :
 
'''You may want to try Git Large File Storage - https://git-lfs.github.com.'''
 
Après l'installation du paquet, lors de l'exécution de la commande :
 
*sudo git lfs install
 
une erreur survient :
 
/usr/local/bin/git-lfs: 1: /usr/local/bin/git-lfs: Syntax error: '''Unterminated quoted string'''
 
Malgré l'erreur, je teste :
*sudo git add Plan-de-management/plan-de-management.odt
*sudo git commit "Ajouter fichier > 50MO plan-de-management.odt"
*sudo git push origin master
 
Dans Github, je retouve le fichier avec les commentaires :
<big>View raw</big>
(Sorry about that, but we can’t show files that are this big right now.)
 
Je clique sur View raw, la fenêtre suivante s'ouvre :
[[fichier:Git-lfs-sup-50MO.png |thumb|center|upright=2 | Ouvrir en lecture seule un fichier de plus de 50MO]]
Si :
*je choisis ''Ouvrir avec LibreOffice Writer'', le fichier est visualisé.
*je choisis ''Enregistrer le fichier'', le fichier est téléchargé et disponible dans le répertoire '''Téléchargements'''.
 
Je fais le même test avec le fichier plan de management_old.doc qui n'a pas fait l'objet d'un nouveau "push", le résultat est le même.
Conclusion : les fichiers de plus de 50 MO sont mémorisés, par contre, ils sont visualisables qu'après un téléchargement. Donc, le paquet git-lfs n'est pas opérationnel.
 
Je laisse tomber git-lfs et j'en profite pour faire un peu de nettoyage.
 
Je supprime des fichiers inutiles, le premier :
 
Plan-de-management/plan de management.odt avec la commande :
*sudo git rm Plan-de-management/plan de management.odt
ça ne marche pas parce que Ubuntu n'aime pas les espaces, je contourne la difficulté avec :
*sudo git rm Plan-de-management/'''<big>"</big>'''plan de management.odt'''<big>"</big>'''
Les suivants :
*Plan-de-management/plan de management_old.doc
*BOINC/BOINC.odt.
 
====Synchronisation des 2 ordinateurs====
Pour les 2 ordinateurs, le fixe et le portable, l'objet est d'assurer la conformité des contenus de leur répertoire SCAO respectif selon la règle de [https://fr.wikipedia.org/wiki/Synchronisation_de_fichiers synchronisation de fichiers].
 
Une fois par semaine, sur l''''ordinateur fixe''', dans le répertoire SCAO :
* sudo git status
* En fonction du résultat, effectuer l'ajout des nouveaux fichiers et terminer par :
** sudo git commit -a, cette commande va ouvrir fichier SCAO/.git/COMMIT_EDITMSG, dans ce fichier indiquer la raison du commit
** ctrl x
** sauver l'espace modifié ? Oui
* sudo git push origin master
* sur l''''ordinateur portable''' :
** sudo git pull origin master.
 
===Compacter des fichiers avec la commande zip===
Pour regrouper le contenu d'un répertoire en vue de l'envoyer à un correspondant.
 
'''zip - package and compress (archive) files'''
 
Ouvrir un terminal et taper la commande (exemple) :
* zip quiet-cook.zip tp_quiet-cook
===Libraries===
En bon français, il faut dire [https://fr.wikipedia.org/wiki/Biblioth%C3%A8que_logicielle bibliothèque logicielle].
 
En anglais [https://en.wikipedia.org/wiki/Library_(computing) Library_(computing)].
 
Une bibliothèque logicielle est une collection de routines, qui peuvent être déjà compilées et prêtes à être utilisées par des programmes.
 
Pour éviter toute confusion linguistique, l'appellation utilisée par la suite sera celle issue de l'anglais : '''"library"'''.
 
Au fur et à mesure des besoins ces libraries, installées sur le disque dur de l'ordinateur, se multiplient.
 
Sur l'ordinateur fixe ASUS, ces libraries sont présentent dans les répertoires :
* /home/leruste/Téléchargements/teensy/avr/libraries
* /home/leruste/Téléchargements/arduino-1.6.9/libraries
* /root/Arduino/libraries.
====Installation des libraries====
La plupart des librairies se trouve sur le site github, un exemple :
 
la librarie [https://github.com/PaulStoffregen/Time '''Time''' publié par Paul Stoffregen].
 
Pour trouver une librarie sur le site github, il convient d'utiliser le [https://github.com moteur de recherche] à gauche du logo. En tapant "Chrono" on trouve :
 
[https://github.com/SofaPirate/Chrono Chrono publié par Sofian Audry and Thomas Ouellet Fredericks]
 
Pour installer ces libraries sur un ordinateur, dans notre exemple, sur l' '''ASUS''', [https://github.com Github] propose deux méthodes :
# le [https://fr.wikipedia.org/wiki/Clonage_(programmation) clonage]
# le [https://fr.wikipedia.org/wiki/Clonage_(programmation) téléchargement].
 
D'autre part, le répertoire privilégié par le compilateur de l'arduino IDE est :
 
'''/root/Arduino/libraries'''
 
Dans le cas du clonage et dans l'exemple de la library '''Chrono''', dans un terminal, tapez successivement :
* cd /root/Arduino/libraries
* Sudo git clone https://github.com/SofaPirate/Chrono
 
Dans le cas du téléchargement, sur le site Github, effectuer le téléchargement, sur l'ordinateur, il en résulte le fichier '''~Téléchargements/Chrono-master.zip''', 2 méthodes d'installation s'offrent à vous :
* Pour [https://www.arduino.cc/en/Guide/Libraries installer des nouvelles libraries sous l'Arduino IDE].
La copie d'écran ci-dessous donne l'exemple de la sélection du fichier '''Chrono-master.zip''' :
[[Fichier:librarie-download.png|vignette|centré|upright=2 | Sélection du fichier .zip]]
 
* Décompresser les fichiers puis les déplacer dans le répertoire /root/Arduino/libraries.
 
====Arduino Wrapper library====
J'ai rencontré pour la première fois cette terminologie de
[https://en.wikipedia.org/wiki/Wrapper_library "wrapper library"] en installant la librairie
[https://github.com/Overdrivr/Telemetry-arduino Telemetry Arduino].
 
===Pytelemetry Command Line Interface===
Le [https://github.com/Overdrivr/pytelemetrycli "Pytelemetry Command Line Interface"] est complémentaire de la fonction réalisée par [https://github.com/Overdrivr/Telemetry-arduino "Telemetry"].
 
Il permet, à partir de l'ordinateur, la réception des données envoyées par le microcontrôleur ainsi que leur visualisation.
Pour installer ce module, il faut disposer de :
* du langage de programmation [https://www.python.org/ Python] '''3.3''' + PyQt4 and numpy
* du [https://fr.wikipedia.org/wiki/Gestionnaire_de_paquets gestionnaire de paquets][https://pypi.org/project/pip/ pip] spécifique à [https://www.python.org/ Python].
* le paquet [https://pypi.org/project/pytelemetrycli/1.1.0/ Pytelemetry Command Line Interface]
Une installation de ce module a été entreprise, 2 problèmes ont été rencontrés :
* Ubuntu 16.04 LTS permet l'installation de python des versions '''2.7.x''' (2.7.12 sur l'ordinateur ASUS) mais pas au delà
* le [https://fr.wikipedia.org/wiki/Gestionnaire_de_paquets gestionnaire de paquets][https://pypi.org/project/pip/ pip] génère une erreur : cannot import name main.
 
'''Conclusion''' : ce module [https://github.com/Overdrivr/pytelemetrycli "Pytelemetry Command Line Interface"] semble avoir été développé pour le monde de Windows sans préoccupation de sa compatibilité au monde de Linux.
 
Néanmoins, cette expérience aura permis d'explorer le langage de programmation [https://www.python.org/ Python] qui semble être, en complément du langage BASH, un langage adapté pour développer des programmes dédiés au PC qui pourraient dialoguer avec le microcontrôleur.
==Les logiciels==
===DFINITY Foundation===
En référence à l'article de Planet Linux n°116 scanné ci-dessous :
[[Fichier:Dfinity.png|vignette|centré|upright=2 | Dfinity]]
The [https://dfinity.org/foundation DFINITY Foundation] is a not-for-profit organization based in Zurich, Switzerland, and oversees research centers in Palo Alto, San Francisco, and Zurich.
 
DFINITY was founded in 2016 by [https://www.linkedin.com/in/thedwilliams/ Dominic Williams].
 
DFINITY introduit la notion d'Internet computer dont il donne la définition suivante :
* The Internet Computer extends the functionality of the public Internet so that it can host [https://en.wikipedia.org/wiki/Front_end_and_back_end backend] software, transforming it into a global compute platform.
* En français : l’ordinateur Internet étend les fonctionnalités de l’Internet public afin qu’il puisse héberger des logiciels d’[https://fr.wikipedia.org/wiki/Backend arrière-plan], le transformant en une plate-forme informatique mondiale.
 
L'utilisation par les développeurs de l'Internet computer :
* Using the Internet Computer, developers can create websites, enterprise [https://en.wikipedia.org/wiki/Information_technology IT] systems and internet services by installing their code directly on the public Internet and dispense with server computers and commercial cloud services.
* À l’aide de l’ordinateur Internet, les développeurs peuvent créer des sites Web, des systèmes informatiques d’entreprise et des services Internet en installant leur code directement sur l’Internet public et se passer d’ordinateurs serveurs et de services infonuagiques commerciaux.
Un article intitulé ''"Le fabuleux projet d’un Internet Computer va-t-il voir le jour?"'' est publié par ICT journal est accessible par le lien :
[https://www.ictjournal.ch/news/2020-07-06/le-fabuleux-projet-dun-internet-computer-va-t-il-voir-le-jour Ict journal].
 
A l'attention des développeurs un '''S'''oftware '''D'''evelopment '''K'''it '''(SDK)''' est accessible sur le site [https://dfinity.org/foundation DFINITY Foundation].
 
Il est nommé '''DFINITY Canister SDK'''. Sous Ubuntu, il peut être installé à partir d'une [https://sdk.dfinity.org/docs/download.html commande curl] dans un terminal.
 
Après installation du SDK, il est accessible en mode ''"command-line interface (CLI)"'' à partir du même terminal. Il suffit de taper la commande <code>'''dfx'''</code> (abréviation de <code>'''df'''inity e'''x'''ecutor</code>) en respectant l'usage suivant :
* <code>'''dfx [FLAGS] [OPTIONS] [SUBCOMMAND]'''</code>, par exemple :
* <code>'''dfx --version'''</code>, en outre, les détails de la commande <code>'''dfx'''</code> peuvent être affichés par :
* <code>'''dfx --help'''</code>.
 
Le SDK est complété par :
* l'éditeur [https://code.visualstudio.com/download Visual Studio Code] équipé de l'extension : ''Motoko language support published by DFINITY Foundation''.
 
The Motoko programming language is a new, modern, type-sound language designed for developers who want to build the next generation of apps and services to run directly on the internet. Motoko is specifically designed to support the unique features of the Internet Computer and to provide a familiar yet robust programming environment.
 
===Processing===
[https://fr.wikipedia.org/wiki/Processing Processing] is a flexible software sketchbook and a language for learning how to code within the context of the visual arts.
 
[https://processing.org/ Accès au Site processing]
 
===Consulter les logs===
''"Être capable de chercher dans les logs peut se révéler indispensable. Les journaux de log sont stockés dans le répertoire /var/log/ et sont consultables grâce aux commandes tail, grep et zgrep."''
 
La phrase ci-dessus est un copier/coller du site [https://wiki.debian-fr.xyz/Consulter_les_logs_:_quoi,_o%C3%B9_et_comment_chercher_%3F Debian].
 
Sous Ubuntu, ce répertoire /var/log contient des journaux d'événements éditer au fil de l'eau par le processeur. C'est une sorte d'espion qui enregistre tous les événements survenus lors d'une [https://fr.wikipedia.org/wiki/Session_(informatique) session informatique].
 
Le logiciel [https://fr.wikipedia.org/wiki/Daemon_(informatique) (daemon)] qui gère ces journaux d'événements est [https://fr.wikipedia.org/wiki/Rsyslog rsyslog]. Ces événements permettent de repérer plus rapidement et efficacement les défaillances des ordinateurs.
 
Voir également [https://fr.wikibooks.org/wiki/Le_syst%C3%A8me_d%27exploitation_GNU-Linux/Les_fichiers_journaux_syslog Les fichiers journaux syslog].
 
Pour lister les fichiers log, taper la commande :
* <code>'''ls -l /var/log/*.log'''</code>
 
Prenons l'exemple du fichiers des authentifications (auth.log).
 
Pour afficher les 10 dernières lignes de ce fichier log, taper la commande :
* <code>'''tail -f /var/log/auth.log'''</code>
 
Pour éditer l'un de ce même fichier, taper la commande :
* <code>'''gedit /var/log/auth.log'''</code>
 
Le contenu d'une ligne est par exemple :
* <code>'''Jun 15 11:22:37 airel-System-Product-Name systemd-logind[634]: New session 4 of user airel.'''</code>
 
Dans chaque ligne d'évènement on distingue :
* La date et l'heure à laquelle l'évènement a été déclenché : Jun 15 11:22:37
* Le processus déclencheur de l'évènement :airel-System-Product-Name
* Le processus ayant demandé l'ajout du message correspondant au log : systemd-logind[634]
* Le niveau de gravité du message (priority) : ?
* La désignation de l'événement : New session 4 of user airel.
 
 
 
rsyslog possède un fichier de configuration rsyslog.conf, il est stocké dans le répertoire /etc . On peut modifier ce fichier pour l'adapter à nos besoins en messages d'évènements survenus sur le système : envoi de mail, authentification, etc... Le fichier rsyslog.conf comporte en fin de fichier une ligne :
* <code>'''$IncludeConfig /etc/rsyslog.d/*.conf'''</code>
qui inclus les fichiers contenus dans le répertoire '''rsyslog.d'''. Ces fichiers sont :
* <code>'''20-ufw.conf''' et '''50-default.conf'''</code>
 
Extrait du contenu du fichier '''50-default.conf''' :
* <code>auth,authpriv.* /var/log/auth.log</code>
* <code>*.*;auth,authpriv.none -/var/log/syslog</code>
* <code>#cron.* /var/log/cron.log</code>
* <code>#daemon.* -/var/log/daemon.log</code>
* <code>kern.* -/var/log/kern.log</code>
* <code>#lpr.* -/var/log/lpr.log</code>
* <code>mail.* -/var/log/mail.log</code>
* <code>#user.* -/var/log/user.log</code>
 
Modifions ce fichier 50-default.conf en enlevant le # qui précède '''user'''. Après avoir rebooter l'ordinateur on s'apercoit qu'un nouveau fichier a été créé sous le répertoire /var/log :
* <code>'''-rw-r----- 1 syslog adm 255188 juin 14 16:03 user.log'''</code>
 
Pour une défaillance donnée, la grande difficulté est de trouver parmi ces journaux, l'information pertinente qui va permettre d'orienter le diagnostic.
 
Ce moyen peut s'avérer précieux pour aider à diagnostiquer des pannes aléatoires. Celle qui m'intéresse en particulier est [https://github.com/AIREL46/SCAO/wiki/Anomalies-de-fonctionnement l'anomalie N°30]. Le constat est : ''Après en moyenne 15mn de fonctionnement, l'ordinateur est brutalement mis en état de "shutdown". Indifféremment, cette anomalie apparaît sous Ubuntu 18.04 ou sous Windows XP.''
 
 
===Where can I find the log file of my system temperature?===
Je m'oriente vers le forum askubuntu [https://askubuntu.com/questions/96957/where-can-i-find-the-log-file-of-my-system-temperature where-can-i-find-the-log-file-of-my-system-temperature].
 
Je concrétise les fichiers et je test le script proposé par [https://askubuntu.com/users/6005/jrg jrg].
 
Le script fonctionne, le problème toutefois est que l'application [https://doc.ubuntu-fr.org/lm-sensors lm-sensors] ne détecte pas toutes les sondes.
 
Pour détecter les sondes il faut lancer :
* <code>'''sudo sensors-detect'''</code>
 
J'ai essayé plusieurs fois mais il y a toujours des erreurs.
 
L'installation sous Windows de Speedfan et Specy a demandé 2 minutes et ils fonctionnent correctement.
 
J'ai fait la même installation et les mêmes essais sur le portable LDLC (Ubuntu 20.04 LTS), le résultat est le même sauf quil n'y a pas d'erreur détectée.
 
'''Conclusion :''' J'arrête les investigations, c'est un projet qui m'intéresse que je confierai à un informaticien.
 
N.B. : Le chip IT8712F-J installé sur la carte mère interface les différents capteurs de température, mesure des tensions et vitesse des ventilateurs. Voir sa [http://www.datasheetcatalog.com/datasheets_pdf/I/T/8/7/IT8712F.shtml datasheeet] à la page 23.
 
===Unified Modeling Language (UML)===
Le [https://fr.wikipedia.org/wiki/UML_(informatique) Langage de Modélisation Unifié], de l'anglais Unified Modeling Language (UML), est un langage de modélisation graphique à base de pictogrammes conçu pour fournir une méthode normalisée pour visualiser la conception d'un système. Il est couramment utilisé en développement logiciel.
 
Le besoin initial est le [https://plantuml.com/fr/activity-diagram-legacy diagramme d'activité] pour :représenter les fonctions logicielles.
 
Les logiciels sont nombreux et le plus souvent payants. Dans le cadre de ce projet :
* le site [https://www.predictiveanalyticstoday.com/open-source-free-unified-modeling-language-uml-tools/ 40 open source, free and top UML tools] permet d'orienter le choix
* [https://app.lucidchart.com/documents#/dashboard lucidchart] qui est un logiciel propriétaire et accessible en ligne. Attention, il est gratuit mais dès que vous avez besoin d'une fonctionnalité particulière, c'est payant, bravo !
* une alternative est [https://plantuml.com/fr/ plantuml]
 
 
Ce logiciel est disponible sous la forme d'un fichier [https://fr.wikipedia.org/wiki/JAR_(format_de_fichier) .jar (java archive)] qu'il faut [https://plantuml.com/fr/download télécharger].
 
La particularité principale de Java est que les applications écrites dans ce langage sont très facilement portables sur plusieurs systèmes d’exploitation tels que UNIX, Windows®, Mac OS® ou GNU/Linux®, avec peu ou pas de modifications.
 
Si Java est déja installé sur l'ordinateur, il n'y a pas d'installation supplémentaire, pour utiliser le .jar, il faut se référer à la [https://doc.ubuntu-fr.org/java doc ubuntu]. la commande est :
 
<code>'''java -jar plantuml.jar -gui'''</code>
 
En complément, il faut installer [https://www.graphviz.org/download/ Graphviz] :
* <code>'''sudo apt install graphviz'''</code>
 
Une autre alternative est [https://fr.wikipedia.org/wiki/Dia_(logiciel) Dia (wikipedia)] accessible sur le site [https://wiki.gnome.org/Apps/Dia Dia]. Dia est un logiciel libre de création de diagramme développé en tant que partie du projet GNOME.
 
Dia fait appel à des bibliothèques de symboles spécifiques à de nombreux domaines. Ces domaines sont principalement : électricité, électronique, circuits logiques, logiciel (graphes de flux), réseau, ordinateur, téléphone, UML, etc...
 
Pour créer sous dia un fond de couleur en arrière plan :
* définir un rectangle de la dimension de la page, le sélectionner et dans propriétés définir la couleur du remplissage
* dessiner au dessus du fond de couleur.
 
Voir [https://fablabo.net/wiki/Atelier_logiciel#Choix_des_couleurs choix des couleurs].
 
===Le langage de programmation===
Un [https://fr.wikipedia.org/wiki/Langage_de_programmation langage de programmation] est une notation conventionnelle destinée à formuler des [https://fr.wikipedia.org/wiki/Algorithme algorithmes] et produire des [https://fr.wikipedia.org/wiki/Algorithme programmes informatiques] qui les appliquent.
Ils sont sauvegardés systématiquement avec les autres fichiers de l'utilisateur.
L'exemple typique est la messagerie Thunderbird, le répertoire cachés caché est :
* <code>'''.thunderbird'''</code>
J'ai essayé la méthode Flashrom sur deux ordinateurs mais sans succès car les cartes mères ne sont pas supportées par Flashrom.
====L'UEFI====
Le standard [https://fr.wikipedia.org/wiki/UEFI UEFI] (de l’anglais Unified Extensible Firmware Interface) définit une interface entre le micrologiciel (firmware) et le système d'exploitation (OS) d'un ordinateur. Cette interface succède sur certaines cartes-mères au BIOS.
 
====Le Boot loader (Grub)====
Ce programme permet de remplacer le moniteur série de l'Arduino IDE.
Il est documenté sur Pour installer le paquet minicom :* voir [https://doc.ubuntu-fr.org/minicom le wiki ubuntu.fr]. Pour initialiser le port ttyACM0 (par exemple) et éviter l'erreur ''"ne peut ouvrir /dev/modem"'' :* <code>'''sudo minicom -D /dev/ttyACM0 -b 9600'''</code>
Pour le configurer :
Exemples (ligne 95 du fichier ~/.bashrc) :
*<code>'''alias arduino-cli=~/arduino-cli/arduino-cli'''</code>*<code>'''alias openscad=~/openscad/OpenSCAD.AppImage'''</code>. Après l'ajout de l'alias, taper la commande :* <code>'''source ~/.bashrc'''</code>
===Installation des logiciels===
* $ sudo apt-get install openscad
Pour obtenir une '''<big>version plus récente d'openscad</big>''', à partir du site [https://www.openscad.org/downloads.html#linux openscad] choisir, dans le paragraphe, ''"Other Linux"'' le téléchargement de ''The [https://appimage.org/ AppImage package''], 2 versions selon l'architecture sont proposées, prendre la '''X86(64bits)'''. Puis récupérer le fichier dans le répertoire Téléchargements et enfin le rendre exécutable (voir la [https://doc.ubuntu-fr.org/tutoriel/script_shell documentation Ubuntu]).
Prenons l'exemple de l'installation de l'IDE arduino-1.8.8
**reboot
**lancement arduino.
====Installation de l'éditeur Atom====
* Sur le site [https://atom.io/ atom] télécharger atom.amd64.deb
* Extraire les fichiers
* Installer atom en suivant la procédure du [https://flight-manual.atom.io/getting-started/sections/installing-atom/ flight manual]
* lancer atom en ligne de commande.
===Les logiciels applicatifs===
<code>sudo chmod +x Ultimaker_Cura-3.6.0.AppImage</code>
*'''[http://www.kicad-pcb.org/ kicad]''' : pour les circuits imprimés, l'importation des fichiers .dxf est utilisé pour les empreintes de circuits intégrés (footprint).Pour kicad, voir les 2 sous-paragraphes :* Pour le [https://fablabo.net/wiki/Atelier_logiciel#Routage_d.27un_transistor_sous_kicad routage d'un transistor] * et pour [https://fablabo.net/wiki/Atelier_logiciel#Manage_Symbol_Libraries_sous_kicad Manage Symbol Libraries]
Ces importations apportent souplesse et précision car elles permettent de définir une fois pour toute les valeurs attribuées aux dimensions, longueurs, largeurs, entraxes, positionnement d'un objet etc...
En compléments :
*Les schémas de la documentation sont réalisées à l'aide du logiciel '''[https://inkscape.org/fr/ Inkscape]''', qui fait l'objet de 2 sous-paragraphes (ci-dessous) :* le premier donne un exemple de son utilisation est traité ci-dessous* le second aborde les particularités des opérations booléene.
*La retouche des photos et les animations sont réalisés à l'aide du logiciel '''[https://www.gimp.org/ Gimp]''', par exemple pour réduire la taille du fichier d'une photo suivre la procédure :
**Lancer GIMP puis ouvrir le fichier .JPG et sélectionner le menu image,
**Outils → Outils de transformation → Découpage.
*La bureautique est assurée par la suite bureautique '''[https://en.wikipedia.org/wiki/LibreOffice Libre Office]''', en particulier '''Calc''' permet de générer puis d'enrichir des diagrammes selon une procédure résumée ci-dessous :
** au préalable, générer un fichier .csv avec les champs séparés par des ''';'''
** sauvegarder le fichier au format .ods
** '''attention au formatage des données :''' le séparateur des données numériques doit être la '''","''' et non le '''"."'''
** dans la feuille de calcul, sélectionner les plages de données selon l'axe Y
** à l'aide du menu, insertion - diagramme, générer un diagramme
** fichier - export - Export as PDF (ne pas utiliser "as image" car la qualité est mauvaise)
* inkscape : voir a)
====Inkscape - Opérations booléennes====
Les opérations booléennes (union, différence, intersection, exclusion et division) sont expliquées par un [http://write.flossmanuals.net/start-with-inkscape/boolean-operations/ tutoriel]. Elles sont accessibles à l'aide du menu '''"chemin (path)"'''.
 
Leur utilisation est délicate et demande une préparation correcte des 2 objets qui vont faire l'objet de l'opération booléenne. Dans le cas de l'opération différence, elle est effectuée selon le principe '''"dessous moins dessus"''' :
* le dessous est aussi appelé l'arrière plan
* le dessus est aussi appelé le premier plan.
Pour pouvoir gérer ces 2 plans sans ambiguïté, il est préférable de prévoir deux calques différents, chaque objet ayant son propre calque. Ainsi, il est possible à partir du menu '''"calque"''' de gérer le positionnement de l'objet :
* calque au premier plan
* calque à l'arrière plan.
Avant d'appliquer l'opération booléennes, il faut sélectionné les deux objet à l'aide d'une fenêtre.
====Choix des couleurs====
Le codage RVB est donné par le [https://tutorialehtml.com/fr/tableau-de-codes-de-couleurs-html/ tableau de codes de couleurs].
 
Les [https://fr.wikipedia.org/wiki/Couleur_compl%C3%A9mentaire couleurs complémentaires] sont un bon choix pour augmenter la lisibilité des dessins.
 
Le codage des principales couleurs utilisées dans le cadre de ce projet sont données par le fichier [https://github.com/AIREL46/SCAO/blob/master/Design/Couleurs/Couleurs_a.ods Couleurs_a.ods].
====Routage d'un transistor sous kicad====
Sous Eschema à l'emplacement du transistor :
* faire un clic droit, une fenêtre s'ouvre, choisir Properties, puis Edit properties, la fenêtre suivante s'ouvre :
[[Fichier:Kicad_transistor.png|cadre|centré|transistor]]
Dans l'encadré "Aspect", choisir : "Miror around X axis".
 
Cette opération permet de permuter la position de l'emetteur et du collecteur.
 
N.B. :
* l'option "default" permet de câbler le transistor sur le F.CU
* l'option "Mirror around X axis" permet de câbler le transistor sur le B.CU.
====Manage Symbol Libraries sous kicad====
La gestion des librairies de symboles est effectuée à partir du fichier sym-lib-table. Dans ce fichier chaque librairie est renseignée par une une instruction :
* <code>(lib (name e-p-wifi-shield-lf(type Legacy)(uri ${KIPRJMOD}/e-p-wifi-shield-lf.lib)(options "")(descr "")</code>
 
Les deux champs essentiels sont le nom (name) et l'uri qui donne l'"Environnement Variable Substitution" (chemin pour accéder à la librairie suivi du nom du fichier .lib. Ce fichier est généré :
* par le menu préférence/Manage Library Tables
====Générer un plan de perçage sous kicad====
Il faut éviter de générer un plan de perçage au format .pdf car l'échelle du plan n'est pas respectée.
Pour contourner ce problème, il convient de générer au préalable un fichier .dxf puis sous Librecad générer un fichier .pdf. J'ai poster une requête sur le forum kicad, les FAQ conseille d'utiliser la commande pdftk mais je n'ai pas réussi à l'utiliser correctement.
===Les captures d'écran===
* '''impr-écr''' : copie de l'écran entier
* '''alt+impr-écr''' : copie de la fenêtre active
* '''ctrl+maj+impr''' : initie une capture d'une zone rectangulaire à tracer.
Pour plus de détails utiliser le lien [https://doc.ubuntu-fr.org/capture_d_ecran capture d'écran].
 
===Raccourcis clavier personnalisés===
Pour créer vos propres raccourcis clavier :
* cliquer sur '''ajouter'''.
===Edition des étiquettes===
L'édition des étiquettes est réalisée :* dans le cas d'étiquettes de la marque agipa, il convient de télécharger le modèle sur le site https://www.apli.fr/ et ensuite ouvrir le modèle, par exemple <code>~/Téléchargements/wp_101242.doc</code> dans Libreoffice writer, saisir les contenus des étiquettes puis les imprimer.* à l'aide du logiciel [http://glabels.org/ glabel-3].
A titre d'exemple, les étiquettes des boîtes '''"projet"''' du magasin sont traitées selon la procédure :
* mise à jour du fichier liste-des-cartons.ods
** Sélectionnées les étiquettes à imprimer
** Imprimer les étiquettes.
 
===Logiciel de téléassistance et réunions en ligne===
[https://www.teamviewer.com/fr/ Team Viewer]
===L'environnement de développement===
L'[https://fr.wikipedia.org/wiki/Environnement_de_d%C3%A9veloppement environnement de développement] '''« intégré »''' (abrégé EDI en français ou [https://en.wikipedia.org/wiki/Integrated_development_environment IDE] en anglais, pour '''integrated development environment'''). Cet [https://en.wikipedia.org/wiki/Integrated_development_environment IDE] peut être réalisé à partir soit de :
* l'[https://blog.arduino.cc/?ie=UTF-8&oe=UTF-8&s=IDE&domains=&sitesearch= arduino IDE]
* l'[https://blog.arduino.cc/2020/03/13/arduino-cli-an-introduction/ arduino CLI] qui offre la possibilité d'utiliser l'éditeur de son choix, celui d'Eclipse en particulier. Après son [https://arduino.github.io/arduino-cli/latest/installation/ installation], voir le :
** [https://arduino.github.io/arduino-cli/ la documentation]
** [https://github.com/arduino/arduino-cli github]
** [https://arduino.github.io/arduino-cli/getting-started/ getting started].
* [https://fr.wikipedia.org/wiki/Eclipse_(projet) Eclipse].
 
===Les plateformes===
Dans le contexte de cet atelier logiciel, les [https://fr.wikipedia.org/wiki/Plate-forme_(informatique) plateformes] sont des [https://fr.wikipedia.org/wiki/Environnement_de_d%C3%A9veloppement environnements de développement] '''« intégré »''' (abrégé EDI en français ou [https://en.wikipedia.org/wiki/Integrated_development_environment IDE] en anglais, pour '''integrated development environment''').
 
Une plateforme est généralement constituée d'un ordinateur et d'un [https://fr.wikipedia.org/wiki/Microcontr%C3%B4leur microcontrôleur] raccordé par un câble USB.
 
Le [https://fr.wikipedia.org/wiki/D%C3%A9veloppement_de_logiciel développement du logiciel] dédié au [https://fr.wikipedia.org/wiki/Microcontr%C3%B4leur microcontrôleur] se réalise selon les phases suivantes :
* au sein de l'[https://en.wikipedia.org/wiki/Integrated_development_environment IDE] installé sur l'ordinateur :
** saisie du programme
** vérification
** téléversement de l'ordinateur vers le [https://fr.wikipedia.org/wiki/Microcontr%C3%B4leur microcontrôleur]
* au sein du [https://fr.wikipedia.org/wiki/Microcontr%C3%B4leur microcontrôleur] exécution du programme.
Les phases décrites ci-dessus peuvent être exécutées autant de fois que nécessaire jusqu'à obtention du fonctionnement souhaité.
 
A partir du moment où le câble USB est déconnecté, le [https://fr.wikipedia.org/wiki/Microcontr%C3%B4leur microcontrôleur], si son alimentation est autonome (batterie), va exécuter en permanence le dernier programme téléversé.
 
====Plateformes Arduino et Teensy====
Les deux plateformes sont constituées à partir du même ordinateur complété, soit d'un [https://fr.wikipedia.org/wiki/Microcontr%C3%B4leur microcontrôleur] de la famille [https://fr.wikipedia.org/wiki/Arduino Arduino], soit d'un [https://fr.wikipedia.org/wiki/Microcontr%C3%B4leur microcontrôleur] [https://www.pjrc.com/teensy/ Teensy]. Les deux plateformes utilisent le même [https://en.wikipedia.org/wiki/Integrated_development_environment IDE].
L'[https://en.wikipedia.org/wiki/Integrated_development_environment IDE] est :
* soit l'Arduino web editor (disponible uniquement pour Linux 64 bits en date du 14/03/2018)
* soit l'Arduino IDE (Linux '''32 bits''' et 64 bits)
les deux sont accessibles par ce [https://www.arduino.cc/en/Main/Software lien].
 
La [http://playground.arduino.cc/uploads/Main/arduino_notebook_v1-1.pdf documentation].
 
Dans le cas du [https://www.pjrc.com/teensy/ Teensy], il est complété de [https://en.m.wikipedia.org/wiki/Library_(computing) librairies spécifiques].
 
Prenons l'exemple de l'installation de l'IDE arduino-1.8.8
*sur le site arduino, télécharger l’archive arduino-1.8.8-linux64.tar.xz
*la décompresser puis installer avec les commandes :
**tar Jxvf arduino-1.8.8-linux64.tar.xz
**./arduino-1.8.8-linux-setup.sh $USER
**reboot
**lancement arduino.
 
====Plateforme Microchip====
Elle est traitée en un projet séparé accessible par le lien [http://fablabo.net/wiki/PIC PIC].
 
===Organisation des fichiers Arduino===
En référence à l'article [http://www.didel.com/coursera/GererFichiers.pdf Gérer vos fichiers Arduino] et selon l'exemple du fichier volumineux [https://github.com/AIREL46/SCAO/blob/master/Arduino/e-p-wifi/e-p-wifi.ino e-p-wifi.ino], une organisation en plusieurs fichiers devient nécessaire. Le principe est de mettre les définitions, fonctions, modules dans des fichiers [https://en.wikipedia.org/wiki/Include_directive "header"] séparés, par exemple '''a.h''', et de l'appeler avec l'ordre :
 
<code>#include a.h</code>.
 
Le programme Arduino peuta être divisé en 5 paragraphes :
# Introduction
# Initiation des paramètres
# Fonctions spécifiques
# Fonction setup
# Fonction loop
Supposons que nous voulions organiser notre fichier .ino en 2 fichiers séparés, la procédure est la suivante :
* créer dans le même répertoire un nouveau fichier, par exemple a.h
* concernant les paragraphes 1, 2 et 3 :
** dans le fichier .ino sélectionner puis couper les lignes que vous souhaitez transférer dans le fichier a.h
** coller ces lignes dans le fichier a.h
** répéter l'opération pour chaque paragraphe
* au paragraphe 2 le déclarer par <code>#include a.h</code>
* concernant le paragraphe 4 setup :
** procéder au transfert des lignes de code comme précédemment (couper puis coller)
** dans le fichier .ino appeler le fonction <code>setup_a ();</code>
** dans le fichier a.h créer la fonction void setup_a () {lignes de code précédemment copier}
* concernant le paragraphe 5 loop limiter au strict minimum le nombre de lignes de code en appelant les fonctions spécifiques qui se trouvent au paragraphe 3.
 
===Gestion de versions ===
Un [https://fr.wikipedia.org/wiki/Logiciel_de_gestion_de_versions logiciel de gestion de versions] est un logiciel qui permet de stocker un ensemble de fichiers en conservant la chronologie de toutes les modifications qui ont été effectuées dessus. Il permet notamment de retrouver les différentes versions d'un lot de fichiers connexes.
====Git et Git-hub====
Il en existe de nombreux, [https://fr.wikipedia.org/wiki/Git Git] est le logiciel créé par Linus Torvald, auteur du Kernel Linux. Il utilise des commandes comme commit, branches, merge... L'hébergement des fichiers sources s'effectue sur [https://fr.wikipedia.org/wiki/GitHub GitHub], ce qui permet de collaborer facilement sur des projets qui utilisent des logiciels libres.
 
La formation recommandée est [https://openclassrooms.com/courses/gerer-son-code-avec-git-et-github Gérer son code avec git et github sur Openclassroom].
 
Pour installer git taper dans un terminal :
* <code>sudo apt install git</code>
 
Pour créer une copie du projet SCAO en provenance du site github, taper dans un terminal la commande :
* <code>git clone https://github.com/AIREL46/SCAO</code>.
 
====Git-lfs====
Un message de warning est affiché :
 
'''File Plan-de-management/plan de management.odt is 53.71 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB'''
 
La préconisation est :
 
'''You may want to try Git Large File Storage - https://git-lfs.github.com.'''
 
Après l'installation du paquet, lors de l'exécution de la commande :
 
*sudo git lfs install
 
une erreur survient :
 
/usr/local/bin/git-lfs: 1: /usr/local/bin/git-lfs: Syntax error: '''Unterminated quoted string'''
 
Malgré l'erreur, je teste :
*sudo git add Plan-de-management/plan-de-management.odt
*sudo git commit "Ajouter fichier > 50MO plan-de-management.odt"
*sudo git push origin master
 
Dans Github, je retouve le fichier avec les commentaires :
<big>View raw</big>
(Sorry about that, but we can’t show files that are this big right now.)
 
Je clique sur View raw, la fenêtre suivante s'ouvre :
[[fichier:Git-lfs-sup-50MO.png |thumb|center|upright=2 | Ouvrir en lecture seule un fichier de plus de 50MO]]
Si :
*je choisis ''Ouvrir avec LibreOffice Writer'', le fichier est visualisé.
*je choisis ''Enregistrer le fichier'', le fichier est téléchargé et disponible dans le répertoire '''Téléchargements'''.
 
Je fais le même test avec le fichier plan de management_old.doc qui n'a pas fait l'objet d'un nouveau "push", le résultat est le même.
Conclusion : les fichiers de plus de 50 MO sont mémorisés, par contre, ils sont visualisables qu'après un téléchargement. Donc, le paquet git-lfs n'est pas opérationnel.
 
Je laisse tomber git-lfs et j'en profite pour faire un peu de nettoyage.
 
Je supprime des fichiers inutiles, le premier :
 
Plan-de-management/plan de management.odt avec la commande :
*sudo git rm Plan-de-management/plan de management.odt
ça ne marche pas parce que Ubuntu n'aime pas les espaces, je contourne la difficulté avec :
*sudo git rm Plan-de-management/'''<big>"</big>'''plan de management.odt'''<big>"</big>'''
Les suivants :
*Plan-de-management/plan de management_old.doc
*BOINC/BOINC.odt.
 
====Synchronisation des 2 ordinateurs====
Pour les 2 ordinateurs, le fixe et le portable, l'objet est d'assurer la conformité des contenus de leur répertoire SCAO respectif selon la règle de [https://fr.wikipedia.org/wiki/Synchronisation_de_fichiers synchronisation de fichiers].
 
Une fois par semaine, sur l''''ordinateur fixe''', dans le répertoire SCAO :
* sudo git status
* En fonction du résultat, effectuer l'ajout des nouveaux fichiers et terminer par :
** sudo git commit -a, cette commande va ouvrir fichier SCAO/.git/COMMIT_EDITMSG, dans ce fichier indiquer la raison du commit
** ctrl x
** sauver l'espace modifié ? Oui
* sudo git push origin master
* sur l''''ordinateur portable''' :
** sudo git pull origin master.
 
===Compacter des fichiers avec la commande zip===
Pour regrouper le contenu d'un répertoire en vue de l'envoyer à un correspondant.
 
'''zip - package and compress (archive) files'''
 
Ouvrir un terminal et taper la commande (exemple) :
* zip quiet-cook.zip tp_quiet-cook
===Libraries===
En bon français, il faut dire [https://fr.wikipedia.org/wiki/Biblioth%C3%A8que_logicielle bibliothèque logicielle].
 
En anglais [https://en.wikipedia.org/wiki/Library_(computing) Library_(computing)].
 
Une bibliothèque logicielle est une collection de routines, qui peuvent être déjà compilées et prêtes à être utilisées par des programmes.
 
Pour éviter toute confusion linguistique, l'appellation utilisée par la suite sera celle issue de l'anglais : '''"library"'''.
 
Au fur et à mesure des besoins ces libraries, installées sur le disque dur de l'ordinateur, se multiplient.
 
Sur l'ordinateur fixe ASUS, ces libraries sont présentent dans les répertoires :
* /home/leruste/Téléchargements/teensy/avr/libraries
* /home/leruste/Téléchargements/arduino-1.6.9/libraries
* /root/Arduino/libraries.
====Installation des libraries====
La plupart des librairies se trouve sur le site github, un exemple :
 
la librarie [https://github.com/PaulStoffregen/Time '''Time''' publié par Paul Stoffregen].
 
Pour trouver une librarie sur le site github, il convient d'utiliser le [https://github.com moteur de recherche] à gauche du logo. En tapant "Chrono" on trouve :
 
[https://github.com/SofaPirate/Chrono Chrono publié par Sofian Audry and Thomas Ouellet Fredericks]
 
Pour installer ces libraries sur un ordinateur, dans notre exemple, sur l' '''ASUS''', [https://github.com Github] propose deux méthodes :
# le [https://fr.wikipedia.org/wiki/Clonage_(programmation) clonage]
# le [https://fr.wikipedia.org/wiki/Clonage_(programmation) téléchargement].
 
D'autre part, le répertoire privilégié par le compilateur de l'arduino IDE est :
 
'''/root/Arduino/libraries'''
 
Dans le cas du clonage et dans l'exemple de la library '''Chrono''', dans un terminal, tapez successivement :
* cd /root/Arduino/libraries
* Sudo git clone https://github.com/SofaPirate/Chrono
 
Dans le cas du téléchargement, sur le site Github, effectuer le téléchargement, sur l'ordinateur, il en résulte le fichier '''~Téléchargements/Chrono-master.zip''', 2 méthodes d'installation s'offrent à vous :
* Pour [https://www.arduino.cc/en/Guide/Libraries installer des nouvelles libraries sous l'Arduino IDE].
La copie d'écran ci-dessous donne l'exemple de la sélection du fichier '''Chrono-master.zip''' :
[[Fichier:librarie-download.png|vignette|centré|upright=2 | Sélection du fichier .zip]]
 
* Décompresser les fichiers puis les déplacer dans le répertoire /root/Arduino/libraries.
 
====Arduino Wrapper library====
J'ai rencontré pour la première fois cette terminologie de
[https://en.wikipedia.org/wiki/Wrapper_library "wrapper library"] en installant la librairie
[https://github.com/Overdrivr/Telemetry-arduino Telemetry Arduino].
 
===Pytelemetry Command Line Interface===
Le [https://github.com/Overdrivr/pytelemetrycli "Pytelemetry Command Line Interface"] est complémentaire de la fonction réalisée par [https://github.com/Overdrivr/Telemetry-arduino "Telemetry"].
 
Il permet, à partir de l'ordinateur, la réception des données envoyées par le microcontrôleur ainsi que leur visualisation.
Pour installer ce module, il faut disposer de :
* du langage de programmation [https://www.python.org/ Python] '''3.3''' + PyQt4 and numpy
* du [https://fr.wikipedia.org/wiki/Gestionnaire_de_paquets gestionnaire de paquets][https://pypi.org/project/pip/ pip] spécifique à [https://www.python.org/ Python].
* le paquet [https://pypi.org/project/pytelemetrycli/1.1.0/ Pytelemetry Command Line Interface]
Une installation de ce module a été entreprise, 2 problèmes ont été rencontrés :
* Ubuntu 16.04 LTS permet l'installation de python des versions '''2.7.x''' (2.7.12 sur l'ordinateur ASUS) mais pas au delà
* le [https://fr.wikipedia.org/wiki/Gestionnaire_de_paquets gestionnaire de paquets][https://pypi.org/project/pip/ pip] génère une erreur : cannot import name main.
 
'''Conclusion''' : ce module [https://github.com/Overdrivr/pytelemetrycli "Pytelemetry Command Line Interface"] semble avoir été développé pour le monde de Windows sans préoccupation de sa compatibilité au monde de Linux.
 
Néanmoins, cette expérience aura permis d'explorer le langage de programmation [https://www.python.org/ Python] qui semble être, en complément du langage BASH, un langage adapté pour développer des programmes dédiés au PC qui pourraient dialoguer avec le microcontrôleur.
=== Iphone 5 ===
Voir le paragraphe "matériel" pour les généralités.
2 010
modifications

Menu de navigation