diff --git a/ESP-IDF_Robot/tutorial/docs/build/doctrees/environment.pickle b/ESP-IDF_Robot/tutorial/docs/build/doctrees/environment.pickle index 318c55b33..1dd3c8e89 100644 Binary files a/ESP-IDF_Robot/tutorial/docs/build/doctrees/environment.pickle and b/ESP-IDF_Robot/tutorial/docs/build/doctrees/environment.pickle differ diff --git a/ESP-IDF_Robot/tutorial/docs/build/doctrees/intro.doctree b/ESP-IDF_Robot/tutorial/docs/build/doctrees/intro.doctree index f2c3cd96b..2720dd053 100644 Binary files a/ESP-IDF_Robot/tutorial/docs/build/doctrees/intro.doctree and b/ESP-IDF_Robot/tutorial/docs/build/doctrees/intro.doctree differ 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 37113c3c6..cbdef4fbf 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 @@ -15,4 +15,18 @@ implementation focuses on movement, additional features like lights, sensors, or modular design gives users the freedom to customize both the appearance and behavior of their RC car, resulting in endless creative possibilities. ABSTRACT --------- \ No newline at end of file +-------- + +At the core of this project lies a shared data structure that encapsulates the control parameters for the DC motors, specifically their rotation speeds, +which are modulated using Pulse Width Modulation (PWM). This structure ensures consistent interpretation of control signals between the transmitter +and receiver. + +The system employs ESP-NOW, a low-latency, connectionless communication protocol developed by Espressif, to facilitate wireless data exchange between +the transmitter and receiver modules. Both devices are based on ESP32 microcontrollers and maintain a synchronized understanding of the data structure +to ensure seamless communication. + +On the transmitter side, joystick input is continuously read and translated into control values. These values are then encapsulated into the +predefined data structure and transmitted via ESP-NOW to the receiver. + +The receiver module listens for incoming ESP-NOW packets, de-encapsulates the joystick data, and converts the received values into PWM signals. +These signals are then used to control the speed and direction of the DC motors, enabling real-time remote operation of the vehicle. \ No newline at end of file diff --git a/ESP-IDF_Robot/tutorial/docs/build/html/intro.html b/ESP-IDF_Robot/tutorial/docs/build/html/intro.html index 2d657a5e7..a48241ac6 100644 --- a/ESP-IDF_Robot/tutorial/docs/build/html/intro.html +++ b/ESP-IDF_Robot/tutorial/docs/build/html/intro.html @@ -48,6 +48,16 @@ implementation focuses on movement, additional features like lights, sensors, or modular design gives users the freedom to customize both the appearance and behavior of their RC car, resulting in endless creative possibilities.

ABSTRACTΒΆ

+

At the core of this project lies a shared data structure that encapsulates the control parameters for the DC motors, specifically their rotation speeds, +which are modulated using Pulse Width Modulation (PWM). This structure ensures consistent interpretation of control signals between the transmitter +and receiver.

+

The system employs ESP-NOW, a low-latency, connectionless communication protocol developed by Espressif, to facilitate wireless data exchange between +the transmitter and receiver modules. Both devices are based on ESP32 microcontrollers and maintain a synchronized understanding of the data structure +to ensure seamless communication.

+

On the transmitter side, joystick input is continuously read and translated into control values. These values are then encapsulated into the +predefined data structure and transmitted via ESP-NOW to the receiver.

+

The receiver module listens for incoming ESP-NOW packets, de-encapsulates the joystick data, and converts the received values into PWM signals. +These signals are then used to control the speed and direction of the DC motors, enabling real-time remote operation of the vehicle.

