Table des matières:

Enregistreur de données Raspberry Pi Zero W : 8 étapes (avec photos)
Enregistreur de données Raspberry Pi Zero W : 8 étapes (avec photos)

Vidéo: Enregistreur de données Raspberry Pi Zero W : 8 étapes (avec photos)

Vidéo: Enregistreur de données Raspberry Pi Zero W : 8 étapes (avec photos)
Vidéo: 5 MEILLEURS Projets Raspberry Pi !! GENIAUX !! Home Assistant, OSMC, RecalBox, AdGuard, NextCloud 2024, Novembre
Anonim
Enregistreur de données Raspberry Pi Zero W
Enregistreur de données Raspberry Pi Zero W

À l'aide d'un Raspberry Pi Zero W, vous pouvez créer un enregistreur de données bon marché et facile à utiliser, qui peut être soit connecté à un réseau wifi local, soit servir de point d'accès sur le terrain qui vous permet de télécharger des données sans fil avec votre smartphone.

J'ai présenté cette configuration à l'American Geophysical Union Fall Meeting 2017, comme un moyen de créer votre propre configuration d'enregistreur de données. Vous pouvez retrouver cette présentation ici.

Ce dont vous aurez besoin:

  • Un Raspberry Pi Zero W
  • Une carte micro SD
  • un câble USB ou une alimentation USB
  • Un ordinateur avec un lecteur de carte USB
  • Facultatif (mais utile):

    • adaptateur miniHDMI -> HDMI (pour connecter le Pi à un écran)
    • Adaptateur USB OTG (pour connecter un clavier au Pi

Étape 1: Configurer Pi Zero W

Pour commencer, placez une image Rasbian sur une carte microSD (dans ce tutoriel, j'ai utilisé 2017-07-05-raspbian-jessie-lite, disponible ici). Une version allégée peut être utilisée (sans bureau) car la configuration se fera via la ligne de commande.

Insérez la carte SD dans le Pi, connectez l'écran et un clavier, et allumez-le en branchant le câble d'alimentation. Une configuration sans tête est également possible, mais nécessiterait une connexion via SSH.

Une fois que le Pi a démarré, connectez-vous (nom d'utilisateur par défaut: pi, mot de passe: framboise) et modifiez le mot de passe avec la commande « passwd ».

Le clavier peut être configuré en saisissant « sudo raspi-config » dans le terminal.

Étape 2: Connectez-vous au Wi-Fi

Se connecter au Wi-Fi
Se connecter au Wi-Fi
Se connecter au Wi-Fi
Se connecter au Wi-Fi
Se connecter au Wi-Fi
Se connecter au Wi-Fi
Se connecter au Wi-Fi
Se connecter au Wi-Fi

Pour se connecter à Internet, nous dirons au Pi à quel réseau se connecter. Commencez par ouvrir le fichier suivant;

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Ici, ajoutez les informations sur le réseau en bas;

réseau={

ssid="nom du réseau" psk="mot de passe du réseau" }

Dans le cas d'un réseau d'entreprise, vous pouvez utiliser la configuration suivante (ajuster WPA-EAP // TTLA // MSCHAPv2 aux paramètres applicables).

réseau={

ssid="ssid" #Entrez votre nom de réseau key_mgmt=WPA-EAP eap=TTLS identity="xxxxx" #Entrez le mot de passe de votre compte de connexion="xxxxx" #Entrez le passwork phase2="auth=MSCHAPv2" }

Enregistrez en appuyant sur CTRL+O et quittez avec CTRL+X.

Référencez maintenant votre fichier de configuration dans /etc/network/interfaces

sudo nano /etc/network/interfaces

Remplacez la partie wlan0 par:

WLAN 0 automatique

iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Encore une fois, enregistrez le fichier (CTRL+O) puis quittez (CTRL+X).

Après le redémarrage (redémarrage sudo), votre connexion wifi devrait fonctionner. Vous pouvez tester ceci en cinglant un site Web;

ping www.google.com

Annuler le ping avec CTRL+C

Pour vous connecter au Pi via SSH sans fil, vous devez activer SSH:

sudo raspi-config

Accédez à "5 options d'interfaçage" et activez SSH. Revenez ensuite en arrière et quittez la configuration.

Recherchez l'adresse IP du Pi:

ifconfig

L'IP sera sous "inet addr:" de l'interface wlan0.

Vous pouvez maintenant vous connecter au Pi via WiFi, si vous êtes sur le même réseau. Téléchargez Putty (pour Windows), entrez l'adresse IP que vous avez trouvée sous "Nom d'hôte" et appuyez sur "Ouvrir". Après avoir accepté l'avertissement, vous devriez maintenant pouvoir voir la ligne de commande et vous connecter.

Étape 3: Mettre à jour et installer le logiciel requis

Mettre à jour et installer le logiciel requis
Mettre à jour et installer le logiciel requis
Mettre à jour et installer le logiciel requis
Mettre à jour et installer le logiciel requis

Une fois que le WiFi fonctionne, mettez à jour le Pi avec:

sudo apt-get update -y && sudo apt-get upgrade -y

Une fois la mise à jour terminée (cela peut prendre un certain temps), installez le logiciel avec lequel nous utiliserons;

sudo apt-get install python3 python3-serial apache2 -y

Étape 4: Connectez-vous à un capteur (dans cet exemple, un Arduino)

Connectez l'Arduino avec un clavier à l'aide d'un concentrateur USB ou connectez l'Arduino via le seul port USB et effectuez la configuration avec SSH via WiFi.

Pour pouvoir accéder au port série auquel l'Arduino est connecté, il est utile de donner accès au compte pi par défaut. Comme l'Arduino est généralement affecté au port "/dev/ttyACM0", utilisez la commande suivante pour donner à l'utilisateur "pi" l'accès au port:

sudo chown pi: /dev/ttyACM0

En supposant que l'Arduino a déjà été configuré pour envoyer des données via le port série, vous pouvez afficher les données en python de la manière suivante:

Python ouvert;

python3

Importer la série:

importer la série

Ouvrez le port com:

ser = serial. Serial(port = '/dev/ttyACM0', vitesse de transmission = 9600, délai d'attente = 5)

Où le débit en bauds de l'Arduino a été fixé à 9600 dans ce cas.

Vous pouvez lire et imprimer une ligne en exécutant le code suivant:

ser.readline().decode('utf-8')

Si cela fonctionne, vous pouvez fermer la connexion et quitter Python avec:

ser.close()

sortir()

Étape 5: Configurer les capacités du point d'accès WiFi

En configurant votre Pi Zero W en mode point d'accès wifi, vous pouvez vous y connecter avec n'importe quel appareil wifi. Cela permet de configurer l'enregistreur et de télécharger des données via wifi, aucun câble ou pilote requis.

Pour cela, Adafruit dispose d'un bon tutoriel. Quelques petites remarques:

  • Pour le pilote /etc/hostapd/hostapd.conf, n'utilisez pas la ligne du pilote.
  • L'étape "Mettre à jour hostapd" ne devrait pas être nécessaire.

Si le point d'accès ne fonctionne pas à la fin du tutoriel, essayez de redémarrer le Pi (redémarrage sudo).

Étape 6: Basculer entre les modes point d'accès Wifi et client

Parfois, vous souhaiterez mettre à jour le logiciel ou installer un nouveau logiciel sur votre Raspberry Pi, mais cela nécessite une connexion Internet. Heureusement, basculer entre les deux est très facile.

Connectez-vous au Pi avec SSH (via un câble, pas le wifi !). Commencez par arrêter les services du point d'accès:

sudo cystemctl arrêter hostapd.service

sudo cystemctl arrêter isc-dhcp-server.service

Modifiez ensuite le fichier d'interfaces réseau:

sudo nano /etc/network/interfaces

Ici, vous devez commenter les paramètres d'hébergement et dé-commenter les paramètres de connexion réseau. Changez-le de ceci:

#-Paramètres d'hébergement:

allow-hotplug wlan0 iface wlan0 inet static address 192.168.42.1 netmask 255.255.255.0 #-Paramètres réseau (client): #auto wlan0 # iface wlan0 inet dhcp # wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Pour ça:

#-Paramètres d'hébergement:#allow-hotplug wlan0 #iface wlan0 inet static # address 192.168.42.1 # netmask 255.255.255.0 #-Paramètres réseau (client): auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Enregistrez et fermez le fichier.

Ensuite, vous exécutez les commandes suivantes:

sudo systemctl démarrer wpa_supplicant.service

sudo ifdown wlan0 sudo ifup wlan0

Maintenant, votre Pi devrait se connecter à nouveau au wifi, vous permettant de mettre à jour et d'installer le logiciel.

Pour revenir au mode point d'accès, basculez les commentaires dans /etc/network/interfaces et redémarrez le Pi.

Étape 7: Remarques finales

Remarques finales
Remarques finales

Configuration du site Web

Le serveur Apache est situé dans /var/www/. Pour modifier la page par défaut, modifiez le fichier /var/www/html/index.html.

Vous pouvez rendre des fichiers ici disponibles pour téléchargement via la connexion wifi, en naviguant dans votre navigateur jusqu'à l'adresse IP du Pi (192.168.42.1). Tout appareil compatible wifi peut ensuite les télécharger sans logiciel supplémentaire.

connexion SFTP

Sur SSH, une connexion FTP peut être établie. Vous pouvez utiliser Filezilla pour transférer rapidement et facilement une grande quantité de fichiers (voir image).

Horloge en temps réel

Comme l'horloge interne du Pi dérivera considérablement s'il n'y a pas de connexion à Internet, un module d'horloge en temps réel (RTC) sera nécessaire si un chronométrage précis est requis. L'un de ces modules est le RasClock, les instructions d'installation peuvent être trouvées ici. D'autres horloges basées sur i2c sont également disponibles (par exemple DS3231)

Conclusion

Si tout s'est bien passé, vous devriez maintenant avoir un enregistreur de données Pi Zero fonctionnel ! Un exemple de script de journalisation Python est inclus dans l'étape suivante.

Étape 8: Exemple de script de journalisation Python

importer le système d'exploitation

importer la série à partir de l'heure importer l'heure à partir de la date et l'heure importer la date et l'heure importer numpy en tant que np ser = serial. Serial(port = 'COM4', baudrate = 57600, timeout = 5) directory = r'\var\www\html\data\anemometer\WMPro1352_ ' ser.flushInput() ser.flushOutput() try: while True: day_timestring = datetime.strftime(datetime.now(), '%Y%m%d') file_today = directory + day_timestring + '.dat' #Lire données et obtenez immédiatement la ligne de temps = ser.readline().decode('utf-8') nowtime = datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M:% S.%f') line = line.split(', ') try: u = float(line[1]) sauf: u = np.nan try: v = float(line[2]) sauf: v = np.nan try: w = float(line[3]) sauf: w = np.nan try: c = float(line[5]) sauf: c = np.nan Ts = 1/403 * c**2 - 273.15 essayez: Ta = float(line[8]) sauf: Ta = np.nan if (os.path.isfile(file_today)): avec open(file_today, 'a') comme fileobject: fileobject.write(nowtime+', ') fileobject.write(str(u)+', '+str(v)+', '+str(w)+', '+str(c)+', '+str(Ts)+', '+ str(Ta)+'\n') objetfichier.clos e() else: avec open(file_today, 'w') comme objet-fichier: objet-fichier.write('"Time", "u", "v", "w", "c", "Ts", "Ta"\ n') fileobject.write(nowtime+', ') fileobject.write(str(u)+', '+str(v)+', '+str(w)+', '+str(c)+', '+str(Ts)+', '+str(Ta)+'\n') fileobject.close() sauf KeyboardInterrupt: ser.close()

Conseillé: