SlideShare une entreprise Scribd logo
1  sur  31
Expérience IOT
ER4 S4 apprentis
IOT
Jean-Louis.SALVAT@univ-cotedazur.fr
01/11/2019 Colloque GEII Longwy 1
IOT
1 séance ESP8266/envoie de données vers
Thingspeak (Wifi)
3 séances prise en main bananapi - Linux
4 séances programmation C et IOT - Linux
1 séance programmation C Linux avec gestion E/S
1 séance lecture I2C (BMP280) et temperature
processeur et envoie données vers ThingSpeak
1 séance Arduino avec NRF24L01+ et envoie données
vers gateway sur bananapi
1 séance : finalisation séance précédente, recuperation
de toutes les informations et envoie vers ThingSpeak
Module ER4 – 32 heures – 8 séances de 4h
01/11/2019 Colloque GEII Longwy 2
IOT
ESP8266 (SOC)
MCU 160MHz 32 bits [2.5V;3.6V]
Flash > 512ko - RAM > 64ko
Wifi 802.11 b/g/n
Programmation en C (SDK Espressif)
Arduino
Lua
Séance 1 : ESP8266 et ThingSpeak (1)
01/11/2019 Colloque GEII Longwy 3
IOT
ESP8266, VS code et platformio
Séance 1 : ESP8266 et ThingSpeak (2)
01/11/2019 Colloque GEII Longwy 4
IOT Séance 1 : ESP8266 et ThingSpeak (3)
void setup() {
Serial.begin(115200); // Initialize serial
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client); // Initialize ThingSpeak
}
void loop() {
if(WiFi.status() != WL_CONNECTED){
Serial.print("Attempting to connect to SSID: ");
Serial.println(SECRET_SSID);
while(WiFi.status() != WL_CONNECTED){
WiFi.begin(ssid, pass); // Connect to WPA/WPA2 network.
Serial.print(".");
delay(5000);
}
Serial.println("nConnected.");
}
01/11/2019 Colloque GEII Longwy 5
IOT Séance 1 : ESP8266 et ThingSpeak (4)
// on associe les champs thingspeak au nombre generés
ThingSpeak.setField(1, number1);
ThingSpeak.setField(2, number2);
// write to the ThingSpeak channel
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if(x == 200){
Serial.println("Channel update successful.");
}
else{
Serial.println("Problem updating channel. HTTP error code " +
String(x));
}
// change the values
number1++; // compteur
if(number1 > 99){
number1 = 0;
}
number2 = random(0,100);
delay(20000); // Wait 20 seconds to update the channel again
}
01/11/2019 Colloque GEII Longwy 6
IOT Séance 1 : ESP8266 et ThingSpeak (5)
Résultat sur https://thingspeak.com/
01/11/2019 Colloque GEII Longwy 7
IOT Séance 2-4 : cible Linux, les solutions
Raspberry Pi 3 B+ Orange Pi Zero Bananapi M2+
4 x Processeur Broadcom
BCM2837B0 Cortex-A53
64-bit SoC 1,4 GHz + GPU
RAM : 1 Go SDRAM
BLE Wifi Ethernet USB
Raspbian
4 x Processeur AllWinner
H2+ 32-bit SoC 1,2 GHz +
GPU
RAM : 512 Mo SDRAM
BLE Wifi Ethernet USB
Armbian
4 x Processeur AllWinner
H3 32-bit SoC 1,2 GHz +
GPU
RAM : 1 Go SDRAM
Flash MMC 8Go
BLE Wifi Ethernet USB
Armbian
01/11/2019 Colloque GEII Longwy 8
IOT Séance 2-4 : Bananapi connexion : Solution 1 et 2
Le port com 17 a été
associé à votre connexion USB vers
la cible
Le port com 3 a été associé à
votre FTDI
Solution 1 : connexion TeraTerm ou putty via un cable USB/micro
Solution 2 : connexion TeraTerm ou putty via FTDI sur port Debug TX:RX
01/11/2019 Colloque GEII Longwy 9
IOT Séance 2-4 : Bananapi connexion: Solution 3 et 4
Routeur
sudo nmtui
Box
ADSL ou fibre
Solution 3 : connexion
putty sur ethernet en SSH
Solution 4 :
connexion putty
en Wifi SSH
01/11/2019 Colloque GEII Longwy 10
IOT Séance 2-4 : Bananapi et Linux : copier des fichiers
Monter une clé usb et copier des fichiers du PC
vers la cible
sudo mount /dev/sda1 /media
sudo cp –r /media/rep_a_copier ~/nouveau_rep
more /proc/partitions
Copier des fichers du PC vers la cible en
utilisant Winscp
Votre home
sur la cible
01/11/2019 Colloque GEII Longwy 11
IOT Séance 2-4 : Bananapi et Linux : une interface graphique ?
Il est possible de travailler avec une interface graphique à la place d’une connexion SSH. Dans
ce cas 2 solutions : utilizer un clavier,souris écran ou bien VNCViewer sur votre PC
routeur
Le bananapi est un « PC » Linux. Il
faut donc un clavier, une souris et un
écran en plus du poste de travail
On utilise la souris, le clavier et l’écran
du poste de travail et on utilise
VNCViewer sur le poste de travail
pour se connecter sur le bananapi
sudo apt-get install xfwm4 xfce4-panel xfce4-settings xfce4-session xfce4-terminal xfdesktop4 xfce4-taskmanager tango-icon-theme
sudo apt-get install xfonts-base thunar mousepad lightdm lightdm-gtk-greeter tightvncserver
01/11/2019 Colloque GEII Longwy 12
IOT Séance 2-4 : Bananapi et Linux : Programmation
Utilisation du fichier Makefile
gcc main.c –o test
./test
CC=gcc
all: main.c calc.c
${CC} -o test main.c calc.c
clean:
@echo "Cleaning up..."
rm *.o test
Utilisation de gcc
Utilisation de Geany ou Codeblocks
make all
./test
Résultat :
01/11/2019 Colloque GEII Longwy 13
IOT Séance 2-4 : Bananapi et Linux -> le shell
Un ensemble de questions : l’étudiant répond aux questions en utilisant le site
commandes explications exemples
nano –c Editeur avec affichage du numéro de ligne nano –c test.txt
pwd Path directory (Where we are) pwd
whereis Where is exécutable whereis armbian-config
ls ‐a shows all (including hidden fi les)
‐l displays long format
‐R gives a recursive listing
‐r gives a reverse listing
‐t sorts last modifi ed
‐S sorts by file size
‐h gives human readable file sizes
ls –al
ls -lt
cd Change directory
cd
cd / pour aller à la racine
cd .. pour remonter d’un cran
cd ../../test
mkdir Make directory mkdir rep
rm Delete a file
‐r recursive delete (use for directories)
‐d remove empty directories
rm –r mon_rep/
cp ‐r recursive copy cp test.txt test1.txt
https://linuxjourney.com/
01/11/2019 Colloque GEII Longwy 14
IOT Séance 5 : Programmation C Linux avec gestion E/S
3 solutions pour accéder aux GPIO sous Linux
/dev/gpiochip0
Ioctl()write()
/sys/class/gpio
/dev/mem
Solution 1 Solution 2
Solution 3
Registres de
gestion des
ports
CPU-PORT
Extrait du datasheet du H3 Allwinner
Adresse de base des Ports E/S
01/11/2019 Colloque GEII Longwy 15
IOT Séance 5 : Programmation C Linux : solution 1 -> sysfs (1)
$ sudo sh
# echo 3 > /sys/class/gpio/export
# echo out > /sys/class/gpio/gpio3/direction
# echo 1 > /sys/class/gpio/gpio3/value
# echo 0 > /sys/class/gpio/gpio3/value
# echo 7 > /sys/class/gpio/export
# cd /sys/class/gpio/gpio7
/sys/class/gpio/gpio7# echo in > direction
/sys/class/gpio/gpio7# cat value
0
/sys/class/gpio/gpio7# cat value
1
lecture
écriture
Utilisation du bash pour
lire et écrire sur les E/S
01/11/2019 Colloque GEII Longwy 16
IOT Séance 5 : Programmation C Linux : Solution 1 -> sysfs (2)
Ecriture 1 sur PA10 , utilisation de sysfs, programmation C
FILE *f;
char file[128];
f = fopen("/sys/class/gpio/export", "w");
if(f==NULL) throw GPIOException("can't export GPIO pin .check access rights");
fprintf(f, "%dn", 10);
fclose(f);
sprintf(file, "/sys/class/gpio/gpio%d/direction", 10);
f = fopen(file,"w"));
fprintf(f, "outn");
fclose(f);
sprintf(file, "/sys/class/gpio/gpio%d/value", 10);
f = fopen(file,"w"));
fprintf(f, "1n");
fclose(f);
// Set out direction
write(fd, "out", 3);
// Set in direction
write(fd, "in", 2);
close(fd);
int fd;
fd = open(file, O_WRONLY);
// Set GPIO high status
write(fd, "1", 1);
01/11/2019 Colloque GEII Longwy 17
IOT Séance 5 : Programmation C Linux, solution 3 (principe)
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#define GPIO_BASE 0x01C20800
volatile unsigned int *PADR;
volatile unsigned int *PADDR;
int main (void) {
unsigned char **gpio;
int fd;
fd = open("/dev/mem", O_RDWR);
if (fd < 0) { perror("Failed to open /dev/mem");
return fd;
}
*gpio = mmap (0, getpagesize(), PROT_READ|PROT_WRITE, MAP_SHARED, fd, GPIO_BASE);
PEDR = (unsigned int *)(*gpio + 0x20);
PEDDR = (unsigned int *)(*gpio + 0x24);
*PEDDR = 0xff; //set output
*PEDR = 0x02; // turn ON Red LED (port E1);
return 0;
}
https://github.com/zhaolei/WiringOP
C’est ce qui est fait dans la bibliothèque wiringPi
Programmation directe dans les registres
01/11/2019 Colloque GEII Longwy 18
IOT Séance 5 : Programmation C Linux – wiringPi (1)
Utilisation des executables de wiringPi dans le bash pour lire et écrire sur les E/S
Installation de wiringPi et compilation et installation des executables et bibliothèques
Exemples de commandes pour la broche 0
git clone https://github.com/zhaolei/WiringOP.git -b h3
cd WiringOP
chmod +x ./build
sudo ./build
gpio mode 3 out
gpio write 3 1
gpio mode 21 up
gpio mode 21 down
gpio mode 21 tri
gpio read 21
0
gpio readall
lecture
Choix du
mode
écriture
01/11/2019 Colloque GEII Longwy 19
IOT Séance 5 : Programmation C Linux – wiringPi (2)
Utilisation de la bibliothèque
wiringPi en C pour lire et écrire sur
les E/S – Presque identique à la
bibliothèque Arduino…
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
if(wiringPiSetup()==-1){
printf("error"!n");
}
for (i=1;i<=6;i+=1){
pinMode(i,OUTPUT);
}
while(1)
for (i=1;i<=6;i+=1){
digitalWrite(i,HIGH);
delay(100);
digitalWrite(i,LOW);
delay(100);
}
01/11/2019 Colloque GEII Longwy 20
IOT Séance 6 : premiers pas avec l’I2C sous Linux via le bash
Test i2C avec le bash sur un PCF8574 et le paquet i2c-tools
Ajout du driver i2C-0
#sudo armbian-config
installer i2c-tools
#sudo apt install i2c-tools
Détection esclave i2C
01/11/2019 Colloque GEII Longwy 21
IOT Séance 6 : premiers pas avec l’I2C sous Linux en C
Test i2C avec le PCF8574 et wiringPi en C
#include <wiringPiI2C.h>
#include <stdio.h>
#include <stdlib.h>
int main(){
int i;
if(wiringPiI2CSetup(0x38)==-1){
printf("error"!n");
}
while(1)
for (i=1;i<=6;i+=1){
wiringPiI2CWrite (fd,0);
delay(100);
wiringPiI2CWrite (fd,0xFF);
delay(100);
}
01/11/2019 Colloque GEII Longwy 22
IOT Séance 6 : Envoie de données vers ThingSpeak en C
Comment écrire des données sur Thingspeak avec le format json
http://raspberrypihobbyist.blogspot.com/2015/11/thingspeak-api-for-internet-of-things.html
https://api.thingspeak.com/update.json?api_key=<write_api_key>&field1=123
Utilisation de libcurl pour générer les requêtes GET vers thingSpeak
Comment écrire des données sur Thingspeak sans le format json
https://api.thingspeak.com/update?api_key=<write_api_key>&field1=123
{ "channel_id": 266256, "created_at": "2018-09-10T17:41:59Z", "entry_id": 2, "field1": "123", "field2": null, "field3": null, "field4": null, "field5": null, "field6": null,
"field7": null, "field8": null, "latitude": null, "longitude": null, "elevation": null, "status": null }
01/11/2019 Colloque GEII Longwy 23
IOT Séance 7 et 8 : nrf24L01+
Le nrf24L01+
250Kbps à 2Mbps
2.4GHz
1.9V – 3.6V
900nA low Power/ 11mA 0dBm
125 canaux de 1MHz
6 adresse par cannaux
SPI
Trame ACK (vérif communication)
01/11/2019 Colloque GEII Longwy 24
IOT Séance 7 et 8 : Présentation de la gateway + bananapi (1)
Solution 1 : gestion du
nrf24L01+ via
l’arduino
Promini arduino nrf24L01+
SPI
PUSH BUTTON
LEDs
FTDI (PROG)
40 pins HEADER
(bananapi)
TX/RX
TX/RX BMP180
I2C
nrf24L01+
SPI
PUSH BUTTON
LEDs
40 pins HEADER
(bananapi)
BMP180
I2C
Solution 2 : gestion du
nrf24L01+ via le
bananapi
01/11/2019 Colloque GEII Longwy 25
IOT Séance 7 et 8 : Présentation de la gateway + bananapi (2)
Schema électrique de la gateway : 2 solutions (avec Arduino ou avec bananapi)
01/11/2019 Colloque GEII Longwy 26
IOT Séance 7 et 8 : le capteur , Arduino + nrf24L01+ (1)
Le capteur Arduino promini + nrf24L01+
01/11/2019 Colloque GEII Longwy 27
IOT Séance 7 et 8 : le capteur , Arduino + nrf24L01+ (2)
Compilation programme de test sur l’Arduino (VS code + platformio)
https://www-soc.lip6.fr/trac/sesi-peri/wiki/SujetTP5-2017
01/11/2019 Colloque GEII Longwy 28
IOT Séance 7 et 8 : bananapi + nrf24L01+ (1)
Avec armbian-config installation driver spi
https://www-soc.lip6.fr/trac/sesi-peri/wiki/SujetTP5-2017
$ cd
$ mkdir nrf24l01
$ cd nrf24l01
$ git clone https://github.com/TMRh20/RF24.git
$ cd RF24
$ make
$ sudo make install
Installation de la bibliothèque RF24
01/11/2019 Colloque GEII Longwy 29
IOT Séance 7 et 8 : travail à faire
Le but de ce projet est de renvoyer l’information capteur venant de l’Arduino
nrf24L01+ mais aussi des informations venant de la gateway (BMP280) +
temperature processeur bananapi et de les renvoyer vers Thingspeak
Bananapi + gateway
nrf24L01+
Arduino + nrf24L01+
https://thingspeak.com/
01/11/2019 Colloque GEII Longwy 30
IOT Synthèse et retour de ces 8 séances
32h : durée faible par rapport au projet
Plus le sujet est bien écrit et moins l’étudiant réfléchit
Pas de rapport demandé -> implication faible de l’étudiant
Domotique, IOT, remontée information, bananapi ou autre : intérêt des étudiants
Tout à fait possible en projet
De nombreux apports techniques

Contenu connexe

Tendances

Introduction à l'IOT (Internet des objets) - Thomas DARIEL (PramaTALK)
Introduction à l'IOT (Internet des objets) - Thomas DARIEL (PramaTALK)Introduction à l'IOT (Internet des objets) - Thomas DARIEL (PramaTALK)
Introduction à l'IOT (Internet des objets) - Thomas DARIEL (PramaTALK)Pramana
 
Introduction à l'IoT: du capteur à la donnée_Presentation Mix-IT2015
Introduction à l'IoT: du capteur à la donnée_Presentation Mix-IT2015Introduction à l'IoT: du capteur à la donnée_Presentation Mix-IT2015
Introduction à l'IoT: du capteur à la donnée_Presentation Mix-IT2015Sameh BEN FREDJ
 
La conception d’un objet connecté démystifiée
La conception d’un objet connecté démystifiéeLa conception d’un objet connecté démystifiée
La conception d’un objet connecté démystifiéeIsabelle JARNIOU
 
Orange Livre Blanc IoT et Connectivité LPWA FR-2018
Orange Livre Blanc IoT et Connectivité LPWA FR-2018Orange Livre Blanc IoT et Connectivité LPWA FR-2018
Orange Livre Blanc IoT et Connectivité LPWA FR-2018Orange Dev
 
R&s 10 juin 2015 introduction xavier
R&s 10 juin 2015 introduction xavierR&s 10 juin 2015 introduction xavier
R&s 10 juin 2015 introduction xavierReseauxetservicestpa
 
Comment intégrer les objets connectés (IoT – Internet of Things) dans les TI ...
Comment intégrer les objets connectés (IoT – Internet of Things) dans les TI ...Comment intégrer les objets connectés (IoT – Internet of Things) dans les TI ...
Comment intégrer les objets connectés (IoT – Internet of Things) dans les TI ...Technologia Formation
 
Les capteurs de l'Internet des Objets, par Jean-Samuel Chenard
Les capteurs de l'Internet des Objets, par Jean-Samuel ChenardLes capteurs de l'Internet des Objets, par Jean-Samuel Chenard
Les capteurs de l'Internet des Objets, par Jean-Samuel ChenardCleverToday
 
Club SI & digital les objets connectés 20150227 v1.1
Club SI & digital les objets connectés 20150227 v1.1Club SI & digital les objets connectés 20150227 v1.1
Club SI & digital les objets connectés 20150227 v1.1Hubert Herberstein
 

Tendances (11)

Introduction à l'IOT (Internet des objets) - Thomas DARIEL (PramaTALK)
Introduction à l'IOT (Internet des objets) - Thomas DARIEL (PramaTALK)Introduction à l'IOT (Internet des objets) - Thomas DARIEL (PramaTALK)
Introduction à l'IOT (Internet des objets) - Thomas DARIEL (PramaTALK)
 
Introduction à l'IoT: du capteur à la donnée_Presentation Mix-IT2015
Introduction à l'IoT: du capteur à la donnée_Presentation Mix-IT2015Introduction à l'IoT: du capteur à la donnée_Presentation Mix-IT2015
Introduction à l'IoT: du capteur à la donnée_Presentation Mix-IT2015
 
La conception d’un objet connecté démystifiée
La conception d’un objet connecté démystifiéeLa conception d’un objet connecté démystifiée
La conception d’un objet connecté démystifiée
 
Conférence drone and iot
Conférence  drone and iotConférence  drone and iot
Conférence drone and iot
 
Orange Livre Blanc IoT et Connectivité LPWA FR-2018
Orange Livre Blanc IoT et Connectivité LPWA FR-2018Orange Livre Blanc IoT et Connectivité LPWA FR-2018
Orange Livre Blanc IoT et Connectivité LPWA FR-2018
 
R&s 10 juin 2015 introduction xavier
R&s 10 juin 2015 introduction xavierR&s 10 juin 2015 introduction xavier
R&s 10 juin 2015 introduction xavier
 
Comment intégrer les objets connectés (IoT – Internet of Things) dans les TI ...
Comment intégrer les objets connectés (IoT – Internet of Things) dans les TI ...Comment intégrer les objets connectés (IoT – Internet of Things) dans les TI ...
Comment intégrer les objets connectés (IoT – Internet of Things) dans les TI ...
 
Les capteurs de l'Internet des Objets, par Jean-Samuel Chenard
Les capteurs de l'Internet des Objets, par Jean-Samuel ChenardLes capteurs de l'Internet des Objets, par Jean-Samuel Chenard
Les capteurs de l'Internet des Objets, par Jean-Samuel Chenard
 
IFT6801-IdO
IFT6801-IdOIFT6801-IdO
IFT6801-IdO
 
Club SI & digital les objets connectés 20150227 v1.1
Club SI & digital les objets connectés 20150227 v1.1Club SI & digital les objets connectés 20150227 v1.1
Club SI & digital les objets connectés 20150227 v1.1
 
R&s 10 juin 2015 orange arnaud
R&s 10 juin 2015 orange arnaudR&s 10 juin 2015 orange arnaud
R&s 10 juin 2015 orange arnaud
 

Similaire à Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+

Sizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsSizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsPhilippeBrogi
 
Kit de survie pour l'IoT façon DIY
Kit de survie pour l'IoT façon DIYKit de survie pour l'IoT façon DIY
Kit de survie pour l'IoT façon DIYlaurenthuet
 
découverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsdécouverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsThierry Gayet
 
Mise en place vidéoconférence + chat avec Openfire
Mise en place vidéoconférence + chat avec OpenfireMise en place vidéoconférence + chat avec Openfire
Mise en place vidéoconférence + chat avec OpenfireAbdou Lahad SYLLA
 
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...jihbed
 
Git & Rstudio vincent guyader
Git & Rstudio vincent guyaderGit & Rstudio vincent guyader
Git & Rstudio vincent guyaderVincent Guyader
 
Architecture hétérogène au service de l'IoT industriel ?
Architecture hétérogène au service de l'IoT industriel ?Architecture hétérogène au service de l'IoT industriel ?
Architecture hétérogène au service de l'IoT industriel ?Pierre-jean Texier
 
Portage d'Android 8 sur Raspberry Pi 3
Portage d'Android 8 sur Raspberry Pi 3Portage d'Android 8 sur Raspberry Pi 3
Portage d'Android 8 sur Raspberry Pi 3Adrien Grassein
 
Deploiement_Lora_exo.pdf
Deploiement_Lora_exo.pdfDeploiement_Lora_exo.pdf
Deploiement_Lora_exo.pdfmerazgaammar2
 
Support Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxSupport Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxbpmana
 
Programmez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdf
Programmez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdfProgrammez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdf
Programmez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdflaminemhamed
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...ECAM Brussels Engineering School
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
Fiche de TD 1 de préparation au Baccalauréat (littéraire et scientifique) du ...
Fiche de TD 1 de préparation au Baccalauréat (littéraire et scientifique) du ...Fiche de TD 1 de préparation au Baccalauréat (littéraire et scientifique) du ...
Fiche de TD 1 de préparation au Baccalauréat (littéraire et scientifique) du ...ATPENSC-Group
 
Développement Noyau Et Driver Sous Gnu Linux
Développement Noyau Et Driver Sous Gnu LinuxDéveloppement Noyau Et Driver Sous Gnu Linux
Développement Noyau Et Driver Sous Gnu LinuxThierry Gayet
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Tp2: Installation d'une couche d’abstraction entre un robot physique et ros
Tp2: Installation d'une couche d’abstraction entre un robot physique et rosTp2: Installation d'une couche d’abstraction entre un robot physique et ros
Tp2: Installation d'une couche d’abstraction entre un robot physique et rosSaid Benaissa
 

Similaire à Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+ (20)

Sizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloadsSizing PoC LSF & PowerAI for Engineers schools workloads
Sizing PoC LSF & PowerAI for Engineers schools workloads
 
Kit de survie pour l'IoT façon DIY
Kit de survie pour l'IoT façon DIYKit de survie pour l'IoT façon DIY
Kit de survie pour l'IoT façon DIY
 
découverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspectsdécouverte du langage python dans tous ses aspects
découverte du langage python dans tous ses aspects
 
Mise en place vidéoconférence + chat avec Openfire
Mise en place vidéoconférence + chat avec OpenfireMise en place vidéoconférence + chat avec Openfire
Mise en place vidéoconférence + chat avec Openfire
 
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
NetBSD operating system: Clean Code, Ports, Anykernel, pkgsrc and Desktop pro...
 
chapitre-2.pptx.pdf
chapitre-2.pptx.pdfchapitre-2.pptx.pdf
chapitre-2.pptx.pdf
 
Git & Rstudio vincent guyader
Git & Rstudio vincent guyaderGit & Rstudio vincent guyader
Git & Rstudio vincent guyader
 
Architecture hétérogène au service de l'IoT industriel ?
Architecture hétérogène au service de l'IoT industriel ?Architecture hétérogène au service de l'IoT industriel ?
Architecture hétérogène au service de l'IoT industriel ?
 
Portage d'Android 8 sur Raspberry Pi 3
Portage d'Android 8 sur Raspberry Pi 3Portage d'Android 8 sur Raspberry Pi 3
Portage d'Android 8 sur Raspberry Pi 3
 
Deploiement_Lora_exo.pdf
Deploiement_Lora_exo.pdfDeploiement_Lora_exo.pdf
Deploiement_Lora_exo.pdf
 
Support Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxSupport Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptx
 
Programmez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdf
Programmez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdfProgrammez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdf
Programmez un Raspberry Pi - Initiation avec Python (Simon Monk) (z-lib.org).pdf
 
Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...Développement informatique : Gestion de projet, versioning, debugging, testin...
Développement informatique : Gestion de projet, versioning, debugging, testin...
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
Fiche de TD 1 de préparation au Baccalauréat (littéraire et scientifique) du ...
Fiche de TD 1 de préparation au Baccalauréat (littéraire et scientifique) du ...Fiche de TD 1 de préparation au Baccalauréat (littéraire et scientifique) du ...
Fiche de TD 1 de préparation au Baccalauréat (littéraire et scientifique) du ...
 
Raspberry Pi: Les utilisations
Raspberry Pi: Les utilisationsRaspberry Pi: Les utilisations
Raspberry Pi: Les utilisations
 
Développement Noyau Et Driver Sous Gnu Linux
Développement Noyau Et Driver Sous Gnu LinuxDéveloppement Noyau Et Driver Sous Gnu Linux
Développement Noyau Et Driver Sous Gnu Linux
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Tp2: Installation d'une couche d’abstraction entre un robot physique et ros
Tp2: Installation d'une couche d’abstraction entre un robot physique et rosTp2: Installation d'une couche d’abstraction entre un robot physique et ros
Tp2: Installation d'une couche d’abstraction entre un robot physique et ros
 

Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+

  • 1. Expérience IOT ER4 S4 apprentis IOT Jean-Louis.SALVAT@univ-cotedazur.fr
  • 2. 01/11/2019 Colloque GEII Longwy 1 IOT 1 séance ESP8266/envoie de données vers Thingspeak (Wifi) 3 séances prise en main bananapi - Linux 4 séances programmation C et IOT - Linux 1 séance programmation C Linux avec gestion E/S 1 séance lecture I2C (BMP280) et temperature processeur et envoie données vers ThingSpeak 1 séance Arduino avec NRF24L01+ et envoie données vers gateway sur bananapi 1 séance : finalisation séance précédente, recuperation de toutes les informations et envoie vers ThingSpeak Module ER4 – 32 heures – 8 séances de 4h
  • 3. 01/11/2019 Colloque GEII Longwy 2 IOT ESP8266 (SOC) MCU 160MHz 32 bits [2.5V;3.6V] Flash > 512ko - RAM > 64ko Wifi 802.11 b/g/n Programmation en C (SDK Espressif) Arduino Lua Séance 1 : ESP8266 et ThingSpeak (1)
  • 4. 01/11/2019 Colloque GEII Longwy 3 IOT ESP8266, VS code et platformio Séance 1 : ESP8266 et ThingSpeak (2)
  • 5. 01/11/2019 Colloque GEII Longwy 4 IOT Séance 1 : ESP8266 et ThingSpeak (3) void setup() { Serial.begin(115200); // Initialize serial WiFi.mode(WIFI_STA); ThingSpeak.begin(client); // Initialize ThingSpeak } void loop() { if(WiFi.status() != WL_CONNECTED){ Serial.print("Attempting to connect to SSID: "); Serial.println(SECRET_SSID); while(WiFi.status() != WL_CONNECTED){ WiFi.begin(ssid, pass); // Connect to WPA/WPA2 network. Serial.print("."); delay(5000); } Serial.println("nConnected."); }
  • 6. 01/11/2019 Colloque GEII Longwy 5 IOT Séance 1 : ESP8266 et ThingSpeak (4) // on associe les champs thingspeak au nombre generés ThingSpeak.setField(1, number1); ThingSpeak.setField(2, number2); // write to the ThingSpeak channel int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); if(x == 200){ Serial.println("Channel update successful."); } else{ Serial.println("Problem updating channel. HTTP error code " + String(x)); } // change the values number1++; // compteur if(number1 > 99){ number1 = 0; } number2 = random(0,100); delay(20000); // Wait 20 seconds to update the channel again }
  • 7. 01/11/2019 Colloque GEII Longwy 6 IOT Séance 1 : ESP8266 et ThingSpeak (5) Résultat sur https://thingspeak.com/
  • 8. 01/11/2019 Colloque GEII Longwy 7 IOT Séance 2-4 : cible Linux, les solutions Raspberry Pi 3 B+ Orange Pi Zero Bananapi M2+ 4 x Processeur Broadcom BCM2837B0 Cortex-A53 64-bit SoC 1,4 GHz + GPU RAM : 1 Go SDRAM BLE Wifi Ethernet USB Raspbian 4 x Processeur AllWinner H2+ 32-bit SoC 1,2 GHz + GPU RAM : 512 Mo SDRAM BLE Wifi Ethernet USB Armbian 4 x Processeur AllWinner H3 32-bit SoC 1,2 GHz + GPU RAM : 1 Go SDRAM Flash MMC 8Go BLE Wifi Ethernet USB Armbian
  • 9. 01/11/2019 Colloque GEII Longwy 8 IOT Séance 2-4 : Bananapi connexion : Solution 1 et 2 Le port com 17 a été associé à votre connexion USB vers la cible Le port com 3 a été associé à votre FTDI Solution 1 : connexion TeraTerm ou putty via un cable USB/micro Solution 2 : connexion TeraTerm ou putty via FTDI sur port Debug TX:RX
  • 10. 01/11/2019 Colloque GEII Longwy 9 IOT Séance 2-4 : Bananapi connexion: Solution 3 et 4 Routeur sudo nmtui Box ADSL ou fibre Solution 3 : connexion putty sur ethernet en SSH Solution 4 : connexion putty en Wifi SSH
  • 11. 01/11/2019 Colloque GEII Longwy 10 IOT Séance 2-4 : Bananapi et Linux : copier des fichiers Monter une clé usb et copier des fichiers du PC vers la cible sudo mount /dev/sda1 /media sudo cp –r /media/rep_a_copier ~/nouveau_rep more /proc/partitions Copier des fichers du PC vers la cible en utilisant Winscp Votre home sur la cible
  • 12. 01/11/2019 Colloque GEII Longwy 11 IOT Séance 2-4 : Bananapi et Linux : une interface graphique ? Il est possible de travailler avec une interface graphique à la place d’une connexion SSH. Dans ce cas 2 solutions : utilizer un clavier,souris écran ou bien VNCViewer sur votre PC routeur Le bananapi est un « PC » Linux. Il faut donc un clavier, une souris et un écran en plus du poste de travail On utilise la souris, le clavier et l’écran du poste de travail et on utilise VNCViewer sur le poste de travail pour se connecter sur le bananapi sudo apt-get install xfwm4 xfce4-panel xfce4-settings xfce4-session xfce4-terminal xfdesktop4 xfce4-taskmanager tango-icon-theme sudo apt-get install xfonts-base thunar mousepad lightdm lightdm-gtk-greeter tightvncserver
  • 13. 01/11/2019 Colloque GEII Longwy 12 IOT Séance 2-4 : Bananapi et Linux : Programmation Utilisation du fichier Makefile gcc main.c –o test ./test CC=gcc all: main.c calc.c ${CC} -o test main.c calc.c clean: @echo "Cleaning up..." rm *.o test Utilisation de gcc Utilisation de Geany ou Codeblocks make all ./test Résultat :
  • 14. 01/11/2019 Colloque GEII Longwy 13 IOT Séance 2-4 : Bananapi et Linux -> le shell Un ensemble de questions : l’étudiant répond aux questions en utilisant le site commandes explications exemples nano –c Editeur avec affichage du numéro de ligne nano –c test.txt pwd Path directory (Where we are) pwd whereis Where is exécutable whereis armbian-config ls ‐a shows all (including hidden fi les) ‐l displays long format ‐R gives a recursive listing ‐r gives a reverse listing ‐t sorts last modifi ed ‐S sorts by file size ‐h gives human readable file sizes ls –al ls -lt cd Change directory cd cd / pour aller à la racine cd .. pour remonter d’un cran cd ../../test mkdir Make directory mkdir rep rm Delete a file ‐r recursive delete (use for directories) ‐d remove empty directories rm –r mon_rep/ cp ‐r recursive copy cp test.txt test1.txt https://linuxjourney.com/
  • 15. 01/11/2019 Colloque GEII Longwy 14 IOT Séance 5 : Programmation C Linux avec gestion E/S 3 solutions pour accéder aux GPIO sous Linux /dev/gpiochip0 Ioctl()write() /sys/class/gpio /dev/mem Solution 1 Solution 2 Solution 3 Registres de gestion des ports CPU-PORT Extrait du datasheet du H3 Allwinner Adresse de base des Ports E/S
  • 16. 01/11/2019 Colloque GEII Longwy 15 IOT Séance 5 : Programmation C Linux : solution 1 -> sysfs (1) $ sudo sh # echo 3 > /sys/class/gpio/export # echo out > /sys/class/gpio/gpio3/direction # echo 1 > /sys/class/gpio/gpio3/value # echo 0 > /sys/class/gpio/gpio3/value # echo 7 > /sys/class/gpio/export # cd /sys/class/gpio/gpio7 /sys/class/gpio/gpio7# echo in > direction /sys/class/gpio/gpio7# cat value 0 /sys/class/gpio/gpio7# cat value 1 lecture écriture Utilisation du bash pour lire et écrire sur les E/S
  • 17. 01/11/2019 Colloque GEII Longwy 16 IOT Séance 5 : Programmation C Linux : Solution 1 -> sysfs (2) Ecriture 1 sur PA10 , utilisation de sysfs, programmation C FILE *f; char file[128]; f = fopen("/sys/class/gpio/export", "w"); if(f==NULL) throw GPIOException("can't export GPIO pin .check access rights"); fprintf(f, "%dn", 10); fclose(f); sprintf(file, "/sys/class/gpio/gpio%d/direction", 10); f = fopen(file,"w")); fprintf(f, "outn"); fclose(f); sprintf(file, "/sys/class/gpio/gpio%d/value", 10); f = fopen(file,"w")); fprintf(f, "1n"); fclose(f); // Set out direction write(fd, "out", 3); // Set in direction write(fd, "in", 2); close(fd); int fd; fd = open(file, O_WRONLY); // Set GPIO high status write(fd, "1", 1);
  • 18. 01/11/2019 Colloque GEII Longwy 17 IOT Séance 5 : Programmation C Linux, solution 3 (principe) #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <sys/mman.h> #define GPIO_BASE 0x01C20800 volatile unsigned int *PADR; volatile unsigned int *PADDR; int main (void) { unsigned char **gpio; int fd; fd = open("/dev/mem", O_RDWR); if (fd < 0) { perror("Failed to open /dev/mem"); return fd; } *gpio = mmap (0, getpagesize(), PROT_READ|PROT_WRITE, MAP_SHARED, fd, GPIO_BASE); PEDR = (unsigned int *)(*gpio + 0x20); PEDDR = (unsigned int *)(*gpio + 0x24); *PEDDR = 0xff; //set output *PEDR = 0x02; // turn ON Red LED (port E1); return 0; } https://github.com/zhaolei/WiringOP C’est ce qui est fait dans la bibliothèque wiringPi Programmation directe dans les registres
  • 19. 01/11/2019 Colloque GEII Longwy 18 IOT Séance 5 : Programmation C Linux – wiringPi (1) Utilisation des executables de wiringPi dans le bash pour lire et écrire sur les E/S Installation de wiringPi et compilation et installation des executables et bibliothèques Exemples de commandes pour la broche 0 git clone https://github.com/zhaolei/WiringOP.git -b h3 cd WiringOP chmod +x ./build sudo ./build gpio mode 3 out gpio write 3 1 gpio mode 21 up gpio mode 21 down gpio mode 21 tri gpio read 21 0 gpio readall lecture Choix du mode écriture
  • 20. 01/11/2019 Colloque GEII Longwy 19 IOT Séance 5 : Programmation C Linux – wiringPi (2) Utilisation de la bibliothèque wiringPi en C pour lire et écrire sur les E/S – Presque identique à la bibliothèque Arduino… #include <wiringPi.h> #include <stdio.h> #include <stdlib.h> int main() { int i; if(wiringPiSetup()==-1){ printf("error"!n"); } for (i=1;i<=6;i+=1){ pinMode(i,OUTPUT); } while(1) for (i=1;i<=6;i+=1){ digitalWrite(i,HIGH); delay(100); digitalWrite(i,LOW); delay(100); }
  • 21. 01/11/2019 Colloque GEII Longwy 20 IOT Séance 6 : premiers pas avec l’I2C sous Linux via le bash Test i2C avec le bash sur un PCF8574 et le paquet i2c-tools Ajout du driver i2C-0 #sudo armbian-config installer i2c-tools #sudo apt install i2c-tools Détection esclave i2C
  • 22. 01/11/2019 Colloque GEII Longwy 21 IOT Séance 6 : premiers pas avec l’I2C sous Linux en C Test i2C avec le PCF8574 et wiringPi en C #include <wiringPiI2C.h> #include <stdio.h> #include <stdlib.h> int main(){ int i; if(wiringPiI2CSetup(0x38)==-1){ printf("error"!n"); } while(1) for (i=1;i<=6;i+=1){ wiringPiI2CWrite (fd,0); delay(100); wiringPiI2CWrite (fd,0xFF); delay(100); }
  • 23. 01/11/2019 Colloque GEII Longwy 22 IOT Séance 6 : Envoie de données vers ThingSpeak en C Comment écrire des données sur Thingspeak avec le format json http://raspberrypihobbyist.blogspot.com/2015/11/thingspeak-api-for-internet-of-things.html https://api.thingspeak.com/update.json?api_key=<write_api_key>&field1=123 Utilisation de libcurl pour générer les requêtes GET vers thingSpeak Comment écrire des données sur Thingspeak sans le format json https://api.thingspeak.com/update?api_key=<write_api_key>&field1=123 { "channel_id": 266256, "created_at": "2018-09-10T17:41:59Z", "entry_id": 2, "field1": "123", "field2": null, "field3": null, "field4": null, "field5": null, "field6": null, "field7": null, "field8": null, "latitude": null, "longitude": null, "elevation": null, "status": null }
  • 24. 01/11/2019 Colloque GEII Longwy 23 IOT Séance 7 et 8 : nrf24L01+ Le nrf24L01+ 250Kbps à 2Mbps 2.4GHz 1.9V – 3.6V 900nA low Power/ 11mA 0dBm 125 canaux de 1MHz 6 adresse par cannaux SPI Trame ACK (vérif communication)
  • 25. 01/11/2019 Colloque GEII Longwy 24 IOT Séance 7 et 8 : Présentation de la gateway + bananapi (1) Solution 1 : gestion du nrf24L01+ via l’arduino Promini arduino nrf24L01+ SPI PUSH BUTTON LEDs FTDI (PROG) 40 pins HEADER (bananapi) TX/RX TX/RX BMP180 I2C nrf24L01+ SPI PUSH BUTTON LEDs 40 pins HEADER (bananapi) BMP180 I2C Solution 2 : gestion du nrf24L01+ via le bananapi
  • 26. 01/11/2019 Colloque GEII Longwy 25 IOT Séance 7 et 8 : Présentation de la gateway + bananapi (2) Schema électrique de la gateway : 2 solutions (avec Arduino ou avec bananapi)
  • 27. 01/11/2019 Colloque GEII Longwy 26 IOT Séance 7 et 8 : le capteur , Arduino + nrf24L01+ (1) Le capteur Arduino promini + nrf24L01+
  • 28. 01/11/2019 Colloque GEII Longwy 27 IOT Séance 7 et 8 : le capteur , Arduino + nrf24L01+ (2) Compilation programme de test sur l’Arduino (VS code + platformio) https://www-soc.lip6.fr/trac/sesi-peri/wiki/SujetTP5-2017
  • 29. 01/11/2019 Colloque GEII Longwy 28 IOT Séance 7 et 8 : bananapi + nrf24L01+ (1) Avec armbian-config installation driver spi https://www-soc.lip6.fr/trac/sesi-peri/wiki/SujetTP5-2017 $ cd $ mkdir nrf24l01 $ cd nrf24l01 $ git clone https://github.com/TMRh20/RF24.git $ cd RF24 $ make $ sudo make install Installation de la bibliothèque RF24
  • 30. 01/11/2019 Colloque GEII Longwy 29 IOT Séance 7 et 8 : travail à faire Le but de ce projet est de renvoyer l’information capteur venant de l’Arduino nrf24L01+ mais aussi des informations venant de la gateway (BMP280) + temperature processeur bananapi et de les renvoyer vers Thingspeak Bananapi + gateway nrf24L01+ Arduino + nrf24L01+ https://thingspeak.com/
  • 31. 01/11/2019 Colloque GEII Longwy 30 IOT Synthèse et retour de ces 8 séances 32h : durée faible par rapport au projet Plus le sujet est bien écrit et moins l’étudiant réfléchit Pas de rapport demandé -> implication faible de l’étudiant Domotique, IOT, remontée information, bananapi ou autre : intérêt des étudiants Tout à fait possible en projet De nombreux apports techniques