Archives de catégorie : Python

La programmation du Raspberry Pi en Python

Le langage Python

Le Raspberry Pi a aussi été conçu pour permettre d’apprendre la programmation.

Le langage principal pour programmer sur Raspberry Pi est Python.

J’ai dû voir comment mettre en place mon environnement de programmation en Python sur mon Raspberry Pi pour réaliser mon projet.

Python est un langage de programmation qui est utilisé dans différents domaines (application, web, …) Il est souvent comparé à Perl, Ruby ou encore Java. D’après le site Raspberry Pi, les principaux points forts de Python sont :

  • Langage adapté aux débutants (comme moi 😉 )
  • Les grandes possibilités du langage. Il va aussi bien être adapté aux petits projets qu’aux gros projets
  • Peut-être utilisée sur différents types d’ordinateurs
  • Stable, langage qui est assez vieux et qui a fait ses preuves
  • Simple à comprendre

L’environnement de travail Python sur le Raspberry Pi

Pour programmer en Python sur Raspberry Pi, on peut lancer le programme Thonny Python IDE.

Voici à quoi ressemble l’IDE avec mon premier programme d’exemple (décrit dans la partie suivante).

Mes premiers essais en python

Pour découvrir Python j’ai essayé de réécrire en python les programmes d’exemples que j’ai codé quand j’ai découvert java lors de mon travail personnel sur les langages de programmation : ces exemples étaient l’écriture en java des exemple de programmes Cobol, Fortran que j’avais lus quand j’avais regardé « histoire des langages de programmation ».

Multiplication de deux nombres

Le premier programme faisait la multiplication de deux nombres ;

Voici le résultat en python.

# lit les nombres
input1 = input("Enter first number:" );
num1 = int(input1)
input2 = input("Enter Second number:");
num2 = int(input2)

# ça fait le calcul
result = num1 * num2;

# affiche le resultat
print("result is = " , result);

Comme différence avec Java, on voit que :

  • le programme est plus petit à écrire.
  • On n’a pas besoin de dire le type des variables
  • Il est plus facile d’afficher les résultats ou de demander des saisies de l’utilisateur
  • Pour les commentaires on utilise « # » à la place de « // »
  • On a dû faire attention à convertir la saisie (input1) en nombre (num1)

PGCD de deux nombres

Le second programme définissait une fonction qui pouvait être réutilisée. La fonction calculait le PGCD de deux nombres. Voici ce que cela donne en python :

def calculePGCD(na,nb):
   ia = na
   ib = nb

   while ib !=0 :
      itemp = ia
      ia = ib
      ib = itemp % ib
   return ia

a = 55
b = 33
resultat =calculePGCD(a,b)
print("le pgcd de",a,"et",b,"est", resultat)

Comme différence avec Java :

  • Pour utiliser une fonction on utilise « def»
  • Il faut faire attention aux indentations ; Python se sert des indentations pour structurer le programme (intérieur de la fonction, intérieur de la boucle while). En Java on utilisait les « { } »
  • Ici aussi, le code est très compact à écrire.

Reduction de fractions

Le troisième programme utilisait la fonction PGCD pour réduire une fraction. Voici ce que cela donne en Python :

#lit les nombres.
inputNumerateur = input ("Entre le numérateur:")
numerateur = int(inputNumerateur)
inputDenominateur = input ("Entre le dénominateur:")
denominateur = int(inputDenominateur)
print ("la saisie est :",numerateur,"/",denominateur)

# calcul du pgcd en utilisant le programme d'exemple
pgcd = calculePGCD (numerateur , denominateur)

#calcul du nouveu numérateur et du nouveau dénominateur
numerateur = (int) (numerateur / pgcd)
denominateur = (int) (denominateur / pgcd)

# affiche le resultat
print ("le resultat est :",numerateur,"/",denominateur)

Comme point particulier, on a dû faire attention à ce que le résultat des nouveaux numérateurs et dénominateurs soit bien un entier (par défaut, on obtenait un nombre décimal).

Conclusion

Python a l’air plus facile à manipuler pour apprendre que ce que j’avais dû faire en java (par exemple pour le jeu Pong du Tutorial que j’avais repris).

Je vais maintenant devoir voir comment utiliser Python pour les différentes tâches que je dois faire pour le projet (lire les capteurs, envoyer les données à Salesforce, etc…).

Raspberry Cars : RC 2.0 !

Pour mon travail personnel de l’année 2019-2020 au Lycée Ermesinde, je vais étendre mon travail personnel de l’année dernière, avec de nouvelles technologies pour le rendre plus performant et avancé.

Le travail personnel de l’année dernière consistait à connecter le site Salesforce avec une voiture Mercedes pour recevoir des donnés sur la voiture en fonctionnement. Par exemple la position de la voiture, sa vitesse, le niveau de carburant. Avec ces informations, on a eu l’idée de faire une course virtuelle où des personnes peuvent aller d’un point de départ à un point d’arrivée, à des dates différentes, et par la suite on peut comparer les trajets entre eux.

Le projet de l’année dernière avait comme limitations que les données passaient par les serveurs de Mercedes : Les données de la voiture étaient lues par une application Mercedes sur le téléphone mobile puis envoyée sur le serveur Mercedes ; Ensuite, un programme exécuté chez Salesforce allait se connecter automatiquement au serveur Mercedes pour demander les données de la voiture et les enregistrer dans la base de données de Salesforce.

En résumé, les limitations étaient les suivantes :

  • On avait besoin d’avoir le téléphone dans la voiture
  • Ceci fonctionnait juste sur les voitures Mercedes
  • Pour que Salesforce se connecte aux API du serveur cloud de Mercedes il fallait un contrat avec Mercedes et une fois la phase de développement terminée il faut payer un abonnement
  • On ne pouvait pas facilement se connecter très souvent du serveur Salesforce au serveur Mercedes (on a fait toutes les 10min.)
  • L’application Mercedes n’enregistrait pas les donnés à une haute fréquence, on voudrait enregistrer toute les 2-10 secondes par exemple pour avoir une course plus dynamique

Ce que je veux réaliser cette année c’est :

  • Un petit ordinateur autonome dans la voiture,
  • Fonctionnant avec toutes les marques de voiture,
  • Ne nécessitant pas d’abonnement particulier,
  • Enregistrant de la même manière la position de la voiture, la vitesse, le niveau de carburant, l’état des pneus et d’autres paramètres,
  • Les envoyant à Salesforce le plus souvent possible.

Ce travail personnel va donc nécessiter différents groupes de tâches :

Voici la suite d’articles décrivant les différentes étapes du projet  :