From a7049daa836d6a7f329199ed91dd4d188b84eec5 Mon Sep 17 00:00:00 2001 From: Alexandre Bobkov Date: Sat, 5 Jul 2025 18:35:56 -0400 Subject: [PATCH] manual --- .../docs/build/doctrees/environment.pickle | Bin 24216 -> 25872 bytes .../docs/build/doctrees/receiver.doctree | Bin 2443 -> 5991 bytes .../docs/build/doctrees/transmitter.doctree | Bin 2712 -> 4148 bytes .../docs/build/html/_sources/receiver.rst.txt | 52 +++++++- .../build/html/_sources/transmitter.rst.txt | 28 +++- .../tutorial/docs/build/html/index.html | 8 +- .../tutorial/docs/build/html/receiver.html | 56 +++++++- .../tutorial/docs/build/html/searchindex.js | 2 +- .../tutorial/docs/build/html/transmitter.html | 26 ++++ .../tutorial/docs/build/simplepdf/.buildinfo | 2 +- .../build/simplepdf/esp-idf_espnow_rc-car.pdf | Bin 3545339 -> 3551743 bytes .../tutorial/docs/build/simplepdf/index.html | 126 ++++++++++++++++++ .../tutorial/docs/source/receiver.rst | 52 +++++++- .../tutorial/docs/source/transmitter.rst | 28 +++- 14 files changed, 371 insertions(+), 9 deletions(-) diff --git a/ESP-IDF_Robot/tutorial/docs/build/doctrees/environment.pickle b/ESP-IDF_Robot/tutorial/docs/build/doctrees/environment.pickle index 91b9fafd20ee8b9a9480a92e847eccb5d1c16ca5..8c63e4d795fe6aaf171ae141c52309e610a4ef4f 100644 GIT binary patch delta 4976 zcmbuDYfxLq6@a+{Az@(|DNcCAxT2s2urCiI#KQ(tY72ugIJ`YBqg)9Y>5hWS0b)C{LSq<&oOdR5(Q)UOQ$g`mf27Xks76of;@T#H8V zdPaTz19CV!=$2flX!!~2@+>WoFs9c#BWLbk;L)ob7m>MQnB}l zrtG=D*=idyV_Z3+dB|?7u{LCiWWo{6zJq5Qt>7-}*Bf^B?&aHe*z7%ihd&56%ZlJa z*}&QVBt=;xGpJ=#%JPtTVRrNa*^ z^TAcI4j!s(hKfoZcN6%EdQOIk%1%~44v+BPg`*w$+;MC>rjygj3FZkDR(+}ZFdd$% zwZZP{O{$r6xMH!wOVtH1QQZLfy9}zcO4Ivo`mB&cyhdtgpt`jxy;OV`ge`g82P7ef zSHsMfO{)JAY!JF?va&y;aki8A7cuILUq%|P;}g=(fY7*wy9Hx0afMKA8P`R%3t-Mt zuZt?@Qa$JE2yA@@!Qh$Zf?H8&(a&q|o}ZmsMCEDiNtj{*HF)W4MR1pYpE4OOo^3X z!b-R^@KK|rdLskQZMVWtwiaklu~4#ksa|G+HQS20&roLw9^AGu`vdH(%S#LX{GioIzA_diCt*pwSX`8T6vM=3WH!^WG9nb#O_**U({T%;;i!~IP|(6_x% z7q!X+XSdhuqPRj<-=JQ!`Wke#)WQ30>$yw#RG$-l^GV{-zG|sZ^(v$Jzh53R+TOU) z_E3Fg%tNiYstJX8we^k|W+09^9_PU)WVg;1@#qxQGsq8U+S;ra=?&%p?HLJjKn*YR zX6_}J+aci|`+0jEOM?@N9xhK@-*3akotF##N`rh#;xdVUkoYHwFJQ(t!@b3HDV8VT z^R{*ncGl~~d3=w<-$*t*ZeF}TGc7IP5X2TtS=yW*#&TE|f1wnQD8*5wcod56y&J6U z`Ov-7$m>uuv|`Qit!Ay3X(Wus1KkCDaaSI1OGORNw|!?)35aWDX%ZV# zFAk+l%lA?lG!_xaOq*O_C>eBHW~f(VhJn%p?Vu%fGue{ruDFYT9Q(!Q#xdrM_@q)i ztrWjjir=s$b){ny|5%(|$+c)X9aZdE=0nb_dvbr^_Z{$zh9o>t`hBJWLGlO=uPcB@ zwg>POrcBB2S7E7PGMrcJjD_E9+|bf3Nv41 zD$9Mb+Vwr`(ChJyns(5cH#QufqFSmGhv8UPtQ@3~$+L6xk|_Ko&V{5NEFXo7i4aw6 zzmChQSjNYwsZ2(quvjwN_6Q!I$rkcCDO+v{%70cD6n*g+BKZT0$R#nknaH7U^Cy}a z^9d0H^bJcPCea-w>C~{TP+4{>)L4EZ!U+xk7Q0QFv^BH`u^U99s{r0Mc&p~tRDPKm zBEG5=(@OEWQv8ATAiSSk?Z_Jt|AcKyw$vaZ_WPa`!AJ{p{7wW>#SrXByYwjf_uVGG ze-&ohI{C?{l|8p_Wp~Pm+yzhHjCk6~7)y7Yq)Y2ys@_l1yoc8aKBwC+(Y;y@Cs=3E z0EJTaZpk!Ci-<||mkx<5PKEdYMOV#=5vL{YhOTL-vw?C%>A?6Ik?_mRPZL+ z2yz*Hrc2pU>=NI?rY`Yqs2Q-_^DcXyVR8;n`Ca0B`227<%kFf0yd#p!C*$UK0e(4f zpONxqSPq54Dlx!tvyTmyaI;_@EH%xd79Ip{D8&r++>L+Pq|@IzH1I5p4c@cRDV*sQ z94;?IgtenCpT~!P4#}ck3%?umtTSlS($HM-4lKp>TG%{fx@#joyDeh;E631qwVt|> za9a+`Vjk7<7i**@D!TZtm}({3=_^C$RaP5SI!N@8Xe7~0!b+lxL@SCZM_4oBJ>a3U Uj##Cg{%U`K<7TG!4>xiD2eXBuA^-pY delta 3487 zcmbtWZA?>F80OwmS}ZuMj`Gz-CJb6A^4+2!_yJZ>hRddcmU@A!?FqEl7N=$gOw??y zGW5M}ZsN=~GgM>@iP2@lkAy^LW~Qv3+u8{x6Jc&@?P=&a`&VYyl(53O@L8~Z!eozoV{?GBI2DR`C5F6Vj|@5bx# zPy@dS54rey-oBA{;jR-m8}0ntf>-5naSnHr-Qyt>p$(jegLjfjm>w8Nij6IK z7`)*kafZw75q1b~2&fAlB_%N3Ff}=WIRa_Ph1JLLvKDWYwZU2M;F@@=$7yZmJT_sg zkcxT;&q)Fz<7v|CBJeGNZUScr93gO?z%c@Y1djKgOLocf{qlDyYEw4 ziL7rJ4~x6)Qs}Ain+!)=hn_-h`m4}1JC_EH#{U8QQrOX&&VvCLoD?`80HUKy;(N@E8xVO~C*&5C2s(5}v` zX1}4`)!EU^X?T<#!wg{5z$-=Z%thSOLR)$oJ3?4if;A_cxd~I|EKuJg+Y}RcOtleT zjVu)nz=lPcETXQj<;F7_=*_E!1GyU2O`p$r-q8r1~7e`_cAjF zGa(6!F_0zqxh#8)GZ>2~$6<_;5Y+?{t$Z#K@TNqjO=P-f(n^@N1~P3SrX(FvPw*$z zgfEzKm~sWA^WnTiRx5{g90gyjRr!^~!Iff@%Fm+_?P&R!(qXWc7-4nxR0UN&gl&`B zKYwL{%|=Qx*kyFHw)uL=X655HTTJZdknLHZVVfx#yKuUMtZ5t>8mIgUQK~BOMRJ1J z5q{;p;t@uY1vvSnCQO)oE!VmmulbH0+sSCX-=iz?oow#dco1X|=Cvbzn zEdqDocG)H792A<3@blss3hK+l@x|GoH&0^@;TcopBfJ!gcp?=cxdEg)DZ_AeDuaq8 zu`+a84nHi5feN!O;w;%jtP5-y6q${x5#PYSQtGEt>cC5i>zg4bEF{ET$DtDZDUg!> zA#N=K+E1HLXwylXPa&}?ee7c}WMa>j7xvsXH(6;AJ$#2PiIZP3)9_}HN(^v!MMCRB z>_v}Zc`$m!fLhQ}+@f+HMP<+wFv}ccs0hXls7h+8ZTet-Ry=+xU(bm(Ucf^%$oI!7d^Url zI$HTIRW`Axg7P>+&m=^3mZwNW9Sd4iSD+}#-EFH#H(Z{CqQ5F~B#JHttElxtFdkxt zM(_J~zT6B>mg1Bwq;)jE^kDp#_?h{gSjOSW$Y>=|U>&0}=%x8zGIj(dBZAb)(Gxud zXR3>)Fo@LJ3KsQ%yr%qFFN3`%K}Q}A{Ld=BKON!=;O@88WBrRSRxkb7h*knm!a^RpPRhfg`whE{QE?YEs=)NTdV`QzCbt)je z*8Y+U&tnzHgIm<1fWx&jqg!#`mW#$u-Kw=@Imt2tw%nZp+Dxo1V-|5k)ECcfC)N%{ zzs-7{%|Aelj|dzh&`sbA0{sNK2=rp;sPifs8rRtydAES}DEh5+ZiY$gAF3~6{sZ^| B5nliR diff --git a/ESP-IDF_Robot/tutorial/docs/build/doctrees/receiver.doctree b/ESP-IDF_Robot/tutorial/docs/build/doctrees/receiver.doctree index ee95db3a80ce87c1ac2287e539916b0685540013..cb09e39a9090636481133aec0571bf5366c2d417 100644 GIT binary patch literal 5991 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 Vh8qp_jV`)6{1uTxC-`)*@gFAZW~u-H delta 69 zcmaE^*DcK2z&f>ob0TZf#tcCC8{A-yQ<2HX5yvMANVVI#;+{2ldn44NsS&&*h YrFKe&VP|oM0+80r;4a=QDi*{D08V%qPXGV_ diff --git a/ESP-IDF_Robot/tutorial/docs/build/doctrees/transmitter.doctree b/ESP-IDF_Robot/tutorial/docs/build/doctrees/transmitter.doctree index cdd55e52ecfa3af39db205d64ca4af96578f31eb..8f7a08de9605d7abe986ce4fb07c3c352fe6ffbd 100644 GIT binary patch delta 1453 zcmcgsO>fgc5N%QnNl<}HF9oVqLCAs9-Z&Ihh!%%dg``TL^ir)h&N{Qyv8`P@p`nqB z5Qj*<)kypU&M1iA!<|3Dt`nzC=?O$v8p%5!Z)Vm{@5}6Wq#bFWi#NV$N7)xpD1L~0 zu?`wshAVsW<9h0dW?mBJpi=2K2=T(@0wKR%Ar2D_KCQ&V@CW7?0mhAFZPCtmA4m1GA9MReTj0wQX!v zt5_o7as`*FhJm-AJ~wLU@DQDsW4ysTMzywCDdSS*b@^Gkm%<%^RjPP>BQ(~x^i%!i za)RnbBo|Pr>Ll=|Qql!gte0e+22Ai&$q1ptEH<&#TlYZt%-qMMVPY1JUQ2=boH(Mz zgpll+C=s%Pwy;ebV|Q;vuYcu4m{92qDK3x`Av%W?7s!cFJ-j-9{KFGY{!dPXL!M2N z;;%U|6c?C-T~Q}6uXGAY5n7OTSK2*k`d%F6-?i)&;SrO@VU+VY6_mGW9BG!zrLQ05 zY~nNn(v-f88AsQEHNlqVW5Sz4>R$l&VP~XT1=%lAv7k=JJ);>VDG#kw3`sh~Fo4p) zaU(mQ$qhbce`GUX2P@jo=|^4Yz#2RO4sHjUoxfYh}ES7qWN LxL^#7d@b`E+GN<~ delta 75 zcmdm@Fhi8Jfpuyx*GAR`rp;m;TbLNjH=pKuz^v_+;hy1?VPD$AnU|QGT2fh%T0Et8 dibjT4XNFT}X@&xb?ViD%VV|M1`5|90BLMCo8uI`E diff --git a/ESP-IDF_Robot/tutorial/docs/build/html/_sources/receiver.rst.txt b/ESP-IDF_Robot/tutorial/docs/build/html/_sources/receiver.rst.txt index ae5da737f..52e0c1b36 100644 --- a/ESP-IDF_Robot/tutorial/docs/build/html/_sources/receiver.rst.txt +++ b/ESP-IDF_Robot/tutorial/docs/build/html/_sources/receiver.rst.txt @@ -1,2 +1,52 @@ RECEIVER -======== \ No newline at end of file +======== + +Configuration Variables +----------------------- + +.. code-block:: c + + uint8_t transmitter_mac[ESP_NOW_ETH_ALEN] = {0x9C, 0x9E, 0x6E, 0x14, 0xB5, 0x54}; + +Receiving Data +-------------- + +.. code-block:: c + + void onDataReceived (const uint8_t *mac_addr, const uint8_t *data, uint8_t data_len) { + ESP_LOGI(TAG, "Data received from: %02x:%02x:%02x:%02x:%02x:%02x, len=%d", mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5], data_len); + memcpy(&buf, data, sizeof(buf)); + } + +Main Function +------------- + +.. code-block:: c + + #include + #include "freertos/FreeRTOS.h" + #include "nvs_flash.h" + #include "esp_err.h" + + void app_main(void) { + // Initialize NVS + esp_err_t ret = nvs_flash_init(); + if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { + ESP_ERROR_CHECK( nvs_flash_erase() ); + ret = nvs_flash_init(); + } + ESP_ERROR_CHECK( ret ); + wifi_init(); + ESP_ERROR_CHECK(esp_now_init()); + + esp_now_peer_info_t transmitterInfo = {0}; + memcpy(transmitterInfo.peer_addr, transmitter_mac, ESP_NOW_ETH_ALEN); + transmitterInfo.channel = 0; // Current WiFi channel + transmitterInfo.ifidx = ESP_IF_WIFI_STA; + transmitterInfo.encrypt = false; + ESP_ERROR_CHECK(esp_now_add_peer(&transmitterInfo)); + + ESP_ERROR_CHECK(esp_now_register_recv_cb((void*)onDataReceived)); + + system_led_init(); + } \ No newline at end of file diff --git a/ESP-IDF_Robot/tutorial/docs/build/html/_sources/transmitter.rst.txt b/ESP-IDF_Robot/tutorial/docs/build/html/_sources/transmitter.rst.txt index f4e7fc2ac..c27bb7622 100644 --- a/ESP-IDF_Robot/tutorial/docs/build/html/_sources/transmitter.rst.txt +++ b/ESP-IDF_Robot/tutorial/docs/build/html/_sources/transmitter.rst.txt @@ -2,4 +2,30 @@ TRANSMITTER =========== Data Encapsulation ------------------- \ No newline at end of file +------------------ + +Main Function +------------- + +.. code-block:: c + + #include "freertos/FreeRTOS.h" + #include "nvs_flash.h" + #include "esp_err.h" + + void app_main(void) { + // Initialize internal temperature sensor + chip_sensor_init(); + + // Initialize NVS + esp_err_t ret = nvs_flash_init(); + if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { + ESP_ERROR_CHECK( nvs_flash_erase() ); + ret = nvs_flash_init(); + } + ESP_ERROR_CHECK( ret ); + wifi_init(); + joystick_adc_init(); + transmission_init(); + system_led_init(); + } \ No newline at end of file diff --git a/ESP-IDF_Robot/tutorial/docs/build/html/index.html b/ESP-IDF_Robot/tutorial/docs/build/html/index.html index 053c56bcb..fe5357463 100644 --- a/ESP-IDF_Robot/tutorial/docs/build/html/index.html +++ b/ESP-IDF_Robot/tutorial/docs/build/html/index.html @@ -50,9 +50,15 @@
  • TRANSMITTER +
  • +
  • RECEIVER
  • -
  • RECEIVER
  • WORK-IN-PROGRESS WALK THROUGH
  • RECEIVER +
  • @@ -753,6 +775,39 @@ This enables fine-grained speed control, supports differential drive configurati +
    +

    + Main Function + + ¶ + +

    +
    +
    +
    #include "freertos/FreeRTOS.h"
    +#include "nvs_flash.h"
    +#include "esp_err.h"
    +
    +void app_main(void) {
    +    // Initialize internal temperature sensor
    +    chip_sensor_init();
    +
    +    // Initialize NVS
    +    esp_err_t ret = nvs_flash_init();
    +    if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
    +        ESP_ERROR_CHECK( nvs_flash_erase() );
    +        ret = nvs_flash_init();
    +    }
    +    ESP_ERROR_CHECK( ret );
    +    wifi_init();
    +    joystick_adc_init();
    +    transmission_init();
    +    system_led_init();
    +}
    +
    +
    +
    +
    @@ -763,6 +818,77 @@ This enables fine-grained speed control, supports differential drive configurati ¶ +
    +

    + Configuration Variables + + ¶ + +

    +
    +
    +
    uint8_t transmitter_mac[ESP_NOW_ETH_ALEN] = {0x9C, 0x9E, 0x6E, 0x14, 0xB5, 0x54};
    +
    +
    +
    +
    +
    +

    + Receiving Data + + ¶ + +

    +
    +
    +
    void onDataReceived (const uint8_t *mac_addr, const uint8_t *data, uint8_t data_len) {
    +    ESP_LOGI(TAG, "Data received from: %02x:%02x:%02x:%02x:%02x:%02x, len=%d", mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5], data_len);
    +    memcpy(&buf, data, sizeof(buf));
    +}
    +
    +
    +
    +
    +
    +

    + Main Function + + ¶ + +

    +
    +
    +
    #include <string.h>
    +#include "freertos/FreeRTOS.h"
    +#include "nvs_flash.h"
    +#include "esp_err.h"
    +
    +void app_main(void) {
    +    // Initialize NVS
    +    esp_err_t ret = nvs_flash_init();
    +    if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
    +        ESP_ERROR_CHECK( nvs_flash_erase() );
    +        ret = nvs_flash_init();
    +    }
    +    ESP_ERROR_CHECK( ret );
    +    wifi_init();
    +    ESP_ERROR_CHECK(esp_now_init());
    +
    +    esp_now_peer_info_t transmitterInfo = {0};
    +    memcpy(transmitterInfo.peer_addr, transmitter_mac, ESP_NOW_ETH_ALEN);
    +    transmitterInfo.channel = 0; // Current WiFi channel
    +    transmitterInfo.ifidx = ESP_IF_WIFI_STA;
    +    transmitterInfo.encrypt = false;
    +    ESP_ERROR_CHECK(esp_now_add_peer(&transmitterInfo));
    +
    +    ESP_ERROR_CHECK(esp_now_register_recv_cb((void*)onDataReceived));
    +
    +    system_led_init();
    +}
    +
    +
    +
    +
    diff --git a/ESP-IDF_Robot/tutorial/docs/source/receiver.rst b/ESP-IDF_Robot/tutorial/docs/source/receiver.rst index ae5da737f..52e0c1b36 100644 --- a/ESP-IDF_Robot/tutorial/docs/source/receiver.rst +++ b/ESP-IDF_Robot/tutorial/docs/source/receiver.rst @@ -1,2 +1,52 @@ RECEIVER -======== \ No newline at end of file +======== + +Configuration Variables +----------------------- + +.. code-block:: c + + uint8_t transmitter_mac[ESP_NOW_ETH_ALEN] = {0x9C, 0x9E, 0x6E, 0x14, 0xB5, 0x54}; + +Receiving Data +-------------- + +.. code-block:: c + + void onDataReceived (const uint8_t *mac_addr, const uint8_t *data, uint8_t data_len) { + ESP_LOGI(TAG, "Data received from: %02x:%02x:%02x:%02x:%02x:%02x, len=%d", mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5], data_len); + memcpy(&buf, data, sizeof(buf)); + } + +Main Function +------------- + +.. code-block:: c + + #include + #include "freertos/FreeRTOS.h" + #include "nvs_flash.h" + #include "esp_err.h" + + void app_main(void) { + // Initialize NVS + esp_err_t ret = nvs_flash_init(); + if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { + ESP_ERROR_CHECK( nvs_flash_erase() ); + ret = nvs_flash_init(); + } + ESP_ERROR_CHECK( ret ); + wifi_init(); + ESP_ERROR_CHECK(esp_now_init()); + + esp_now_peer_info_t transmitterInfo = {0}; + memcpy(transmitterInfo.peer_addr, transmitter_mac, ESP_NOW_ETH_ALEN); + transmitterInfo.channel = 0; // Current WiFi channel + transmitterInfo.ifidx = ESP_IF_WIFI_STA; + transmitterInfo.encrypt = false; + ESP_ERROR_CHECK(esp_now_add_peer(&transmitterInfo)); + + ESP_ERROR_CHECK(esp_now_register_recv_cb((void*)onDataReceived)); + + system_led_init(); + } \ No newline at end of file diff --git a/ESP-IDF_Robot/tutorial/docs/source/transmitter.rst b/ESP-IDF_Robot/tutorial/docs/source/transmitter.rst index f4e7fc2ac..c27bb7622 100644 --- a/ESP-IDF_Robot/tutorial/docs/source/transmitter.rst +++ b/ESP-IDF_Robot/tutorial/docs/source/transmitter.rst @@ -2,4 +2,30 @@ TRANSMITTER =========== Data Encapsulation ------------------- \ No newline at end of file +------------------ + +Main Function +------------- + +.. code-block:: c + + #include "freertos/FreeRTOS.h" + #include "nvs_flash.h" + #include "esp_err.h" + + void app_main(void) { + // Initialize internal temperature sensor + chip_sensor_init(); + + // Initialize NVS + esp_err_t ret = nvs_flash_init(); + if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { + ESP_ERROR_CHECK( nvs_flash_erase() ); + ret = nvs_flash_init(); + } + ESP_ERROR_CHECK( ret ); + wifi_init(); + joystick_adc_init(); + transmission_init(); + system_led_init(); + } \ No newline at end of file