{"id":3272,"date":"2019-12-10T23:16:15","date_gmt":"2019-12-10T22:16:15","guid":{"rendered":"http:\/\/arduino.net.pl\/?p=3272"},"modified":"2020-06-03T12:25:28","modified_gmt":"2020-06-03T10:25:28","slug":"serial-communication","status":"publish","type":"post","link":"https:\/\/arduino.net.pl\/index.php\/serial-communication\/","title":{"rendered":"Serial Communication, transmisja szeregowa, Json"},"content":{"rendered":"\n<p><strong>\u0179r\u00f3d\u0142o: <\/strong><a href=\"https:\/\/www.youtube.com\/watch?v=6-RXqFS_UtU&amp;t=151s\">Arduino to ESP8266 Data With Serial Communication Using Arduino IDE<\/a><br><strong>Transmisja Szeregowa<\/strong> (<em>Serial Communication<\/em>) to \u0142atwy spos\u00f3b na rozszerzenie mo\u017cliwo\u015bci wsp\u00f3\u0142pracy ESP8266 z wi\u0119ksz\u0105 ilo\u015bci\u0105 czujnik\u00f3w, nRF24, wy\u015bwietlaczy itp. Albo te\u017c rozszerzenie mo\u017cliwo\u015bci dowolnej p\u0142ytki Arduino o modu\u0142 sieciowy ESP8266. Jak zwykle <a href=\"https:\/\/acrobotic.com\">ACROBOTIC<\/a> wykona\u0142o \u015bwietn\u0105 robot\u0119, dodatkowo pos\u0142uguj\u0105c si\u0119 formatem <strong>Json<\/strong> przy przesy\u0142aniu danych.<\/p>\n\n\n\n<p>W <strong>DynamicJsonDocument()<\/strong> nale\u017cy poda\u0107 wielko\u015b\u0107 pami\u0119ci dynamicznej, kt\u00f3ra pomie\u015bci nasz\u0105 struktur\u0119. Przydatny jest do tego kalkulator:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>&nbsp;<a href=\"https:\/\/arduinojson.org\/v6\/assistant\/\">ArduinoJson Assistant<\/a>&nbsp;<\/li><\/ul>\n\n\n\n<p>Pami\u0119ta\u0107 trzeba \u017ceby wpisa\u0107 w\u0142a\u015bciw\u0105 form\u0119 naszej struktury Json<\/p>\n\n\n\n<p><code>{<br>   \"type\": \"response\",<br>   \"light\": 200,<br>   \"temp\": -50.3,<br>   \"hum\": 100.0<br> }<\/code><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">ACROBIOTIC<\/h5>\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\" title=\"Arduino to ESP8266 Data With Serial Communication Using Arduino IDE (Mac OSX and Windows)\" width=\"774\" height=\"435\" src=\"https:\/\/www.youtube.com\/embed\/6-RXqFS_UtU?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><strong>O kilku rzeczach trzeba tu pami\u0119ta\u0107<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Po pierwsze konieczne jest zainstalowanie biblioteki <strong><a href=\"https:\/\/github.com\/bblanchon\/ArduinoJson\">ArduinoJson<\/a><\/strong> w <strong>wersji 6+<\/strong>. Wersje starsze nie b\u0119d\u0105 dzia\u0142a\u0107.<\/li><li>Po drugie nie wolno<strong> \u0142\u0105czy\u0107 TX z RX<\/strong> obu p\u0142ytek <strong>przed za\u0142adowaniem<\/strong> program\u00f3w. U mnie powodowa\u0142o to przedziwne informacje o errorach. Je\u015bli mamy pod\u0142\u0105czone inne p\u0142ytki przez USB, kt\u00f3re wysy\u0142aj\u0105 informacje przez <strong>Serial<\/strong>, te\u017c lepiej je od\u0142\u0105czy\u0107 przy wysy\u0142aniu skeczy. <\/li><li>Pami\u0119ta\u0107 te\u017c nale\u017cy aby po\u0142\u0105czy\u0107 komputer <strong>z sieci\u0105 WiFi <\/strong>zanim wpiszemy numer strony na kt\u00f3rym wy\u015bwietlaj\u0105 si\u0119 dane. Ja zapomnia\u0142em, bo mam sie\u0107 na kablu i by\u0142o troch\u0119 nerw\u00f3w.<\/li><\/ul>\n\n\n\n<p><strong>Tak \u0142\u0105czymy platformy:<\/strong><br><strong>TX &lt;-&gt; RX<\/strong><br><strong>RX &lt;-&gt; TX<\/strong><\/p>\n\n\n\n<p> <a href=\"https:\/\/github.com\/acrobotic\/Ai_Tips_ESP8266\/tree\/master\/esp8266_arduino_comm\">Skecze Acrobotic<\/a><\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h5 class=\"wp-block-heading\">LINKI<\/h5>\n<\/div><\/div>\n<\/div><\/div>\n<\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.esp8266.com\/viewtopic.php?f=32&amp;t=10853&amp;start=4#p75843\">HOW TO SERIAL COMMUNICATION BETWEEN NODE MCU AND ARDUINO<\/a><\/li><li><a href=\"https:\/\/github.com\/yarogniew\/serial_connection\/tree\/master\/Serial_dwie_strony\/Arduino_serial_TXRX\">https:\/\/github.com\/yarogniew\/serial_connection\/tree\/master\/Serial_dwie_strony\/<\/a><\/li><li><a href=\"https:\/\/icircuit.net\/arduino-connecting-arduino-uno-esp8266\/2443\">Arduino : Connecting Arduino UNO with ESP8266<\/a> \/ bardzo prosty spos\u00f3b komunikacji<\/li><li><a href=\"https:\/\/www.arduino.cc\/reference\/tr\/language\/functions\/communication\/serial\/\">Arduino dokumentacja: Serial<\/a><\/li><li><a href=\"https:\/\/arduinojson.org\">arduinojson.org<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"#152 Additional ESP32 Serial Channels in Arduino IDE (Quickie)\" target=\"_blank\">#152 Additional ESP32 Serial Channels in Arduino IDE (Quickie)<\/a> by <a href=\"https:\/\/www.youtube.com\/channel\/UCu7_D0o48KbfhpEohoP7YSQ\">Andreas Spiess<\/a><\/li><\/ul>\n<\/div><\/div>\n<\/div><\/div>\n\n\n\n<p>\u0179r\u00f3d\u0142o: <a href=\"https:\/\/icircuit.net\/arduino-connecting-arduino-uno-esp8266\/2443\">Arduino : Connecting Arduino UNO with ESP8266<\/a><br>Proste po\u0142\u0105czenie <strong>Arduino<\/strong> z <strong>ESP8266<\/strong> przez serial (\u0142\u0105czymy D3 Arduino z RX NodeMCU8266), wykorzystuj\u0105ce format <strong>Json<\/strong>, ale bez biblioteki. P\u0142ytki po\u0142\u0105czy\u0142em przez modu\u0142 obni\u017caj\u0105cy napi\u0119cie, ale mo\u017cna te\u017c bez, podobno ESP8266 wytrzymuje 5V na RX.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Nadajnik<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; light: false; title: Kod:; toolbar: true; notranslate\" title=\"Kod:\">\n#include &amp;lt;SoftwareSerial.h&gt;\nSoftwareSerial sw(2, 3); \/\/ RX, TX\n\nint id=12;\n\nvoid setup() {\n Serial.begin(115200);\n Serial.println(&quot;Interfacfing arduino with nodemcu&quot;);\n sw.begin(115200);\n}\n\nvoid loop() {\n Serial.println(&quot;Sending data to nodemcu&quot;);\n int adc=analogRead(A0);\n Serial.print(&quot;{\\&quot;sensorid\\&quot;:&quot;);\n Serial.print(id);\/\/sensor id\n Serial.print(&quot;,&quot;);\n Serial.print(&quot;\\&quot;adcValue\\&quot;:&quot;);\n Serial.print(adc);\/\/offset\n Serial.print(&quot;}&quot;);\n Serial.println();\n \n sw.print(&quot;{\\&quot;sensorid\\&quot;:&quot;);\n sw.print(id);\/\/sensor id\n sw.print(&quot;,&quot;);\n sw.print(&quot;\\&quot;adcValue\\&quot;:&quot;);\n sw.print(adc);\/\/offset\n sw.print(&quot;}&quot;);\n sw.println();\n delay(5000);\n}\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\">Odbiornik<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>void setup() {\n  Serial.begin(115200);\n}\n\nvoid publishSerialData(char *serialData) {\n  Serial.println(serialData);\n}\n\nvoid loop() {\n  \/\/client.loop();\n  if (Serial.available() > 0) {\n    char bfr&#91;101];\n    memset(bfr, 0, 101);\n    Serial.readBytesUntil( '\\n', bfr, 100);\n    \/\/Serial.println(bfr);\n    publishSerialData(bfr);\n  }\n}<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-background has-accent-1-background-color has-accent-1-color\"\/>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/arduino.net.pl\/wp-content\/uploads\/2020\/02\/Zrzut-ekranu-2020-02-3-o-21.23.12.png\" alt=\"\" class=\"wp-image-3461\" width=\"689\" height=\"262\" srcset=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2020\/02\/Zrzut-ekranu-2020-02-3-o-21.23.12.png 919w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2020\/02\/Zrzut-ekranu-2020-02-3-o-21.23.12-300x114.png 300w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2020\/02\/Zrzut-ekranu-2020-02-3-o-21.23.12-768x292.png 768w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2020\/02\/Zrzut-ekranu-2020-02-3-o-21.23.12-440x167.png 440w\" sizes=\"auto, (max-width: 689px) 100vw, 689px\" \/><figcaption>Spos\u00f3b po\u0142\u0105czenia przez konwerter napi\u0119\u0107<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Po\u0142\u0105czenie w obie strony z Json<\/h4>\n\n\n\n<p>\u0141\u0105cz\u0105c kody <a href=\"https:\/\/www.esp8266.com\/viewtopic.php?f=32&amp;t=10853&amp;start=4#p75843\">HOW TO SERIAL COMMUNICATION BETWEEN NODE MCU AND ARDUINO<\/a> z <a href=\"https:\/\/acrobotic.com\">ACROBOTIC<\/a> napisa\u0142em taki program, kt\u00f3ry u\u017cywa po\u0142\u0105czenia szeregowego korzystaj\u0105c z biblioteki <strong>ArduinoJson v 6.0<\/strong> :<\/p>\n\n\n\n<p><strong>Arduino part:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; light: false; title: Kod:; toolbar: true; notranslate\" title=\"Kod:\">\n\/*\n  bismillah hir rahman nir raheem\n  UNO\/Nano = Pin 7 &amp;amp; Pin 8\n  Note: Uno and ESP8266 cross connection\n  https:\/\/github.com\/acrobotic\/Ai_Tips_ESP8266\/tree\/master\/esp8266_arduino_comm\n*\/\n\n#include &amp;lt;SoftwareSerial.h&gt;\n#include &amp;lt;millisDelay.h&gt;\n#include &amp;lt;ArduinoJson.h&gt;\n\n#define rx 7\n#define tx 8\n\nSoftwareSerial ArduinoUno(rx, tx); \/\/ RX, TX\nmillisDelay sendIt;\n\nString f, g;\nint i, j;\n\nvoid setup() {\n  Serial.begin(9600);\n  pinMode(rx, INPUT);\n  pinMode(tx, OUTPUT);\n  ArduinoUno.begin(9600);\n\n  sendIt.start(5000);\n}\n\nvoid loop() {\n  delay(100);\n  \/\/=============== RX ==============\n\n  String content = &quot;&quot;;\n  boolean messageReady = false;\n  while (messageReady == false) { \/\/ blocking but that&#039;s ok\n    while (ArduinoUno.available()) {\n      content = ArduinoUno.readString();\n    }\n    messageReady = true;\n  }\n  if (content != &quot;&quot;) {\n    Serial.println();\n    Serial.println(content);\n\n    DynamicJsonDocument doc(1024);\n    DeserializationError error = deserializeJson(doc, content);\n    if (error) {\n      Serial.print(F(&quot;deserializeJson() failed: &quot;));\n      Serial.println(error.c_str());\n      messageReady = false;\n      return;\n    }\n    serializeJsonPretty(doc, Serial);\n    Serial.println();\n\n  }\n\n  \/\/=============== TX ==============\n\n  if (sendIt.isFinished()) {\n    sendIt.repeat();\n\n    DynamicJsonDocument doc(1024);\n    doc&#x5B;&quot;temp&quot;] = 99.99;\n    doc&#x5B;&quot;hum&quot;] = 88.88;\n    doc&#x5B;&quot;light&quot;] = 198;\n    doc&#x5B;&quot;batt&quot;] = 3.33;\n    serializeJson(doc, ArduinoUno);\n\n    Serial.println(&quot;Wys\u0142ano dane do NodeMCU&quot;);\n    Serial.println();\n  }\n}\n<\/pre><\/div>\n\n\n<p><strong>ESP8266 part:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; light: false; title: Kod:; toolbar: true; notranslate\" title=\"Kod:\">\n\/*\n  bismillah hir rahman nir raheem\n  ESP8266 = Pin D7 &amp;amp; Pin D8\n  Note: Uno and ESP8266 cross connection\n  https:\/\/github.com\/acrobotic\/Ai_Tips_ESP8266\/tree\/master\/esp8266_arduino_comm\n*\/\n\n#include &amp;lt;SoftwareSerial.h&gt;\n#include &amp;lt;ESP8266WiFi.h&gt;\n#include &amp;lt;millisDelay.h&gt;\n#include &amp;lt;ArduinoJson.h&gt;\n\nmillisDelay sendIt;\n\n#define rx D7\n#define tx D8\n\nSoftwareSerial NodeMCU(rx, tx); \/\/RX, TX\n\nString f;\n\nvoid setup() {\n  Serial.begin(9600);\n  NodeMCU.begin(9600);\n  pinMode(rx, INPUT);\n  pinMode(tx, OUTPUT);\n\n  sendIt.start(4000);\n}\n\nvoid loop() {\n  delay(100);\n  \/\/=============== RX ==============\n  String content = &quot;&quot;;\n  boolean messageReady = false;\n  while (messageReady == false) { \/\/ blocking but that&#039;s ok\n    while (NodeMCU.available()) {\n      content = NodeMCU.readString();\n    }\n    messageReady = true;\n  }\n  if (content != &quot;&quot;) {\n    Serial.println();\n    Serial.println(content);\n    Serial.println();\n\n    DynamicJsonDocument doc(1024);\n    DeserializationError error = deserializeJson(doc, content);\n    if (error) {\n      Serial.print(F(&quot;deserializeJson() failed: &quot;));\n      Serial.println(error.c_str());\n      messageReady = false;\n      return;\n    }\n    serializeJsonPretty(doc, Serial);\n    Serial.println();\n  }\n\n  \/\/=============== TX ==============\n\n  if (sendIt.isFinished()) {\n    sendIt.repeat();\n    \/\/    long i = (700000L);\n    \/\/    f = &quot;z&quot; + String(i);\n    \/\/    NodeMCU.println(f);\n    \/\/delay(100);\n    DynamicJsonDocument doc(1024);\n\n    doc&#x5B;&quot;z&quot;] = 700000L;\n    serializeJson(doc, NodeMCU);\n    Serial.println(&quot;Wys\u0142ano dane do Arduino&quot;);\n    Serial.println();\n\n  }\n}\n<\/pre><\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>\u0179r\u00f3d\u0142o: Arduino to ESP8266 Data With Serial Communication Using Arduino IDETransmisja Szeregowa (Serial Communication) to \u0142atwy spos\u00f3b na rozszerzenie mo\u017cliwo\u015bci wsp\u00f3\u0142pracy ESP8266 z wi\u0119ksz\u0105 ilo\u015bci\u0105 czujnik\u00f3w, nRF24, wy\u015bwietlaczy itp. Albo&#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-3272","post","type-post","status-publish","format-standard","hentry","category-arduino"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/3272","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/comments?post=3272"}],"version-history":[{"count":30,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/3272\/revisions"}],"predecessor-version":[{"id":3732,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/3272\/revisions\/3732"}],"wp:attachment":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/media?parent=3272"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/categories?post=3272"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/tags?post=3272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}