Note

Bonjour, bienvenue dans la communauté SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts sur Facebook ! Plongez plus profondément dans le monde du Raspberry Pi, de l’Arduino et de l’ESP32 avec d’autres passionnés.

Pourquoi nous rejoindre ?

  • Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprendre & Partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.

  • Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux avant-goûts.

  • Réductions spéciales : Profitez de réductions exclusives sur nos nouveaux produits.

  • Promotions festives et tirages au sort : Participez à des promotions spéciales et à des concours.

👉 Prêt à explorer et créer avec nous ? Cliquez sur [ici] et rejoignez-nous dès aujourd’hui !

9. Jouer avec le contrôleur @SunFounder

Dans ce projet, vous apprendrez à créer un projet à distance en utilisant l’application Sunfounder Controller. Dans un environnement LAN, vous pouvez contrôler votre circuit Pico W avec votre téléphone ou votre tablette. Vous trouverez cette application très utile si vous souhaitez construire un robot simple avec le Pico W.

Ici, nous utiliserons la barre de curseur de l’application pour contrôler l’angle du servo et le manomètre de l’application pour afficher la distance détectée par le capteur ultrasonique.

1. Composants requis

Dans ce projet, nous avons besoin des composants suivants.

Il est définitivement pratique d’acheter un kit complet, voici le lien :

Nom

ARTICLES DANS CE KIT

LIEN

Kepler Kit

450+

Kepler Ultimate Kit

Vous pouvez également les acheter séparément à partir des liens ci-dessous.

SN

COMPOSANT

QUANTITÉ

LIEN

1

Découvrir le Pico W

1

ACHETER

2

Câble Micro USB

1

3

Plaque d’essai (Breadboard)

1

ACHETER

4

Fils de connexion (Jumper Wires)

Plusieurs

ACHETER

5

Servo

1

ACHETER

6

Module Ultrasonique

1

ACHETER

7

Module de chargeur Li-po

1

8

Batterie 18650

1

9

Support de batterie

1

2. Construire le circuit

Avertissement

Assurez-vous que votre module de charge Li-po est connecté comme indiqué sur le schéma. Sinon, un court-circuit pourrait endommager votre batterie et votre circuit.

../../_images/9.sc_bb.png

3. Configurer le contrôleur SunFounder

  1. Installez SunFounder Controller APP depuis l”APP Store (iOS) ou Google Play (Android).

  2. Ouvrez l’application et cliquez sur le bouton + sur la page d’accueil pour créer un contrôleur.

  3. Ici, nous choisissons Blank et Dual Stick.

  4. Vous obtenez maintenant un contrôleur vide.

  5. Cliquez sur la zone H et ajoutez un widget Slider.

  6. Cliquez sur l’engrenage du contrôle pour ouvrir la fenêtre des paramètres.

  7. Réglez Maximum à 180 et Minimum à 0, puis cliquez sur Confirmer.

  8. Cliquez sur la zone L et ajoutez un widget Gauge.

  9. Cliquez sur l’engrenage du Gauge, ouvrez la fenêtre des paramètres, réglez Maximum à 100, Minimum à 0 et unité à cm.

  10. Après avoir terminé les réglages des widgets, cliquez sur Sauvegarder.

    ../../_images/sc-a-10.png

4. Exécuter le code

Note

Si votre Pico W utilise actuellement le firmware Anvil, vous devrez 1.3 Installer MicroPython sur votre Pico.

  1. Téléchargez ws.py et websocket_helper.py depuis le chemin kepler-kit-main/libs vers le Raspberry Pi Pico W.

    ../../_images/9_sc3.png
  2. Double-cliquez sur le script ws.py et renseignez les SSID et PASSWORD de votre réseau Wi-Fi.

    ../../_images/9_sc1.png
  3. Ouvrez 9_sunfounder_controller.py dans le chemin kepler-kit-main/iot. Cliquez sur le bouton Run current script ou appuyez sur F5 pour l’exécuter. Après une connexion réussie, vous verrez l’adresse IP de Pico W.

    ../../_images/9_sc2.png

    Note

    Si vous souhaitez que ce script se lance au démarrage, vous pouvez le sauvegarder sur le Raspberry Pi Pico W en tant que main.py.

  4. Retournez sur l’application SunFounder Controller et cliquez sur le bouton Connect.

  5. Si Pico W est détecté, touchez-le directement pour vous connecter.

  6. S’il ne se connecte pas automatiquement, vous pouvez aussi entrer manuellement l’adresse IP pour vous connecter.

  7. Lorsque vous faites glisser la barre de curseur dans la zone H après avoir cliqué sur le bouton Run, le servo ajustera son angle. Le manomètre dans la zone L affichera la distance si votre main se trouve à moins de 100 cm du capteur ultrasonique.

Comment ça marche ?

La classe WS_Server dans la bibliothèque ws.py permet de communiquer avec l’application. Voici le cadre pour implémenter sa fonctionnalité de base.

from ws import WS_Server
import json
import time

ws = WS_Server(8765) # init websocket

def main():
    ws.start()
    while True:
        status,result=ws.transfer()
        time.sleep_ms(100)

try:
    main()
finally:
    ws.stop()

Tout d’abord, nous devons créer un objet WS_Server.

ws = WS_Server(8765)

Lancer le serveur.

ws.start()

Ensuite, une boucle while True est utilisée pour effectuer le transfert de données entre Pico W et l’application SunFounder Controller.

while True:
    # transfert des données via websocket
    status, result = ws.transfer()

    # état du transfert de données
    print(status)

    # données reçues
    print(result)

    # données envoyées
    print(ws.send_dict)

    time.sleep_ms(100)

status est False si la réception des données de l’application échoue.

Et result contient les données que Pico W a récupérées depuis l’application. En les affichant, vous verrez quelque chose comme ceci, qui représente les valeurs de toutes les zones des widgets.

{'C': None, 'B': None, 'M': None,,,,, 'A': None, 'R': None}

Dans cet exemple, nous imprimons les valeurs de la zone H séparément et les utilisons pour contrôler le circuit.

status,result=ws.transfer()
#print(result)
if status == True:
    print(result['H'])

Le dictionnaire ws.send_dict contient les données que Pico W envoie à l’application SunFounder Controller. Il est créé dans la classe WS_Server et est envoyé lorsque ws.transfer() est exécuté.

Le message est illustré ci-dessous.

{'Check': 'SunFounder Controller', 'Name': 'PicoW', 'Type': 'Blank'}

C’est un message vierge, pour copier les données sur le widget de l’application, nous devons attribuer une valeur à la zone correspondante du dictionnaire. Par exemple, attribuer la valeur 50 à la zone L.

ws.send_dict['L'] = 50

Les données apparaîtront ainsi :

{'L': 50, 'Type': 'Blank', 'Name': 'PicoW', 'Check': 'SunFounder Controller'}

Pour plus de détails sur l’utilisation de SunFounder Controller, veuillez consulter SunFounder Controller APP.