Station météo à distance Raspberry Pi Pico W (alimentée par énergie solaire)

Station météo softap Raspberry Pi Pico W

Une caractéristique très spéciale du Raspberry Pi Pico W est la fonction SoftAP.

SoftAP est l'acronyme de software-enabled access point, qui permet de diffuser un réseau WiFi directement à partir du Raspberry Pi Pico W.

C'est pourquoi nous avons choisi de réaliser ce projet à l'énergie solaire.

Comment un projet d'énergie solaire s'articule avec SoftAP

Voici le problème.

Si vous voulez créer un projet qui mesure des données en dehors de votre domicile, vous constaterez que vous ne pourrez pas obtenir ces données sans fil.

Dans ce cas, vous pourriez tout aussi bien utiliser le Pico normal, puisque vous ne pourrez pas utiliser sa capacité sans fil.

Un projet fonctionnant à l'énergie solaire est probablement l'un d'entre eux, étant donné que vous devez l'installer dans une zone exposée au soleil, qui est généralement à l'extérieur.

C'est là que SoftAP intervient. Imaginons que vous souhaitiez connaître le temps qu'il fait dehors. Vous vous connectez alors au SoftAP que le Raspberry Pi Pico W diffuse, puis vous vous connectez à l'adresse IP qui affiche les données.

C'est à peu près le meilleur scénario pour exploiter les avantages du Raspberry Pi Pico W.

Je veux dire qu'il est possible d'acheter un add-on LTE ou un add-on sans fil à longue portée, mais alors il ne s'agirait pas vraiment d'un tutoriel Pico W, puisque vous pourriez simplement utiliser ces composants sur le Pico normal.

Qu'en est-il du Bluetooth sur le Raspberry Pi Pico W ?

Ce serait formidable si vous pouviez utiliser Bluetooth, mais à la date de publication de ce tutoriel, Bluetooth n'est pas activé sur le Raspberry Pi Pico W.

Le 1er juillet 2022, jamesh, ingénieur Raspberry Pi et modérateur du forum, a déclaré : "Nous avons déjà commencé à travailler sur le logiciel pour BT, mais je ne peux pas encore proposer de calendrier. Le logiciel doit être écrit, testé et des tutoriels doivent être rédigés."

Pièces détachées

Le projet complet avec le panneau solaire en bas de la planche à pain

Mettre à jour le micrologiciel de votre Raspberry Pi Pico W

Le firmware du Raspberry Pi Pico W est en constante évolution, il est donc préférable d'utiliser le firmware le plus récent. Par exemple, le premier MicroPython UF2 public pour le Pico W a quelques problèmes de sécurité car les réseaux sont toujours ouverts.

Suivez ce lien pour savoir comment le mettre à jour. Le lien vous montrera également une méthode rapide pour diffuser votre propre réseau WiFi.

Installation solaire

Un panneau solaire qui alimente le Pico W doit produire 6V et 150mA, au moins.

Le panneau solaire doit produire au moins 6 volts et 150 mA.

La batterie doit être une batterie au lithium de la série 18650 avec une tension nominale de 3,7V.

Module de charge USB-C TP4056

Le module TP4056 protège la batterie et alimente le Pico W.

Dispositif de suivi météorologique

Carte d'interface BME688 par pi3g.

Pour ce projet, nous utilisons notre Carte d'interface BME688 conçue en interne.

Vous pouvez utiliser n'importe quel capteur météorologique tel qu'un DHT11 ou un DHT22, mais le code et le câblage de cet article sont destinés à un BME688.

Câblage

Placez votre Pico W et votre BME688 sur une planche à pain.

Vous devez connecter quatre broches : 3.3V, GND, SCL et SDA sur le BME688.

Voici ce que nous avons utilisé :

Pico W's GP1 se connecte à SCL;

GP0 se connecte à SDA;

GND se connecte à GND;

Ces trois broches doivent être alignées, à côté de la fente micro-USB.

3V3 se connecte à 3V3qui se trouve de l'autre côté de la carte.

Module de charge USB-C TP4056

Vous devrez souder des fils sur le TP4056.

Il est conseillé de souder les fils rouges aux connexions positives et les fils noirs aux connexions négatives.

Projet de panneau solaire Raspberry Pi Pico W

Les broches situées à côté du connecteur USB-C sont destinées à une connexion d'alimentation externe, comme notre module solaire.

Connectez ces broches à votre panneau solaire.

