{"id":1792,"date":"2017-05-22T12:14:08","date_gmt":"2017-05-22T11:14:08","guid":{"rendered":"http:\/\/www.macerobotics.com\/?p=1792"},"modified":"2017-05-24T13:16:07","modified_gmt":"2017-05-24T12:16:07","slug":"controle-du-robot-mrduino-wireless-par-udp","status":"publish","type":"post","link":"https:\/\/www.macerobotics.com\/?p=1792","title":{"rendered":"Contr\u00f4le du robot MRduino Wireless par UDP"},"content":{"rendered":"<p>Un tutoriel pour contr\u00f4ler le robot MRduino Wireless par UDP avec un programme python.<\/p>\n<p style=\"text-align: center;\"><strong>UDP = User Datagram Protocol<\/strong><\/p>\n<p><a href=\"http:\/\/www.macerobotics.com\/wp-content\/uploads\/2017\/05\/MRduino-wireless_UDP.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1811\" src=\"http:\/\/www.macerobotics.com\/wp-content\/uploads\/2017\/05\/MRduino-wireless_UDP.png\" alt=\"MRduino-wireless_UDP\" width=\"1458\" height=\"727\" srcset=\"https:\/\/www.macerobotics.com\/wp-content\/uploads\/2017\/05\/MRduino-wireless_UDP.png 1458w, https:\/\/www.macerobotics.com\/wp-content\/uploads\/2017\/05\/MRduino-wireless_UDP-300x150.png 300w, https:\/\/www.macerobotics.com\/wp-content\/uploads\/2017\/05\/MRduino-wireless_UDP-768x383.png 768w, https:\/\/www.macerobotics.com\/wp-content\/uploads\/2017\/05\/MRduino-wireless_UDP-1024x511.png 1024w, https:\/\/www.macerobotics.com\/wp-content\/uploads\/2017\/05\/MRduino-wireless_UDP-600x299.png 600w\" sizes=\"auto, (max-width: 1458px) 100vw, 1458px\" \/><\/a><\/p>\n<p>Le contr\u00f4le du robot est r\u00e9aliser par un script en langage python.<\/p>\n<h2>Le programme pour le robot<\/h2>\n<p>Ce programme permet au robot MRduino Wireless de<\/p>\n<p>Il faut modifier votre SSID et mot de passe de votre r\u00e9seau Wifi :<\/p>\n<pre><strong>const char* ssid = \"YOUR_SSID\";\u00a0 <\/strong>\r\n<strong>const char* pass = \"YOU_PASSWORD\";\u00a0 \r\n<\/strong><\/pre>\n<p>Le programme complet :<\/p>\n<pre><strong>#include &lt;ESP8266WiFi.h&gt;<\/strong>\r\n<strong>#include &lt;WiFiUDP.h&gt;<\/strong>\r\n<strong>#include &lt;mrduino.h&gt;<\/strong>\r\n\r\n\r\n<strong>int status = WL_IDLE_STATUS;<\/strong>\r\n<strong>const char* ssid = \"FREEMR\";\u00a0 <\/strong>\r\n<strong>const char* pass = \"WIFINICO\";\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/strong>\r\n\r\n<strong>unsigned int localPort = 12345; \u00a0<\/strong>\r\n<strong>byte packetBuffer[512]; <\/strong>\r\n<strong>WiFiUDP Udp;<\/strong>\r\n<strong>int tries=0;<\/strong>\r\n\r\n<strong>void setup()<\/strong>\r\n<strong>{<\/strong>\r\n\r\n<strong>\u00a0 Serial.begin(115200);<\/strong>\r\n\r\n  <span style=\"color: #339966;\"><strong>\/\/ wifi init<\/strong><\/span>\r\n<strong>\u00a0 WiFi.begin(ssid, pass);<\/strong>\r\n<strong>\u00a0<\/strong>\r\n<strong>\u00a0 Serial.print(\"[Connecting]\");<\/strong>\r\n<strong>\u00a0 Serial.print(ssid);<\/strong>\r\n<strong>\u00a0 \r\n  <span style=\"color: #339966;\">\/\/ wait connexion<\/span><\/strong>\r\n<strong>\u00a0 while (WiFi.status() != WL_CONNECTED)<\/strong>\r\n<strong>\u00a0 {<\/strong>\r\n<strong>\u00a0\u00a0\u00a0 delay(500);<\/strong>\r\n<strong>\u00a0\u00a0\u00a0 Serial.print(\".\");<\/strong>\r\n<strong>\u00a0\u00a0\u00a0 tries++;<\/strong>\r\n<strong>\u00a0\u00a0\u00a0 if (tries &gt; 30)<\/strong>\r\n<strong>\u00a0\u00a0\u00a0 {<\/strong>\r\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0 break;<\/strong>\r\n<strong>\u00a0\u00a0\u00a0 }<\/strong>\r\n<strong>\u00a0 }<\/strong>\r\n<strong>\u00a0 Serial.println();<\/strong>\r\n\r\n<strong>\u00a0 printWifiStatus();<\/strong>\r\n\r\n  <span style=\"color: #339966;\"><strong>\/\/ wifi connexion<\/strong><\/span>\r\n<strong>\u00a0 Serial.println(\"Connected to wifi\");<\/strong>\r\n<strong>\u00a0 Serial.print(\"Udp server started at port \");<\/strong>\r\n<strong>\u00a0 Serial.println(localPort);<\/strong>\r\n<strong>\u00a0 Udp.begin(localPort);<\/strong>\r\n<strong>}<\/strong>\r\n\r\n<strong>void loop()<\/strong>\r\n<strong>{<\/strong>\r\n<strong>int noBytes = Udp.parsePacket();<\/strong>\r\n<strong>String received_command = \"\";<\/strong>\r\n<strong>\u00a0<\/strong>\r\n<strong>\u00a0 if ( noBytes )<\/strong>\r\n<strong>\u00a0 {<\/strong>\r\n    <span style=\"color: #339966;\"><strong>\/\/ read UDP packet<\/strong><\/span>\r\n<strong>\u00a0\u00a0\u00a0 Udp.read(packetBuffer,noBytes);<\/strong>\r\n\r\n<strong>\u00a0\u00a0\u00a0 for (int i=1;i&lt;=noBytes;i++)<\/strong>\r\n<strong>\u00a0\u00a0\u00a0 {<\/strong>\r\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0 received_command = received_command + char(packetBuffer[i - 1]);<\/strong>\r\n<strong>\u00a0\u00a0\u00a0 }<\/strong>\r\n<strong>\u00a0 \u00a0<\/strong>\r\n<strong>\u00a0\u00a0\u00a0 Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());<\/strong>\r\n<strong>\u00a0\u00a0\u00a0 Udp.endPacket();<\/strong>\r\n\r\n    <span style=\"color: #339966;\"><strong>\/\/ print command<\/strong><\/span>\r\n<strong>\u00a0\u00a0\u00a0 Serial.print(\"COMMANDE =\");<\/strong>\r\n<strong>\u00a0\u00a0\u00a0 Serial.println(received_command);<\/strong>\r\n\r\n<strong>\u00a0 }<\/strong>\r\n<strong>}<\/strong>\r\n\r\n<strong>void printWifiStatus()\r\n{<\/strong>\r\n\r\n<strong>\u00a0 Serial.print(\"SSID: \");<\/strong>\r\n<strong>\u00a0 Serial.println(WiFi.SSID());<\/strong>\r\n\r\n\r\n<strong>\u00a0 IPAddress ip = WiFi.localIP();\r\n<\/strong>\r\n<strong>\u00a0 Serial.print(\"IP Address: \");<\/strong>\r\n<strong>\u00a0 Serial.println(ip);<\/strong>\r\n<strong>}<\/strong><\/pre>\n<ul>\n<li>Compiler et t\u00e9l\u00e9charger le programme dans le robot MRduino Wireless<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h1>Le script python<\/h1>\n<p>Voici un script python pour envoyer une commande au robot :<\/p>\n<ul>\n<li>Exemple avec la commande pour allumer la led n\u00b01 :<\/li>\n<\/ul>\n<pre><strong>import socket<\/strong>\r\n<strong>UDP_IP_ADDRESS = \"192.168.0.20\"<\/strong>\r\n<strong>UDP_PORT_NO = 12345<\/strong>\r\n\r\n<strong>Message = \"#LED,1,1!\"<\/strong>\r\n\r\n<strong>clientSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)<\/strong>\r\n\r\n<strong>clientSock.sendto(Message, (UDP_IP_ADDRESS, UDP_PORT_NO))<\/strong><\/pre>\n<ul>\n<li>Exemple avec la commande pour faire avancer le robot\u00a0 :<\/li>\n<\/ul>\n<pre><strong>import socket<\/strong>\r\n<strong>UDP_IP_ADDRESS = \"192.168.0.20\"<\/strong>\r\n<strong>UDP_PORT_NO = 12345<\/strong>\r\n\r\n<strong>Message = \"#MF,20!\"<\/strong>\r\n\r\n<strong>clientSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)<\/strong>\r\n\r\n<strong>clientSock.sendto(Message, (UDP_IP_ADDRESS, UDP_PORT_NO))<\/strong><\/pre>\n<p><img decoding=\"async\" id=\"licensebutton\" class=\"aligncenter\" src=\"https:\/\/i.creativecommons.org\/l\/by-sa\/2.0\/fr\/88x31.png\" alt=\"Creative Commons License\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un tutoriel pour contr\u00f4ler le robot MRduino Wireless par UDP avec un programme python. UDP = User Datagram Protocol Le contr\u00f4le du robot est r\u00e9aliser par un script en langage python. Le programme pour le robot Ce programme permet au robot MRduino Wireless de Il faut modifier votre SSID et mot de passe de votre &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[50,44,52],"tags":[],"class_list":["post-1792","post","type-post","status-publish","format-standard","hentry","category-esp8266","category-esus","category-mrduino-wireless"],"_links":{"self":[{"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=\/wp\/v2\/posts\/1792","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1792"}],"version-history":[{"count":7,"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=\/wp\/v2\/posts\/1792\/revisions"}],"predecessor-version":[{"id":1816,"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=\/wp\/v2\/posts\/1792\/revisions\/1816"}],"wp:attachment":[{"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1792"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1792"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.macerobotics.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1792"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}