From f8558e24d8bb988dd0cd8f2ac73331986d2dd2bf Mon Sep 17 00:00:00 2001 From: Alexandre Bobkov Date: Mon, 21 Jul 2025 02:37:50 -0400 Subject: [PATCH] RC Robot Tutorial --- .../docs/build/doctrees/environment.pickle | Bin 29019 -> 29019 bytes .../docs/build/doctrees/overview.doctree | Bin 41261 -> 42333 bytes .../docs/build/html/_sources/overview.rst.txt | 13 +++++++++---- .../tutorial/docs/build/html/overview.html | 13 +++++++++---- .../tutorial/docs/build/html/searchindex.js | 2 +- .../tutorial/docs/build/simplepdf/.buildinfo | 2 +- .../tutorial/docs/build/simplepdf/index.html | 17 +++++++++++++---- 7 files changed, 33 insertions(+), 14 deletions(-) diff --git a/ESP-IDF_Robot/tutorial/docs/build/doctrees/environment.pickle b/ESP-IDF_Robot/tutorial/docs/build/doctrees/environment.pickle index bda05bf72ac063c3fd862961c33d16cf15ee2d8e..f512759009bbd548b3f36a819c71fd950678fc5b 100644 GIT binary patch delta 541 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 delta 5696 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 HJX-XB!U`ESP-NOW, a low-latency, connectionless wireless protocol th

In addition to enabling real-time control, using ESP-NOW introduces key networking concepts such as data encapsulation and structured communication. By using data structures to group control variables, you gain hands-on experience with how information is packaged and transmitted, laying the groundwork for understanding the fundamentals of network communication in embedded systems.

-

The joystick used in the bitByteRider RC car remote unit outputs analog voltages ranging from 0V to 3.3V on both the x- and y- axes, +

The joystick used in the bitByteRider RC car remote unit outputs analog voltages ranging from 0V to 3.3V on both the x- and y-axes, depending on the position of the joystick. These voltage levels are read by the ESP32-C3’s ADC (Analog-to-Digital Converter) inputs.

-

When the joystick is in its neutral (centered) position, the ADC inputs on the ESP32-C3 receive approximately 1.65V on both axes. +

When the joystick is in its neutral (centred) position, the ADC inputs on the ESP32-C3 receive approximately 1.65V on both axes. This midpoint voltage is interpreted and interpolated into a PWM (Pulse Width Modulation) value of 0, indicating no movement or motor activity.

-

As the joystick is pushed to its maximum positions along the x- and y- axis, the voltage increases up to 3.3V. This maximum voltage -is interpolated to a PWM value of 1024, which corresponds to a 100% duty cycle on the receiver side—resulting in full-speed +

As the joystick is pushed to its maximum positions along the x- and y-axis, the voltage increases up to 3.3V. This maximum voltage +is interpolated to a PWM value of 1024, which corresponds to a 100% duty cycle on the receiver side, resulting in full-speed operation of the DC motors.

To transmit control data, the X and Y axis values are encapsulated in a C struct, along with the receiver’s MAC address, and sent wirelessly using ESP-NOW. This protocol enables low-latency, connectionless communication between the transmitter and receiver @@ -58,6 +58,11 @@ without requiring a Wi-Fi network or pairing.

signals. These signals are then used to control the rotation speeds of the DC motors, enabling smooth and responsive remote control.

This process not only facilitates real-time control but also introduces you to key networking concepts such as data encapsulation, data structs, and the fundamentals of wireless data transmission in embedded systems.

+
+

What is encapsulation?

+

Encapsulation refers to the process of organizing and packaging data into a structured format before it is transmitted between +devices. This is a fundamental concept in networking and communication protocols, including those used in IoT systems.

+

2.1. Reserved Pins & GPIOs

The following table summarizes GPIOs and pins reserved for operations purposes.

diff --git a/ESP-IDF_Robot/tutorial/docs/build/html/searchindex.js b/ESP-IDF_Robot/tutorial/docs/build/html/searchindex.js index 8f462356e..e4915d631 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 Highlights":[[1,null]],"Chassis":[[4,"chassis"]],"Configuration Variables":[[5,"configuration-variables"],[7,"configuration-variables"]],"Controlling the Direction and Speed":[[3,"controlling-the-direction-and-speed"]],"DATA STRUCTS":[[0,null]],"Data Payload":[[0,"data-payload"]],"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"]],"Reading the Joystick x- and y- axis":[[3,"reading-the-joystick-x-and-y-axis"]],"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]],"What is struct?":[[0,null]],"Why use __attribute((packed))?":[[0,"why-use-attribute-packed"]],"Wiring":[[4,"wiring"]]},"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,3],"0":[3,5],"02x":5,"04x":3,"0v":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,"1024":3,"15":3,"16":3,"2":[3,5],"250":0,"3":[3,5],"3v":3,"4":[0,3,5],"47":3,"48":3,"5":[3,5],"50":[],"6":3,"65v":3,"7":3,"8":3,"90":3,"91":3,"95":[],"A":3,"As":[0,3],"At":2,"By":3,"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,3],"To":[2,3],"__attribut":1,"__attribute__":[0,5,7],"__gpio6__":[],"_gitbub":[],"_static":[],"abstract":1,"across":0,"activ":3,"ad":0,"adapt":[3,6],"adc":3,"adc1_ch0":3,"adc1_ch1":3,"add":0,"addit":[0,2,3],"address":[3,7],"adjust":2,"alexandrebobkov":[3,6],"align":0,"all":0,"alloc":3,"allow":[0,2,3],"along":3,"also":3,"an":0,"analog":[0,3],"ani":[0,2,3],"app_main":[5,7],"appear":2,"appli":2,"approxim":3,"ar":[0,2,3],"architectur":[],"arg":3,"assign":[],"attribut":0,"avail":[2,3],"ax":3,"axi":[1,2],"back":3,"bacl":[],"bandwidth":0,"base":[2,3],"baselin":2,"batteri":0,"behavior":[],"behaviour":2,"being":3,"belong":0,"below":3,"between":[0,2,3],"binari":0,"bitboard":3,"bitbyterid":3,"biterid":3,"bitrid":3,"blob":6,"board":[0,3],"bool":[0,5,7],"both":[2,3],"breadboard":3,"break":[],"brief":3,"buf":[3,5],"buffer":[3,7],"button":[0,3,5,7],"byte":0,"c":[0,3],"c3":[2,3],"c3_breadboard":[3,6],"call":[3,7],"can":[2,3],"capabl":[],"captur":0,"car":[2,3],"center":3,"chang":[2,3],"channel":[3,5],"chassi":1,"chip_sensor_init":7,"class":[],"clockwis":3,"code":[2,3,6],"column":[],"com":[3,6],"command":0,"commun":[0,2,3],"compact":0,"compat":0,"compil":0,"complet":[4,6],"concept":3,"configur":[0,1],"connect":[2,3],"connectionless":[2,3],"consequ":3,"consist":[],"const":5,"constraint":3,"contain":0,"content":[],"contin":3,"continu":2,"control":[0,1,2,4],"convert":[2,3],"coordin":2,"core":2,"correspond":3,"counter":3,"counterclockwis":3,"crc":3,"creativ":2,"current":[2,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":[],"deal":0,"decapsul":3,"declar":3,"decod":0,"decreas":3,"dedic":[],"defin":[0,2,3],"deletep":3,"deliv":3,"demonstr":2,"depend":[2,3],"descript":3,"design":[2,3,6],"desir":3,"detail":[],"determin":[0,3],"devboard":3,"develop":[2,3],"developmemt":[],"devic":[0,2,3],"diagon":3,"differ":0,"differenti":0,"digit":3,"direct":[0,1,2],"directli":2,"discret":3,"displai":3,"doe":1,"dr":3,"drive":0,"due":3,"duti":3,"e":[0,3],"each":[3,7],"easili":2,"ecapsul":1,"effect":3,"effici":2,"elegantli":[],"els":3,"embed":[0,3],"emploi":2,"enabl":[0,2,3],"encapsul":[0,2,3],"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,"especi":0,"espressif":2,"etc":[0,2],"even":[0,2],"event":3,"everi":3,"evok":3,"evolv":[],"exact":0,"exchang":[],"exist":[],"expand":2,"expect":0,"experi":3,"extend":2,"extract":[1,2,3],"facilit":[2,3],"fals":5,"fast":2,"featur":2,"fi":[2,3],"field":0,"file":[3,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,3,5],"front":3,"full":3,"function":[1,2,3],"fundament":3,"fusion":1,"g":0,"gain":3,"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],"groundwork":3,"group":[0,3],"guid":[],"h":[5,7],"hand":3,"handl":2,"har":1,"hardwar":[0,1,2],"harn":4,"heart":2,"hexadecim":3,"high":3,"higher":3,"hold":[0,3,7],"hood":[],"how":1,"http":[3,6],"i":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,3],"individu":0,"inform":[0,3],"initi":[5,7],"input":[0,2,3],"insid":4,"instal":4,"instantli":2,"int":[0,3,5,7],"integr":2,"intend":0,"intern":7,"interpol":3,"interpret":[0,3],"interv":0,"introduc":3,"introduct":[],"iot":2,"its":3,"itself":[],"joystic":[],"joystick":[0,1,2,5],"joystick_adc_init":7,"kei":3,"khz":3,"kicad":[3,6],"lai":3,"lastli":[],"latenc":[0,2,3],"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],"let":0,"level":3,"li":[],"light":2,"lightweight":2,"like":[0,2],"limit":3,"link":2,"listen":2,"logic":0,"loop":2,"low":[0,2,3],"lower":3,"mac":[3,7],"mac_addr":[3,5],"mai":0,"main":[1,3,6],"maintain":[],"make":0,"manag":2,"maneuv":0,"master":[],"maxim":0,"maximum":3,"md":6,"mean":3,"measur":[2,3],"memcpi":5,"memori":[0,3,7],"messag":3,"microcontrol":[0,2,3],"midpoint":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,"multipl":0,"name":0,"nav_btn":7,"nav_bttn":[0,3,5],"nc":3,"need":[2,3],"network":[2,3],"neutral":3,"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],"organ":0,"oscilloscop":3,"other":3,"output":3,"over":0,"overview":1,"pack":[1,2,5,7],"packag":3,"packet":[0,2,3],"pad":0,"pair":[0,2,3],"paramet":2,"pars":0,"particular":3,"payload":1,"pcb":[3,6],"peer_addr":5,"per":3,"percentag":3,"perfect":0,"period":3,"physic":2,"pin":1,"platform":0,"png":[],"pointer":[3,7],"porttick_period_m":3,"posit":[0,3,5,7],"possibl":[2,3],"potentionomet":3,"power":[0,2,3],"precis":0,"predefin":2,"predict":0,"process":3,"program":0,"progress":1,"project":[0,2],"protocol":[0,2,3],"provid":[0,2,3],"puls":[2,3],"purpos":3,"push":[0,3,5,7],"pwm":[0,2,5,7],"pwm_":[],"rang":3,"rapidli":3,"raw":0,"rc":[2,3],"rc_send_data_task":3,"read":1,"readm":6,"real":[2,3],"receiv":[0,1,2,3,7],"receiver_mac":[3,7],"recept":3,"record":[],"refer":1,"regist":3,"regul":3,"regular":0,"relat":0,"relev":0,"remain":2,"remot":[0,2,3],"remov":0,"repres":0,"requir":3,"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":2,"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,"set":3,"setup":2,"share":[],"short":0,"side":[2,3],"sidewai":3,"signal":[0,2,3],"similarli":3,"simul":3,"singl":0,"size":0,"sizeof":[3,5,7],"smooth":3,"softwar":1,"sourc":[2,6],"specif":[],"speed":[0,1,2],"spin":3,"spotlight":[],"stand":3,"state":[0,3,5,7],"static":3,"statu":[0,3],"store":[2,3],"straight":3,"stream":0,"string":5,"struct":[1,3,5,7],"structur":[0,2,3],"sub":[],"suffici":[],"summar":3,"summari":3,"support":0,"switch":3,"synchron":[],"syntax":[],"system":[0,2,3],"system_led_init":[5,7],"tabl":3,"tag":[3,5],"task":3,"techniqu":3,"telemetri":[0,2],"tell":0,"temperatur":[2,7],"than":[],"them":3,"thi":[0,2,3],"those":3,"though":[],"through":1,"time":[2,3],"togeth":0,"toggl":0,"translat":2,"transmiss":[0,2,3],"transmission_init":7,"transmit":[0,2,3],"transmitt":[0,1,2,3],"transmitter_mac":5,"transmitterinfo":5,"true":3,"turn":3,"tutori":2,"two":3,"type":0,"typedef":[0,5,7],"uart":0,"uint8_t":[0,3,5,7],"under":0,"understand":3,"unit":3,"up":[0,3],"updat":3,"upon":3,"us":[1,2,3],"user":[0,2],"valu":[1,2,3],"vari":2,"variabl":[0,1,3],"variou":3,"vehicl":0,"via":[2,3],"void":[3,5,7],"voltag":[2,3],"vtaskdelai":3,"wa":3,"walk":1,"walkthrough":[],"warn":0,"well":[],"what":[],"wheel":0,"when":[0,3],"where":2,"which":[2,3],"while":[2,3],"why":1,"wi":[2,3],"width":[2,3],"wifi":5,"wifi_init":[5,7],"wildli":2,"wire":1,"wireless":[2,3],"wirelessli":[2,3],"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,3],"your":2},"titles":["3. DATA STRUCTS","ByteRider Highlights","1. OVERVIEW","2. HOW DOES IT WORK?","6. WORK-IN-PROGRESS WALK THROUGH","5. RECEIVER","7. REFERENCES","4. TRANSMITTER"],"titleterms":{"IN":4,"IT":3,"__attribut":0,"abstract":2,"axi":[3,7],"byterid":1,"chassi":4,"configur":[5,7],"control":3,"data":[0,5,7],"de":[],"direct":3,"document":[],"doe":3,"ecapsul":7,"encapsul":[],"extract":5,"finish":4,"function":[5,7],"fusion":3,"github":6,"gpio":3,"har":4,"hardwar":3,"highlight":1,"how":3,"i":[0,3],"introduct":[],"joystick":[3,7],"main":[5,7],"motor":4,"overview":2,"pack":0,"payload":0,"pin":3,"progress":4,"pwm":3,"read":[3,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":[0,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 Highlights":[[1,null]],"Chassis":[[4,"chassis"]],"Configuration Variables":[[5,"configuration-variables"],[7,"configuration-variables"]],"Controlling the Direction and Speed":[[3,"controlling-the-direction-and-speed"]],"DATA STRUCTS":[[0,null]],"Data Payload":[[0,"data-payload"]],"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"]],"Reading the Joystick x- and y- axis":[[3,"reading-the-joystick-x-and-y-axis"]],"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]],"What is encapsulation?":[[3,null]],"What is struct?":[[0,null]],"Why use __attribute((packed))?":[[0,"why-use-attribute-packed"]],"Wiring":[[4,"wiring"]]},"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,3],"0":[3,5],"02x":5,"04x":3,"0v":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,"1024":3,"15":3,"16":3,"2":[3,5],"250":0,"3":[3,5],"3v":3,"4":[0,3,5],"47":3,"48":3,"5":[3,5],"50":[],"6":3,"65v":3,"7":3,"8":3,"90":3,"91":3,"95":[],"A":3,"As":[0,3],"At":2,"By":3,"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,3],"To":[2,3],"__attribut":1,"__attribute__":[0,5,7],"__gpio6__":[],"_gitbub":[],"_static":[],"abstract":1,"across":0,"activ":3,"ad":0,"adapt":[3,6],"adc":3,"adc1_ch0":3,"adc1_ch1":3,"add":0,"addit":[0,2,3],"address":[3,7],"adjust":2,"alexandrebobkov":[3,6],"align":0,"all":0,"alloc":3,"allow":[0,2,3],"along":3,"also":3,"an":0,"analog":[0,3],"ani":[0,2,3],"app_main":[5,7],"appear":2,"appli":2,"approxim":3,"ar":[0,2,3],"architectur":[],"arg":3,"assign":[],"attribut":0,"avail":[2,3],"ax":3,"axi":[1,2],"back":3,"bacl":[],"bandwidth":0,"base":[2,3],"baselin":2,"batteri":0,"befor":3,"behavior":[],"behaviour":2,"being":3,"belong":0,"below":3,"between":[0,2,3],"binari":0,"bitboard":3,"bitbyterid":3,"biterid":3,"bitrid":3,"blob":6,"board":[0,3],"bool":[0,5,7],"both":[2,3],"breadboard":3,"break":[],"brief":3,"buf":[3,5],"buffer":[3,7],"button":[0,3,5,7],"byte":0,"c":[0,3],"c3":[2,3],"c3_breadboard":[3,6],"call":[3,7],"can":[2,3],"capabl":[],"captur":0,"car":[2,3],"center":[],"centr":3,"chang":[2,3],"channel":[3,5],"chassi":1,"chip_sensor_init":7,"class":[],"clockwis":3,"code":[2,3,6],"column":[],"com":[3,6],"command":0,"commun":[0,2,3],"compact":0,"compat":0,"compil":0,"complet":[4,6],"concept":3,"configur":[0,1],"connect":[2,3],"connectionless":[2,3],"consequ":3,"consist":[],"const":5,"constraint":3,"contain":0,"content":[],"contin":3,"continu":2,"control":[0,1,2,4],"convert":[2,3],"coordin":2,"core":2,"correspond":3,"counter":3,"counterclockwis":3,"crc":3,"creativ":2,"current":[2,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":[],"deal":0,"decapsul":3,"declar":3,"decod":0,"decreas":3,"dedic":[],"defin":[0,2,3],"deletep":3,"deliv":3,"demonstr":2,"depend":[2,3],"descript":3,"design":[2,3,6],"desir":3,"detail":[],"determin":[0,3],"devboard":3,"develop":[2,3],"developmemt":[],"devic":[0,2,3],"diagon":3,"differ":0,"differenti":0,"digit":3,"direct":[0,1,2],"directli":2,"discret":3,"displai":3,"doe":1,"dr":3,"drive":0,"due":3,"duti":3,"e":[0,3],"each":[3,7],"easili":2,"ecapsul":1,"effect":3,"effici":2,"elegantli":[],"els":3,"embed":[0,3],"emploi":2,"enabl":[0,2,3],"encapsul":[0,2],"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,"especi":0,"espressif":2,"etc":[0,2],"even":[0,2],"event":3,"everi":3,"evok":3,"evolv":[],"exact":0,"exchang":[],"exist":[],"expand":2,"expect":0,"experi":3,"extend":2,"extract":[1,2,3],"facilit":[2,3],"fals":5,"fast":2,"featur":2,"fi":[2,3],"field":0,"file":[3,6],"final":0,"fine":[0,3],"finish":1,"fix":[0,3],"flow":2,"focus":2,"follow":3,"form":2,"format":3,"forward":3,"foundat":2,"four":[0,3],"free":2,"freedom":2,"freerto":[5,7],"frequenc":3,"from":[0,3,5],"front":3,"full":3,"function":[1,2,3],"fundament":3,"fusion":1,"g":0,"gain":3,"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],"groundwork":3,"group":[0,3],"guid":[],"h":[5,7],"hand":3,"handl":2,"har":1,"hardwar":[0,1,2],"harn":4,"heart":2,"hexadecim":3,"high":3,"higher":3,"hold":[0,3,7],"hood":[],"how":1,"http":[3,6],"i":2,"idea":[],"ideal":[0,2],"idf_robot":6,"idf_robot_schemat":[],"ifidx":5,"igit":[],"illustr":3,"imag":3,"implement":2,"includ":[3,5,7],"incom":2,"increas":3,"indic":[0,3],"individu":0,"inform":[0,3],"initi":[5,7],"input":[0,2,3],"insid":4,"instal":4,"instantli":2,"int":[0,3,5,7],"integr":2,"intend":0,"intern":7,"interpol":3,"interpret":[0,3],"interv":0,"introduc":3,"introduct":[],"iot":[2,3],"its":3,"itself":[],"joystic":[],"joystick":[0,1,2,5],"joystick_adc_init":7,"kei":3,"khz":3,"kicad":[3,6],"lai":3,"lastli":[],"latenc":[0,2,3],"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],"let":0,"level":3,"li":[],"light":2,"lightweight":2,"like":[0,2],"limit":3,"link":2,"listen":2,"logic":0,"loop":2,"low":[0,2,3],"lower":3,"mac":[3,7],"mac_addr":[3,5],"mai":0,"main":[1,3,6],"maintain":[],"make":0,"manag":2,"maneuv":0,"master":[],"maxim":0,"maximum":3,"md":6,"mean":3,"measur":[2,3],"memcpi":5,"memori":[0,3,7],"messag":3,"microcontrol":[0,2,3],"midpoint":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,"multipl":0,"name":0,"nav_btn":7,"nav_bttn":[0,3,5],"nc":3,"need":[2,3],"network":[2,3],"neutral":3,"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],"organ":[0,3],"oscilloscop":3,"other":3,"output":3,"over":0,"overview":1,"pack":[1,2,5,7],"packag":3,"packet":[0,2,3],"pad":0,"pair":[0,2,3],"paramet":2,"pars":0,"particular":3,"payload":1,"pcb":[3,6],"peer_addr":5,"per":3,"percentag":3,"perfect":0,"period":3,"physic":2,"pin":1,"platform":0,"png":[],"pointer":[3,7],"porttick_period_m":3,"posit":[0,3,5,7],"possibl":[2,3],"potentionomet":3,"power":[0,2,3],"precis":0,"predefin":2,"predict":0,"process":3,"program":0,"progress":1,"project":[0,2],"protocol":[0,2,3],"provid":[0,2,3],"puls":[2,3],"purpos":3,"push":[0,3,5,7],"pwm":[0,2,5,7],"pwm_":[],"rang":3,"rapidli":3,"raw":0,"rc":[2,3],"rc_send_data_task":3,"read":1,"readm":6,"real":[2,3],"receiv":[0,1,2,3,7],"receiver_mac":[3,7],"recept":3,"record":[],"refer":[1,3],"regist":3,"regul":3,"regular":0,"relat":0,"relev":0,"remain":2,"remot":[0,2,3],"remov":0,"repres":0,"requir":3,"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":2,"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,"set":3,"setup":2,"share":[],"short":0,"side":[2,3],"sidewai":3,"signal":[0,2,3],"similarli":3,"simul":3,"singl":0,"size":0,"sizeof":[3,5,7],"smooth":3,"softwar":1,"sourc":[2,6],"specif":[],"speed":[0,1,2],"spin":3,"spotlight":[],"stand":3,"state":[0,3,5,7],"static":3,"statu":[0,3],"store":[2,3],"straight":3,"stream":0,"string":5,"struct":[1,3,5,7],"structur":[0,2,3],"sub":[],"suffici":[],"summar":3,"summari":3,"support":0,"switch":3,"synchron":[],"syntax":[],"system":[0,2,3],"system_led_init":[5,7],"tabl":3,"tag":[3,5],"task":3,"techniqu":3,"telemetri":[0,2],"tell":0,"temperatur":[2,7],"than":[],"them":3,"thi":[0,2,3],"those":3,"though":[],"through":1,"time":[2,3],"togeth":0,"toggl":0,"translat":2,"transmiss":[0,2,3],"transmission_init":7,"transmit":[0,2,3],"transmitt":[0,1,2,3],"transmitter_mac":5,"transmitterinfo":5,"true":3,"turn":3,"tutori":2,"two":3,"type":0,"typedef":[0,5,7],"uart":0,"uint8_t":[0,3,5,7],"under":0,"understand":3,"unit":3,"up":[0,3],"updat":3,"upon":3,"us":[1,2,3],"user":[0,2],"valu":[1,2,3],"vari":2,"variabl":[0,1,3],"variou":3,"vehicl":0,"via":[2,3],"void":[3,5,7],"voltag":[2,3],"vtaskdelai":3,"wa":3,"walk":1,"walkthrough":[],"warn":0,"well":[],"what":[],"wheel":0,"when":[0,3],"where":2,"which":[2,3],"while":[2,3],"why":1,"wi":[2,3],"width":[2,3],"wifi":5,"wifi_init":[5,7],"wildli":2,"wire":1,"wireless":[2,3],"wirelessli":[2,3],"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,3],"your":2},"titles":["3. DATA STRUCTS","ByteRider Highlights","1. OVERVIEW","2. HOW DOES IT WORK?","6. WORK-IN-PROGRESS WALK THROUGH","5. RECEIVER","7. REFERENCES","4. TRANSMITTER"],"titleterms":{"IN":4,"IT":3,"__attribut":0,"abstract":2,"axi":[3,7],"byterid":1,"chassi":4,"configur":[5,7],"control":3,"data":[0,5,7],"de":[],"direct":3,"document":[],"doe":3,"ecapsul":7,"encapsul":3,"extract":5,"finish":4,"function":[5,7],"fusion":3,"github":6,"gpio":3,"har":4,"hardwar":3,"highlight":1,"how":3,"i":[0,3],"introduct":[],"joystick":[3,7],"main":[5,7],"motor":4,"overview":2,"pack":0,"payload":0,"pin":3,"progress":4,"pwm":3,"read":[3,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":[0,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 b8214deab..017022ec3 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: fb69cb3f5f9ce624b614209819cd5fd5 +config: 564111c68e4938e1ff35159ef0a02532 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 2bc5eb66f..d80464757 100644 --- a/ESP-IDF_Robot/tutorial/docs/build/simplepdf/index.html +++ b/ESP-IDF_Robot/tutorial/docs/build/simplepdf/index.html @@ -325,17 +325,17 @@ structured communication. By using data structures to group control variables, y is packaged and transmitted, laying the groundwork for understanding the fundamentals of network communication in embedded systems.

- The joystick used in the bitByteRider RC car remote unit outputs analog voltages ranging from 0V to 3.3V on both the x- and y- axes, + The joystick used in the bitByteRider RC car remote unit outputs analog voltages ranging from 0V to 3.3V on both the x- and y-axes, depending on the position of the joystick. These voltage levels are read by the ESP32-C3’s ADC (Analog-to-Digital Converter) inputs.

- When the joystick is in its neutral (centered) position, the ADC inputs on the ESP32-C3 receive approximately 1.65V on both axes. + When the joystick is in its neutral (centred) position, the ADC inputs on the ESP32-C3 receive approximately 1.65V on both axes. This midpoint voltage is interpreted and interpolated into a PWM (Pulse Width Modulation) value of 0, indicating no movement or motor activity.

- As the joystick is pushed to its maximum positions along the x- and y- axis, the voltage increases up to 3.3V. This maximum voltage -is interpolated to a PWM value of 1024, which corresponds to a 100% duty cycle on the receiver side—resulting in full-speed + As the joystick is pushed to its maximum positions along the x- and y-axis, the voltage increases up to 3.3V. This maximum voltage +is interpolated to a PWM value of 1024, which corresponds to a 100% duty cycle on the receiver side, resulting in full-speed operation of the DC motors.

@@ -355,6 +355,15 @@ signals. These signals are then used to control the rotation speeds of the DC mo This process not only facilitates real-time control but also introduces you to key networking concepts such as data encapsulation, data structs, and the fundamentals of wireless data transmission in embedded systems.

+
+

+ What is encapsulation? +

+

+ Encapsulation refers to the process of organizing and packaging data into a structured format before it is transmitted between +devices. This is a fundamental concept in networking and communication protocols, including those used in IoT systems. +

+

Reserved Pins & GPIOs