F1ZBU – Blog radioamateur de F8ASB https://blog.f8asb.com Promouvoir est notre devoir ... Sun, 17 Dec 2017 08:56:29 +0000 fr-FR hourly 1 98010425 SVXLINK: Personnaliser vos messages sur votre relais https://blog.f8asb.com/2017/12/17/svxlink-personnaliser-vos-messages-sur-votre-relais/ https://blog.f8asb.com/2017/12/17/svxlink-personnaliser-vos-messages-sur-votre-relais/#respond Sun, 17 Dec 2017 08:53:45 +0000 http://blog.f8asb.com/?p=3438 Continuer la lecture ]]>

Vous êtes un certain nombre à avoir téléchargé et installé l’image de Madeleine.
Dans cette article je vous montre comment personnaliser vos messages.
Vous devez vous rendre sur le site https://best-of-vox.com/windows pour télécharger le logiciel qui fonctionne sous Windows. J’utilise la voix d’Agnes, vous devez cliquer sur le l’image correspondant à Agnès.

Le logiciel coûte 39,00€, vous l’obtiendrez directement après la commande. Vous pourrez à votre convenance acheter d’autres voix si besoin.

Une fois le logiciel installé, vous n’avez plus qu’a taper votre texte, ajuster les paramètres de la voix ( pour ma part j’utilise les paramètres par défaut)

Cliquer sur le bouton lecture pour avoir un aperçu du message, puis si il vous convient pour pouvez l’exporter en fichier .wav.

Pour le rendre compatible avec SvxLink, il sera nécessaire de passer par une ligne de commande Linux pour convertir voir les explications sur le site support de svxlink.
remplacer les noms de fichiers par les vôtres.

Vous pouvez recevoir un email dès la parution d’un article sur le Blog F8ASB.COM, entrez votre mail sur la fenêtre à droite et cliquer sur abonnement. Tous les articles en 1 clic ICI
]]>
https://blog.f8asb.com/2017/12/17/svxlink-personnaliser-vos-messages-sur-votre-relais/feed/ 0 3438
F1ZBV: Lola fait une pause… https://blog.f8asb.com/2017/03/26/f1zbv-lola-fait-une-pause/ https://blog.f8asb.com/2017/03/26/f1zbv-lola-fait-une-pause/#respond Sun, 26 Mar 2017 05:08:24 +0000 http://blog.f8asb.com/?p=3251 Continuer la lecture ]]>  

Les relais des Vosges F1ZBV/F1ZBU seront inactifs pour une durée indéterminée.

En effet, nous sommes à la recherche d’un nouveau site d’implantation car il nous a été demandé de quitter le Hohneck, le nouveau propriétaire ne souhaitant plus notre présence.

Nous sommes donc à la recherche d’un lieu, si possible au dessus de 1000m de façon à couvrir au mieux le département, ensuite il faudra le réimplanter…..


Si vous avez des relations ou des propositions merci de prendre contact.

 


Vous pouvez recevoir un email dès la parution d’un article sur le Blog F8ASB.COM, entrez votre mail sur la fenêtre à droite et cliquer sur abonnement. Tous les articles en 1 clic ICI
]]>
https://blog.f8asb.com/2017/03/26/f1zbv-lola-fait-une-pause/feed/ 0 3251
SvxCard : Checkpoint, contrôlez votre carte après l’assemblage https://blog.f8asb.com/2017/02/12/svxcard-checkpoint-controlez-votre-carte-apres-lassemblage/ https://blog.f8asb.com/2017/02/12/svxcard-checkpoint-controlez-votre-carte-apres-lassemblage/#respond Sun, 12 Feb 2017 11:10:53 +0000 http://blog.f8asb.com/?p=3210 Continuer la lecture ]]>

Voici un document qui vous permet de verifier les tensions sur la carte SvxCard après assemblage.

I) Première partie carte seule sans le Raspberry PI

  • Connecter la carte au 12V avec le connecteur d’alimentation sans aucun circuit comme sur la photo.
  • Vérifier les mesures entre le GND et les points rouges.
  • Sur le connecteur du Raspberry Pi:
    On doit retrouver uniquement 5 volts sur les pin 2 et 4 du Raspberry Pi sur tout les autres pin qu’il faut verifier il ne doit y avoir aucune tension supérieur à 2V.
    Si cela est le cas vous avez un court circuit.
  • Le Raspberry Pi supporte uniquement des tensions inférieures à 3.3v.
  • Une fois tous les points vérifier débrancher l’alimentation

II) Première partie carte seule avec Raspberry PI

  • Mesurer les 2 tensions 3,3V
  • Une fois tous les points vérifier débrancher l’alimentation
  • Vous pouvez ensuite position tous les circuits intégrés sur leur emplacement votre carte est prête

Pour la partie installation logiciel se rendre sur la page dédié:

http://svxcard.f5uii.net/doku.php?id=fr:installation_debian_8_jessy_raspberry_pi_2

