+21622886281
ESP32 Internet des objets Projet

Suivi GPS à l’aide de la carte ESP32 et de la plate-forme IoT sur MQTT

But de ce projet:

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.

Spécifications du module GPS NEO-6M

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.

Composants nécessaires

  • carte ESP32
  • module GPS NEO-6M
  • afficheur SSD1306
  • des fils de connexion

Montage

Pour réaliser le montage il faut connecter:

Pour le module GPS NEO-6M:

  • la broche TX à la broche RX  de la carte ESP32
  • la broche RX à la broche TX de la carte ESP32
  • la broche GND à la broche GND  de la carte ESP32
  • la broche VCC à la broche 3.3V de la carte ESP32

Pour l’afficheur SSD1306:

  • la broche SDA à la broche D21 de la carte ESP32
  • la broche SCL à la broche D22 de la carte ESP32
  • la broche GND à la broche GND  de la carte ESP32
  • la broche VCC à la broche 3.3V de la carte ESP32

Programme en micropython

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




0 commentaire


Laisser un commentaire

Noter *
Ce champs est réquis

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Scroll to Top