POCL Neige en station : Différence entre versions

(Page créée avec « {{Tuto Details |Licences=Attribution (CC-BY) |Description=Création d’un petit objet connecté qui va chercher la météo sur internet et indique en temps réel s’il n... »)
 
 
(4 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
{{Tuto Details
 
{{Tuto Details
 +
|Main_Picture=POCL_Neige_en_station_1000000223.jpg
 
|Licences=Attribution (CC-BY)
 
|Licences=Attribution (CC-BY)
 
|Description=Création d’un petit objet connecté qui va chercher la météo sur internet et indique en temps réel s’il neige dans ta station de ski préférée.
 
|Description=Création d’un petit objet connecté qui va chercher la météo sur internet et indique en temps réel s’il neige dans ta station de ski préférée.
Ligne 24 : Ligne 25 :
 
}}{{ItemList
 
}}{{ItemList
 
|Item=PMMA
 
|Item=PMMA
 +
}}
 +
|Tuto_Attachments={{Tuto Attachments
 +
|Attachment=POCL_Neige_en_station_Manchot_test_Ski_2.svg
 +
}}{{Tuto Attachments
 +
|Attachment=POCL_Neige_en_station_manchot_test_pexiglass.svg
 +
}}{{Tuto Attachments
 +
|Attachment=POCL_Neige_en_station_pingouin3.svg
 
}}
 
}}
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
 
|Step_Title=Réunir le matériel
 
|Step_Title=Réunir le matériel
 +
|Step_Content=Il faudra également de la peinture noire, orange, un pinceau et de la colle à bois.
 +
|Step_Picture_00=POCL_Neige_en_station_materiel_POCL2.png
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
Ligne 44 : Ligne 54 :
 
}}
 
}}
 
