
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.
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