Une nouvelle section FAQ vient de voir le jour sur le site support, celle-ci est relativement récente et sera compléter au fur et à mesure des questions que je recevrais.

Utilisez de préférence le support Yahoo:
Inscrivez-vous à la liste de discusion en envoyant un simple mail à : svxcard-subscribe@yahoogroups.com

Vous pouvez recevoir un email dès la parution d’un article sur le Blog F8ASB.COM, entrez votre mail sur la fenêtre à droite et cliquer sur abonnement. Tous les articles en 1 clic ICI
]]>
https://blog.f8asb.com/2017/02/12/svxcard-checkpoint-controlez-votre-carte-apres-lassemblage/feed/ 0 3210
SVXLINK: Interface I2C vers BCD, pilotez vos radios ! https://blog.f8asb.com/2016/11/13/svxlink-interface-i2c-vers-bcd-pilotez-vos-radio/ https://blog.f8asb.com/2016/11/13/svxlink-interface-i2c-vers-bcd-pilotez-vos-radio/#respond Sun, 13 Nov 2016 08:34:30 +0000 http://blog.f8asb.com/?p=3104 Continuer la lecture ]]> i2ctobcdinterface

 

La carte SvxCard et tous les raspberry Pi possèdent un port I2C celui-ci a été prévu pour des extensions possibles. Et bien voici la première extension en cours de test qui sera utile pour les relais et qui viendra se connecter sur la carte SvxCard.

Fonctionnement:
Il s’agit d’une interface I2C vers BCD, voici un exemple pour les chiffres de 0 à 10. L’interface développée est sur 6 bits ce qui peut permettre de gérer 64 possibilités.(canaux)

Chiffre Bits
    0   0000
    1   0001
    2   0010
    3   0011
    4   0100
    5   0101
    6   0110
    7   0111
    8   1000
    9   1001

Pour resumé avec 4 fils ( +,GND,SDA,SCL) nous allons pouvoir piloter 6 leds qui pourront selon la combinaison gérer le pilotage BCD de votre radio.

Mais pour quoi faire?

Les radios pro sont pour la plupart muni d’une possibilité de pilotage de canaux via une prise externe. Prenons comme exemple Motorola très utilisé chez les radioamateurs pour les relais.
images

Pin # Description Data Dir. Debounce Act. Level
6 Channel Select 1 Input No Low
8 Channel Select 2 Input No Low
9 Channel Select 3 Input No Low
12 Channel Select 4 Input No Low
14 Channel Select 5 Input No Low

Nous sommes là sur un pilotage sur 5 bits.

Channel CS5 CS4 CS3 CS2 CS1
Front Panel H H H H H
1 H H H H L
2 H H H L H
3 H H H L L
4 H H L H H
5 H H L H L
6 H H L L H
7 H H L L L
8 H L H H H
9 H L H H L
10 H L H L H
11 H L H L L
12 H L L H H
13 H L L H L
14 H L L L H
15 H L L L L
16 L H H H H
17 L H H H L
18 L H H L H
19 L H H L L
20 L H L H H
21 L H L H L
22 L H L L H
23 L H L L L
24 L L H H H
25 L L H H L
26 L L H L H
27 L L H L L
28 L L L H H
29 L L L H L
30 L L L L H
31 L L L L L

Vous pourrez donc piloter 32 canaux avec l’interface I2C->BCD.

Pourquoi cette fonction?

Vous pouvez raccorder l’émetteur du relais et le faire changer de canal mémoire et donc de puissance ou de caractéristiques (DCS,CTCSS…..)

Par exemple sur le relais des Vosges, on pourrait imaginer:
Mémoire 1: 145,6625 25W
Mémoire 2: 145,6625 10W
Mémoire 3: 145,6625 5W
Mémoire 4: 145,6625 25W CTCSS 67Hz
Mémoire 5: 145,6625 10W CTCSS 67Hz
Mémoire 6: 145,6625 5W CTCSS 67Hz

Nous voila avec un émetteur dont on peut changer les caractéristiques par DTMF ou alors par des commandes SSH.

Mais l’intérêt est beaucoup plus important pour un partie transpondeur qui peut devenir pilotable, on l’appellera alors intercom.

Intercom, c’est le nom qui a été donné à ce procédé qui permet, à partir d’un relais, de programmer un autre émetteur-récepteur associé sur une fréquence choisie par l’utilisateur. Imaginez par exemple, que vous puissiez déclencher un relais VHF lointain à partir de votre relais UHF habituel, ou que vous puissiez contacter des stations mobiles en VHF alors que vous ne pouvez pas les entendre ! C’est un transpondeur programmable.

Il vous restera alors juste à programmer les mémoires de votre transpondeur et de les associer à un DTMF.

La prochaine étape sera l’écriture d’un module Svxlink qui va gérer l’intercom et le test sur une radio.

