Programmer en Java pour le Raspberry Pi 3
Jean-Bernard Boichat
Eyrolles
Chapitre 1
Java et l'environnement de développement Eclipse1
Pourquoi Eclipse ?1
Simulation du matériel1
Installation d'Eclipse2
Installation du JDK de Java sous Windows3
Premier démarrage d'Eclipse6
Fichiers .java et .class8
Notepad++ et les fichiers texte9
Notre première classe Java10
Compilation et exécution sans Eclipse11
Compilation et exécution sous Eclipse12
Une première astuce d'Eclipse15
Le répertoire projet Hello World16
Eclipse en UTF-817
Résumé18
Exercices19
Chapitre 2
Aller plus loin avec Eclipse21
Principe de développement21
Pas à pas sous Eclipse22
Nous déboguons enfin29
Bien maîtriser les raccourcis F5, F6, F7 et F831
Résumé33
Exercices33
Chapitre 3
Installation du Raspberry Pi 3 B35
Autres modèles de Raspberry Pi36
Référence du matériel36
Matériel requis36
Installation de Raspbian avec écran et NOOBS38
Installation de Raspbian sans écran41
Fixer l'adresse IP dans le routeur44
Adapter ou corriger les réseaux Wi-Fi45
Sauvegarde régulière de l'image disque46
Restauration d'une image48
Stopper correctement le Raspberry Pi 349
Résumé49
Exercice49
Chapitre 4
PuTTy et WinSCP pour accéder au Raspberry Pi51
Installation de PuTTY51
Configuration du Raspberry Pi 3 B53
Une première initiation à Linux55
Installation de WinSCP61
Première exécution de HelloWorld65
Encore un peu de Linux66
Résumé66
Exercices67
Chapitre 5
Le Raspberry Pi 3 et son port GPIO69
Matériel requis pour le montage des circuits69
La numérotation Pi4J70
Fritzing et ses schémas71
Quelques informations sur l'utilisation de Fritzing73
Résumé73
Exercice73
Chapitre 6
Python pour vérifier les fonctions GPIO75
Débuter en Python75
Les fichiers .py de Python77
Une LED sur une broche GPIO78
Deux LED actives80
Résumé82
Exercices82
Chapitre 7
Les bibliothèques Pi4J pour Java83
Vérification préalable à l'installation de Pi4J83
Mise à jour de Raspbian84
Installation de Pi4J86
Compilation des exemples de Pi4J87
Exécution des exemples de Pi4J88
Résumé89
Exercices89
Chapitre 8
Clignotement d'une LED avec Pi4J sous Eclipse91
Mise en place de Pi4J sous Eclipse91
La clase ClignoteLed92
ClignoteLed sur la Raspberry Pi 3 B94
Amélioration de ClignoteLed94
Résumé97
Exercices97
Chapitre 9
Nos débuts en Java99
Variables et objets en Java100
De nombreux opérateurs105
Tableaux de variables et leurs initialisations109
Variables de type String113
Variables byte, int, long ou double et leurs opérateurs116
Variables final118
Transtypage (casting)118
Opérations booléennes119
Instructions if() et else120
Instruction switch()122
Méthodes equals(), == et compareTo()125
Division par zéro126
Apprendre avec de petits jeux126
Résumé126
Exercices126
Chapitre 10
Une classe Java pour lire et écrire des fichiers129
Lire un fichier de paramètres de configuration129
Fichier texte sous Windows ou Linux130
Notre fichier de configuration130
Une classe Java pour une première lecture131
La classe ConfigParam complète134
Lecture et écriture de fichiers binaires138
Résumé139
Exercices140
Chapitre 11
Les exceptions en Java141
Un projet Eclipse pour vérifier les exceptions141
La fameuse division par zéro142
Un index en dehors des limites (finally)144
Pointeur null145
Résoudre les imports et exceptions dans Eclipse147
Pourquoi pas throws ?149
Traitement de plusieurs exceptions150
Résumé151
Exercice151
Chapitre 12
Des tâches en parallèle avec les Thread de Java153
Un exemple simple de Thread153
Résumé156
Exercices156
Chapitre 13
Exécution de scripts Python depuis Java157
Une classe de test ProcessBuilderPythonT157
Traitement des erreurs de ProcessBuilderPythonT161
ProcessBuilder avec un script Python sur le Raspberry Pi 3162
Deux scripts Python en parallèle167
Résumé170
Exercices171
Chapitre 14
Deux classes pour calculer les heures du lever et du coucher de soleil173
Spécifications de l'application173
Une classe pour les périodes actives174
Résumé184
Exercices184
Chapitre 15
Utilisation d'un relais 5 V - 220 V185
Caractéristique du relais185
La classe Java Relay188
Déboguer sur le Raspberry Pi depuis Eclipse194
La classe PresenceSimulation197
Résumé199
Exercices200
Chapitre 16
Utilisation d'un capteur de lumière201
Mesure de la lumière ambiante201
LightRead dans un thread209
Javadoc pour LightRead210
Génération de Javadoc du projet RelaisEclairage211
Résumé213
Exercices214
Chapitre 17
Utilisation d'un capteur de mouvement et d'un buzzer215
Capteur de mouvement215
Sirène buzzer222
Résumé228
Exercices228
Chapitre 18
Utilisation d'un capteur de température231
Capteur de température DS18B20231
Quelle embrouille avec tous ces fils !237
Résumé238
Exercices238
Chapitre 19
Utilisation d'un capteur à ultrasons et d'un bouton-poussoir239
Schéma Fritzing global240
Capteur à ultrasons240
Bouton-poussoir244
Résumé251
Exercices251
Chapitre 20
Java et les fichiers .jar253
Eclipse default package253
L'instruction package254
Générer un .jar de manière simple256
Résumé258
Exercice258
Chapitre 21
Utilisation d'une caméra Pi259
Installation259
Premiers tests261
La classe ProcessBuiderCamera263
Accès à une clé USB266
Des applications ludiques267
Résumé268
Exercices268
Chapitre 22
Installation d'un serveur web sur le Raspberry Pi269
Pourquoi un serveur web sur un Raspberry Pi ?270
La classe RaspWebServer270
La classe RaspWebSetServer280
Résumé287
Exercices287
Chapitre 23
La base de données relationnelle SQLite289
DB Browser for SQLite290
Création d'une première base de données290
Installation et vérification de SQLite3 sur la Raspberry Pi 3293
Création d'une base de données directement sur le Raspberry Pi 3293
Insertion de données dans SQLite avec SQL294
L'instruction SELECT de SQL296
Le JDBC de Java296
TestJDBCsqlitePi sur le Raspberry Pi299
Extraction de données avec JDBC300
La classe RaspbEvent302
La classe TestRaspbEvent304
Résumé305
Exercices305
Chapitre 24
Envoi d'e-mails depuis le Raspberry Pi307
La classe EmailEnvoi307
Envoi d'un e-mail depuis le Raspberry Pi311
Envoi d'un e-mail avec des données tirées de SQLite311
Envoi d'un e-mail avec une image de la caméra314
PIR, prise d'image et envoi d'e-mail318
Répertoire sendmails320
Résumé321
Exercices321
Annexe
Numérotation GPIO323
Index325