Table des matières:
- Fournitures
- Étape 1: le code
- Étape 2: La carte
- Étape 3: La fête de la colle chaude
- Étape 4: Le produit fini
Vidéo: ESP32 Scraper-parser-mailer et Live Mapper : 4 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Bonjour le monde! C'est mon premier Instructable ! Je suis Marco de Grosseto Italie, je ne suis pas développeur, je ne suis pas ingénieur en électronique mais je suis guide environnemental dans notre parc naturel local (parc naturel de la Maremme).
Dans ma coopérative, nous travaillons beaucoup avec des excursions en canoë, des excursions naturalistes et calmes sur la rivière Ombrone pour observer les oiseaux et se détendre un peu.
Mais la rivière Ombrone est aussi célèbre pour son type de débit caractéristique: de l'été "zéro" à l'automne-hiver, un débit de plusieurs milliers de mètres cubes d'eau par heure.
Pour cette raison, la rivière Ombrone est surveillée en permanence par l'excellent service hydrométrique régional (SIR), avec un site fantastique qui met à disposition les données collectées.
On attend maintenant la fin de la saison et les premières crues d'automne pour enlever le quai et les canoës…
Mais quand commence-t-on à parler de scraping parsing esp32ing etc? encore un instant
Pendant le verrouillage italien, j'ai fait la première leçon de clignotement d'arduino, cool… et j'ai continué à jouer avec les capteurs et l'arduino C. Donc, si vous trouvez mon code brut ou plein de lacunes logiques absurdes, considérez ceci!
J'ai fait beaucoup de choses juste pour perdre du temps mais avec ce risque constant d'inondation j'ai décidé de faire quelque chose de cool: grâce à un ESP32 avec un facteur de forme arduino (Wemos d1 r32) que j'ai gardé emballé pendant des mois car je pensais "difficile", j'ai vraiment eu beaucoup de satisfactions:
J'ai fait un grattoir qui apporte et analyse les données d'une page Web SIR et affiche les variables obtenues sur un écran LCD i2c bon marché, et sous forme de clignotement de fréquence de luminosité sur certaines leds sur une carte réaliste.
donc si une inondation vient du flanc de la montagne je serai prévenu par la luminosité croissante (changement de niveau) et par la fréquence croissante (changement de niveau en une heure) des leds sur la carte… mais l'ESP32 peut aussi envoyer des mails ! Alors pourquoi ne pas créer une fonction pour cela ?
allons voir le code ci-dessous maintenant!
Fournitures
- Carte basée sur ESP32: j'ai utilisé Wemos d1 r32 car j'ai des broches femelles et c'est plus facile à manipuler
- leds, le rouge est plus "alerte comme"
- I2C 16x2 LCD iv'e seulement un bleu mais le vert est plus élégant
- panneau de liège pas cher
- la nuit (facultatif)
Étape 1: le code
en ligne, je n'ai trouvé que des tutoriels vaporeux qui utilisent des sites externes pour analyser les données, j'ai donc essayé de tester la puissance des cœurs esp32 en analysant les données directement sur la carte… sans problème !
donc si vous visualisez la source de la page SIR, vous pouvez comprendre comment cela fonctionne: heureusement, ils utilisent des valeurs "séparées par des virgules" pour afficher leurs données, donc avec ce code, je recherche une station hydrographique (code TOSnumber) et compte le nombre de virgules (comme séparateur) qui contiennent la valeur que je veux (et la stocke en tant que variable), puis la remapper en tant que luminosité de la led et temps en millis pour le clignotement du "niveau de variation"
Le noyau de ce scraper se trouve dans l'onglet
ind = payload.indexOf("TOSstation_number"); // obtient la position (ind) à partir de laquelle commencer à compter les virgules
String my_var = getValue_ind(payload, ', ', 8); //où 8 est la huitième cellule définie par des virgules (séparateur)
"payload" est ce que je reçois du Web précédemment nettoyé des "quotations" et " ";
et la fonction getValue_ind qui se trouve dans l'onglet principal
String getValue_ind (données de chaîne, séparateur de caractères, index int) {
entier trouvé = 0; int strIndex = {0, -1}; int maxIndex = data.length() - 1; for (int i = ind; i <= maxIndex && found <= index; i++) { //depuis la position ind if (data.charAt(i) == séparateur || i == maxIndex) { found++; strIndex[0] = strIndex[1] + 1; strIndex[1] = (i == maxIndex) ? je + 1: je; } } return found> index ? data.substring(strIndex[0], strIndex[1]): ""; }
adapté de
le code demande la page toutes les 15min, c'est environ 44Kb, je ne pense pas que ce soit une grosse charge pour les serveurs et pour l'ESP32.. Pour éviter trop de scrolling j'ai divisé le programme en différentes fonctions, lisez les commentaires
ici le collage de code est vraiment un gâchis… j'ai mis les fichiers.ino directement
J'ai utilisé la fonction d'onglets de l'IDE Arduino, j'ai donc différents fichiers.ino
c'est la dernière version du code (?), il y a beaucoup d'efforts, donc j'apprécierai toute suggestion !
- pour le redressement de la luminosité de la led pour les faibles valeurs, - pour la fonction "map" pour les variables en virgule flottante - pour l'utilisation du second core sur l'ESP32, - pour comprendre comment imprimer un mail html à partir d'une chaîne avec sprintf j'ai passé beaucoup de vrai "temps de neding" alors lisez les commentaires sur les fichiers.ino ou sur github !
en tant que paramètres de téléchargement, j'ai utilisé Tools: Partition Scheme: NO OTA pour avoir plus d'espace pour cet énorme code
s'amuser
cliquez ici pour le code sur github
Étape 2: La carte
ce tut est centré sur le code ESP32 donc je ne peux vous donner que quelques mots clés, liens et outils utilisés:
l'excellent service pour extraire les zones vectorielles du formulaire openstreetmap
- les QGis "ostiques" pour les digérer
- rechercher une table attributaire pour simplifier votre carte
- créer une mise en page imprimée et exporter la carte au format svg sur papier A3
- amusez-vous avec l'illustrateur "plus lisse"
- imprime le
Étape 3: La fête de la colle chaude
donc je peux suggérer de découper les trous pour la led et l'affichage sur le papier avant de le fixer sur le panneau de liège
le cablage est vraiment simple et et et mal fait par moi:P
Mon niveau de soudure: Pigeon
comme vous pouvez le voir sur le code, les leds vont aux broches IO
#define LED_PIN0 14 //si#define LED_PIN1 27 //buon #define LED_PIN2 16 //sass #define LED_PIN3 17 //tur #define LED_PIN4 25 //ist #define LED_PIN5 26 //berr
rechercher le brochage ESP32 pour comprendre
Étape 4: Le produit fini
donc cette photo n'est pas la meilleure, mais quand nous aurons des crues de rivière je mettrai une belle vidéo !
Conseillé:
Prenez de superbes photos avec un iPhone : 9 étapes (avec photos)
Prenez de superbes photos avec un iPhone : la plupart d'entre nous ont un smartphone partout avec nous ces jours-ci, il est donc important de savoir comment utiliser l'appareil photo de votre smartphone pour prendre de superbes photos ! Je n'ai un smartphone que depuis quelques années et j'aime avoir un appareil photo décent pour documenter les choses que je
Plateforme avec des niveaux infinis sur GameGo avec Makecode Arcade : 5 étapes (avec photos)
Plateforme avec des niveaux infinis sur GameGo avec Makecode Arcade : GameGo est une console portable de jeu rétro compatible Microsoft Makecode développée par TinkerGen STEM education. Il est basé sur la puce STM32F401RET6 ARM Cortex M4 et est destiné aux éducateurs STEM ou simplement aux personnes qui aiment s'amuser à créer un jeu vidéo rétro
Mini Drawing Bot - Live Android App - Trignomentry : 18 étapes (avec photos)
Mini Drawing Bot - Live Android App - Trignomentry : Merci à DIEU et à vous tous d'avoir réalisé mon projet Baby-MIT-Cheetah-Robot a remporté le premier prix du concours Make it Move. Je suis très heureux car beaucoup d'amis posent beaucoup de questions dans les conversations et dans les messages. L'une des questions importantes était de savoir comment
Balance intelligente bricolage avec réveil (avec Wi-Fi, ESP8266, Arduino IDE et Adafruit.io): 10 étapes (avec photos)
Balance intelligente bricolage avec réveil (avec Wi-Fi, ESP8266, Arduino IDE et Adafruit.io): Dans mon projet précédent, j'ai développé une balance de salle de bain intelligente avec Wi-Fi. Il peut mesurer le poids de l'utilisateur, l'afficher localement et l'envoyer vers le cloud. Vous pouvez obtenir plus de détails à ce sujet sur le lien ci-dessous : https://www.instructables.com/id/Wi-Fi-Smart-Scale-wi
Lancez votre diaporama de photos de vacances avec une touche de magie ! : 9 étapes (avec photos)
Lancez votre diaporama de photos de vacances avec une touche de magie ! : Au fil des ans, j'ai pris l'habitude d'emporter une petite figurine avec moi en voyage : j'achète souvent un petit artoy vierge (comme celui sur la photo) et je peins il correspond au drapeau et au thème du pays que je visite (dans ce cas, la Sicile). T