From faf65b795646249f07888cf57e3c5a89e8e2037f Mon Sep 17 00:00:00 2001 From: Alexandre Bobkov Date: Sun, 6 Jul 2025 11:47:57 -0400 Subject: [PATCH] grammar --- .../docs/build/doctrees/environment.pickle | Bin 28376 -> 28440 bytes .../docs/build/doctrees/intro.doctree | Bin 8241 -> 8185 bytes .../docs/build/html/_sources/intro.rst.txt | 6 +++--- .../tutorial/docs/build/html/intro.html | 6 +++--- .../tutorial/docs/build/html/searchindex.js | 2 +- .../tutorial/docs/build/simplepdf/.buildinfo | 2 +- .../tutorial/docs/build/simplepdf/index.html | 6 +++--- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ESP-IDF_Robot/tutorial/docs/build/doctrees/environment.pickle b/ESP-IDF_Robot/tutorial/docs/build/doctrees/environment.pickle index cd2f46cc976676574e1f30890320562b51c2042a..a54f1f4c86b337620d1bbd5fa666dbca35ba75b8 100644 GIT binary patch literal 28440 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 literal 28376 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 diff --git a/ESP-IDF_Robot/tutorial/docs/build/html/_sources/intro.rst.txt b/ESP-IDF_Robot/tutorial/docs/build/html/_sources/intro.rst.txt index e4f20c148..7851315a3 100644 --- a/ESP-IDF_Robot/tutorial/docs/build/html/_sources/intro.rst.txt +++ b/ESP-IDF_Robot/tutorial/docs/build/html/_sources/intro.rst.txt @@ -5,8 +5,8 @@ At the heart of this project is a customizable remote-controlled car that respon directional changes, and even extended features like lights or sensors. The foundational setup uses ESP-NOW for transmitter and receiver devices, allowing you to wirelessly guide the car's behaviour. While the design and physical appearance of the RC car can vary wildly depending on your creativity and available hardware, the control system remains elegantly efficient. To facilitate wireless communication between devices, the system employs -ESP-NOW is a lightweight and connection-free protocol ideal for fast, low-latency data transmission between ESP32 microcontrollers. Though ESP-NOW is used under -the hood, the spotlight remains on the RC car itself: how it moves, adapts, and evolves with your ideas. +ESP-NOW , which is a lightweight and connection-free protocol ideal for fast, low-latency data transmission between ESP32 microcontrollers. Though ESP-NOW is used under +the hood, the spotlight remains on the RC car itself. An ESP-NOW-based remote controller sends control data wirelessly using the ESP-NOW protocol to the remote-controlled car. ESP-NOW enables fast and efficient communication between ESP32 devices without the need for a Wi-Fi router, network, or pairing. The provided tutorial demonstrates a functional @@ -17,7 +17,7 @@ modular design gives users the freedom to customize both the appearance and beha ABSTRACT -------- -To enable real-time remote operation of the RC car, the system translates joystick inputs into PWM (Pulse Width Modulation) signals that control the DC motors. +To enable real-time remote operation of the RC car, the system translates joystick x- and y- axis inputs into PWM (Pulse Width Modulation) signals that control the DC motors. These PWM values are stored in a predefined data structure, which is then transmitted wirelessly using ESP-NOW — a low-latency, connectionless communication protocol developed by Espressif. Both the transmitter and receiver modules are based on ESP32-C3 microcontrollers. diff --git a/ESP-IDF_Robot/tutorial/docs/build/html/intro.html b/ESP-IDF_Robot/tutorial/docs/build/html/intro.html index 26ce3c829..3847a1542 100644 --- a/ESP-IDF_Robot/tutorial/docs/build/html/intro.html +++ b/ESP-IDF_Robot/tutorial/docs/build/html/intro.html @@ -39,8 +39,8 @@ directional changes, and even extended features like lights or sensors. The foundational setup uses ESP-NOW for transmitter and receiver devices, allowing you to wirelessly guide the car’s behaviour. While the design and physical appearance of the RC car can vary wildly depending on your creativity and available hardware, the control system remains elegantly efficient. To facilitate wireless communication between devices, the system employs -ESP-NOW is a lightweight and connection-free protocol ideal for fast, low-latency data transmission between ESP32 microcontrollers. Though ESP-NOW is used under -the hood, the spotlight remains on the RC car itself: how it moves, adapts, and evolves with your ideas.

+ESP-NOW , which is a lightweight and connection-free protocol ideal for fast, low-latency data transmission between ESP32 microcontrollers. Though ESP-NOW is used under +the hood, the spotlight remains on the RC car itself.