{{Tuto Step
 
{{Tuto Step
|Step_Title=Découper l'objet à la découpeuse laser
+
|Step_Title=Raccorder la bande de LED à l'esp32
 +
|Step_Content=Si vous utilisez un bandeau led :
 +
 
 +
Séparer 3 leds en découpant le ruban.
 +
 
 +
Les souder entre elles avec des fils en respectant les bornes et les flèches.
 +
 
 +
L'objectif est de les éloigner pour disposer une led derrière chaque œil et le ventre.
 +
 
 +
 
 +
Raccorder l'ensemble de leds à l'ESP 32 :
 +
 
 +
La borne GND des leds vers une des bornes GND de l'ESP32
 +
 
 +
La borne 5V des leds vers la borne VIN
 +
 
 +
La borne DIN des leds vers la borne 15 de l'ESP32 (voir programme informatique)
 +
 
 +
<br />
 +
|Step_Picture_00=POCL_Neige_en_station_decouper_led.png
 +
|Step_Picture_01=POCL_Neige_en_station_20251203_111048.jpg
 +
|Step_Picture_01_annotation={"version":"3.5.0","objects":[{"type":"image","version":"3.5.0","originX":"left","originY":"top","left":0,"top":337.82,"width":2296,"height":4080,"fill":"rgb(0,0,0)","stroke":null,"strokeWidth":0,"strokeDashArray":null,"strokeLineCap":"butt","strokeDashOffset":0,"strokeLineJoin":"miter","strokeMiterLimit":4,"scaleX":0.15,"scaleY":0.15,"angle":270,"flipX":false,"flipY":false,"opacity":1,"shadow":null,"visible":true,"clipTo":null,"backgroundColor":"","fillRule":"nonzero","paintFirst":"fill","globalCompositeOperation":"source-over","transformMatrix":null,"skewX":0,"skewY":0,"crossOrigin":"","cropX":0,"cropY":0,"src":"https://www.wikidebrouillard.org/images/e/ea/POCL_Neige_en_station_20251203_111048.jpg","filters":[]}],"height":338,"width":600}
 +
|Step_Picture_02=POCL_Neige_en_station_raccordement_ESP.png
 +
|Step_Picture_03=POCL_Neige_en_station_20251127_171325.jpg
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Utiliser Thonny pour déposer les programmes sur l'ESP32
 +
|Step_Content=Télécharger le logiciel Thonny.
 +
 
 +
 
 +
Raccorder l'ESP 32 à un ordinateur.
 +
 
 +
 
 +
Ouvrir Thonny et sélectionner l'ESP 32 avec son port si besoin.
 +
 
 +
 
 +
Créer deux fichiers : boot.py et main.py
 +
 
 +
Copier dedans les codes présents plus bas dans sources et ressources.
 +
 
 +
 
 +
Modifier les fichiers :
 +
 
 +
boot.py
 +
 
 +
> modifier le nom du wifi et son mot de passe (mettre un wifi accessible pour le POCL sans portail captif)
 +
 
 +
> modifier les coordonnées géographiques de votre station
 +
|Step_Picture_00=POCL_Neige_en_station_programme_thonny.png
 +
|Step_Picture_01=POCL_Neige_en_station_nom_wifi_code.png
 +
|Step_Picture_02=POCL_Neige_en_station_longi_latitude_code.png
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Tester le programme
 +
|Step_Content=Lancer le programme.
 +
 
 +
Dans le terminal, les tentatives de connexions s'affichent puis la météo récupérée est affichée.
 +
 
 +
Le bandeau led clignote en rouge puis :
 +
 
 +
- s'éteint si il ne neige pas
 +
 
 +
- s'allume en bleu si il neige
 +
 
 +
- s'allume en rouge si la connexion internet n'est pas établie
 +
|Step_Picture_00=POCL_Neige_en_station_lancer_programme.png
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Découper l'objet
 +
|Step_Content=Avec la découpeuse laser :
 +
 
 +
- découper les skis (fichier joint) dans le contre plaqué peuplier
 +
 
 +
- découper le pingouin (fichier joint) dans le carton bois
 +
 
 +
- découper le ventre et les yeux (fichier joint) dans le plexiglass
 +
 
 +
 
 +
Peindre en noir le carton bois
 +
}}
 +
{{Tuto Step
 +
|Step_Title=Assembler l'objet et l'électronique
 +
|Step_Content=Positionner en forçant légèrement le plexiglass dans la face avant du pingouin pour les yeux et le ventre.
 +
 
 +
Coller les tranches de pingouin entre elles avec de la colle à bois.
 +
 
 +
<br />
 
}}
 
}}
 
