Table des matières:
- Fournitures
- Étape 1: Obtenir des données GPS
- Étape 2: Envoi de données GPS par radio
- Étape 3: Stockage des données à l'aide d'un module de carte SD
- Étape 4: Envoi et stockage des données GPS
- Étape 5: Merci
Vidéo: Bouée intelligente [GPS, radio (NRF24) et module de carte SD] : 5 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Cette série de bouées intelligentes retrace notre tentative (ambitieuse) de construire une bouée scientifique capable de prendre des mesures significatives sur la mer à l'aide de produits du commerce. Il s'agit du didacticiel deux sur quatre - assurez-vous que vous êtes à jour, et si vous avez besoin d'une introduction rapide au projet, consultez notre résumé.
Partie 1: Réalisation de mesures de vagues et de températures
Dans ce tutoriel, nous vous montrons comment obtenir des données GPS, les stocker sur une carte SD et les envoyer quelque part à l'aide de la radio.
Nous l'avons fait pour que nous puissions garder une trace de l'emplacement de notre bouée maritime. La radio signifie que nous pouvons le regarder à distance et la carte SD signifie que si quelque chose se casse et qu'il va se promener, nous pouvons télécharger les données qu'il a collectées lors de son excursion imprévue - si jamais nous sommes en mesure de le récupérer !
Fournitures
Module GPS - Amazon
Module de carte SD - Amazon
Carte SD - Amazon
2 modules radio (NRF24L01+) - Amazon
2 X Arduino - Amazon
Étape 1: Obtenir des données GPS
La bouée intelligente effectue des mesures de capteur lorsqu'elle se trouve dans la mer, y compris la localisation GPS et la date et l'heure. Jetez un œil au schéma qui montre comment nous avons configuré le circuit. Le module GPS communique via une connexion série, nous utilisons donc la bibliothèque série du logiciel Arduino ainsi que la petite bibliothèque GPS pour communiquer avec lui. Ces bibliothèques rendent tout super simple. Passons en revue le code…
#comprendre
#include // L'objet TinyGPS++ TinyGPSPlus gps; // La connexion série au périphérique GPS SoftwareSerial ss(4, 3); struct dataStruct{ double latitude; double longitude; date longue non signée; non signé longtemps; }gpsData; void setup(){ Serial.begin(115200); ss.begin(9600); } void loop(){ while (ss.available() > 0){ if (gps.encode(ss.read())){ getInfo(); printRésultats(); } } } void getInfo(){ if (gps.location.isValid()){ gpsData.latitude = gps.location.lat(); gpsData.longitude = gps.location.lng(); } else{ Serial.println("Emplacement invalide"); } if (gps.date.isValid()){ gpsData.date = gps.date.value(); } else{ Serial.println("Date invalide"); } if (gps.time.isValid()){ gpsData.time = gps.time.value(); } else{ Serial.println("Heure invalide"); } } void printResults(){ Serial.print("Emplacement: "); Serial.print(gpsData.latitude, 6); Serial.print(", "); Serial.print(gpsData.longitude, 6); Serial.print(" Date: "); Serial.print(gpsData.date); Serial.print(" Heure: "); Serial.print(gpsData.time); Serial.println(); }
(Regardez la vidéo de ce code sur
Étape 2: Envoi de données GPS par radio
Supposons que la bouée soit en mer en train de prendre des mesures, mais que nous voulions voir les données sans nous mouiller les pieds ni ramener la bouée à terre. Pour obtenir les mesures à distance, nous utilisons un module radio connecté à un Arduino des deux côtés de la communication. À l'avenir, nous remplacerons l'Arduino côté récepteur par un Raspberry Pi. La radio fonctionne de la même manière avec ces deux interfaces, il est donc assez simple de les échanger.
Le module radio communique en SPI, ce qui nécessite un peu plus de connexions qu'I2C mais reste très simple d'utilisation grâce à la librairie NRF24. En utilisant le module GPS pour les mesures du capteur, nous transmettons ses données d'un Arduino à l'autre. Nous allons connecter le module GPS et radio à l'Arduino et de l'autre côté un Arduino avec le module radio - regardez le schéma.
Émetteur
#comprendre
#include #include #include #include GPS TinyGPSPlus; SoftwareSerial ss(4, 3); radio RF24 (8, 7); // CE, CSN struct dataStruct{ double latitude; double longitude; date longue non signée; non signé longtemps; }gpsData; void setup() { Serial.begin(115200); ss.begin(9600); Serial.println("Configuration de la radio"); // Configuration de l'émetteur radio radio.begin(); radio.openWritingPipe (0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel(RF24_PA_MAX); radio.setDataRate(RF24_250KBPS); radio.stopListening(); radio.enableDynamicPayloads(); radio.powerUp(); Serial.println("Commencer à envoyer"); } boucle vide() { while (ss.available() > 0){ if (gps.encode(ss.read())){ getInfo(); radio.write(&gpsData, sizeof(gpsData)); } } } void getInfo(){ if (gps.location.isValid()){ gpsData.longitude = gps.location.lng(); gpsData.latitude = gps.location.lat(); } else{ gpsData.longitude = 0.0; gpsData.latitude = 0.0; } if (gps.date.isValid()){ gpsData.date = gps.date.value(); } else{ gpsData.date = 0; } if (gps.time.isValid()){ gpsData.time = gps.time.value(); } else{ gpsData.time = 0; } }
DESTINATAIRE
#comprendre
#include #include radio RF24 (8, 7); // CE, CSN struct dataStruct{ double latitude; double longitude; date longue non signée; longtemps non signé; }gpsData; void setup() { Serial.begin(115200); // Configuration du récepteur radio radio.begin(); radio.openReadingPipe(1, 0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel(RF24_PA_MAX); radio.setDataRate(RF24_250KBPS); radio.startListening(); radio.enableDynamicPayloads(); radio.powerUp(); } void loop() { if (radio.available()) { radio.read(&gpsData, sizeof(gpsData)); Serial.print("Emplacement: "); Serial.print(gpsData.latitude, 6); Serial.print(", "); Serial.print(gpsData.longitude, 6); Serial.print(" Date: "); Serial.print(gpsData.date); Serial.print(" Heure: "); Serial.print(gpsData.time); Serial.println();} }
(Regardez la vidéo de ce code sur
Étape 3: Stockage des données à l'aide d'un module de carte SD
Le module radio est assez fiable, mais parfois vous avez besoin d'un plan d'urgence en cas de coupure de courant côté récepteur ou si la radio se déplace hors de portée. Notre plan d'urgence est un module de carte SD qui nous permet de stocker les données que nous collectons. La quantité de données collectées n'est pas si importante, donc même une petite carte SD pourra facilement stocker l'équivalent d'une journée de données.
#comprendre
#include #include #include GPS TinyGPSPlus; SoftwareSerial ss(4, 3); struct dataStruct{ double latitude; double longitude; date longue non signée; non signé longtemps; }gpsData; void setup() { Serial.begin(115200); ss.begin(9600); if (!SD.begin(5)) { Serial.println("La carte a échoué ou n'est pas présente"); revenir; } Serial.println("carte initialisée."); Fichier dataFile = SD.open("gps_data.csv", FILE_WRITE); if (dataFile) { dataFile.println("Latitude, Longitude, Date, Heure"); dataFile.close(); } else{ Serial.println("nope can't open file"); } } void loop() { while (ss.available() > 0){ if (gps.encode(ss.read())){ getInfo(); printRésultats(); saveInfo(); } } } void getInfo(){ if (gps.location.isValid()){ gpsData.latitude = gps.location.lat(); gpsData.longitude = gps.location.lng(); } else{ Serial.println("Emplacement invalide"); } if (gps.date.isValid()){ gpsData.date = gps.date.value(); } else{ Serial.println("Date invalide"); } if (gps.time.isValid()){ gpsData.time = gps.time.value(); } else{ Serial.println("Heure invalide"); } } void printResults(){ Serial.print("Emplacement: "); Serial.print(gpsData.latitude, 6); Serial.print(", "); Serial.print(gpsData.longitude, 6); Serial.print(" Date: "); Serial.print(gpsData.date); Serial.print(" Heure: "); Serial.print(gpsData.time); Serial.println(); } void saveInfo(){ File dataFile = SD.open("gps_data.csv", FILE_WRITE); if (dataFile) { dataFile.print(gpsData.latitude); dataFile.print(", "); dataFile.print(gpsData.longitude); dataFile.print(", "); dataFile.print(gpsData.date); dataFile.print(", "); dataFile.println(gpsData.time); dataFile.close(); } else{ Serial.println("non, pas de fichier de données"); } }
(Nous parlons à travers ce code dans la vidéo
Étape 4: Envoi et stockage des données GPS
Étape 5: Merci
Inscrivez-vous à notre liste de diffusion !
Partie 1: Faire la mesure des vagues et de la température
Partie 2: Radio GPS NRF24 et carte SD
Partie 3: Planification de l'alimentation de la bouée
Partie 4: Déploiement de la bouée
Conseillé:
Bouée intelligente [Résumé] : 8 étapes (avec photos)
Bouée intelligente [Résumé] : Nous aimons tous le bord de mer. En tant que collectif, nous y affluons pour des vacances, pour pratiquer des sports nautiques ou pour gagner notre vie. Mais le littoral est une zone dynamique à la merci des vagues. L'élévation du niveau de la mer grignote les plages et les événements extrêmes puissants comme l'ouragan
Carte intelligente de l'Idaho avec données LED + art : 8 étapes (avec photos)
Carte intelligente de l'Idaho avec données LED + art : j'ai toujours voulu un moyen d'afficher de manière artistique et dynamique des données géographiques en "peinture" une carte avec de la lumière. Je vis dans l'Idaho et j'adore mon état, alors j'ai pensé que ce serait un bon endroit pour commencer ! En plus d'être une œuvre d'art
Radio bidirectionnelle NRF24 pour la télémétrie : 9 étapes (avec photos)
Radio bidirectionnelle NRF24 pour la télémétrie : Salut les gars, je m'appelle Pedro Castelani et je vous apporte mon premier instructable : construire une radio bidirectionnelle avec arduino pour, eh bien, tout ce dont vous en avez besoin. Dans ce projet, nous ferons deux circuits séparés qui serviront à la fois de récepteur et d'émetteur
Robot de navigation avec capteurs de chaussures, sans GPS, sans carte : 13 étapes (avec photos)
Robot de navigation avec capteurs de chaussures, sans GPS, sans carte : le robot se déplace selon une trajectoire préprogrammée et transmet (via Bluetooth) ses informations de mouvement réelles à un téléphone pour un suivi en temps réel. Arduino est préprogrammé avec chemin et oblu est utilisé pour détecter le mouvement du robot. oblu transmet les informations de mouvement
Comment utiliser la carte radio FM Si4703 avec RDS - Tutoriel Arduino : 5 étapes (avec photos)
Comment utiliser la carte radio FM Si4703 avec RDS - Tutoriel Arduino : il s'agit d'une carte d'évaluation pour la puce tuner FM Si4703 de Silicon Laboratories. Au-delà d'être une simple radio FM, le Si4703 est également capable de détecter et de traiter à la fois les informations du service de données radio (RDS) et du service de données de diffusion radio (RBDS).T