diff --git a/GW-custom/LoRa_homemade/main.py b/GW-custom/LoRa_homemade/main.py index 9874dc4f80c952ebec5717fa93a2b1ae5e088816..6d1137b05b2870d0e633e3abbaa3e2f2157b3468 100644 --- a/GW-custom/LoRa_homemade/main.py +++ b/GW-custom/LoRa_homemade/main.py @@ -21,16 +21,16 @@ def blink_led(times, interval): led.value(0) # Eteindre la LED time.sleep(interval) # Attendre un certain temps -def configure_lora(frequency, sf, bw, cr, power): +def configure_lora(frequency, sf, bw, TXPR, RXPR, TX_power): send_at_command("AT") send_at_command("AT+MODE=TEST") # Configurer le module LoRa avec les paramètres donnés - send_at_command(f"AT+TEST=RFCFG,{frequency},{sf},{bw},{cr},{power}") # Configurer la fréquence, le SF, le BW, le CR et la puissance + send_at_command(f"AT+TEST=RFCFG,{frequency},SF{sf},{bw},{TXPR},{RXPR},{TX_power}") # Initialisation du module LoRa blink_led(3, 0.5) # Clignoter la LED 3 fois au démarrage print("Initialisation du module LoRa-E5...") -configure_lora(868000000, 12, 125, 8, 14) # Configurer le module LoRa avec les paramètres souhaités +configure_lora(868000000, 12, 125, 12, 15, 14) # Configurer le module LoRa avec les paramètres souhaités send_at_command("AT+TEST=RXLRPKT") # Commencer la réception des paquets LoRa led.value(1) # Rallumer la LED après l'initialisation @@ -46,4 +46,3 @@ while True: time.sleep(0.1) # Attendre un peu led.value(1) # Rallumer la LED - time.sleep(0.01) # Petite pause pour éviter de saturer la boucle diff --git a/GW-custom/LoRa_homemade/recpt_to_senscom.py b/GW-custom/LoRa_homemade/recpt_to_senscom.py new file mode 100644 index 0000000000000000000000000000000000000000..09a9651255569d51f7ab8e988422dccf6429fe84 --- /dev/null +++ b/GW-custom/LoRa_homemade/recpt_to_senscom.py @@ -0,0 +1,88 @@ +import time + +from machine import UART, Pin + +import json + +import requests + +uart = UART(2, baudrate=9600, tx=17, rx=16) + +# Initialisation de la LED intégrée (souvent sur GPIO 2) +led = Pin(2, Pin.OUT) # GPIO 2 pour la LED bleue intégrée + +def send_at_command(command): + uart.write((command + "\r\n").encode()) # Envoie la commande AT au module LoRa + time.sleep(0.3) # Attendre la réponse du module + while uart.any(): + response = uart.read().decode('utf-8') # Lire la réponse + print(response) + +def blink_led(times, interval): + for _ in range(times): + led.value(1) # Allumer la LED + time.sleep(interval) # Attendre un certain temps + led.value(0) # Eteindre la LED + time.sleep(interval) # Attendre un certain temps + +def configure_lora(frequency, sf, bw, TXPR, RXPR, TX_power): + send_at_command("AT") + send_at_command("AT+MODE=TEST") + # Configurer le module LoRa avec les paramètres donnés + send_at_command(f"AT+TEST=RFCFG,{frequency},SF{sf},{bw},{TXPR},{RXPR},{TX_power}") + +def send_to_sensor_community(value1, value2): + # Envoi des données sur sensor community + url = "https://api.sensor.community/v1/push-sensor-data/" + headers = { + "Content-Type": "application/json", + "X-Pin": "1", + "X-Sensor": "esp32-900881266" + } + data = { + "software_version": "0.1", + "sensordatavalues": [ + {"value_type": "P1", "value": str(value1)}, + {"value_type": "P2", "value": str(value2)} + ] + } + + response = requests.post(url, headers=headers, data, timeout=10) + + print(response.status_code) # 201 = created + print(response.text) + +def try_receive(): + if uart.any(): # Si des données sont disponibles sur le port série + message = uart.read().decode('utf-8').strip() # Lire le message reçu + print(f"Message reçu : {message}") + + # Clignotement de la LED une fois pour indiquer la réception + led.value(0) # Éteindre la LED + time.sleep(0.1) # Attendre un peu + led.value(1) # Rallumer la LED + + # Traitement du message reçu (extraction des valeurs P1 et P2) + try: + values = message.split(",") + value1 = float(values[0]) + value2 = float(values[1]) + send_to_sensor_community(value1, value2) # Envoyer les valeurs à Sensor Community + except (IndexError, ValueError): + print("Erreur lors de l'extraction des valeurs du message.") + +# Initialisation du module LoRa +blink_led(3, 0.5) # Clignoter la LED 3 fois au démarrage +print("Initialisation du module LoRa-E5...") +configure_lora(868000000, 12, 125, 12, 15, 14) # Configurer le module LoRa avec les paramètres souhaités +send_at_command("AT+TEST=RXLRPKT") # Commencer la réception des paquets LoRa + +led.value(1) # Rallumer la LED après l'initialisation +print("Module LoRa-E5 initialisé. En attente de messages...") + +while True: + try_receive() # Essayer de recevoir un message + time.sleep(0.1) # Attendre un peu avant de vérifier à nouveau + + + diff --git a/GW-custom/PingPong/Pong/main.py b/GW-custom/PingPong/Pong/main.py index ea6e27c8f448236fd9f9d9c88d9a7a9f001a1ee2..77ca101729295bc332386d07f1b18b5d0643df39 100644 --- a/GW-custom/PingPong/Pong/main.py +++ b/GW-custom/PingPong/Pong/main.py @@ -1,8 +1,9 @@ # main.py -- put your code here! -from network import LoRa import socket import time +from network import LoRa + # Please pick the region that matches where you are using the device lora = LoRa(mode=LoRa.LORA, region=LoRa.EU868, adr=False) @@ -16,16 +17,19 @@ s = socket.socket(socket.AF_LORA, socket.SOCK_RAW) s.setblocking(False) # Code pour le Pong ; réception puis émission +print('Début de la réception') i = 0 while True: - if s.recv(64) == b'Ping': - print('je recois Ping du Node A') + recu = s.recv(64) + if recu != b'': + recu = recu.decode('utf-8') + print('je recois '+ recu +' du Node A') print(lora.stats()) #print(lora.coding_rate()) s.send('Pong') print('Pong {}'.format(i)) i = i+1 - time.sleep(5) + time.sleep(0.5) # Code pour le Ping ; uniquement émission # msg = 'Ping'