{{Notes
 
{{Notes
 
|Notes=<syntaxhighlight lang="python" line="1">
 
|Notes=<syntaxhighlight lang="python" line="1">
 +
# Programme boot.py :
 +
 
from machine import Pin
 
from machine import Pin
 
import time
 
import time
Ligne 65 : Ligne 163 :
 
gc.collect()
 
gc.collect()
  
ssid = 'nom_du_wifi'
+
ssid = 'Nom_Wifi'
password = 'mot_de_passe_du wifi'
+
password = 'Mot_de_passe_wifi'
 
valeur_main = None
 
valeur_main = None
led_ = None
 
  
np=neopixel.NeoPixel(Pin(15),2)
+
NB_LED = 2
led_ = 0
+
np=neopixel.NeoPixel(Pin(15),NB_LED)
 +
np[0] = (10, 0, 0)
 +
np.write()
 +
 
 +
bleu = (248, 248, 255)
 +
noir = (0, 0, 0)
 +
rouge = (255, 0, 0)
 +
 
 +
def allumer_couleur(couleur):
 +
    for i in range(NB_LED):
 +
        np[i]=couleur
 +
    np.write()
 +
 
 +
 
  
 
station = network.WLAN(network.STA_IF)
 
station = network.WLAN(network.STA_IF)
Ligne 79 : Ligne 189 :
  
 
while not station.isconnected() :
 
while not station.isconnected() :
 +
    allumer_couleur(rouge)
 
     time.sleep(1)
 
     time.sleep(1)
 
     print('Non connecté')
 
     print('Non connecté')
Ligne 84 : Ligne 195 :
 
print('Connection successful')
 
print('Connection successful')
 
#écrit les configurations de la connection
 
#écrit les configurations de la connection
print(station.ifconfig())
+
#print(station.ifconfig())
  
 
#Ville : Station Autrans 45°13'49.1"N 5°34'55.9"E
 
#Ville : Station Autrans 45°13'49.1"N 5°34'55.9"E
Ligne 90 : Ligne 201 :
 
long = '5.58194'
 
long = '5.58194'
  
def extract_Weather(list, url) :
 
    weather_data = requests.get(url)
 
    print(weather_data.json())
 
    #transforme tout le json en dictionnaire
 
    data = json.loads(weather_data.text)
 
    # pour n qui parcourt chaque élément de list soit json_path dans le code avec n qui prendra main puis pressure
 
    for n in list:
 
        if(n != ""):
 
            data = data[n]
 
    return str(data)
 
 
def allumer_bleu():
 
  global led_
 
  led_ = 0
 
  for count in range(2):
 
    np[led_]=(248,248,255)
 
    led_ = 1 + led_
 
  np.write()
 
  
def allumer_noir():
 
  global led_
 
  led_ = 0
 
  for count in range(2):
 
    np[led_]=(0,0,0)
 
    led_ = 1 + led_
 
  np.write()
 
  
 
# Récupération données
 
# Récupération données
Ligne 129 : Ligne 215 :
 
#print(description)
 
#print(description)
  
while True:
+
#Programme main.py :
  valeur_main = extract_Weather(json_path, weather_url)
+
 
  print(valeur_main)
+
def extract_Weather(list, url) :
  if valeur_main == "Snow":
+
    weather_data = requests.get(url)
      print("ca marche")
+
    #print(weather_data.json())
      allumer_bleu()
+
    #transforme tout le json en dictionnaire
  else valeur_main != "Snow" :
+
    data = json.loads(weather_data.text)
      allumer_noir()
+
    # pour n qui parcourt chaque élément de list soit json_path dans le code avec n qui prendra main puis pressure
  time.sleep(20)
+
    for n in list:
 +
        if(n != ""):
 +
            data = data[n]
 +
    return str(data)
 +
 
 +
valeur_main = extract_Weather(json_path, weather_url)
 +
print("Temps actuel : " + valeur_main)
 +
if valeur_main == "Snow":
 +
    print("ca marche")
 +
    allumer_couleur(bleu)
 +
else :
 +
    allumer_couleur(noir)
 +
time.sleep(7)
 
</syntaxhighlight>
 
</syntaxhighlight>
 
}}
 
}}

Version actuelle datée du 3 décembre 2025 à 22:36

Auteur avatarCarolineCO | Dernière modification 3/12/2025 par CarolineCO

POCL Neige en station 1000000223.jpg
Création d’un petit objet connecté qui va chercher la météo sur internet et indique en temps réel s’il neige dans ta station de ski préférée.
Licence : Attribution (CC-BY)

  • Fichiers

Étape 1 - Réunir le matériel

Il faudra également de la peinture noire, orange, un pinceau et de la colle à bois.




Étape 2 - Préparer l'ESP 32

⚠️ Attention, ton ESP32 doit avoir été flashé avec micropython !

Tutoriel pour le faire : Installation de micropython

ou directement

⚠️ Cela fonctionne uniquement sur Google Chrome et Microsoft Edge.

Rendez-vous en bas de la page d'accueil :

https://dblocadata.debrouillonet.org/~test/#flash

Étape 3 - Raccorder la bande de LED à l'esp32

Si vous utilisez un bandeau led :

Séparer 3 leds en découpant le ruban.

Les souder entre elles avec des fils en respectant les bornes et les flèches.

L'objectif est de les éloigner pour disposer une led derrière chaque œil et le ventre.


Raccorder l'ensemble de leds à l'ESP 32 :

La borne GND des leds vers une des bornes GND de l'ESP32

La borne 5V des leds vers la borne VIN

La borne DIN des leds vers la borne 15 de l'ESP32 (voir programme informatique)