diff --git a/ESP-IDF_Robot/tutorial/docs/build/html/searchindex.js b/ESP-IDF_Robot/tutorial/docs/build/html/searchindex.js index cc2bb3099..f40cf35d5 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 STRUCT":[[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]],"INTRODUCTION":[[2,null]],"Main Function":[[5,"main-function"],[7,"main-function"]],"Motor Wires Harness":[[4,"motor-wires-harness"]],"RECEIVER":[[5,null]],"REFERENCES":[[6,null]],"Receiving & De-Ecapsulating Data":[[5,"receiving-de-ecapsulating-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]],"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,7],"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,"NOT":3,"ON":[0,5,7],"The":[0,2,3],"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],"an":[0,2],"analog":0,"ani":[0,3],"app_main":[5,7],"appear":2,"ar":3,"architectur":[],"arg":3,"assign":3,"attribut":0,"avail":[2,3],"axi":[],"back":3,"bacl":3,"bandwidth":0,"base":[2,3],"baselin":2,"batteri":0,"behavior":2,"being":3,"below":[],"between":[0,2],"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":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,"consequ":3,"const":5,"constraint":3,"contain":0,"content":[],"contin":3,"control":[0,2,3,4],"core":2,"correspond":3,"counter":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,3,4,5,7],"de":1,"declar":3,"decod":0,"dedic":3,"defin":[2,3],"deletep":3,"demonstr":2,"depend":2,"design":[0,2,6],"detail":[],"determin":[0,3],"devboard":3,"develop":3,"developmemt":3,"devic":[0,2],"diagon":3,"differenti":0,"direct":[0,2],"displai":3,"doe":1,"drive":0,"duti":3,"e":[0,3],"each":3,"easili":2,"ecapsul":1,"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,"etc":0,"even":[0,2],"event":3,"everi":3,"evok":3,"evolv":2,"exact":0,"exist":[],"expand":2,"expect":0,"extend":2,"facilit":2,"fals":5,"fast":2,"featur":2,"fi":2,"field":0,"file":6,"final":0,"fine":0,"finish":1,"fix":0,"focus":2,"follow":3,"form":2,"foundat":2,"four":[0,3],"free":2,"freedom":2,"freerto":[5,7],"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,"group":3,"guid":2,"h":[5,7],"handl":2,"har":1,"hardwar":[0,1,2],"harn":4,"heart":2,"hexadecim":3,"hold":[3,7],"hood":2,"how":[1,2],"http":[3,6],"i":[0,2,3],"idea":2,"ideal":[0,2],"idf_robot":6,"idf_robot_schemat":[],"ifidx":5,"illustr":3,"imag":3,"implement":2,"includ":[5,7],"indic":0,"individu":0,"initi":[5,7],"input":[0,2],"insid":4,"instal":4,"int":[0,3,5,7],"integr":2,"intend":0,"intern":7,"interpret":0,"interv":0,"introduct":1,"itself":2,"joystick":[0,3,5,7],"joystick_adc_init":7,"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],"light":2,"lightweight":2,"like":[0,2],"loop":2,"low":[0,2],"mac":[3,7],"mac_addr":[3,5],"mai":0,"main":[1,6],"make":0,"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,"modular":2,"motor":[0,1,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":3,"move":[2,3],"movement":[2,3],"multi":0,"nav_bttn":[0,3,5,7],"need":2,"network":2,"node":6,"nor":2,"note":3,"now":[0,2,3,7],"number":3,"nv":[5,7],"nvs_flash":[5,7],"nvs_flash_eras":[5,7],"nvs_flash_init":[5,7],"off":[0,5,7],"ok":3,"omni":0,"onboard":0,"ondatareceiv":[3,5],"ondatas":3,"onli":[3,4],"oper":[0,3],"oscilloscop":3,"other":3,"over":0,"pack":[5,7],"packet":[0,3],"pad":0,"pair":[0,2,3],"particular":3,"payload":1,"pcb":[3,6],"peer_addr":5,"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,"predict":0,"progress":1,"project":2,"protocol":[0,2],"provid":[0,2,3],"purpos":3,"push":[0,3,5,7],"pwm":[0,3,5,7],"rc":[2,3],"rc_send_data_task":3,"readm":6,"real":2,"receiv":[0,1,2,3,7],"receiver_mac":[3,7],"record":[],"refer":1,"regist":3,"regular":0,"relev":0,"remain":2,"remot":[0,2],"remov":0,"repres":0,"requir":3,"reserv":1,"resp":3,"respond":2,"respons":[0,3],"restructuredtext":[],"result":[2,3,7],"ret":[5,7],"right":3,"robot":0,"rotat":3,"router":2,"row":[],"run":3,"same":[],"schemat":[1,6],"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,3],"serial":0,"serv":0,"setup":2,"side":3,"sidewai":3,"signal":0,"similarli":3,"size":0,"sizeof":[3,5,7],"softwar":1,"sourc":[2,6],"speed":[0,2],"spotlight":2,"state":[0,5,7],"static":3,"statu":[0,3],"store":3,"stream":0,"string":5,"struct":[1,3,5,7],"suffici":3,"summar":3,"summari":3,"support":0,"syntax":[],"system":[0,2],"system_led_init":[5,7],"tabl":3,"tag":[3,5],"task":3,"telemetri":[0,2],"tell":0,"temperatur":7,"thi":[0,2,3],"those":3,"though":2,"through":1,"time":2,"toggl":0,"transmiss":[0,2],"transmission_init":7,"transmit":[0,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,"up":0,"updat":3,"us":2,"user":[0,2],"valu":3,"vari":2,"variabl":1,"variou":3,"vehicl":0,"void":[3,5,7],"voltag":3,"vtaskdelai":3,"wa":3,"walk":1,"walkthrough":[],"warn":0,"well":[],"wheel":0,"when":[0,3],"where":2,"which":[],"while":[2,3],"why":[],"wi":2,"wifi":5,"wifi_init":[5,7],"wildli":2,"wire":[1,3],"wireless":2,"wirelessli":2,"without":2,"work":1,"wroom":3,"x":[0,5,7],"x_axi":[0,3,5,7],"y":[0,5,7],"y_axi":[0,3,5,7],"you":[0,2],"your":2},"titles":["DATA STRUCT","ByteRider documentation","INTRODUCTION","HOW DOES IT WORK?","WORK-IN-PROGRESS WALK THROUGH","RECEIVER","REFERENCES","TRANSMITTER"],"titleterms":{"IN":4,"IT":3,"__attribut":0,"abstract":2,"axi":3,"byterid":1,"chassi":4,"configur":[5,7],"data":[0,5,7],"de":5,"direct":3,"document":1,"doe":3,"ecapsul":[5,7],"encapsul":[],"finish":4,"function":[5,7],"fusion":3,"github":6,"gpio":3,"har":4,"hardwar":3,"how":3,"introduct":2,"main":[5,7],"motor":4,"pack":0,"payload":0,"pin":3,"progress":4,"receiv":5,"refer":6,"reserv":3,"schemat":3,"send":7,"softwar":3,"speed":3,"struct":0,"through":4,"transmitt":7,"us":0,"variabl":[5,7],"walk":4,"walkthrough":[],"why":0,"wire":4,"work":[3,4],"x":3,"y":3}}) \ 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 STRUCT":[[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]],"INTRODUCTION":[[2,null]],"Main Function":[[5,"main-function"],[7,"main-function"]],"Motor Wires Harness":[[4,"motor-wires-harness"]],"RECEIVER":[[5,null]],"REFERENCES":[[6,null]],"Receiving & De-Ecapsulating Data":[[5,"receiving-de-ecapsulating-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]],"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,7],"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,"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],"an":[0,2],"analog":0,"ani":[0,3],"app_main":[5,7],"appear":2,"ar":[2,3],"architectur":[],"arg":3,"assign":3,"attribut":0,"avail":[2,3],"axi":[],"back":3,"bacl":3,"bandwidth":0,"base":[2,3],"baselin":2,"batteri":0,"behavior":2,"being":3,"below":[],"between":[0,2],"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":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":2,"const":5,"constraint":3,"contain":0,"content":[],"contin":3,"continu":2,"control":[0,2,3,4],"convert":2,"core":2,"correspond":3,"counter":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],"de":[1,2],"declar":3,"decod":0,"dedic":3,"defin":[2,3],"deletep":3,"demonstr":2,"depend":2,"design":[0,2,6],"detail":[],"determin":[0,3],"devboard":3,"develop":[2,3],"developmemt":3,"devic":[0,2],"diagon":3,"differenti":0,"direct":[0,2],"displai":3,"doe":1,"drive":0,"duti":3,"e":[0,3],"each":3,"easili":2,"ecapsul":1,"effici":2,"elegantli":2,"els":3,"embed":0,"emploi":2,"enabl":[0,2],"encapsul":[0,2],"encod":0,"encrypt":5,"end":0,"endless":2,"ensur":[0,2],"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":2,"exist":[],"expand":2,"expect":0,"extend":2,"facilit":2,"fals":5,"fast":2,"featur":2,"fi":2,"field":0,"file":6,"final":0,"fine":0,"finish":1,"fix":0,"focus":2,"follow":3,"form":2,"foundat":2,"four":[0,3],"free":2,"freedom":2,"freerto":[5,7],"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,"group":3,"guid":2,"h":[5,7],"handl":2,"har":1,"hardwar":[0,1,2],"harn":4,"heart":2,"hexadecim":3,"hold":[3,7],"hood":2,"how":[1,2],"http":[3,6],"i":[0,2,3],"idea":2,"ideal":[0,2],"idf_robot":6,"idf_robot_schemat":[],"ifidx":5,"illustr":3,"imag":3,"implement":2,"includ":[5,7],"incom":2,"indic":0,"individu":0,"initi":[5,7],"input":[0,2],"insid":4,"instal":4,"int":[0,3,5,7],"integr":2,"intend":0,"intern":7,"interpret":[0,2],"interv":0,"introduct":1,"itself":2,"joystick":[0,2,3,5,7],"joystick_adc_init":7,"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],"li":2,"light":2,"lightweight":2,"like":[0,2],"listen":2,"loop":2,"low":[0,2],"mac":[3,7],"mac_addr":[3,5],"mai":0,"main":[1,6],"maintain":2,"make":0,"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,"modular":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":3,"move":[2,3],"movement":[2,3],"multi":0,"nav_bttn":[0,3,5,7],"need":2,"network":2,"node":6,"nor":2,"note":3,"now":[0,2,3,7],"number":3,"nv":[5,7],"nvs_flash":[5,7],"nvs_flash_eras":[5,7],"nvs_flash_init":[5,7],"off":[0,5,7],"ok":3,"omni":0,"onboard":0,"ondatareceiv":[3,5],"ondatas":3,"onli":[3,4],"oper":[0,2,3],"oscilloscop":3,"other":3,"over":0,"pack":[5,7],"packet":[0,2,3],"pad":0,"pair":[0,2,3],"paramet":2,"particular":3,"payload":1,"pcb":[3,6],"peer_addr":5,"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,"purpos":3,"push":[0,3,5,7],"pwm":[0,2,3,5,7],"rc":[2,3],"rc_send_data_task":3,"read":2,"readm":6,"real":2,"receiv":[0,1,2,3,7],"receiver_mac":[3,7],"record":[],"refer":1,"regist":3,"regular":0,"relev":0,"remain":2,"remot":[0,2],"remov":0,"repres":0,"requir":3,"reserv":1,"resp":3,"respond":2,"respons":[0,3],"restructuredtext":[],"result":[2,3,7],"ret":[5,7],"right":3,"robot":0,"rotat":[2,3],"router":2,"row":[],"run":3,"same":[],"schemat":[1,6],"seamless":2,"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,3],"serial":0,"serv":0,"setup":2,"share":2,"side":[2,3],"sidewai":3,"signal":[0,2],"similarli":3,"size":0,"sizeof":[3,5,7],"softwar":1,"sourc":[2,6],"specif":2,"speed":[0,2],"spotlight":2,"state":[0,5,7],"static":3,"statu":[0,3],"store":3,"stream":0,"string":5,"struct":[1,3,5,7],"structur":2,"suffici":3,"summar":3,"summari":3,"support":0,"synchron":2,"syntax":[],"system":[0,2],"system_led_init":[5,7],"tabl":3,"tag":[3,5],"task":3,"telemetri":[0,2],"tell":0,"temperatur":7,"thi":[0,2,3],"those":3,"though":2,"through":1,"time":2,"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":2,"up":0,"updat":3,"us":2,"user":[0,2],"valu":[2,3],"vari":2,"variabl":1,"variou":3,"vehicl":[0,2],"via":2,"void":[3,5,7],"voltag":3,"vtaskdelai":3,"wa":3,"walk":1,"walkthrough":[],"warn":0,"well":[],"wheel":0,"when":[0,3],"where":2,"which":2,"while":[2,3],"why":[],"wi":2,"width":2,"wifi":5,"wifi_init":[5,7],"wildli":2,"wire":[1,3],"wireless":2,"wirelessli":2,"without":2,"work":1,"wroom":3,"x":[0,5,7],"x_axi":[0,3,5,7],"y":[0,5,7],"y_axi":[0,3,5,7],"you":[0,2],"your":2},"titles":["DATA STRUCT","ByteRider documentation","INTRODUCTION","HOW DOES IT WORK?","WORK-IN-PROGRESS WALK THROUGH","RECEIVER","REFERENCES","TRANSMITTER"],"titleterms":{"IN":4,"IT":3,"__attribut":0,"abstract":2,"axi":3,"byterid":1,"chassi":4,"configur":[5,7],"data":[0,5,7],"de":5,"direct":3,"document":1,"doe":3,"ecapsul":[5,7],"encapsul":[],"finish":4,"function":[5,7],"fusion":3,"github":6,"gpio":3,"har":4,"hardwar":3,"how":3,"introduct":2,"main":[5,7],"motor":4,"pack":0,"payload":0,"pin":3,"progress":4,"receiv":5,"refer":6,"reserv":3,"schemat":3,"send":7,"softwar":3,"speed":3,"struct":0,"through":4,"transmitt":7,"us":0,"variabl":[5,7],"walk":4,"walkthrough":[],"why":0,"wire":4,"work":[3,4],"x":3,"y":3}}) \ 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 fd03819a0..62f3a6c0b 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: 9a6a760a17c59ce2724ac88b748b4785 +config: 4e4561c741c8b5e01a115ab6f3cc20f3 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 ce7fb1c79..5a33ec269 100644 --- a/ESP-IDF_Robot/tutorial/docs/build/simplepdf/index.html +++ b/ESP-IDF_Robot/tutorial/docs/build/simplepdf/index.html @@ -237,6 +237,24 @@ modular design gives users the freedom to customize both the appearance and beha ¶ +

+ At the core of this project lies a shared data structure that encapsulates the control parameters for the DC motors, specifically their rotation speeds, +which are modulated using Pulse Width Modulation (PWM). This structure ensures consistent interpretation of control signals between the transmitter +and receiver. +

+

+ The system employs ESP-NOW, a low-latency, connectionless communication protocol developed by Espressif, to facilitate wireless data exchange between +the transmitter and receiver modules. Both devices are based on ESP32 microcontrollers and maintain a synchronized understanding of the data structure +to ensure seamless communication. +

+

+ On the transmitter side, joystick input is continuously read and translated into control values. These values are then encapsulated into the +predefined data structure and transmitted via ESP-NOW to the receiver. +

+

+ The receiver module listens for incoming ESP-NOW packets, de-encapsulates the joystick data, and converts the received values into PWM signals. +These signals are then used to control the speed and direction of the DC motors, enabling real-time remote operation of the vehicle. +