Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
Capteur autonome Penn Avel
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Pronto 3
Capteur autonome Penn Avel
Commits
9ec55bb3
Commit
9ec55bb3
authored
4 weeks ago
by
CARNEIRO--GILLET Alexandre
Browse files
Options
Downloads
Patches
Plain Diff
intégration 05/05
parent
3dd63f9e
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
GW-custom/LoRa_homemade/main.py
+125
-13
125 additions, 13 deletions
GW-custom/LoRa_homemade/main.py
GW-custom/LoRa_homemade/old_main.py
+11
-40
11 additions, 40 deletions
GW-custom/LoRa_homemade/old_main.py
GW-custom/LoRa_homemade/pymakr.conf
+2
-1
2 additions, 1 deletion
GW-custom/LoRa_homemade/pymakr.conf
with
138 additions
and
54 deletions
GW-custom/LoRa_homemade/main.py
+
125
−
13
View file @
9ec55bb3
import
json
import
time
import
network
import
requests
from
machine
import
UART
,
Pin
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
wifi_connect
():
# Configuration du réseau Wi-Fi
ssid
=
"
Redmi Note 8 (2021)
"
password
=
"
lemotdepassecestca
"
# Initialisation de l'interface Wi-Fi
wlan
=
network
.
WLAN
(
network
.
STA_IF
)
wlan
.
active
(
True
)
# Connexion au réseau Wi-Fi
if
not
wlan
.
isconnected
():
print
(
"
Connexion au réseau...
"
)
wlan
.
connect
(
ssid
,
password
)
# Attente de la connexion
timeout
=
10
# secondes
while
not
wlan
.
isconnected
()
and
timeout
>
0
:
time
.
sleep
(
1
)
timeout
-=
1
# Vérifie si la connexion est établie
if
wlan
.
isconnected
():
print
(
"
Connecté avec succès !
"
)
print
(
"
Adresse IP :
"
,
wlan
.
ifconfig
()[
0
])
else
:
print
(
"
Échec de la connexion.
"
)
raise
Exception
(
"
Impossible de se connecter au réseau Wi-Fi.
"
)
def
send_at_command
(
command
):
uart
.
write
((
"
AT
"
+
command
+
"
\r\n
"
).
encode
())
# Envoie la commande AT au module LoRa
...
...
@@ -22,10 +50,11 @@ def blink_led(times, interval):
time
.
sleep
(
interval
)
# Attendre un certain temps
def
configure_lora
(
frequency
,
sf
,
bw
,
TXPR
,
RXPR
,
TX_power
):
send_at_command
(
""
)
send_at_command
(
"
+MODE=TEST
"
)
# Configurer le module LoRa avec les paramètres donnés
# send_at_command(f"+TEST=RFCFG,{frequency},SF{sf},{bw},{TXPR},{RXPR},{TX_power}")
# send_at_command(f"
AT
+TEST=RFCFG,{frequency},SF{sf},{bw},{TXPR},{RXPR},{TX_power}")
def
receive_uart
():
'''
Polls the uart until all data is dequeued
'''
...
...
@@ -35,6 +64,93 @@ def receive_uart():
time
.
sleep
(
0.002
)
return
rxData
.
decode
(
'
utf-8
'
)
def
send_to_sensor_community_sds011
(
value1
,
value2
):
# Envoi des données pour le SDS011
url
=
"
https://api.sensor.community/v1/push-sensor-data/
"
headers
=
{
"
Content-Type
"
:
"
application/json
"
,
"
X-Pin
"
:
"
1
"
,
# 1 = SDS011
"
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
,
json
=
data
,
timeout
=
10
)
print
(
response
.
status_code
)
# 201 = created
print
(
response
.
text
)
def
send_to_sensor_community_sht30
(
temp
,
humid
):
# Envoi des données pour le SHT30
url
=
"
https://api.sensor.community/v1/push-sensor-data/
"
headers
=
{
"
Content-Type
"
:
"
application/json
"
,
"
X-Pin
"
:
"
7
"
,
# 7 = SHT30
"
X-Sensor
"
:
"
esp32-900881266
"
}
data
=
{
"
software_version
"
:
"
0.1
"
,
"
sensordatavalues
"
:
[
{
"
value_type
"
:
"
temperature
"
,
"
value
"
:
str
(
temp
)},
{
"
value_type
"
:
"
humidity
"
,
"
value
"
:
str
(
humid
)}
]
}
response
=
requests
.
post
(
url
,
headers
=
headers
,
json
=
data
,
timeout
=
10
)
print
(
response
.
status_code
)
# 201 = created
print
(
response
.
text
)
def
send_to_sensor_community
(
data
):
pm25
=
float
(
int
(
data
[:
4
],
16
))
/
100
pm10
=
float
(
int
(
data
[
4
:
8
],
16
))
/
100
temperature
=
float
(
int
(
data
[
8
:
12
],
16
))
/
100
humidity
=
float
(
int
(
data
[
12
:],
16
))
/
100
print
(
f
"
PM2.5:
{
pm25
}
µg/m³, PM10:
{
pm10
}
µg/m³, Temp:
{
temperature
}
°C, Humidity:
{
humidity
}
%
"
)
send_to_sensor_community_sds011
(
pm25
,
pm10
)
# Envoi des données SDS011
send_to_sensor_community_sht30
(
temperature
,
humidity
)
# Envoi des données SHT30
def
try_receive
():
if
uart
.
any
():
# Si des données sont disponibles sur le port série
message
=
receive_uart
()
# Lire le message reçu
print
(
f
"
Message reçu :
{
message
}
"
)
data
=
message
.
split
(
"
\"
"
)[
1
]
print
(
f
"
Data :
{
data
}
\n
"
)
send_to_sensor_community
(
data
)
# Clignotement de la LED une fois pour indiquer la réception
blink_led
(
1
,
0.2
)
# Clignoter la LED une fois
wifi_connect
()
# Connexion au Wi-Fi
wlan
=
network
.
WLAN
(
network
.
STA_IF
)
print
(
wlan
.
ifconfig
())
import
urequests
try
:
r
=
urequests
.
post
(
"
http://httpbin.org/post
"
,
json
=
{
"
test
"
:
123
})
print
(
"
Réponse HTTP:
"
,
r
.
status_code
)
print
(
r
.
text
)
r
.
close
()
except
Exception
as
e
:
print
(
"
Erreur:
"
,
e
)
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
# Initialisation du module LoRa
blink_led
(
3
,
0.5
)
# Clignoter la LED 3 fois au démarrage
print
(
"
\n\n
Initialisation du module LoRa-E5...
\n
"
)
...
...
@@ -42,15 +158,11 @@ configure_lora(868000000, 12, 125, 12, 15, 14) # Configurer le module LoRa avec
send_at_command
(
"
+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...
\n
"
)
print
(
"
Module LoRa-E5 initialisé. En attente de messages...
"
)
while
True
:
if
uart
.
any
():
# Si des données sont disponibles sur le port série
message
=
receive_uart
()
# Lire le message reçu
print
(
f
"
Message reçu :
{
message
}
"
)
data
=
message
.
split
(
"
\"
"
)[
1
]
print
(
f
"
Data :
{
data
}
\n
"
)
try_receive
()
# Essayer de recevoir un message
time
.
sleep
(
0.1
)
# Attendre un peu avant de vérifier à nouveau
# Clignotement de la LED une fois pour indiquer la réception
blink_led
(
1
,
0.2
)
# Clignoter la LED une fois
time
.
sleep
(
0.01
)
This diff is collapsed.
Click to expand it.
GW-custom/LoRa_homemade/
recpt_to_senscom
.py
→
GW-custom/LoRa_homemade/
old_main
.py
+
11
−
40
View file @
9ec55bb3
import
time
from
machine
import
UART
,
Pin
import
json
import
requests
uart
=
UART
(
2
,
baudrate
=
9600
,
tx
=
17
,
rx
=
16
)
...
...
@@ -26,7 +25,7 @@ def configure_lora(frequency, sf, bw, TXPR, RXPR, TX_power):
send_at_command
(
""
)
send_at_command
(
"
+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}")
# send_at_command(f"+TEST=RFCFG,{frequency},SF{sf},{bw},{TXPR},{RXPR},{TX_power}")
def
receive_uart
():
'''
Polls the uart until all data is dequeued
'''
...
...
@@ -36,38 +35,6 @@ def receive_uart():
time
.
sleep
(
0.002
)
return
rxData
.
decode
(
'
utf-8
'
)
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
"
,
# 1 = SDS011
"
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
=
receive_uart
()
# Lire le message reçu
print
(
f
"
Message reçu :
{
message
}
"
)
data
=
message
.
split
(
"
\"
"
)[
1
]
print
(
f
"
Data :
{
data
}
\n
"
)
# Clignotement de la LED une fois pour indiquer la réception
blink_led
(
1
,
0.2
)
# Clignoter la LED une fois
# Initialisation du module LoRa
blink_led
(
3
,
0.5
)
# Clignoter la LED 3 fois au démarrage
print
(
"
\n\n
Initialisation du module LoRa-E5...
\n
"
)
...
...
@@ -75,11 +42,15 @@ configure_lora(868000000, 12, 125, 12, 15, 14) # Configurer le module LoRa avec
send_at_command
(
"
+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...
"
)
print
(
"
Module LoRa-E5 initialisé. En attente de messages...
\n
"
)
while
True
:
try_receive
()
# Essayer de recevoir un message
time
.
sleep
(
0.1
)
# Attendre un peu avant de vérifier à nouveau
if
uart
.
any
():
# Si des données sont disponibles sur le port série
message
=
receive_uart
()
# Lire le message reçu
print
(
f
"
Message reçu :
{
message
}
"
)
data
=
message
.
split
(
"
\"
"
)[
1
]
print
(
f
"
Data :
{
data
}
\n
"
)
# Clignotement de la LED une fois pour indiquer la réception
blink_led
(
1
,
0.2
)
# Clignoter la LED une fois
time
.
sleep
(
0.01
)
This diff is collapsed.
Click to expand it.
GW-custom/LoRa_homemade/pymakr.conf
+
2
−
1
View file @
9ec55bb3
...
...
@@ -17,7 +17,8 @@
"venv"
,
".python-version"
,
".micropy/"
,
"micropy.json"
"micropy.json"
,
"old_main.py"
],
"fast_upload"
:
false
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment