From f8558e24d8bb988dd0cd8f2ac73331986d2dd2bf Mon Sep 17 00:00:00 2001
From: Alexandre Bobkov 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.*1Cxv_A&0pV9wfj9dL9RBHG1N!w35je{N
z(Cxg2FRT2Q`ty(3^&LW={Sf}kjK6hHJKD|`X87JD{2!|191$bkAt7@M^C_9ELg?JP
zc{G1<92$22#qk
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.
+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. +
+