De l'autre côté, il y a des broches qui sont destinées à la puissance de sortie. Les broches étiquetées B+ et B- doivent être reliées à la batterie.

Nous avons décidé d'utiliser des pinces pour connecter notre porte-pile au TP4056 au cas où nous devrions changer le circuit, mais vous pouvez souder le porte-pile directement au TP4056 si vous le souhaitez.

Diode Schottky

Connectez une diode Schottky à la broche VSYS du Pico W.

Assurez-vous que l'anneau gris de la diode est orienté vers le Pico W, et que l'autre extrémité est connectée au rail positif de la planche à pain.

Puisque nous alimentons le Pico avec deux entrées d'alimentation, USB et le système solaire, nous devons utiliser une diode Schottky.

Une diode Schottky empêche la rétro-alimentation et vous permet d'utiliser deux tensions. Pour en savoir plus, cliquez ici.

Connecter TP4056 à la planche à pain

Raspberry Pi Pico W alimenté par énergie solaire terminé !
Raspberry Pi Pico W alimenté par énergie solaire terminé !

Connectez la sortie positive du TP4056 au rail positif de la planche à pain, où se trouve la diode Schottky.

Ensuite, connectez la sortie négative du TP4056 à une broche négative du Raspberry Pi Pico W.

Code pour faire fonctionner la station météo Raspberry Pi Pico W

Nous avons téléchargé tout notre code dans notre Repo Github ici.

Voici un guide sur la manière de télécharger des fichiers sur votre Pico W.

Si vous avez connecté les composants comme indiqué ci-dessus, vous pourrez exécuter le code sans aucune modification.

Cela dit, voici quelques éléments que vous pourriez vouloir modifier.

bme68x.py

Ce script modifie la sortie du BME688.

Pour obtenir des relevés de température et d'altitude précis, vous devrez modifier ces lignes, mises en évidence en gras :

 # change this to match the location's pressure (hPa) at sea level
        # bme68x.sea_level_pressure = 1013.25
       <strong> self.bme68x.sea_level_pressure = 1013</strong>

        # You will usually have to add an offset to account for the temperature of
        # the sensor. This is usually around 5 degrees but varies by use. Use a
        # separate temperature sensor to calibrate this one.
        <strong>self.temperature_offset = -9</strong>

main.py

Le fichier main.py lance un point d'accès et exécute également un serveur qui délivre un fichier HTML à toute personne qui se connecte.

Le fichier HTML est l'endroit où vous pouvez voir les lectures du BME688.

Lorsqu'il reçoit une connexion (via les sockets), le Pico W envoie le fichier index.html, mais avant de l'envoyer, il remplace certaines chaînes de caractères par les données provenant du BME688, via ce bloc de code :

data = {
    'T': 0,
    'P': 0,
    'A': 0,
    'H': 0,
    'G': 0,
    }
...
def get_html(html_name):
    with open(html_name, 'r') as file:
        html = file.read()
        
    return html
...
sensor = bme68x.BME68X()
... 
response = get_html('index.html')
    data = sensor.save_data('data.json')
    blink_onboard_led(1, 0.2)
    response = response.replace('id_temp', str(data['T']))
    response = response.replace('id_pres', str(data['P']))
    response = response.replace('id_alti', str(data['A']))
    response = response.replace('id_humi', str(data['H']))
    response = response.replace('id_gas', str(data['G']))
    print_data(data)
    conn.send(response)
    conn.close()

Comme vous pouvez le voir, la ligne où il est écrit data = sensor.save_data('data.json') est l'endroit où nous obtenons les données du capteur, puis le code modifie le fichier HTML avec les lectures correctes de la température, de la pression, de l'altitude, de l'humidité et de la conductivité du gaz.

Il y a un rafraîchissement automatique toutes les trois secondes.

Voici le bloc de code nécessaire pour diffuser le point d'accès sur le Raspberry Pi Pico W :


essid = 'Pico-W-Weather-Station'
password = '#FreeThePicoW'

ap = network.WLAN(network.AP_IF)
ap.active(True)
ap.config(essid=essid, password=password)

while ap.active() == False:
    pass

print('Connection successfull')
print(ap.ifconfig())

# Create sensor object
sensor = bme68x.BME68X()

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(3)
blink_onboard_led(3, 0.2)

Note : si vous utilisez le firmware original, vous devez le mettre à jour, sinon vous ne pourrez pas renommer le SSID ou bénéficier de la sécurité sans fil. Nous l'avons testé sur la nightly build du 15 juillet 2022 et cela a finalement fonctionné. Il y a d'autres bizarreries et bugs, alors n'hésitez pas à lire notre explication ici.

