{"id":1089,"date":"2021-01-08T18:53:11","date_gmt":"2021-01-08T17:53:11","guid":{"rendered":"http:\/\/f6kmf.fr\/?p=1089"},"modified":"2021-02-20T20:22:10","modified_gmt":"2021-02-20T19:22:10","slug":"aduino-et-la-radio-a-la-poursuite-des-satellites","status":"publish","type":"post","link":"https:\/\/f6kmf.fr\/index.php\/2021\/01\/08\/aduino-et-la-radio-a-la-poursuite-des-satellites\/","title":{"rendered":"Arduino et la radio, \u00e0 la poursuite des satellites."},"content":{"rendered":"\n<p class=\"has-background has-light-green-cyan-background-color\">Je suis depuis des ann\u00e9es en admiration devant ces radioamateurs qui ont automatis\u00e9 la rotation de leurs antennes afin de poursuivre les satellites.<br>J&rsquo;ai lu de nombreuses publications et je suis toujours rest\u00e9 sur ma faim, car j&rsquo;ai trouv\u00e9 peu de montages simplement reproductibles que ce soit au niveau m\u00e9canique ou programmation. <br>(Les \u00e9quipements du commerce existent mais &#8230;. pas de \u00e7a chez nous !)<\/p>\n\n\n\n<p class=\"has-background has-very-light-gray-background-color\">Voil\u00e0 donc une premi\u00e8re description d&rsquo;un montage et son logiciel \u00e0 la port\u00e9e de tous. Je me contente de corriger automatiquement l&rsquo;Azimut (le plan horizontal)  de la ou des antennes.<br>En effet pour d\u00e9buter, on va utiliser des antennes assez \u00ab\u00a0courtes\u00a0\u00bb d&rsquo;environ 1,5 m\u00e8tre de longueur, elles ont un angle d&rsquo;ouverture assez large d&rsquo;environ 30\u00b0 (\u00e0 -3dB), si on place cette antenne avec une inclinaison de 30\u00b0, on recevra pratiquement sans perte les satellites \u00e9voluant entre l&rsquo;horizon et 60\u00b0. C&rsquo;est avec ce genre d&rsquo;installation que j&rsquo;ai r\u00e9alis\u00e9 jusqu&rsquo;\u00e0 maintenant de nombreux contacts ou re\u00e7u divers satellites.<br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/antennes-1024x576.jpg\" alt=\"\" class=\"wp-image-1090\" srcset=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/antennes-1024x576.jpg 1024w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/antennes-300x169.jpg 300w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/antennes-768x432.jpg 768w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/antennes.jpg 1323w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-background has-very-light-gray-background-color\"><strong>Comment \u00e7a marche ? <\/strong><br>On va utiliser un logiciel de poursuite (Orbitron pour mes essais, mais SDR-CONSOLE sait faire), on va \u00ab\u00a0capturer\u00a0\u00bb les informations sur le positionnement du satellite pour les envoyer sur un port de communication de notre ordinateur. A l&rsquo;aide de l&rsquo;interface Arduino on va lire les donn\u00e9es et les comparer avec la position de notre moteur et faire les corrections n\u00e9cessaires en faisant tourner notre moteur \u00e0 \u00ab\u00a0droite\u00a0\u00bb ou \u00e0 \u00ab\u00a0gauche\u00a0\u00bb .<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"724\" src=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/orbitron2-1024x724.jpg\" alt=\"\" class=\"wp-image-1091\" srcset=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/orbitron2-1024x724.jpg 1024w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/orbitron2-300x212.jpg 300w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/orbitron2-768x543.jpg 768w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/orbitron2.jpg 1403w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-background has-very-light-gray-background-color\"><strong>L&rsquo;interface Ordinateur -&gt; Moteur<\/strong><br>Elle est compos\u00e9e d&rsquo;un Arduino pour effectuer les calculs, mesurer la position du moteur et commuter les relais pour faire tourner notre moteur \u00e0 gauche ou \u00e0 droite ou &#8230;. stop ! <br><strong>Le co\u00fbt de cette interface est de 5,5\u20ac<\/strong> ! (restera \u00e0 la mettre dans un boitier).<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"726\" src=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/materiel_interface_rotor-1024x726.jpg\" alt=\"\" class=\"wp-image-1092\" srcset=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/materiel_interface_rotor-1024x726.jpg 1024w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/materiel_interface_rotor-300x213.jpg 300w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/materiel_interface_rotor-768x544.jpg 768w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/materiel_interface_rotor.jpg 1081w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-background has-very-light-gray-background-color\"><strong>Et le moteur ?<\/strong><br>Je me suis content\u00e9 d&rsquo;automatiser un vieux rotor d&rsquo;antenne ce qui r\u00e9duit consid\u00e9rablement l&rsquo;aspect m\u00e9canique. Il y a d&rsquo;ailleurs 2 options remplacer le boitier de contr\u00f4le du rotor par notre interface, ou \u00e0 l&rsquo;aide notre interface piloter le boitier rotor, c&rsquo;est le m\u00eame montage, dans le premier cas nos relais vont directement commander le moteur, dans le second ils vont se substituer aux boutons \u00ab\u00a0Gauche\u00a0\u00bb \u00ab\u00a0Droite\u00a0\u00bb du boitier de commande.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"724\" src=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/rotor-1024x724.jpg\" alt=\"\" class=\"wp-image-1093\" srcset=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/rotor-1024x724.jpg 1024w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/rotor-300x212.jpg 300w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/rotor-768x543.jpg 768w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/rotor.jpg 1403w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-background has-very-light-gray-background-color\"><strong>Fonctionnement de l&rsquo;interface :<\/strong><br>Arduino poss\u00e8de un port de communication, des entr\u00e9es\/sorties logiques et analogiques, on va donc utiliser une entr\u00e9e analogique pour mesurer le potentiom\u00e8tre du moteur, et convertir en degr\u00e9s. <br>Sur le port de communication on va lire les donn\u00e9es de site et azimut en provenance de l&rsquo;ordinateur (on n&rsquo;utilisera que l&rsquo;azimut dans cette version), on va comparer la position du moteur et celle du satellite et si n\u00e9cessaire on va activer le moteur \u00e0 \u00ab\u00a0gauche\u00a0\u00bb ou \u00e0 \u00ab\u00a0droite\u00a0\u00bb, les relais seront connect\u00e9s sur des sorties logiques.<br>Un afficheur parall\u00e8le  (connect\u00e9 sur des sorties logiques) nous permettra de suivre les informations satellite et moteur.  <br><br><strong>C\u00e2blage :<\/strong><br>je suis d\u00e9sol\u00e9, mais tout est l\u00e0, rien de plus !<br>bien s\u00fbr, apr\u00e8s la maquette, j&rsquo;ai c\u00e2bl\u00e9 \u00ab\u00a0en dur\u00a0\u00bb avec des fils en nappe.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"724\" src=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/sch\u00e9ma_arduino_rotor_PLG-1024x724.jpg\" alt=\"\" class=\"wp-image-1094\" srcset=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/sch\u00e9ma_arduino_rotor_PLG-1024x724.jpg 1024w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/sch\u00e9ma_arduino_rotor_PLG-300x212.jpg 300w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/sch\u00e9ma_arduino_rotor_PLG-768x543.jpg 768w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/sch\u00e9ma_arduino_rotor_PLG.jpg 1403w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-background has-very-light-gray-background-color\"><strong>Et le programme ?<\/strong><br>Pour les non initi\u00e9s, voici rapidement comment on proc\u00e8de :<br>&#8211; Le programme en langage C est \u00e9crit sur un PC.<br>&#8211; Il est compil\u00e9 et envoy\u00e9 sur l&rsquo;Arduino (et il y reste m\u00eame si on \u00e9teint)<br>&#8211; D\u00e9s que l&rsquo;Arduino est sous tension le programme s&rsquo;ex\u00e9cute.<br>Vous n&rsquo;\u00eates donc pas oblig\u00e9 de programmer, il suffit d&rsquo;injecter le programme compil\u00e9 par le port USB de l&rsquo;Arduino.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"484\" src=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/rotor_face_avant-1024x484.jpg\" alt=\"\" class=\"wp-image-1097\" srcset=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/rotor_face_avant-1024x484.jpg 1024w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/rotor_face_avant-300x142.jpg 300w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/rotor_face_avant-768x363.jpg 768w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/rotor_face_avant.jpg 1130w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-background has-very-light-gray-background-color\">Le satellite poursuivi est visible (E:004 = 4\u00b0 d&rsquo;\u00e9l\u00e9vation), il est a 59\u00b0 d&rsquo;azimut et l&rsquo;antenne est a 57\u00b0, on ne bouge pas tant que l&rsquo;\u00e9cart n&rsquo;est pas au moins de 4\u00b0. <br><br><strong>Algorithme :<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"724\" src=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/algorithme-1024x724.jpg\" alt=\"\" class=\"wp-image-1095\" srcset=\"https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/algorithme-1024x724.jpg 1024w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/algorithme-300x212.jpg 300w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/algorithme-768x543.jpg 768w, https:\/\/f6kmf.fr\/wp-content\/uploads\/2021\/01\/algorithme.jpg 1403w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p style=\"font-size:-1px\" class=\"has-background has-very-light-gray-background-color\"><strong>Le programme :<\/strong><br>J&rsquo;ai fait au plus simple ! Je surveille quand m\u00eame le site (\u00e9l\u00e9vation) pour v\u00e9rifier si le satellite est au dessus de l&rsquo;horizon .<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ Pilotage rotor azimut \u00e0 l'aide de WispDDE \/\/\n\/\/          Gilles PLATRET F1EFW             \/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\/\/ On ajoute une librairie qui va nous aider pour l'affichage\n\n#include &lt;LiquidCrystal.h>\nLiquidCrystal lcd(7, 8, 9, 10, 11, 12);\n\n\/\/ On d\u00e9clare quelques variables \n\nString Lecture_Port_USB,A_AZI,A_ELE,A_Potar_Azi,A_Potar_Ele ;\nint AZI, ELE, Potar_Azi;\nint pin0 = 0;\n\n\/\/ On initialise le programme \n\nvoid setup() {\n  \n  lcd.begin(16, 2);\n  Serial.begin(9600); \/\/ vitesse avec le port de communication\n  pinMode(5, OUTPUT); \/\/ relais 1\n  pinMode(6, OUTPUT); \/\/ relais 2\n  digitalWrite(5, HIGH); \/\/ relais au repos en effet ils sont invers\u00e9s\n  digitalWrite(6, HIGH); \/\/  HIGH repos LOW travail\n  AZI=0,ELE=0;\n}\n\n\/\/ On commence \u00e0 bosser \n\nvoid loop() \n{\n  \n\/\/ Lecture du port de communication.\n\/\/ au format GS-232 -> ex W127 052\n\/\/ on extrait les caract\u00e8res 2a4 Azumuth et 5a8 Elevation (substring)\n\/\/ et on les convertis en nombres (ToInt)\n\/\/ On dispose de l'information sous format num\u00e9rique pour les calculs\n\/\/ et au format chaine de caract\u00e8res pour l'affichage\n\n  while(Serial.available()){\n    Lecture_Port_USB = Serial.readString();\n    \n      A_AZI = (Lecture_Port_USB.substring(1, 4));\n      A_ELE = (Lecture_Port_USB.substring(5, 8));\n\n      AZI = (A_AZI.toInt());\n      ELE = (A_ELE.toInt());\n      \n\n    lcd.setCursor(0, 0);\n    lcd.print(\"SAT A:\");\n    lcd.print(A_AZI);\n    lcd.print(\" E:\");     \n    lcd.print(A_ELE);\n  }\n  \n\/\/ fin de lecture du port USB\n\n\/\/ Lecture du potar_Azumuth\n\/\/ Potar_Azi varie de 0 a 1024 (0 quand il est \u00e0 la masse et 1024 quand il re\u00e7oit 5V)\n\/\/ pour convertir en degres on fera 1024\/360 = 2.84\n\nPotar_Azi =  (analogRead(pin0)\/2.84);\n  \n   lcd.setCursor(0, 1);\n   lcd.print(\"ANT A:\");\n       \n       \/\/ pour afficher le nombre sous la forme de 3 caract\u00e8res\n       \/\/ c'est pas tr\u00e8s \u00e9l\u00e9gant .... je ferais mieux plus tard\n       \n       A_Potar_Azi = String(Potar_Azi);\n         if (A_Potar_Azi.length() &lt; 2) {\n             A_Potar_Azi = (\"00\"+ A_Potar_Azi);\n              }\n              else {\n               if (A_Potar_Azi.length() &lt; 3) {\n                A_Potar_Azi = (\"0\"+ A_Potar_Azi);\n               }\n               }\n              lcd.print(A_Potar_Azi);\n\n   \/\/ on ne corrige que tous les 4 degr\u00e9s et si le satellite est visible (ELE>0)\n   \/\/ donc si diff\u00e9rence des valeurs > 4 on tourne dans un sens\n   \/\/ si &lt; 4 on tourne dans l'autre sens et si presque \u00e9gale on stoppe \n\n    if ((Potar_Azi > AZI)&amp;&amp;(abs(Potar_Azi - AZI)>4)&amp;&amp;(ELE>0)) {\n             digitalWrite (5, HIGH);\n             digitalWrite (6, LOW);\n             }\n    if ((Potar_Azi &lt; AZI)&amp;&amp;(abs(Potar_Azi - AZI)>4)&amp;&amp;(ELE>0)) {\n             digitalWrite (5, LOW);\n             digitalWrite (6, HIGH);\n             }\n    if ((abs(Potar_Azi - AZI)&lt;5)||(ELE&lt;1)) { \n             digitalWrite (5, HIGH);\n             digitalWrite (6, HIGH);\n             delay (200);\n    }\n}\n     <\/code><\/pre>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" width=\"800\" height=\"450\" src=\"https:\/\/www.youtube.com\/embed\/t7bKRv8av8A?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"has-background has-light-green-cyan-background-color\"><strong>Et maintenant ?<\/strong><br>&#8211; Activation de la fonctionnalit\u00e9 SITE en utilisant un v\u00e9rin<br>&#8211; Montage sur un mat avec 1 antenne VHF et une UHF et on fait joujou.<br><br>Toujours \u00e0 votre disposition, (formulaire de contact)<br>amicalement Gilles <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Je suis depuis des ann\u00e9es en admiration devant ces radioamateurs qui ont automatis\u00e9 la rotation de leurs antennes afin de<\/p>\n","protected":false},"author":4,"featured_media":1094,"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,21,23,14,8],"tags":[],"class_list":["post-1089","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-activites-radio","category-antenne","category-informatique-programmation","category-realisations","category-satellites"],"_links":{"self":[{"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/posts\/1089","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=1089"}],"version-history":[{"count":7,"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/posts\/1089\/revisions"}],"predecessor-version":[{"id":1256,"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/posts\/1089\/revisions\/1256"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/media\/1094"}],"wp:attachment":[{"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/media?parent=1089"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/categories?post=1089"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/f6kmf.fr\/index.php\/wp-json\/wp\/v2\/tags?post=1089"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}