Étape 4 - Utiliser Thonny pour déposer les programmes sur l'ESP32

Télécharger le logiciel Thonny.


Raccorder l'ESP 32 à un ordinateur.


Ouvrir Thonny et sélectionner l'ESP 32 avec son port si besoin.


Créer deux fichiers : boot.py et main.py

Copier dedans les codes présents plus bas dans sources et ressources.


Modifier les fichiers :

boot.py

> modifier le nom du wifi et son mot de passe (mettre un wifi accessible pour le POCL sans portail captif)

> modifier les coordonnées géographiques de votre station


Étape 5 - Tester le programme

Lancer le programme.

Dans le terminal, les tentatives de connexions s'affichent puis la météo récupérée est affichée.

Le bandeau led clignote en rouge puis :

- s'éteint si il ne neige pas

- s'allume en bleu si il neige

- s'allume en rouge si la connexion internet n'est pas établie




Étape 6 - Découper l'objet

Avec la découpeuse laser :

- découper les skis (fichier joint) dans le contre plaqué peuplier

- découper le pingouin (fichier joint) dans le carton bois

- découper le ventre et les yeux (fichier joint) dans le plexiglass


Peindre en noir le carton bois

Étape 7 - Assembler l'objet et l'électronique

Positionner en forçant légèrement le plexiglass dans la face avant du pingouin pour les yeux et le ventre.

Coller les tranches de pingouin entre elles avec de la colle à bois.


Éléments pédagogiques


Sources et ressources

# Programme boot.py :

from machine import Pin
import time
try:
  import urequests as requests
except:
  import requests
try:
  import ujson as json
except:
  import json
import network
import neopixel
import esp
esp.osdebug(None)
import gc
gc.collect()

ssid = 'Nom_Wifi'
password = 'Mot_de_passe_wifi'
valeur_main = None

NB_LED = 2
np=neopixel.NeoPixel(Pin(15),NB_LED)
np[0] = (10, 0, 0)
np.write()

bleu = (248, 248, 255)
noir = (0, 0, 0)
rouge = (255, 0, 0)
  
def allumer_couleur(couleur):
    for i in range(NB_LED):
        np[i]=couleur
    np.write()



station = network.WLAN(network.STA_IF)
# se connecte
station.active(True)
station.connect(ssid, password)

while not station.isconnected() :
    allumer_couleur(rouge)
    time.sleep(1)
    print('Non connecté')

print('Connection successful')
#écrit les configurations de la connection
#print(station.ifconfig())

#Ville : Station Autrans 45°13'49.1"N 5°34'55.9"E
lat = '45.2302778'
long = '5.58194'



# Récupération données
api_key = '1e3c7b8ac112252a6250d681373bc7ed'
#https://api.openweathermap.org/data/2.5/weather?lat=44.866669&lon=-0.61667&appid=1e3c7b8ac112252a6250d681373bc7ed
weather_url = 'https://api.openweathermap.org/data/2.5/weather?lat=' + lat + '&lon=' + long + '&appid=' + api_key
#va chercher main dans la première case du tableau weather
json_path = ['weather', 0, 'main'] 

# Weather Description
#weather = extract_Weather(json_path, weather_url)
#description = 'Description: ' + weather
#print(description)

#Programme main.py :

def extract_Weather(list, url) :
    weather_data = requests.get(url)
    #print(weather_data.json())
    #transforme tout le json en dictionnaire
    data = json.loads(weather_data.text)
    # pour n qui parcourt chaque élément de list soit json_path dans le code avec n qui prendra main puis pressure
    for n in list:
        if(n != ""):
            data = data[n]
    return str(data)

valeur_main = extract_Weather(json_path, weather_url)
print("Temps actuel : " + valeur_main)
if valeur_main == "Snow":
    print("ca marche")
    allumer_couleur(bleu)
else :
    allumer_couleur(noir)
time.sleep(7)

Dernière modification 3/12/2025 par user:CarolineCO.

Commentaires

Draft