CLIQUEZ ICI : Diffusion d'un réseau WiFi (point d'accès SoftAP)

Connexion à votre point d'accès Pico W

Lorsque la diffusion de l'AP est réussie, votre Pico W clignote trois fois avec le code fourni.

Connectez-vous à votre AP, qui doit être nommé Station météo Pico-W.

Saisir le mot de passe #FreeThePicoW

Connectez-vous à votre Pico en utilisant l'adresse IP. Si vous l'avez lancé depuis Thonny, vous verrez l'adresse IP dans le shell.

Sinon, vous pouvez essayer 192.168.4.1 car il s'agit le plus souvent de l'adresse IP du Pico W et vous devriez voir la capture d'écran à droite :

Vous avez terminé

Dans ce projet, vous avez appris à diffuser un réseau à partir de la fonction SoftAP du Raspberry Pi Pico W. Vous avez également appris à connecter un panneau solaire et une batterie au Pico W.

Si vous souhaitez en savoir plus sur le Pico W, pourquoi ne pas lire notre méga article ici ?

CLIQUEZ ICI : Tout ce que vous devez savoir sur le Raspberry Pi Pico W

7 commentaires

  1. Carlos sur juillet 25, 2022 à 8:34 am

    Les spécifications du TP4056 indiquent qu'il faut maintenir la tension d'entrée à 5.5V ou 6V, un panneau solaire de 6V peut donner 6V et probablement 7V+ dans certains cas. Je suis un peu perdu à ce sujet. Pourriez-vous m'éclairer sur ce point ?

    Merci !

  2. Bigalbo sur juillet 28, 2022 à 8:12 am

    J'ai réalisé ce projet et j'ai obtenu d'excellents résultats avec des mesures très précises. Mais j'ai rencontré un problème : il ne fonctionne que pendant 10 à 15 minutes, puis s'arrête. J'ai découvert que si je supprime le fichier json, c'est la seule façon de le faire fonctionner à nouveau.
    Existe-t-il un moyen de l'empêcher de les stocker et de n'envoyer que des données ?
    Je dois dire que c'est du bon travail, continuez à en faire, s'il vous plaît👍

    • Nabla sur août 8, 2022 à 1:14 pm

      Dans le fichier bme68x.py, la méthode save_data continue d'ajouter des lignes au fichier Jason. A un moment donné, il doit devenir trop gros. Vous pouvez modifier la méthode pour ne conserver que les x dernières lignes de data_list avant de sauvegarder le fichier. Vous devrez trouver le x idéal. Vous pourriez aussi ne conserver que la mesure actuelle. De cette façon, le fichier restera suffisamment petit.

  3. Thomas sur septembre 6, 2022 à 11:31 am

    Après 4.104 caractères, le fichier 'data.json' remplit la mémoire du petit pico .-/

    La question est la suivante : comment limiter ce phénomène pour que le projet susmentionné soit fonctionnel ?
    Un exemple / un ajout de code (en tant que mise à jour) serait très apprécié !

    TiA - et continuez à faire du bon travail... .
    PS : un numéro correspondant dans le GitHub Repo a également été publié.

  4. BigMac sur septembre 14, 2022 à 6:43 pm

    L'utilisation du TP 4056 pour un tel projet n'est pas une solution efficace, voir :
    https://www.best-microcontroller-projects.com/tp4056.html

    La conception constructive peut utiliser un commutateur de réglage MPTT, comme le Waveshare,
    Description ici :
    https://www.waveshare.com/solar-power-manager.htm

    Santé !

  5. Mark Beans sur juillet 9, 2023 à 9:01 pm

    Excellente idée de projet ! Quelqu'un a conçu un boîtier imprimé en 3D qu'il souhaite partager ?

  6. Pavlo sur février 22, 2024 à 11:32 am

    Salut,
    merci pour le manuel.
    Selon les spécifications du TP4056 LED-Anzeige Rot : (Ladevorgang), LED-Anzeige Blau : (Standby, Ladevorgang abgeschlossen)
    Dans mon cas, j'ai les deux LEDs allumées sur TP4056 lorsque le panneau solaire est placé sous une lumière directe. Est-ce que c'est voulu ?
    Est-il possible que la batterie soit chargée à partir de l'énergie solaire et qu'elle alimente simultanément le Pico ?

Laissez un commentaire