Cette interface est compatible avec toutes les radios qui utilisent un port externe de contrôle en BCD ( Motorola, Tait, DR1…).
Elle peut être directement reliée sur le Raspberry Pi pour les relais numériques et faire exactement la meme chose et pourquoi pas un jour un intercom numérique !
Avis aux amateurs 😉

L’interface très compacte (16mmx50mm) pourra être mise dans une gaine thermo avec des connecteurs coudés ou les fils directement soudés dessus, dans le prolongement du câble entre le port I2C et la radio).
Elle est muni de led pour nous indiquer le canal programmé (en binaire) uniquement pour la phase de recherche et développement.

svxcard_fonctions_1.1Je rappelle que la carte Svxcard est muni de 4 relais, elle peux donc d’origine gérer un transpondeur sur 4 bits (16 canaux)

Une petite vidéo d’un enchainement avec:
Allumage complet – arrêt complet – puis envoie de 1 à 9 – arrêt complet

algo-n-1b

i2cdetect -y 1, l’adresse de la carte avec A0 A1 A2 à la masse:capture-decran-2016-11-13-a-09-11-41
Le code de test de la vidéo:

#!/bin/bash
i2cset -y 1 0x20 0xFF
sleep 10
i2cset -y 1 0x20 0x00
sleep 2
i2cset -y 1 0x20 0x01
sleep 2
i2cset -y 1 0x20 0x02
sleep 2
i2cset -y 1 0x20 0x03
sleep 2
i2cset -y 1 0x20 0x04
sleep 2
i2cset -y 1 0x20 0x05
sleep 2
i2cset -y 1 0x20 0x06
sleep 2
i2cset -y 1 0x20 0x07
sleep 2
i2cset -y 1 0x20 0x08
sleep 2
i2cset -y 1 0x20 0x09
sleep 2
i2cset -y 1 0x20 0x00


Vous pouvez recevoir un email dès la parution d’un article sur le Blog F8ASB.COM, entrez votre mail sur la fenêtre à droite et cliquer sur abonnement. Tous les articles en 1 clic ICI
]]>
https://blog.f8asb.com/2016/11/13/svxlink-interface-i2c-vers-bcd-pilotez-vos-radio/feed/ 0 3104
SVXLINK: Local.tcl et ses améliorations https://blog.f8asb.com/2016/11/12/svxlink-local-tcl-et-ses-ameliorations/ https://blog.f8asb.com/2016/11/12/svxlink-local-tcl-et-ses-ameliorations/#respond Sat, 12 Nov 2016 07:07:21 +0000 http://blog.f8asb.com/?p=2972 Continuer la lecture ]]> local_tclVoila pourquoi LOLA parle si bien…

Les nouvelles fonctionnalités sur F1ZBV ne pourraient pas fonctionner sans la modification de ce fichier c’est pour cela que j’ai décidé de vous le fournir et de vous le décrire.
Le principe des fonctions et de limiter les lignes de code et de pouvoir les appeler autant de fois que l’on en a besoin.
Le fichier Locale.tcl se place dans le repertoire de la langue pour nous: fr_FR
/usr/share/svxlink/sounds/fr_FR/events.d/Locale.tcl

Je pense que la majorité des nouvelles fonctions peuvent être compatibles avec d’autres langues, ou nécessitent quelques petites modifications.

Voici les fonctions que j’y ai ajoutées:
playTemp                                 dire la température
playFourDigitNumber       dire un chiffre à 4 décimales
playMonth                               dire le mois
playWindDir                          dire la direction d’après la lettre  (ex: N pour Nord)
playVoltage                             dire une tension

le fonctionnement est simple et commun à toute les fonctions. Il est nécessaire d’ajouter les fichiers sons correspondants.

A n’importe quelle moment dans votre programme tcl il vous suffira d’insérer cette fonction pour l’utiliser de la manière suivante:

<fonction> <variable> <;>
ex:
playNumber $resultat1;

playTemp
c'est fonction dira pour une valeur de 16.5: Seize degrés cinq                            playFourDigitNumber
c'est fonction dira pour une valeur de 1250: Mille deux cent cinquante
playMonth
c'est fonction dira pour une valeur de 02: Février 
playWindDir
c'est fonction dira pour une valeur de E: Est     

playVoltage
c'est fonction dira pour une valeur de 13.8Treize volts huit

Les codes complets du Locale.tcl ci-dessous:

###############################################################################
#
# Locale specific functions for playing back time, numbers and spelling words.
# Often, the functions in this file are the only ones that have to be
# reimplemented for a new language pack.
#
###############################################################################

#
#  25/06/2011   F1SMF    modif  for fr_FR
#  04/04/2016  F8ASB Add playTemp read temperature datas for fr_FR
#  01/10/2016  F8ASB Add functions:
#  playFourDigitNumber  Say number with four digits
#  playMonth            Say the month with the number
#  playWindDirAngle     Say winf direction with angle
#  playWindDir          Say wind direction with letter direction 
#  playTemp             Say temperature 
#  playVoltage          Say Voltage