An ESP-NOW-based remote controller sends control data wirelessly using the ESP-NOW protocol to the remote-controlled car. ESP-NOW enables fast and efficient communication between ESP32 devices without the need for a Wi-Fi router, network, or pairing. The provided tutorial demonstrates a functional setup where a transmitter sends data to a receiver to define the car’s speed and direction, forming the core communication loop. While the baseline @@ -48,7 +48,7 @@ implementation focuses on movement, additional features like lights, sensors, or modular design gives users the freedom to customize both the appearance and behaviour of their RC car, resulting in endless creative possibilities.

ABSTRACT

-

To enable real-time remote operation of the RC car, the system translates joystick inputs into PWM (Pulse Width Modulation) signals that control the DC motors. +

To enable real-time remote operation of the RC car, the system translates joystick x- and y- axis inputs into PWM (Pulse Width Modulation) signals that control the DC motors. These PWM values are stored in a predefined data structure, which is then transmitted wirelessly using ESP-NOW — a low-latency, connectionless communication protocol developed by Espressif. Both the transmitter and receiver modules are based on ESP32-C3 microcontrollers.

On the transmitter side, the joystick’s X and Y coordinates are continuously monitored and converted into PWM parameters. These values are packed into the diff --git a/ESP-IDF_Robot/tutorial/docs/build/html/searchindex.js b/ESP-IDF_Robot/tutorial/docs/build/html/searchindex.js index e6d76aaf1..d4ffd1738 100644 --- a/ESP-IDF_Robot/tutorial/docs/build/html/searchindex.js +++ b/ESP-IDF_Robot/tutorial/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles":{"ABSTRACT":[[2,"abstract"]],"ByteRider documentation":[[1,null]],"Chassis":[[4,"chassis"]],"Configuration Variables":[[5,"configuration-variables"],[7,"configuration-variables"]],"DATA STRUCTS":[[0,null]],"Data Payload":[[0,"data-payload"]],"Direction and Speed":[[3,"direction-and-speed"]],"Finished Work":[[4,"finished-work"]],"Fusion of Software with Hardware":[[3,"fusion-of-software-with-hardware"]],"GitHub":[[6,"github"]],"HOW DOES IT WORK?":[[3,null]],"Main Function":[[5,"main-function"],[7,"main-function"]],"Motor Wires Harness":[[4,"motor-wires-harness"]],"OVERVIEW":[[2,null]],"RECEIVER":[[5,null]],"REFERENCES":[[6,null]],"Reading Joystick x- and y- Axis Values":[[7,"reading-joystick-x-and-y-axis-values"]],"Receiving & Extracting Data":[[5,"receiving-extracting-data"]],"Reserved Pins & GPIOs":[[3,"reserved-pins-gpios"]],"Schematic":[[3,"schematic"]],"Sending & Ecapsulating Data":[[7,"sending-ecapsulating-data"]],"TRANSMITTER":[[7,null]],"WORK-IN-PROGRESS WALK THROUGH":[[4,null]],"What is PWM?":[[3,null]],"Why use __attribute((packed))?":[[0,"why-use-attribute-packed"]],"Wiring":[[4,"wiring"]],"x- and y- axis":[[3,"x-and-y-axis"]]},"docnames":["data","index","intro","overview","progress","receiver","references","transmitter"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["data.rst","index.rst","intro.rst","overview.rst","progress.rst","receiver.rst","references.rst","transmitter.rst"],"indexentries":{},"objects":{},"objnames":{},"objtypes":{},"terms":{"":[0,2],"0":[3,5],"02x":5,"04x":3,"0x":3,"0x14":5,"0x17":7,"0x44":7,"0x54":5,"0x63":7,"0x6e":5,"0x9c":5,"0x9e":[5,7],"0xb0":7,"0xb5":5,"0xe4":7,"1":[3,5],"100":3,"15":3,"16":3,"2":[3,5],"250":0,"3":[3,5],"4":[0,3,5],"47":3,"48":3,"5":[3,5],"50":[],"6":3,"7":3,"8":3,"90":3,"91":3,"95":[],"A":3,"As":0,"At":2,"IN":1,"IT":1,"If":3,"In":[0,3],"It":[0,3],"NOT":3,"ON":[0,5,7],"On":2,"The":[0,2,3],"These":2,"To":2,"__attribut":[],"__attribute__":[0,5,7],"__gpio6__":[],"_gitbub":[],"_static":[],"abstract":1,"across":0,"ad":0,"adapt":[2,3,6],"adc1_ch0":3,"adc1_ch1":3,"add":0,"addit":[0,2],"address":[3,7],"adjust":2,"alexandrebobkov":[3,6],"align":0,"all":0,"alloc":3,"allow":[0,2,3],"an":[0,2],"analog":[0,3],"ani":[0,2,3],"app_main":[5,7],"appear":2,"appli":2,"ar":[2,3],"architectur":[],"arg":3,"assign":3,"attribut":0,"avail":[2,3],"axi":1,"back":3,"bacl":3,"bandwidth":0,"base":[2,3],"baselin":2,"batteri":0,"behavior":[],"behaviour":2,"being":3,"below":3,"between":[0,2,3],"bitbyterid":3,"blob":6,"board":3,"bool":[0,5,7],"both":2,"breadboard":3,"brief":3,"buf":[3,5],"buffer":[3,7],"button":[0,3,5,7],"byte":0,"c3":[2,3],"c3_breadboard":[3,6],"call":[3,7],"can":[2,3],"capabl":2,"captur":0,"car":[2,3],"chang":[2,3],"channel":[3,5],"chassi":1,"chip_sensor_init":7,"clockwis":3,"code":[2,3,6],"column":[],"com":[3,6],"command":0,"commun":[0,2],"compact":0,"compat":0,"compil":0,"complet":[4,6],"configur":[0,1],"connect":2,"connectionless":2,"consequ":3,"consist":[],"const":5,"constraint":3,"contain":0,"content":[],"contin":3,"continu":2,"control":[0,2,3,4],"convert":2,"coordin":2,"core":2,"correspond":3,"counter":3,"counterclockwis":3,"crc":3,"creativ":2,"current":5,"custom":2,"customiz":2,"cycl":3,"d":5,"data":[1,2,3],"data_len":[3,5],"dc":[0,2,3,4,5,7],"ddiscret":[],"de":[],"declar":3,"decod":0,"decreas":3,"dedic":3,"defin":[2,3],"deletep":3,"deliv":3,"demonstr":2,"depend":2,"descript":3,"design":[0,2,6],"detail":[],"determin":[0,3],"devboard":3,"develop":[2,3],"developmemt":3,"devic":[0,2,3],"diagon":3,"differenti":0,"digit":3,"direct":[0,2],"directli":2,"discret":3,"displai":3,"doe":1,"drive":0,"duti":3,"e":[0,3],"each":[3,7],"easili":2,"ecapsul":1,"effect":3,"effici":2,"elegantli":2,"els":3,"embed":0,"emploi":2,"enabl":[0,2],"encapsul":0,"encod":0,"encrypt":5,"end":0,"endless":2,"ensur":0,"error":3,"esp":[0,2,3,6,7],"esp32":[2,3,6],"esp_err":[5,7],"esp_err_nvs_new_version_found":[5,7],"esp_err_nvs_no_free_pag":[5,7],"esp_err_t":[5,7],"esp_error_check":[5,7],"esp_if_wifi_sta":5,"esp_log":3,"esp_logi":[3,5],"esp_logw":3,"esp_now_add_p":5,"esp_now_eth_alen":[5,7],"esp_now_init":5,"esp_now_is_peer_exist":3,"esp_now_peer_info_t":5,"esp_now_register_recv_cb":5,"esp_now_send":[3,7],"esp_now_send_status_t":3,"espressif":2,"etc":0,"even":[0,2],"event":3,"everi":3,"evok":3,"evolv":2,"exact":0,"exchang":[],"exist":[],"expand":2,"expect":0,"extend":2,"extract":[1,2],"facilit":2,"fals":5,"fast":2,"featur":2,"fi":2,"field":0,"file":6,"final":0,"fine":[0,3],"finish":1,"fix":[0,3],"flow":2,"focus":2,"follow":3,"form":2,"forward":3,"foundat":2,"four":[0,3],"free":2,"freedom":2,"freerto":[5,7],"frequenc":3,"from":[0,5],"front":3,"function":[1,2,3],"fusion":1,"g":0,"get":3,"github":[1,3],"github_":[],"give":2,"gpio":1,"gpio0":3,"gpio1":3,"gpio4":3,"gpio5":3,"gpio6":3,"gpio7":3,"grain":[0,3],"group":3,"guid":2,"h":[5,7],"handl":2,"har":1,"hardwar":[0,1,2],"harn":4,"heart":2,"hexadecim":3,"high":3,"higher":3,"hold":[3,7],"hood":2,"how":[1,2],"http":[3,6],"i":[0,2],"idea":2,"ideal":[0,2],"idf_robot":6,"idf_robot_schemat":[],"ifidx":5,"igit":[],"illustr":3,"imag":3,"implement":2,"includ":[5,7],"incom":2,"increas":3,"indic":0,"individu":0,"initi":[5,7],"input":[0,2],"insid":4,"instal":4,"instantli":2,"int":[0,3,5,7],"integr":2,"intend":0,"intern":7,"interpret":0,"interv":0,"introduct":[],"itself":2,"joystick":[0,1,2,3,5],"joystick_adc_init":7,"khz":3,"kicad":[3,6],"lastli":3,"latenc":[0,2],"layout":0,"led":[0,5,7],"ledc_channel_0":3,"ledc_channel_1":3,"ledc_channel_2":3,"ledc_channel_3":3,"left":3,"len":5,"length":[3,7],"level":3,"li":[],"light":2,"lightweight":2,"like":[0,2],"listen":2,"loop":2,"low":[0,2,3],"lower":3,"mac":[3,7],"mac_addr":[3,5],"mai":0,"main":[1,6],"maintain":[],"make":0,"manag":2,"maneuv":0,"master":0,"maxim":0,"md":6,"mean":3,"measur":3,"memcpi":5,"memori":[0,3,7],"messag":3,"microcontrol":[0,2,3],"minim":0,"modul":[2,3],"modular":2,"monitor":2,"motor":[0,1,2,3,5,7],"motor1_rpm_pcm":[],"motor1_rpm_pwm":[0,3,5,7],"motor2_rpm_pcm":[],"motor2_rpm_pwm":[0,3,5,7],"motor3_rpm_pcm":[],"motor3_rpm_pwm":[0,3,5,7],"motor4_rpm_pcm":[],"motor4_rpm_pwm":[0,3,5,7],"motors_rpm":[0,3,5],"move":[2,3],"movement":[2,3],"multi":0,"nav_btn":7,"nav_bttn":[0,3,5],"need":[2,3],"network":2,"node":6,"nor":[],"note":3,"now":[0,2,3,7],"num":[],"number":3,"nv":[5,7],"nvs_flash":[5,7],"nvs_flash_eras":[5,7],"nvs_flash_init":[5,7],"off":[0,3,5,7],"often":3,"ok":3,"omni":0,"onboard":0,"ondatareceiv":[3,5],"ondatas":3,"one":3,"onli":[3,4],"oper":[0,2,3],"oscilloscop":3,"other":3,"over":0,"overview":1,"pack":[2,5,7],"packet":[0,2,3],"pad":0,"pair":[0,2,3],"paramet":2,"particular":3,"payload":1,"pcb":[3,6],"peer_addr":5,"per":3,"percentag":3,"period":3,"physic":2,"pin":1,"platform":0,"png":[],"pointer":[3,7],"porttick_period_m":3,"posit":[0,3,5,7],"possibl":[2,3],"power":3,"precis":0,"predefin":2,"predict":0,"progress":1,"project":2,"protocol":[0,2],"provid":[0,2,3],"puls":[2,3],"purpos":3,"push":[0,3,5,7],"pwm":[0,2,5,7],"rapidli":3,"rc":[2,3],"rc_send_data_task":3,"read":1,"readm":6,"real":2,"receiv":[0,1,2,3,7],"receiver_mac":[3,7],"record":[],"refer":1,"regist":3,"regul":3,"regular":0,"relev":0,"remain":2,"remot":[0,2,3],"remov":0,"repres":0,"requir":[],"reserv":1,"resp":3,"respond":2,"respons":[0,3],"restructuredtext":[],"result":[2,3,7],"ret":[5,7],"revers":3,"right":3,"robot":0,"rotat":3,"router":2,"row":[],"run":3,"same":[],"schemat":[1,6],"seamless":[],"second":3,"secur":4,"see":[],"send":[0,1,2,3],"senddata":[3,7],"sensor":[0,2,7],"sensors_data_t":[0,3,5,7],"sent":[0,2,3],"serial":0,"serv":0,"setup":2,"share":[],"side":[2,3],"sidewai":3,"signal":[0,2,3],"similarli":3,"simul":3,"size":0,"sizeof":[3,5,7],"softwar":1,"sourc":[2,6],"specif":[],"speed":[0,2],"spin":3,"spotlight":2,"stand":3,"state":[0,3,5,7],"static":3,"statu":[0,3],"store":[2,3],"stream":0,"string":5,"struct":[1,3,5,7],"structur":2,"suffici":3,"summar":3,"summari":3,"support":0,"switch":3,"synchron":[],"syntax":[],"system":[0,2],"system_led_init":[5,7],"tabl":3,"tag":[3,5],"task":3,"techniqu":3,"telemetri":[0,2],"tell":0,"temperatur":7,"thi":[0,2,3],"those":3,"though":2,"through":1,"time":[2,3],"toggl":0,"translat":2,"transmiss":[0,2],"transmission_init":7,"transmit":[0,2,3],"transmitt":[0,1,2],"transmitter_mac":5,"transmitterinfo":5,"true":3,"turn":3,"tutori":2,"two":3,"typedef":[0,5,7],"uart":0,"uint8_t":[0,3,5,7],"under":2,"understand":[],"up":0,"updat":3,"us":[2,3],"user":[0,2],"valu":[1,2,3],"vari":2,"variabl":1,"variou":3,"vehicl":0,"via":2,"void":[3,5,7],"voltag":3,"vtaskdelai":3,"wa":3,"walk":1,"walkthrough":[],"warn":0,"well":[],"what":[],"wheel":0,"when":[0,3],"where":2,"which":2,"while":[2,3],"why":[],"wi":2,"width":[2,3],"wifi":5,"wifi_init":[5,7],"wildli":2,"wire":[1,3],"wireless":2,"wirelessli":2,"without":[2,3],"work":1,"wroom":3,"x":[0,1,2,5],"x_axi":[0,3,5,7],"y":[0,1,2,5],"y_axi":[0,3,5,7],"you":[0,2],"your":2},"titles":["DATA STRUCTS","ByteRider documentation","OVERVIEW","HOW DOES IT WORK?","WORK-IN-PROGRESS WALK THROUGH","RECEIVER","REFERENCES","TRANSMITTER"],"titleterms":{"IN":4,"IT":3,"__attribut":0,"abstract":2,"axi":[3,7],"byterid":1,"chassi":4,"configur":[5,7],"data":[0,5,7],"de":[],"direct":3,"document":1,"doe":3,"ecapsul":7,"encapsul":[],"extract":5,"finish":4,"function":[5,7],"fusion":3,"github":6,"gpio":3,"har":4,"hardwar":3,"how":3,"i":3,"introduct":[],"joystick":7,"main":[5,7],"motor":4,"overview":2,"pack":0,"payload":0,"pin":3,"progress":4,"pwm":3,"read":7,"receiv":5,"refer":6,"reserv":3,"schemat":3,"send":7,"softwar":3,"speed":3,"struct":0,"through":4,"transmitt":7,"us":0,"valu":7,"variabl":[5,7],"walk":4,"walkthrough":[],"what":3,"why":0,"wire":4,"work":[3,4],"x":[3,7],"y":[3,7]}}) \ No newline at end of file +Search.setIndex({"alltitles":{"ABSTRACT":[[2,"abstract"]],"ByteRider documentation":[[1,null]],"Chassis":[[4,"chassis"]],"Configuration Variables":[[5,"configuration-variables"],[7,"configuration-variables"]],"DATA STRUCTS":[[0,null]],"Data Payload":[[0,"data-payload"]],"Direction and Speed":[[3,"direction-and-speed"]],"Finished Work":[[4,"finished-work"]],"Fusion of Software with Hardware":[[3,"fusion-of-software-with-hardware"]],"GitHub":[[6,"github"]],"HOW DOES IT WORK?":[[3,null]],"Main Function":[[5,"main-function"],[7,"main-function"]],"Motor Wires Harness":[[4,"motor-wires-harness"]],"OVERVIEW":[[2,null]],"RECEIVER":[[5,null]],"REFERENCES":[[6,null]],"Reading Joystick x- and y- Axis Values":[[7,"reading-joystick-x-and-y-axis-values"]],"Receiving & Extracting Data":[[5,"receiving-extracting-data"]],"Reserved Pins & GPIOs":[[3,"reserved-pins-gpios"]],"Schematic":[[3,"schematic"]],"Sending & Ecapsulating Data":[[7,"sending-ecapsulating-data"]],"TRANSMITTER":[[7,null]],"WORK-IN-PROGRESS WALK THROUGH":[[4,null]],"What is PWM?":[[3,null]],"Why use __attribute((packed))?":[[0,"why-use-attribute-packed"]],"Wiring":[[4,"wiring"]],"x- and y- axis":[[3,"x-and-y-axis"]]},"docnames":["data","index","intro","overview","progress","receiver","references","transmitter"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["data.rst","index.rst","intro.rst","overview.rst","progress.rst","receiver.rst","references.rst","transmitter.rst"],"indexentries":{},"objects":{},"objnames":{},"objtypes":{},"terms":{"":[0,2],"0":[3,5],"02x":5,"04x":3,"0x":3,"0x14":5,"0x17":7,"0x44":7,"0x54":5,"0x63":7,"0x6e":5,"0x9c":5,"0x9e":[5,7],"0xb0":7,"0xb5":5,"0xe4":7,"1":[3,5],"100":3,"15":3,"16":3,"2":[3,5],"250":0,"3":[3,5],"4":[0,3,5],"47":3,"48":3,"5":[3,5],"50":[],"6":3,"7":3,"8":3,"90":3,"91":3,"95":[],"A":3,"As":0,"At":2,"IN":1,"IT":1,"If":3,"In":[0,3],"It":[0,3],"NOT":3,"ON":[0,5,7],"On":2,"The":[0,2,3],"These":2,"To":2,"__attribut":[],"__attribute__":[0,5,7],"__gpio6__":[],"_gitbub":[],"_static":[],"abstract":1,"across":0,"ad":0,"adapt":[3,6],"adc1_ch0":3,"adc1_ch1":3,"add":0,"addit":[0,2],"address":[3,7],"adjust":2,"alexandrebobkov":[3,6],"align":0,"all":0,"alloc":3,"allow":[0,2,3],"an":[0,2],"analog":[0,3],"ani":[0,2,3],"app_main":[5,7],"appear":2,"appli":2,"ar":[2,3],"architectur":[],"arg":3,"assign":3,"attribut":0,"avail":[2,3],"axi":[1,2],"back":3,"bacl":3,"bandwidth":0,"base":[2,3],"baselin":2,"batteri":0,"behavior":[],"behaviour":2,"being":3,"below":3,"between":[0,2,3],"bitbyterid":3,"blob":6,"board":3,"bool":[0,5,7],"both":2,"breadboard":3,"brief":3,"buf":[3,5],"buffer":[3,7],"button":[0,3,5,7],"byte":0,"c3":[2,3],"c3_breadboard":[3,6],"call":[3,7],"can":[2,3],"capabl":2,"captur":0,"car":[2,3],"chang":[2,3],"channel":[3,5],"chassi":1,"chip_sensor_init":7,"clockwis":3,"code":[2,3,6],"column":[],"com":[3,6],"command":0,"commun":[0,2],"compact":0,"compat":0,"compil":0,"complet":[4,6],"configur":[0,1],"connect":2,"connectionless":2,"consequ":3,"consist":[],"const":5,"constraint":3,"contain":0,"content":[],"contin":3,"continu":2,"control":[0,2,3,4],"convert":2,"coordin":2,"core":2,"correspond":3,"counter":3,"counterclockwis":3,"crc":3,"creativ":2,"current":5,"custom":2,"customiz":2,"cycl":3,"d":5,"data":[1,2,3],"data_len":[3,5],"dc":[0,2,3,4,5,7],"ddiscret":[],"de":[],"declar":3,"decod":0,"decreas":3,"dedic":3,"defin":[2,3],"deletep":3,"deliv":3,"demonstr":2,"depend":2,"descript":3,"design":[0,2,6],"detail":[],"determin":[0,3],"devboard":3,"develop":[2,3],"developmemt":3,"devic":[0,2,3],"diagon":3,"differenti":0,"digit":3,"direct":[0,2],"directli":2,"discret":3,"displai":3,"doe":1,"drive":0,"duti":3,"e":[0,3],"each":[3,7],"easili":2,"ecapsul":1,"effect":3,"effici":2,"elegantli":2,"els":3,"embed":0,"emploi":2,"enabl":[0,2],"encapsul":0,"encod":0,"encrypt":5,"end":0,"endless":2,"ensur":0,"error":3,"esp":[0,2,3,6,7],"esp32":[2,3,6],"esp_err":[5,7],"esp_err_nvs_new_version_found":[5,7],"esp_err_nvs_no_free_pag":[5,7],"esp_err_t":[5,7],"esp_error_check":[5,7],"esp_if_wifi_sta":5,"esp_log":3,"esp_logi":[3,5],"esp_logw":3,"esp_now_add_p":5,"esp_now_eth_alen":[5,7],"esp_now_init":5,"esp_now_is_peer_exist":3,"esp_now_peer_info_t":5,"esp_now_register_recv_cb":5,"esp_now_send":[3,7],"esp_now_send_status_t":3,"espressif":2,"etc":0,"even":[0,2],"event":3,"everi":3,"evok":3,"evolv":[],"exact":0,"exchang":[],"exist":[],"expand":2,"expect":0,"extend":2,"extract":[1,2],"facilit":2,"fals":5,"fast":2,"featur":2,"fi":2,"field":0,"file":6,"final":0,"fine":[0,3],"finish":1,"fix":[0,3],"flow":2,"focus":2,"follow":3,"form":2,"forward":3,"foundat":2,"four":[0,3],"free":2,"freedom":2,"freerto":[5,7],"frequenc":3,"from":[0,5],"front":3,"function":[1,2,3],"fusion":1,"g":0,"get":3,"github":[1,3],"github_":[],"give":2,"gpio":1,"gpio0":3,"gpio1":3,"gpio4":3,"gpio5":3,"gpio6":3,"gpio7":3,"grain":[0,3],"group":3,"guid":2,"h":[5,7],"handl":2,"har":1,"hardwar":[0,1,2],"harn":4,"heart":2,"hexadecim":3,"high":3,"higher":3,"hold":[3,7],"hood":2,"how":1,"http":[3,6],"i":[0,2],"idea":[],"ideal":[0,2],"idf_robot":6,"idf_robot_schemat":[],"ifidx":5,"igit":[],"illustr":3,"imag":3,"implement":2,"includ":[5,7],"incom":2,"increas":3,"indic":0,"individu":0,"initi":[5,7],"input":[0,2],"insid":4,"instal":4,"instantli":2,"int":[0,3,5,7],"integr":2,"intend":0,"intern":7,"interpret":0,"interv":0,"introduct":[],"itself":2,"joystick":[0,1,2,3,5],"joystick_adc_init":7,"khz":3,"kicad":[3,6],"lastli":3,"latenc":[0,2],"layout":0,"led":[0,5,7],"ledc_channel_0":3,"ledc_channel_1":3,"ledc_channel_2":3,"ledc_channel_3":3,"left":3,"len":5,"length":[3,7],"level":3,"li":[],"light":2,"lightweight":2,"like":[0,2],"listen":2,"loop":2,"low":[0,2,3],"lower":3,"mac":[3,7],"mac_addr":[3,5],"mai":0,"main":[1,6],"maintain":[],"make":0,"manag":2,"maneuv":0,"master":0,"maxim":0,"md":6,"mean":3,"measur":3,"memcpi":5,"memori":[0,3,7],"messag":3,"microcontrol":[0,2,3],"minim":0,"modul":[2,3],"modular":2,"monitor":2,"motor":[0,1,2,3,5,7],"motor1_rpm_pcm":[],"motor1_rpm_pwm":[0,3,5,7],"motor2_rpm_pcm":[],"motor2_rpm_pwm":[0,3,5,7],"motor3_rpm_pcm":[],"motor3_rpm_pwm":[0,3,5,7],"motor4_rpm_pcm":[],"motor4_rpm_pwm":[0,3,5,7],"motors_rpm":[0,3,5],"move":3,"movement":[2,3],"multi":0,"nav_btn":7,"nav_bttn":[0,3,5],"need":[2,3],"network":2,"node":6,"nor":[],"note":3,"now":[0,2,3,7],"num":[],"number":3,"nv":[5,7],"nvs_flash":[5,7],"nvs_flash_eras":[5,7],"nvs_flash_init":[5,7],"off":[0,3,5,7],"often":3,"ok":3,"omni":0,"onboard":0,"ondatareceiv":[3,5],"ondatas":3,"one":3,"onli":[3,4],"oper":[0,2,3],"oscilloscop":3,"other":3,"over":0,"overview":1,"pack":[2,5,7],"packet":[0,2,3],"pad":0,"pair":[0,2,3],"paramet":2,"particular":3,"payload":1,"pcb":[3,6],"peer_addr":5,"per":3,"percentag":3,"period":3,"physic":2,"pin":1,"platform":0,"png":[],"pointer":[3,7],"porttick_period_m":3,"posit":[0,3,5,7],"possibl":[2,3],"power":3,"precis":0,"predefin":2,"predict":0,"progress":1,"project":2,"protocol":[0,2],"provid":[0,2,3],"puls":[2,3],"purpos":3,"push":[0,3,5,7],"pwm":[0,2,5,7],"rapidli":3,"rc":[2,3],"rc_send_data_task":3,"read":1,"readm":6,"real":2,"receiv":[0,1,2,3,7],"receiver_mac":[3,7],"record":[],"refer":1,"regist":3,"regul":3,"regular":0,"relev":0,"remain":2,"remot":[0,2,3],"remov":0,"repres":0,"requir":[],"reserv":1,"resp":3,"respond":2,"respons":[0,3],"restructuredtext":[],"result":[2,3,7],"ret":[5,7],"revers":3,"right":3,"robot":0,"rotat":3,"router":2,"row":[],"run":3,"same":[],"schemat":[1,6],"seamless":[],"second":3,"secur":4,"see":[],"send":[0,1,2,3],"senddata":[3,7],"sensor":[0,2,7],"sensors_data_t":[0,3,5,7],"sent":[0,2,3],"serial":0,"serv":0,"setup":2,"share":[],"side":[2,3],"sidewai":3,"signal":[0,2,3],"similarli":3,"simul":3,"size":0,"sizeof":[3,5,7],"softwar":1,"sourc":[2,6],"specif":[],"speed":[0,2],"spin":3,"spotlight":2,"stand":3,"state":[0,3,5,7],"static":3,"statu":[0,3],"store":[2,3],"stream":0,"string":5,"struct":[1,3,5,7],"structur":2,"suffici":3,"summar":3,"summari":3,"support":0,"switch":3,"synchron":[],"syntax":[],"system":[0,2],"system_led_init":[5,7],"tabl":3,"tag":[3,5],"task":3,"techniqu":3,"telemetri":[0,2],"tell":0,"temperatur":7,"thi":[0,2,3],"those":3,"though":2,"through":1,"time":[2,3],"toggl":0,"translat":2,"transmiss":[0,2],"transmission_init":7,"transmit":[0,2,3],"transmitt":[0,1,2],"transmitter_mac":5,"transmitterinfo":5,"true":3,"turn":3,"tutori":2,"two":3,"typedef":[0,5,7],"uart":0,"uint8_t":[0,3,5,7],"under":2,"understand":[],"up":0,"updat":3,"us":[2,3],"user":[0,2],"valu":[1,2,3],"vari":2,"variabl":1,"variou":3,"vehicl":0,"via":2,"void":[3,5,7],"voltag":3,"vtaskdelai":3,"wa":3,"walk":1,"walkthrough":[],"warn":0,"well":[],"what":[],"wheel":0,"when":[0,3],"where":2,"which":2,"while":[2,3],"why":[],"wi":2,"width":[2,3],"wifi":5,"wifi_init":[5,7],"wildli":2,"wire":[1,3],"wireless":2,"wirelessli":2,"without":[2,3],"work":1,"wroom":3,"x":[0,1,2,5],"x_axi":[0,3,5,7],"y":[0,1,2,5],"y_axi":[0,3,5,7],"you":[0,2],"your":2},"titles":["DATA STRUCTS","ByteRider documentation","OVERVIEW","HOW DOES IT WORK?","WORK-IN-PROGRESS WALK THROUGH","RECEIVER","REFERENCES","TRANSMITTER"],"titleterms":{"IN":4,"IT":3,"__attribut":0,"abstract":2,"axi":[3,7],"byterid":1,"chassi":4,"configur":[5,7],"data":[0,5,7],"de":[],"direct":3,"document":1,"doe":3,"ecapsul":7,"encapsul":[],"extract":5,"finish":4,"function":[5,7],"fusion":3,"github":6,"gpio":3,"har":4,"hardwar":3,"how":3,"i":3,"introduct":[],"joystick":7,"main":[5,7],"motor":4,"overview":2,"pack":0,"payload":0,"pin":3,"progress":4,"pwm":3,"read":7,"receiv":5,"refer":6,"reserv":3,"schemat":3,"send":7,"softwar":3,"speed":3,"struct":0,"through":4,"transmitt":7,"us":0,"valu":7,"variabl":[5,7],"walk":4,"walkthrough":[],"what":3,"why":0,"wire":4,"work":[3,4],"x":[3,7],"y":[3,7]}}) \ No newline at end of file diff --git a/ESP-IDF_Robot/tutorial/docs/build/simplepdf/.buildinfo b/ESP-IDF_Robot/tutorial/docs/build/simplepdf/.buildinfo index 2c47d23f1..6d09529c2 100644 --- a/ESP-IDF_Robot/tutorial/docs/build/simplepdf/.buildinfo +++ b/ESP-IDF_Robot/tutorial/docs/build/simplepdf/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 3a96f51681c2311a4d46abfb04946da0 +config: 38f06032601fa318b87e928ebbf247af tags: 62a1e7829a13fc7881b6498c52484ec0 diff --git a/ESP-IDF_Robot/tutorial/docs/build/simplepdf/index.html b/ESP-IDF_Robot/tutorial/docs/build/simplepdf/index.html index 7a1064c9e..34c35710a 100644 --- a/ESP-IDF_Robot/tutorial/docs/build/simplepdf/index.html +++ b/ESP-IDF_Robot/tutorial/docs/build/simplepdf/index.html @@ -225,8 +225,8 @@ directional changes, and even extended features like lights or sensors. The foundational setup uses ESP-NOW for transmitter and receiver devices, allowing you to wirelessly guide the car’s behaviour. While the design and physical appearance of the RC car can vary wildly depending on your creativity and available hardware, the control system remains elegantly efficient. To facilitate wireless communication between devices, the system employs -ESP-NOW is a lightweight and connection-free protocol ideal for fast, low-latency data transmission between ESP32 microcontrollers. Though ESP-NOW is used under -the hood, the spotlight remains on the RC car itself: how it moves, adapts, and evolves with your ideas. +ESP-NOW , which is a lightweight and connection-free protocol ideal for fast, low-latency data transmission between ESP32 microcontrollers. Though ESP-NOW is used under +the hood, the spotlight remains on the RC car itself.

An ESP-NOW-based remote controller sends control data wirelessly using the ESP-NOW protocol to the remote-controlled car. ESP-NOW enables fast and @@ -243,7 +243,7 @@ modular design gives users the freedom to customize both the appearance and beha

- To enable real-time remote operation of the RC car, the system translates joystick inputs into PWM (Pulse Width Modulation) signals that control the DC motors. + To enable real-time remote operation of the RC car, the system translates joystick x- and y- axis inputs into PWM (Pulse Width Modulation) signals that control the DC motors. These PWM values are stored in a predefined data structure, which is then transmitted wirelessly using ESP-NOW — a low-latency, connectionless communication protocol developed by Espressif. Both the transmitter and receiver modules are based on ESP32-C3 microcontrollers.