Page Web pour Synthétiseur DDS AD9850 sur Raspberry

Pour piloter un synthétiseur DDS AD9850 depuis une page web hébergée sur un Raspberry Pi 3 sous le dernier OS (Raspberry Pi OS Bookworm, qui utilise nativement la bibliothèque lgpio pour les GPIO), voici l’architecture complète, le schéma de flux, le câblage et le code source prêt à l’emploi.

1. Architecture et Flux de Données

Le système repose sur une architecture client-serveur légère où le Raspberry Pi héberge à la fois le serveur web et le contrôleur matériel.

Architecture et flux DDS AD9850 sur Raspberry PI et serveur Web

2. Câblage Matériel (Raspberry Pi 3 vers AD9850)

Le module AD9850 est branché en mode série pour économiser les broches GPIO du Raspberry Pi.

Broche AD9850RôleBroche Raspberry Pi 3 (BCM)Numéro de Broche Physique (Header 40 pins)
VCCAlimentation 3.3V / 5VPin 5V ou 3.3VPin 2 ou Pin 1
GNDMasseGNDPin 6
W_CLKWord Load ClockGPIO 11Pin 23
FQ_UDFrequency UpdateGPIO 8Pin 24
DATADonnées SérieGPIO 10Pin 19
RESETRéinitialisationGPIO 25Pin 22

Note : La plupart des modules AD9850 du commerce possèdent un oscillateur à quartz de 125 MHz. C’est cette valeur qui est utilisée dans le calcul mathématique de la fréquence.

3. Prérequis et Installation sur le dernier OS (Bookworm)

Sur Raspberry Pi OS Bookworm, la gestion des GPIO a évolué vers lgpio et les environnements Python doivent être virtualisés.

Ouvrez un terminal sur votre Raspberry Pi et exécutez ces commandes :

Bash

4. Code Source du Programme

A. Le Backend Python (app.py)

Créez le fichier principal du serveur web :

Python

B. L’Interface Web (templates/index.html)

Créez le fichier HTML de l’interface dans le dossier templates/ :

HTML

5. Lancement et Utilisation

  1. Démarrez l’application Flask depuis votre terminal :
    Bashpython3 app.py
  2. Ouvrez un navigateur web (depuis un ordinateur ou un smartphone connecté au même réseau Wi-Fi/Ethernet que le Raspberry Pi) et accédez à l’adresse IP de votre Pi sur le port 5000 :
    Plaintexthttp://<IP_DE_VOTRE_RASPBERRY_PI>:5000
  3. Saisissez la fréquence désirée en Hertz (ex: 7100000 pour 7.1 MHz) et cliquez sur Appliquer la Fréquence pour piloter instantanément votre module AD9850.

Annexe : Ajouter des mots de passe pour se connecter

Pour sécuriser l’accès à la page web et au pilotage du DDS AD9850 avec un système d’authentification multi-utilisateurs (plusieurs identifiants/mots de passe), nous allons utiliser le système de sessions Flask et de hachage sécurisé de mots de passe (werkzeug.security).

Voici les modifications à apporter au projet :

1. Mise à jour du code Backend (app.py)

Remplacez votre fichier app.py par la version suivante. Elle intègre un dictionnaire sécurisé d’utilisateurs, une page de connexion (/login), une déconnexion (/logout) et une protection par décorateur sur les routes sensibles.

Python

2. Création de la page de Connexion (templates/login.html)

Dans votre dossier templates/, créez un nouveau fichier nommé login.html :

HTML

3. Ajout d’un bouton de déconnexion dans l’interface principale (templates/index.html)

Modifiez légèrement votre fichier templates/index.html pour y inclure un message de bienvenue et un bouton de déconnexion dans le coin supérieur (ou sous le titre) :

HTML

4. Comment ajouter de nouveaux utilisateurs ?

Pour ajouter d’autres comptes, vous pouvez générer le hachage sécurisé d’un mot de passe directement en Python dans un terminal sur votre Raspberry Pi :

Bash

Copiez la chaîne de caractères générée et ajoutez-la dans le dictionnaire USERS du fichier app.py :

Python