#
# Spell the specified word using a phonetic alphabet
#
proc spellWord {word} {
  set word [string tolower $word];
  for {set i 0} {$i < [string length $word]} {set i [expr $i + 1]} {
    set char [string index $word $i];
    if {$char == "*"} {
      playMsg "Default" "star";
    } elseif {$char == "/"} {
      playMsg "Default" "slash";
    } elseif {$char == "-"} {
      playMsg "Default" "dash";
    } elseif {[regexp {[a-z0-9]} $char]} {
      playMsg "Default" "phonetic_$char";
    }
  }
}


#
# Spell the specified number digit for digit
#
proc spellNumber {number} {
  for {set i 0} {$i < [string length $number]} {set i [expr $i + 1]} {
    set ch [string index $number $i];
    if {$ch == "."} {
      playMsg "Default" "decimal";
    } else {
      playMsg "Default" "$ch";
    }
  }
}


#
# Say the specified two digit number (00 - 99)
#
proc playTwoDigitNumber {number} {
  if {[string length $number] != 2} {
    puts "*** WARNING: Function playTwoDigitNumber received a non two digit number: $number";
    return;
  }

  set first [string index $number 0];
if {($first == "0") || ($first == "O")} {
    playMsg "Default" $first;
    playMsg "Default" [string index $number 1];
   }  elseif {$first == "1"} {
        playMsg "Default" $number;
        }  elseif {$first == "7"} {
             playMsg "Default" "6X";
             if {[string index $number 1] == "1"} {
                 playMsg "Default" "and";
             }
             playMsg "Default" [expr $number - 60];
             } elseif {$first == "9"}  {
                  playMsg "Default" "8X";
                  playMsg "Default" [expr $number - 80];
                  } else {
                    playMsg "Default" "[string index $number 0]X";
                    if {[string index $number 1] == "1"} {
                        playMsg "Default" "and";
                    }
                    if {[string index $number 1] != "0"} {
                         playMsg "Default" "[string index $number 1]";
                    }
                  }
             }
#
# Say the specified three digit number (000 - 999)
#
proc playThreeDigitNumber {number} {
  if {[string length $number] != 3} {
    puts "*** WARNING: Function playThreeDigitNumber received a non three digit number: $number";
    return;
  }
  
  set first [string index $number 0];
    if {($first == "0") || ($first == "O")} {
    spellNumber $number
  } else {
    append first "00";
    playMsg "Default" $first;
    if {[string index $number 1] != "0"} {
      playTwoDigitNumber [string range $number 1 2];
    } elseif {[string index $number 2] != "0"} {
      playMsg "Default" [string index $number 2];
    }
  }
}

#
# Say the specified three digit number (1000 - 9999)
#
proc playFourDigitNumber {number} {
  if {[string length $number] != 6} {
    puts "*** WARNING: Function playFourDigitNumber received a non four digit number: $number";
    return;
  }

  set first [string index $number 0];
    if {($first == "1")} {
    playMsg "Default" "1000";
  } elseif {($first == "2")} {
    playMsg "Default" "2000";
  } elseif {($first == "3")} {
    playMsg "Default" "3000";
  } elseif {($first == "4")} {
    playMsg "Default" "4000";
  } elseif {($first == "5")} {
    playMsg "Default" "5000";
  } elseif {($first == "6")} {
    playMsg "Default" "6000";
  } elseif {($first == "7")} {
    playMsg "Default" "7000";
  } elseif {($first == "8")} {
    playMsg "Default" "8000";
  } elseif {($first == "9")} {
    playMsg "Default" "9000";  
  }
  set first [string index $number 1];
    if {($first == "0") || ($first == "O")} {
    playNumber [string range $number 2 5];
    } else {
    playNumber [string range $number 1 5];
    }
 }
#
#Say Month as intelligent as posible.
#

proc playMonth {Month} {
if { $Month =="01"} {
        playMsg "Months" "january";
    } elseif {$Month =="02"} {
        playMsg "Months" "February";
    } elseif {$Month =="03" } {
        playMsg "Months" "March";
    } elseif {$Month =="04" } {
        playMsg "Months" "April";
    } elseif {$Month =="05" } {
        playMsg "Months" "May";
    } elseif {$Month =="06" } {
        playMsg "Months" "June";
    } elseif {$Month =="07" } {
        playMsg "Months" "July";
    } elseif {$Month =="08" } {
        playMsg "Months" "August";
    } elseif {$Month =="09" } {
        playMsg "Months" "September";
    } elseif {$Month =="10" } {
        playMsg "Months" "October";
    } elseif {$Month =="11" } {
        playMsg "Months" "November";
    } elseif {$Month =="12" } {
        playMsg "Months" "December";  
}
 
}

