Le GPS (Global Positioning System) est un système de navigation par satellite qui permet de déterminer la position, la vitesse et l’heure avec une précision élevée. Il est utilisé dans de nombreuses applications, notamment la navigation routière, l’agriculture, la cartographie, la surveillance, etc.
Un appareil GPS se compose généralement d’un récepteur qui reçoit les signaux des satellites et calcule la position de l’utilisateur en utilisant la triangulation. Les satellites GPS envoient des signaux radio qui sont reçus par le récepteur GPS et utilisés pour déterminer la distance entre le récepteur et le satellite. En utilisant les distances à plusieurs satellites, le récepteur peut calculer sa position avec une précision de quelques mètres.
Il existe de nombreux modules GPS disponibles sur le marché, qui peuvent être utilisés avec différentes cartes de développement et microcontrôleurs comme la carte ESP32.
Le GPS peut être utilisé dans de nombreux projets IoT (Internet des objets) pour ajouter des fonctionnalités de géolocalisation à des appareils connectés.
MQTT (Message Queuing Telemetry Transport) est un protocole de communication en temps réel utilisé dans les systèmes IoT (Internet des objets) pour échanger des messages entre des appareils connectés. Il permet de connecter des appareils et des capteurs à un serveur ou à un service de cloud computing de façon fiable et efficace, même avec une faible bande passante ou une faible latence de réseau.
MQTT utilise un modèle de publication-abonnement, dans lequel les appareils envoient des messages (publications) à des sujets (topics) et s’abonnent à des topics pour recevoir des messages. Un serveur MQTT (broker) est utilisé pour acheminer les messages entre les appareils et gérer les abonnements.
Ce tutoriel montre comment connecter le module GPS NEO-6M à la carte de développement ESP32, obtenir les données GPS et publier les positions de latitude et de longitude sur le cloud Ubidots IoT en temps réel via le protocole MQTT.
Fondamentalement, le module GPS NEO-6M fonctionne en déterminant à quelle distance il se trouve d’un certain nombre de satellites. Il est préprogrammés pour savoir où se trouvent les satellites GPS à un moment donné, puis calculer l’emplacement sur Terre en utilisant le processus de trilatération bien connu.
Ce projet utilise le module GPS NEO-6M à basse consommation, adapté aux batteries, peu coûteux, facile à interfacer avec des microcontrôleurs et incroyablement populaire parmi les amateurs.
carte ESP32
La carte ESP32 est une carte de microcontrôleur basée sur le microcontrôleur ESP32 d’Espressif Systems. C’est une puce système à faible coût et à faible consommation d’énergie conçue pour les applications de l’Internet des objets (IoT).
module GPS NEO-6M
Le module GPS UBLOX NEO-6M est un module de localisation par satellite de haute précision qui peut être utilisé avec différentes cartes de développement et microcontrôleurs pour ajouter des fonctionnalités de géolocalisation à vos projets.
afficheur SSD1306
Le SSD1306 est un contrôleur d’affichage OLED (diode électroluminescente organique) monochrome qui est couramment utilisé dans les petites applications d’affichage. Les affichages OLED sont minces, légers et économes en énergie, ce qui en fait un choix populaire pour les dispositifs portables et d’autres applications où l’espace et la consommation d’énergie sont un problème.
une plaque d’essai
Une plaque d’essai est un type de carte de développement électronique qui permet aux développeurs de tester et de prototyper facilement des circuits électroniques. Elles sont souvent utilisées par les développeurs pour tester rapidement des idées et des conceptions avant de les intégrer à un projet plus important ou de les intégrer dans une carte de développement plus permanente.
Les fils de connexion sont des fils électriques utilisés pour connecter des composants électroniques à une carte de développement Arduino. Ils sont généralement utilisés pour connecter des capteurs, des actionneurs, des afficheurs et d’autres composants à la carte Arduino afin de créer des circuits électroniques.
Pour réaliser le montage il faut connecter:
Pour le module GPS NEO-6M:
Pour l’afficheur SSD1306:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
from machine import UART, Pin, SPI,I2C from micropyGPS import MicropyGPS import utime import ssd1306 import network import nmea from umqtt.robust import MQTTClient ubidotsToken = "***********************" clientID = "RANDOM-ALPHA-NUMERIC-NAME_OR_IMEI DEVICE ID" client = MQTTClient("clientID", "industrial.api.ubidots.com", 1883, user = ubidotsToken, password = ubidotsToken) WiFi_SSID = "************" WiFi_PASS = "************" def do_connect(): wlan = network.WLAN(network.STA_IF) wlan.active(True) if not wlan.isconnected(): print('connecting to network...') wlan.connect(WiFi_SSID, WiFi_PASS) while not wlan.isconnected(): pass print('network config:', wlan.ifconfig()) do_connect() i2c = I2C(-1, scl=Pin(22), sda=Pin(21)) oled_width = 128 oled_height = 64 oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c) oled.text('Carte', 0, 0) # Afficher les deux mots '' oled.text('ESP32', 0, 10) oled.show() uart = UART(2, 9600) now = utime.ticks_ms() sentence = '' state = '' my_nmea = nmea.nmea(debug=1) while 1: while uart.any(): b = uart.read() my_nmea.parse(b) if utime.ticks_diff(utime.ticks_ms(), now) > 5000: now = utime.ticks_ms() print('{} {}'.format( my_nmea.latitude, my_nmea.longitude)) client.connect() lat = my_nmea.latitude lng = my_nmea.longitude var = 1.5 msg = b'{"location": {"value":%s, "context":{"lat":%s, "lng":%s}}}' % (var, lat, lng) print(msg) client.publish(b"/v1.6/devices/ESP32", msg)#envoi de la position du GPS vers le cloud Ubidots IoT oled.fill(0) y = 0 dy = 10 oled.text("Lat:{}".format(my_nmea.latitude), 0, y) y += dy oled.text("Lon:{}".format(my_nmea.longitude), 0, y) oled.show() |
Remarque: il faut importer ces bibliothèque suivantes: ssd1306, simple, nmea et micropyGPS
patrick 30-09-2323
Besoin de detaille sur le programme et cmt etablir le reseau MQTT