Présentation du Relais D/ATV de la montagne de Lure
Ce document présente le relais D/ATV de la Montagne de Lure F5ZMP qui est actuellement en service dans sa version du 20 septembre 2017.
Historique : Le relais existe depuis plus de 15 ans, à l'origine il était installé dans un coffret étanche, il a migré dans le bâtiment du club qui abrite les autres équipements, et il a été reconditionné pour tenir dans un rack 19'' monté en armoire vers les années 2008/2009.
Cette dernière version est de nouveau dans un rack avec tous les fonctions sous forme de modules débrochables. Nous avons profité de cette version, pour changer complètement l'organisation du relais et d'introduire une gestion complète du relais par Raspberry/ Python3 apportant la possibilité d'apporter des modification sur le fonctionnement et de le rendre évolutive aux dernières technologie; introduction à la DATV, Hamnet, etc.
1.1. Fréquences utilisées
Pour rappel:
Émission analogique sur 1 255 MHZ polar H Sud et Nord/Est
Entrée analogique sur 2 308 MHz polar H orienté Sud
Entrée DATV 437 MHz SR1024 PID1000 polar H orienté Sud
DTMF VHF 144,625 MHz Polar V
DTMF UHF 439,6125 MHZ PolarV modifiée pour éviter QRM sur 625
Link Marseille
Lien descendant F5ZMP vers F5ZAJ : 10 220 MHz Polar H
Lien montant F5ZAJ vers F5ZMP : 10 448 MHz polar V
Link Mont Bouquet
Lien descendant F5ZMP vers F1ZUT : 10 260 MHz polar H
Lien montant F1ZUT vers F5ZMP : en cours de réalisation
1.2. Architecture F5ZMP
Lors de la refonte du relais, nous en avons profité pour repenser sa conception. Le principe'est d'avoir un micro-ordinateur (Raspberry) en liaison avec des modules à travers un réseau interne.
Ce réseau est basé sur un réseau I2C, développé au siècle dernier par Philips et qui est devenu aujourd'hui un des standard pour l'échange de données. Ce principe permet d'avoir des modules indépendants et ''intelligents'' pour avoir une capacité de repli en cas de perte avec le Raspberry, et de répondre à chacune de ses requêtes.
Les modules en liaison avec le Raspberry sont:
Les récepteurs analogiques, basés sur des modules Comtech avec une démodulation F5AD,
les TRX VHF et UHF (réception DTMF) basés sur des modules DRA818,
le module de commandes d'alimentation des émetteurs (1255,10220 et 10260MHz),
la platine de commutation Vidéo/audio fixée sur le rack du relais.
Le dernier module OSD (On Screen Display, affichage d'informations sur les caméras) est en communication avec le Raspberry via une communication SPI(Serial Périphérie Interface), ce module contient l'OSD pour la sortie 1255MHz, un deuxième OSD est prévu pour alimenter les Tx 10GHz, mais non installé pour le moment.
1.3. Codes DTMF
Tous les codes DTMF commence par les codes # et 4, le troisième code DTMF spécifie le ou les émetteurs concernés et le quatrième fait le choix de la source vidéo/audio.
Code dtmf3 = 1, 1er groupe
Notes:
Une fois la commande envoyée et validée, l'émetteur ou les émetteurs démarrent pour une durée de 60 mn. Une nouvelle commande redémarre la minuterie, hormis la demande du menu (#411) qui ne la redémarre pas. Le menu affiche les temps écoulés pour les émetteurs (#411).
Si les émetteurs sont en parallèle, la commande du premier groupe agit sur l'ensemble des émetteurs.
Cet état est visible dans le menu et infos(#411)
dtmf 1 |
dtmf2 |
dtmf3 |
dtmf4 |
Fonctions Vidéo |
Audio |
# |
4 |
1 |
0 |
Arrêt émissions du relais |
|
# |
4 |
1 |
1 |
Menu et infos |
1000Hz |
# |
4 |
1 |
2 |
Entrée utilisateur 2308MHz |
RX, 6,5Mhz |
# |
4 |
1 |
3 |
Réception F5ZAJ (Marseille) |
RX, 6,5Mhz |
# |
4 |
1 |
4 |
Réception F1ZUT (Mont Bouquet) non op. |
non op. |
# |
4 |
1 |
5 |
Réception DATV 437MHz sr1024 pid1000 |
Rx |
dtmf 1 |
Dtmf2 |
dtmf3 |
dtmf4 |
Fonctions Vidéo |
Audio |
# |
4 |
1 |
6 |
Réception DATV Minitioune( non op.) |
Rx |
# |
4 |
1 |
7 |
Caméra Ouest |
Rx 144,625MHz |
# |
4 |
1 |
8 |
Caméra Nord/Est |
Rx 439,8125MHz |
# |
4 |
1 |
9 |
Mire Animée |
1000Hz |
# |
4 |
1 |
0 |
Arrêt des émetteurs |
|
# |
4 |
1 |
* |
Mire fixe barres de couleurs |
1000Hz |
# |
4 |
1 |
# |
Mire fixe détail |
1000Hz |
# |
4 |
1 |
# |
Mire fixe détail |
1000Hz |
# |
4 |
1 |
A |
Commande les émetteurs 1,255 et 10GHz en // |
|
# |
4 |
1 |
B |
Sépare la commande des émetteurs 1,255 et 10GHz. |
|
Code dtmf3 = 2, 2ième groupe
Concerne uniquement les émetteurs 10GHz, si la commande (#41B) a été validée.
dtmf 1 |
Dtmf2 |
dtmf3 |
dtmf4 |
Fonctions Vidéo |
Audio |
# |
4 |
2 |
0 |
Arrêt émissions du relais |
|
# |
4 |
2 |
1 |
Menu et infos |
1000Hz |
# |
4 |
2 |
2 |
Entrée utilisateur 2308MHz |
RX, 6,5Mhz |
# |
4 |
2 |
3 |
Réception F5ZAJ (Marseille) |
RX, 6,5Mhz |
# |
4 |
2 |
4 |
Réception F1ZUT (Mont Bouquet) non op. |
non op. |
# |
4 |
2 |
5 |
Réception DATV 437MHz sr1024 pid1000 |
Rx |
# |
4 |
2 |
6 |
Réception DATV Minitioune( non op.) |
Rx |
# |
4 |
2 |
7 |
Caméra Ouest |
Rx 144,625MHz |
# |
4 |
2 |
8 |
Caméra Nord/Est |
Rx 439,8125MHz |
# |
4 |
2 |
9 |
Mire Animée |
1000Hz |
# |
4 |
2 |
0 |
Arrêt des émetteurs |
|
# |
4 |
2 |
* |
Mire fixe barres de couleurs |
1000Hz |
# |
4 |
2 |
# |
Mire fixe détail |
1000Hz |
1.4. Les Évolutions à venir
Les évolutions à venir dans les prochains mois:
- Liaison Hamnet pour une gestion du raspberry à distance
- Extension des codes DTMF pour avoir :
- un menu complété avec des informations sur l'état du relais, alimentation, niveau de réception, mesures de la puissance de sortie et retour.
- l'accès à l’historique des niveaux de réception et valeurs alimentations gérés par une base de données
- etc...
- réception 437MHz en TNT
- antenne big wheel 437MHz pour réception omnidirectionnelle
- émission Mire DATV sur 23cm (fréquence à définir)
- liaisons RS485 avec les TX 10GHz
- etc...
1.5. Principe de fonctionnement
Le raspberry est en liaison avec les modules en I2C, hormis la liaison avec l'OSD qui est en SPI. Dans cette version, les liaisons I2C et RS485 avec les TX's (1255Mhz,10220MHz et 10260MHz) ne sont pas opérationnelles.
Chaque type de module ou groupe de même module installé dans le rack portent un numéro.
Principe d'intercommunication entre les différents modules.
Implantation des modules dans le rack: en partant de la gauche
Type 1 |
Modules d'alimentation 12Vcc >7Vcc, 2 modules, chaque module possède 2 alimentations. Module 1A 7V pour les récepteurs, module 1B 7V pour le raspberry Module 2A 7V pour le TRX UHF, module 2B pour le TRX VHF |
Type 2 |
Raspberry PI3 avec le convertisseur de niveau 5v/3,3V pour l'I2C |
Type 3 |
OSD (inscription sur image) MAX7456 |
Type 4 |
Module de commandes d'alimentation des émetteurs via 8 relais et de l'horloge RTC |
Type 5 |
Modules Récepteurs ATV 1 module pour la réception de F5ZAJ, 1 module pour la réception utilisateurs 2308MHz, emplacement prévu pour la réception de F1ZUT |
Type 6 |
Modulateurs bande de base pour les 2 TX 10GHZ |
Type 7 |
Emplacement pour l'exciter TX1255MHz |
Type 8 |
Module TRX VHF et Modules UHF à base de DRA818 |
type 9 |
Réserve |
Type 10 |
Commutation Vidéo/audio situé sue la dessus du rack |
Implantions des modules dans le rack
note: ce schéma n'est pas à l'échelle.
Les émetteurs 10GHz (module 6) ont la même source et une seule entrée est opérationnelle.
2. Description Technique
2.1. Alimentations:
L'alimentation générale est de 12Vcc, chaque convertisseur alimenté par les modules de type 1(modules d'alimentation), sont suivis par une régulation 7V > 5Vcc (7805) intégrée.
2.2. Consommation
Relevés le 21 juin 2017
en réception 1,78A
avec Tx 1255MHz 7,18A
avec TX 10220MHz 8,02A
avec Tx 10260MHz 8,63A
2.3. Couleurs des fils Rouge 10Vcc, ou 7Vcc, ou 5Vcc Noir ou bleu = Masse
Jaune SDA I2C Gris SCL I2C
2.4. Interconnexion des modules
les interconnections entre les modules sont réalisées par un câblage avec fils sur des connecteurs de type DB9 et DB25 pour le raspberry.
Les connections sont détaillées ci-dessous.
a) Modules d'alimentation de type 1 connecteur DB9 femelle
b) Module OSD type 3 connecteur DB9 mâle
c) Modules d'alimentation de type 4 à 8 inclus connecteur DB9 mâle
Note : les modules 8 TRX_VHF et TRX_UHF ont la sortie interruption à la pin N° 4, et non à la masse.
d) Module Raspberry type 2 DB25 femelle
3 . Principe des communications I2C
La communication I2C est gérée par le raspberry à travers son GPIO (port d'entrées/sorties). Un convertisseur de niveau installé sur le module Raspberry convertit ces signaux de 3,3Vcc en 5Vcc, et vice versa, ce convertisseur est décrit dans le paragraphe du Raspberry.
Le raspberry est le maître sur le réseau I2C, c'est lui qui initialise les communications avec les modules qui sont esclaves. Chaque module est équipé du même type de PIC, un PIC16F88 chaque PIC possède une seule et unique adresse suivant le tableau ci-dessous.
3.1. Adresse I2C
Adresse I2C |
Désignation |
Adresse PIC |
h'29' |
Récepteur link F5ZAJ |
|
h'2A' |
Récepteur entrée analogique 2308MHz |
|
h'2B' |
Récepteur link F1ZUT, non opérationnel |
|
h'2C' |
Récepteur réserve |
|
h'2E' |
TRX 144MHz |
|
h'2F' |
TRX 439MHz |
|
h'31' |
Commutation Vidéo Audio |
|
h'33' |
Commandes TRX |
|
h'48' |
Température LM75 (capteur intégré sur la carte commandes TRX |
|
h'57' |
EEPROM sur circuit RTC |
|
h'68' |
Horloge RTC, utilisé par Raspbian |
|
A travers chaque adresse, le raspberry peut lire et également écrire dans la mémoire du PIC adressé. Le principe des programmes à l'intérieur de chaque PIC est identique, à la mise sous tension, chaque PIC charge des valeurs par défaut, contenues en EEPROM, et spécifiques aux périphériques qu'il contrôle, par exemple:
Les récepteurs, chaque récepteur charge dans son module Comtech la valeur par défaut de la fréquence à recevoir, le shift positif ou négatif de 479,5 Mhz, etc,,.
Les TRX DTMF, passe en réception et charge les fréquences de réception et d'émission La baie de commutation vidéo/audio est positionnée sur la mire avec émission du 1000Hz etc...
Après l'exécution de leur programme d'initialisation chaque PIC lit en boucle le contenu d'une variable contenue en mémoire RAM. Cette variable est modifiée par Raspberry à travers le réseau I2C pour demander au PIC concerné l'exécution d'une application spécifique. Une fois cette application réalisée la variable est remise à zéro pour indiquer son bon déroulement et repart dans la boucle, en attendant une nouvelle demande. Cette variable porte le nom de status_pgre dans les programmes qui sont tous écrit en assembleur.
Dans la description de chaque module est décrit précisément les fonctions disponibles, c'est à dire les valeurs que la variable status_pgre est capable de reconnaître.
3.2. Méthode de communication en python3 avec les modules I2C
Une suite d'exemple tiré du programme de F5ZMP présente la façon d’accéder à la mémoire des PIC implantés sur ces modules.
a) Lecture d'un octet :
status_pgre_RX1 = bus.read_byte_data(DEVICE_ADDRESS_RX1,6) status_pgre_RX1 variable qui contiendra la valeur de l'octet
bus. Constante spécifiant le bus 1, read_byte_data, commande de lecture,
DEVICE_ADRESS_RX1, adresse du récepteur RX1, correspond à la valeur h'29' (voir paragraphe précédemment).
b) Écriture d'un octet :
write_byte_data(DEVICE_ADDRESS_TRX_VHF,0x12,4) bus, idem lecture
write_byte_data, commande d'écriture DEVICE_ADDRESS_TRX_VHF,
adresse du module TRX_VHF 0x12 adresse de la mémoire où sera rangée l'octet en hexadécimal,
4,valeur décimale qui sera placée à l'adresse ci-dessus.
c) Lecture d'un bloc de 32 octets dma_cde_tor=bus.read_i2c_block_data(DEVICE_ADDRESS_COMMANDES_RE LAIS,0x00)
dma_cde_tor, variable contenant les 32 octets read_i2c_block_data, commande de lecture des blocs
DEVICE_ADDRESS_COMMANDES_RELAIS, adresse du module commande relais
00, adresse du premier octet lu.
d) Écriture d'une série de
QRG = [49, 52, 52, 54, 50, 53, 48, 49, 52, 52, 54, 50, 53, 48]
bus.write_i2c_block_data(DEVICE_ADDRESS_TRX_VHF, 0, QRG)
QRG = bloc de variables
write_i2c_block_data, commande d'écriture du bloc DEVICE_ADDRESS_TRX_VHF,
adresse du module TRX_VHF 0,
adresse du premier octet
et les variables.
Python3 permet l'utilisation d'autres fonctions en relation avec le réseau i2c, voir la documentation. Vous trouverez au chapitre suivant l'adresse et les octets pour chaque module en liaison i2C avec le raspberry.
4. Description des modules
4.1. Module de Type 1, Alimentations
Chaque module intègre 2 convertisseurs de tension qui fournissent du 7,5 Vcc à partir du 12Vcc, ils sont référencés A et B.
Ces convertisseurs utilisent des circuits achetés sur e-bay à base de LM2596, ces circuits sont donnés pour un maximum de 1A. Chaque convertisseur est protégé par un fusible de 1A, ils sont suivis par des filtres passe bas, pour se protéger du 150KHz, fréquence de fonctionnement des LM2596.
Schéma de simulation avec RF99.
En sortie de chaque convertisseur une led verte indique la présence de tension en sortie, de plus le module de type 4 (Commandes des relais et horloge RTC mesure les tensions de sortie de chacun des convertisseurs et les affichent sur le Menu et infos #411).
Le module de type 1 gauche, en haut (A) alimente les récepteurs (modules Comtech), en bas le raspberry (B).
Le module de type 1 droit, en haut alimente le TRX UHF (A), en bas le TRX VHF (B).
4.2 Module Raspberry
Le module Raspberry contient le régulateur 7805 pour alimenter le raspberry et le convertisseur de niveau sur le réseau I2C (3,3V/5V).
Le raspberry à l'origine était un PI2 modèle B, aujourd'hui c'est un PI3 modèle B. La carte SD mémoire est d'une capacité de 16GB. Le système d'exploitation utilise Raspbian, la version déclinée de Debian.
La version de Rasbian est là suivante: Version: July 2017
Release date: 2017-07-05
Kernel version: 4.9
La mission principale du raspberry, est l'exécution du programme du relais D/ATV écrit en Python3. A ce jour la charge du fonctionnement est inférieur à 5% de ses capacités. Ce qui permettra d’accueillir d'autres évolutions et fonctions.
Les entrées/sorties câblées sont
- l'alimentation 5Vcc provenant du régulateur 7805, qui lui-même est alimenté par l'alimentation 7,5Vcc provenant du module de type1B.
- La sortie vidéo composite (la sortie HDMI n'est pas utilisé), sur cette sortie nous avons la possibilité d'entrer sous le système d'exploitation pour les opérations de maintenance, mise à jour, etc...avec l'aide du clavier et de la souris connectés en USB, en face avant du module. C'est aussi par cette sortie que le raspberry génère la vidéo des mires animées ou fixes, et le menu principal envoyée aux émetteurs. La définition est de 768 x 576 en PAL.
- La liaison Ethernet qui permet en local d'intervenir dans le système d'exploitation et le programme du raspberry à travers un PC sous Windows ou Linux.
- Sur le connecteur GPIO (Entrées/Sorties) est raccordé ;
◦ le réseau I2C raccordé au convertisseur de niveau 3,3Vcc/5Vcc (SCL et SDA)
◦ Les deux entrées logiques qui proviennent des modules TRX DTMF, qui informe au programme du raspberry sous forme d'interruption, l'arrivée d'un code DTMF.
◦ Les connexions SPI avec les OSD, ces signaux sont l'horloge, l'entrée, la sortie et les sélections des l'OSD's
◦ les connexions série (RS485) ne sont pas encore câblées et seront utilisées dans le futur pour dialoguer avec les émetteurs.
Le convertisseur de niveau I2C est un module fabriqué à partir de la note AN10441 de NXP semiconductors.
Le schéma est le suivant :
Les transistors sont des 2N7000, les résistances de rappel Rp coté 3,3Vcc (Raspberry) sont intégrées sur la carte mère du Rasperry (1,8Kohm), les résistances de rappel côté I2C 5Vcc sont des 4,7Kohm.
En sortie de chaque convertisseur une led verte indique la présence de tension en sortie, de plus le module de type 4 (Commandes des relais et horloge RTC mesure les tensions de sortie de chacun des convertisseurs et les affichent sur le Menu et infos #411).
Le module de type 1 gauche, en haut (A) alimente les récepteurs (modules Comtech), en bas le raspberry (B).
Le module de type 1 droit, en haut alimente le TRX UHF (A), en bas le TRX VHF (B)
4.3. Module OSD
Le module OSD utilise un composants CMS MAX7456 spécialisé dans la vidéo analogique. Ce circuit intégré nécessite peut de composants et il est piloté par le raspberry à travers les liaisons SPI. Le circuit monté est un circuit trouvé chez sparkfun sur lequel les deux connecteurs RCA ont été supprimés. Un régulateur 7805 alimente ce circuit à partir du 12Vcc de service.
Le deuxième OSD prévu pour la sortie 2 en alimentation des émetteurs 10GHz sera fait sur un circuit spécifique, le société sparkfun a arrêtée sa commercialisation.
4.4. Module de commandes des relais (émetteurs) et horloge.
Ce module est constitué de deux circuits :
l'horloge RTC qui permet de conserver l'heure même pendant un arrêt du Raspberry ou de perte d'alimentation générale. A chaque démarrage du raspberry, il récupère son horloge auprès de ce module par la liaison I2C. Ce circuit trouvé sur ebay fonctionne avec un DS3231 et une batterie de 3,3Vcc
Le module de commande des relais d'alimentation des émetteurs, ce module à trois fonctions écrit dans le PIC16F88 qui communique à travers le réseau I2C :
Piloté chaque relais à partir des ordres donnés par le raspberry, et de veiller que le relais retombe au bout du temps alloué, par défaut 60mn. Ce système est une sécurité, dans le cas ou il y a une perte de la demande d'arrêt (arrêt raspberry, perte réseau I2C, etc...)
Mesurer les tensions de sortie des alimentations et les affichées dans le menu et infos (#411) Mesurer la température ambiante et l'affichée dans le menu (au degré près).
Ci-dessous les variables accessibles par le raspberry
Non de la variable adresse ram pic adresse PI2 Définition
0 tempo1 0x20 0x00 temporisation nbre de mn, proviennent de l'eeprom à initialisation, si tempo = 0 = sortie permanente
1 tempo2 0x21 0x1 temporisation nbre de mn, proviennent de l'eeprom à initialisation, si tempo = 0 = sortie permanente
2 tempo3 0x22 0x2 temporisation nbre de mn, proviennent de l'eeprom à initialisation, si tempo = 0 = sortie permanente
3 tempo4 0x23 0x3 temporisation nbre de mn, proviennent de l'eeprom à initialisation, si tempo = 0 = sortie permanente
4 tempo5 0x24 0x4 temporisation nbre de mn, proviennent de l'eeprom à initialisation, si tempo = 0 = sortie permanente
5 tempo6 0x25 0x5 temporisation nbre de mn, proviennent de l'eeprom à initialisation, si tempo = 0 = sortie permanente
6 tempo7 0x26 0x6 temporisation nbre de mn, proviennent de l'eeprom à initialisation, si tempo = 0 = sortie permanente
7 tempo8 0x27 0x7 temporisation nbre de mn, proviennent de l'eeprom à initialisation, si tempo = 0 = sortie permanente
8 status_out 0x28 0x8 sorties des 8 relais
9 Ani0 0x29 0x9 entrée analogique 0 - alimentation générale
10 Ani1 0x2A 0xA entrée analogique 1 - alimentation BlocA haut
11 Ani2 0x2B 0xB entrée analogique 2 - alimentation BlocA bas
12 Ani3 0x2C 0xC entrée analogique 3 - alimentation Bloc B haut
13 Ani4 0x2D 0xD entrée analogique 4 - alimentation Bloc B bas
14 status_pgre 0x2E 0xE status_programme, voir table des fonctions
15 nber_error 0x2F 0xF nombre d'erreur sur l'I2C interne communication avec le PCF8574
16 count0sec 0x30 0x10 compte les secondes,repasse à 0 après 60 incrémentations
17 count1sec 0x31 0x11 compte les secondes,repasse à 0 après 60 incrémentations
18 count2sec 0x32 0x12 compte les secondes,repasse à 0 après 60 incrémentations
19 count3sec 0x33 0x13 compte les secondes,repasse à 0 après 60 incrémentations
20 count4sec 0x34 0x14 compte les secondes,repasse à 0 après 60 incrémentations
21 count5sec 0x35 0x15 compte les secondes,repasse à 0 après 60 incrémentations
22 count6sec 0x36 0x16 compte les secondes,repasse à 0 après 60 incrémentations
23 count7sec 0x37 0x17 compte les secondes,repasse à 0 après 60 incrémentations
24 count0mn 0x38 0x18 compte les minutes, repasse à 0 après avoir compté le nbre dans tempo1
25 count1mn 0x39 0x19 compte les minutes, repasse à 0 après avoir compté le nbre dans tempo2
26 count2mn 0x3A 0x1A compte les minutes, repasse à 0 après avoir compté le nbre dans tempo3
27 count3mn 0x3B 0x1B compte les minutes, repasse à 0 après avoir compté le nbre dans tempo4
28 count4mn 0x3C 0x1C compte les minutes, repasse à 0 après avoir compté le nbre dans tempo5
29 count5mn 0x3D 0x1D compte les minutes, repasse à 0 après avoir compté le nbre dans tempo6
30 count6mn 0x3E 0x1E compte les minutes, repasse à 0 après avoir compté le nbre dans tempo7
31 count7mn 0x3F 0x1F compte les minutes, repasse à 0 après avoir compté le nbre dans tempo8
Note: tempo1 à 8 valeur exprimée en minutes, 0 = état maintenu.
Ci-dessous les commandes envoyées par le raspberry au PIC dans la variable "status_pgre"
0 action terminée, en attente d'une nouvelle demande
1 initialisation total avec lecture EEPROM et chargement module
2 écriture de la config en EEPROM, suite à modification(s) de la configuration des minuteries
10 reset sortie 1
11 monte la sortie 1
20 reset sortie 2
21 monte la sortie 2
30 reset sortie 3
31 monte la sortie 3
40 reset sortie 4
41 monte la sortie 4
50 reset sortie 5
51 monte la sortie 5
60 reset sortie 6
61 monte la sortie 6
70 reset sortie 7
71 monte la sortie 7
80 reset sortie 8
81 monte la sortie 8
4.5. Module récepteurs
Ces modules sont aux nombre de deux, un pour la réception du link de Marseille, un deuxième pour la réception de l'entrée utilisateurs en 2308MHz. Ils sont construits de façon identique, seul le type de module Comtech est différent. Il est prévu de construire un troisième récepteurs si le link avec le mont Bouquet se réalise.
Synoptique
Le régulateur 7805 est raccordé à l'alimentation 7,5Vcc du module 1(A) et il fournit le 5Vcc au module Comtech et à la carte PIC16F88. Le 12Vcc alimente le vco du tuner, et la carte de démodulation de conception de F5AD.
Le rôle du PIC16F88 est
à l'initialisation d'envoyer la fréquence sauvegardée en eeprom au module Comtech au pas de 125KHz, avec le décalage supradyne/infradyne
de mesurer la tension issue du signal RSSI (CAG) niveau de réception de conserver toutes ces informations en eeprom
Une particularité de la carte 16F88 est de pouvoir l'utiliser de façon autonome à travers une liaison série 9600bd 8bit pour réaliser un récepteur et/ou émetteur indépendant. A travers cette liaison série les commandes alphanumérique sont
lettre d : affiche la fréquence,
lettre r : transfère le contenu de l'eeprom en ram
lettre w : écrit les paramètres fréquence et décalage en eeprom
lettre f : attend la fréquence à rentrer dans le module comtech et le décalage ex : 12551+ pour fréquence 1255,125MHz avec décalage positif, le signe - pour décalage négatif
et espace pour sans décalage.
signe + incrémente la fréquence de 1 MHZ
signe – décrémente la fréquence de 1MHz
Le circuit de démodulation est un schéma réalisé par F5AD, par rapport à l'origine le circuit fait appel à des composants montés en surface, on trouve un potentiomètre pour le gain vidéo et un autre pour la sortie audio. La sous porteuse est de 6,5MHz dans l'ensemble du relais.
Table de la mémoire du PIC16F88
0 |
R0_1 |
0x20 |
0x00 |
; 1 Ghz |
1 |
R1_1 |
0x21 |
0x1 |
; 100 Mhz |
2 |
R2_1 |
0x22 |
0x2 |
; 10 Mhz |
3 |
R3_1 |
0x23 |
0x3 |
; 1 Mhz |
4 |
R4_1 |
0x24 |
0x4 |
; 100 Khz |
5 |
conf_FI |
0x25 |
0x5 |
2bits par rx, FI 01=+, 10= - ,11=aucun décalage,00 pas de module |
6 |
status_rx |
0x26 |
0x6 |
0 = action terminée |
7 |
RSSI |
0x27 |
0x7 |
niveau de réception (brute) |
8 |
alim_LNB |
0x28 |
0x8 |
tension alim |
9 |
count_temp |
0x29 |
0x9 |
compteur de tempo à 1Sec |
10 |
count_4mn |
0x2A |
0xA |
compteur de tempo à 4mn |
11 |
nbre_error |
0x2B |
0xB |
Nbre d'erreur de com avec la communication du Comtech (I2C interne) |
Note : la valeur du signal RSSI est brute, c'est à dire issue directement du convertisseur A/N du PIC sans traitement sur une conversion de 0 à 5Vcc. Pour le signal mesuré auprès du module Comtech 1200MHz, le valeur affiché dans le menu et infos(#411) du RSSI est soustrait à 255 pour obtenir une valeur cohérente avec le module de réception 2308MHz (Utilisateur). Vous trouverez la relation entre la tension de RSSI et le niveau d'entrée des deux modules, et vous pouvez constater que la valeur du RRSI est inversée.
RSSI module 2400 Mhz RT2400 RSSI module 1200MHz BSU479
ci-dessous les commandes envoyées par le raspberry au PIC dans la variable "status_pgre"
0 action terminée
1 initialisation total avec lecture EEPROM et chargement module
2 écriture de la fréquence et de la config en EEPROM
3 incrémente la fréquence de 1Mhz
4 décrémente la fréquence de 1 Mhz
5 lecture du module I2C interne
4.6. Module Bande de Base
Ce module contient les deux modulateurs de bande de base qui alimentent les deux émetteurs 10GHz. Un amplificateur vidéo 1 voie à deux sorties, est également installé dans ce module pour alimenter les modulateurs en parallèle. La source vidéo provient de la deuxième sortie vidéo de la commutation vidéo (voir chapitre 5,9).
La sous porteuse audio est réglée à 6,5 Mhz.
Schéma de l'amplificateur vidéo 1E/2S
Schéma d'un modulateur.
4.7. Exciteur 1255 MHz
Ce module contient l'exciteur d'origine qui fournit le signal 1255MHz avec le modulateur Audio/Vidéo, sous porteuse à 6,5MHz.
4.8. Modules TRX DTMF
Ces modules VHF et UHF reçoivent les codes DTMF et envoie en CW les accusés de réception. Ils possèdent aussi la possibilité d'être des perroquets. Ces modules sont identiques et sont basés sur l’utilisation de module DRA818 V et U qui sont pilotés par des PIC16F88 via une liaison série à 9600 bd, La détection des codes DTMF utilise un décodeur MT8870 et la génération des notes BF et codes DTMF est faite par un circuit intégré HT9200. Les modules DRA818 sont des TRX complets que l'on retrouve dans certaines production chinoise. Le module VHF est équipé d'un amplificateur qui permet de porter la puissance de sortie à 10W. Cet amplificateur utilise un RD15HVF et il est alimenté sous 12Vcc, il contient la commande des relais de commutations (Alim et HF).
Table de la mémoire du PIC16F88
|
Non de la variable |
adresse PIC |
adresse PI2 |
Définition |
0 |
CenMhzTX |
0x20 |
0x0 |
; 100 Mhz |
1 |
DizMhzTX |
0x21 |
0x1 |
; 10 Mhz |
2 |
UnitMhzTX |
0x22 |
0x2 |
; 1 Mhz |
3 |
CentKhzTX |
0x23 |
0x3 |
; 100 Khz |
4 |
DizKhzTX |
0x24 |
0x4 |
; 10 Khz |
5 |
UnitKhzTX |
0x25 |
0x5 |
; 1 Khz |
6 |
CentHzTX |
0x26 |
0x6 |
; 100 hz |
7 |
CenMhzRX |
0x27 |
0x7 |
; 100 Mhz |
8 |
DizMhzRX |
0x28 |
0x8 |
; 10 Mhz |
9 |
UnitMhzRX |
0x29 |
0x9 |
; 1 Mhz |
10 |
CentKhzRX |
0x2a |
0xa |
; 100 Khz |
11 |
DizKhzRX |
0x2b |
0xb |
; 10 Khz |
12 |
UnitKhzRX |
0x2c |
0xc |
; 1 Khz |
13 |
CentHzRX |
0x2d |
0xd |
; 100 hz |
14 |
BW |
0x2e |
0xe |
band width |
15 |
RX_CTSS |
0x2f |
0xf |
code CTSS RX |
16 |
TX_CTSS |
0x30 |
0x10 |
code CTSS TX |
17 |
SQ |
0x31 |
0x11 |
squelch |
18 |
Status_Pgre |
0x32 |
0x12 |
0= ok chargement réalisé, 1 code DTMF 1, 2 etc, up to 24, 25=demande chargement DTMF |
19 |
count_dtmf |
0x33 |
0x13 |
nbre de codes dtmf à envoyer |
20 |
DTMF1 |
0x34 |
0x14 |
Codes DTMF différent de 0 |
21 |
DTMF2 |
0x35 |
0x15 |
|
22 |
DTMF3 |
0x36 |
0x16 |
|
23 |
DTMF4 |
0x37 |
0x17 |
|
24 |
DTMF5 |
0x38 |
0x18 |
|
25 |
DTMF6 |
0x39 |
0x19 |
|
26 |
DTMF7 |
0x3a |
0x1a |
|
27 |
DTMF8 |
0x3b |
0x1b |
|
28 |
DTMF9 |
0x3c |
0x1c |
|
29 |
DTMF10 |
0x3d |
0x1d |
|
29 |
volume |
0x3e |
0x1e |
|
30 |
filtre |
0x3f |
0x1f |
|
31 |
filtre passe haut |
0x40 |
0x20 |
|
32 |
filtre passe bas |
0x41 |
0x21 |
|
33 |
dtmf_received |
0x42 |
0x22 |
reçu par le MT8870 |
34 |
code_dtmf |
0x43 |
0x23 |
au chargement dans le HT9200 |
35 |
count_error |
0x44 |
0x24 |
nbre d'erreur de com avec le DRA818 |
36 |
count_table |
0x45 |
0x25 |
|
37 |
count_L_HT9200 |
0x46 |
0x26 |
|
38 |
count_dtmf_received |
0x47 |
0x27 |
nbre de dtmf reçu |
39 |
count_delay_dtmf |
0x48 |
0x28 |
nbre de 500ms, au delà de cette valeur, le compteur ci-dessus est remis à 0 |
La commande 4 charge à travers la liaison série les données contenues en mémoire RAM (0 à 17) La commande 5, permet d'émettre la suite de 10 codes DTMF, l'adresse en mémoire RAM 19 contient le nombre de codes et l'adresse 20 à 29 contient les codes. La vitesse est de 200ms pour chaque code.
Table des commandes
N° Action
1 initialise DRA
2 écrit en EEPROM le contenu de la RAM
3 Lit l'EEPROM et met en RAM
4 charge le DRA avec le contenu de la RAM
5 émission des codes DTMF
6 émission de la lettre K
7 émission du ?
8 réglage du volume
9 envoie F5ZMP
10 émission avec note 941 Hz
11 émission avec note 1209 Hz
12 passage en réception
13 envoie les valeurs des filtres
24 erreur de chargement du DRA, le status pgre est remis à 0 par le code python
4.9. Commutation Vidéo/Audio
Ce module est placé au-dessus du rack principal et sa fonction est de diriger sur les sorties vidéo et audio les signaux venant des différentes sources.
Architecture commutation Vidéo/Audio.
Principe de fonctionnement :
Un microprocesseur PIC 16F88 permet la communication avec le réseau I2C du raspberry, et initialise les commutations vidéo et audio à la mise sous tension. Une fonction générateur 1000HZ est implanté suivi par un filtre passe bas à deux cellules et transforme le signal carré en un signal sinusoïdal. Un potentiomètre permet de fixer le niveau en entrée de la commutation audio. Ce PIC génère un deuxième réseau I2C, totalement indépendant du réseau I2C inter-modules et raspberry, avec la fonction maître pour communiquer avec les circuits intégrés de commutation vidéo et audio.
Description commutation vidéo :
La partie commutation vidéo utilise deux commutateurs vidéo TDA8540, alimentés par un régulateur de 8Vcc (78L08). Chaque commutateur accepte 4 entrées vidéo et redirige sur 4 sorties vidéo sous un niveau de 1Vcc, les sorties vidéo possèdent un mode tri-state ce qui permet de mettre les commutateurs en parallèle. Vous trouverez ci-après l'affectation des E/S sur ces commutateurs, les sorties 1 et 2 sont dirigées vers l'exciter 1255Mhz et les émetteurs 10Ghz, les sorties 3 et 4 sont non utilisées.
Description commutation audio :
Cette partie utilise deux commutateurs audio TEA6420, alimentés par un régulateur de 9Vcc (78L09). Chaque commutateur accepte 5 entrées et redirige sur 4 sorties, et ceci deux fois, ce circuit a été conçu pour la stéréo, dans notre besoin nous en utiliserons qu'une partie. Au contraire de la commutation vidéo, les sorties de ces commutateurs ne peuvent être mis en parallèle, ceci explique le montage en série des deux commutateurs; la sortie audio du premier rentre dans la première entrée du deuxième. Comme sur la commutation vidéo, les sorties 1 et 2 sont dirigées vers l'exciter 1255Mhz et les émetteurs 10Ghz, les sorties 3 et 4 sont non utilisées.
Table de la mémoire du PIC16F88
|
Non de la variable |
adresse ram pic |
adresse PI2 |
Définition |
0 |
SW1_1 |
0x20 |
0x00 |
switch1 |
1 |
GCO1 |
0x21 |
0x1 |
switch1 |
2 |
OEN_1 |
0x22 |
0x2 |
switch1 |
3 |
SW1_2 |
0x23 |
0x3 |
switch2 |
4 |
GCO_2 |
0x24 |
0x4 |
switch2 |
5 |
OEN_2 |
0x25 |
0x5 |
switch2 |
6 |
status_TEA1 |
0x26 |
0x6 |
Audio 1 |
7 |
status_TEA2 |
0x27 |
0x7 |
Audio2 |
8 |
tension alim |
0x28 |
0x8 |
valeur de la tension d'alimentation |
9 |
nbr-error |
0x29 |
0x9 |
nbre d'erreur I2C1 |
10 |
status_pgre_V |
0x2a |
0xA |
Commutation Vidéo |
11 |
status_pgre_A |
0x2b |
0xb |
Commutation Audio |
Note: Voir les paramètres GCO et OEN dans la documentation du TDA8540 table des commandes
Description des codes
Sortie 1 correspond à la sortie 1
vidéo Sortie 2 correspond à la sortie 2
vidéo Sortie 3 correspond à la sortie 1
audio Sortie 4 correspond à la sortie 2 audio
exemples
le code 21 = entrée vidéo 2 sur sortie vidéo 1
le code 82 = entrée vidéo 8 sur sortie vidéo 2
le code 33 = entrée audio 3 sur sortie audio 1
ex..
particularités
le code 103 ou 104 envoie la sortie 1000Hz sur la sortie 3 et/ou 4
limites
8 entrées vidéo, 2 sorties vidéo
9 entées audio, 2sorties audio
5. Le programme du Raspberry
Comme déjà indiqué, le raspberry a été programmé en Python3 principalement pour des raisons de disponibilités de modules logiciels, comme "pygame" pour la création des mires et du menu, SMBUS pour la communication I2C, etc.
Les principales taches réalisées par le programme sont l'initialisation et la vérification de la communication I2C
Une boucle principale qui gère les différentes temporisations suivant le choix en sortie Mire animée
Mise à jour des informations contenues dans le menu Les textes ou informations envoyés à l'OSD.
La réception des 4 codes sous une temporisation de 10 secondes.
La réception de chaque code DTMF appelle un sous-programme de vérification,
une fois les 4 codes reconnus, un programme 'matrice' permet de déterminer si la commande est conforme et envoie aux PIC concernés les valeurs dans leur variable (status_pgre).
Ce programme est en perpétuelle modification, et il est disponible sous simple demande.
6. Commandes Linux
6.1. Adresse du raspberry
A travers le port ethernet 192 .168 .1.110
6.2. Connexion au raspberry
login : pi
password : XXXXXXX.
6.3. Commandes terminal
Test de présence des modules I2C: sudo I2Cdetect -y 1
6.4. Lanceur automatique du programme. dans le fichier /etc/rc.local
ajouter avant la ligne exit0
bash /home/pi/F5ZMP/Raspberry/lanceur.sh
le fichier lanceur.sh contient:
#!/bin/bash
python3 /home/pi/F5ZMP/xxxxxxxx.py
les xxxxxxx.py sont remplacés par le nom du fichier python.
6.5. Arrêt du pgre
après connexion au raspberry
ps -faux : donne toutes les taches actives pour arrêter la tache
sudo kill -9 N° de la tache.
L'arrêt peut être aussi demandé par code dtmf administrateur.
6.6. Commandes par Hamnet
Le programme principal de F5ZMP lance un programme serveur en parallèle. Les commandes sont envoyées par un client installé dans un autre pc ou raspberry. Les paramètres sont l'adresse IP et le N° de port est 12800.
Deux programmes python sont disponibles sous le répertoire hamnet du raspberry de F5ZMP. Un programme client.py permet l'envoie au serveur de la valeur "dtmf_hamnet", un deuxième programme menu_hamnet.py fait l'envoie à travers une petite interface.
6.7. Mise à l'heure de l'horloge RTC
L'heure et la date sont gérées par un module (Horloge RTC à base de DS3231) indépendant alimenté par une batterie de 3V qui communique par la liaison I2C.
A chaque démarrage du raspberry, les informations sont transférées à l'horloge du raspberry. Le logiciel utilisé est hwclock distribué avec Raspbian. (https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=145511)
Les fonctions sont :
- lecture de l'heure et de la date sudo hwclock -r
- Mise à l'heure et date du raspberry sudo date -s "29 AUG 1997 13:00:05"
- Ecriture dans l'horloge RTC sudo hwclock -w
- Conclusion
L'ensemble des schémas, circuit imprimés, photos et logiciels sont disponibles sur simple demande. Le logiciel des schémas est sPlan7
Le logiciel de circuit imprimé est Sprint-Layout 6
L'atelier logiciel pour la programmation des PIC est MPLAB X La suite logiciel de création de documents est OpenOffice.
Fin de L article F1BFZ