#
#Say Wind Direction as intelligent as posible.
#

proc playWindDirAngle {windDir} {

if { $windDir =="N"} {
        puts "  Direction N"
        playMsg "WeatherStation" "North";
    } elseif {$windDir =="NNE"} {
        puts "  Direction NNE"
        playMsg "WeatherStation" "North";
        playMsg "WeatherStation" "North-East";
    } elseif {$windDir =="NE" } {
        puts "  Direction NE"
        playMsg "WeatherStation" "North-East";
    } elseif {$windDir =="ENE" } {
        puts "  Direction ENE"
        playMsg "WeatherStation" "East";
        playMsg "WeatherStation" "North-East";
    } elseif {$windDir =="E" } {
        puts "  Direction E"
        playMsg "WeatherStation" "East";
    } elseif {$windDir =="ESE"} {
        puts "  Direction ESE"
        playMsg "WeatherStation" "East";
         playMsg "WeatherStation" "South-East"; 
    } elseif {$windDir =="SE" } {
        puts "  Direction SE"
        playMsg "WeatherStation" "South-East";
    } elseif {$windDir =="SSE" } {
        puts "  Direction SSE"
        playMsg "WeatherStation" "South";
        playMsg "WeatherStation" "South-East";
    } elseif {$windDir =="S"} {
        puts "  Direction S"
        playMsg "WeatherStation" "South";
    } elseif {$windDir =="SSW" } {
        puts "  Direction SSW"
        playMsg "WeatherStation" "South";
        playMsg "WeatherStation" "South-West";
    } elseif {$windDir =="SW"} {
        puts "  Direction SW"
        playMsg "WeatherStation" "South-West";
    } elseif {$windDir =="WSW" } {
        puts "  Direction WSW"
        playMsg "WeatherStation" "West";
        playMsg "WeatherStation" "South-West";
    } elseif {$windDir =="W"} {
        puts "  Direction W"
        playMsg "WeatherStation" "West";
    } elseif {$windDir =="WNW"} {
        puts "  Direction WNW"
        playMsg "WeatherStation" "West";
        playMsg "WeatherStation" "North-West";
    } elseif {$windDir =="NW"} {
        puts "  Direction NW"
       playMsg "WeatherStation" "North-West";
    } elseif {$windDir =="NNW" } {
        puts "  Direction NNW"
       playMsg "WeatherStation" "North";
       playMsg "WeatherStation" "North-West";
    } else {
        puts "  Non disponible"
    }
    }
#
#Say Wind Direction with angle as intelligent as possible.
#

proc playWindDir {windDir} {

if { 0 < $windDir && $windDir < 22.5} { puts " Direction N" playMsg "WeatherStation" "North"; } elseif {$windDir >= 22.5 && $windDir < 45 } { puts " Direction N NE" playMsg "WeatherStation" "North"; playMsg "WeatherStation" "North-East"; } elseif {$windDir >= 45 && $windDir < 67.5 } { puts " Direction NE" playMsg "WeatherStation" "North-East"; } elseif {$windDir >= 67.5 && $windDir < 90 } { puts " Direction NE E" playMsg "WeatherStation" "North-East"; playMsg "WeatherStation" "East"; } elseif {$windDir >= 90 && $windDir < 112.5 } { puts " Direction E" playMsg "WeatherStation" "East"; } elseif {$windDir >= 112.5 && $windDir < 135 } { puts " Direction E SE" playMsg "WeatherStation" "East"; } elseif {$windDir >= 135 && $windDir < 157.5 } { puts " Direction SE" playMsg "WeatherStation" "South-East"; } elseif {$windDir >= 157.5 && $windDir < 180 } { puts " Direction SE S" playMsg "WeatherStation" "South-East"; playMsg "WeatherStation" "South"; } elseif {$windDir >= 180 && $windDir < 202.5} { puts " Direction S" playMsg "WeatherStation" "South"; } elseif {$windDir >= 202.5 && $windDir < 225 } { puts " Direction S SW" playMsg "WeatherStation" "South"; playMsg "WeatherStation" "South-West"; } elseif {$windDir >= 225 && $windDir < 247.5} { puts " Direction SW" playMsg "WeatherStation" "South-West"; } elseif {$windDir >= 247.5 && $windDir < 270 } { puts " Direction SW W" playMsg "WeatherStation" "South-West"; playMsg "WeatherStation" "West"; } elseif {$windDir >= 270 && $windDir < 292.5} { puts " Direction W" playMsg "WeatherStation" "West"; } elseif {$windDir >= 292.5 && $windDir < 315 } { puts " Direction W NW" playMsg "WeatherStation" "West"; playMsg "WeatherStation" "North-West"; } elseif {$windDir >= 315 && $windDir < 337.5} { puts " Direction NW" playMsg "WeatherStation" "North-West"; } elseif {$windDir >= 337.5 && $windDir < 359 } { puts " Direction NW N" playMsg "WeatherStation" "North-West"; playMsg "WeatherStation" "North"; } else { puts " Non disponible" } } # # Say a number as intelligent as possible. Examples: # # 1 - one # 24 - twentyfour # 245 - twohundred and fourtyfive # 1234 - twelve thirtyfour # 12345 - onehundred and twentythree fourtyfive # 136.5 - onehundred and thirtysix point five # proc playNumber {number} { if {[regexp {(\d+)\.(\d+)?} $number -> integer fraction]} {
    playNumber $integer;


