Académique Documents
Professionnel Documents
Culture Documents
T
Expérience IOT
ER4 S4 apprentis
Jean-Louis.SALVAT@univ-cotedazur.fr
IO Module ER4 – 32 heures – 8 séances de 4h
T
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
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.");
}
// change the
values number1++; //
compteur if(number1 >
99){
number1 = 0;
}
number2 =
random(0,100); Colloque GEII Longwy 5
}
18/ 06/2019 delay(20000);
IO Séance 1 : ESP8266 et ThingSpeak (5)
T Résultat sur https://thingspeak.com/
Solution 2 : connexion TeraTerm ou putty via FTDI sur port Debug TX:RX Le port com 3 a été associé à
votre FTDI
Routeur
sudo nmtui
Solution 4 :
connexion putty
en Wifi SSH
Box
ADSL ou fibre
Votre home
sur la cible
routeur
Registres de
gestion des
ports
CPU-PORT
write() Ioctl()
/dev/mem
Solution 3
18/06/2019 Colloque GEII Longwy 14
IO Séance 5 : Programmation C Linux : solution 1 -> sysfs (1)
T
Utilisation du bash pour
lire et écrire sur les E/S
lecture
écriture
# echo 7 > /sys/class/gpio/export $ sudo sh
# cd /sys/class/gpio/gpio7 # echo 3 > /sys/class/gpio/export
/sys/class/gpio/gpio7# echo in > # echo out > /sys/class/gpio/gpio3/direction
direction # echo 1 > /sys/class/gpio/gpio3/value
/sys/class/gpio/gpio7# cat value # echo 0 > /sys/class/gpio/gpio3/value
0
/sys/class/gpio/gpio7# cat value
1
18/06/2019 Colloque GEII Longwy 15
IO Séance 5 : Programmation C Linux : Solution 1 -> sysfs (2)
T
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, "%d\n", 10);
fclose(f);
int fd;
fd = open(file, O_WRONLY);
sprintf(file, "/sys/class/gpio/gpio%d/direction", 10); // Set out direction
f = fopen(file,"w")); write(fd, "out", 3);
fprintf(f, "out\n"); // Set in direction
write(fd, "in", 2);
fclose(f);
close(fd);
sprintf(file, "/sys/class/gpio/gpio%d/value", 10);
// Set GPIO high status
f = fopen(file,"w"));
write(fd, "1", 1);
fprintf(f, "1\n");
fclose(f);
18/06/2019 Colloque GEII Longwy 16
IO Séance 5 : Programmation C Linux, solution 3 (principe)
T #include <stdio.h>
#include <unistd.h> Programmation directe dans les registres
#include <fcntl.h>
#include <sys/mman.h>
#define GPIO_BASE 0x01C20800
volatile unsigned int *PADR; C’est ce qui est fait dans la bibliothèque wiringPi
volatile unsigned int *PADDR;
installer i2c-tools
#sudo apt install i2c-tools
http://raspberrypihobbyist.blogspot.com/2015/11/thingspeak-api-for-internet-of-things.html
FTDI (PROG)
TX/RX LEDs
nrf24L01+
LEDs
SPI
SPI
Promini arduino nrf24L01+
PUSH BUTTON
BMP180
PUSH I2C
BUTTON TX/RX BMP180 40 pins HEADER
I2C (bananapi)
40 pins HEADER
(bananapi)
https://thingspeak.com/