1 / 56

Le Voice Keyer avec un PIC 16F648A et un ISD-2560 par André VE2FAB

Le Voice Keyer avec un PIC 16F648A et un ISD-2560 par André VE2FAB. Le Voice Keyer ou répéteur de voix est contrôlé par un PIC 16F648A, il enregistre votre voix dans un Circuit intégré ISD et la transmet sur les ondes sous forme de message.

onella
Download Presentation

Le Voice Keyer avec un PIC 16F648A et un ISD-2560 par André VE2FAB

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Le Voice Keyer avec un PIC 16F648A et un ISD-2560 par André VE2FAB

  2. Le Voice Keyer ou répéteur de voix est contrôlé par un PIC 16F648A, il enregistre votre voix dans un Circuit intégré ISD et la transmet sur les ondes sous forme de message. Pour ce projet, le ISD-2560 donnera un maximum de 60 secondes d'enregistrement, il est aussi possible d’utiliser un ISD-2575/2590/25120.

  3. Le ISD n'est pas un microcontrôleur mais un répondeur téléphonique autonome. Il peut fonctionner avec ou sans microcontrôleur. Ici on l'utilise avec un Pic 16F648A pour faire d'autre fonction que le mode autonome de base.

  4. Durant les concours sur H.F. ou pour animer un réseau, souvent il faut répéter les mêmes informations comme : CQ CQ CQ contest de VE2HLS. Le programme du Pic 16F648A offre la possibilité d'enregistrer dans le ISD-2560 1, 2 ou 3 messages différents pour un maximum total de 60 secondes. La longueur des messages peut varier selon le besoin.

  5. Voici un message reçu par André VE2FAB Bonjour André Suite au dernier contest du week-end dernier, environ 1200 qso, les copains n'avaient plus de voix, j'ai donc été mandaté par eux pour réaliser un lanceur d'appels automatique, en parcourant le net, je me suis arrêté sur votre projet ça m'a semblé très intéressant et j'ai proposé ce projet à mes amis qui m'ont donné le feu vert pour la réalisation, alors avec votre permission, me donnez vous le top pour réaliser votre montage? si oui pouvez vous m'envoyer le programme du pic 16f84, personnellement je ne fais pas les concours, je suis plus passionné par le fer à souder, équipé d'un programmateur de pic de réalisation om, les copains n'ont pas eu besoin de chercher bien loin hi.... Merci pour toute info. J'ai vu qu'il y avait 2 versions avec pic 16f84 et 16f628, est ce le même programme je n'ai pas trouvé de différence sur le montage. 73's Alain / F1LQN

  6. Le Voice Keyer dans le monde! Diego IZ3FJX Italie, Peter DL6LZM Allemagne Marcus PP5MS Brésil, Guido IK2BCP Italie Pete VK2YX Australie, Peter VK2VZ Australie Kuido KES3AT Estonie, Jan OZ9ABC Danemark Yoo HL1WOU Korée, Patrick DM8WP Allemagne Giuseppe IW7ECJ Italie, Club station ON7LR Belgique Jose ZZ2RED Brésil, Edson PY2ED Brésil Raymond VE2IPA Canada, Grégory F8BGN France Ian G1JCC Angleterre, Yannick F1NSR France Thierry TK1CX France, Denis IW3HJY Italie John G6BHB Angleterre, Laci, OM5NL Slovaquie Jozi YU7NW Serbia/Montenegro, Tom SM7PAF Suède Claude KG4HTL USA, Gomes CT1HIX Portugal Jean-Michel F5ODK France, Matteo (garcon) Italie Karl-Kristian Danemark, Laci OM7RC Slovaquie Mirek OK1BET Czech Republic, Dirk DD4DEW Allemag Olli - DH8BQA Allemagne, Jean-Marie F6EMQ France Alain F1LQN France

  7. Fonctionnement du Voice Keyer

  8. Il possède trois fonctions : Enregistrement des messages Envoyer les messages Répétition du message #1

  9. Enregistrement des messages : Mettre l'interrupteur play/record en mode record. Activez le PTT du radio et enregistrez le message #1, relâchez le PTT, activez à nouveau le PTT vous enregistrez le message #2. Même séquence pour le #3, à la fin des 3 messages, le Led vert clignote. Si un des messages n'est pas à votre goût, il faut tout réenregistrer. Toujours respecter les 60 secondes de capacité du ISD-2560.

  10. Envoyer les messages : Glissez l'interrupteur play/record en mode play, le Led vert s’éteint, appuyez sur le bouton 1, vous transmettez le message #1, même séquence pour #2 et #3.

  11. Mode répétition du message #1: Vous avez l'option de deux délais pour la répétition du message #1 Avec l'interrupteur play/record en mode play; Premier délai environ 2 secondes; appuyez le bouton #1 et ensuite #2. Deuxième délai environ 4 secondes; appuyez le bouton #1 et ensuite #3. Pour quitter le mode répétition, activez le PTT. Note: En mode répétition les deux Leds allument.

  12. Le ISD-2560

  13. Les recommandations du Data Sheet

  14. Le microcontrôleur Pic 16F648A

  15. Circuit typique avec microprocesseur

  16. Caractéristiques La série ISD2500 fournit une solution facile pour un enregistrement de qualité de 1 à 2 minutes. Le chip contient tout ce qu.il faut pour être autonome. Il contient son propre horloge, amplificateur, filtre audio d’entrée et sortie, une mémoire analogue non-volatile et le circuit de contrôle. Le tout en CMOS. - Solution facile à un chip - Sélection de plusieurs durées - Bonne qualité de voix - Contrôlable par processeur - Plusieurs mode disponibles - Faible consommation - Messages enregistrés en permanence (pour 100 ans) - Fonctionne avec +5V uniquement.

  17. Architecture du ISD

  18. Description des pins VCCA et VCCD : +5 V (2 paires pour minimiser le bruit) VSSA et VSSD : GND (même chose) PD : Power down ou reset CE : Chip enable, active la lecture ou l’écriture P/R : Play/Record, jouer ou enregistrer EOM : End of message, Fin de message OVF : Overflow, dépassement du temps d’enregistrement MIC et MICref : Entrée du microphone (en différentiel) AGC : Automatic Gain Control, sert à ajuster le volume automatiquement ANA OUT : Sortie du premier amplificateur ANA IN : Entré du premier amplificateur XCLK : Horloge externe SP+/SP- : Speaker. Sortie pour haut-parleur AUX IN : Entré auxiliaire pour ampli de sortie Ax/Mx : Adresse ou Mode (plusieurs pins), voir tableau suivant

  19. Mode disponible dans le ISD

  20. Séquence pour enregistrer

  21. Séquence pour jouer

  22. Le schéma

  23. Liste des pièces : J1 - J2 = Jack mono 1/8 J3 - J4 = Connecteur 8 pins U1 = Pic 16F84 U2 = ISD 2560 à 2590 U3 = 78L05 Msg # 1 # 2 # 3 = Push button Play/record = Slide Switch Q1 = 2n2222 R1 – R7 – R14 – R15 – R16 - R17 - R18 - R19 = 10K R2 = Pot 5 K R3 = 1K R4 = 4.7K R5 = 470 ohms R6 – R21 = 1K R8 - R9 = 300 ohms R11 = 18K R20 = 6.8K C1 - C3 - C4 - C6 - C7 - C9 - C11 - C14 = 100nF C2 = 22uF 10v C5 = 22pF C8 - C12 - C13 - C16 - C17 = 1nF C10 = 4.7 uF 10 V C15= 220 uF 10V D1 - D4 = 1n4001 D2 = Led rouge D3 = Led vert

  24. Le PCB

  25. Organigramme et programme en langage C

  26. TACHE DU MODULE PRINCIPALE (main) Après reset: INITIALISATION: des pins et des variables utilisé (retour ici) =====>|| V Vérification du bouton enregistrement =>Oui =>mode enregistrement V par défaut mettre le système en mode écoute V vérifier le bouton du PTT du micro =>Oui=> mode parler V vérifier variable si on a le mode répétition=>Oui=> mode répète V vérifier si bouton de MSG#1 est enfoncé=>Oui=>mode MSG1 V vérifier si bouton de MSG#2 est enfoncé=>Oui=>mode MSG2 V vérifier si bouton de MSG#3 est enfoncé=>Oui=>mode MSG3 V retour en haut

  27. Entête du programme: Titre, date, version, auteur et description /** Projet Voice Keyer 2008 version 1.3+, 25 mars 2008 par André VE2FAB Pic 16F648A PIN Fonction 17 = RA0 = Bouton PTT du microphone 18 = RA1 = Bouton message #1 01 = RA2 = Bouton message #2 02 = RA3 = Bouton message #3 03 = RA4 = Slide switch jouer/enregistrer 04 = RA5 = MCLR 16 = RA6 = R/C oscillator 15 = RA7 = N.C. 06 = RB0 = Pin EOM (End of message) du ISD 07 = RB1 = Pin controllant le PTT du radio 08 = RB2 = Pin P/R (Play/Rocrod) du ISD 09 = RB3 = Pin PD (PowerDown) du ISD 10 = RB4 = Pin CE (Chip Enable) du ISD 11 = RB5 = A0/M0 (Address mode inputs)Avancement rapide du ISD 12 = RB6 = Led (Red) de playback 13 = RB7 = Led (Green) d'enregistrement 05 = VSS GND 14 = VDD +5V ----------------------------------*/

  28. Définitions #DEFINE PIC_16F648A #IFDEF PIC_16F648A #INCLUDE <16F648A.h> //////// Fuses: LP,XT,HS,EC_IO,NOWDT,WDT,NOPUT,PUT,PROTECT,NOPROTECT //////// Fuses: BROWNOUT,NOBROWNOUT,NOMCLR,MCLR,NOLVP,LVP,INTRC,RC_IO //////// Fuses: INTRC_IO,RC,NOCPD,CPD #FUSES RC_IO // RA6 pas utilise, Resistor/Capacitor Osc #FUSES NOWDT // Pas de Watch Dog Timer #FUSES NOPUT // Power Up Timer #FUSES NOPROTECT // Code non protégé de la relecture #FUSES NOCPD // " #FUSES BROWNOUT // Reset en cas de mauvais VDD #FUSES MCLR // Use MCLR input instead of RA5 #FUSES NOLVP // RB4 utilise, No Low Voltage Programming used, programme hors circuit #ENDIF #IFDEF PIC_16F84A #INCLUDE <16F84A.h> //////// Fuses: LP,XT,HS,RC,NOWDT,WDT,NOPUT,PUT,PROTECT,NOPROTECT //////// __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_OFF & _RC_OSC (ligne en assembleur)‏ // frequence du processeur = #FUSES RC // Resistor/Capacitor Osc #FUSES NOWDT // No Watch Dog Timer #FUSES NOPUT // No Power Up Timer #FUSES NOPROTECT // Code not protected from reading #ENDIF #USE DELAY (clock=2400000)‏ #USE FAST_IO(A) // Rendre permanent les Entrées/Sorties du port A #USE FAST_IO(B) // Rendre permanent les Entrées/Sorties du port B

  29. Autre définitions // ------------------------Définitions ------------- #DEFINE ptt_micro pin_a0 // Bouton PTT du microphone, entrée, 0=on #DEFINE bou_msg1 pin_a1 // Bouton message #1, entrée, 0=jouer 1 #DEFINE bou_msg2 pin_a2 // Bouton message #2, entrée, 0=jouer 2 #DEFINE bou_msg3 pin_a3 // Bouton message #3, entrée, 0=jouer 3 #DEFINE sw_play pin_a4 // Slide switch jouer/enregistrer, entrée, 1=jouer #DEFINE isd_eom pin_b0 // Pin EOM du ISD, port B, entrée #DEFINE ptt_radio pin_b1 // Pin contrôlant le PTT du radio 1=tx on, port B, sortie #DEFINE isd_prn pin_b2 // Pin P/Rn du ISD, port B, sortie #DEFINE isd_pd pin_b3 // Pin PD du ISD, port B, sortie #DEFINE isd_cen pin_b4 // Pin CEn du ISD, port B, sortie #DEFINE isd_avanc pin_b5 // Pin M0 Avancement rapide du ISD 1=vite, port B, sortie #DEFINE led_trans pin_b6 // Led de playback 1=OFF, dans port B, sortie #DEFINE led_enreg pin_b7 // Led d'enregistrement 1=OFF, dans port B, sortie

  30. Déclarations des fonctions (usuellement dans un fichier XXXX.h)‏ //------------------- Déclaration des Fonctions ------------------------- void setup(void); void led_trans_on(void); void led_trans_off(void); void led_enreg_on(void); void led_enreg_off(void); void ecoute(void); void enreg(void); void parler(void); void mode_jouer(void); void msg1(void); void msg2(void); void msg3(void); void mode_repete(void); //------------------- Déclaration des variables globales --------------- const char notice[] = " VE2FAB, A.FRECHETTE, ver 1.3, 25 mars 2008 "; int8 repete, cycle;

  31. Programme principal

  32. //------------------- PROGRAMME PRINCIPAL ------------------------------- void main(void)‏ { setup(); repete = notice[0]; // pour éviter le warning repete = 0; cycle = 0; for(;;)‏ { if (0 == input(sw_play)) // mode enregistrement? { enreg(); } else { ecoute(); if (0 == input(ptt_micro))‏ { parler(); repete = 0; // désactive le mode repete cycle = 0; } else if (repete != 0)‏ { mode_jouer(); mode_repete(); // répète toujours le 1e message } else if (0 == input(bou_msg1))‏ { mode_jouer(); msg1(); } else if (0 == input(bou_msg2))‏ { mode_jouer(); msg2(); } else if (0 == input(bou_msg3))‏ { mode_jouer(); msg3(); } } } }

  33. Fonction setup void setup(void) // initialisation du PIC { output_b(0xDC); // valeur de default en sortie output_drive(ptt_radio); // Pin contrôlant le PTT du radio 1=tx on, port B, sortie output_drive(isd_prn); // Pin P/Rn du ISD, port B, sortie output_drive(isd_pd); // Pin PD du ISD, port B, sortie output_drive(isd_cen); // Pin CEn du ISD, port B, sortie output_drive(isd_avanc); // Avancement rapide du ISD 1=vite, port B, sortie output_drive(led_trans); // Led de playback 1=OFF, dans port B, sortie output_drive(led_enreg); // Led d'enregistrement 1=OFF, dans port B, sortie output_float(ptt_micro); // Bouton PTT du microphone, entrée, 0=on output_float(bou_msg1); // Bouton message #1, entrée, 0=jouer 1 output_float(bou_msg2); // Bouton message #2, entrée, 0=jouer 2 output_float(bou_msg3); // Bouton message #3, entrée, 0=jouer 3 output_float(sw_play); // Slide switch jouer/enregistrer, entrée, 1=jouer output_float(isd_eom); // Pin EOM du ISD, port B, entrée }

  34. Fonctions simples void led_trans_on(void) // DEFINE led_trans_on() output_low(led_trans) { output_low(led_trans); } void led_trans_off(void)‏ { output_high(led_trans); } void led_enreg_on(void)‏ { output_low(led_enreg); } void led_enreg_off(void)‏ { output_high(led_enreg); }

  35. Fonction ecoute void ecoute(void) // séquence pour mettre le ISD en mode écoute { if (repete == 0)‏ led_enreg_off(); led_trans_off(); output_low(ptt_radio); output_high(isd_prn); output_high(isd_cen); output_low(isd_avanc); output_high(isd_pd); }

  36. Fonction enreg void enreg(void) // séquence pour mettre le ISD en mode enregistrer, attente du PTT du micro { int8 i; repete = 0; cycle = 0; led_enreg_on(); led_trans_off(); output_low(ptt_radio); output_low(isd_avanc); // leds enreg on, avanc=0, pd=0, ce=1, prn=0, ptt_radio=0 output_high(isd_pd); output_high(isd_cen); output_high(isd_prn); output_high(isd_pd); // reset les compteurs internes delay_ms(60); output_low(isd_pd); delay_ms(60); output_low(isd_prn); for(i = 0; i < 3; i++) // enregistre jusqu'a 3 messages, remplir de 3 messages si moins que 3 messages { while(1 == input(ptt_micro)); // attend qu'on pèse sur le PTT output_low(isd_cen); delay_ms(200); while(0 == input(ptt_micro)); // attend la relâche du ptt output_high(isd_cen); delay_ms(200); } while (0 == input(sw_play)) // attend ici qu'on remettre la switch enregistrement a jouer { led_enreg_off(); // flash pour indiquer que les trois messages sont enregistres delay_ms(200); led_enreg_on(); delay_ms(200); }; output_high(isd_prn); }

  37. Fonction parler void parler(void) // en mode parler, la sortie de l'ampli // du ISD est flottant { led_enreg_off(); // les 2 led off, pd=0,cen=1,prn=0,avanc=0,ptt_radio=1 led_trans_off(); output_low(isd_pd); output_high(isd_cen); output_low(isd_prn); output_low(isd_avanc); output_high(ptt_radio); delay_ms(100); while(0 == input(ptt_micro)); // attend la relâche du ptt output_low(ptt_radio); }

More Related