# No say 0 if decimal = 0
if {$fraction != 0} {
    playMsg "Default" "decimal";
    spellNumber $fraction;
}

    return;
  }

  while {[string length $number] > 0} {
    set len [string length $number];
    if {$len == 1} {
      playMsg "Default" $number;
      set number "";
    } elseif {$len % 2 == 0} {
      playTwoDigitNumber [string range $number 0 1];
      set number [string range $number 2 end];
    } else {
      playThreeDigitNumber [string range $number 0 2];
      set number [string range $number 3 end];
    }
  }
}

#
# Say temperature as intelligent as possible. Examples:
#

proc playTemp {number} {
  if {[regexp {(\d+)\.(\d+)?} $number -> integer fraction]} {
    playNumber $integer;
    playMsg "WeatherStation" "degree";

# No say 0 if decimal = 0
if {$fraction != 0} {
    spellNumber $fraction;
}
   return;
}

  while {[string length $number] > 0} {
    set len [string length $number];
    if {$len == 1} {
      playMsg "Default" $number;
      set number "";
    } elseif {$len % 2 == 0} {
      playTwoDigitNumber [string range $number 0 1];
      set number [string range $number 2 end];
    } else {
      playThreeDigitNumber [string range $number 0 2];
      set number [string range $number 3 end];
    }
  }
}

#
# Say Voltage as intelligent as possible. Examples:
#

proc playVoltage {number} {
if {[regexp {(\d+)\.(\d+)?} $number -> integer fraction]} {
    playNumber $integer;
    playMsg "Default" "volts";

# No say 0 if decimal = 0
if {$fraction != 0} {
    spellNumber $fraction;
}
   return;
}

  while {[string length $number] > 0} {
    set len [string length $number];
    if {$len == 1} {
      playMsg "Default" $number;
      set number "";
    } elseif {$len % 2 == 0} {
      playTwoDigitNumber [string range $number 0 1];
      set number [string range $number 2 end];
    } else {
      playThreeDigitNumber [string range $number 0 2];
      set number [string range $number 3 end];
    }
  }
}


#
# Say the time specified by function arguments "hour" and "minute".
#

proc playTime {hour minute} {
# Strip white space and leading zeros. Check ranges.
  if {[scan $hour "%d" hour] != 1 || $hour < 0 || $hour > 23} {
    error "playTime: Non digit hour or value out of range: $hour"
  }
  if {[scan $minute "%d" minute] != 1 || $minute < 0 || $minute > 59} {
    error "playTime: Non digit minute or value out of range: $hour"
  }
  if {[string length $hour] == 1} {
     playMsg "Default" [expr $hour];
   } else {
     playTwoDigitNumber $hour;
    }
#  playSilence 250
  playMsg "Core" "time";

   if {$minute == 0} {
     return;
   }
    if {[string length $minute] == 1} {
        playMsg "Default" [expr $minute];
    } else {
        playTwoDigitNumber  $minute;
    }
}

#
# This file has not been truncated
#

Vous pouvez vous aussi créer vos propres fonctions et partager.

Vous pouvez recevoir un email dès la parution d’un article sur le Blog F8ASB.COM, entrez votre mail sur la fenêtre à droite et cliquer sur abonnement. Tous les articles en 1 clic ICI
]]>
https://blog.f8asb.com/2016/11/12/svxlink-local-tcl-et-ses-ameliorations/feed/ 0 2972
Mise à jour: Tous les articles en un Clic! https://blog.f8asb.com/2016/10/15/mise-a-jour-tous-les-articles-en-un-clic/ https://blog.f8asb.com/2016/10/15/mise-a-jour-tous-les-articles-en-un-clic/#respond Sat, 15 Oct 2016 06:49:49 +0000 http://blog.f8asb.com/?p=3039 updateLa page ” Tous les articles” vient d’être mise à jour, allez y jeter un oeil vous avez peut-être raté quelques choses.

F8ASB.COM c’est 220 articles !

Bonne découverte…..

]]>
https://blog.f8asb.com/2016/10/15/mise-a-jour-tous-les-articles-en-un-clic/feed/ 0 3039
F1ZBV : Statistiques Température TX / Temps d’émission https://blog.f8asb.com/2016/10/15/f1zbv-statistiques-temperature-tx-temps-demission/ https://blog.f8asb.com/2016/10/15/f1zbv-statistiques-temperature-tx-temps-demission/#respond Sat, 15 Oct 2016 05:47:23 +0000 http://blog.f8asb.com/?p=3032 Continuer la lecture ]]> Unknown-2Après la mise en place de la mesure de température du relais, voici un petit comparatif des données disponibles sur le relais pour la journée du 14 Octobre 2016.
tx_24h

