{"id":1964,"date":"2022-02-08T19:39:15","date_gmt":"2022-02-08T18:39:15","guid":{"rendered":"http:\/\/f6kmf.fr\/?p=1964"},"modified":"2022-02-08T19:39:18","modified_gmt":"2022-02-08T18:39:18","slug":"arduino-et-la-radio-9eme-partie","status":"publish","type":"post","link":"https:\/\/f6kmf.fr\/index.php\/2022\/02\/08\/arduino-et-la-radio-9eme-partie\/","title":{"rendered":"Arduino et la radio 9\u00e9me partie."},"content":{"rendered":"\n<h4 class=\"wp-block-heading\">Notre r\u00e9cepteur poss\u00e8de maintenant un scanner automatique.<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"text-align:right\"><strong>Par NOAM<\/strong><\/p>\n\n\n\n<p class=\"has-background has-light-green-cyan-background-color wp-block-paragraph\">Voir notre article pr\u00e9c\u00e9dent  <a href=\"https:\/\/f6kmf.fr\/index.php\/2021\/09\/19\/arduino-initiation-a-lusage-des-radioamateurs-8eme-partie\/\">ICI<\/a> (construction du r\u00e9cepteur)<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"305\" height=\"81\" src=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2022\/02\/image.png\" alt=\"\" class=\"wp-image-1965\" srcset=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2022\/02\/image.png 305w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2022\/02\/image-300x80.png 300w\" sizes=\"auto, (max-width: 305px) 100vw, 305px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-background has-very-light-gray-background-color wp-block-paragraph\"><strong>Affectation des boutons poussoirs au d\u00e9marrage.<\/strong><br>1) Diminue la fr\u00e9quence du pas choisi (-12,5 Khz)<br>2) Augmente la fr\u00e9quence du pas choisi (+12,5 Khz)<br>3) Passage du Squelch de 0 \u00e0 1 et inversement<br>4) Lancement du scanner (144.300 \u00e0 145.800 modifiable) <br><br><strong>Si le scanner est en fonction balayage\u00a0sur\u00a0des\u00a0fr\u00e9quences\u00a0libres.<\/strong><br>1) Stoppe le scan pour une reprise manuelle<br>Les autres boutons sont sans objet.<br><br> <strong>Si le scanner est stopp\u00e9 sur une fr\u00e9quence\u00a0occup\u00e9e.<\/strong><br>1) Stoppe le scan pour une reprise manuelle<br> Les autres boutons sont sans objet. <br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"961\" height=\"634\" src=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2022\/02\/noam.jpg\" alt=\"\" class=\"wp-image-1966\" srcset=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2022\/02\/noam.jpg 961w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2022\/02\/noam-300x198.jpg 300w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2022\/02\/noam-768x507.jpg 768w\" sizes=\"auto, (max-width: 961px) 100vw, 961px\" \/><figcaption>c&rsquo;est d\u00e9j\u00e0 sur papier que l&rsquo;algorithme est pos\u00e9 !<\/figcaption><\/figure>\n\n\n\n<p class=\"has-background has-cyan-bluish-gray-background-color wp-block-paragraph\"><strong>Le scanner, comment \u00e7a marche ?<\/strong><br>Comme la LED s&rsquo;\u00e9claire en pr\u00e9sence d&rsquo;une \u00e9mission, nous avons mesur\u00e9 les tensions aux bornes de la LED et de la r\u00e9sistance de 470 ohms.<br>En lecture directe sur la borne analogique A0 de l&rsquo;Arduino, elle passe de 800 en l&rsquo;absence de signal \u00e0 300 sur pr\u00e9sence d&rsquo;\u00e9mission avec le squelch activ\u00e9.<br>Nous partons donc du principe que la fr\u00e9quence est occup\u00e9e si une tension  &lt; 500 est mesur\u00e9e, et libre dans le cas contraire.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"769\" height=\"495\" src=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2022\/02\/image-1.png\" alt=\"\" class=\"wp-image-1967\" srcset=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2022\/02\/image-1.png 769w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2022\/02\/image-1-300x193.png 300w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2022\/02\/image-1-768x494.png 768w\" sizes=\"auto, (max-width: 769px) 100vw, 769px\" \/><\/figure>\n\n\n\n<p class=\"has-background has-cyan-bluish-gray-background-color wp-block-paragraph\">Par rapport \u00e0 la version pr\u00e9c\u00e9dente, nous avons juste ajout\u00e9 une connexion entre la LED et la borne A0 de l&rsquo;Arduino.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ Recepteur avec scanner auto \/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\/\/ Ajouter librairie de gestion de l'\u00e9cran LCD: \n# include &lt;LiquidCrystal.h>\n \/\/ initialisation des broches \u00e0 utiliser pour l'\u00e9cran LCD.\n LiquidCrystal lcd(7, 8, 9, 10, 11, 12);\n\n\/\/ Initialisation des variables\nint Bouton_1 = 2; \/\/ Notre bouton 1 utilisera la borne 2 de l'Arduino\nint Bouton_2 = 3; \/\/ Notre bouton 2 utilisera la borne 3 de l'Arduino\nint Bouton_3 = 4; \/\/ Notre bouton 1 utilisera la borne 4 de l'Arduino\nint Bouton_4 = 5; \/\/ Notre bouton 2 utilisera la borne 5 de l'Arduino\nint Borne_Tension = A0; \/\/ Nous lirons la tension pr\u00e9sente sur la borne A0\nint Tension_Lue;\n \n\nfloat Frequence_Reception,Frequence_Emission, Pas_Frequence, Niveau_Squelch, Volume_Son; \/\/initialisation des variables\n\n void setup() {\n\n   \/\/ Pr\u00e9paration de notre afficheur qui comporte 16 colonnes sur 2 lignes\n   lcd.begin(16, 2);\n   \/\/ Afficher sur l'\u00e9cran LCD.\n      lcd.setCursor(0, 0);\n      lcd.print(\"FREQUENCE:\");\n\n   pinMode(Bouton_1, INPUT_PULLUP); \/\/ Nous utilisons Bouton_1 comme une entr\u00e9e digitale\n   pinMode(Bouton_2, INPUT_PULLUP); \/\/ Nous utilisons Bouton_2 comme une entr\u00e9e digitale\n   pinMode(Bouton_3, INPUT_PULLUP); \/\/ Nous utilisons Bouton_3 comme une entr\u00e9e digitale\n   pinMode(Bouton_4, INPUT_PULLUP); \/\/ Nous utilisons Bouton_4 comme une entr\u00e9e digitale\n\n\n   \n   Frequence_Reception = 145750, Frequence_Emission = Frequence_Reception;     \/\/Fr\u00e9quence favorite.\n   Pas_Frequence = 12.5;\n   Niveau_Squelch = 1;\n   Volume_Son = 3;\n   \n   lcd.setCursor(2, 1);\n   lcd.print((Frequence_Reception\/ 1000), 4);\n   envoyer_info_vers_SA818 ();\n }\n void loop() {\nint a; \/\/ variable servant \u00e0 r\u00e9pondre \u00e0 un if\n \nlcd.setCursor(2, 1);\n  if (digitalRead(Bouton_1) == LOW) \/\/reduire la fr\u00e9quence\n  {\n    if(a == 0) { \n      \/\/ si a = 1 le bouton 1 est utilis\u00e9 par la partie SCANNER \n      \/\/ donc l'action contenue dans le if ne sera pas execut\u00e9e\n      \n      delay(200);\n      Frequence_Reception=Frequence_Reception-Pas_Frequence;\n      lcd.print((Frequence_Reception \/ 1000), 4);\n      envoyer_info_vers_SA818 ();\n    }\n  }\n  if (digitalRead(Bouton_2) == LOW) \/\/augmenter la fr\u00e9quence\n  {\n    delay(200);\n    Frequence_Reception = Frequence_Reception + Pas_Frequence;\n    lcd.print((Frequence_Reception \/ 1000), 4);\n  envoyer_info_vers_SA818 ();\n  }\n  if (digitalRead(Bouton_3) == LOW) \/\/r\u00e9gler le niveau du squelch a 1 ou 0\n  {\n    if(Niveau_Squelch > 0) \n    {\n      Niveau_Squelch = Niveau_Squelch - 1; \/\/squelch = 0\n      envoyer_info_vers_SA818 ();\n      delay(200);\n      } else {\n        Niveau_Squelch = Niveau_Squelch + 1; \/\/squelch = 1\n        envoyer_info_vers_SA818 (); \/\/envoie des infos\n        delay(200);\n      }\n  }\n  Tension_Lue = (analogRead(Borne_Tension)); \n  \n     \/\/La tension est lue sur la LED du r\u00e9cepteur sur la borne A0\n     \n  if (digitalRead(Bouton_4) == LOW) \n      \/\/On active le scanneur\n  {\n    a = 1; \n    \n    \/\/ a est mis a 1 donc le button 1 ne pourra pas \u00eatre utilis\u00e9 \n    \/\/ pour diminuer la fr\u00e9quence mais stopper le scanneur\n    \n    while(digitalRead(Bouton_1) == HIGH){\n       \n       \/\/Gestion des limites de bandes\n       \n      if (Frequence_Reception > 145800) { \n          Frequence_Reception = 144300;\n          envoyer_info_vers_SA818 ();\n      }\n      Frequence_Reception = Frequence_Reception + Pas_Frequence;\n      \n      envoyer_info_vers_SA818 ();\n      delay(100);\n      \n      Tension_Lue = (analogRead(Borne_Tension)); \n      \n      \/\/voir si la fr\u00e9quence est occup\u00e9e gr\u00e2ce \u00e0 la tension\n      \n      lcd.setCursor(2, 1);\n      lcd.print((Frequence_Reception \/ 1000), 4);\n      \n      if(Tension_Lue>500) \n      \n      \/\/ tension sup\u00e9rieur \u00e0 500 = fr\u00e9quence libre\n      \n      {lcd.setCursor(11,1);\n          lcd.print(\"libre\");\n              } else { \n                \n         \/\/sinon fr\u00e9quence = occcup\u00e9e donc arr\u00eat sur la fr\u00e9quence\n         \n         while(Tension_Lue &lt; 500 &amp;&amp; digitalRead(Bouton_1) == HIGH) \n         \n         \/\/boucle scrutant si la fr\u00e9quence est devenue libre donc redemarre le scanneur\n         \/\/et si le bouton 1 est press\u00e9 on sort de la boucle\n         {  \n          \n          lcd.setCursor(11,1);\n          lcd.print(\"occup\");\n          Tension_Lue = (analogRead(Borne_Tension));\n         }\n       }\n     }\n     \n    delay(300);\n    \n    a = 0; \n    \n    \/\/ fin du programme bouton 4 donc a = 0, \n    \/\/ le bouton 1 peut \u00e0 nouveau \u00eatre utlis\u00e9 pour reduire le fr\u00e9quence\n  }\n  \n  \n   if(Tension_Lue>500)\n   \n   \/\/ si tension sup\u00e9rieur \u00e0 500 = la fr\u00e9quence est libre \n   \/\/ donc affichage: libre\n  {\n    lcd.setCursor(11,1);\n    lcd.print(\"libre  \");\n  } else {\n    lcd.setCursor(11,1);\n    lcd.print(\"occup\u00e9e\"); \n    \n    \/\/fr\u00e9quence inf\u00e9rieur \u00e0 500 donc fr\u00e9quence occup\u00e9e\n  }\n  \n  \n}\nvoid envoyer_info_vers_SA818 ()\n\/\/  envoyer les informations au module SA818\n{\n  Serial.begin (9600);\n  Serial.println (\"AT+DMOCONNECT\"); \/\/ connexion\n  Serial.println(\"\");\n  Serial.println (\"\");\n  delay (100);\n  \n  Serial.print (\"AT+DMOSETGROUP=\");\n  Serial.print (\"0\");\n  Serial.print (\",\");\n  Serial.print (Frequence_Emission \/ 1000, 4);\n  Serial.print (\",\");\n  Serial.print (Frequence_Reception \/ 1000, 4);\n  Serial.print (\",\");\n  Serial.print (\"0000\");\n  Serial.print (\",\");\n  Serial.print (Niveau_Squelch,0);\n  Serial.print (\",\");\n  Serial.println (\"0000\");\n  Serial.println(\"\");\n  Serial.println (\"\");\n  delay (100);\n\n  Serial.println (\"AT+SETFILTER=0,0,1\");\n  Serial.println (\"\");\n  delay (100);\n  \n  \n\n  Serial.print (\"AT+DMOSETVolume_SonUME=\");\n  Serial.println (Volume_Son,0);\n  Serial.println (\"\");\n  delay (100);\n }<\/code><\/pre>\n\n\n\n<p class=\"has-background has-vivid-green-cyan-background-color wp-block-paragraph\"><strong>Prochaines \u00e9volutions, affichage du noms des principaux r\u00e9p\u00e9teurs locaux.<\/strong><br><strong><br>Passage en \u00e9mission avec gestion du d\u00e9calage relais (600khz)<br><br>Merci \u00e0 NOAM pour l&rsquo;excellent travail de programmation document\u00e9<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Notre r\u00e9cepteur poss\u00e8de maintenant un scanner automatique. Par NOAM Voir notre article pr\u00e9c\u00e9dent ICI (construction du r\u00e9cepteur) Affectation des boutons<\/p>\n","protected":false},"author":4,"featured_media":1966,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[11,27,10,7,14],"tags":[],"class_list":["post-1964","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-activites-radio","category-arduino","category-atelier-jeunes","category-electronique","category-realisations"],"_links":{"self":[{"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/posts\/1964","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/comments?post=1964"}],"version-history":[{"count":2,"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/posts\/1964\/revisions"}],"predecessor-version":[{"id":1969,"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/posts\/1964\/revisions\/1969"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/media\/1966"}],"wp:attachment":[{"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/media?parent=1964"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/categories?post=1964"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/tags?post=1964"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}