La ligne bleue correspond à la température minimale enregistrée sur l’heure en cours, on constate que le refroidissement du PA est efficace et qu’il descent rapidement dans les 20°C. La ligne rouge correspond à la température haute enregistrée, ce sont les QSOs. La petite montée en température de 0H00 à 7H00 correspond aux balises qui sont envoyées tous les 1/4 d’heure.
La mise en place du système est décrite dans un article précédent.

qso_141016Ce graphe là nous montre le temps de passage en emission sur la même journée, nous sommes parfaitement en phase ;).
La mise en place du système statistique est décrite dans un article précédent, vous pouvez voir le bilan de l’année 2015 du relais F1ZBV sur ce Blog.

Voilà maintenant si vous souhaitez venir faire un petit tout sur le relais des Vosges vous savez quand Lola est la plus active 😉

Vous pouvez recevoir un email dès la parution d’un article sur le Blog F8ASB.COM, entrez votre mail sur la fenêtre à droite et cliquer sur abonnement. Tous les articles en 1 clic ICI
]]>
https://blog.f8asb.com/2016/10/15/f1zbv-statistiques-temperature-tx-temps-demission/feed/ 0 3032
Interface de programmation pour radio TAIT https://blog.f8asb.com/2016/10/15/interface-de-programmation-pour-radio-tait/ https://blog.f8asb.com/2016/10/15/interface-de-programmation-pour-radio-tait/#respond Sat, 15 Oct 2016 05:20:26 +0000 http://blog.f8asb.com/?p=3028 Continuer la lecture ]]> tait_interface
Je mets à disposition tout simplement le schéma de l’interface de programmation pour les radio Tait que j’utilise dans mes relais.
Version PDF

Vous pouvez recevoir un email dès la parution d’un article sur le Blog F8ASB.COM, entrez votre mail sur la fenêtre à droite et cliquer sur abonnement. Tous les articles en 1 clic ICI
]]>
https://blog.f8asb.com/2016/10/15/interface-de-programmation-pour-radio-tait/feed/ 0 3028
F1ZBV: Suivi et enregistrement des données de Température https://blog.f8asb.com/2016/10/09/f1zbv-suivi-et-enregistrement-des-donnees-de-temperature/ https://blog.f8asb.com/2016/10/09/f1zbv-suivi-et-enregistrement-des-donnees-de-temperature/#respond Sun, 09 Oct 2016 06:12:34 +0000 http://blog.f8asb.com/?p=2998 Continuer la lecture ]]> graph_temperature
Nous y voila, la traçabilité des températures du relais des Vosges, F1ZBV.

Je vous rappelle que sur l’installation du relais, 3 capteurs sont présents:
– 1 capteur qui est intégré à la carte SvxCard qui permet de mesure la température ambiante du rack 19″.
– 1 capteur sur le radiateur du TX
– 1 capteur au niveau des cavités.


L’objectif de ce suivi est surtout à titre de curiosité. L’émetteur qui a été choisi est un TYT TH9000D, il s’agit d’un poste chinois dont je n’ai aucune experience sur sa fiabilité, il est relativement soumis et cet enregistrement va nous permettre de connaitre les montées en température lors de longs QSOs.
Concernant les cavités nous allons pouvoir suivre les fluctuations de température, il n’est pas bon pour leurs stabilités que la temperature descende trop bas.
Cela pourra nous permettre éventuellement d’isoler ou de chauffer l’armoire. Il est tout a fait possible de piloter un des relais de commutation de la carte SvxCard pour alimenter une resistance chauffante selon un seuil minimum défini.

Vous obtiendrez l’image en introduction de cet article avec un relevé des 3 capteurs toutes les 5min.
Il y a un graph bleu (minimum heure courante) et rouge (maximum heure courante).
En passant la souris, une fenêtre popup avec la valeur vous sera indiquée.
min_max
Un calendrier est également disponible avec les mini/maxi par jour et par capteur.

calendrierNous voyons sur la fenêtre ci-dessus, la valeur mini/maxi pour le capteur “Temperature TX” au 8 octobre 2016.

Il est important de signaler que les valeurs sont transmises sur un site web distant et qu’aucune données n’est enregistrées sur le Raspberry Pi. Ce qui va permettre moins d’écriture de fichiers sur la carte SD mais par contre qui nécessite une liaison Internet.


Passons maintenant à la mise en oeuvre de ce système sur votre relais ou autres applications à base de Raspberry Pi.

Vous avez besoin de:
Un raspberry Pi
3 capteurs de type 18B20 (voir l’article sur Framboise314.fr pour une description complète)
Une connexion internet
Un compte sur PrivateEyePi

Configuration sur le portail PrivateEyePi

Se rendre sur PrivateEyePi pour s’inscrire

Cliquer en haut à droite sur new user et remplir le formulaire suivant:
capture-decran-2016-10-08-a-19-24-43Cliquer sur le bouton GPIO
tempgpiosetupAjouter 3 périphériques:
Number: 7
Description: GPIO 4
Number: 88
Description: GPIO 88
Number: 89
Description: GPIO 89

Ensuite aller sur le bouton Location:
location1 location2 location3Faire Add et remplir comme les captures d’écran ci-dessus.

Vous devriez obtenir ceci:
bilan_locationSe rendre dans l’onglet config et remplir comme la capture d’écran ci-dessous:
configVoila nous avons terminé la partie en ligne, attaquons maintenant la partie sur le Raspberry Pi.


Installation:

Comme d’habitude toujours une mise à jour en introduction

sudo apt-get update
sudo apt-get upgrade

Téléchargement du script d’installation:

cd /home
sudo wget -N www.privateeyepi.com/downloads/install.sh

Lancement de l’installation:
sudo sh install.sh

Nous utiliserons uniquement le programme lié à la température:
dallas.py –  Programme de monitoring de température avec des capteurs DS18B20.

Nous allons éditer le fichier  globals.py

cd /home
sudo nano globals.py

dallasdirectory2

Entrez votre login et mot de passe
par ex:
user= “your@email.com”
password=”ilovef8asbcom”

Nous allons maintenant indiquer les pins que nous avons précédemment inscrit sur le portail de PrivateEyePi.(RPI Pin Number)

Et également les adresses des capteurs de temperature.(Directory name of the w1_slave file)

Pour les obtenir taper:
ls /sys/bus/w1/devices/

adresse_18b20Faites des copier/coller pour éviter les erreurs.

Et voila la configuration est terminer.

Il faut maintenant mettre au démarrage le script /home/dallas.py

Aller sur le site http://www.privateeyepi.com, une fois connecter, cliquer sur Dashboard.
privateyespi

Je ne manquerai pas de faire un bilan des ses mesures d’ici quelques mois.

Vous pouvez recevoir un email dès la parution d’un article sur le Blog F8ASB.COM, entrez votre mail sur la fenêtre à droite et cliquer sur abonnement. Tous les articles en 1 clic ICI
]]>
https://blog.f8asb.com/2016/10/09/f1zbv-suivi-et-enregistrement-des-donnees-de-temperature/feed/ 0 2998
F1ZBV Version 2.0, c’est le 17 Septembre 2016. https://blog.f8asb.com/2016/09/14/f1zbv-version-2-0-cest-le-17-septembre-2017/ https://blog.f8asb.com/2016/09/14/f1zbv-version-2-0-cest-le-17-septembre-2017/#respond Wed, 14 Sep 2016 05:40:16 +0000 http://blog.f8asb.com/?p=2868 Continuer la lecture ]]> lola-septembre-2016-version-6Après plus d’un an de travail, LOLA version 2.0 va naître…
Le relais des Vosges en Version 2.00, c’est pour le 17 Septembre 2016.

A ce titre, le relais sera arrêté toute la journée du samedi le temps de sa mise en place. D’autres travaux sur les antennes se feront en parallèle.Les nouveautés annoncées:

Nouvelle synthèse vocale plus d’infos..
S-mètre vocale plus d’info..
Interface utilisateur tactile

Par DTMF:
Interconnexion Echolink entrante / sortante plus d’infos..
Données météo Davis Instrument en live par DTMF plus d’infos..
Pronostiques météo dépt 54 et 88
Mesure des températures cavités/carte logique/TX/ en synthèse vocale plus d’infos..
Statuts internet en synthèse vocale plus d’infos..
Mesure de tension d’alimentation en vocale
Code sysop sécurisé tournant plus d’infos..
Mode d’urgence plus d’infos..
….

La révolution analogique dans les Vosges est en marche …

SOYEZ A L’ECOUTE SAMEDI !

Pour mettre en place les mêmes fonctions, rendez vous sur le site support SvxCard.f5uii.net.

Vidéo de la conférence de présentation de ses fonctionnalités sur ce lien.


600px-Logo_SVXLinkCard_HDSi vous voulez acquérir la carte de contrôle relais, il vous reste plus que quelques jours… fin de la commande groupée le mardi 20 septembre 2016.

rejoindre-shopchip

Vous pouvez recevoir un email dès la parution d’un article sur le Blog F8ASB.COM, entrez votre mail sur la fenêtre à droite et cliquer sur abonnement. Tous les articles en 1 clic ICI
]]>
https://blog.f8asb.com/2016/09/14/f1zbv-version-2-0-cest-le-17-septembre-2017/feed/ 0 2868