c5a212dfc3189bcfcc69c71ae5c056ee860209c4
Tech-dat/Network-dat/RC-dat/ArduPilot-dat/2025-05-04-16-11-57.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/ArduPilot-dat/2025-05-04-16-11-57.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/ArduPilot-dat/ArduPilot-dat.md
| ... | ... | @@ -1,93 +0,0 @@ |
| 1 | - |
|
| 2 | -# ArduPilot-dat |
|
| 3 | - |
|
| 4 | - |
|
| 5 | -## Radio Control Systems |
|
| 6 | - |
|
| 7 | - |
|
| 8 | -- [Radio Control Systems](https://ardupilot.org/rover/docs/common-rc-systems.html) |
|
| 9 | - |
|
| 10 | -Compatible RC Protocols |
|
| 11 | - |
|
| 12 | -ArduPilot autopilots are compatible with the following receiver output protocols: |
|
| 13 | - |
|
| 14 | -PPM-Sum receivers - [[PPM-dat]] |
|
| 15 | - |
|
| 16 | -SBus receivers - [[SBUS-dat]] |
|
| 17 | - |
|
| 18 | -Fast SBus (from DJI HDL video/RC systems) |
|
| 19 | - |
|
| 20 | -i-BUS receivers - [[IBUS-dat]] |
|
| 21 | - |
|
| 22 | -FPort Receivers |
|
| 23 | - |
|
| 24 | -Spektrum SRXL2,DSM, DSM2, and DSM-X Satellite receivers |
|
| 25 | - |
|
| 26 | -Multiplex SRXL version 1 and version 2 receivers |
|
| 27 | - |
|
| 28 | -CRSF receivers (including ExpressLRS systems) - [[ELRS-dat]] - [[CRSF-dat]] |
|
| 29 | - |
|
| 30 | -mLRS (with telemetry) (MAVLink) |
|
| 31 | - |
|
| 32 | -Graupner SUM-D |
|
| 33 | - |
|
| 34 | -IRC Ghost |
|
| 35 | - |
|
| 36 | -DroneCAN peripherals can decode these RC protocols on a peripheral and pass to the autopilot |
|
| 37 | - |
|
| 38 | -MAVLink connected RC (not to be confused with MAVLink RC Overrides used for CS joystick control of RC functions) |
|
| 39 | - |
|
| 40 | -Parallel PWM outputs encoded to PPM-Sum using an external encoder (see below, not supported on many autopilots now) |
|
| 41 | - |
|
| 42 | - |
|
| 43 | - |
|
| 44 | -## specs |
|
| 45 | - |
|
| 46 | -| Original Manu | Range | Telemetry | Telem Speed | TX Display | RC Protocol | Notes | |
|
| 47 | -| --------------- | ------ | --------------- | ----------- | ----------- | -------------------- | ----- | |
|
| 48 | -| Flysky | Short | Yes | | yes | i-BUS/SBUS | 7 | |
|
| 49 | -| FrSky X series | Short | Bi-dir | Medium | yes | PPM-SUM/SBUS/ FPort | 2 | |
|
| 50 | -| Futaba | Short | No | | | SBus | | |
|
| 51 | -| Graupner | Short | Yes | Medium | yes | SUM-D | | |
|
| 52 | -| Multiplex | Short | No | | | SRXL | | |
|
| 53 | -| Spektrum | Short | Vendor Specific | | yes | DSM/DSM2 DSM-X/ SRXL | | |
|
| 54 | -| FrSky R9 series | Medium | Bi-dir | Medium | yes | PPM-SUM/SBUS/ FPort | 2 | |
|
| 55 | -| IRC Ghost | Medium | Vendor Specific | | yes | IRC Ghost | | |
|
| 56 | -| [[CRSF-dat]] | Long | Bi-dir | Variable | yes | SBUS/CRSF | 3 | |
|
| 57 | -| DragonLink | Long | Bi-dir | 56K | via MTP/LUA | PPM_SUM/SBUS | 1 | |
|
| 58 | -| [[ELRS-dat]] | Long | Bi-Dir | Variable | optional | SBUS/CRSF Mavlink | 4 | |
|
| 59 | -| HereLink | Long | Bi-dir | 56K | integrated | SBUS | 8 | |
|
| 60 | -| mLRS | Long | Bi-dir | 12K - 91K | via LUA | SBUS/CRSF | 5 | |
|
| 61 | -| SIYI | Long | Bi-dir | 56K | integrated | SBUS | 8 | |
|
| 62 | - |
|
| 63 | -- [[network-dat]] |
|
| 64 | - |
|
| 65 | -RC protocols - [[SBUS-dat]] - [[CRSF-dat]] - [[PPM-SUM-dat]] - [[Fport-dat]] - [[SUM-D-dat]] - [[IBUS-dat]] - [[DSM-dat]] |
|
| 66 | - |
|
| 67 | - |
|
| 68 | - |
|
| 69 | -Note 1: DragonLink provides a 56Kbaud transparent link for telemetry, allowing full MAVLink telemetry to/from the vehicle from the transmitter module. Dragonlink is an add-on module to the transmitter, such as an FRSky Taranis or RadioMaster T16. See DragonLink RC Systems. MTP (Mavlink to Passthru) converters are available to allow direct display of MAVLink Telemetry data on OpenTX transmitters using Yaapu Telemetry LUA Script. |
|
| 70 | - |
|
| 71 | -Note 2: See Yaapu FrSky Telemetry Script for OpenTX. The ability to change parameters over FRSky telemetry from an Open TX compatible transmitter in addition to displaying the telemetry data is possible. Most FRSky compatible transmitters use OpenTX. Note that R9 systems are not quite Long Range, but much further range than normal FRSky systems, themselves at the very high end of the Short Range category at 1.6-2km range. |
|
| 72 | - |
|
| 73 | -Note 3: ArduPilot provides a means to send its telemetry data via CRSF such that it can be displayed on OpenTX transmitters using the Yaapu Telemetry LUA Script. The ability to change parameters over CRSF telemetry from an Open TX compatible transmitter in addition to displaying the telemetry data is also possible. See TBS Crossfire Telemetry |
|
| 74 | - |
|
| 75 | -Note 4: ELRS (ExpressLRS) is a flexible open-source system that can output CRSF, SBUS, or MAVLink (with embedded RC) protocols. Telemetry requires the use of CRSF or Mavlink, and the receiver must be wired to a full UART. See ExpressLRS site <https://www.expresslrs.org/> and TBS CRSF/ ELRS for more information. |
|
| 76 | - |
|
| 77 | -Note 5: The mLRS project is firmware designed specifically to carry both RC and MAVLink. The usable telemetry speed varies by the chosen mode and is managed via RADIO_STATUS flow control. It uses the CRSF (TBS Crossfire) RC protocol on both the receiver and Tx module. It also integrates full MAVLink telemetry via serial connections on the Tx module and the receiver. |
|
| 78 | - |
|
| 79 | -Note 6: Vendor Specific Telem means that they accomodate sensor additions to the vehicle and can display the information on certain Vendor specific TXs but do not send ArduPilot telemetry from the vehicle to ArduPilot compatible GCS or OpenTX display scripts. |
|
| 80 | - |
|
| 81 | -Note 7: The receiver must support i-BUS telemetry (look for a SENS port on the receiver or check the product specifications). |
|
| 82 | - |
|
| 83 | -Note 8: These systems have integrated HD video transmission from Ethernet or HDMI camera systems in addition to RC control and vehicle telemetry. |
|
| 84 | - |
|
| 85 | - |
|
| 86 | -## protocol converter |
|
| 87 | - |
|
| 88 | - |
|
| 89 | - |
|
| 90 | - |
|
| 91 | -## ref |
|
| 92 | - |
|
| 93 | -- [[ardupilot-dat]] - [[FPV]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-code-dat/PWM-1ch.ino
| ... | ... | @@ -1,74 +0,0 @@ |
| 1 | -// Define pins for each RC channel |
|
| 2 | -int aileronPin = 2; // Channel 1 |
|
| 3 | - |
|
| 4 | -const int ENA = 5; // PWM for speed for Motor 1 |
|
| 5 | -const int ENB = 4; // PWM for speed for Motor 2 |
|
| 6 | - |
|
| 7 | -const int IN1 = 0; // Direction for Motor 1 (IN2_Motor1 is inverted in hardware) |
|
| 8 | -const int IN2 = 2; // Direction pin 1 for Motor 2 |
|
| 9 | - |
|
| 10 | -long aileronControl; |
|
| 11 | - |
|
| 12 | -long readAileronControlSignal() { |
|
| 13 | - unsigned long rawPWM = pulseIn(aileronPin, HIGH, 25000); |
|
| 14 | - if (rawPWM == 0) { // Timeout or no signal |
|
| 15 | - return 50; // Mid-point for 0-100 scale (1500us equivalent) |
|
| 16 | - } |
|
| 17 | - long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 18 | - return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 19 | -} |
|
| 20 | - |
|
| 21 | -void setup() { |
|
| 22 | - pinMode(aileronPin, INPUT); |
|
| 23 | - |
|
| 24 | - pinMode(ENA, OUTPUT); |
|
| 25 | - pinMode(ENB, OUTPUT); |
|
| 26 | - pinMode(IN1, OUTPUT); |
|
| 27 | - pinMode(IN2, OUTPUT); |
|
| 28 | - |
|
| 29 | - // Initialize motors to off |
|
| 30 | - digitalWrite(IN1, LOW); |
|
| 31 | - digitalWrite(IN2, LOW); |
|
| 32 | - analogWrite(ENA, 0); |
|
| 33 | - analogWrite(ENB, 0); |
|
| 34 | - |
|
| 35 | - Serial.begin(9600); |
|
| 36 | -} |
|
| 37 | - |
|
| 38 | -void loop() { |
|
| 39 | - // Read mapped control signals from each channel |
|
| 40 | - aileronControl = readAileronControlSignal(); |
|
| 41 | - |
|
| 42 | - // Print the mapped control signal values to the Serial Monitor |
|
| 43 | - Serial.print("Aileron: "); |
|
| 44 | - Serial.print(aileronControl); |
|
| 45 | - Serial.println(); // Newline for better readability |
|
| 46 | - |
|
| 47 | - if (aileronControl > 70) { |
|
| 48 | - // Forward |
|
| 49 | - digitalWrite(IN1, HIGH); // Motor 1 forward |
|
| 50 | - digitalWrite(IN2, HIGH); // Motor 2 forward |
|
| 51 | - |
|
| 52 | - // Map aileronControl (61-100) to PWM speed (e.g., 100-255) |
|
| 53 | - int motorSpeed = map(aileronControl, 61, 100, 100, 255); |
|
| 54 | - analogWrite(ENA, motorSpeed); |
|
| 55 | - analogWrite(ENB, motorSpeed); |
|
| 56 | - } else if (aileronControl < 30) { |
|
| 57 | - // Backward |
|
| 58 | - digitalWrite(IN1, LOW); // Motor 1 backward |
|
| 59 | - digitalWrite(IN2, LOW); // Motor 2 backward |
|
| 60 | - |
|
| 61 | - // Map aileronControl (0-39) to PWM speed (e.g., 255-100, reversing the range for backward) |
|
| 62 | - int motorSpeed = map(aileronControl, 0, 39, 255, 100); |
|
| 63 | - analogWrite(ENA, motorSpeed); |
|
| 64 | - analogWrite(ENB, motorSpeed); |
|
| 65 | - } else { |
|
| 66 | - // Stop motors (aileronControl is between 40 and 60 inclusive) |
|
| 67 | - digitalWrite(IN1, LOW); |
|
| 68 | - digitalWrite(IN2, LOW); |
|
| 69 | - analogWrite(ENA, 0); |
|
| 70 | - analogWrite(ENB, 0); |
|
| 71 | - } |
|
| 72 | - |
|
| 73 | - delay(100); // Limit output rate |
|
| 74 | -} |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-code-dat/PWM-2ch-2.ino
| ... | ... | @@ -1,142 +0,0 @@ |
| 1 | -// Define pins for each RC channel |
|
| 2 | -int aileronPin = 14; // Channel 1 (Throttle) |
|
| 3 | -int elevatorPin = 12; // Channel 2 (Steering) |
|
| 4 | - |
|
| 5 | -const int ENA = 5; // PWM for speed for Motor 1 |
|
| 6 | -const int ENB = 4; // PWM for speed for Motor 2 |
|
| 7 | - |
|
| 8 | -const int IN1 = 0; // Direction for Motor 1 |
|
| 9 | -const int IN2 = 2; // Direction pin 1 for Motor 2 |
|
| 10 | - |
|
| 11 | -long aileronControl; // Mapped value from aileron channel (0-100) |
|
| 12 | -long elevatorControl; // Mapped value from elevator channel (0-100) |
|
| 13 | - |
|
| 14 | -// Reads the PWM signal from the aileron channel and maps it to 0-100 |
|
| 15 | -long readAileronControlSignal() { |
|
| 16 | - unsigned long rawPWM = pulseIn(aileronPin, HIGH, 25000); |
|
| 17 | - // If signal is lost (timeout) or clearly out of valid RC pulse range, return neutral (50) |
|
| 18 | - // Valid RC pulses are typically 1000-2000us. Values outside ~900-2100us are treated as invalid. |
|
| 19 | - if (rawPWM == 0 || rawPWM < 900 || rawPWM > 2100) { |
|
| 20 | - return 50; // Mid-point for 0-100 scale (1500us equivalent), results in stop |
|
| 21 | - } |
|
| 22 | - // Otherwise, the signal is likely valid; constrain it to the standard 1000-2000us range and map |
|
| 23 | - long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 24 | - return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 25 | -} |
|
| 26 | - |
|
| 27 | -// Reads the PWM signal from the elevator channel and maps it to 0-100 |
|
| 28 | -long readElevatorControlSignal() { |
|
| 29 | - unsigned long rawPWM = pulseIn(elevatorPin, HIGH, 25000); |
|
| 30 | - // If signal is lost (timeout) or clearly out of valid RC pulse range, return neutral (50) |
|
| 31 | - // Valid RC pulses are typically 1000-2000us. Values outside ~900-2100us are treated as invalid. |
|
| 32 | - if (rawPWM == 0 || rawPWM < 900 || rawPWM > 2100) { |
|
| 33 | - return 50; // Mid-point for 0-100 scale (1500us equivalent), results in stop |
|
| 34 | - } |
|
| 35 | - // Otherwise, the signal is likely valid; constrain it to the standard 1000-2000us range and map |
|
| 36 | - long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 37 | - return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 38 | -} |
|
| 39 | - |
|
| 40 | -void setup() { |
|
| 41 | - pinMode(aileronPin, INPUT); |
|
| 42 | - pinMode(elevatorPin, INPUT); // Initialize elevator pin |
|
| 43 | - |
|
| 44 | - pinMode(ENA, OUTPUT); |
|
| 45 | - pinMode(ENB, OUTPUT); |
|
| 46 | - pinMode(IN1, OUTPUT); |
|
| 47 | - pinMode(IN2, OUTPUT); |
|
| 48 | - |
|
| 49 | - // Initialize motors to off |
|
| 50 | - digitalWrite(IN1, LOW); |
|
| 51 | - digitalWrite(IN2, LOW); |
|
| 52 | - analogWrite(ENA, 0); |
|
| 53 | - analogWrite(ENB, 0); |
|
| 54 | - |
|
| 55 | - Serial.begin(9600); |
|
| 56 | -} |
|
| 57 | - |
|
| 58 | -// Helper function to control a single motor |
|
| 59 | -// pwmVal: -255 (full backward) to 255 (full forward) |
|
| 60 | -void setMotorOutput(int dirPin, int speedPin, int pwmVal) { |
|
| 61 | - if (pwmVal > 0) { // Forward |
|
| 62 | - digitalWrite(dirPin, HIGH); |
|
| 63 | - analogWrite(speedPin, pwmVal); |
|
| 64 | - } else if (pwmVal < 0) { // Backward |
|
| 65 | - digitalWrite(dirPin, LOW); |
|
| 66 | - analogWrite(speedPin, -pwmVal); // Speed is positive |
|
| 67 | - } else { // Stop |
|
| 68 | - digitalWrite(dirPin, LOW); // Or HIGH, doesn't matter much if speed is 0 |
|
| 69 | - analogWrite(speedPin, 0); |
|
| 70 | - } |
|
| 71 | -} |
|
| 72 | - |
|
| 73 | -// Helper function to map RC control input (0-100) to an output range (e.g., -255 to 255) |
|
| 74 | -// with a deadband around the center (e.g., 50). |
|
| 75 | -long mapWithDeadband(long rcValue, int rcMin, int rcMax, int rcCenter, int deadbandRadius, int outMin, int outMax) { |
|
| 76 | - long mappedValue = 0; |
|
| 77 | - int deadbandLower = rcCenter - deadbandRadius; |
|
| 78 | - int deadbandUpper = rcCenter + deadbandRadius; |
|
| 79 | - |
|
| 80 | - if (rcValue < deadbandLower) { |
|
| 81 | - // Map the range [rcMin, deadbandLower - 1] to [outMin, -1] |
|
| 82 | - // Ensure deadbandLower - 1 is not less than rcMin |
|
| 83 | - if (deadbandLower -1 < rcMin) { |
|
| 84 | - mappedValue = outMin; |
|
| 85 | - } else { |
|
| 86 | - mappedValue = map(rcValue, rcMin, deadbandLower - 1, outMin, -1); |
|
| 87 | - } |
|
| 88 | - } else if (rcValue > deadbandUpper) { |
|
| 89 | - // Map the range [deadbandUpper + 1, rcMax] to [1, outMax] |
|
| 90 | - // Ensure deadbandUpper + 1 is not greater than rcMax |
|
| 91 | - if (deadbandUpper + 1 > rcMax) { |
|
| 92 | - mappedValue = outMax; |
|
| 93 | - } else { |
|
| 94 | - mappedValue = map(rcValue, deadbandUpper + 1, rcMax, 1, outMax); |
|
| 95 | - } |
|
| 96 | - } else { |
|
| 97 | - // Inside deadband |
|
| 98 | - mappedValue = 0; |
|
| 99 | - } |
|
| 100 | - return constrain(mappedValue, outMin, outMax); |
|
| 101 | -} |
|
| 102 | - |
|
| 103 | -void loop() { |
|
| 104 | - // Read mapped control signals from each channel |
|
| 105 | - aileronControl = readAileronControlSignal(); // Throttle (0-100) |
|
| 106 | - elevatorControl = readElevatorControlSignal(); // Steering (0-100) |
|
| 107 | - |
|
| 108 | - // Print the mapped control signal values to the Serial Monitor |
|
| 109 | - Serial.print("Aileron (Throttle): "); |
|
| 110 | - Serial.print(aileronControl); |
|
| 111 | - Serial.print(" Elevator (Steering): "); |
|
| 112 | - Serial.print(elevatorControl); |
|
| 113 | - Serial.println(); |
|
| 114 | - |
|
| 115 | - // Define deadband radius (e.g., +/- 5 around center of 50 for a 0-100 input) |
|
| 116 | - // This means input values from 45 to 55 (inclusive if center is 50 and radius is 5) will be treated as 0. |
|
| 117 | - int deadbandRadius = 10; |
|
| 118 | - float steeringFactor = 3; // Adjust this value to change steering sensitivity |
|
| 119 | - float throttleFactor = 3; // Adjust this value to change throttle sensitivity (e.g., 1.2 for 20% stronger throttle) |
|
| 120 | - |
|
| 121 | - // Map control values with deadband |
|
| 122 | - long rawThrottleValue = mapWithDeadband(aileronControl, 0, 100, 50, deadbandRadius, -255, 255); |
|
| 123 | - long rawSteeringValue = mapWithDeadband(elevatorControl, 0, 100, 50, deadbandRadius, -255, 255); |
|
| 124 | - |
|
| 125 | - // Apply sensitivity factors |
|
| 126 | - long throttleValue = rawThrottleValue * throttleFactor; |
|
| 127 | - long adjustedSteeringValue = rawSteeringValue * steeringFactor; |
|
| 128 | - |
|
| 129 | - // Mix throttle and steering for differential drive |
|
| 130 | - long motor1Pwm = throttleValue + adjustedSteeringValue; |
|
| 131 | - long motor2Pwm = throttleValue - adjustedSteeringValue; |
|
| 132 | - |
|
| 133 | - // Constrain PWM values to the valid range [-255, 255] |
|
| 134 | - motor1Pwm = constrain(motor1Pwm, -255, 255); |
|
| 135 | - motor2Pwm = constrain(motor2Pwm, -255, 255); |
|
| 136 | - |
|
| 137 | - // Set motor speeds and directions |
|
| 138 | - setMotorOutput(IN1, ENA, motor1Pwm); // Motor 1 |
|
| 139 | - setMotorOutput(IN2, ENB, motor2Pwm); // Motor 2 |
|
| 140 | - |
|
| 141 | - delay(20); // Shorter delay for better responsiveness |
|
| 142 | -} |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-code-dat/PWM-2ch-v2.ino
| ... | ... | @@ -1,68 +0,0 @@ |
| 1 | -// RC signal input pins |
|
| 2 | -#define THROTTLE_PIN 2 // Channel 1 (forward/back) |
|
| 3 | -#define STEERING_PIN 3 // Channel 2 (left/right) |
|
| 4 | - |
|
| 5 | -// Motor control pins (L298N) |
|
| 6 | -#define LEFT_ENA 9 |
|
| 7 | -#define LEFT_IN1 4 |
|
| 8 | -#define LEFT_IN2 5 |
|
| 9 | - |
|
| 10 | -#define RIGHT_ENB 10 |
|
| 11 | -#define RIGHT_IN3 6 |
|
| 12 | -#define RIGHT_IN4 7 |
|
| 13 | - |
|
| 14 | -int throttle, steering; |
|
| 15 | - |
|
| 16 | -void setup() { |
|
| 17 | - pinMode(THROTTLE_PIN, INPUT); |
|
| 18 | - pinMode(STEERING_PIN, INPUT); |
|
| 19 | - |
|
| 20 | - pinMode(LEFT_IN1, OUTPUT); |
|
| 21 | - pinMode(LEFT_IN2, OUTPUT); |
|
| 22 | - pinMode(LEFT_ENA, OUTPUT); |
|
| 23 | - |
|
| 24 | - pinMode(RIGHT_IN3, OUTPUT); |
|
| 25 | - pinMode(RIGHT_IN4, OUTPUT); |
|
| 26 | - pinMode(RIGHT_ENB, OUTPUT); |
|
| 27 | - |
|
| 28 | - Serial.begin(9600); |
|
| 29 | -} |
|
| 30 | - |
|
| 31 | -void loop() { |
|
| 32 | - // Read PWM input |
|
| 33 | - throttle = pulseIn(THROTTLE_PIN, HIGH, 25000); |
|
| 34 | - steering = pulseIn(STEERING_PIN, HIGH, 25000); |
|
| 35 | - |
|
| 36 | - // Center = 1500, range = 1000–2000 |
|
| 37 | - int throttleVal = map(throttle, 1000, 2000, -255, 255); |
|
| 38 | - int steeringVal = map(steering, 1000, 2000, -100, 100); // less aggressive |
|
| 39 | - |
|
| 40 | - // Motor mixing (differential drive) |
|
| 41 | - int leftSpeed = constrain(throttleVal + steeringVal, -255, 255); |
|
| 42 | - int rightSpeed = constrain(throttleVal - steeringVal, -255, 255); |
|
| 43 | - |
|
| 44 | - setMotor(LEFT_IN1, LEFT_IN2, LEFT_ENA, leftSpeed); |
|
| 45 | - setMotor(RIGHT_IN3, RIGHT_IN4, RIGHT_ENB, rightSpeed); |
|
| 46 | - |
|
| 47 | - // Debug |
|
| 48 | - Serial.print("Throttle: "); Serial.print(throttleVal); |
|
| 49 | - Serial.print(" Steering: "); Serial.print(steeringVal); |
|
| 50 | - Serial.print(" L: "); Serial.print(leftSpeed); |
|
| 51 | - Serial.print(" R: "); Serial.println(rightSpeed); |
|
| 52 | - |
|
| 53 | - delay(20); |
|
| 54 | -} |
|
| 55 | - |
|
| 56 | -void setMotor(int in1, int in2, int ena, int speed) { |
|
| 57 | - if (speed > 0) { |
|
| 58 | - digitalWrite(in1, HIGH); |
|
| 59 | - digitalWrite(in2, LOW); |
|
| 60 | - } else if (speed < 0) { |
|
| 61 | - digitalWrite(in1, LOW); |
|
| 62 | - digitalWrite(in2, HIGH); |
|
| 63 | - } else { |
|
| 64 | - digitalWrite(in1, LOW); |
|
| 65 | - digitalWrite(in2, LOW); |
|
| 66 | - } |
|
| 67 | - analogWrite(ena, abs(speed)); |
|
| 68 | -} |
Tech-dat/Network-dat/RC-dat/RC-code-dat/PWM-2ch.ino
| ... | ... | @@ -1,136 +0,0 @@ |
| 1 | -// Define pins for each RC channel |
|
| 2 | -int aileronPin = 14; // Channel 1 (Throttle) |
|
| 3 | -int elevatorPin = 12; // Channel 2 (Steering) |
|
| 4 | - |
|
| 5 | -const int ENA = 5; // PWM for speed for Motor 1 |
|
| 6 | -const int ENB = 4; // PWM for speed for Motor 2 |
|
| 7 | - |
|
| 8 | -const int IN1 = 0; // Direction for Motor 1 |
|
| 9 | -const int IN2 = 2; // Direction pin 1 for Motor 2 |
|
| 10 | - |
|
| 11 | -long aileronControl; // Mapped value from aileron channel (0-100) |
|
| 12 | -long elevatorControl; // Mapped value from elevator channel (0-100) |
|
| 13 | - |
|
| 14 | -// Reads the PWM signal from the aileron channel and maps it to 0-100 |
|
| 15 | -long readAileronControlSignal() { |
|
| 16 | - unsigned long rawPWM = pulseIn(aileronPin, HIGH, 25000); |
|
| 17 | - if (rawPWM == 0) { // Timeout or no signal |
|
| 18 | - return 50; // Mid-point for 0-100 scale (1500us equivalent) |
|
| 19 | - } |
|
| 20 | - long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 21 | - return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 22 | -} |
|
| 23 | - |
|
| 24 | -// Reads the PWM signal from the elevator channel and maps it to 0-100 |
|
| 25 | -long readElevatorControlSignal() { |
|
| 26 | - unsigned long rawPWM = pulseIn(elevatorPin, HIGH, 25000); |
|
| 27 | - if (rawPWM == 0) { // Timeout or no signal |
|
| 28 | - return 50; // Mid-point for 0-100 scale (1500us equivalent) |
|
| 29 | - } |
|
| 30 | - long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 31 | - return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 32 | -} |
|
| 33 | - |
|
| 34 | -void setup() { |
|
| 35 | - pinMode(aileronPin, INPUT); |
|
| 36 | - pinMode(elevatorPin, INPUT); // Initialize elevator pin |
|
| 37 | - |
|
| 38 | - pinMode(ENA, OUTPUT); |
|
| 39 | - pinMode(ENB, OUTPUT); |
|
| 40 | - pinMode(IN1, OUTPUT); |
|
| 41 | - pinMode(IN2, OUTPUT); |
|
| 42 | - |
|
| 43 | - // Initialize motors to off |
|
| 44 | - digitalWrite(IN1, LOW); |
|
| 45 | - digitalWrite(IN2, LOW); |
|
| 46 | - analogWrite(ENA, 0); |
|
| 47 | - analogWrite(ENB, 0); |
|
| 48 | - |
|
| 49 | - Serial.begin(9600); |
|
| 50 | -} |
|
| 51 | - |
|
| 52 | -// Helper function to control a single motor |
|
| 53 | -// pwmVal: -255 (full backward) to 255 (full forward) |
|
| 54 | -void setMotorOutput(int dirPin, int speedPin, int pwmVal) { |
|
| 55 | - if (pwmVal > 0) { // Forward |
|
| 56 | - digitalWrite(dirPin, HIGH); |
|
| 57 | - analogWrite(speedPin, pwmVal); |
|
| 58 | - } else if (pwmVal < 0) { // Backward |
|
| 59 | - digitalWrite(dirPin, LOW); |
|
| 60 | - analogWrite(speedPin, -pwmVal); // Speed is positive |
|
| 61 | - } else { // Stop |
|
| 62 | - digitalWrite(dirPin, LOW); // Or HIGH, doesn't matter much if speed is 0 |
|
| 63 | - analogWrite(speedPin, 0); |
|
| 64 | - } |
|
| 65 | -} |
|
| 66 | - |
|
| 67 | -// Helper function to map RC control input (0-100) to an output range (e.g., -255 to 255) |
|
| 68 | -// with a deadband around the center (e.g., 50). |
|
| 69 | -long mapWithDeadband(long rcValue, int rcMin, int rcMax, int rcCenter, int deadbandRadius, int outMin, int outMax) { |
|
| 70 | - long mappedValue = 0; |
|
| 71 | - int deadbandLower = rcCenter - deadbandRadius; |
|
| 72 | - int deadbandUpper = rcCenter + deadbandRadius; |
|
| 73 | - |
|
| 74 | - if (rcValue < deadbandLower) { |
|
| 75 | - // Map the range [rcMin, deadbandLower - 1] to [outMin, -1] |
|
| 76 | - // Ensure deadbandLower - 1 is not less than rcMin |
|
| 77 | - if (deadbandLower -1 < rcMin) { |
|
| 78 | - mappedValue = outMin; |
|
| 79 | - } else { |
|
| 80 | - mappedValue = map(rcValue, rcMin, deadbandLower - 1, outMin, -1); |
|
| 81 | - } |
|
| 82 | - } else if (rcValue > deadbandUpper) { |
|
| 83 | - // Map the range [deadbandUpper + 1, rcMax] to [1, outMax] |
|
| 84 | - // Ensure deadbandUpper + 1 is not greater than rcMax |
|
| 85 | - if (deadbandUpper + 1 > rcMax) { |
|
| 86 | - mappedValue = outMax; |
|
| 87 | - } else { |
|
| 88 | - mappedValue = map(rcValue, deadbandUpper + 1, rcMax, 1, outMax); |
|
| 89 | - } |
|
| 90 | - } else { |
|
| 91 | - // Inside deadband |
|
| 92 | - mappedValue = 0; |
|
| 93 | - } |
|
| 94 | - return constrain(mappedValue, outMin, outMax); |
|
| 95 | -} |
|
| 96 | - |
|
| 97 | -void loop() { |
|
| 98 | - // Read mapped control signals from each channel |
|
| 99 | - aileronControl = readAileronControlSignal(); // Throttle (0-100) |
|
| 100 | - elevatorControl = readElevatorControlSignal(); // Steering (0-100) |
|
| 101 | - |
|
| 102 | - // Print the mapped control signal values to the Serial Monitor |
|
| 103 | - Serial.print("Aileron (Throttle): "); |
|
| 104 | - Serial.print(aileronControl); |
|
| 105 | - Serial.print(" Elevator (Steering): "); |
|
| 106 | - Serial.print(elevatorControl); |
|
| 107 | - Serial.println(); |
|
| 108 | - |
|
| 109 | - // Define deadband radius (e.g., +/- 5 around center of 50 for a 0-100 input) |
|
| 110 | - // This means input values from 45 to 55 (inclusive if center is 50 and radius is 5) will be treated as 0. |
|
| 111 | - int deadbandRadius = 5; |
|
| 112 | - float steeringFactor = 1.5; // Adjust this value to change steering sensitivity |
|
| 113 | - float throttleFactor = 1.3; // Adjust this value to change throttle sensitivity (e.g., 1.2 for 20% stronger throttle) |
|
| 114 | - |
|
| 115 | - // Map control values with deadband |
|
| 116 | - long rawThrottleValue = mapWithDeadband(aileronControl, 0, 100, 50, deadbandRadius, -255, 255); |
|
| 117 | - long rawSteeringValue = mapWithDeadband(elevatorControl, 0, 100, 50, deadbandRadius, -255, 255); |
|
| 118 | - |
|
| 119 | - // Apply sensitivity factors |
|
| 120 | - long throttleValue = rawThrottleValue * throttleFactor; |
|
| 121 | - long adjustedSteeringValue = rawSteeringValue * steeringFactor; |
|
| 122 | - |
|
| 123 | - // Mix throttle and steering for differential drive |
|
| 124 | - long motor1Pwm = throttleValue + adjustedSteeringValue; |
|
| 125 | - long motor2Pwm = throttleValue - adjustedSteeringValue; |
|
| 126 | - |
|
| 127 | - // Constrain PWM values to the valid range [-255, 255] |
|
| 128 | - motor1Pwm = constrain(motor1Pwm, -255, 255); |
|
| 129 | - motor2Pwm = constrain(motor2Pwm, -255, 255); |
|
| 130 | - |
|
| 131 | - // Set motor speeds and directions |
|
| 132 | - setMotorOutput(IN1, ENA, motor1Pwm); // Motor 1 |
|
| 133 | - setMotorOutput(IN2, ENB, motor2Pwm); // Motor 2 |
|
| 134 | - |
|
| 135 | - delay(20); // Shorter delay for better responsiveness |
|
| 136 | -} |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-code-dat/RC-code-dat.md
| ... | ... | @@ -1,16 +0,0 @@ |
| 1 | - |
|
| 2 | -# RC-code-dat |
|
| 3 | - |
|
| 4 | -## working for |
|
| 5 | - |
|
| 6 | -- [[SDR1064-dat]] |
|
| 7 | - |
|
| 8 | -## code |
|
| 9 | - |
|
| 10 | -- [[PWM-1ch.ino]] - [[PWM-2ch.ino]] - [[PWM-2ch-v2.ino]] |
|
| 11 | - |
|
| 12 | -## ref |
|
| 13 | - |
|
| 14 | -- [[PWM-dat]] |
|
| 15 | - |
|
| 16 | -- [[RC-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-code-dat/rover-1.ino
| ... | ... | @@ -1,94 +0,0 @@ |
| 1 | -// Define pins for each RC channel |
|
| 2 | -int aileronPin = 14; // Channel 1 (Throttle) |
|
| 3 | -int elevatorPin = 12; // Channel 2 (Steering) |
|
| 4 | - |
|
| 5 | -const int ENA = 5; // PWM for speed for Motor 1 |
|
| 6 | -const int ENB = 4; // PWM for speed for Motor 2 |
|
| 7 | - |
|
| 8 | -const int IN1 = 0; // Direction for Motor 1 |
|
| 9 | -const int IN2 = 2; // Direction pin 1 for Motor 2 |
|
| 10 | - |
|
| 11 | -long aileronControl; // Mapped value from aileron channel (0-100) |
|
| 12 | -long elevatorControl; // Mapped value from elevator channel (0-100) |
|
| 13 | - |
|
| 14 | -// Reads the PWM signal from the aileron channel and maps it to 0-100 |
|
| 15 | -long readAileronControlSignal() { |
|
| 16 | - unsigned long rawPWM = pulseIn(aileronPin, HIGH, 25000); |
|
| 17 | - // If signal is lost (timeout) or clearly out of valid RC pulse range, return neutral (50) |
|
| 18 | - if (rawPWM == 0 || rawPWM < 900 || rawPWM > 2100) { |
|
| 19 | - return 50; // Mid-point for 0-100 scale |
|
| 20 | - } |
|
| 21 | - long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 22 | - return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 23 | -} |
|
| 24 | - |
|
| 25 | -// Reads the PWM signal from the elevator channel and maps it to 0-100 |
|
| 26 | -long readElevatorControlSignal() { |
|
| 27 | - unsigned long rawPWM = pulseIn(elevatorPin, HIGH, 25000); |
|
| 28 | - // If signal is lost (timeout) or clearly out of valid RC pulse range, return neutral (50) |
|
| 29 | - if (rawPWM == 0 || rawPWM < 900 || rawPWM > 2100) { |
|
| 30 | - return 50; // Mid-point for 0-100 scale |
|
| 31 | - } |
|
| 32 | - long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 33 | - return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 34 | -} |
|
| 35 | - |
|
| 36 | -void setup() { |
|
| 37 | - pinMode(aileronPin, INPUT); |
|
| 38 | - pinMode(elevatorPin, INPUT); |
|
| 39 | - |
|
| 40 | - pinMode(ENA, OUTPUT); |
|
| 41 | - pinMode(ENB, OUTPUT); |
|
| 42 | - pinMode(IN1, OUTPUT); |
|
| 43 | - pinMode(IN2, OUTPUT); |
|
| 44 | - |
|
| 45 | - // Initialize motors to off |
|
| 46 | - digitalWrite(IN1, LOW); |
|
| 47 | - digitalWrite(IN2, LOW); |
|
| 48 | - analogWrite(ENA, 0); |
|
| 49 | - analogWrite(ENB, 0); |
|
| 50 | -} |
|
| 51 | - |
|
| 52 | -// Helper function to control a single motor |
|
| 53 | -// pwmVal: -255 (full backward) to 255 (full forward) |
|
| 54 | -void setMotorOutput(int dirPin, int speedPin, int pwmVal) { |
|
| 55 | - if (pwmVal > 0) { // Forward |
|
| 56 | - digitalWrite(dirPin, HIGH); |
|
| 57 | - analogWrite(speedPin, pwmVal); |
|
| 58 | - } else if (pwmVal < 0) { // Backward |
|
| 59 | - digitalWrite(dirPin, LOW); |
|
| 60 | - analogWrite(speedPin, -pwmVal); // Speed is positive |
|
| 61 | - } else { // Stop |
|
| 62 | - digitalWrite(dirPin, LOW); |
|
| 63 | - analogWrite(speedPin, 0); |
|
| 64 | - } |
|
| 65 | -} |
|
| 66 | - |
|
| 67 | -void loop() { |
|
| 68 | - // Read mapped control signals from each channel |
|
| 69 | - aileronControl = readAileronControlSignal(); // Throttle (0-100, 50 is neutral) |
|
| 70 | - elevatorControl = readElevatorControlSignal(); // Steering (0-100, 50 is neutral) |
|
| 71 | - |
|
| 72 | - // Map control values directly |
|
| 73 | - // aileronControl (0-100) to throttleValue (-255 to 255) |
|
| 74 | - // 0 -> -255 (full reverse), 50 -> 0 (stop), 100 -> 255 (full forward) |
|
| 75 | - long throttleValue = map(aileronControl, 0, 100, -255, 255); |
|
| 76 | - |
|
| 77 | - // elevatorControl (0-100) to steeringValue (-255 to 255) |
|
| 78 | - // 0 -> -255 (full left turn effect), 50 -> 0 (straight), 100 -> 255 (full right turn effect) |
|
| 79 | - long steeringValue = map(elevatorControl, 0, 100, -255, 255); |
|
| 80 | - |
|
| 81 | - // Mix throttle and steering for differential drive |
|
| 82 | - long motor1Pwm = throttleValue + steeringValue; |
|
| 83 | - long motor2Pwm = throttleValue - steeringValue; |
|
| 84 | - |
|
| 85 | - // Constrain PWM values to the valid range [-255, 255] |
|
| 86 | - motor1Pwm = constrain(motor1Pwm, -255, 255); |
|
| 87 | - motor2Pwm = constrain(motor2Pwm, -255, 255); |
|
| 88 | - |
|
| 89 | - // Set motor speeds and directions |
|
| 90 | - setMotorOutput(IN1, ENA, motor1Pwm); // Motor 1 |
|
| 91 | - setMotorOutput(IN2, ENB, motor2Pwm); // Motor 2 |
|
| 92 | - |
|
| 93 | - delay(20); // Delay for responsiveness |
|
| 94 | -} |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-code-dat/rover-2.ino
| ... | ... | @@ -1,170 +0,0 @@ |
| 1 | -#include <Adafruit_NeoPixel.h> |
|
| 2 | - |
|
| 3 | -// Define pins for each RC channel |
|
| 4 | -int aileronPin = 14; // Channel 1 (Throttle) |
|
| 5 | -int elevatorPin = 12; // Channel 2 (Steering) |
|
| 6 | - |
|
| 7 | -const int ENA = 5; // PWM for speed for Motor 1 |
|
| 8 | -const int ENB = 4; // PWM for speed for Motor 2 |
|
| 9 | - |
|
| 10 | -const int IN1 = 0; // Direction for Motor 1 |
|
| 11 | -const int IN2 = 2; // Direction pin 1 for Motor 2 |
|
| 12 | - |
|
| 13 | -// WS2812 LED Strip Configuration |
|
| 14 | -#define LED_PIN 15 |
|
| 15 | -#define LED_COUNT 8 |
|
| 16 | -Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); |
|
| 17 | - |
|
| 18 | -long aileronControl; // Mapped value from aileron channel (0-100) |
|
| 19 | -long elevatorControl; // Mapped value from elevator channel (0-100) |
|
| 20 | - |
|
| 21 | -// Reads the PWM signal from the aileron channel and maps it to 0-100 |
|
| 22 | -long readAileronControlSignal() { |
|
| 23 | - unsigned long rawPWM = pulseIn(aileronPin, HIGH, 25000); |
|
| 24 | - // If signal is lost (timeout) or clearly out of valid RC pulse range, return neutral (50) |
|
| 25 | - // Valid RC pulses are typically 1000-2000us. Values outside ~900-2100us are treated as invalid. |
|
| 26 | - if (rawPWM == 0 || rawPWM < 900 || rawPWM > 2100) { |
|
| 27 | - return 50; // Mid-point for 0-100 scale (1500us equivalent), results in stop |
|
| 28 | - } |
|
| 29 | - // Otherwise, the signal is likely valid; constrain it to the standard 1000-2000us range and map |
|
| 30 | - long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 31 | - return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 32 | -} |
|
| 33 | - |
|
| 34 | -// Reads the PWM signal from the elevator channel and maps it to 0-100 |
|
| 35 | -long readElevatorControlSignal() { |
|
| 36 | - unsigned long rawPWM = pulseIn(elevatorPin, HIGH, 25000); |
|
| 37 | - // If signal is lost (timeout) or clearly out of valid RC pulse range, return neutral (50) |
|
| 38 | - // Valid RC pulses are typically 1000-2000us. Values outside ~900-2100us are treated as invalid. |
|
| 39 | - if (rawPWM == 0 || rawPWM < 900 || rawPWM > 2100) { |
|
| 40 | - return 50; // Mid-point for 0-100 scale (1500us equivalent), results in stop |
|
| 41 | - } |
|
| 42 | - // Otherwise, the signal is likely valid; constrain it to the standard 1000-2000us range and map |
|
| 43 | - long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 44 | - return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 45 | -} |
|
| 46 | - |
|
| 47 | -void setup() { |
|
| 48 | - pinMode(aileronPin, INPUT); |
|
| 49 | - pinMode(elevatorPin, INPUT); // Initialize elevator pin |
|
| 50 | - |
|
| 51 | - pinMode(ENA, OUTPUT); |
|
| 52 | - pinMode(ENB, OUTPUT); |
|
| 53 | - pinMode(IN1, OUTPUT); |
|
| 54 | - pinMode(IN2, OUTPUT); |
|
| 55 | - |
|
| 56 | - // Initialize motors to off |
|
| 57 | - digitalWrite(IN1, LOW); |
|
| 58 | - digitalWrite(IN2, LOW); |
|
| 59 | - analogWrite(ENA, 0); |
|
| 60 | - analogWrite(ENB, 0); |
|
| 61 | - |
|
| 62 | - Serial.begin(9600); |
|
| 63 | - |
|
| 64 | - strip.begin(); // INITIALIZE NeoPixel strip object (REQUIRED) |
|
| 65 | - strip.show(); // Turn OFF all pixels ASAP |
|
| 66 | - strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255) |
|
| 67 | -} |
|
| 68 | - |
|
| 69 | -// Helper function to control a single motor |
|
| 70 | -// pwmVal: -255 (full backward) to 255 (full forward) |
|
| 71 | -void setMotorOutput(int dirPin, int speedPin, int pwmVal) { |
|
| 72 | - if (pwmVal > 0) { // Forward |
|
| 73 | - digitalWrite(dirPin, HIGH); |
|
| 74 | - analogWrite(speedPin, pwmVal); |
|
| 75 | - } else if (pwmVal < 0) { // Backward |
|
| 76 | - digitalWrite(dirPin, LOW); |
|
| 77 | - analogWrite(speedPin, -pwmVal); // Speed is positive |
|
| 78 | - } else { // Stop |
|
| 79 | - digitalWrite(dirPin, LOW); // Or HIGH, doesn't matter much if speed is 0 |
|
| 80 | - analogWrite(speedPin, 0); |
|
| 81 | - } |
|
| 82 | -} |
|
| 83 | - |
|
| 84 | -// Helper function to map RC control input (0-100) to an output range (e.g., -255 to 255) |
|
| 85 | -// with a deadband around the center (e.g., 50). |
|
| 86 | -long mapWithDeadband(long rcValue, int rcMin, int rcMax, int rcCenter, int deadbandRadius, int outMin, int outMax) { |
|
| 87 | - long mappedValue = 0; |
|
| 88 | - int deadbandLower = rcCenter - deadbandRadius; |
|
| 89 | - int deadbandUpper = rcCenter + deadbandRadius; |
|
| 90 | - |
|
| 91 | - if (rcValue < deadbandLower) { |
|
| 92 | - // Map the range [rcMin, deadbandLower - 1] to [outMin, -1] |
|
| 93 | - // Ensure deadbandLower - 1 is not less than rcMin |
|
| 94 | - if (deadbandLower -1 < rcMin) { |
|
| 95 | - mappedValue = outMin; |
|
| 96 | - } else { |
|
| 97 | - mappedValue = map(rcValue, rcMin, deadbandLower - 1, outMin, -1); |
|
| 98 | - } |
|
| 99 | - } else if (rcValue > deadbandUpper) { |
|
| 100 | - // Map the range [deadbandUpper + 1, rcMax] to [1, outMax] |
|
| 101 | - // Ensure deadbandUpper + 1 is not greater than rcMax |
|
| 102 | - if (deadbandUpper + 1 > rcMax) { |
|
| 103 | - mappedValue = outMax; |
|
| 104 | - } else { |
|
| 105 | - mappedValue = map(rcValue, deadbandUpper + 1, rcMax, 1, outMax); |
|
| 106 | - } |
|
| 107 | - } else { |
|
| 108 | - // Inside deadband |
|
| 109 | - mappedValue = 0; |
|
| 110 | - } |
|
| 111 | - return constrain(mappedValue, outMin, outMax); |
|
| 112 | -} |
|
| 113 | - |
|
| 114 | -// Function to create a random blinking effect for WS2812 LEDs |
|
| 115 | -void randomBlinkEffect() { |
|
| 116 | - for (int i = 0; i < LED_COUNT; i++) { |
|
| 117 | - // Turn on a random LED with a random color |
|
| 118 | - if (random(0, 2) == 1) { // 50% chance to turn on this LED |
|
| 119 | - strip.setPixelColor(i, strip.Color(random(0, 256), random(0, 256), random(0, 256))); |
|
| 120 | - } else { |
|
| 121 | - strip.setPixelColor(i, strip.Color(0, 0, 0)); // Turn off |
|
| 122 | - } |
|
| 123 | - } |
|
| 124 | - strip.show(); // Send the updated pixel colors to the hardware. |
|
| 125 | - delay(100); // Wait a short period |
|
| 126 | -} |
|
| 127 | - |
|
| 128 | -void loop() { |
|
| 129 | - // Read mapped control signals from each channel |
|
| 130 | - aileronControl = readAileronControlSignal(); // Throttle (0-100) |
|
| 131 | - elevatorControl = readElevatorControlSignal(); // Steering (0-100) |
|
| 132 | - |
|
| 133 | - // Print the mapped control signal values to the Serial Monitor |
|
| 134 | - Serial.print("Aileron (Throttle): "); |
|
| 135 | - Serial.print(aileronControl); |
|
| 136 | - Serial.print(" Elevator (Steering): "); |
|
| 137 | - Serial.print(elevatorControl); |
|
| 138 | - Serial.println(); |
|
| 139 | - |
|
| 140 | - // Define deadband radius (e.g., +/- 5 around center of 50 for a 0-100 input) |
|
| 141 | - // This means input values from 45 to 55 (inclusive if center is 50 and radius is 5) will be treated as 0. |
|
| 142 | - int deadbandRadius = 15; |
|
| 143 | - float steeringFactor = 3; // Adjust this value to change steering sensitivity |
|
| 144 | - float throttleFactor = 3; // Adjust this value to change throttle sensitivity (e.g., 1.2 for 20% stronger throttle) |
|
| 145 | - |
|
| 146 | - // Map control values with deadband |
|
| 147 | - long rawThrottleValue = mapWithDeadband(aileronControl, 0, 100, 50, deadbandRadius, -255, 255); |
|
| 148 | - long rawSteeringValue = mapWithDeadband(elevatorControl, 0, 100, 50, deadbandRadius, -255, 255); |
|
| 149 | - |
|
| 150 | - // Apply sensitivity factors |
|
| 151 | - long throttleValue = rawThrottleValue * throttleFactor; |
|
| 152 | - long adjustedSteeringValue = rawSteeringValue * steeringFactor; |
|
| 153 | - |
|
| 154 | - // Mix throttle and steering for differential drive |
|
| 155 | - long motor1Pwm = throttleValue + adjustedSteeringValue; |
|
| 156 | - long motor2Pwm = throttleValue - adjustedSteeringValue; |
|
| 157 | - |
|
| 158 | - // Constrain PWM values to the valid range [-255, 255] |
|
| 159 | - motor1Pwm = constrain(motor1Pwm, -255, 255); |
|
| 160 | - motor2Pwm = constrain(motor2Pwm, -255, 255); |
|
| 161 | - |
|
| 162 | - // Set motor speeds and directions |
|
| 163 | - setMotorOutput(IN1, ENA, motor1Pwm); // Motor 1 |
|
| 164 | - setMotorOutput(IN2, ENB, motor2Pwm); // Motor 2 |
|
| 165 | - |
|
| 166 | - // Add the LED effect |
|
| 167 | - randomBlinkEffect(); |
|
| 168 | - |
|
| 169 | - delay(20); // Shorter delay for better responsiveness |
|
| 170 | -} |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-dat.md
| ... | ... | @@ -1,35 +0,0 @@ |
| 1 | - |
|
| 2 | -# RC-dat |
|
| 3 | - |
|
| 4 | - |
|
| 5 | -## RC - apps |
|
| 6 | - |
|
| 7 | -- [[rover-dat]] - [[RC-car-dat]] - [[RC-car-hack-dat]] - [[video-rc-car-dat]] |
|
| 8 | - |
|
| 9 | -- [[quadcopter-dat]] - [[FPV-dat]] |
|
| 10 | - |
|
| 11 | -- [[airplane-dat]] |
|
| 12 | - |
|
| 13 | -- [[UAV-dat]] |
|
| 14 | - |
|
| 15 | - |
|
| 16 | - |
|
| 17 | - |
|
| 18 | - |
|
| 19 | -## RC - signal |
|
| 20 | - |
|
| 21 | -- [[RC-signal-dat]] |
|
| 22 | - |
|
| 23 | -## RC - systems |
|
| 24 | - |
|
| 25 | -- [[ardupilot-dat]] |
|
| 26 | - |
|
| 27 | -## RC - Hardware |
|
| 28 | - |
|
| 29 | -- [[flight-controller-dat]] - [[RC-link-dat]] |
|
| 30 | - |
|
| 31 | -- [[BMS-dat]] - [[battery-dat]] |
|
| 32 | - |
|
| 33 | -## RC - manufacturers |
|
| 34 | - |
|
| 35 | -- [[Wfly-dat]] - [[betaFPV-dat]] - [[speedybee-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-link-dat/2025-05-23-16-14-35.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-link-dat/2025-05-23-16-14-35.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-link-dat/RC-link-dat.md
| ... | ... | @@ -1,48 +0,0 @@ |
| 1 | - |
|
| 2 | -# RC-link-dat |
|
| 3 | - |
|
| 4 | -- [[Wfly-dat]] - [[WFT06x-dat]] - [[WFR06S-dat]] |
|
| 5 | - |
|
| 6 | -## RC Tx |
|
| 7 | - |
|
| 8 | -- [[PX4-dat]] |
|
| 9 | - |
|
| 10 | - |
|
| 11 | - |
|
| 12 | - |
|
| 13 | - |
|
| 14 | -## RC Receiver |
|
| 15 | - |
|
| 16 | -When you push the **RC console (joystick or stick) up and down**, you're typically controlling the throttle or elevator channel, depending on the mode of your transmitter. The PWM (Pulse Width Modulation) signal output sent to the receiver or flight controller varies accordingly: |
|
| 17 | - |
|
| 18 | -PWM signal range: ~1000 µs (microseconds) to ~2000 µs |
|
| 19 | - |
|
| 20 | - Center/stick neutral: ~1500 µs |
|
| 21 | - |
|
| 22 | - Stick fully down: ~1000 µs |
|
| 23 | - |
|
| 24 | - Stick fully up: ~2000 µs |
|
| 25 | - |
|
| 26 | -Example: |
|
| 27 | - |
|
| 28 | -If you're using Mode 2 (common mode): |
|
| 29 | - |
|
| 30 | -Left stick up/down = Throttle |
|
| 31 | - |
|
| 32 | - Stick down = 1000 µs (zero throttle) |
|
| 33 | - |
|
| 34 | - Stick up = 2000 µs (full throttle) |
|
| 35 | - |
|
| 36 | -If it's controlling elevator (pitch): |
|
| 37 | - |
|
| 38 | - Stick down (nose down) = 1000 µs |
|
| 39 | - |
|
| 40 | - Stick up (nose up) = 2000 µs |
|
| 41 | - |
|
| 42 | - |
|
| 43 | - |
|
| 44 | -## ref |
|
| 45 | - |
|
| 46 | -- https://docs.px4.io/v1.11/en/getting_started/rc_transmitter_receiver.html |
|
| 47 | - |
|
| 48 | -- [[RC-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/CRSF-dat/CRSF-dat.md
| ... | ... | @@ -1,74 +0,0 @@ |
| 1 | - |
|
| 2 | -# CRSF-dat |
|
| 3 | - |
|
| 4 | -CRSF (Crossfire Serial Protocol) is a low-latency, high-speed serial protocol developed by **Team BlackSheep (TBS)** for communication between radio receivers (like TBS Crossfire Nano RX) and flight controllers. |
|
| 5 | - |
|
| 6 | -It’s used in RC applications (especially FPV drones) to transmit RC channel data, telemetry, and link status over a compact serial format. |
|
| 7 | - |
|
| 8 | -CRSF packets are binary data. Here's the basic structure of a CRSF packet: |
|
| 9 | - |
|
| 10 | -## CRSF Packet Structure (General) |
|
| 11 | - |
|
| 12 | -| Byte Index | Name | Description | |
|
| 13 | -|------------|----------------|---------------------------------------------| |
|
| 14 | -| 0 | Device Address | Who is sending (e.g., RX, TX) | |
|
| 15 | -| 1 | Frame Length | Length of payload + 1 (type byte + data) | |
|
| 16 | -| 2 | Frame Type | Type of data (e.g., RC channels, telemetry) | |
|
| 17 | -| 3 - N | Payload | Actual data, varies by Frame Type | |
|
| 18 | -| Last Byte | CRC | Checksum for packet validation | |
|
| 19 | - |
|
| 20 | - |
|
| 21 | -This is how a typical RC channel data packet might look (in hex): |
|
| 22 | - |
|
| 23 | -C8 18 16 A1 84 3F C1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9E |
|
| 24 | - |
|
| 25 | -## RC Channel Encoding (Packed 11-bit) |
|
| 26 | - |
|
| 27 | -Each RC channel is packed as 11-bit little-endian integers, with up to 16 channels per frame. Example values: |
|
| 28 | - |
|
| 29 | -- 1000 → channel center |
|
| 30 | -- 172 → min |
|
| 31 | -- 1811 → max |
|
| 32 | - |
|
| 33 | -## read data via serial |
|
| 34 | - |
|
| 35 | -Yes, you can use a serial port to read CRSF data, because CRSF is a serial protocol — specifically, a half-duplex, asynchronous UART protocol using 8N1 (8 data bits, no parity, 1 stop bit). |
|
| 36 | - |
|
| 37 | -### 📡 CRSF over Serial – Quick Guide |
|
| 38 | - |
|
| 39 | -- **Baud rate**: 420000 or 115200 (depends on TX/RX version or setting) |
|
| 40 | -- **Protocol**: UART (8N1) |
|
| 41 | -- **Signal direction**: Half-duplex (same wire for TX and RX) |
|
| 42 | -- **Voltage**: 3.3V (NOT 5V safe on most Crossfire receivers) |
|
| 43 | -- **Typical usage**: Read CRSF data from TBS Nano RX or TX |
|
| 44 | - |
|
| 45 | -#### 🧰 What You Need: |
|
| 46 | -- A microcontroller or board with UART support (e.g., Arduino, ESP32, STM32, Raspberry Pi) |
|
| 47 | -- Logic-level conversion (if needed for 3.3V safety) |
|
| 48 | -- CRSF-compatible device (e.g., TBS Crossfire Nano RX) |
|
| 49 | - |
|
| 50 | -Code Concept (Pseudocode) |
|
| 51 | - |
|
| 52 | - |
|
| 53 | - Serial.begin(420000); // Or 115200 for some TX modules |
|
| 54 | - |
|
| 55 | - void loop() { |
|
| 56 | - if (Serial.available()) { |
|
| 57 | - uint8_t byte = Serial.read(); |
|
| 58 | - // Process CRSF packet bytes here |
|
| 59 | - } |
|
| 60 | - } |
|
| 61 | - |
|
| 62 | - |
|
| 63 | - |
|
| 64 | -## via ardupilot |
|
| 65 | - |
|
| 66 | -If you wish to use telemetry then a receiver can be connected to a UART utilizing the CRSF protocol. |
|
| 67 | - |
|
| 68 | -CRSF is a full-duplex protocol that supports integrated telemetry and a number of other features. Connect the RX pin of the UART to the CRSF TX pin of the CRSF device and vice versa. Currently a full-duplex UART connection is required. For best performance a UART with DMA capability on its RX port is desirable, but not required. A message will be displayed once on the GCS console, if connected to a UART without this capability on an F4/F7 based autopilot. |
|
| 69 | - |
|
| 70 | -https://ardupilot.org/rover/docs/common-tbs-rc.html#common-tbs-rc |
|
| 71 | - |
|
| 72 | -## ref |
|
| 73 | - |
|
| 74 | -- [[FPV-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/2025-04-25-17-30-48.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/2025-04-25-17-30-48.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/2025-05-04-15-29-54.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/2025-05-04-15-29-54.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/2025-05-04-15-31-56.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/2025-05-04-15-31-56.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-915M-dat.md
| ... | ... | @@ -1,4 +0,0 @@ |
| 1 | - |
|
| 2 | -# ELRS-915M-dat.md |
|
| 3 | - |
|
| 4 | - |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-HF-RF-Module-dat/2025-05-16-13-30-09.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-HF-RF-Module-dat/2025-05-16-13-30-09.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-HF-RF-Module-dat/ELRS-HF-RF-Module-dat.md
| ... | ... | @@ -1,10 +0,0 @@ |
| 1 | - |
|
| 2 | -# ELRS-HF-RF-Module-dat |
|
| 3 | - |
|
| 4 | -1.连接USB,高频头无需另外供电,第一次连接电脑如果你的系统是windows 10或以上并处于联网状态下,电脑会自动安装名为CH9102的USB-TTL驱动,刷写固件无需任何按键进入boot,刷写内置的,并且刷写内置Backpack也无需按任何按键和拨码开关,因为我们在内部设计了自动激活刷机模式电路与刷背包固件直通模式 |
|
| 5 | - |
|
| 6 | - |
|
| 7 | - |
|
| 8 | -## ref |
|
| 9 | - |
|
| 10 | -- [[ESP8266-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-04-25-17-34-11.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-04-25-17-34-11.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-05-12-14-23-11.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-05-12-14-23-11.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-05-16-13-31-40.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-05-16-13-31-40.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-05-16-13-32-31.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-05-16-13-32-31.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-05-16-13-33-12.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-05-16-13-33-12.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/7CH.json
| ... | ... | @@ -1,32 +0,0 @@ |
| 1 | -{ |
|
| 2 | - "customised": "true", |
|
| 3 | - "serial_rx": -1, |
|
| 4 | - "serial_tx": -1, |
|
| 5 | - "radio_dio1": 4, |
|
| 6 | - "radio_miso": 12, |
|
| 7 | - "radio_mosi": 13, |
|
| 8 | - "radio_nss": 15, |
|
| 9 | - "radio_rst": 2, |
|
| 10 | - "radio_sck": 14, |
|
| 11 | - "power_min": 0, |
|
| 12 | - "power_high": 0, |
|
| 13 | - "power_max": 0, |
|
| 14 | - "power_default": 0, |
|
| 15 | - "power_control": 0, |
|
| 16 | - "power_values": [ |
|
| 17 | - 13 |
|
| 18 | - ], |
|
| 19 | - "led": 16, |
|
| 20 | - "pwm_outputs": [ |
|
| 21 | - 0, |
|
| 22 | - 1, |
|
| 23 | - 3, |
|
| 24 | - 9, |
|
| 25 | - 10, |
|
| 26 | - 5, |
|
| 27 | - 16 |
|
| 28 | - ], |
|
| 29 | - "vbat": 17, |
|
| 30 | - "vbat_offset": 12, |
|
| 31 | - "vbat_scale": 310 |
|
| 32 | -} |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/CRSF.json
| ... | ... | @@ -1 +0,0 @@ |
| 1 | -{"customised":"true","serial_rx":3,"serial_tx":1,"radio_dio1":4,"radio_miso":12,"radio_mosi":13,"radio_nss":15,"radio_rst":2,"radio_sck":14,"power_min":0,"power_high":0,"power_max":0,"power_default":0,"power_control":0,"power_values":[13],"led":16,"pwm_outputs":[-1],"vbat":17,"vbat_offset":12,"vbat_scale":310} |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/ELRS-PWM-dat.md
| ... | ... | @@ -1,73 +0,0 @@ |
| 1 | - |
|
| 2 | -# ELRS-CHS-PWM-dat.md |
|
| 3 | - |
|
| 4 | - |
|
| 5 | - |
|
| 6 | - |
|
| 7 | - |
|
| 8 | -## Electrodragon 7CH PWM ELRS Receiver |
|
| 9 | - |
|
| 10 | - |
|
| 11 | -Electrodragon ELRS 2.4G Receiver, Seven-Channel PWM Receiver |
|
| 12 | - |
|
| 13 | -This receiver features independent PWM channel outputs, suitable for fixed-wing aircraft, cars, boats, and other models. It also supports CRSF output. The two output signals (PWM and CRSF) can be switched without re-flashing the firmware. |
|
| 14 | - |
|
| 15 | -Follow these steps to switch between PWM (6CH/7CH) and CRSF modes: |
|
| 16 | - |
|
| 17 | -**Accessing the Receiver's Wi-Fi Network:** |
|
| 18 | - |
|
| 19 | -1. **If connected to the high-frequency head (transmitter module):** Use the transmitter's LUA script menu to activate the receiver's Wi-Fi. |
|
| 20 | -2. **If not connected to the high-frequency head:** Power on the receiver and wait for one minute. The receiver will automatically enter Wi-Fi mode. |
|
| 21 | - |
|
| 22 | -**Connecting to the Receiver's Wi-Fi:** |
|
| 23 | - |
|
| 24 | -* Search for Wi-Fi networks on your computer or phone. |
|
| 25 | -* **Wi-Fi Hotspot Name (SSID):** `EXPRESSLRSRX` |
|
| 26 | -* **Connection Password (all lowercase):** `expresslrs` |
|
| 27 | - |
|
| 28 | -**Accessing the Configuration Page:** |
|
| 29 | - |
|
| 30 | -* Open a web browser and go to: `http://10.0.0.1/hardware.html` |
|
| 31 | - |
|
| 32 | -**Configuring the Receiver:** |
|
| 33 | - |
|
| 34 | -* This will take you to the ELRS hardware configuration page where you can import hardware configuration files. |
|
| 35 | -* **Caution:** Do not modify parameters yourself unless you fully understand their meaning. |
|
| 36 | -* Import the provided configuration file for either `PWM7CH` or `CRSF`. |
|
| 37 | -* Click the button at the bottom of the page and wait for the receiver to restart automatically. |
|
| 38 | - |
|
| 39 | - |
|
| 40 | - |
|
| 41 | -## custom PWM setup |
|
| 42 | - |
|
| 43 | - |
|
| 44 | - |
|
| 45 | - |
|
| 46 | - |
|
| 47 | - |
|
| 48 | -## setup for [[ELRS-HF-RF-module-dat]] |
|
| 49 | - |
|
| 50 | - |
|
| 51 | - |
|
| 52 | -## configuration file |
|
| 53 | - |
|
| 54 | -- [[7CH.json]] - [[CRSF.json]] |
|
| 55 | - |
|
| 56 | -the pwm channels |
|
| 57 | - |
|
| 58 | - "pwm_outputs": [ |
|
| 59 | - 0, |
|
| 60 | - 1, |
|
| 61 | - 3, |
|
| 62 | - 9, |
|
| 63 | - 10, |
|
| 64 | - 5, |
|
| 65 | - 16 |
|
| 66 | - ], |
|
| 67 | - |
|
| 68 | - |
|
| 69 | - |
|
| 70 | - |
|
| 71 | -## ref |
|
| 72 | - |
|
| 73 | -- [[ELRS-PWM]] - [[ELRS]] |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/2025-04-25-16-52-56.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/2025-04-25-16-52-56.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/2025-04-25-16-55-05.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/2025-04-25-16-55-05.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/2025-05-08-18-22-08.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/2025-05-08-18-22-08.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/2025-05-16-12-57-47.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/2025-05-16-12-57-47.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/ELRS-RX-dat.md
| ... | ... | @@ -1,90 +0,0 @@ |
| 1 | - |
|
| 2 | -# ELRS-RX-dat |
|
| 3 | - |
|
| 4 | - |
|
| 5 | -## T-anntena version |
|
| 6 | - |
|
| 7 | - |
|
| 8 | - |
|
| 9 | - |
|
| 10 | -- [[antenna-dat]] |
|
| 11 | - |
|
| 12 | -## SMD antenna version |
|
| 13 | - |
|
| 14 | -## info |
|
| 15 | - |
|
| 16 | -Nano2400-RX receiver with power amplifier (PA+LNA). |
|
| 17 | - |
|
| 18 | -Therefore, it has 100mW telemetry output and better sensitivity at longer distances. |
|
| 19 | - |
|
| 20 | -It uses an IPEX1 antenna connector. |
|
| 21 | - |
|
| 22 | -Paired with an external dipole T-antenna (customized by a professional factory, each antenna is tested with professional instruments to ensure quality, lightness, and durability). |
|
| 23 | - |
|
| 24 | -The CYCLONE series receivers are based on the open-source architecture and program of ExpressLRS. |
|
| 25 | - |
|
| 26 | -We have released 3 types of RX receiver modules. All use the [[ESP8285-dat]] [[MCU-dat]]. You can upgrade the firmware via [[WIFI-dat]], which is very user-friendly. |
|
| 27 | - |
|
| 28 | -## hotspot |
|
| 29 | - |
|
| 30 | -Typically, after powering the receiver and with the remote controller turned off, the ExpressLRS hotspot can be found after a default of 60 seconds. Connect to this hotspot using a computer or mobile phone. |
|
| 31 | - |
|
| 32 | -The password is "expresslrs", and then you can access 10.0.0.1 to upload the receiver firmware. |
|
| 33 | - |
|
| 34 | - |
|
| 35 | - |
|
| 36 | -## serial |
|
| 37 | - |
|
| 38 | -Runtime Options |
|
| 39 | - |
|
| 40 | -This form overrides the options provided when the firmware was flashed. These changes will persist across reboots, but will be reset when the firmware is reflashed. |
|
| 41 | - |
|
| 42 | -WiFi auto on" interval in seconds (leave blank to disable) == 60 |
|
| 43 | -UART baud == 420000 = 420K |
|
| 44 | - |
|
| 45 | - |
|
| 46 | -## Product Features |
|
| 47 | - |
|
| 48 | -- High refresh rate 100mW telemetry output; |
|
| 49 | -- Supports convenient and fast firmware flashing via WIFI connection; |
|
| 50 | -- Firmware Version: 3.3.0 [BETAFPVLite2400RX] |
|
| 51 | -- Equipped with a power amplifier (PA+LNA), providing 100mW telemetry output and better response speed; |
|
| 52 | -- Theoretically compatible with most ELRS 2.4G transmitter modules on the market (requires firmware version 2.0 or above). |
|
| 53 | - |
|
| 54 | - |
|
| 55 | - |
|
| 56 | - |
|
| 57 | - |
|
| 58 | -## supported modules |
|
| 59 | - |
|
| 60 | - |
|
| 61 | -## FAQ |
|
| 62 | - |
|
| 63 | -1. **Q: Can this receiver be bound to a XXX brand's high-frequency head (transmitter module)?** |
|
| 64 | - A: The ELRS project is open source. Therefore, as long as the high-frequency head uses the ELRS protocol, regardless of the brand, it can be bound. However, three conditions must be met: |
|
| 65 | - * The frequency must be the same, either both 2.4G or both 915MHz. |
|
| 66 | - * The firmware version must be consistent. For example, if the high-frequency head is flashed with firmware version 2.5.0, the receiver must also be flashed with firmware version 2.5.0. |
|
| 67 | - * Either both have no binding phrase, or both have the same binding phrase set. |
|
| 68 | - |
|
| 69 | -2. **Q: How do I enter binding mode?** |
|
| 70 | - A: After soldering the receiver, quickly power cycle the aircraft three times. That is: power on then immediately power off, power on then immediately power off, power on and leave it on. The interval between power cycles should be within 1.5 seconds. If done correctly, the receiver's LED will flash rapidly twice in a cycle, indicating it is in binding mode. At this time, press the bind button in the remote controller's script. If binding is successful, the receiver's LED will turn solid. |
|
| 71 | - |
|
| 72 | -3. **Q: I'm using my receiver for the first time, why can't I enter binding mode? The light stays solid. What's wrong?** |
|
| 73 | - A: We have encountered similar issues in after-sales support. We found that some flight controllers have abnormal TX/RX ports, causing the receiver to enter bootloader/flash mode upon power-up. In this case, simply changing to a different TX/RX port on the flight controller can solve the problem. |
|
| 74 | - |
|
| 75 | -4. **Q: Why is my receiver's light always flashing rapidly?** |
|
| 76 | - A: If you power on the receiver and it does not enter binding mode, or if it's already bound but the remote controller is not turned on, the receiver will enter WiFi flashing mode after 60 seconds without a signal, and the indicator light will flash rapidly. |
|
| 77 | - |
|
| 78 | -5. **Q: How do I enter WiFi flashing mode to flash firmware to the receiver?** |
|
| 79 | - A: Same as the answer above. Power on the receiver and leave it. It will automatically enter WiFi flashing mode in about 60 seconds, and the light will flash rapidly. |
|
| 80 | - |
|
| 81 | - |
|
| 82 | -## Versions |
|
| 83 | - |
|
| 84 | -- Firmware Rev. 3.5.2 (7ac5f4) |
|
| 85 | - |
|
| 86 | - |
|
| 87 | - |
|
| 88 | -## ref |
|
| 89 | - |
|
| 90 | -- [[ELRS-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-TX-dat/ELRS-TX-dat.md
| ... | ... | @@ -1,14 +0,0 @@ |
| 1 | - |
|
| 2 | -# ELRS-TX-dat |
|
| 3 | - |
|
| 4 | -- [[radiomaster-dat]] |
|
| 5 | - |
|
| 6 | -radiomaster guide |
|
| 7 | - |
|
| 8 | -https://www.expresslrs.org/quick-start/transmitters/rm-ranger/ |
|
| 9 | - |
|
| 10 | - |
|
| 11 | - |
|
| 12 | -## ref |
|
| 13 | - |
|
| 14 | -- [[ELRS-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-dat.md
| ... | ... | @@ -1,170 +0,0 @@ |
| 1 | - |
|
| 2 | -# ELRS-dat |
|
| 3 | - |
|
| 4 | -Info - [[ELRS-frequency-dat]] - [[ELRS-faq-dat]] |
|
| 5 | - |
|
| 6 | - |
|
| 7 | -## ELRS-link |
|
| 8 | - |
|
| 9 | -ELRS-remote-console-tx |
|
| 10 | - |
|
| 11 | -- BETAFPV literadio 3 |
|
| 12 | -- BETAFPV literadio 2 |
|
| 13 | - |
|
| 14 | -- [[edge-tx-dat]] - [[radiomaster-dat]] - [[lightradio-dat]] |
|
| 15 | - |
|
| 16 | -- [[ELRS-RX-dat]] - [[SX1276-dat]] - [[ESP8285-dat]] - [[ESP32-dat]] - [[SX1281-dat]] - [[SX1208-dat]] |
|
| 17 | - |
|
| 18 | -protocol output - - [[CRSF-dat]] |
|
| 19 | - |
|
| 20 | -- [[CC2500-dat]] |
|
| 21 | - |
|
| 22 | -- [[ELRS-TX-dat]] - [[ELRS-915M-dat]] - [[ELRS-PWM-dat]] - [[ELRS-2.4Ghz-dat]] |
|
| 23 | - |
|
| 24 | -- [[ELRS]] |
|
| 25 | - |
|
| 26 | -## resources |
|
| 27 | - |
|
| 28 | -https://github.com/ExpressLRS/ExpressLRS |
|
| 29 | - |
|
| 30 | -https://www.expresslrs.org/quick-start/getting-started/ |
|
| 31 | - |
|
| 32 | -[ExpressLRS-Configurator-releases](https://github.com/ExpressLRS/ExpressLRS-Configurator/releases) |
|
| 33 | - |
|
| 34 | - |
|
| 35 | - |
|
| 36 | -## **ExpressLRS (ELRS) 2.4GHz Standard Explained** |
|
| 37 | - |
|
| 38 | -**ExpressLRS (ELRS) 2.4GHz** is an open-source **long-range, low-latency radio control link** developed for FPV drones and RC applications. It offers **high performance, ultra-fast response times, and robust signal reliability** compared to traditional RC protocols like FrSky, Crossfire, and Ghost. |
|
| 39 | - |
|
| 40 | ---- |
|
| 41 | - |
|
| 42 | -### **🔹 Key Features of ELRS 2.4GHz** |
|
| 43 | -- **Ultra-Low Latency** (~5ms in high-speed mode). |
|
| 44 | -- **Long-Range Performance** (Up to **30km+** with proper setup). |
|
| 45 | -- **High Packet Rate (Up to 1000Hz)** for **smooth & responsive controls**. |
|
| 46 | -- **Open-Source & Customizable** (Community-driven development). |
|
| 47 | -- **Affordable Hardware** (Compared to Crossfire or Ghost). |
|
| 48 | -- **Wide Compatibility** (Supported on many **radio transmitters & receivers**). |
|
| 49 | - |
|
| 50 | ---- |
|
| 51 | - |
|
| 52 | -### **🔹 ELRS 2.4GHz vs. Other RC Links** |
|
| 53 | -| Feature | ELRS 2.4GHz | TBS Crossfire | Ghost 2.4GHz | FrSky R9M | |
|
| 54 | -| --------------- | ------------ | ------------- | ------------ | ----------- | |
|
| 55 | -| **Frequency** | 2.4GHz | 900MHz | 2.4GHz | 900MHz | |
|
| 56 | -| **Max Range** | ~30km+ | ~50km+ | ~15km | ~10-20km | |
|
| 57 | -| **Latency** | 5-7ms | 15-50ms | ~4ms | ~20ms | |
|
| 58 | -| **Packet Rate** | Up to 1000Hz | 50-150Hz | 500Hz | ~100Hz | |
|
| 59 | -| **Open Source** | ✅ Yes | ❌ No | ❌ No | ❌ No | |
|
| 60 | -| **Cost** | 💰 Affordable | 💰💰 Expensive | 💰💰 Expensive | 💰 Mid-Range | |
|
| 61 | - |
|
| 62 | ---- |
|
| 63 | - |
|
| 64 | -### **🔹 ELRS 2.4GHz Modes & Performance** |
|
| 65 | -| Mode | Packet Rate | Latency | Range | |
|
| 66 | -| --------- | ----------- | ------- | --------------------- | |
|
| 67 | -| **500Hz** | 500Hz | ~5ms | Short (~3km) | |
|
| 68 | -| **250Hz** | 250Hz | ~7ms | Mid (~10km) | |
|
| 69 | -| **150Hz** | 150Hz | ~10ms | Long (~20km) | |
|
| 70 | -| **50Hz** | 50Hz | ~20ms | Extreme Long (~30km+) | |
|
| 71 | - |
|
| 72 | -🔹 **Higher packet rate = Lower latency, but reduced range** |
|
| 73 | -🔹 **Lower packet rate = Higher range, but increased latency** |
|
| 74 | - |
|
| 75 | ---- |
|
| 76 | - |
|
| 77 | -### **🔹 Recommended ExpressLRS 2.4GHz Hardware** |
|
| 78 | -#### **🛠️ Transmitters (TX)** |
|
| 79 | -- **RadioMaster Zorro ELRS 2.4GHz** |
|
| 80 | -- **Jumper T20S (Built-in ELRS)** |
|
| 81 | -- **Happymodel ES24TX Pro (External ELRS Module)** |
|
| 82 | -- **BetaFPV ELRS Micro TX Module** |
|
| 83 | - |
|
| 84 | -#### **📡 Receivers (RX)** |
|
| 85 | -- **Happymodel EP2 (Tiny, best for micro quads)** |
|
| 86 | -- **BetaFPV ELRS 2.4GHz Nano RX** |
|
| 87 | -- **Radiomaster RP1 / RP2 RX (Great range & reliability)** |
|
| 88 | - |
|
| 89 | ---- |
|
| 90 | - |
|
| 91 | -### **🔹 Why Choose ELRS 2.4GHz?** |
|
| 92 | -✅ **Best for FPV Racing & Freestyle** → **Low latency & fast response** |
|
| 93 | -✅ **Perfect for Long-Range FPV** → **Good range at lower packet rates** |
|
| 94 | -✅ **Affordable & Open-Source** → **Cheaper than Crossfire & Ghost** |
|
| 95 | - |
|
| 96 | -🚀 **If you need ultra-low latency for FPV racing or long-range performance at an affordable price, ExpressLRS 2.4GHz is the best choice!** 🔥 |
|
| 97 | - |
|
| 98 | - |
|
| 99 | -## 2.4hz compare to LORA 915mhz |
|
| 100 | - |
|
| 101 | -| Feature | DJI NC3 (OcuSync 2.0) | ELRS 2.4GHz (100mW) | ELRS 915MHz (100mW, SX1276) | |
|
| 102 | -|----------------------------|---------------------------|------------------------------|-------------------------------| |
|
| 103 | -| Protocol Type | Proprietary digital (DJI) | Open-source LoRa/FLRC | Open-source LoRa | |
|
| 104 | -| Frequency Band | 2.4GHz + 5.8GHz | 2.4GHz | 915MHz | |
|
| 105 | -| Max Packet Rate | N/A (digital control/video)| Up to 500Hz | Up to 50Hz | |
|
| 106 | -| Latency (best-case) | ~120 ms (control + video) | ~2.5 ms (500Hz) | ~20 ms (50Hz) | |
|
| 107 | -| Typical Latency | ~120–150 ms | ~6–13 ms | ~22–30 ms | |
|
| 108 | -| Max Range (LOS, FCC) | ~10 km | ~2 km | ~10 km | |
|
| 109 | -| Penetration (Obstacles) | Moderate | Moderate | Strong | |
|
| 110 | -| Interference Resistance | High (hopping + digital) | Moderate | Strong | |
|
| 111 | -| Video Support | Yes (integrated) | No | No | |
|
| 112 | -| Use Case | DJI drones (Mini, Air) | FPV racing, freestyle | Long-range FPV, endurance | |
|
| 113 | -| Antenna Size | Small | Small | Larger | |
|
| 114 | -| Custom Flight Controllers | Not supported | Fully supported | Fully supported | |
|
| 115 | - |
|
| 116 | - |
|
| 117 | -❌ No — ELRS does not support 5.8GHz (as of now). |
|
| 118 | - |
|
| 119 | -- [[LORA-dat]] - [[RF-2.4ghz-dat]] |
|
| 120 | - |
|
| 121 | -- [[5.8Ghz-dat]] |
|
| 122 | - |
|
| 123 | - |
|
| 124 | -## WebUI Configurator |
|
| 125 | - |
|
| 126 | -[ExpressLRS Configurator](https://github.com/ExpressLRS/ExpressLRS-Configurator/releases/) |
|
| 127 | - |
|
| 128 | -[github](https://github.com/ExpressLRS/ExpressLRS) |
|
| 129 | - |
|
| 130 | -### Via "ExpressLRS RX" Access Point |
|
| 131 | - |
|
| 132 | - |
|
| 133 | - |
|
| 134 | -Load the Web UI on your browser using these addresses: |
|
| 135 | - |
|
| 136 | -http://10.0.0.1/ - If you have connected to the ExpressLRS RX Access Point |
|
| 137 | - |
|
| 138 | -### Via button press |
|
| 139 | - |
|
| 140 | - |
|
| 141 | - |
|
| 142 | - |
|
| 143 | -## Code |
|
| 144 | - |
|
| 145 | -| Method | Arduino-Friendly? | Notes | |
|
| 146 | -|---------------|-------------------|--------------------------------------------| |
|
| 147 | -| PWM Output | ✅ Yes | Easiest to use. Limited channels. | |
|
| 148 | -| SBUS/PPM | ✅ Yes (with lib) | Good middle ground. | |
|
| 149 | -| CRSF over UART| ⚠️ Difficult | Only feasible on fast boards (ESP32/STM32).| |
|
| 150 | - |
|
| 151 | - |
|
| 152 | -### ✅ Use PWM output from ELRS receiver for arduino |
|
| 153 | - |
|
| 154 | -Some ELRS receivers support PWM output, which can be read with Arduino pulseIn() or interrupts. |
|
| 155 | - |
|
| 156 | -This is much easier but limits you to a few channels (e.g., 4–8). |
|
| 157 | - |
|
| 158 | -### ✅ Use CRSF over UART (advanced) |
|
| 159 | -If you use a faster board like Teensy, ESP32, or STM32: |
|
| 160 | - |
|
| 161 | -These can handle high baud rates and may be able to parse CRSF messages. |
|
| 162 | - |
|
| 163 | -You’d need to write or port a CRSF parser for Arduino/Teensy/ESP32. |
|
| 164 | - |
|
| 165 | - |
|
| 166 | -## ref |
|
| 167 | - |
|
| 168 | -- [[FPV-dat]] |
|
| 169 | - |
|
| 170 | -- [[ELRS]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-faq-dat.md
| ... | ... | @@ -1,26 +0,0 @@ |
| 1 | - |
|
| 2 | -# ELRS-faq-dat |
|
| 3 | - |
|
| 4 | -## Frequently Asked Questions (FAQ) |
|
| 5 | - |
|
| 6 | -**Q1: Can this receiver bind with a transmitter module (TX module) from brand XXX?** |
|
| 7 | -**A:** The ELRS project is open-source. Therefore, as long as the TX module uses the ELRS protocol, regardless of the brand, they can bind with each other, provided three conditions are met: |
|
| 8 | - 1. **Same Frequency:** Both must operate on the same frequency band (e.g., both 2.4GHz or both 915MHz). |
|
| 9 | - 2. **Matching Firmware Version:** The firmware versions must be identical. For example, if the TX module is flashed with firmware version 2.5.0, the receiver must also be flashed with version 2.5.0. |
|
| 10 | - 3. **Binding Phrase:** Either both devices have no binding phrase set, or they both have the exact same binding phrase configured. |
|
| 11 | - |
|
| 12 | -**Q2: How do I enter binding mode?** |
|
| 13 | -**A:** After soldering the receiver, quickly power cycle the aircraft three times: power on then immediately power off, power on then immediately power off, power on and leave it on. Each power cycle interval should be less than 1.5 seconds. If performed correctly, the receiver's LED will flash quickly twice in a repeating pattern, indicating it is in binding mode. Then, use the bind function/button on your remote controller (often found in the ELRS Lua script). Once binding is successful, the receiver's LED will turn solid. |
|
| 14 | - |
|
| 15 | -**Q3: The first time I used my receiver, it wouldn't enter binding mode, and the LED stayed solid. Why?** |
|
| 16 | -**A:** We've encountered this issue in support cases. It's often caused by an abnormality on the flight controller's TX/RX UART port, which forces the receiver into bootloader/firmware flashing mode upon power-up. Switching the receiver connection to a different, functional TX/RX UART port on the flight controller usually resolves this. |
|
| 17 | - |
|
| 18 | -**Q4: Why is my receiver's LED flashing quickly and continuously?** |
|
| 19 | -**A:** If the receiver is powered on but doesn't enter binding mode (or if it's already bound but the remote controller is off), it will automatically enter Wi-Fi firmware update mode after approximately 60 seconds of not receiving a signal. The fast flashing indicates Wi-Fi mode is active. |
|
| 20 | - |
|
| 21 | -**Q5: How do I enter Wi-Fi mode to update the receiver's firmware?** |
|
| 22 | -**A:** As mentioned above, simply power on the receiver and wait. If it doesn't connect to a transmitter within about 60 seconds, it will automatically enter Wi-Fi update mode, indicated by the rapidly flashing LED. |
|
| 23 | - |
|
| 24 | - |
|
| 25 | -## ref |
|
| 26 | - |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-frequency-dat.md
| ... | ... | @@ -1,20 +0,0 @@ |
| 1 | - |
|
| 2 | -# ELRS-frequency-dat.md |
|
| 3 | - |
|
| 4 | -| Feature | ELRS 915MHz (LoRa) | ELRS 2.4GHz (LoRa/FLRC) | |
|
| 5 | -|---------------------|-----------------------------|------------------------------| |
|
| 6 | -| Frequency Band | 915 MHz | 2.4 GHz | |
|
| 7 | -| Range (LOS, 100mW) | ✅ 5–10+ km | ⚠️ 1–2 km | |
|
| 8 | -| Penetration | ✅ Strong (trees, buildings) | ⚠️ Moderate | |
|
| 9 | -| Latency | ❌ ~20–30 ms | ✅ ~2.5–13 ms | |
|
| 10 | -| Max Packet Rate | ❌ ~50Hz | ✅ Up to 500Hz | |
|
| 11 | -| Antenna Size | ❌ Large | ✅ Small | |
|
| 12 | -| Interference Avoidance | ✅ Less crowded band | ⚠️ More Wi-Fi/Bluetooth noise | |
|
| 13 | -| Use Case | Long-range, endurance | Freestyle, racing | |
|
| 14 | -| Power Efficiency | ✅ High (lower data rate) | ✅ High (LoRa + FLRC modes) | |
|
| 15 | -| Hardware Support | Older SX1276 modules | Newer SX1280 + ESP modules | |
|
| 16 | - |
|
| 17 | - |
|
| 18 | -## ref |
|
| 19 | - |
|
| 20 | -- [[ELRS-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/FrSky-dat/FrSky-dat.md
| ... | ... | @@ -1,4 +0,0 @@ |
| 1 | - |
|
| 2 | -# FrSky-dat |
|
| 3 | - |
|
| 4 | -- [[CC2500-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/PPM-dat/PPM-dat.md
| ... | ... | @@ -1,29 +0,0 @@ |
| 1 | - |
|
| 2 | -# PPM-dat |
|
| 3 | - |
|
| 4 | -- [[Wfly-dat]] - [[RC-code-dat]] |
|
| 5 | - |
|
| 6 | -- [[PWM-dat]] |
|
| 7 | - |
|
| 8 | -PPM (Pulse Position Modulation) is a type of analog signal used in radio control (RC) systems to transmit multiple channels of control information (like throttle, steering, elevator, etc.) over a single wire. |
|
| 9 | - |
|
| 10 | -In simple terms: |
|
| 11 | - |
|
| 12 | -- It sends a series of pulses. |
|
| 13 | -- The position (or timing) of each pulse within a repeating frame represents the value for a specific channel. |
|
| 14 | -- A longer "sync" pulse marks the end of one frame and the beginning of the next. |
|
| 15 | - |
|
| 16 | -So, instead of needing a separate wire for each control channel, PPM combines them into one sequential signal. |
|
| 17 | - |
|
| 18 | -## demo video |
|
| 19 | - |
|
| 20 | -[RC #PPM PWM send and receive at Arduino, note the four channels color](https://youtube.com/shorts/BDdSFPlh9KE?si=n1oF2KUIMqEeH1QW) |
|
| 21 | - |
|
| 22 | -Internal control by [[SDR1064-dat]] |
|
| 23 | - |
|
| 24 | -[Wfly #PPM console control toy rover](https://t.me/electrodragon3/369) |
|
| 25 | - |
|
| 26 | - |
|
| 27 | -## ref |
|
| 28 | - |
|
| 29 | -- [[RC-protocols-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/RC-signal-dat.md
| ... | ... | @@ -1,109 +0,0 @@ |
| 1 | - |
|
| 2 | -# RC-signal-dat.md |
|
| 3 | - |
|
| 4 | -## RC-signals |
|
| 5 | - |
|
| 6 | -- [[WIFI-dat]] |
|
| 7 | - |
|
| 8 | - |
|
| 9 | -### Proprietary modulation schemes(专有调制方案) |
|
| 10 | - |
|
| 11 | -Toy RC systems may use other modulation methods like [[DSSS-dat]], [[FHSS-dat]], or non-standard GFSK configurations. |
|
| 12 | - |
|
| 13 | -- [[GFSK-dat]] = [[NRF24L01-dat]] |
|
| 14 | - |
|
| 15 | -- [[SBUS-dat]] - [[PPM-dat]] - [[PWM-dat]] |
|
| 16 | - |
|
| 17 | -Frequency Hopping: |
|
| 18 | - |
|
| 19 | -Many toy-grade RC transmitters hop between frequencies. |
|
| 20 | - |
|
| 21 | -#### DSSS (Direct Sequence Spread Spectrum) |
|
| 22 | - |
|
| 23 | -DSSS (Direct Sequence Spread Spectrum) is a method of transmitting radio signals by spreading the signal over a wider frequency band than the original data rate requires. |
|
| 24 | - |
|
| 25 | -**How DSSS Works:** |
|
| 26 | - |
|
| 27 | -The original data signal is multiplied by a "chipping code", a sequence of faster bits called "chips." |
|
| 28 | - |
|
| 29 | -This process spreads the energy of the signal over a wider bandwidth. |
|
| 30 | - |
|
| 31 | -The receiver, knowing the same chipping code, can reconstruct the original data. |
|
| 32 | - |
|
| 33 | -**Key Features:** |
|
| 34 | - |
|
| 35 | -Spreads signal across wide frequency band (increases resistance to interference and jamming). |
|
| 36 | - |
|
| 37 | -More secure and harder to intercept. |
|
| 38 | - |
|
| 39 | -Improves signal robustness in noisy environments. |
|
| 40 | - |
|
| 41 | -**DSSS in Real-World Use:** |
|
| 42 | - |
|
| 43 | -Used in older Wi-Fi standards (like 802.11b). |
|
| 44 | - |
|
| 45 | -Also found in some military and commercial RF systems. |
|
| 46 | - |
|
| 47 | -Some toy-grade 2.4GHz systems may use simple DSSS-like techniques to reduce cost and avoid interference. |
|
| 48 | - |
|
| 49 | -**Comparison with FHSS:** |
|
| 50 | - |
|
| 51 | -DSSS spreads signal continuously across a wide band. |
|
| 52 | - |
|
| 53 | -FHSS (Frequency Hopping Spread Spectrum) hops between frequencies in a sequence. |
|
| 54 | - |
|
| 55 | -### Compare with WIFI |
|
| 56 | - |
|
| 57 | -| Feature | Wi-Fi (ESP8266) | DSSS RC (Toy/Hobby) | |
|
| 58 | -| ----------- | --------------------------- | ------------------------------ | |
|
| 59 | -| Range | 30–100m typical | 20m (toy) to >1km (hobby) | |
|
| 60 | -| Latency | Medium | Very low | |
|
| 61 | -| Robustness | Lower (affected by routers) | High (designed for RF control) | |
|
| 62 | -| Ease of Use | Easy (phone control) | Needs RC Tx/Rx | |
|
| 63 | - |
|
| 64 | - |
|
| 65 | -## RC-protocols |
|
| 66 | - |
|
| 67 | -- [[edge-tx-dat]] |
|
| 68 | - |
|
| 69 | -- [[CRSF-dat]] |
|
| 70 | - |
|
| 71 | -- [[FrSky-dat]] == [[CC2500-dat]] |
|
| 72 | - |
|
| 73 | -- [[ELRS-dat]] - [[ELRS-RX-dat]] - [[ELRS-TX-dat]] |
|
| 74 | - |
|
| 75 | - |
|
| 76 | -## SDR |
|
| 77 | - |
|
| 78 | -Reverse engineering with a software-defined radio (SDR) (like RTL-SDR or HackRF). |
|
| 79 | - |
|
| 80 | - You could record the RF signal and analyze it to reverse engineer the protocol. |
|
| 81 | - |
|
| 82 | - This is complex and requires RF/digital signal processing (DSP) knowledge. |
|
| 83 | - |
|
| 84 | -Sniffing with NRF24L01+ in promiscuous mode (some hacks exist, but limited). |
|
| 85 | - |
|
| 86 | - Might capture packets from other NRF24L01 devices only. |
|
| 87 | - |
|
| 88 | - Won’t work for general 2.4GHz devices. |
|
| 89 | - |
|
| 90 | -- [[RTL-SDR-dat]] - [[hackrf-dat]] |
|
| 91 | - |
|
| 92 | - |
|
| 93 | -## Step-by-Step: How to Sniff 2.4GHz RC Signal |
|
| 94 | - |
|
| 95 | -1. Gather Tools |
|
| 96 | -2. |
|
| 97 | -RTL-SDR dongle (most only go up to ~1.7 GHz → Not enough for 2.4GHz) |
|
| 98 | - |
|
| 99 | -→ You need: |
|
| 100 | - |
|
| 101 | -- A HackRF One (recommended – covers 1 MHz to 6 GHz) |
|
| 102 | -- OR a CC2500 module (common 2.4GHz transceiver used in RC gear) |
|
| 103 | -- OR an ESP32 with promiscuous mode (works only for Wi-Fi packets) |
|
| 104 | - |
|
| 105 | - |
|
| 106 | - |
|
| 107 | -## ref |
|
| 108 | - |
|
| 109 | -- [[RC-dat]] - [[logic-analyzer-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/RTL-SDR-dat/RTL-SDR-dat.md
| ... | ... | @@ -1,52 +0,0 @@ |
| 1 | - |
|
| 2 | -# RTL-SDR-dat |
|
| 3 | - |
|
| 4 | -1. What You Need |
|
| 5 | - |
|
| 6 | -An RTL-SDR USB dongle (e.g., RTL2832U with R820T2) |
|
| 7 | - |
|
| 8 | -A Windows, Linux, macOS, or Android device |
|
| 9 | - |
|
| 10 | -An antenna (usually included) |
|
| 11 | - |
|
| 12 | -Software (like SDR# or Universal Radio Hacker) |
|
| 13 | - |
|
| 14 | -SDRSharp |
|
| 15 | - |
|
| 16 | - |
|
| 17 | -4. Signal Analysis (for reverse engineering) |
|
| 18 | - |
|
| 19 | -Use Universal Radio Hacker (URH): |
|
| 20 | - |
|
| 21 | -Record raw signals from 2.4GHz toy remote (if within range) |
|
| 22 | - |
|
| 23 | -Analyze bit patterns, timing, modulation |
|
| 24 | - |
|
| 25 | -Use Audacity to visualize audio-like modulated signals. |
|
| 26 | - |
|
| 27 | -5. On Android (Optional) |
|
| 28 | - |
|
| 29 | -Use SDR Touch with an OTG cable and RTL-SDR dongle. |
|
| 30 | - |
|
| 31 | -Works well for listening to FM, air band, etc. |
|
| 32 | - |
|
| 33 | -What You Can Do With RTL-SDR |
|
| 34 | - |
|
| 35 | -- Listen to FM radio, air traffic, police, weather stations |
|
| 36 | -- Track airplanes (ADS-B) |
|
| 37 | -- Capture RF from garage remotes, key fobs, toy RC |
|
| 38 | -- Reverse engineer simple RF protocols |
|
| 39 | - |
|
| 40 | - |
|
| 41 | - |
|
| 42 | -## Alternative: Use an SDR to Sniff Raw RF |
|
| 43 | - |
|
| 44 | -To analyze the actual RF signal, you need a Software Defined Radio (SDR) like: |
|
| 45 | - |
|
| 46 | -HackRF, LimeSDR, or USRP |
|
| 47 | - |
|
| 48 | -Record the 2.4GHz spectrum |
|
| 49 | - |
|
| 50 | -Analyze bursts from the remote |
|
| 51 | - |
|
| 52 | -Use Universal Radio Hacker (URH) or GNU Radio to decode the signal |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/SBUS-dat/SBUS-dat.md
| ... | ... | @@ -1,75 +0,0 @@ |
| 1 | - |
|
| 2 | -# SBUS-dat |
|
| 3 | - |
|
| 4 | -- [[futaba-dat]] |
|
| 5 | - |
|
| 6 | -## 📡 What is SBUS? — Simple Explanation |
|
| 7 | - |
|
| 8 | -**SBUS (Serial Bus)** is a digital protocol used in RC systems to send multiple control signals (channels) over a single wire. |
|
| 9 | - |
|
| 10 | ---- |
|
| 11 | - |
|
| 12 | -### 🧩 Key Features |
|
| 13 | - |
|
| 14 | -- 🔢 **Up to 16 channels** in one signal |
|
| 15 | -- 💬 **Digital serial protocol** |
|
| 16 | -- 📦 Sends data in **serial frames** |
|
| 17 | -- ⏱️ **100,000 baud**, **inverted UART** |
|
| 18 | -- ↪️ Invented by **Futaba**, widely used (FrSky, Radiolink, etc.) |
|
| 19 | -- 🧠 Needs **inversion** to be read by normal UART (hardware or software) |
|
| 20 | - |
|
| 21 | ---- |
|
| 22 | - |
|
| 23 | -### 🧱 Simple Analogy |
|
| 24 | - |
|
| 25 | -> SBUS is like 16 people taking turns speaking very fast on one microphone. |
|
| 26 | -> Each frame contains all channel values packed tightly together. |
|
| 27 | - |
|
| 28 | ---- |
|
| 29 | - |
|
| 30 | -### 🧪 Data Frame Structure |
|
| 31 | - |
|
| 32 | -Each SBUS frame is 25 bytes: |
|
| 33 | - |
|
| 34 | -| 1 byte | 22 bytes | 1 byte | 1 byte | |
|
| 35 | -| ------ | ----------- | ------ | ------ | |
|
| 36 | -| Header | 16 channels | Flags | End | |
|
| 37 | - |
|
| 38 | - |
|
| 39 | - |
|
| 40 | -- **Header**: 0x0F |
|
| 41 | -- **End**: 0x00 |
|
| 42 | -- Sent **every ~9ms** (111Hz refresh rate) |
|
| 43 | - |
|
| 44 | ---- |
|
| 45 | - |
|
| 46 | -### 🔌 Common Use Cases |
|
| 47 | - |
|
| 48 | -- RC Receiver → Flight Controller (e.g., FrSky RX to Betaflight FC) |
|
| 49 | -- RC Receiver → Microcontroller (Arduino, ESP32) |
|
| 50 | -- RC → Servo controller boards (if SBUS supported) |
|
| 51 | - |
|
| 52 | ---- |
|
| 53 | - |
|
| 54 | -### ⚖️ SBUS vs PWM vs PPM |
|
| 55 | - |
|
| 56 | -| Feature | SBUS | PWM | PPM | |
|
| 57 | -|---------------|-------------|---------------|---------------| |
|
| 58 | -| Channels | 16 | 1 per wire | 8 (typically) | |
|
| 59 | -| Wires needed | 1 | 1 per channel | 1 | |
|
| 60 | -| Type | Digital | Analog pulse | Analog pulse | |
|
| 61 | -| Speed | Very fast | Slow | Medium | |
|
| 62 | -| Latency | Very low | High | Medium | |
|
| 63 | - |
|
| 64 | ---- |
|
| 65 | - |
|
| 66 | -### 🧰 Tip for Developers |
|
| 67 | - |
|
| 68 | -To read SBUS using a microcontroller: |
|
| 69 | -- Use **UART** at **100000 baud**, **8E2**, **inverted signal** |
|
| 70 | -- Some MCUs (like ESP32) support inversion natively |
|
| 71 | -- Otherwise, use an **inverter circuit** or a software decoder |
|
| 72 | - |
|
| 73 | -## ref |
|
| 74 | - |
|
| 75 | -- [[network-dat]] |
Tech-dat/Network-dat/RC-dat/RC-signal-dat/edge-tx-dat/edge-tx-dat.md
| ... | ... | @@ -1,4 +0,0 @@ |
| 1 | - |
|
| 2 | -# edge-tx-dat |
|
| 3 | - |
|
| 4 | -https://github.com/EdgeTX/edgetx |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/RC-supplier-dat.md
| ... | ... | @@ -1,3 +0,0 @@ |
| 1 | - |
|
| 2 | -# RC-supplier-dat.md |
|
| 3 | - |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-14-45-14.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-14-45-14.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-14-51-22.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-14-51-22.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-14-53-48.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-14-53-48.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-14-58-58.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-14-58-58.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-15-03-29.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-15-03-29.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/WFLY-dat/WFLY-WFT06X_Mannual.pdf
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-supplier-dat/WFLY-dat/WFLY-WFT06X_Mannual.pdf and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/WFLY-dat/WFLY-dat.md
| ... | ... | @@ -1,10 +0,0 @@ |
| 1 | - |
|
| 2 | -# WFLY-dat.md |
|
| 3 | - |
|
| 4 | -- [[WFT06x-dat]] - [[WFR06S-dat]] |
|
| 5 | - |
|
| 6 | - |
|
| 7 | - |
|
| 8 | -## ref |
|
| 9 | - |
|
| 10 | -- [[PPM-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/WFLY-dat/WFR06S-dat.md
| ... | ... | @@ -1,14 +0,0 @@ |
| 1 | - |
|
| 2 | -# WFR06S-dat.md |
|
| 3 | - |
|
| 4 | - |
|
| 5 | - |
|
| 6 | - |
|
| 7 | - |
|
| 8 | -## New type of WFLY receiver |
|
| 9 | - |
|
| 10 | - |
|
| 11 | -- A. 跳频速度高,采用扩跳频系统(FHSS&DSSS):不但采用了DSSS技术而且在DSSS技术基础上可以进行大约每4毫秒(ms)一次的跳频。 |
|
| 12 | -- B. 接收机输出给舵机的PWM信号稳定度高足以匹配精密数码舱机:可用示波器观察到纳秒级(nS)的细节,而其他一些牌子的接收机输出的PWM信号用示波器在us级别观察就不稳定了 |
|
| 13 | -- C. 44096数据不仅分辨率提升,反应速度也大幅提升(配合9S或8S控) |
|
| 14 | -- D. 接收机开机的时候自动识别PPM,PCMS,4096PCMS三种传输模式日采用可跳频的DSSS,可靠性高。数十台设备同时工作而互无影响。 |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/WFLY-dat/WFT06X-dat.md
| ... | ... | @@ -1,129 +0,0 @@ |
| 1 | -# WFLY-dat |
|
| 2 | - |
|
| 3 | -- [[PPM-dat]] |
|
| 4 | - |
|
| 5 | - |
|
| 6 | - |
|
| 7 | - |
|
| 8 | - |
|
| 9 | -- the manual == [[WFLY-WFT06X_Mannual.pdf]] |
|
| 10 | -- [fccd.io manual link](https://fccid.io/TZVWFT06XWFT08S/User-Manual/User-Manual-1-1119279.pdf) |
|
| 11 | - |
|
| 12 | -## Info |
|
| 13 | - |
|
| 14 | -- WFT06X-A: 6 channels airplane,mixfunction,D/R,HDE helicopter. |
|
| 15 | -- WFT06X-B: 4 channesl airplane, mix function,D/R, HDE helicopter. |
|
| 16 | -- WFT06X-C: 6 channels CCPMhelicopter,airplane. |
|
| 17 | - |
|
| 18 | - |
|
| 19 | -## Models |
|
| 20 | - |
|
| 21 | - |
|
| 22 | - |
|
| 23 | -- [[airplane-dat]] |
|
| 24 | - |
|
| 25 | - |
|
| 26 | -## toggle switches |
|
| 27 | - |
|
| 28 | - |
|
| 29 | - |
|
| 30 | - |
|
| 31 | -| Switch | State | | Up | Down | |
|
| 32 | -| :---------- | :--------- | --------------------------- | :--------------------------------- | :--------------------------------- | |
|
| 33 | -| A | Helicopter | Ch3 to Ch4 mixture. (note1) | Enables | Disables | |
|
| 34 | -| B | N/A | | Selects Helicopter state. | Selects Airplane state. | |
|
| 35 | -| C (1,2,4,6) | Airplane | | Dual Rate set to ±125%. | Dual Rate set to ±100%. | |
|
| 36 | -| D | Airplane | | Enables mixture functions (E, F). | Disables mixture functions (E, F). | |
|
| 37 | -| E | Airplane | | Enables Ch2 & Ch4 mixture (note3) | Enables Ch1 & Ch6 mixture (note3) | |
|
| 38 | -| F | Airplane | | Enables Ch1 & Ch2 mixture (note2). | N/A | |
|
| 39 | -| G (Ch1) | N/A | | Reverse Mode. | Normal Mode. | |
|
| 40 | -| H (Ch2) | N/A | | Reverse Mode. | Normal Mode. | |
|
| 41 | -| I (Ch3) | N/A | | Reverse Mode. | Normal Mode. | |
|
| 42 | -| J (Ch4) | N/A | | Reverse Mode. | Normal Mode. | |
|
| 43 | -| K (Ch6) | N/A | | Reverse Mode. | Normal Mode. | |
|
| 44 | - |
|
| 45 | -note1 == Ch3 to Ch6 mix always active |
|
| 46 | - |
|
| 47 | -note2 == (Elevon/Delta Wing) (Requires D Up, overrides D) |
|
| 48 | - |
|
| 49 | -note3 == (V-Tail) (Requires D Up). |
|
| 50 | - |
|
| 51 | -Switch Function Instruction |
|
| 52 | - |
|
| 53 | -- (A)At helicopterstate,pulling A down to put offmixturefunction of channel3to channel4,when pulling it up it willcomebackthefunction.Butthemixturefunctiontochannel 6isstable,whichisirrelevant with this switch. |
|
| 54 | -- (B) Pulling B down is airplane state and pulling it up is helicopter state. |
|
| 55 | -- (C) At airplane state, pulling 1, 2, 4, 6 down the dual rate is ±100%; when pulling them up, the dual rate will be ±125%. |
|
| 56 | -- (D) At airplane state, pulling D down make switches have no mixture function, but pulling it up will cause them have thefunction. |
|
| 57 | -- (E) At airplane state, when D is pulled up, pulling E down cause channel 1 & 6 mixture function (Flaperon); pulling E up will cause channel 2 & 4 mixture function(V-TAIL). |
|
| 58 | -- (F) At airplane state,when D is pulled up,pulling F up it works as the mixture function of channel 1&2(TrianglewingELEVON),and Dfunctiondoesn'tworkat that moment. |
|
| 59 | -- (G) Channel 1 is reverse switch for aileron.Pulling G down is to make it in normal mode,and pulling it up is to make it act in reverse. |
|
| 60 | -- (H) Channel 2 is reverse switch for elevator. Pulling H down is to make it in normal mode, and pulling it up is to make it act in reverse. |
|
| 61 | -- (I) Channel 3 is reverse switch for power. Pulling I down is to make it in normal mode, and pulling it up is to make it act in reverse. |
|
| 62 | -- (J) Channel 4 is reverse switch for rudder. Pulling J down is to make it in normal mode, and pulling it up is to makeitactinreverse. |
|
| 63 | -- (K) Channel 6 is reverse switch for screw-pitch/ flaperon.Pulling K down is to make it in normal mode, and pulling it up is to make it act in reverse. |
|
| 64 | - |
|
| 65 | - |
|
| 66 | - |
|
| 67 | -## Binding Instructions: |
|
| 68 | - |
|
| 69 | -1. **Receiver:** Press and hold the "SET" button until the orange "STATUS" light flashes slowly. The receiver is now waiting for the transmitter's binding command. |
|
| 70 | -2. **Transmitter:** Press and hold the "SET" button while powering on the transmitter. Press the SET button once more to enter the binding function (the orange "STATUS" light will be solid). Then, press and hold the SET button until the orange light flashes slowly, entering the binding state. |
|
| 71 | -3. **Binding Successful:** The transmitter's green light will turn solid, and the receiver's indicator light will turn off. |
|
| 72 | - |
|
| 73 | -## Failsafe Setup: |
|
| 74 | - |
|
| 75 | -1. Power on the receiver. |
|
| 76 | -2. Press and hold the "SET" button while powering on the transmitter. Then, press and hold the SET button for about 2 seconds to enter the failsafe setup state (the green light will flash). |
|
| 77 | -3. The receiver's green light will flash quickly. The data currently being output by the transmitter will be set as the failsafe output data for the receiver. |
|
| 78 | -4. **Failsafe Active State:** The receiver's red light will be solid. |
|
| 79 | - |
|
| 80 | -## Technical Parameters: |
|
| 81 | - |
|
| 82 | -* **Application:** Fixed-wing aircraft, HDE helicopters, fixed-pitch helicopters, cars, boats |
|
| 83 | -* **Frequency Band:** 2.400 - 2.483 GHz |
|
| 84 | -* **Transmit Power:** ≤ 100mW |
|
| 85 | -* **Operating Current:** ≤ 160mA |
|
| 86 | -* **Encoding:** PPM |
|
| 87 | -* **RF Module:** Built-in |
|
| 88 | -* **Power Supply:** 9.6 - 12V |
|
| 89 | -* **Dual Rate/Expo Range:** 100% ~ 125% |
|
| 90 | -* **Mixing:** |
|
| 91 | - * Flaperon (Channel 6 and Channel 1 mix) |
|
| 92 | - * V-Tail (Channel 4 and Channel 2 mix) |
|
| 93 | - * Delta Wing (Elevon) (Channel 1 and Channel 2 mix) |
|
| 94 | - * HDE Helicopter (Channel 3 to Channel 4 & 6 mix) |
|
| 95 | - * HDE Helicopter (Channel 3 to Channel 6 mix) |
|
| 96 | -* **Reverse Switches:** |
|
| 97 | - * Channel 1: Aileron 副翼 |
|
| 98 | - * Channel 2: Elevator 升降舵 |
|
| 99 | - * Channel 3: Throttle 油门 |
|
| 100 | - * Channel 4: Rudder 方向舵 |
|
| 101 | - * Channel 6: Flap/Pitch 襟翼/螺距 |
|
| 102 | -* **Low Voltage Alarm (Visual & Audible):** |
|
| 103 | - * Battery Voltage < 8.8V: Power indicator flashes once per second with beeping. |
|
| 104 | - * Battery Voltage < 8.3V: Power indicator flashes twice per second (0.5s interval) with beeping. |
|
| 105 | -* **Charging Jack:** Yes |
|
| 106 | -* **Simulator Jack:** Yes |
|
| 107 | - |
|
| 108 | - |
|
| 109 | -## Beeping |
|
| 110 | - |
|
| 111 | -According to the document, the device will provide a sound-and-light notification when the battery voltage is low. |
|
| 112 | - |
|
| 113 | -**When the battery voltage is below 8.8V**, the power indicator light will glitter and buzz at a rate of 1S/1S. |
|
| 114 | - |
|
| 115 | -**When the battery voltage drops below 8.3V**, the power indicator light will glitter and buzz at a rate of 0.5S/1S. |
|
| 116 | - |
|
| 117 | -Additionally, the WFT06X-C model transmitter will alarm if it is turned on in an Idle-up state with no output. |
|
| 118 | - |
|
| 119 | - |
|
| 120 | - |
|
| 121 | - |
|
| 122 | - |
|
| 123 | -## demo video |
|
| 124 | - |
|
| 125 | -- [how to binding WFLY in chinese ](https://www.bilibili.com/video/BV1Mh4y1c7FS/?vd_source=74a6b8b9bfcd41c5946a742815bf71ae) |
|
| 126 | - |
|
| 127 | -## ref |
|
| 128 | - |
|
| 129 | -- [[WFLY]] - [[lightradio]] - [[radiomaster]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/betaFPV-dat/2025-05-04-14-49-45.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-supplier-dat/betaFPV-dat/2025-05-04-14-49-45.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/betaFPV-dat/2025-05-04-15-34-48.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-supplier-dat/betaFPV-dat/2025-05-04-15-34-48.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/betaFPV-dat/betaFPV-dat.md
| ... | ... | @@ -1,4 +0,0 @@ |
| 1 | - |
|
| 2 | -# betaFPV-dat |
|
| 3 | - |
|
| 4 | -- [[lightradio-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/betaFPV-dat/lightradio-dat.md
| ... | ... | @@ -1,94 +0,0 @@ |
| 1 | - |
|
| 2 | -# lightradio-dat |
|
| 3 | - |
|
| 4 | -## Lightradio 3 Pro |
|
| 5 | - |
|
| 6 | -- professional version |
|
| 7 | -- build-in OLED display |
|
| 8 | - |
|
| 9 | - |
|
| 10 | - |
|
| 11 | -Choice of two protocols: |
|
| 12 | - |
|
| 13 | -* **Built-in ELRS 2.4G:** Maximum output power up to 250mW, built-in omnidirectional antenna, enables long-range flight. |
|
| 14 | -* **Built-in CC2500 version:** Supports Frsky D / Frsky X / SFHSS and other protocols, maximum 100mW transmission power. |
|
| 15 | - |
|
| 16 | - |
|
| 17 | - |
|
| 18 | -## lightradio 3 |
|
| 19 | - |
|
| 20 | -- does NOT support original [[ELRS-dat]] system |
|
| 21 | - |
|
| 22 | -### info |
|
| 23 | - |
|
| 24 | - |
|
| 25 | - |
|
| 26 | - |
|
| 27 | -### Flight Controller |
|
| 28 | - |
|
| 29 | -The application supports flight controller that can run LiteSilver firmeware. |
|
| 30 | - |
|
| 31 | -- Lite Brushed FC V3 |
|
| 32 | -- Cetus FPV Kit |
|
| 33 | -- Cetus Pro FPV Kit |
|
| 34 | -- Cetus X FPV KIT |
|
| 35 | -- Cetus Lite FPV Kit |
|
| 36 | -- Aquila 16 FPV kit |
|
| 37 | - |
|
| 38 | -Configurator for FC board is active.Follow the steps to enter FC Setup page. |
|
| 39 | - |
|
| 40 | -1. Connect the FC board to the computer via USB data cable. |
|
| 41 | -2. Select the virtual COM port and click the *Connect" button on the top right. |
|
| 42 | - |
|
| 43 | -Note: If enter FC Setup page fail, please update the FC firmware first. |
|
| 44 | - |
|
| 45 | -Click the "Firmware Flasher" tab on the left for firmware update. |
|
| 46 | - |
|
| 47 | -### Radio Transmitter |
|
| 48 | - |
|
| 49 | -Support the radio controller come with BETAFPV LiteRadio Firmware 2.0 Version. |
|
| 50 | - |
|
| 51 | -- LiteRadio 1 |
|
| 52 | -- LiteRadio 2 SEV2 |
|
| 53 | -- LiteRadio 3 |
|
| 54 | -- LiteRadio 4 SE |
|
| 55 | - |
|
| 56 | -The LiteRadio 2 SE Frsky or Bayang version is not supported. LiteRadio 2 and LiteRadio 3 Pro is powered by OpenTX system, please use the OpenTX Companion. |
|
| 57 | - |
|
| 58 | -Click the yellow button below to active configurator for radio controller. |
|
| 59 | - |
|
| 60 | -### Remote control parameters |
|
| 61 | - |
|
| 62 | -- Model == LiteRadio3 remote control |
|
| 63 | -- Remote control distance == 500-600 meters |
|
| 64 | -- Frequency range == 2.4G (2403MHz-2447MHz) |
|
| 65 | -- Support protocol == ELRS 2.4G/Frsky (CC2500) |
|
| 66 | -- Channel == 8 |
|
| 67 | -- Support protocol == ELRS 2.4G |
|
| 68 | -- Power == 25mW/50mW/100mW |
|
| 69 | -- Adaptive drone type supports |
|
| 70 | - - Multi-rotor/support USB firmware update |
|
| 71 | - - BETAFPV Configurator connection |
|
| 72 | - - Custom LiteRadio system joystick calibration |
|
| 73 | -- LED light == red light on/red warning/blue normal |
|
| 74 | -- Battery built-in == 2000mAh1S battery |
|
| 75 | -- Charging connector == Type-C |
|
| 76 | - |
|
| 77 | -## BetaFPV Configurator |
|
| 78 | - |
|
| 79 | -[github release ](https://github.com/BETAFPV/BETAFPV_Configurator/releases) |
|
| 80 | - |
|
| 81 | -[BETAFPV Configurator User Manual](https://support.betafpv.com/hc/en-us/articles/40712112687769-BETAFPV-Configurator-User-Manual) |
|
| 82 | - |
|
| 83 | -[github BETAFPV_Configurator](https://github.com/BETAFPV/BETAFPV_Configurator) |
|
| 84 | - |
|
| 85 | - |
|
| 86 | -### Connection |
|
| 87 | - |
|
| 88 | -- via serial port (USB) |
|
| 89 | - |
|
| 90 | - |
|
| 91 | - |
|
| 92 | -## ref |
|
| 93 | - |
|
| 94 | -- [[betaFPV]] - [[FPV]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/frsky-dat/frsky-dat.md
| ... | ... | @@ -1,9 +0,0 @@ |
| 1 | - |
|
| 2 | -# frsky-dat |
|
| 3 | - |
|
| 4 | -- [Taranis Series](https://www.frsky-rc.com/product-category/transmitters/taranis-series/) |
|
| 5 | - |
|
| 6 | - |
|
| 7 | -## ref |
|
| 8 | - |
|
| 9 | -- [[RC-supplier-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/radiomaster-dat/2025-05-16-12-45-54.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-supplier-dat/radiomaster-dat/2025-05-16-12-45-54.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/radiomaster-dat/2025-05-16-12-47-56.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-supplier-dat/radiomaster-dat/2025-05-16-12-47-56.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/radiomaster-dat/2025-05-16-12-48-22.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/RC-supplier-dat/radiomaster-dat/2025-05-16-12-48-22.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/radiomaster-dat/radiomaster-dat.md
| ... | ... | @@ -1,79 +0,0 @@ |
| 1 | - |
|
| 2 | -# radiomaster-dat |
|
| 3 | - |
|
| 4 | - |
|
| 5 | -## binding |
|
| 6 | - |
|
| 7 | -## Pocket Radio Controller (M2) |
|
| 8 | - |
|
| 9 | - |
|
| 10 | -https://www.radiomasterrc.com/products/pocket-radio-controller-m2 |
|
| 11 | - |
|
| 12 | -https://cdn.shopify.com/s/files/1/0609/8324/7079/files/Pocket_1.pdf?v=1736839330 |
|
| 13 | - |
|
| 14 | -firmwares - https://www.radiomasterrc.com/pages/firmware-updates |
|
| 15 | - |
|
| 16 | - |
|
| 17 | - |
|
| 18 | - |
|
| 19 | -## wifi |
|
| 20 | - |
|
| 21 | -better use this wifi option to connect your devices to your local network: |
|
| 22 | - |
|
| 23 | - One-time connect to network, retain Home network setting |
|
| 24 | - |
|
| 25 | - http://elrs_tx.local |
|
| 26 | - |
|
| 27 | - |
|
| 28 | -find firmware version |
|
| 29 | - |
|
| 30 | - ExpressLRS |
|
| 31 | - RadioMaster Pocket Internal 2.4GHz TX |
|
| 32 | - Firmware Rev. 3.5.4 (a6f9a2) ISM2G4 |
|
| 33 | - |
|
| 34 | - |
|
| 35 | -## flash |
|
| 36 | - |
|
| 37 | - You must choose regulatory domain for your device in 2.4 GHz band |
|
| 38 | - |
|
| 39 | - Custom binding phrase must be longer than 6 characters |
|
| 40 | - |
|
| 41 | - |
|
| 42 | -## build firmware first |
|
| 43 | - |
|
| 44 | - |
|
| 45 | - |
|
| 46 | - |
|
| 47 | - |
|
| 48 | - |
|
| 49 | -## flash log |
|
| 50 | - |
|
| 51 | - % Total % Received % Xferd Average Speed Time Time Time Current |
|
| 52 | - Dload Upload Total Spent |
|
| 53 | - Left Speed |
|
| 54 | - |
|
| 55 | - 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 |
|
| 56 | - 12 1534k 0 0 12 192k 0 153k 0:00:09 0:00:01 0:00:08 154k |
|
| 57 | - 20 1534k 0 0 20 320k 0 137k 0:00:11 0:00:02 0:00:09 137k |
|
| 58 | - 25 1534k 0 0 25 384k 0 119k 0:00:12 0:00:03 0:00:09 119k |
|
| 59 | - 33 1534k 0 0 33 512k 0 113k 0:00:13 0:00:04 0:00:09 113k |
|
| 60 | - 37 1534k 0 0 37 576k 0 110k 0:00:13 0:00:05 0:00:08 110k |
|
| 61 | - 45 1534k 0 0 45 704k 0 105k 0:00:14 0:00:06 0:00:08 96234 |
|
| 62 | - 50 1534k 0 0 50 768k 0 103k 0:00:14 0:00:07 0:00:07 90181 |
|
| 63 | - 54 1534k 0 0 54 832k 0 102k 0:00:15 0:00:08 0:00:07 92902 |
|
| 64 | - 62 1534k 0 0 62 960k 0 100k 0:00:15 0:00:09 0:00:06 91603 |
|
| 65 | - 66 1534k 0 0 66 1024k 0 100k 0:00:15 0:00:10 0:00:05 91548 |
|
| 66 | - 75 1534k 0 0 75 1152k 0 99k 0:00:15 0:00:11 0:00:04 93775 |
|
| 67 | - 79 1534k 0 0 79 1216k 0 98k 0:00:15 0:00:12 0:00:03 94064 |
|
| 68 | - 83 1534k 0 0 83 1280k 0 98k 0:00:15 0:00:13 0:00:02 93852 |
|
| 69 | - 91 1534k 0 0 91 1408k 0 99813 0:00:15 0:00:14 0:00:01 92958 |
|
| 70 | - 95 1534k 0 0 95 1472k 0 99416 0:00:15 0:00:15 --:--:-- 92639 |
|
| 71 | - 100 1534k 0 0 100 1534k 0 92904 0:00:16 0:00:16 --:--:-- 73560 |
|
| 72 | - 100 1534k 0 0 100 1534k 0 87667 0:00:17 0:00:17 --:--:-- 57992 |
|
| 73 | - 100 1535k 100 99 100 1534k 5 84899 0:00:19 0:00:18 0:00:01 47599 |
|
| 74 | - 100 1535k 100 99 100 1534k 5 84899 0:00:19 0:00:18 0:00:01 31982 |
|
| 75 | - |
|
| 76 | - ** UPLOADING TO: http://192.168.72.9/update |
|
| 77 | - |
|
| 78 | - UPLOAD SUCCESS |
|
| 79 | - [32mUpdate complete. Please wait for a few seconds while the device reboots.[0m |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/RC-supplier-dat/speedybee-dat/speedybee-dat.md
| ... | ... | @@ -1,7 +0,0 @@ |
| 1 | - |
|
| 2 | -# speedybee-dat |
|
| 3 | - |
|
| 4 | -[SpeedyBee 4pcs FPV Soldering Practice Board for FPV Drone Beginners, Tools for Flight controller ESC Soldering Practice](https://www.amazon.com/SpeedyBee-Soldering-Practice-Beginners-controller/dp/B0C5X26JWQ/ref=sr_1_32?dib=eyJ2IjoiMSJ9.85xi15ftM4OWw33_siXrDRGNOKuf3CgQct4cVlBOFqI1ZAAZD4Gz_S4U_wqEKgjxWcsGOZPlWkdGdEASaTJntO1H_pFgsXO61wuEgveKAmLTLHR-cjsa5SOhaKUXU0vVHE7oijzqLoIPsx-H55gYNPr_F8aMX98OqPfwk64Ma12qrNSidLDVokmdegWL621v3U-5PDEaMNTjdACgOTHEBxAGhtxksaYVouWcSkxMCTI-jr0FkvxyQeZmO6S-UjXJcEcChxa4sPMjVyiK7070XhJlH2EnXqgnv0KScl80Jqc.AzbbGJAa2ls6bQWRCrudB-jGcm6vKV7pRItsIyBMpdA&dib_tag=se&keywords=FPV&qid=1744201259&sr=8-32) |
|
| 5 | - |
|
| 6 | - |
|
| 7 | - |
Tech-dat/Network-dat/RC-dat/Tank-dat/2025-05-22-00-49-44.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/Tank-dat/2025-05-22-00-49-44.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/Tank-dat/2025-05-22-00-50-12.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/Tank-dat/2025-05-22-00-50-12.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/Tank-dat/Tank-dat.md
| ... | ... | @@ -1,28 +0,0 @@ |
| 1 | - |
|
| 2 | -# Tank-dat |
|
| 3 | - |
|
| 4 | - |
|
| 5 | -- [[dc-gear-motor-dat]] - [[MG513-dat]] |
|
| 6 | - |
|
| 7 | -- [[tank-track-dat]] |
|
| 8 | - |
|
| 9 | -## tank platform 1 |
|
| 10 | - |
|
| 11 | -- Each wheel has an independent suspension spring |
|
| 12 | -- six rogs each side |
|
| 13 | - |
|
| 14 | - |
|
| 15 | - |
|
| 16 | - |
|
| 17 | - |
|
| 18 | - |
|
| 19 | - |
|
| 20 | -## 3D |
|
| 21 | - |
|
| 22 | -- tank track and [[robot-arm-dat]] - [3D model](https://cad.onshape.com/documents/74b490fd20a2a4c684736444/w/df7ed99939a49695aecaa97f/e/90154fe41bafe724913e360f?renderMode=0&uiState=68301af9be87bf505c7ca7d0) |
|
| 23 | - |
|
| 24 | - |
|
| 25 | - |
|
| 26 | -## ref |
|
| 27 | - |
|
| 28 | -- [[RC]] - [[tank]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/Tank-dat/markus-tank-dat/markus-tank-dat.md
| ... | ... | @@ -1,36 +0,0 @@ |
| 1 | - |
|
| 2 | -# markus-rover-dat |
|
| 3 | - |
|
| 4 | -- [FPV-Rover V2.0 (RC Tank)](https://www.thingiverse.com/thing:2952852) |
|
| 5 | -- [youtube](https://www.youtube.com/watch?v=dpUSdjNppN0) |
|
| 6 | -- https://www.instructables.com/FPV-Rover-V20/ |
|
| 7 | - |
|
| 8 | -## printed parts |
|
| 9 | - |
|
| 10 | -- 2x main cog front |
|
| 11 | -- 2x main cog rear (needs support) |
|
| 12 | -- 16x small cog |
|
| 13 | -- 1x body (needs support) |
|
| 14 | -- 2x outer frame |
|
| 15 | -- 2x big bevel gear (use 4:1 for less heat and more torque) |
|
| 16 | -- 2x small bevel gear (I recommend strong filament like Nylon) (use 4:1 for less heat and more torque) |
|
| 17 | -- 2x motor mounting bracket |
|
| 18 | -- 2x ESC mount |
|
| 19 | -- 1x inner frame left (or inner frame left high) |
|
| 20 | -- 1x inner frame right (or inner frame right high) |
|
| 21 | -- 1x front cover (needs support) |
|
| 22 | -- 1x rear cover |
|
| 23 | -- 64x tank track |
|
| 24 | -- 64x rubber track for tank track |
|
| 25 | - |
|
| 26 | -## ordered parts |
|
| 27 | - |
|
| 28 | - |
|
| 29 | - |
|
| 30 | -## knowledge |
|
| 31 | - |
|
| 32 | -- [[3d-printer-dat]] |
|
| 33 | - |
|
| 34 | -- [[dc-motor-dat]] - [[tank-track-dat]] - [[ESC-dat]] |
|
| 35 | - |
|
| 36 | -- cog == gear |
Tech-dat/Network-dat/RC-dat/Tank-dat/tank-track-dat/2025-05-22-14-09-36.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/Tank-dat/tank-track-dat/2025-05-22-14-09-36.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/Tank-dat/tank-track-dat/2025-05-22-14-10-22.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/Tank-dat/tank-track-dat/2025-05-22-14-10-22.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/Tank-dat/tank-track-dat/2025-05-22-14-11-57.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/Tank-dat/tank-track-dat/2025-05-22-14-11-57.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/Tank-dat/tank-track-dat/tank-track-dat.md
| ... | ... | @@ -1,54 +0,0 @@ |
| 1 | - |
|
| 2 | -# tank-track-dat |
|
| 3 | - |
|
| 4 | - |
|
| 5 | -## ✅ When Tank Tracks Are Better |
|
| 6 | -- **Soft Terrain** (sand, mud, snow): |
|
| 7 | - - Tracks distribute weight over a larger surface, preventing sinking. |
|
| 8 | -- **Uneven Terrain** (rocks, slopes, obstacles): |
|
| 9 | - - Tracks provide better grip and stability. |
|
| 10 | -- **Heavy Loads**: |
|
| 11 | - - Tracks can support and move heavier equipment with more traction. |
|
| 12 | - |
|
| 13 | -## ✅ When Wheels Are Better |
|
| 14 | -- **Hard, Flat Terrain** (pavement, concrete): |
|
| 15 | - - Wheels are faster and more energy-efficient. |
|
| 16 | -- **Speed & Efficiency**: |
|
| 17 | - - Wheeled systems are usually lighter and less power-hungry. |
|
| 18 | -- **Maintenance & Cost**: |
|
| 19 | - - Wheels are simpler, cheaper, and easier to repair. |
|
| 20 | - |
|
| 21 | - |
|
| 22 | -## 🔍 Summary Table |
|
| 23 | - |
|
| 24 | -| Feature | Tank Tracks | Wheels | |
|
| 25 | -|------------------|----------------------------------|----------------------------------| |
|
| 26 | -| Traction | Excellent on rough terrain | Good on hard surfaces | |
|
| 27 | -| Speed | Slower | Faster | |
|
| 28 | -| Efficiency | Lower (more friction) | Higher | |
|
| 29 | -| Terrain Handling | Superior on soft/uneven ground | Best on smooth/hard ground | |
|
| 30 | -| Weight Support | High | Moderate | |
|
| 31 | -| Maintenance | More complex and expensive | Easier and cheaper | |
|
| 32 | - |
|
| 33 | - |
|
| 34 | -## BOMS |
|
| 35 | - |
|
| 36 | -Cogs |
|
| 37 | - |
|
| 38 | - |
|
| 39 | - |
|
| 40 | - |
|
| 41 | - |
|
| 42 | -Chains |
|
| 43 | - |
|
| 44 | - |
|
| 45 | - |
|
| 46 | - |
|
| 47 | -## guide |
|
| 48 | - |
|
| 49 | -- [tank #track disassemble and re-assemble](https://t.me/electrodragon3/371) |
|
| 50 | - |
|
| 51 | - |
|
| 52 | -## ref |
|
| 53 | - |
|
| 54 | -- [[robot-dat]] - [[tank-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/UAV-dat/UAV-dat.md
| ... | ... | @@ -1,46 +0,0 @@ |
| 1 | - |
|
| 2 | -# UAV-dat |
|
| 3 | - |
|
| 4 | -A UAV stands for Unmanned Aerial Vehicle. It's an aircraft without a human pilot on board, controlled remotely or autonomously. They are also commonly known as drones. |
|
| 5 | - |
|
| 6 | -- [[betaflight-dat]] - [[ArduPilot-dat]] |
|
| 7 | - |
|
| 8 | -- [[FPV-dat]] |
|
| 9 | - |
|
| 10 | - |
|
| 11 | - |
|
| 12 | -## fixed-wing UAV |
|
| 13 | - |
|
| 14 | -### Talon 1400 Overview |
|
| 15 | - |
|
| 16 | -#### What is the Talon 1400? |
|
| 17 | -The **Talon 1400** is a high-performance, **3D-printed unmanned aerial vehicle (UAV)** developed by Flightory. It is optimized for long-range and efficient flight. |
|
| 18 | - |
|
| 19 | -##### Specifications: |
|
| 20 | -- **Wingspan:** 1,305 mm |
|
| 21 | -- **Length:** 830 mm |
|
| 22 | -- **Flight Time:** Up to 4 hours (with large Li-Ion 4S6P battery) |
|
| 23 | -- **Materials:** LW-PLA and PETG |
|
| 24 | -- **Airfoil:** Eppler E205 |
|
| 25 | -- **Optimal Cruise Speed:** 55-65 km/h |
|
| 26 | - |
|
| 27 | -#### Is It Betaflight-Based? |
|
| 28 | - |
|
| 29 | -**No**, the Talon 1400 is **not** based on Betaflight. Since it is a **fixed-wing UAV**, it is more suited for **autonomous flight controllers** rather than Betaflight, which is designed for FPV racing drones. |
|
| 30 | - |
|
| 31 | -##### Recommended Flight Controllers: |
|
| 32 | - |
|
| 33 | -- **Mateksys F405-Wing / F765-Wing** |
|
| 34 | -- **Pixhawk (PX4 or ArduPilot firmware)** |
|
| 35 | -- **Holybro Kakute F7 / H743-Wing** |
|
| 36 | - |
|
| 37 | -These controllers support **GPS navigation, waypoint missions, and return-to-home (RTH)**, making them better suited for long-range operations. |
|
| 38 | - |
|
| 39 | -#### Resources: |
|
| 40 | - |
|
| 41 | -- [Flying a 3D Printed Fixed Wing Drone | Talon 1400 V2](https://www.youtube.com/watch?v=2ngGgtw1sUw) |
|
| 42 | - |
|
| 43 | -- [Flightory Talon 1400 Official Page](https://flightory.com/product/talon-1400/) |
|
| 44 | -- [Talon 1400 Assembly Tutorial (YouTube)](https://www.youtube.com/watch?v=LGt_8F4e5r8) |
|
| 45 | - |
|
| 46 | - |
Tech-dat/Network-dat/RC-dat/UAV-dat/betaflight-dat.md
| ... | ... | @@ -1,31 +0,0 @@ |
| 1 | - |
|
| 2 | - |
|
| 3 | -# betaflight-dat.md |
|
| 4 | - |
|
| 5 | -Betaflight is an open-source firmware for drones and other unmanned aerial vehicles (UAVs). It is designed to provide advanced flight control capabilities, making it popular among hobbyists and enthusiasts in the drone community. Betaflight is known for its flexibility, configurability, and support for a wide range of hardware platforms. |
|
| 6 | - |
|
| 7 | -- [[FPV-dat]] |
|
| 8 | - |
|
| 9 | - |
|
| 10 | - |
|
| 11 | - |
|
| 12 | - |
|
| 13 | -## commerlized projects |
|
| 14 | - |
|
| 15 | -- **speedybee** == https://www.speedybee.com/ == SpeedyBee is a company that specializes in providing high-quality drone components and accessories, including flight controllers, ESCs, and other related products. They are known for their innovative designs and user-friendly interfaces, making them a popular choice among drone enthusiasts. |
|
| 16 | -- **betafpv** == https://www.betafpv.com/ == BETAFPV is a company that focuses on producing small and lightweight drones, particularly for FPV (First Person View) racing and freestyle flying. They offer a range of products, including flight controllers, cameras, and other accessories tailored for FPV enthusiasts. |
|
| 17 | -- happymodel |
|
| 18 | -- iFlight |
|
| 19 | -- Holybro |
|
| 20 | -- TBS |
|
| 21 | -- Flywoo |
|
| 22 | -- HGLRC |
|
| 23 | -- Diatone |
|
| 24 | -- GepRC |
|
| 25 | -- Racerstar |
|
| 26 | -- Emax |
|
| 27 | -- Eachine |
|
| 28 | -- HGLRC |
|
| 29 | -- Racerstar |
|
| 30 | - |
|
| 31 | - |
Tech-dat/Network-dat/RC-dat/airplane-dat/airplane-dat.md
| ... | ... | @@ -1,38 +0,0 @@ |
| 1 | - |
|
| 2 | -# airplane-dat |
|
| 3 | - |
|
| 4 | -## Channel 1: Aileron Action |
|
| 5 | - |
|
| 6 | -Control theright-and-left lean of the aircraft.To level the slantwise aircraft,youmust make |
|
| 7 | -thecontrol rod act inreverse direction.Otherwise,it will makethe aircraftoverturn. |
|
| 8 | - |
|
| 9 | -## Channel 2: Elevator Action |
|
| 10 | - |
|
| 11 | -Control the aerocraft to descend orascend.Pulling the control rod down will driveup the head, |
|
| 12 | -and the aeroplane will ascend.Boosting it upwill make thehead downhill,and the aeroplane |
|
| 13 | -willdescend. |
|
| 14 | - |
|
| 15 | -## Channel 3: Throttle Operation |
|
| 16 | - |
|
| 17 | -Control the power. Pulling the control rod down will minish down the power group, and boosting |
|
| 18 | -the control rod up will increase thepower group. |
|
| 19 | - |
|
| 20 | -## Channel 4: Rudder Action |
|
| 21 | - |
|
| 22 | -Control the swerve of the aerocraft. Turning the control rod to left will make the head of the |
|
| 23 | -aircraft turn left, and turning it to right will make the head turn right. |
|
| 24 | - |
|
| 25 | -## Channel 5: LandingGear/GyroAction |
|
| 26 | - |
|
| 27 | -This channel is for switch variable. It is a switch to control landing gear when used for airplane |
|
| 28 | -state, but it will be a switch for gyroscope when used for helicopter. |
|
| 29 | - |
|
| 30 | -## Channel 6: Screw-pitch/Flaperon Action |
|
| 31 | - |
|
| 32 | -The angle adjustingof the flaperon isfor the airplane state,and the adjustingof themain |
|
| 33 | -screw-pitch is forhelicopter state. |
|
| 34 | - |
|
| 35 | - |
|
| 36 | -## ref |
|
| 37 | - |
|
| 38 | -- [[RC-dat]] - [[airplane]] - [[RC]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/flight-controller-dat/flight-controller-dat.md
| ... | ... | @@ -1,3 +0,0 @@ |
| 1 | - |
|
| 2 | -# flight-controller-dat |
|
| 3 | - |
Tech-dat/Network-dat/RC-dat/quadcopter-dat/2025-01-29-17-12-32.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/quadcopter-dat/2025-01-29-17-12-32.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/quadcopter-dat/FPV-dat/2025-04-02-12-45-53.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/quadcopter-dat/FPV-dat/2025-04-02-12-45-53.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/quadcopter-dat/FPV-dat/2025-04-02-13-14-05.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/quadcopter-dat/FPV-dat/2025-04-02-13-14-05.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/quadcopter-dat/FPV-dat/FPV-controller-dat/FPV-controller-dat.md
| ... | ... | @@ -1,13 +0,0 @@ |
| 1 | - |
|
| 2 | -# FPV-receiver-dat |
|
| 3 | - |
|
| 4 | -- [[ELRS-dat]] - [[TBS-dat]] |
|
| 5 | - |
|
| 6 | - |
|
| 7 | -## DJI |
|
| 8 | - |
|
| 9 | -- [DJI FPV Remote Controller 3](https://www.amazon.com/DJI-FPV-Remote-Controller-Compatibility/dp/B0CS6JCX2W/ref=sr_1_3?dib=eyJ2IjoiMSJ9.85xi15ftM4OWw33_siXrDRGNOKuf3CgQct4cVlBOFqI1ZAAZD4Gz_S4U_wqEKgjxWcsGOZPlWkdGdEASaTJntO1H_pFgsXO61wuEgveKAmLTLHR-cjsa5SOhaKUXU0vVHE7oijzqLoIPsx-H55gYNPr_F8aMX98OqPfwk64Ma12qrNSidLDVokmdegWL621v3U-5PDEaMNTjdACgOTHEBxAGhtxksaYVouWcSkxMCTI-jr0FkvxyQeZmO6S-UjXJcEcChxa4sPMjVyiK7070XhJlH2EnXqgnv0KScl80Jqc.AzbbGJAa2ls6bQWRCrudB-jGcm6vKV7pRItsIyBMpdA&dib_tag=se&keywords=FPV&qid=1744201259&sr=8-3) |
|
| 10 | - |
|
| 11 | -- [DJI RC Motion 3, FPV Smart Controller with Immersive Motion Control, Compact and Portable, One-Click Emergency Brake, AR Cursor, Intuitive Drone Controller, Multi-Model Compatibility](https://www.amazon.com/DJI-Controller-Immersive-Multi-Model-Compatibility/dp/B0CS6LDCKC/ref=sr_1_11?dib=eyJ2IjoiMSJ9.85xi15ftM4OWw33_siXrDRGNOKuf3CgQct4cVlBOFqI1ZAAZD4Gz_S4U_wqEKgjxWcsGOZPlWkdGdEASaTJntO1H_pFgsXO61wuEgveKAmLTLHR-cjsa5SOhaKUXU0vVHE7oijzqLoIPsx-H55gYNPr_F8aMX98OqPfwk64Ma12qrNSidLDVokmdegWL621v3U-5PDEaMNTjdACgOTHEBxAGhtxksaYVouWcSkxMCTI-jr0FkvxyQeZmO6S-UjXJcEcChxa4sPMjVyiK7070XhJlH2EnXqgnv0KScl80Jqc.AzbbGJAa2ls6bQWRCrudB-jGcm6vKV7pRItsIyBMpdA&dib_tag=se&keywords=FPV&qid=1744201259&sr=8-11) |
|
| 12 | - |
|
| 13 | - |
Tech-dat/Network-dat/RC-dat/quadcopter-dat/FPV-dat/FPV-dat.md
| ... | ... | @@ -1,208 +0,0 @@ |
| 1 | - |
|
| 2 | -# FPV-dat |
|
| 3 | - |
|
| 4 | -- [[quadcopter-dat]] |
|
| 5 | - |
|
| 6 | -- [[FPV-controller-dat]] - [[Goggles-dat]] |
|
| 7 | - |
|
| 8 | -- [[ELRS-dat]] - [[FrSky-dat]] - [[ArduPilot-dat]] - [[CRSF-dat]] |
|
| 9 | - |
|
| 10 | -- [[BMS-dat]] |
|
| 11 | - |
|
| 12 | - |
|
| 13 | - |
|
| 14 | -## parts of the FPV drones |
|
| 15 | - |
|
| 16 | -- **Flight Controller**: The brain of the drone, responsible for stabilizing and controlling the flight. It processes data from sensors and executes commands from the pilot or autopilot system. |
|
| 17 | - |
|
| 18 | -- **Electronic Speed Controller (ESC)**: Controls the speed of the motors by adjusting the power supplied to them. ESCs are essential for smooth and responsive flight. |
|
| 19 | - |
|
| 20 | -- **Motors**: Provide the thrust needed for flight. Brushless motors are commonly used in FPV drones due to their efficiency and power. |
|
| 21 | - |
|
| 22 | -- **Propellers**: Generate lift by spinning rapidly. The size and pitch of the propellers can significantly affect the drone's performance and flight characteristics. |
|
| 23 | - |
|
| 24 | - - [[SCU1059-dat]] |
|
| 25 | - |
|
| 26 | -- **Camera**: Captures real-time video for FPV flying. FPV cameras are designed to provide low-latency video transmission to the pilot's goggles or screen. |
|
| 27 | - |
|
| 28 | -- [[VTX-dat]]: Video Transmitters are commonly referred to as VTX units. They are responsible for transmitting the video signal from the camera to the pilot's goggles or screen. VTX units come in various power levels and frequencies, allowing pilots to choose the best option for their flying environment. |
|
| 29 | -- **Antenna**: Enhances the signal strength and range of the VTX. Different antenna types (e.g., dipole, patch, circular polarized) can be used to optimize performance. |
|
| 30 | - |
|
| 31 | -- **ExpressLRS**: A long-range radio control link for FPV drones, known for its low latency and high refresh rates. It is an open-source project that competes with other systems like Crossfire and ELRS. |
|
| 32 | - |
|
| 33 | - - [[ELRS-dat]] |
|
| 34 | - |
|
| 35 | -- **Goggles**: Wearable displays that allow pilots to see the live video feed from the drone's camera. They often include features like head tracking and DVR (Digital Video Recorder) capabilities. |
|
| 36 | - |
|
| 37 | - |
|
| 38 | - |
|
| 39 | - |
|
| 40 | - |
|
| 41 | -## Bee35 |
|
| 42 | - |
|
| 43 | - |
|
| 44 | - |
|
| 45 | - |
|
| 46 | - |
|
| 47 | - |
|
| 48 | -| version | price | description | |
|
| 49 | -| -------------------------- | ----- | ------------------------------------- | |
|
| 50 | -| Bee35 Pro O3 Air Unit TBS | 480 | O3 Air Unit, TBS radio | |
|
| 51 | -| Bee35 Pro O3 Air Unit ELRS | 470 | O3 Air Unit, ELRS radio | |
|
| 52 | -| Bee35 Pro O3 Air Unit PNP | 460 | O3 Air Unit, no receiver | |
|
| 53 | -| Bee35 Pro | 270 | Standard analog version | |
|
| 54 | -| Bee35 Pro LINK WASP TBS | 430 | LINK WASP digital system, TBS radio | |
|
| 55 | -| Bee35 Pro LINK WASP ELRS | 420 | LINK WASP digital system, ELRS radio | |
|
| 56 | -| Bee35 Pro LINK WASP PNP | 400 | LINK WASP digital system, no receiver | |
|
| 57 | -| Bee35 Analog TBS | 306 | Analog FPV system, TBS radio | |
|
| 58 | -| Bee35 Analog ELRS | 296 | Analog FPV system, ELRS radio | |
|
| 59 | - |
|
| 60 | - |
|
| 61 | - |
|
| 62 | -## commerialized FPV |
|
| 63 | - |
|
| 64 | -- [[speedybee-dat]] |
|
| 65 | - |
|
| 66 | -### 1. [SpeedyBee Flight Controllers & Stacks](https://speedybee.com/) |
|
| 67 | -- **Brand:** SpeedyBee |
|
| 68 | -- **Description:** Budget-friendly, Betaflight-supported flight controllers with easy app-based tuning. |
|
| 69 | -- **Example Products:** |
|
| 70 | - - **SpeedyBee F405 V4 Stack** (F4-based, affordable) |
|
| 71 | - - **SpeedyBee F7 V3 Stack** (F7-based, powerful & feature-rich) |
|
| 72 | -- **Commercial Features:** |
|
| 73 | - - Wireless **Bluetooth & Wi-Fi tuning** via SpeedyBee app. |
|
| 74 | - - Fully compatible with Betaflight Configurator. |
|
| 75 | -- **Website:** [speedybee.com](https://speedybee.com/) |
|
| 76 | - |
|
| 77 | ---- |
|
| 78 | - |
|
| 79 | -### 2. [TBS Tango 2 (Crossfire-Integrated Radio Controller)](https://www.team-blacksheep.com/) |
|
| 80 | -- **Brand:** Team BlackSheep (TBS) |
|
| 81 | -- **Description:** A high-performance FPV radio transmitter designed for **Betaflight-based drones** with **built-in Crossfire**. |
|
| 82 | -- **Commercial Features:** |
|
| 83 | - - Fully optimized for **Betaflight & Crossfire**. |
|
| 84 | - - Compact, ergonomic design for FPV pilots. |
|
| 85 | -- **Website:** [team-blacksheep.com](https://www.team-blacksheep.com/) |
|
| 86 | - |
|
| 87 | - |
|
| 88 | -## opensource control projects |
|
| 89 | - |
|
| 90 | -# Most Famous Open-Source FPV GitHub Projects |
|
| 91 | - |
|
| 92 | -If you're looking for **open-source FPV (First-Person View) projects** on GitHub, here are some of the **most famous** ones: |
|
| 93 | - |
|
| 94 | -## 1. [Betaflight](https://github.com/betaflight/betaflight) |
|
| 95 | -- **Description:** One of the most widely used open-source flight control firmware for FPV drones. |
|
| 96 | -- **Features:** |
|
| 97 | - - Highly optimized for **acrobatic** and **racing drones**. |
|
| 98 | - - Supports a wide range of flight controllers. |
|
| 99 | - - Advanced **tuning options** for PID, filters, and motor control. |
|
| 100 | -- **GitHub:** [github.com/betaflight/betaflight](https://github.com/betaflight/betaflight) |
|
| 101 | - |
|
| 102 | ---- |
|
| 103 | - |
|
| 104 | -## 2. [iNavFlight](https://github.com/iNavFlight/inav) |
|
| 105 | -- **Description:** A fork of Betaflight, but optimized for **GPS and long-range FPV**. |
|
| 106 | -- **Features:** |
|
| 107 | - - Supports **GPS waypoint navigation, return-to-home (RTH), and mission planning**. |
|
| 108 | - - Designed for **freestyle and long-range cruising** rather than racing. |
|
| 109 | -- **GitHub:** [github.com/iNavFlight/inav](https://github.com/iNavFlight/inav) |
|
| 110 | - |
|
| 111 | ---- |
|
| 112 | - |
|
| 113 | -## 3. [ArduPilot](https://github.com/ArduPilot/ardupilot) |
|
| 114 | -- **Description:** A professional-grade open-source autopilot for drones, including **FPV quadcopters, planes, and rovers**. |
|
| 115 | -- **Features:** |
|
| 116 | - - **Highly autonomous** with advanced mission planning. |
|
| 117 | - - Works with multiple types of vehicles (planes, multirotors, helicopters). |
|
| 118 | - - Compatible with **Mission Planner** and **QGroundControl**. |
|
| 119 | -- **GitHub:** [github.com/ArduPilot/ardupilot](https://github.com/ArduPilot/ardupilot) |
|
| 120 | - |
|
| 121 | ---- |
|
| 122 | - |
|
| 123 | -## 4. [PX4](https://github.com/PX4/PX4-Autopilot) |
|
| 124 | -- **Description:** A powerful open-source **flight control software** used in drones and FPV systems. |
|
| 125 | -- **Features:** |
|
| 126 | - - Supports both **FPV racing drones** and **autonomous UAVs**. |
|
| 127 | - - Works with Pixhawk flight controllers and supports **ROS (Robot Operating System)**. |
|
| 128 | -- **GitHub:** [github.com/PX4/PX4-Autopilot](https://github.com/PX4/PX4-Autopilot) |
|
| 129 | - |
|
| 130 | ---- |
|
| 131 | - |
|
| 132 | -## 5. [FalcoX](https://github.com/FlightOne/FalcoX) |
|
| 133 | -- **Description:** An alternative FPV flight control firmware focusing on **ease of use and smooth flight performance**. |
|
| 134 | -- **Features:** |
|
| 135 | - - Intuitive configuration interface. |
|
| 136 | - - Aimed at both **freestyle pilots** and **racers**. |
|
| 137 | -- **GitHub:** [github.com/FlightOne/FalcoX](https://github.com/FlightOne/FalcoX) |
|
| 138 | - |
|
| 139 | ---- |
|
| 140 | - |
|
| 141 | -## 6. [ExpressLRS](https://github.com/ExpressLRS/ExpressLRS) |
|
| 142 | -- **Description:** Open-source long-range **radio control link** for FPV drones, competing with Crossfire and ELRS. |
|
| 143 | -- **Features:** |
|
| 144 | - - **Low latency and high refresh rates** (great for FPV racing). |
|
| 145 | - - Compatible with many radio transmitters (TBS, Jumper, Radiomaster). |
|
| 146 | -- **GitHub:** [github.com/ExpressLRS/ExpressLRS](https://github.com/ExpressLRS/ExpressLRS) |
|
| 147 | - |
|
| 148 | ---- |
|
| 149 | - |
|
| 150 | -## 7. [OpenHD](https://github.com/OpenHD/OpenHD) |
|
| 151 | -- **Description:** Open-source **HD video transmission** for FPV drones (alternative to DJI HD systems). |
|
| 152 | -- **Features:** |
|
| 153 | - - Uses **Raspberry Pi + WiFi** for HD FPV video streaming. |
|
| 154 | - - Supports OSD (On-Screen Display) and telemetry data. |
|
| 155 | -- **GitHub:** [github.com/OpenHD/OpenHD](https://github.com/OpenHD/OpenHD) |
|
| 156 | - |
|
| 157 | ---- |
|
| 158 | - |
|
| 159 | -## 🔥 Which One Should You Choose? |
|
| 160 | -| Purpose | Best Open-Source Project | |
|
| 161 | -| ------------------------------------------- | ------------------------------------------------------ | |
|
| 162 | -| **Racing/Freestyle FPV** | [Betaflight](https://github.com/betaflight/betaflight) | |
|
| 163 | -| **GPS & Long-Range FPV** | [iNav](https://github.com/iNavFlight/inav) | |
|
| 164 | -| **Full Autopilot (Drones, Planes, Rovers)** | [ArduPilot](https://github.com/ArduPilot/ardupilot) | |
|
| 165 | -| **Professional UAVs & Research** | [PX4](https://github.com/PX4/PX4-Autopilot) | |
|
| 166 | -| **HD FPV Video Streaming** | [OpenHD](https://github.com/OpenHD/OpenHD) | |
|
| 167 | -| **Long-Range Radio Links** | [ExpressLRS](https://github.com/ExpressLRS/ExpressLRS) | |
|
| 168 | - |
|
| 169 | - |
|
| 170 | - |
|
| 171 | -## standards |
|
| 172 | - |
|
| 173 | -### PNP stands for "Plug and Play." |
|
| 174 | - |
|
| 175 | -In the context of FPV drones, a PNP version means that the drone comes mostly assembled but does not include a radio receiver. |
|
| 176 | - |
|
| 177 | -Here's why it doesn't include a receiver: |
|
| 178 | - |
|
| 179 | -Flexibility: PNP versions cater to experienced FPV pilots who already have their preferred radio transmitter and receiver. This allows them to use their existing equipment and avoid paying for redundant components. |
|
| 180 | -Customization: Pilots might have specific receiver requirements based on their radio system (e.g., TBS Crossfire, ELRS, FrSky). Offering a PNP version lets them choose the exact receiver that's compatible with their setup. |
|
| 181 | -Cost Savings: By excluding the receiver, the manufacturer can offer the PNP version at a lower price point, making it attractive to those who don't need the included receiver. |
|
| 182 | -In short, PNP versions are designed for users who want to use their own radio gear and prefer to avoid unnecessary costs or compatibility issues. |
|
| 183 | - |
|
| 184 | - |
|
| 185 | - |
|
| 186 | -## popular products |
|
| 187 | - |
|
| 188 | -DJI |
|
| 189 | - |
|
| 190 | -- [DJI Avata 2 (Drone Only), FPV Drone with Camera 4K, Immersive Flight Experience, Built-in Propeller Guard, Easy Flip/Roll, Super-Wide 155° FOV, Compatible with RC Motion 3, FAA Remote ID Compliant](https://www.amazon.com/DJI-Immersive-Experience-Super-Wide-Compatible/dp/B0CS6KY96F/ref=sr_1_45?dib=eyJ2IjoiMSJ9.85xi15ftM4OWw33_siXrDRGNOKuf3CgQct4cVlBOFqI1ZAAZD4Gz_S4U_wqEKgjxWcsGOZPlWkdGdEASaTJntO1H_pFgsXO61wuEgveKAmLTLHR-cjsa5SOhaKUXU0vVHE7oijzqLoIPsx-H55gYNPr_F8aMX98OqPfwk64Ma12qrNSidLDVokmdegWL621v3U-5PDEaMNTjdACgOTHEBxAGhtxksaYVouWcSkxMCTI-jr0FkvxyQeZmO6S-UjXJcEcChxa4sPMjVyiK7070XhJlH2EnXqgnv0KScl80Jqc.AzbbGJAa2ls6bQWRCrudB-jGcm6vKV7pRItsIyBMpdA&dib_tag=se&keywords=FPV&qid=1744201259&sr=8-45) |
|
| 191 | - |
|
| 192 | -BetaFPV |
|
| 193 | - |
|
| 194 | -- [BETAFPV Betaflight ELRS V3 Cetus X FPV Kit with LiteRadio 3 Transmitter C04 Camera VR03 Goggles with DVR Recording Function, Supported 2S Power Advanced RTF Kit for FPV Beginners to Fly Faster Further](https://www.amazon.com/BETAFPV-LiteRadio-Transmitter-Recording-Betaflight/dp/B0BJVP3XW7/ref=sr_1_48?dib=eyJ2IjoiMSJ9.85xi15ftM4OWw33_siXrDRGNOKuf3CgQct4cVlBOFqI1ZAAZD4Gz_S4U_wqEKgjxWcsGOZPlWkdGdEASaTJntO1H_pFgsXO61wuEgveKAmLTLHR-cjsa5SOhaKUXU0vVHE7oijzqLoIPsx-H55gYNPr_F8aMX98OqPfwk64Ma12qrNSidLDVokmdegWL621v3U-5PDEaMNTjdACgOTHEBxAGhtxksaYVouWcSkxMCTI-jr0FkvxyQeZmO6S-UjXJcEcChxa4sPMjVyiK7070XhJlH2EnXqgnv0KScl80Jqc.AzbbGJAa2ls6bQWRCrudB-jGcm6vKV7pRItsIyBMpdA&dib_tag=se&keywords=FPV&qid=1744201259&sr=8-48) == rating == 3.5 |
|
| 195 | - |
|
| 196 | -- [BETAFPV Pavo20 Brushless Whoop Quadcopter with HD Digital Bracket for O3 Air Unit, F4 2-3S 20A FC, 1103 8500KV Motor, COB LED Strip, Compatible for FPV Racing Indoor and Outdoor](https://www.amazon.com/BETAFPV-Brushless-Quadcopter-Material-Compatible/dp/B0CKT5G6C1/ref=sr_1_11?crid=1KCLBGZLCPWMM&dib=eyJ2IjoiMSJ9.u8zpDMqhQLF9cnPbc5r76LO9SVPJiVyPzTq0xdtVa2u4UYSXdyYl9H-Z3gMzqguhRBkKgkoRZWaxBHDFD6BRFsCQJKVb4iWibNm9DVSzo8jjnyx10jKEMfQICYMtZJab4CpDzmZXALE0VqfYmsl2b2z6zA536zmhj3MbQfvXxqOrlO8RzQiYLdFv-lIZbHe3VqkD5N2AuBL25TgOETuGrMPmYt7Yhvu1G4lry067nFXe06m0NOi7YGC9HehoblQsTDd1-4IPkuJfZGdR6OljCFD_F9mIqaJ-dIPMlULs8kg.m1NOD5DB1dn9oAtRj6kjXh5UkWTCRb94gNjUZ8Owz8Y&dib_tag=se&keywords=betafpv&qid=1744202445&sprefix=beta%2Caps%2C676&sr=8-11) == rating == 4.1 |
|
| 197 | - |
|
| 198 | - |
|
| 199 | -SpeedyBee Frame |
|
| 200 | - |
|
| 201 | -- [Speedy Bee Bee35 3.5inch Cinewhoop FPV Drone Frame- Pro Version 4S 6S Frame Kit Compatible with DJI O3 Air Unit FPV VTX,Different Flight Controller Stack](https://www.amazon.com/3-5inch-Cinewhoop-Compatible-Different-Controller/dp/B086X5M24H/ref=sr_1_1?dib=eyJ2IjoiMSJ9.flOlB5a6W8Z4mxOLR-K_BDlWDFVnqHJ69LrRLHzsG3Vt1_EuF1CQCJw-erVA1bWn.aK6G-MxmMYmSkACuczQuR4yI0PIn2BzHbY4-bbiXRLo&dib_tag=se&keywords=bee35&qid=1744202041&sr=8-1) |
|
| 202 | - |
|
| 203 | - |
|
| 204 | - |
|
| 205 | - |
|
| 206 | -## ref |
|
| 207 | - |
|
| 208 | -- [[FPV]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/quadcopter-dat/FPV-dat/FPV-simulation-dat/FPV-simulation-dat.md
| ... | ... | @@ -1,88 +0,0 @@ |
| 1 | - |
|
| 2 | -# FPV-simulation-dat |
|
| 3 | - |
|
| 4 | -## Popular FPV Simulators for PC |
|
| 5 | - |
|
| 6 | -| Simulator | Highlights | Price | |
|
| 7 | -| ------------- | ---------------------------------------------------------- | ----- | |
|
| 8 | -| Liftoff | Realistic physics, good for racing & freestyle | ~$20 | |
|
| 9 | -| VelociDrone | Excellent feel, popular for competition practice | ~$20 | |
|
| 10 | -| DRL Simulator | Based on the Drone Racing League, includes tracks & events | ~$10 | |
|
| 11 | -| Uncrashed | Stunning graphics, smooth flying | ~$15 | |
|
| 12 | -| FPV Freerider | Lightweight, good for low-end PCs | ~$5 | |
|
| 13 | - |
|
| 14 | - |
|
| 15 | - |
|
| 16 | -## Compatible Controllers |
|
| 17 | - |
|
| 18 | -- RadioMaster TX16S |
|
| 19 | -- FrSky Taranis QX7 / X9D |
|
| 20 | -- BetaFPV LiteRadio |
|
| 21 | -- DJI FPV controller (works with some sims) |
|
| 22 | -- Most transmitters that support USB or simulator mode |
|
| 23 | - |
|
| 24 | - |
|
| 25 | - |
|
| 26 | -## 🆓 Free or Open Source FPV Simulators for PC |
|
| 27 | - |
|
| 28 | -### 🛠 FPV.Skydive (from ORQA) |
|
| 29 | -- ✅ Free on Steam |
|
| 30 | -- 🧠 Beginner-friendly with training modules |
|
| 31 | -- 🎮 Supports many controllers (via USB) |
|
| 32 | -- 📦 Good for freestyle and basic racing |
|
| 33 | -- ❗ Not open-source, but completely free |
|
| 34 | -- 🔗 [Steam Link](https://store.steampowered.com/app/1645840/FPV_Skydive/) |
|
| 35 | - |
|
| 36 | -https://store.steampowered.com/app/1278060/FPV_SkyDive__FPV_Drone_Simulator/ |
|
| 37 | - |
|
| 38 | ---- |
|
| 39 | - |
|
| 40 | -### 🛠 RotorHazard Simulator |
|
| 41 | -- ⚙️ Community-developed simulator inspired by RotorHazard timing system |
|
| 42 | -- 🖥 Lightweight, browser-based or local |
|
| 43 | -- 💻 Not super polished, but interesting for DIY folks |
|
| 44 | -- 🌐 Open-source (GitHub available) |
|
| 45 | -- 🔗 [GitHub Repository](https://github.com/RotorHazard) |
|
| 46 | - |
|
| 47 | ---- |
|
| 48 | - |
|
| 49 | -### 🛠 OpenFPV Simulator (dead?) |
|
| 50 | -- 🌍 Browser-based prototype sim |
|
| 51 | -- 👶 Very basic physics and controls |
|
| 52 | -- 🧑💻 Open-source, you can fork or contribute |
|
| 53 | -- 🔧 Good for devs/hackers/experimenters |
|
| 54 | -- 🔗 [GitHub Link](https://github.com/OpenFPV/openfpv-simulator) |
|
| 55 | - |
|
| 56 | ---- |
|
| 57 | - |
|
| 58 | -### 🛠 Multirotor Sim (Unity-based) (dead?) |
|
| 59 | -- 🧪 Community project with editable Unity source |
|
| 60 | -- 🎮 Supports USB controllers |
|
| 61 | -- 🔧 Needs a bit of setup, but can be modified freely |
|
| 62 | -- 🔗 [GitHub Link](https://github.com/ArduPilot/multirotor_sim) |
|
| 63 | - |
|
| 64 | ---- |
|
| 65 | - |
|
| 66 | -### 📌 Honorable Mentions (Free Trials or Demos) |
|
| 67 | - |
|
| 68 | -#### **FPV Freerider (Demo version)** |
|
| 69 | -- Limited map, but physics work well |
|
| 70 | -- 🔗 [freeriderfpv.com](https://fpv-freerider.itch.io/fpv-freerider-recharged-demo) |
|
| 71 | - |
|
| 72 | ---- |
|
| 73 | - |
|
| 74 | -### 🧭 Recommendation |
|
| 75 | - |
|
| 76 | -- **If you're new and want a polished free experience:** |
|
| 77 | - ➡️ Try **[FPV.Skydive](https://store.steampowered.com/app/1645840/FPV_Skydive/)** |
|
| 78 | - |
|
| 79 | -- **If you're into tinkering or want to code your own sim:** |
|
| 80 | - ➡️ Check out **OpenFPV** or **Multirotor Sim** on GitHub |
|
| 81 | - |
|
| 82 | - |
|
| 83 | - |
|
| 84 | - |
|
| 85 | -## ref |
|
| 86 | - |
|
| 87 | - |
|
| 88 | -- [[FPV-dat]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/quadcopter-dat/FPV-dat/Goggles-dat/Goggles-dat.md
| ... | ... | @@ -1,7 +0,0 @@ |
| 1 | - |
|
| 2 | -# Goggles-dat |
|
| 3 | - |
|
| 4 | -[DJI Goggles 3, FPV Goggles with Stunning Micro-OLED Screens, Immersive Flight Experience, O4 HD Video Transmission, Adjustable Diopters, Wireless Streaming, Drone Goggles with Real View PiP](https://www.amazon.com/DJI-Micro-OLED-Experience-Transmission-Adjustable/dp/B0CS6L6D6J/ref=sr_1_17?dib=eyJ2IjoiMSJ9.85xi15ftM4OWw33_siXrDRGNOKuf3CgQct4cVlBOFqI1ZAAZD4Gz_S4U_wqEKgjxWcsGOZPlWkdGdEASaTJntO1H_pFgsXO61wuEgveKAmLTLHR-cjsa5SOhaKUXU0vVHE7oijzqLoIPsx-H55gYNPr_F8aMX98OqPfwk64Ma12qrNSidLDVokmdegWL621v3U-5PDEaMNTjdACgOTHEBxAGhtxksaYVouWcSkxMCTI-jr0FkvxyQeZmO6S-UjXJcEcChxa4sPMjVyiK7070XhJlH2EnXqgnv0KScl80Jqc.AzbbGJAa2ls6bQWRCrudB-jGcm6vKV7pRItsIyBMpdA&dib_tag=se&keywords=FPV&qid=1744201259&sr=8-17) |
|
| 5 | - |
|
| 6 | - |
|
| 7 | -[Fat Shark Recon Echo FPV Goggles](https://www.amazon.com/Fat-Shark-Recon-Echo-Goggles/dp/B0CTB8VLYQ/ref=sr_1_41?dib=eyJ2IjoiMSJ9.85xi15ftM4OWw33_siXrDRGNOKuf3CgQct4cVlBOFqI1ZAAZD4Gz_S4U_wqEKgjxWcsGOZPlWkdGdEASaTJntO1H_pFgsXO61wuEgveKAmLTLHR-cjsa5SOhaKUXU0vVHE7oijzqLoIPsx-H55gYNPr_F8aMX98OqPfwk64Ma12qrNSidLDVokmdegWL621v3U-5PDEaMNTjdACgOTHEBxAGhtxksaYVouWcSkxMCTI-jr0FkvxyQeZmO6S-UjXJcEcChxa4sPMjVyiK7070XhJlH2EnXqgnv0KScl80Jqc.AzbbGJAa2ls6bQWRCrudB-jGcm6vKV7pRItsIyBMpdA&dib_tag=se&keywords=FPV&qid=1744201259&sr=8-41) |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/quadcopter-dat/quadcopter-dat.md
| ... | ... | @@ -1,65 +0,0 @@ |
| 1 | - |
|
| 2 | -# quadcopter-dat |
|
| 3 | - |
|
| 4 | - |
|
| 5 | -## opensource |
|
| 6 | - |
|
| 7 | -### cleanfight |
|
| 8 | - |
|
| 9 | -https://github.com/cleanflight/cleanflight |
|
| 10 | - |
|
| 11 | -https://github.com/cleanflight/cleanflight/tree/master/docs |
|
| 12 | - |
|
| 13 | -https://cleanflight.com/ |
|
| 14 | - |
|
| 15 | - |
|
| 16 | -### Openpilot |
|
| 17 | - |
|
| 18 | -## Commerial |
|
| 19 | - |
|
| 20 | -### CJMCU |
|
| 21 | - |
|
| 22 | - |
|
| 23 | - |
|
| 24 | -- https://www.rcgroups.com/forums/showthread.php?2456739-Openpilot-port-to-CJMCU-stm32-quadcopter |
|
| 25 | - |
|
| 26 | -- https://oscarliang.com/build-fpv-micro-quadcopter-smallest-quad/ |
|
| 27 | - |
|
| 28 | -#### new version from https://aeracoop.net/cjmcu2-open-source-brushed-quadcopter/ |
|
| 29 | - |
|
| 30 | -https://github.com/Edragon/cjmcu2 |
|
| 31 | - |
|
| 32 | - |
|
| 33 | - |
|
| 34 | -## BOM |
|
| 35 | - |
|
| 36 | -### receiver |
|
| 37 | - |
|
| 38 | -- [DT 2.4GHz Receivers](https://www.deltang.co.uk/) |
|
| 39 | - |
|
| 40 | - |
|
| 41 | - |
|
| 42 | -### props |
|
| 43 | - |
|
| 44 | - |
|
| 45 | -### motors |
|
| 46 | - |
|
| 47 | - |
|
| 48 | -### motor drive |
|
| 49 | - |
|
| 50 | -- [[mosfet-dat]] |
|
| 51 | - |
|
| 52 | -## forum |
|
| 53 | - |
|
| 54 | -- http://www.multiwii.com/forum |
|
| 55 | -- https://www.rcgroups.com/forums |
|
| 56 | - |
|
| 57 | - |
|
| 58 | - |
|
| 59 | -## hexquadcopter |
|
| 60 | - |
|
| 61 | -- http://www.multiwii.com/forum/viewtopic.php?f=12&t=4893&p=53317#p53317 |
|
| 62 | - |
|
| 63 | -## ref |
|
| 64 | - |
|
| 65 | -- [[quadcopter]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/rover-dat/2025-05-23-15-11-02.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/rover-dat/2025-05-23-15-11-02.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/2025-03-25-15-00-18.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/2025-03-25-15-00-18.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/2025-03-25-15-00-49.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/2025-03-25-15-00-49.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/2025-03-25-15-01-11.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/2025-03-25-15-01-11.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/2025-03-25-15-02-19.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/2025-03-25-15-02-19.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/2025-03-28-18-44-53.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/2025-03-28-18-44-53.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/RC-car-dat.md
| ... | ... | @@ -1,49 +0,0 @@ |
| 1 | - |
|
| 2 | -# RC-car-dat |
|
| 3 | - |
|
| 4 | -- [[video-RC-car-dat]] |
|
| 5 | - |
|
| 6 | -basic [[tech-dat]] - [[robot-dat]] |
|
| 7 | - |
|
| 8 | - |
|
| 9 | - |
|
| 10 | -## Tracked robot platform |
|
| 11 | - |
|
| 12 | - |
|
| 13 | - |
|
| 14 | - |
|
| 15 | - |
|
| 16 | - |
|
| 17 | - |
|
| 18 | - |
|
| 19 | - |
|
| 20 | - |
|
| 21 | -## tricycle / four-wheels platform |
|
| 22 | - |
|
| 23 | - |
|
| 24 | - |
|
| 25 | -tricycle |
|
| 26 | - |
|
| 27 | -Four-wheel two-drive car |
|
| 28 | - |
|
| 29 | -Four-wheel drive car |
|
| 30 | - |
|
| 31 | -Omnidirectional four-wheel two-wheel drive car |
|
| 32 | - |
|
| 33 | - |
|
| 34 | -## other |
|
| 35 | - |
|
| 36 | -### robot tank with camera |
|
| 37 | - |
|
| 38 | -- https://github.com/YahboomTechnology/Raspberry-pi-G1-Tank |
|
| 39 | - |
|
| 40 | - |
|
| 41 | -## read |
|
| 42 | - |
|
| 43 | -- [Tear down and Learn a good-build $20 RC Toy Car](https://www.electrodragon.com/disassemble-and-learn-a-good-build-20-rc-toy-car/) |
|
| 44 | - |
|
| 45 | -## ref |
|
| 46 | - |
|
| 47 | -- [[motor-dat]] |
|
| 48 | - |
|
| 49 | -- [[RC-car]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/rc-car-hack-dat/2025-05-12-18-37-13.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/rc-car-hack-dat/2025-05-12-18-37-13.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/rc-car-hack-dat/rc-car-hack-dat.md
| ... | ... | @@ -1,44 +0,0 @@ |
| 1 | - |
|
| 2 | -# rc-car-hack-dat |
|
| 3 | - |
|
| 4 | - |
|
| 5 | -## 1. battery Enlargement |
|
| 6 | - |
|
| 7 | -- [[lithium-battery-dat]] - [[battery-pack-dat]] |
|
| 8 | - |
|
| 9 | - |
|
| 10 | -## 2. RC Signal Extension |
|
| 11 | - |
|
| 12 | -- improve up to 10KM by [[FPV-dat]] system [[ELRS-dat]], or [[PPM-dat]] == [[Wfly-dat]] |
|
| 13 | - |
|
| 14 | -- [[antenna-dat]] |
|
| 15 | - |
|
| 16 | -- control system - try to hack by [[arduino-dat]] |
|
| 17 | - |
|
| 18 | -## 3. Imaging System |
|
| 19 | - |
|
| 20 | -- [[video-transmission-dat]] == pickup option == [[LTE-dat]] |
|
| 21 | - |
|
| 22 | - |
|
| 23 | -## 4. GNSS location system |
|
| 24 | - |
|
| 25 | -- [[location-dat]] |
|
| 26 | - |
|
| 27 | - |
|
| 28 | -## other fancy functions |
|
| 29 | - |
|
| 30 | -- [[WS2812-dat]] |
|
| 31 | - |
|
| 32 | - |
|
| 33 | - |
|
| 34 | - |
|
| 35 | -## Accessories |
|
| 36 | - |
|
| 37 | -- [[Velcro-dat]] |
|
| 38 | - |
|
| 39 | - |
|
| 40 | -## Get Inpsired |
|
| 41 | - |
|
| 42 | -The battery can be put in your top luggage rack |
|
| 43 | - |
|
| 44 | - |
Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/video-rc-car-dat/2025-03-25-14-43-46.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/video-rc-car-dat/2025-03-25-14-43-46.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/video-rc-car-dat/2025-03-25-14-48-15.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/video-rc-car-dat/2025-03-25-14-48-15.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/video-rc-car-dat/2025-03-25-14-48-28.png
| ... | ... | Binary files a/Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/video-rc-car-dat/2025-03-25-14-48-28.png and /dev/null differ |
Tech-dat/Network-dat/RC-dat/rover-dat/rc-car-dat/video-rc-car-dat/video-RC-car-dat.md
| ... | ... | @@ -1,36 +0,0 @@ |
| 1 | - |
|
| 2 | -# video-RC-car-dat |
|
| 3 | - |
|
| 4 | - |
|
| 5 | -[[tech-dat]] - [[Camera-dat]] - [[rc-car-dat]] - [[video-transmission-dat]] - [[robot-dat]] |
|
| 6 | - |
|
| 7 | -- [[rc-car-hack-dat]] |
|
| 8 | - |
|
| 9 | -## Demos |
|
| 10 | - |
|
| 11 | -### based on cable [[fiber-optic-dat]] |
|
| 12 | - |
|
| 13 | -#### demos 1 |
|
| 14 | - |
|
| 15 | -up to 100 meters |
|
| 16 | - |
|
| 17 | - |
|
| 18 | - |
|
| 19 | - |
|
| 20 | - |
|
| 21 | - |
|
| 22 | - |
|
| 23 | - |
|
| 24 | -#### demo video 2 |
|
| 25 | - |
|
| 26 | -- https://t.me/electrodragon3/334 |
|
| 27 | - |
|
| 28 | -### Wireless |
|
| 29 | - |
|
| 30 | -- [[video-transmission-dat]] |
|
| 31 | - |
|
| 32 | -## ref |
|
| 33 | - |
|
| 34 | -- [[video-RC-car]] - [[RC-car]] - [[video-transmission]] |
|
| 35 | - |
|
| 36 | -- [[camera]] |
|
| ... | ... | \ No newline at end of file |
Tech-dat/Network-dat/RC-dat/rover-dat/rover-dat.md
| ... | ... | @@ -1,44 +0,0 @@ |
| 1 | - |
|
| 2 | -# rover-dat |
|
| 3 | - |
|
| 4 | -- [[ardupilot-dat]] - [[rc-dat]] |
|
| 5 | - |
|
| 6 | -https://ardupilot.org/rover/index.html |
|
| 7 | - |
|
| 8 | -- [[RC-car-dat]] - [[rover-dat]] - [[RC-car-hack-dat]] |
|
| 9 | - |
|
| 10 | -- [[rc-signal-dat]] |
|
| 11 | - |
|
| 12 | -- ARKV6X Flight Controller Overview |
|
| 13 | -- ARK FPV Flight Controller Overview == STM32H743IIK6 MCU |
|
| 14 | -- CUAV V5 Plus Overview == STM32F765 |
|
| 15 | - |
|
| 16 | - |
|
| 17 | - |
|
| 18 | -## 3D printed |
|
| 19 | - |
|
| 20 | -- [[markus-rover-dat]] |
|
| 21 | - |
|
| 22 | - |
|
| 23 | -## 3D files |
|
| 24 | - |
|
| 25 | - |
|
| 26 | - |
|
| 27 | -[differential drive robot](https://cad.onshape.com/documents/78baf3d450629341539223b8/w/67b1d15167c8efd1d8242192/e/0e64a58d61cf14a49375d9c6?renderMode=0&uiState=68301fdbbe87bf505c7cb858) |
|
| 28 | - |
|
| 29 | -[TT Motor 4WD Car Mecanum wheel](https://cad.onshape.com/documents/ffe6ad9ac868a2e0b125a547/w/06961ea3665cb10f47c1f6fe/e/c6b6790270216188fea6ddec?renderMode=0&uiState=6830205c37d051363fada807) |
|
| 30 | - |
|
| 31 | -[Another TT Motor 4WD Car Mecanum wheel](https://cad.onshape.com/documents/3fc9a68709b7b211c126b7b0/w/fd59e3cfbe0cf012d3264ef8/e/f35859a1e063a8642be26811?renderMode=0&uiState=68302088624d574aaab00cc0) |
|
| 32 | - |
|
| 33 | - |
|
| 34 | -## board |
|
| 35 | - |
|
| 36 | -- [[SDR1064-dat]] |
|
| 37 | - |
|
| 38 | -Parts - [[TT-motor-dat]] - [[mecanum-wheel-dat]] |
|
| 39 | - |
|
| 40 | -## ref |
|
| 41 | - |
|
| 42 | -- [[dc-motor-dat]] |
|
| 43 | - |
|
| 44 | -- [[rc-car]] - [[maker]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/ArduPilot-dat/2025-05-04-16-11-57.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/ArduPilot-dat/2025-05-04-16-11-57.png differ |
app-dat/RC-dat/ArduPilot-dat/ArduPilot-dat.md
| ... | ... | @@ -0,0 +1,93 @@ |
| 1 | + |
|
| 2 | +# ArduPilot-dat |
|
| 3 | + |
|
| 4 | + |
|
| 5 | +## Radio Control Systems |
|
| 6 | + |
|
| 7 | + |
|
| 8 | +- [Radio Control Systems](https://ardupilot.org/rover/docs/common-rc-systems.html) |
|
| 9 | + |
|
| 10 | +Compatible RC Protocols |
|
| 11 | + |
|
| 12 | +ArduPilot autopilots are compatible with the following receiver output protocols: |
|
| 13 | + |
|
| 14 | +PPM-Sum receivers - [[PPM-dat]] |
|
| 15 | + |
|
| 16 | +SBus receivers - [[SBUS-dat]] |
|
| 17 | + |
|
| 18 | +Fast SBus (from DJI HDL video/RC systems) |
|
| 19 | + |
|
| 20 | +i-BUS receivers - [[IBUS-dat]] |
|
| 21 | + |
|
| 22 | +FPort Receivers |
|
| 23 | + |
|
| 24 | +Spektrum SRXL2,DSM, DSM2, and DSM-X Satellite receivers |
|
| 25 | + |
|
| 26 | +Multiplex SRXL version 1 and version 2 receivers |
|
| 27 | + |
|
| 28 | +CRSF receivers (including ExpressLRS systems) - [[ELRS-dat]] - [[CRSF-dat]] |
|
| 29 | + |
|
| 30 | +mLRS (with telemetry) (MAVLink) |
|
| 31 | + |
|
| 32 | +Graupner SUM-D |
|
| 33 | + |
|
| 34 | +IRC Ghost |
|
| 35 | + |
|
| 36 | +DroneCAN peripherals can decode these RC protocols on a peripheral and pass to the autopilot |
|
| 37 | + |
|
| 38 | +MAVLink connected RC (not to be confused with MAVLink RC Overrides used for CS joystick control of RC functions) |
|
| 39 | + |
|
| 40 | +Parallel PWM outputs encoded to PPM-Sum using an external encoder (see below, not supported on many autopilots now) |
|
| 41 | + |
|
| 42 | + |
|
| 43 | + |
|
| 44 | +## specs |
|
| 45 | + |
|
| 46 | +| Original Manu | Range | Telemetry | Telem Speed | TX Display | RC Protocol | Notes | |
|
| 47 | +| --------------- | ------ | --------------- | ----------- | ----------- | -------------------- | ----- | |
|
| 48 | +| Flysky | Short | Yes | | yes | i-BUS/SBUS | 7 | |
|
| 49 | +| FrSky X series | Short | Bi-dir | Medium | yes | PPM-SUM/SBUS/ FPort | 2 | |
|
| 50 | +| Futaba | Short | No | | | SBus | | |
|
| 51 | +| Graupner | Short | Yes | Medium | yes | SUM-D | | |
|
| 52 | +| Multiplex | Short | No | | | SRXL | | |
|
| 53 | +| Spektrum | Short | Vendor Specific | | yes | DSM/DSM2 DSM-X/ SRXL | | |
|
| 54 | +| FrSky R9 series | Medium | Bi-dir | Medium | yes | PPM-SUM/SBUS/ FPort | 2 | |
|
| 55 | +| IRC Ghost | Medium | Vendor Specific | | yes | IRC Ghost | | |
|
| 56 | +| [[CRSF-dat]] | Long | Bi-dir | Variable | yes | SBUS/CRSF | 3 | |
|
| 57 | +| DragonLink | Long | Bi-dir | 56K | via MTP/LUA | PPM_SUM/SBUS | 1 | |
|
| 58 | +| [[ELRS-dat]] | Long | Bi-Dir | Variable | optional | SBUS/CRSF Mavlink | 4 | |
|
| 59 | +| HereLink | Long | Bi-dir | 56K | integrated | SBUS | 8 | |
|
| 60 | +| mLRS | Long | Bi-dir | 12K - 91K | via LUA | SBUS/CRSF | 5 | |
|
| 61 | +| SIYI | Long | Bi-dir | 56K | integrated | SBUS | 8 | |
|
| 62 | + |
|
| 63 | +- [[network-dat]] |
|
| 64 | + |
|
| 65 | +RC protocols - [[SBUS-dat]] - [[CRSF-dat]] - [[PPM-SUM-dat]] - [[Fport-dat]] - [[SUM-D-dat]] - [[IBUS-dat]] - [[DSM-dat]] |
|
| 66 | + |
|
| 67 | + |
|
| 68 | + |
|
| 69 | +Note 1: DragonLink provides a 56Kbaud transparent link for telemetry, allowing full MAVLink telemetry to/from the vehicle from the transmitter module. Dragonlink is an add-on module to the transmitter, such as an FRSky Taranis or RadioMaster T16. See DragonLink RC Systems. MTP (Mavlink to Passthru) converters are available to allow direct display of MAVLink Telemetry data on OpenTX transmitters using Yaapu Telemetry LUA Script. |
|
| 70 | + |
|
| 71 | +Note 2: See Yaapu FrSky Telemetry Script for OpenTX. The ability to change parameters over FRSky telemetry from an Open TX compatible transmitter in addition to displaying the telemetry data is possible. Most FRSky compatible transmitters use OpenTX. Note that R9 systems are not quite Long Range, but much further range than normal FRSky systems, themselves at the very high end of the Short Range category at 1.6-2km range. |
|
| 72 | + |
|
| 73 | +Note 3: ArduPilot provides a means to send its telemetry data via CRSF such that it can be displayed on OpenTX transmitters using the Yaapu Telemetry LUA Script. The ability to change parameters over CRSF telemetry from an Open TX compatible transmitter in addition to displaying the telemetry data is also possible. See TBS Crossfire Telemetry |
|
| 74 | + |
|
| 75 | +Note 4: ELRS (ExpressLRS) is a flexible open-source system that can output CRSF, SBUS, or MAVLink (with embedded RC) protocols. Telemetry requires the use of CRSF or Mavlink, and the receiver must be wired to a full UART. See ExpressLRS site <https://www.expresslrs.org/> and TBS CRSF/ ELRS for more information. |
|
| 76 | + |
|
| 77 | +Note 5: The mLRS project is firmware designed specifically to carry both RC and MAVLink. The usable telemetry speed varies by the chosen mode and is managed via RADIO_STATUS flow control. It uses the CRSF (TBS Crossfire) RC protocol on both the receiver and Tx module. It also integrates full MAVLink telemetry via serial connections on the Tx module and the receiver. |
|
| 78 | + |
|
| 79 | +Note 6: Vendor Specific Telem means that they accomodate sensor additions to the vehicle and can display the information on certain Vendor specific TXs but do not send ArduPilot telemetry from the vehicle to ArduPilot compatible GCS or OpenTX display scripts. |
|
| 80 | + |
|
| 81 | +Note 7: The receiver must support i-BUS telemetry (look for a SENS port on the receiver or check the product specifications). |
|
| 82 | + |
|
| 83 | +Note 8: These systems have integrated HD video transmission from Ethernet or HDMI camera systems in addition to RC control and vehicle telemetry. |
|
| 84 | + |
|
| 85 | + |
|
| 86 | +## protocol converter |
|
| 87 | + |
|
| 88 | + |
|
| 89 | + |
|
| 90 | + |
|
| 91 | +## ref |
|
| 92 | + |
|
| 93 | +- [[ardupilot-dat]] - [[FPV]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/FPV-dat/2025-04-02-12-45-53.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/FPV-dat/2025-04-02-12-45-53.png differ |
app-dat/RC-dat/FPV-dat/2025-04-02-13-14-05.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/FPV-dat/2025-04-02-13-14-05.png differ |
app-dat/RC-dat/FPV-dat/FPV-controller-dat/FPV-controller-dat.md
| ... | ... | @@ -0,0 +1,13 @@ |
| 1 | + |
|
| 2 | +# FPV-receiver-dat |
|
| 3 | + |
|
| 4 | +- [[ELRS-dat]] - [[TBS-dat]] |
|
| 5 | + |
|
| 6 | + |
|
| 7 | +## DJI |
|
| 8 | + |
|
| 9 | +- [DJI FPV Remote Controller 3](https://www.amazon.com/DJI-FPV-Remote-Controller-Compatibility/dp/B0CS6JCX2W/ref=sr_1_3?dib=eyJ2IjoiMSJ9.85xi15ftM4OWw33_siXrDRGNOKuf3CgQct4cVlBOFqI1ZAAZD4Gz_S4U_wqEKgjxWcsGOZPlWkdGdEASaTJntO1H_pFgsXO61wuEgveKAmLTLHR-cjsa5SOhaKUXU0vVHE7oijzqLoIPsx-H55gYNPr_F8aMX98OqPfwk64Ma12qrNSidLDVokmdegWL621v3U-5PDEaMNTjdACgOTHEBxAGhtxksaYVouWcSkxMCTI-jr0FkvxyQeZmO6S-UjXJcEcChxa4sPMjVyiK7070XhJlH2EnXqgnv0KScl80Jqc.AzbbGJAa2ls6bQWRCrudB-jGcm6vKV7pRItsIyBMpdA&dib_tag=se&keywords=FPV&qid=1744201259&sr=8-3) |
|
| 10 | + |
|
| 11 | +- [DJI RC Motion 3, FPV Smart Controller with Immersive Motion Control, Compact and Portable, One-Click Emergency Brake, AR Cursor, Intuitive Drone Controller, Multi-Model Compatibility](https://www.amazon.com/DJI-Controller-Immersive-Multi-Model-Compatibility/dp/B0CS6LDCKC/ref=sr_1_11?dib=eyJ2IjoiMSJ9.85xi15ftM4OWw33_siXrDRGNOKuf3CgQct4cVlBOFqI1ZAAZD4Gz_S4U_wqEKgjxWcsGOZPlWkdGdEASaTJntO1H_pFgsXO61wuEgveKAmLTLHR-cjsa5SOhaKUXU0vVHE7oijzqLoIPsx-H55gYNPr_F8aMX98OqPfwk64Ma12qrNSidLDVokmdegWL621v3U-5PDEaMNTjdACgOTHEBxAGhtxksaYVouWcSkxMCTI-jr0FkvxyQeZmO6S-UjXJcEcChxa4sPMjVyiK7070XhJlH2EnXqgnv0KScl80Jqc.AzbbGJAa2ls6bQWRCrudB-jGcm6vKV7pRItsIyBMpdA&dib_tag=se&keywords=FPV&qid=1744201259&sr=8-11) |
|
| 12 | + |
|
| 13 | + |
app-dat/RC-dat/FPV-dat/FPV-dat.md
| ... | ... | @@ -0,0 +1,208 @@ |
| 1 | + |
|
| 2 | +# FPV-dat |
|
| 3 | + |
|
| 4 | +- [[quadcopter-dat]] |
|
| 5 | + |
|
| 6 | +- [[FPV-controller-dat]] - [[Goggles-dat]] |
|
| 7 | + |
|
| 8 | +- [[ELRS-dat]] - [[FrSky-dat]] - [[ArduPilot-dat]] - [[CRSF-dat]] |
|
| 9 | + |
|
| 10 | +- [[BMS-dat]] |
|
| 11 | + |
|
| 12 | + |
|
| 13 | + |
|
| 14 | +## parts of the FPV drones |
|
| 15 | + |
|
| 16 | +- **Flight Controller**: The brain of the drone, responsible for stabilizing and controlling the flight. It processes data from sensors and executes commands from the pilot or autopilot system. |
|
| 17 | + |
|
| 18 | +- **Electronic Speed Controller (ESC)**: Controls the speed of the motors by adjusting the power supplied to them. ESCs are essential for smooth and responsive flight. |
|
| 19 | + |
|
| 20 | +- **Motors**: Provide the thrust needed for flight. Brushless motors are commonly used in FPV drones due to their efficiency and power. |
|
| 21 | + |
|
| 22 | +- **Propellers**: Generate lift by spinning rapidly. The size and pitch of the propellers can significantly affect the drone's performance and flight characteristics. |
|
| 23 | + |
|
| 24 | +- [[SCU1059-dat]] |
|
| 25 | + |
|
| 26 | +- **Camera**: Captures real-time video for FPV flying. FPV cameras are designed to provide low-latency video transmission to the pilot's goggles or screen. |
|
| 27 | + |
|
| 28 | +- [[VTX-dat]]: Video Transmitters are commonly referred to as VTX units. They are responsible for transmitting the video signal from the camera to the pilot's goggles or screen. VTX units come in various power levels and frequencies, allowing pilots to choose the best option for their flying environment. |
|
| 29 | +- **Antenna**: Enhances the signal strength and range of the VTX. Different antenna types (e.g., dipole, patch, circular polarized) can be used to optimize performance. |
|
| 30 | + |
|
| 31 | +- **ExpressLRS**: A long-range radio control link for FPV drones, known for its low latency and high refresh rates. It is an open-source project that competes with other systems like Crossfire and ELRS. |
|
| 32 | + |
|
| 33 | + - [[ELRS-dat]] |
|
| 34 | + |
|
| 35 | +- **Goggles**: Wearable displays that allow pilots to see the live video feed from the drone's camera. They often include features like head tracking and DVR (Digital Video Recorder) capabilities. |
|
| 36 | + |
|
| 37 | + |
|
| 38 | + |
|
| 39 | + |
|
| 40 | + |
|
| 41 | +## Bee35 |
|
| 42 | + |
|
| 43 | + |
|
| 44 | + |
|
| 45 | + |
|
| 46 | + |
|
| 47 | + |
|
| 48 | +| version | price | description | |
|
| 49 | +| -------------------------- | ----- | ------------------------------------- | |
|
| 50 | +| Bee35 Pro O3 Air Unit TBS | 480 | O3 Air Unit, TBS radio | |
|
| 51 | +| Bee35 Pro O3 Air Unit ELRS | 470 | O3 Air Unit, ELRS radio | |
|
| 52 | +| Bee35 Pro O3 Air Unit PNP | 460 | O3 Air Unit, no receiver | |
|
| 53 | +| Bee35 Pro | 270 | Standard analog version | |
|
| 54 | +| Bee35 Pro LINK WASP TBS | 430 | LINK WASP digital system, TBS radio | |
|
| 55 | +| Bee35 Pro LINK WASP ELRS | 420 | LINK WASP digital system, ELRS radio | |
|
| 56 | +| Bee35 Pro LINK WASP PNP | 400 | LINK WASP digital system, no receiver | |
|
| 57 | +| Bee35 Analog TBS | 306 | Analog FPV system, TBS radio | |
|
| 58 | +| Bee35 Analog ELRS | 296 | Analog FPV system, ELRS radio | |
|
| 59 | + |
|
| 60 | + |
|
| 61 | + |
|
| 62 | +## commerialized FPV |
|
| 63 | + |
|
| 64 | +- [[speedybee-dat]] |
|
| 65 | + |
|
| 66 | +### 1. [SpeedyBee Flight Controllers & Stacks](https://speedybee.com/) |
|
| 67 | +- **Brand:** SpeedyBee |
|
| 68 | +- **Description:** Budget-friendly, Betaflight-supported flight controllers with easy app-based tuning. |
|
| 69 | +- **Example Products:** |
|
| 70 | + - **SpeedyBee F405 V4 Stack** (F4-based, affordable) |
|
| 71 | + - **SpeedyBee F7 V3 Stack** (F7-based, powerful & feature-rich) |
|
| 72 | +- **Commercial Features:** |
|
| 73 | + - Wireless **Bluetooth & Wi-Fi tuning** via SpeedyBee app. |
|
| 74 | + - Fully compatible with Betaflight Configurator. |
|
| 75 | +- **Website:** [speedybee.com](https://speedybee.com/) |
|
| 76 | + |
|
| 77 | +--- |
|
| 78 | + |
|
| 79 | +### 2. [TBS Tango 2 (Crossfire-Integrated Radio Controller)](https://www.team-blacksheep.com/) |
|
| 80 | +- **Brand:** Team BlackSheep (TBS) |
|
| 81 | +- **Description:** A high-performance FPV radio transmitter designed for **Betaflight-based drones** with **built-in Crossfire**. |
|
| 82 | +- **Commercial Features:** |
|
| 83 | + - Fully optimized for **Betaflight & Crossfire**. |
|
| 84 | + - Compact, ergonomic design for FPV pilots. |
|
| 85 | +- **Website:** [team-blacksheep.com](https://www.team-blacksheep.com/) |
|
| 86 | + |
|
| 87 | + |
|
| 88 | +## opensource control projects |
|
| 89 | + |
|
| 90 | +# Most Famous Open-Source FPV GitHub Projects |
|
| 91 | + |
|
| 92 | +If you're looking for **open-source FPV (First-Person View) projects** on GitHub, here are some of the **most famous** ones: |
|
| 93 | + |
|
| 94 | +## 1. [Betaflight](https://github.com/betaflight/betaflight) |
|
| 95 | +- **Description:** One of the most widely used open-source flight control firmware for FPV drones. |
|
| 96 | +- **Features:** |
|
| 97 | + - Highly optimized for **acrobatic** and **racing drones**. |
|
| 98 | + - Supports a wide range of flight controllers. |
|
| 99 | + - Advanced **tuning options** for PID, filters, and motor control. |
|
| 100 | +- **GitHub:** [github.com/betaflight/betaflight](https://github.com/betaflight/betaflight) |
|
| 101 | + |
|
| 102 | +--- |
|
| 103 | + |
|
| 104 | +## 2. [iNavFlight](https://github.com/iNavFlight/inav) |
|
| 105 | +- **Description:** A fork of Betaflight, but optimized for **GPS and long-range FPV**. |
|
| 106 | +- **Features:** |
|
| 107 | + - Supports **GPS waypoint navigation, return-to-home (RTH), and mission planning**. |
|
| 108 | + - Designed for **freestyle and long-range cruising** rather than racing. |
|
| 109 | +- **GitHub:** [github.com/iNavFlight/inav](https://github.com/iNavFlight/inav) |
|
| 110 | + |
|
| 111 | +--- |
|
| 112 | + |
|
| 113 | +## 3. [ArduPilot](https://github.com/ArduPilot/ardupilot) |
|
| 114 | +- **Description:** A professional-grade open-source autopilot for drones, including **FPV quadcopters, planes, and rovers**. |
|
| 115 | +- **Features:** |
|
| 116 | + - **Highly autonomous** with advanced mission planning. |
|
| 117 | + - Works with multiple types of vehicles (planes, multirotors, helicopters). |
|
| 118 | + - Compatible with **Mission Planner** and **QGroundControl**. |
|
| 119 | +- **GitHub:** [github.com/ArduPilot/ardupilot](https://github.com/ArduPilot/ardupilot) |
|
| 120 | + |
|
| 121 | +--- |
|
| 122 | + |
|
| 123 | +## 4. [PX4](https://github.com/PX4/PX4-Autopilot) |
|
| 124 | +- **Description:** A powerful open-source **flight control software** used in drones and FPV systems. |
|
| 125 | +- **Features:** |
|
| 126 | + - Supports both **FPV racing drones** and **autonomous UAVs**. |
|
| 127 | + - Works with Pixhawk flight controllers and supports **ROS (Robot Operating System)**. |
|
| 128 | +- **GitHub:** [github.com/PX4/PX4-Autopilot](https://github.com/PX4/PX4-Autopilot) |
|
| 129 | + |
|
| 130 | +--- |
|
| 131 | + |
|
| 132 | +## 5. [FalcoX](https://github.com/FlightOne/FalcoX) |
|
| 133 | +- **Description:** An alternative FPV flight control firmware focusing on **ease of use and smooth flight performance**. |
|
| 134 | +- **Features:** |
|
| 135 | + - Intuitive configuration interface. |
|
| 136 | + - Aimed at both **freestyle pilots** and **racers**. |
|
| 137 | +- **GitHub:** [github.com/FlightOne/FalcoX](https://github.com/FlightOne/FalcoX) |
|
| 138 | + |
|
| 139 | +--- |
|
| 140 | + |
|
| 141 | +## 6. [ExpressLRS](https://github.com/ExpressLRS/ExpressLRS) |
|
| 142 | +- **Description:** Open-source long-range **radio control link** for FPV drones, competing with Crossfire and ELRS. |
|
| 143 | +- **Features:** |
|
| 144 | + - **Low latency and high refresh rates** (great for FPV racing). |
|
| 145 | + - Compatible with many radio transmitters (TBS, Jumper, Radiomaster). |
|
| 146 | +- **GitHub:** [github.com/ExpressLRS/ExpressLRS](https://github.com/ExpressLRS/ExpressLRS) |
|
| 147 | + |
|
| 148 | +--- |
|
| 149 | + |
|
| 150 | +## 7. [OpenHD](https://github.com/OpenHD/OpenHD) |
|
| 151 | +- **Description:** Open-source **HD video transmission** for FPV drones (alternative to DJI HD systems). |
|
| 152 | +- **Features:** |
|
| 153 | + - Uses **Raspberry Pi + WiFi** for HD FPV video streaming. |
|
| 154 | + - Supports OSD (On-Screen Display) and telemetry data. |
|
| 155 | +- **GitHub:** [github.com/OpenHD/OpenHD](https://github.com/OpenHD/OpenHD) |
|
| 156 | + |
|
| 157 | +--- |
|
| 158 | + |
|
| 159 | +## 🔥 Which One Should You Choose? |
|
| 160 | +| Purpose | Best Open-Source Project | |
|
| 161 | +| ------------------------------------------- | ------------------------------------------------------ | |
|
| 162 | +| **Racing/Freestyle FPV** | [Betaflight](https://github.com/betaflight/betaflight) | |
|
| 163 | +| **GPS & Long-Range FPV** | [iNav](https://github.com/iNavFlight/inav) | |
|
| 164 | +| **Full Autopilot (Drones, Planes, Rovers)** | [ArduPilot](https://github.com/ArduPilot/ardupilot) | |
|
| 165 | +| **Professional UAVs & Research** | [PX4](https://github.com/PX4/PX4-Autopilot) | |
|
| 166 | +| **HD FPV Video Streaming** | [OpenHD](https://github.com/OpenHD/OpenHD) | |
|
| 167 | +| **Long-Range Radio Links** | [ExpressLRS](https://github.com/ExpressLRS/ExpressLRS) | |
|
| 168 | + |
|
| 169 | + |
|
| 170 | + |
|
| 171 | +## standards |
|
| 172 | + |
|
| 173 | +### PNP stands for "Plug and Play." |
|
| 174 | + |
|
| 175 | +In the context of FPV drones, a PNP version means that the drone comes mostly assembled but does not include a radio receiver. |
|
| 176 | + |
|
| 177 | +Here's why it doesn't include a receiver: |
|
| 178 | + |
|
| 179 | +Flexibility: PNP versions cater to experienced FPV pilots who already have their preferred radio transmitter and receiver. This allows them to use their existing equipment and avoid paying for redundant components. |
|
| 180 | +Customization: Pilots might have specific receiver requirements based on their radio system (e.g., TBS Crossfire, ELRS, FrSky). Offering a PNP version lets them choose the exact receiver that's compatible with their setup. |
|
| 181 | +Cost Savings: By excluding the receiver, the manufacturer can offer the PNP version at a lower price point, making it attractive to those who don't need the included receiver. |
|
| 182 | +In short, PNP versions are designed for users who want to use their own radio gear and prefer to avoid unnecessary costs or compatibility issues. |
|
| 183 | + |
|
| 184 | + |
|
| 185 | + |
|
| 186 | +## popular products |
|
| 187 | + |
|
| 188 | +DJI |
|
| 189 | + |
|
| 190 | +- [DJI Avata 2 (Drone Only), FPV Drone with Camera 4K, Immersive Flight Experience, Built-in Propeller Guard, Easy Flip/Roll, Super-Wide 155° FOV, Compatible with RC Motion 3, FAA Remote ID Compliant](https://www.amazon.com/DJI-Immersive-Experience-Super-Wide-Compatible/dp/B0CS6KY96F/ref=sr_1_45?dib=eyJ2IjoiMSJ9.85xi15ftM4OWw33_siXrDRGNOKuf3CgQct4cVlBOFqI1ZAAZD4Gz_S4U_wqEKgjxWcsGOZPlWkdGdEASaTJntO1H_pFgsXO61wuEgveKAmLTLHR-cjsa5SOhaKUXU0vVHE7oijzqLoIPsx-H55gYNPr_F8aMX98OqPfwk64Ma12qrNSidLDVokmdegWL621v3U-5PDEaMNTjdACgOTHEBxAGhtxksaYVouWcSkxMCTI-jr0FkvxyQeZmO6S-UjXJcEcChxa4sPMjVyiK7070XhJlH2EnXqgnv0KScl80Jqc.AzbbGJAa2ls6bQWRCrudB-jGcm6vKV7pRItsIyBMpdA&dib_tag=se&keywords=FPV&qid=1744201259&sr=8-45) |
|
| 191 | + |
|
| 192 | +BetaFPV |
|
| 193 | + |
|
| 194 | +- [BETAFPV Betaflight ELRS V3 Cetus X FPV Kit with LiteRadio 3 Transmitter C04 Camera VR03 Goggles with DVR Recording Function, Supported 2S Power Advanced RTF Kit for FPV Beginners to Fly Faster Further](https://www.amazon.com/BETAFPV-LiteRadio-Transmitter-Recording-Betaflight/dp/B0BJVP3XW7/ref=sr_1_48?dib=eyJ2IjoiMSJ9.85xi15ftM4OWw33_siXrDRGNOKuf3CgQct4cVlBOFqI1ZAAZD4Gz_S4U_wqEKgjxWcsGOZPlWkdGdEASaTJntO1H_pFgsXO61wuEgveKAmLTLHR-cjsa5SOhaKUXU0vVHE7oijzqLoIPsx-H55gYNPr_F8aMX98OqPfwk64Ma12qrNSidLDVokmdegWL621v3U-5PDEaMNTjdACgOTHEBxAGhtxksaYVouWcSkxMCTI-jr0FkvxyQeZmO6S-UjXJcEcChxa4sPMjVyiK7070XhJlH2EnXqgnv0KScl80Jqc.AzbbGJAa2ls6bQWRCrudB-jGcm6vKV7pRItsIyBMpdA&dib_tag=se&keywords=FPV&qid=1744201259&sr=8-48) == rating == 3.5 |
|
| 195 | + |
|
| 196 | +- [BETAFPV Pavo20 Brushless Whoop Quadcopter with HD Digital Bracket for O3 Air Unit, F4 2-3S 20A FC, 1103 8500KV Motor, COB LED Strip, Compatible for FPV Racing Indoor and Outdoor](https://www.amazon.com/BETAFPV-Brushless-Quadcopter-Material-Compatible/dp/B0CKT5G6C1/ref=sr_1_11?crid=1KCLBGZLCPWMM&dib=eyJ2IjoiMSJ9.u8zpDMqhQLF9cnPbc5r76LO9SVPJiVyPzTq0xdtVa2u4UYSXdyYl9H-Z3gMzqguhRBkKgkoRZWaxBHDFD6BRFsCQJKVb4iWibNm9DVSzo8jjnyx10jKEMfQICYMtZJab4CpDzmZXALE0VqfYmsl2b2z6zA536zmhj3MbQfvXxqOrlO8RzQiYLdFv-lIZbHe3VqkD5N2AuBL25TgOETuGrMPmYt7Yhvu1G4lry067nFXe06m0NOi7YGC9HehoblQsTDd1-4IPkuJfZGdR6OljCFD_F9mIqaJ-dIPMlULs8kg.m1NOD5DB1dn9oAtRj6kjXh5UkWTCRb94gNjUZ8Owz8Y&dib_tag=se&keywords=betafpv&qid=1744202445&sprefix=beta%2Caps%2C676&sr=8-11) == rating == 4.1 |
|
| 197 | + |
|
| 198 | + |
|
| 199 | +SpeedyBee Frame |
|
| 200 | + |
|
| 201 | +- [Speedy Bee Bee35 3.5inch Cinewhoop FPV Drone Frame- Pro Version 4S 6S Frame Kit Compatible with DJI O3 Air Unit FPV VTX,Different Flight Controller Stack](https://www.amazon.com/3-5inch-Cinewhoop-Compatible-Different-Controller/dp/B086X5M24H/ref=sr_1_1?dib=eyJ2IjoiMSJ9.flOlB5a6W8Z4mxOLR-K_BDlWDFVnqHJ69LrRLHzsG3Vt1_EuF1CQCJw-erVA1bWn.aK6G-MxmMYmSkACuczQuR4yI0PIn2BzHbY4-bbiXRLo&dib_tag=se&keywords=bee35&qid=1744202041&sr=8-1) |
|
| 202 | + |
|
| 203 | + |
|
| 204 | + |
|
| 205 | + |
|
| 206 | +## ref |
|
| 207 | + |
|
| 208 | +- [[FPV]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/FPV-dat/FPV-simulation-dat/FPV-simulation-dat.md
| ... | ... | @@ -0,0 +1,88 @@ |
| 1 | + |
|
| 2 | +# FPV-simulation-dat |
|
| 3 | + |
|
| 4 | +## Popular FPV Simulators for PC |
|
| 5 | + |
|
| 6 | +| Simulator | Highlights | Price | |
|
| 7 | +| ------------- | ---------------------------------------------------------- | ----- | |
|
| 8 | +| Liftoff | Realistic physics, good for racing & freestyle | ~$20 | |
|
| 9 | +| VelociDrone | Excellent feel, popular for competition practice | ~$20 | |
|
| 10 | +| DRL Simulator | Based on the Drone Racing League, includes tracks & events | ~$10 | |
|
| 11 | +| Uncrashed | Stunning graphics, smooth flying | ~$15 | |
|
| 12 | +| FPV Freerider | Lightweight, good for low-end PCs | ~$5 | |
|
| 13 | + |
|
| 14 | + |
|
| 15 | + |
|
| 16 | +## Compatible Controllers |
|
| 17 | + |
|
| 18 | +- RadioMaster TX16S |
|
| 19 | +- FrSky Taranis QX7 / X9D |
|
| 20 | +- BetaFPV LiteRadio |
|
| 21 | +- DJI FPV controller (works with some sims) |
|
| 22 | +- Most transmitters that support USB or simulator mode |
|
| 23 | + |
|
| 24 | + |
|
| 25 | + |
|
| 26 | +## 🆓 Free or Open Source FPV Simulators for PC |
|
| 27 | + |
|
| 28 | +### 🛠 FPV.Skydive (from ORQA) |
|
| 29 | +- ✅ Free on Steam |
|
| 30 | +- 🧠 Beginner-friendly with training modules |
|
| 31 | +- 🎮 Supports many controllers (via USB) |
|
| 32 | +- 📦 Good for freestyle and basic racing |
|
| 33 | +- ❗ Not open-source, but completely free |
|
| 34 | +- 🔗 [Steam Link](https://store.steampowered.com/app/1645840/FPV_Skydive/) |
|
| 35 | + |
|
| 36 | +https://store.steampowered.com/app/1278060/FPV_SkyDive__FPV_Drone_Simulator/ |
|
| 37 | + |
|
| 38 | +--- |
|
| 39 | + |
|
| 40 | +### 🛠 RotorHazard Simulator |
|
| 41 | +- ⚙️ Community-developed simulator inspired by RotorHazard timing system |
|
| 42 | +- 🖥 Lightweight, browser-based or local |
|
| 43 | +- 💻 Not super polished, but interesting for DIY folks |
|
| 44 | +- 🌐 Open-source (GitHub available) |
|
| 45 | +- 🔗 [GitHub Repository](https://github.com/RotorHazard) |
|
| 46 | + |
|
| 47 | +--- |
|
| 48 | + |
|
| 49 | +### 🛠 OpenFPV Simulator (dead?) |
|
| 50 | +- 🌍 Browser-based prototype sim |
|
| 51 | +- 👶 Very basic physics and controls |
|
| 52 | +- 🧑💻 Open-source, you can fork or contribute |
|
| 53 | +- 🔧 Good for devs/hackers/experimenters |
|
| 54 | +- 🔗 [GitHub Link](https://github.com/OpenFPV/openfpv-simulator) |
|
| 55 | + |
|
| 56 | +--- |
|
| 57 | + |
|
| 58 | +### 🛠 Multirotor Sim (Unity-based) (dead?) |
|
| 59 | +- 🧪 Community project with editable Unity source |
|
| 60 | +- 🎮 Supports USB controllers |
|
| 61 | +- 🔧 Needs a bit of setup, but can be modified freely |
|
| 62 | +- 🔗 [GitHub Link](https://github.com/ArduPilot/multirotor_sim) |
|
| 63 | + |
|
| 64 | +--- |
|
| 65 | + |
|
| 66 | +### 📌 Honorable Mentions (Free Trials or Demos) |
|
| 67 | + |
|
| 68 | +#### **FPV Freerider (Demo version)** |
|
| 69 | +- Limited map, but physics work well |
|
| 70 | +- 🔗 [freeriderfpv.com](https://fpv-freerider.itch.io/fpv-freerider-recharged-demo) |
|
| 71 | + |
|
| 72 | +--- |
|
| 73 | + |
|
| 74 | +### 🧭 Recommendation |
|
| 75 | + |
|
| 76 | +- **If you're new and want a polished free experience:** |
|
| 77 | + ➡️ Try **[FPV.Skydive](https://store.steampowered.com/app/1645840/FPV_Skydive/)** |
|
| 78 | + |
|
| 79 | +- **If you're into tinkering or want to code your own sim:** |
|
| 80 | + ➡️ Check out **OpenFPV** or **Multirotor Sim** on GitHub |
|
| 81 | + |
|
| 82 | + |
|
| 83 | + |
|
| 84 | + |
|
| 85 | +## ref |
|
| 86 | + |
|
| 87 | + |
|
| 88 | +- [[FPV-dat]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/FPV-dat/Goggles-dat/Goggles-dat.md
| ... | ... | @@ -0,0 +1,22 @@ |
| 1 | + |
|
| 2 | +# Goggles-dat |
|
| 3 | + |
|
| 4 | +[DJI Goggles 3, FPV Goggles with Stunning Micro-OLED Screens, Immersive Flight Experience, O4 HD Video Transmission, Adjustable Diopters, Wireless Streaming, Drone Goggles with Real View PiP](https://www.amazon.com/DJI-Micro-OLED-Experience-Transmission-Adjustable/dp/B0CS6L6D6J/ref=sr_1_17?dib=eyJ2IjoiMSJ9.85xi15ftM4OWw33_siXrDRGNOKuf3CgQct4cVlBOFqI1ZAAZD4Gz_S4U_wqEKgjxWcsGOZPlWkdGdEASaTJntO1H_pFgsXO61wuEgveKAmLTLHR-cjsa5SOhaKUXU0vVHE7oijzqLoIPsx-H55gYNPr_F8aMX98OqPfwk64Ma12qrNSidLDVokmdegWL621v3U-5PDEaMNTjdACgOTHEBxAGhtxksaYVouWcSkxMCTI-jr0FkvxyQeZmO6S-UjXJcEcChxa4sPMjVyiK7070XhJlH2EnXqgnv0KScl80Jqc.AzbbGJAa2ls6bQWRCrudB-jGcm6vKV7pRItsIyBMpdA&dib_tag=se&keywords=FPV&qid=1744201259&sr=8-17) |
|
| 5 | + |
|
| 6 | + |
|
| 7 | +[Fat Shark Recon Echo FPV Goggles](https://www.amazon.com/Fat-Shark-Recon-Echo-Goggles/dp/B0CTB8VLYQ/ref=sr_1_41?dib=eyJ2IjoiMSJ9.85xi15ftM4OWw33_siXrDRGNOKuf3CgQct4cVlBOFqI1ZAAZD4Gz_S4U_wqEKgjxWcsGOZPlWkdGdEASaTJntO1H_pFgsXO61wuEgveKAmLTLHR-cjsa5SOhaKUXU0vVHE7oijzqLoIPsx-H55gYNPr_F8aMX98OqPfwk64Ma12qrNSidLDVokmdegWL621v3U-5PDEaMNTjdACgOTHEBxAGhtxksaYVouWcSkxMCTI-jr0FkvxyQeZmO6S-UjXJcEcChxa4sPMjVyiK7070XhJlH2EnXqgnv0KScl80Jqc.AzbbGJAa2ls6bQWRCrudB-jGcm6vKV7pRItsIyBMpdA&dib_tag=se&keywords=FPV&qid=1744201259&sr=8-41) |
|
| 8 | + |
|
| 9 | + |
|
| 10 | +- eye view == 155 degree |
|
| 11 | + |
|
| 12 | +- fly speed == 27M/s |
|
| 13 | + |
|
| 14 | +- freestyle |
|
| 15 | + |
|
| 16 | +- stablization |
|
| 17 | + |
|
| 18 | +- battery |
|
| 19 | + |
|
| 20 | +## ref |
|
| 21 | + |
|
| 22 | +- [[goggles]] - [[FPV]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-code-dat/PWM-1ch.ino
| ... | ... | @@ -0,0 +1,74 @@ |
| 1 | +// Define pins for each RC channel |
|
| 2 | +int aileronPin = 2; // Channel 1 |
|
| 3 | + |
|
| 4 | +const int ENA = 5; // PWM for speed for Motor 1 |
|
| 5 | +const int ENB = 4; // PWM for speed for Motor 2 |
|
| 6 | + |
|
| 7 | +const int IN1 = 0; // Direction for Motor 1 (IN2_Motor1 is inverted in hardware) |
|
| 8 | +const int IN2 = 2; // Direction pin 1 for Motor 2 |
|
| 9 | + |
|
| 10 | +long aileronControl; |
|
| 11 | + |
|
| 12 | +long readAileronControlSignal() { |
|
| 13 | + unsigned long rawPWM = pulseIn(aileronPin, HIGH, 25000); |
|
| 14 | + if (rawPWM == 0) { // Timeout or no signal |
|
| 15 | + return 50; // Mid-point for 0-100 scale (1500us equivalent) |
|
| 16 | + } |
|
| 17 | + long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 18 | + return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 19 | +} |
|
| 20 | + |
|
| 21 | +void setup() { |
|
| 22 | + pinMode(aileronPin, INPUT); |
|
| 23 | + |
|
| 24 | + pinMode(ENA, OUTPUT); |
|
| 25 | + pinMode(ENB, OUTPUT); |
|
| 26 | + pinMode(IN1, OUTPUT); |
|
| 27 | + pinMode(IN2, OUTPUT); |
|
| 28 | + |
|
| 29 | + // Initialize motors to off |
|
| 30 | + digitalWrite(IN1, LOW); |
|
| 31 | + digitalWrite(IN2, LOW); |
|
| 32 | + analogWrite(ENA, 0); |
|
| 33 | + analogWrite(ENB, 0); |
|
| 34 | + |
|
| 35 | + Serial.begin(9600); |
|
| 36 | +} |
|
| 37 | + |
|
| 38 | +void loop() { |
|
| 39 | + // Read mapped control signals from each channel |
|
| 40 | + aileronControl = readAileronControlSignal(); |
|
| 41 | + |
|
| 42 | + // Print the mapped control signal values to the Serial Monitor |
|
| 43 | + Serial.print("Aileron: "); |
|
| 44 | + Serial.print(aileronControl); |
|
| 45 | + Serial.println(); // Newline for better readability |
|
| 46 | + |
|
| 47 | + if (aileronControl > 70) { |
|
| 48 | + // Forward |
|
| 49 | + digitalWrite(IN1, HIGH); // Motor 1 forward |
|
| 50 | + digitalWrite(IN2, HIGH); // Motor 2 forward |
|
| 51 | + |
|
| 52 | + // Map aileronControl (61-100) to PWM speed (e.g., 100-255) |
|
| 53 | + int motorSpeed = map(aileronControl, 61, 100, 100, 255); |
|
| 54 | + analogWrite(ENA, motorSpeed); |
|
| 55 | + analogWrite(ENB, motorSpeed); |
|
| 56 | + } else if (aileronControl < 30) { |
|
| 57 | + // Backward |
|
| 58 | + digitalWrite(IN1, LOW); // Motor 1 backward |
|
| 59 | + digitalWrite(IN2, LOW); // Motor 2 backward |
|
| 60 | + |
|
| 61 | + // Map aileronControl (0-39) to PWM speed (e.g., 255-100, reversing the range for backward) |
|
| 62 | + int motorSpeed = map(aileronControl, 0, 39, 255, 100); |
|
| 63 | + analogWrite(ENA, motorSpeed); |
|
| 64 | + analogWrite(ENB, motorSpeed); |
|
| 65 | + } else { |
|
| 66 | + // Stop motors (aileronControl is between 40 and 60 inclusive) |
|
| 67 | + digitalWrite(IN1, LOW); |
|
| 68 | + digitalWrite(IN2, LOW); |
|
| 69 | + analogWrite(ENA, 0); |
|
| 70 | + analogWrite(ENB, 0); |
|
| 71 | + } |
|
| 72 | + |
|
| 73 | + delay(100); // Limit output rate |
|
| 74 | +} |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-code-dat/PWM-2ch-2.ino
| ... | ... | @@ -0,0 +1,142 @@ |
| 1 | +// Define pins for each RC channel |
|
| 2 | +int aileronPin = 14; // Channel 1 (Throttle) |
|
| 3 | +int elevatorPin = 12; // Channel 2 (Steering) |
|
| 4 | + |
|
| 5 | +const int ENA = 5; // PWM for speed for Motor 1 |
|
| 6 | +const int ENB = 4; // PWM for speed for Motor 2 |
|
| 7 | + |
|
| 8 | +const int IN1 = 0; // Direction for Motor 1 |
|
| 9 | +const int IN2 = 2; // Direction pin 1 for Motor 2 |
|
| 10 | + |
|
| 11 | +long aileronControl; // Mapped value from aileron channel (0-100) |
|
| 12 | +long elevatorControl; // Mapped value from elevator channel (0-100) |
|
| 13 | + |
|
| 14 | +// Reads the PWM signal from the aileron channel and maps it to 0-100 |
|
| 15 | +long readAileronControlSignal() { |
|
| 16 | + unsigned long rawPWM = pulseIn(aileronPin, HIGH, 25000); |
|
| 17 | + // If signal is lost (timeout) or clearly out of valid RC pulse range, return neutral (50) |
|
| 18 | + // Valid RC pulses are typically 1000-2000us. Values outside ~900-2100us are treated as invalid. |
|
| 19 | + if (rawPWM == 0 || rawPWM < 900 || rawPWM > 2100) { |
|
| 20 | + return 50; // Mid-point for 0-100 scale (1500us equivalent), results in stop |
|
| 21 | + } |
|
| 22 | + // Otherwise, the signal is likely valid; constrain it to the standard 1000-2000us range and map |
|
| 23 | + long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 24 | + return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 25 | +} |
|
| 26 | + |
|
| 27 | +// Reads the PWM signal from the elevator channel and maps it to 0-100 |
|
| 28 | +long readElevatorControlSignal() { |
|
| 29 | + unsigned long rawPWM = pulseIn(elevatorPin, HIGH, 25000); |
|
| 30 | + // If signal is lost (timeout) or clearly out of valid RC pulse range, return neutral (50) |
|
| 31 | + // Valid RC pulses are typically 1000-2000us. Values outside ~900-2100us are treated as invalid. |
|
| 32 | + if (rawPWM == 0 || rawPWM < 900 || rawPWM > 2100) { |
|
| 33 | + return 50; // Mid-point for 0-100 scale (1500us equivalent), results in stop |
|
| 34 | + } |
|
| 35 | + // Otherwise, the signal is likely valid; constrain it to the standard 1000-2000us range and map |
|
| 36 | + long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 37 | + return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 38 | +} |
|
| 39 | + |
|
| 40 | +void setup() { |
|
| 41 | + pinMode(aileronPin, INPUT); |
|
| 42 | + pinMode(elevatorPin, INPUT); // Initialize elevator pin |
|
| 43 | + |
|
| 44 | + pinMode(ENA, OUTPUT); |
|
| 45 | + pinMode(ENB, OUTPUT); |
|
| 46 | + pinMode(IN1, OUTPUT); |
|
| 47 | + pinMode(IN2, OUTPUT); |
|
| 48 | + |
|
| 49 | + // Initialize motors to off |
|
| 50 | + digitalWrite(IN1, LOW); |
|
| 51 | + digitalWrite(IN2, LOW); |
|
| 52 | + analogWrite(ENA, 0); |
|
| 53 | + analogWrite(ENB, 0); |
|
| 54 | + |
|
| 55 | + Serial.begin(9600); |
|
| 56 | +} |
|
| 57 | + |
|
| 58 | +// Helper function to control a single motor |
|
| 59 | +// pwmVal: -255 (full backward) to 255 (full forward) |
|
| 60 | +void setMotorOutput(int dirPin, int speedPin, int pwmVal) { |
|
| 61 | + if (pwmVal > 0) { // Forward |
|
| 62 | + digitalWrite(dirPin, HIGH); |
|
| 63 | + analogWrite(speedPin, pwmVal); |
|
| 64 | + } else if (pwmVal < 0) { // Backward |
|
| 65 | + digitalWrite(dirPin, LOW); |
|
| 66 | + analogWrite(speedPin, -pwmVal); // Speed is positive |
|
| 67 | + } else { // Stop |
|
| 68 | + digitalWrite(dirPin, LOW); // Or HIGH, doesn't matter much if speed is 0 |
|
| 69 | + analogWrite(speedPin, 0); |
|
| 70 | + } |
|
| 71 | +} |
|
| 72 | + |
|
| 73 | +// Helper function to map RC control input (0-100) to an output range (e.g., -255 to 255) |
|
| 74 | +// with a deadband around the center (e.g., 50). |
|
| 75 | +long mapWithDeadband(long rcValue, int rcMin, int rcMax, int rcCenter, int deadbandRadius, int outMin, int outMax) { |
|
| 76 | + long mappedValue = 0; |
|
| 77 | + int deadbandLower = rcCenter - deadbandRadius; |
|
| 78 | + int deadbandUpper = rcCenter + deadbandRadius; |
|
| 79 | + |
|
| 80 | + if (rcValue < deadbandLower) { |
|
| 81 | + // Map the range [rcMin, deadbandLower - 1] to [outMin, -1] |
|
| 82 | + // Ensure deadbandLower - 1 is not less than rcMin |
|
| 83 | + if (deadbandLower -1 < rcMin) { |
|
| 84 | + mappedValue = outMin; |
|
| 85 | + } else { |
|
| 86 | + mappedValue = map(rcValue, rcMin, deadbandLower - 1, outMin, -1); |
|
| 87 | + } |
|
| 88 | + } else if (rcValue > deadbandUpper) { |
|
| 89 | + // Map the range [deadbandUpper + 1, rcMax] to [1, outMax] |
|
| 90 | + // Ensure deadbandUpper + 1 is not greater than rcMax |
|
| 91 | + if (deadbandUpper + 1 > rcMax) { |
|
| 92 | + mappedValue = outMax; |
|
| 93 | + } else { |
|
| 94 | + mappedValue = map(rcValue, deadbandUpper + 1, rcMax, 1, outMax); |
|
| 95 | + } |
|
| 96 | + } else { |
|
| 97 | + // Inside deadband |
|
| 98 | + mappedValue = 0; |
|
| 99 | + } |
|
| 100 | + return constrain(mappedValue, outMin, outMax); |
|
| 101 | +} |
|
| 102 | + |
|
| 103 | +void loop() { |
|
| 104 | + // Read mapped control signals from each channel |
|
| 105 | + aileronControl = readAileronControlSignal(); // Throttle (0-100) |
|
| 106 | + elevatorControl = readElevatorControlSignal(); // Steering (0-100) |
|
| 107 | + |
|
| 108 | + // Print the mapped control signal values to the Serial Monitor |
|
| 109 | + Serial.print("Aileron (Throttle): "); |
|
| 110 | + Serial.print(aileronControl); |
|
| 111 | + Serial.print(" Elevator (Steering): "); |
|
| 112 | + Serial.print(elevatorControl); |
|
| 113 | + Serial.println(); |
|
| 114 | + |
|
| 115 | + // Define deadband radius (e.g., +/- 5 around center of 50 for a 0-100 input) |
|
| 116 | + // This means input values from 45 to 55 (inclusive if center is 50 and radius is 5) will be treated as 0. |
|
| 117 | + int deadbandRadius = 10; |
|
| 118 | + float steeringFactor = 3; // Adjust this value to change steering sensitivity |
|
| 119 | + float throttleFactor = 3; // Adjust this value to change throttle sensitivity (e.g., 1.2 for 20% stronger throttle) |
|
| 120 | + |
|
| 121 | + // Map control values with deadband |
|
| 122 | + long rawThrottleValue = mapWithDeadband(aileronControl, 0, 100, 50, deadbandRadius, -255, 255); |
|
| 123 | + long rawSteeringValue = mapWithDeadband(elevatorControl, 0, 100, 50, deadbandRadius, -255, 255); |
|
| 124 | + |
|
| 125 | + // Apply sensitivity factors |
|
| 126 | + long throttleValue = rawThrottleValue * throttleFactor; |
|
| 127 | + long adjustedSteeringValue = rawSteeringValue * steeringFactor; |
|
| 128 | + |
|
| 129 | + // Mix throttle and steering for differential drive |
|
| 130 | + long motor1Pwm = throttleValue + adjustedSteeringValue; |
|
| 131 | + long motor2Pwm = throttleValue - adjustedSteeringValue; |
|
| 132 | + |
|
| 133 | + // Constrain PWM values to the valid range [-255, 255] |
|
| 134 | + motor1Pwm = constrain(motor1Pwm, -255, 255); |
|
| 135 | + motor2Pwm = constrain(motor2Pwm, -255, 255); |
|
| 136 | + |
|
| 137 | + // Set motor speeds and directions |
|
| 138 | + setMotorOutput(IN1, ENA, motor1Pwm); // Motor 1 |
|
| 139 | + setMotorOutput(IN2, ENB, motor2Pwm); // Motor 2 |
|
| 140 | + |
|
| 141 | + delay(20); // Shorter delay for better responsiveness |
|
| 142 | +} |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-code-dat/PWM-2ch-v2.ino
| ... | ... | @@ -0,0 +1,68 @@ |
| 1 | +// RC signal input pins |
|
| 2 | +#define THROTTLE_PIN 2 // Channel 1 (forward/back) |
|
| 3 | +#define STEERING_PIN 3 // Channel 2 (left/right) |
|
| 4 | + |
|
| 5 | +// Motor control pins (L298N) |
|
| 6 | +#define LEFT_ENA 9 |
|
| 7 | +#define LEFT_IN1 4 |
|
| 8 | +#define LEFT_IN2 5 |
|
| 9 | + |
|
| 10 | +#define RIGHT_ENB 10 |
|
| 11 | +#define RIGHT_IN3 6 |
|
| 12 | +#define RIGHT_IN4 7 |
|
| 13 | + |
|
| 14 | +int throttle, steering; |
|
| 15 | + |
|
| 16 | +void setup() { |
|
| 17 | + pinMode(THROTTLE_PIN, INPUT); |
|
| 18 | + pinMode(STEERING_PIN, INPUT); |
|
| 19 | + |
|
| 20 | + pinMode(LEFT_IN1, OUTPUT); |
|
| 21 | + pinMode(LEFT_IN2, OUTPUT); |
|
| 22 | + pinMode(LEFT_ENA, OUTPUT); |
|
| 23 | + |
|
| 24 | + pinMode(RIGHT_IN3, OUTPUT); |
|
| 25 | + pinMode(RIGHT_IN4, OUTPUT); |
|
| 26 | + pinMode(RIGHT_ENB, OUTPUT); |
|
| 27 | + |
|
| 28 | + Serial.begin(9600); |
|
| 29 | +} |
|
| 30 | + |
|
| 31 | +void loop() { |
|
| 32 | + // Read PWM input |
|
| 33 | + throttle = pulseIn(THROTTLE_PIN, HIGH, 25000); |
|
| 34 | + steering = pulseIn(STEERING_PIN, HIGH, 25000); |
|
| 35 | + |
|
| 36 | + // Center = 1500, range = 1000–2000 |
|
| 37 | + int throttleVal = map(throttle, 1000, 2000, -255, 255); |
|
| 38 | + int steeringVal = map(steering, 1000, 2000, -100, 100); // less aggressive |
|
| 39 | + |
|
| 40 | + // Motor mixing (differential drive) |
|
| 41 | + int leftSpeed = constrain(throttleVal + steeringVal, -255, 255); |
|
| 42 | + int rightSpeed = constrain(throttleVal - steeringVal, -255, 255); |
|
| 43 | + |
|
| 44 | + setMotor(LEFT_IN1, LEFT_IN2, LEFT_ENA, leftSpeed); |
|
| 45 | + setMotor(RIGHT_IN3, RIGHT_IN4, RIGHT_ENB, rightSpeed); |
|
| 46 | + |
|
| 47 | + // Debug |
|
| 48 | + Serial.print("Throttle: "); Serial.print(throttleVal); |
|
| 49 | + Serial.print(" Steering: "); Serial.print(steeringVal); |
|
| 50 | + Serial.print(" L: "); Serial.print(leftSpeed); |
|
| 51 | + Serial.print(" R: "); Serial.println(rightSpeed); |
|
| 52 | + |
|
| 53 | + delay(20); |
|
| 54 | +} |
|
| 55 | + |
|
| 56 | +void setMotor(int in1, int in2, int ena, int speed) { |
|
| 57 | + if (speed > 0) { |
|
| 58 | + digitalWrite(in1, HIGH); |
|
| 59 | + digitalWrite(in2, LOW); |
|
| 60 | + } else if (speed < 0) { |
|
| 61 | + digitalWrite(in1, LOW); |
|
| 62 | + digitalWrite(in2, HIGH); |
|
| 63 | + } else { |
|
| 64 | + digitalWrite(in1, LOW); |
|
| 65 | + digitalWrite(in2, LOW); |
|
| 66 | + } |
|
| 67 | + analogWrite(ena, abs(speed)); |
|
| 68 | +} |
app-dat/RC-dat/RC-code-dat/PWM-2ch.ino
| ... | ... | @@ -0,0 +1,136 @@ |
| 1 | +// Define pins for each RC channel |
|
| 2 | +int aileronPin = 14; // Channel 1 (Throttle) |
|
| 3 | +int elevatorPin = 12; // Channel 2 (Steering) |
|
| 4 | + |
|
| 5 | +const int ENA = 5; // PWM for speed for Motor 1 |
|
| 6 | +const int ENB = 4; // PWM for speed for Motor 2 |
|
| 7 | + |
|
| 8 | +const int IN1 = 0; // Direction for Motor 1 |
|
| 9 | +const int IN2 = 2; // Direction pin 1 for Motor 2 |
|
| 10 | + |
|
| 11 | +long aileronControl; // Mapped value from aileron channel (0-100) |
|
| 12 | +long elevatorControl; // Mapped value from elevator channel (0-100) |
|
| 13 | + |
|
| 14 | +// Reads the PWM signal from the aileron channel and maps it to 0-100 |
|
| 15 | +long readAileronControlSignal() { |
|
| 16 | + unsigned long rawPWM = pulseIn(aileronPin, HIGH, 25000); |
|
| 17 | + if (rawPWM == 0) { // Timeout or no signal |
|
| 18 | + return 50; // Mid-point for 0-100 scale (1500us equivalent) |
|
| 19 | + } |
|
| 20 | + long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 21 | + return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 22 | +} |
|
| 23 | + |
|
| 24 | +// Reads the PWM signal from the elevator channel and maps it to 0-100 |
|
| 25 | +long readElevatorControlSignal() { |
|
| 26 | + unsigned long rawPWM = pulseIn(elevatorPin, HIGH, 25000); |
|
| 27 | + if (rawPWM == 0) { // Timeout or no signal |
|
| 28 | + return 50; // Mid-point for 0-100 scale (1500us equivalent) |
|
| 29 | + } |
|
| 30 | + long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 31 | + return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 32 | +} |
|
| 33 | + |
|
| 34 | +void setup() { |
|
| 35 | + pinMode(aileronPin, INPUT); |
|
| 36 | + pinMode(elevatorPin, INPUT); // Initialize elevator pin |
|
| 37 | + |
|
| 38 | + pinMode(ENA, OUTPUT); |
|
| 39 | + pinMode(ENB, OUTPUT); |
|
| 40 | + pinMode(IN1, OUTPUT); |
|
| 41 | + pinMode(IN2, OUTPUT); |
|
| 42 | + |
|
| 43 | + // Initialize motors to off |
|
| 44 | + digitalWrite(IN1, LOW); |
|
| 45 | + digitalWrite(IN2, LOW); |
|
| 46 | + analogWrite(ENA, 0); |
|
| 47 | + analogWrite(ENB, 0); |
|
| 48 | + |
|
| 49 | + Serial.begin(9600); |
|
| 50 | +} |
|
| 51 | + |
|
| 52 | +// Helper function to control a single motor |
|
| 53 | +// pwmVal: -255 (full backward) to 255 (full forward) |
|
| 54 | +void setMotorOutput(int dirPin, int speedPin, int pwmVal) { |
|
| 55 | + if (pwmVal > 0) { // Forward |
|
| 56 | + digitalWrite(dirPin, HIGH); |
|
| 57 | + analogWrite(speedPin, pwmVal); |
|
| 58 | + } else if (pwmVal < 0) { // Backward |
|
| 59 | + digitalWrite(dirPin, LOW); |
|
| 60 | + analogWrite(speedPin, -pwmVal); // Speed is positive |
|
| 61 | + } else { // Stop |
|
| 62 | + digitalWrite(dirPin, LOW); // Or HIGH, doesn't matter much if speed is 0 |
|
| 63 | + analogWrite(speedPin, 0); |
|
| 64 | + } |
|
| 65 | +} |
|
| 66 | + |
|
| 67 | +// Helper function to map RC control input (0-100) to an output range (e.g., -255 to 255) |
|
| 68 | +// with a deadband around the center (e.g., 50). |
|
| 69 | +long mapWithDeadband(long rcValue, int rcMin, int rcMax, int rcCenter, int deadbandRadius, int outMin, int outMax) { |
|
| 70 | + long mappedValue = 0; |
|
| 71 | + int deadbandLower = rcCenter - deadbandRadius; |
|
| 72 | + int deadbandUpper = rcCenter + deadbandRadius; |
|
| 73 | + |
|
| 74 | + if (rcValue < deadbandLower) { |
|
| 75 | + // Map the range [rcMin, deadbandLower - 1] to [outMin, -1] |
|
| 76 | + // Ensure deadbandLower - 1 is not less than rcMin |
|
| 77 | + if (deadbandLower -1 < rcMin) { |
|
| 78 | + mappedValue = outMin; |
|
| 79 | + } else { |
|
| 80 | + mappedValue = map(rcValue, rcMin, deadbandLower - 1, outMin, -1); |
|
| 81 | + } |
|
| 82 | + } else if (rcValue > deadbandUpper) { |
|
| 83 | + // Map the range [deadbandUpper + 1, rcMax] to [1, outMax] |
|
| 84 | + // Ensure deadbandUpper + 1 is not greater than rcMax |
|
| 85 | + if (deadbandUpper + 1 > rcMax) { |
|
| 86 | + mappedValue = outMax; |
|
| 87 | + } else { |
|
| 88 | + mappedValue = map(rcValue, deadbandUpper + 1, rcMax, 1, outMax); |
|
| 89 | + } |
|
| 90 | + } else { |
|
| 91 | + // Inside deadband |
|
| 92 | + mappedValue = 0; |
|
| 93 | + } |
|
| 94 | + return constrain(mappedValue, outMin, outMax); |
|
| 95 | +} |
|
| 96 | + |
|
| 97 | +void loop() { |
|
| 98 | + // Read mapped control signals from each channel |
|
| 99 | + aileronControl = readAileronControlSignal(); // Throttle (0-100) |
|
| 100 | + elevatorControl = readElevatorControlSignal(); // Steering (0-100) |
|
| 101 | + |
|
| 102 | + // Print the mapped control signal values to the Serial Monitor |
|
| 103 | + Serial.print("Aileron (Throttle): "); |
|
| 104 | + Serial.print(aileronControl); |
|
| 105 | + Serial.print(" Elevator (Steering): "); |
|
| 106 | + Serial.print(elevatorControl); |
|
| 107 | + Serial.println(); |
|
| 108 | + |
|
| 109 | + // Define deadband radius (e.g., +/- 5 around center of 50 for a 0-100 input) |
|
| 110 | + // This means input values from 45 to 55 (inclusive if center is 50 and radius is 5) will be treated as 0. |
|
| 111 | + int deadbandRadius = 5; |
|
| 112 | + float steeringFactor = 1.5; // Adjust this value to change steering sensitivity |
|
| 113 | + float throttleFactor = 1.3; // Adjust this value to change throttle sensitivity (e.g., 1.2 for 20% stronger throttle) |
|
| 114 | + |
|
| 115 | + // Map control values with deadband |
|
| 116 | + long rawThrottleValue = mapWithDeadband(aileronControl, 0, 100, 50, deadbandRadius, -255, 255); |
|
| 117 | + long rawSteeringValue = mapWithDeadband(elevatorControl, 0, 100, 50, deadbandRadius, -255, 255); |
|
| 118 | + |
|
| 119 | + // Apply sensitivity factors |
|
| 120 | + long throttleValue = rawThrottleValue * throttleFactor; |
|
| 121 | + long adjustedSteeringValue = rawSteeringValue * steeringFactor; |
|
| 122 | + |
|
| 123 | + // Mix throttle and steering for differential drive |
|
| 124 | + long motor1Pwm = throttleValue + adjustedSteeringValue; |
|
| 125 | + long motor2Pwm = throttleValue - adjustedSteeringValue; |
|
| 126 | + |
|
| 127 | + // Constrain PWM values to the valid range [-255, 255] |
|
| 128 | + motor1Pwm = constrain(motor1Pwm, -255, 255); |
|
| 129 | + motor2Pwm = constrain(motor2Pwm, -255, 255); |
|
| 130 | + |
|
| 131 | + // Set motor speeds and directions |
|
| 132 | + setMotorOutput(IN1, ENA, motor1Pwm); // Motor 1 |
|
| 133 | + setMotorOutput(IN2, ENB, motor2Pwm); // Motor 2 |
|
| 134 | + |
|
| 135 | + delay(20); // Shorter delay for better responsiveness |
|
| 136 | +} |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-code-dat/RC-code-dat.md
| ... | ... | @@ -0,0 +1,16 @@ |
| 1 | + |
|
| 2 | +# RC-code-dat |
|
| 3 | + |
|
| 4 | +## working for |
|
| 5 | + |
|
| 6 | +- [[SDR1064-dat]] |
|
| 7 | + |
|
| 8 | +## code |
|
| 9 | + |
|
| 10 | +- [[PWM-1ch.ino]] - [[PWM-2ch.ino]] - [[PWM-2ch-v2.ino]] |
|
| 11 | + |
|
| 12 | +## ref |
|
| 13 | + |
|
| 14 | +- [[PWM-dat]] |
|
| 15 | + |
|
| 16 | +- [[RC-dat]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-code-dat/rover-1.ino
| ... | ... | @@ -0,0 +1,94 @@ |
| 1 | +// Define pins for each RC channel |
|
| 2 | +int aileronPin = 14; // Channel 1 (Throttle) |
|
| 3 | +int elevatorPin = 12; // Channel 2 (Steering) |
|
| 4 | + |
|
| 5 | +const int ENA = 5; // PWM for speed for Motor 1 |
|
| 6 | +const int ENB = 4; // PWM for speed for Motor 2 |
|
| 7 | + |
|
| 8 | +const int IN1 = 0; // Direction for Motor 1 |
|
| 9 | +const int IN2 = 2; // Direction pin 1 for Motor 2 |
|
| 10 | + |
|
| 11 | +long aileronControl; // Mapped value from aileron channel (0-100) |
|
| 12 | +long elevatorControl; // Mapped value from elevator channel (0-100) |
|
| 13 | + |
|
| 14 | +// Reads the PWM signal from the aileron channel and maps it to 0-100 |
|
| 15 | +long readAileronControlSignal() { |
|
| 16 | + unsigned long rawPWM = pulseIn(aileronPin, HIGH, 25000); |
|
| 17 | + // If signal is lost (timeout) or clearly out of valid RC pulse range, return neutral (50) |
|
| 18 | + if (rawPWM == 0 || rawPWM < 900 || rawPWM > 2100) { |
|
| 19 | + return 50; // Mid-point for 0-100 scale |
|
| 20 | + } |
|
| 21 | + long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 22 | + return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 23 | +} |
|
| 24 | + |
|
| 25 | +// Reads the PWM signal from the elevator channel and maps it to 0-100 |
|
| 26 | +long readElevatorControlSignal() { |
|
| 27 | + unsigned long rawPWM = pulseIn(elevatorPin, HIGH, 25000); |
|
| 28 | + // If signal is lost (timeout) or clearly out of valid RC pulse range, return neutral (50) |
|
| 29 | + if (rawPWM == 0 || rawPWM < 900 || rawPWM > 2100) { |
|
| 30 | + return 50; // Mid-point for 0-100 scale |
|
| 31 | + } |
|
| 32 | + long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 33 | + return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 34 | +} |
|
| 35 | + |
|
| 36 | +void setup() { |
|
| 37 | + pinMode(aileronPin, INPUT); |
|
| 38 | + pinMode(elevatorPin, INPUT); |
|
| 39 | + |
|
| 40 | + pinMode(ENA, OUTPUT); |
|
| 41 | + pinMode(ENB, OUTPUT); |
|
| 42 | + pinMode(IN1, OUTPUT); |
|
| 43 | + pinMode(IN2, OUTPUT); |
|
| 44 | + |
|
| 45 | + // Initialize motors to off |
|
| 46 | + digitalWrite(IN1, LOW); |
|
| 47 | + digitalWrite(IN2, LOW); |
|
| 48 | + analogWrite(ENA, 0); |
|
| 49 | + analogWrite(ENB, 0); |
|
| 50 | +} |
|
| 51 | + |
|
| 52 | +// Helper function to control a single motor |
|
| 53 | +// pwmVal: -255 (full backward) to 255 (full forward) |
|
| 54 | +void setMotorOutput(int dirPin, int speedPin, int pwmVal) { |
|
| 55 | + if (pwmVal > 0) { // Forward |
|
| 56 | + digitalWrite(dirPin, HIGH); |
|
| 57 | + analogWrite(speedPin, pwmVal); |
|
| 58 | + } else if (pwmVal < 0) { // Backward |
|
| 59 | + digitalWrite(dirPin, LOW); |
|
| 60 | + analogWrite(speedPin, -pwmVal); // Speed is positive |
|
| 61 | + } else { // Stop |
|
| 62 | + digitalWrite(dirPin, LOW); |
|
| 63 | + analogWrite(speedPin, 0); |
|
| 64 | + } |
|
| 65 | +} |
|
| 66 | + |
|
| 67 | +void loop() { |
|
| 68 | + // Read mapped control signals from each channel |
|
| 69 | + aileronControl = readAileronControlSignal(); // Throttle (0-100, 50 is neutral) |
|
| 70 | + elevatorControl = readElevatorControlSignal(); // Steering (0-100, 50 is neutral) |
|
| 71 | + |
|
| 72 | + // Map control values directly |
|
| 73 | + // aileronControl (0-100) to throttleValue (-255 to 255) |
|
| 74 | + // 0 -> -255 (full reverse), 50 -> 0 (stop), 100 -> 255 (full forward) |
|
| 75 | + long throttleValue = map(aileronControl, 0, 100, -255, 255); |
|
| 76 | + |
|
| 77 | + // elevatorControl (0-100) to steeringValue (-255 to 255) |
|
| 78 | + // 0 -> -255 (full left turn effect), 50 -> 0 (straight), 100 -> 255 (full right turn effect) |
|
| 79 | + long steeringValue = map(elevatorControl, 0, 100, -255, 255); |
|
| 80 | + |
|
| 81 | + // Mix throttle and steering for differential drive |
|
| 82 | + long motor1Pwm = throttleValue + steeringValue; |
|
| 83 | + long motor2Pwm = throttleValue - steeringValue; |
|
| 84 | + |
|
| 85 | + // Constrain PWM values to the valid range [-255, 255] |
|
| 86 | + motor1Pwm = constrain(motor1Pwm, -255, 255); |
|
| 87 | + motor2Pwm = constrain(motor2Pwm, -255, 255); |
|
| 88 | + |
|
| 89 | + // Set motor speeds and directions |
|
| 90 | + setMotorOutput(IN1, ENA, motor1Pwm); // Motor 1 |
|
| 91 | + setMotorOutput(IN2, ENB, motor2Pwm); // Motor 2 |
|
| 92 | + |
|
| 93 | + delay(20); // Delay for responsiveness |
|
| 94 | +} |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-code-dat/rover-2.ino
| ... | ... | @@ -0,0 +1,170 @@ |
| 1 | +#include <Adafruit_NeoPixel.h> |
|
| 2 | + |
|
| 3 | +// Define pins for each RC channel |
|
| 4 | +int aileronPin = 14; // Channel 1 (Throttle) |
|
| 5 | +int elevatorPin = 12; // Channel 2 (Steering) |
|
| 6 | + |
|
| 7 | +const int ENA = 5; // PWM for speed for Motor 1 |
|
| 8 | +const int ENB = 4; // PWM for speed for Motor 2 |
|
| 9 | + |
|
| 10 | +const int IN1 = 0; // Direction for Motor 1 |
|
| 11 | +const int IN2 = 2; // Direction pin 1 for Motor 2 |
|
| 12 | + |
|
| 13 | +// WS2812 LED Strip Configuration |
|
| 14 | +#define LED_PIN 15 |
|
| 15 | +#define LED_COUNT 8 |
|
| 16 | +Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); |
|
| 17 | + |
|
| 18 | +long aileronControl; // Mapped value from aileron channel (0-100) |
|
| 19 | +long elevatorControl; // Mapped value from elevator channel (0-100) |
|
| 20 | + |
|
| 21 | +// Reads the PWM signal from the aileron channel and maps it to 0-100 |
|
| 22 | +long readAileronControlSignal() { |
|
| 23 | + unsigned long rawPWM = pulseIn(aileronPin, HIGH, 25000); |
|
| 24 | + // If signal is lost (timeout) or clearly out of valid RC pulse range, return neutral (50) |
|
| 25 | + // Valid RC pulses are typically 1000-2000us. Values outside ~900-2100us are treated as invalid. |
|
| 26 | + if (rawPWM == 0 || rawPWM < 900 || rawPWM > 2100) { |
|
| 27 | + return 50; // Mid-point for 0-100 scale (1500us equivalent), results in stop |
|
| 28 | + } |
|
| 29 | + // Otherwise, the signal is likely valid; constrain it to the standard 1000-2000us range and map |
|
| 30 | + long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 31 | + return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 32 | +} |
|
| 33 | + |
|
| 34 | +// Reads the PWM signal from the elevator channel and maps it to 0-100 |
|
| 35 | +long readElevatorControlSignal() { |
|
| 36 | + unsigned long rawPWM = pulseIn(elevatorPin, HIGH, 25000); |
|
| 37 | + // If signal is lost (timeout) or clearly out of valid RC pulse range, return neutral (50) |
|
| 38 | + // Valid RC pulses are typically 1000-2000us. Values outside ~900-2100us are treated as invalid. |
|
| 39 | + if (rawPWM == 0 || rawPWM < 900 || rawPWM > 2100) { |
|
| 40 | + return 50; // Mid-point for 0-100 scale (1500us equivalent), results in stop |
|
| 41 | + } |
|
| 42 | + // Otherwise, the signal is likely valid; constrain it to the standard 1000-2000us range and map |
|
| 43 | + long constrainedPWM = constrain(rawPWM, 1000, 2000); |
|
| 44 | + return map(constrainedPWM, 1000, 2000, 0, 100); |
|
| 45 | +} |
|
| 46 | + |
|
| 47 | +void setup() { |
|
| 48 | + pinMode(aileronPin, INPUT); |
|
| 49 | + pinMode(elevatorPin, INPUT); // Initialize elevator pin |
|
| 50 | + |
|
| 51 | + pinMode(ENA, OUTPUT); |
|
| 52 | + pinMode(ENB, OUTPUT); |
|
| 53 | + pinMode(IN1, OUTPUT); |
|
| 54 | + pinMode(IN2, OUTPUT); |
|
| 55 | + |
|
| 56 | + // Initialize motors to off |
|
| 57 | + digitalWrite(IN1, LOW); |
|
| 58 | + digitalWrite(IN2, LOW); |
|
| 59 | + analogWrite(ENA, 0); |
|
| 60 | + analogWrite(ENB, 0); |
|
| 61 | + |
|
| 62 | + Serial.begin(9600); |
|
| 63 | + |
|
| 64 | + strip.begin(); // INITIALIZE NeoPixel strip object (REQUIRED) |
|
| 65 | + strip.show(); // Turn OFF all pixels ASAP |
|
| 66 | + strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255) |
|
| 67 | +} |
|
| 68 | + |
|
| 69 | +// Helper function to control a single motor |
|
| 70 | +// pwmVal: -255 (full backward) to 255 (full forward) |
|
| 71 | +void setMotorOutput(int dirPin, int speedPin, int pwmVal) { |
|
| 72 | + if (pwmVal > 0) { // Forward |
|
| 73 | + digitalWrite(dirPin, HIGH); |
|
| 74 | + analogWrite(speedPin, pwmVal); |
|
| 75 | + } else if (pwmVal < 0) { // Backward |
|
| 76 | + digitalWrite(dirPin, LOW); |
|
| 77 | + analogWrite(speedPin, -pwmVal); // Speed is positive |
|
| 78 | + } else { // Stop |
|
| 79 | + digitalWrite(dirPin, LOW); // Or HIGH, doesn't matter much if speed is 0 |
|
| 80 | + analogWrite(speedPin, 0); |
|
| 81 | + } |
|
| 82 | +} |
|
| 83 | + |
|
| 84 | +// Helper function to map RC control input (0-100) to an output range (e.g., -255 to 255) |
|
| 85 | +// with a deadband around the center (e.g., 50). |
|
| 86 | +long mapWithDeadband(long rcValue, int rcMin, int rcMax, int rcCenter, int deadbandRadius, int outMin, int outMax) { |
|
| 87 | + long mappedValue = 0; |
|
| 88 | + int deadbandLower = rcCenter - deadbandRadius; |
|
| 89 | + int deadbandUpper = rcCenter + deadbandRadius; |
|
| 90 | + |
|
| 91 | + if (rcValue < deadbandLower) { |
|
| 92 | + // Map the range [rcMin, deadbandLower - 1] to [outMin, -1] |
|
| 93 | + // Ensure deadbandLower - 1 is not less than rcMin |
|
| 94 | + if (deadbandLower -1 < rcMin) { |
|
| 95 | + mappedValue = outMin; |
|
| 96 | + } else { |
|
| 97 | + mappedValue = map(rcValue, rcMin, deadbandLower - 1, outMin, -1); |
|
| 98 | + } |
|
| 99 | + } else if (rcValue > deadbandUpper) { |
|
| 100 | + // Map the range [deadbandUpper + 1, rcMax] to [1, outMax] |
|
| 101 | + // Ensure deadbandUpper + 1 is not greater than rcMax |
|
| 102 | + if (deadbandUpper + 1 > rcMax) { |
|
| 103 | + mappedValue = outMax; |
|
| 104 | + } else { |
|
| 105 | + mappedValue = map(rcValue, deadbandUpper + 1, rcMax, 1, outMax); |
|
| 106 | + } |
|
| 107 | + } else { |
|
| 108 | + // Inside deadband |
|
| 109 | + mappedValue = 0; |
|
| 110 | + } |
|
| 111 | + return constrain(mappedValue, outMin, outMax); |
|
| 112 | +} |
|
| 113 | + |
|
| 114 | +// Function to create a random blinking effect for WS2812 LEDs |
|
| 115 | +void randomBlinkEffect() { |
|
| 116 | + for (int i = 0; i < LED_COUNT; i++) { |
|
| 117 | + // Turn on a random LED with a random color |
|
| 118 | + if (random(0, 2) == 1) { // 50% chance to turn on this LED |
|
| 119 | + strip.setPixelColor(i, strip.Color(random(0, 256), random(0, 256), random(0, 256))); |
|
| 120 | + } else { |
|
| 121 | + strip.setPixelColor(i, strip.Color(0, 0, 0)); // Turn off |
|
| 122 | + } |
|
| 123 | + } |
|
| 124 | + strip.show(); // Send the updated pixel colors to the hardware. |
|
| 125 | + delay(100); // Wait a short period |
|
| 126 | +} |
|
| 127 | + |
|
| 128 | +void loop() { |
|
| 129 | + // Read mapped control signals from each channel |
|
| 130 | + aileronControl = readAileronControlSignal(); // Throttle (0-100) |
|
| 131 | + elevatorControl = readElevatorControlSignal(); // Steering (0-100) |
|
| 132 | + |
|
| 133 | + // Print the mapped control signal values to the Serial Monitor |
|
| 134 | + Serial.print("Aileron (Throttle): "); |
|
| 135 | + Serial.print(aileronControl); |
|
| 136 | + Serial.print(" Elevator (Steering): "); |
|
| 137 | + Serial.print(elevatorControl); |
|
| 138 | + Serial.println(); |
|
| 139 | + |
|
| 140 | + // Define deadband radius (e.g., +/- 5 around center of 50 for a 0-100 input) |
|
| 141 | + // This means input values from 45 to 55 (inclusive if center is 50 and radius is 5) will be treated as 0. |
|
| 142 | + int deadbandRadius = 15; |
|
| 143 | + float steeringFactor = 3; // Adjust this value to change steering sensitivity |
|
| 144 | + float throttleFactor = 3; // Adjust this value to change throttle sensitivity (e.g., 1.2 for 20% stronger throttle) |
|
| 145 | + |
|
| 146 | + // Map control values with deadband |
|
| 147 | + long rawThrottleValue = mapWithDeadband(aileronControl, 0, 100, 50, deadbandRadius, -255, 255); |
|
| 148 | + long rawSteeringValue = mapWithDeadband(elevatorControl, 0, 100, 50, deadbandRadius, -255, 255); |
|
| 149 | + |
|
| 150 | + // Apply sensitivity factors |
|
| 151 | + long throttleValue = rawThrottleValue * throttleFactor; |
|
| 152 | + long adjustedSteeringValue = rawSteeringValue * steeringFactor; |
|
| 153 | + |
|
| 154 | + // Mix throttle and steering for differential drive |
|
| 155 | + long motor1Pwm = throttleValue + adjustedSteeringValue; |
|
| 156 | + long motor2Pwm = throttleValue - adjustedSteeringValue; |
|
| 157 | + |
|
| 158 | + // Constrain PWM values to the valid range [-255, 255] |
|
| 159 | + motor1Pwm = constrain(motor1Pwm, -255, 255); |
|
| 160 | + motor2Pwm = constrain(motor2Pwm, -255, 255); |
|
| 161 | + |
|
| 162 | + // Set motor speeds and directions |
|
| 163 | + setMotorOutput(IN1, ENA, motor1Pwm); // Motor 1 |
|
| 164 | + setMotorOutput(IN2, ENB, motor2Pwm); // Motor 2 |
|
| 165 | + |
|
| 166 | + // Add the LED effect |
|
| 167 | + randomBlinkEffect(); |
|
| 168 | + |
|
| 169 | + delay(20); // Shorter delay for better responsiveness |
|
| 170 | +} |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-dat.md
| ... | ... | @@ -0,0 +1,35 @@ |
| 1 | + |
|
| 2 | +# RC-dat |
|
| 3 | + |
|
| 4 | + |
|
| 5 | +## RC - apps |
|
| 6 | + |
|
| 7 | +- [[rover-dat]] - [[RC-car-dat]] - [[RC-car-hack-dat]] - [[video-rc-car-dat]] |
|
| 8 | + |
|
| 9 | +- [[quadcopter-dat]] - [[FPV-dat]] |
|
| 10 | + |
|
| 11 | +- [[airplane-dat]] |
|
| 12 | + |
|
| 13 | +- [[UAV-dat]] |
|
| 14 | + |
|
| 15 | + |
|
| 16 | + |
|
| 17 | + |
|
| 18 | + |
|
| 19 | +## RC - signal |
|
| 20 | + |
|
| 21 | +- [[RC-signal-dat]] |
|
| 22 | + |
|
| 23 | +## RC - systems |
|
| 24 | + |
|
| 25 | +- [[ardupilot-dat]] |
|
| 26 | + |
|
| 27 | +## RC - Hardware |
|
| 28 | + |
|
| 29 | +- [[flight-controller-dat]] - [[RC-link-dat]] |
|
| 30 | + |
|
| 31 | +- [[BMS-dat]] - [[battery-dat]] |
|
| 32 | + |
|
| 33 | +## RC - manufacturers |
|
| 34 | + |
|
| 35 | +- [[Wfly-dat]] - [[betaFPV-dat]] - [[speedybee-dat]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-link-dat/2025-05-23-16-14-35.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-link-dat/2025-05-23-16-14-35.png differ |
app-dat/RC-dat/RC-link-dat/RC-link-dat.md
| ... | ... | @@ -0,0 +1,48 @@ |
| 1 | + |
|
| 2 | +# RC-link-dat |
|
| 3 | + |
|
| 4 | +- [[Wfly-dat]] - [[WFT06x-dat]] - [[WFR06S-dat]] |
|
| 5 | + |
|
| 6 | +## RC Tx |
|
| 7 | + |
|
| 8 | +- [[PX4-dat]] |
|
| 9 | + |
|
| 10 | + |
|
| 11 | + |
|
| 12 | + |
|
| 13 | + |
|
| 14 | +## RC Receiver |
|
| 15 | + |
|
| 16 | +When you push the **RC console (joystick or stick) up and down**, you're typically controlling the throttle or elevator channel, depending on the mode of your transmitter. The PWM (Pulse Width Modulation) signal output sent to the receiver or flight controller varies accordingly: |
|
| 17 | + |
|
| 18 | +PWM signal range: ~1000 µs (microseconds) to ~2000 µs |
|
| 19 | + |
|
| 20 | + Center/stick neutral: ~1500 µs |
|
| 21 | + |
|
| 22 | + Stick fully down: ~1000 µs |
|
| 23 | + |
|
| 24 | + Stick fully up: ~2000 µs |
|
| 25 | + |
|
| 26 | +Example: |
|
| 27 | + |
|
| 28 | +If you're using Mode 2 (common mode): |
|
| 29 | + |
|
| 30 | +Left stick up/down = Throttle |
|
| 31 | + |
|
| 32 | + Stick down = 1000 µs (zero throttle) |
|
| 33 | + |
|
| 34 | + Stick up = 2000 µs (full throttle) |
|
| 35 | + |
|
| 36 | +If it's controlling elevator (pitch): |
|
| 37 | + |
|
| 38 | + Stick down (nose down) = 1000 µs |
|
| 39 | + |
|
| 40 | + Stick up (nose up) = 2000 µs |
|
| 41 | + |
|
| 42 | + |
|
| 43 | + |
|
| 44 | +## ref |
|
| 45 | + |
|
| 46 | +- https://docs.px4.io/v1.11/en/getting_started/rc_transmitter_receiver.html |
|
| 47 | + |
|
| 48 | +- [[RC-dat]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-signal-dat/CRSF-dat/CRSF-dat.md
| ... | ... | @@ -0,0 +1,74 @@ |
| 1 | + |
|
| 2 | +# CRSF-dat |
|
| 3 | + |
|
| 4 | +CRSF (Crossfire Serial Protocol) is a low-latency, high-speed serial protocol developed by **Team BlackSheep (TBS)** for communication between radio receivers (like TBS Crossfire Nano RX) and flight controllers. |
|
| 5 | + |
|
| 6 | +It’s used in RC applications (especially FPV drones) to transmit RC channel data, telemetry, and link status over a compact serial format. |
|
| 7 | + |
|
| 8 | +CRSF packets are binary data. Here's the basic structure of a CRSF packet: |
|
| 9 | + |
|
| 10 | +## CRSF Packet Structure (General) |
|
| 11 | + |
|
| 12 | +| Byte Index | Name | Description | |
|
| 13 | +|------------|----------------|---------------------------------------------| |
|
| 14 | +| 0 | Device Address | Who is sending (e.g., RX, TX) | |
|
| 15 | +| 1 | Frame Length | Length of payload + 1 (type byte + data) | |
|
| 16 | +| 2 | Frame Type | Type of data (e.g., RC channels, telemetry) | |
|
| 17 | +| 3 - N | Payload | Actual data, varies by Frame Type | |
|
| 18 | +| Last Byte | CRC | Checksum for packet validation | |
|
| 19 | + |
|
| 20 | + |
|
| 21 | +This is how a typical RC channel data packet might look (in hex): |
|
| 22 | + |
|
| 23 | +C8 18 16 A1 84 3F C1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9E |
|
| 24 | + |
|
| 25 | +## RC Channel Encoding (Packed 11-bit) |
|
| 26 | + |
|
| 27 | +Each RC channel is packed as 11-bit little-endian integers, with up to 16 channels per frame. Example values: |
|
| 28 | + |
|
| 29 | +- 1000 → channel center |
|
| 30 | +- 172 → min |
|
| 31 | +- 1811 → max |
|
| 32 | + |
|
| 33 | +## read data via serial |
|
| 34 | + |
|
| 35 | +Yes, you can use a serial port to read CRSF data, because CRSF is a serial protocol — specifically, a half-duplex, asynchronous UART protocol using 8N1 (8 data bits, no parity, 1 stop bit). |
|
| 36 | + |
|
| 37 | +### 📡 CRSF over Serial – Quick Guide |
|
| 38 | + |
|
| 39 | +- **Baud rate**: 420000 or 115200 (depends on TX/RX version or setting) |
|
| 40 | +- **Protocol**: UART (8N1) |
|
| 41 | +- **Signal direction**: Half-duplex (same wire for TX and RX) |
|
| 42 | +- **Voltage**: 3.3V (NOT 5V safe on most Crossfire receivers) |
|
| 43 | +- **Typical usage**: Read CRSF data from TBS Nano RX or TX |
|
| 44 | + |
|
| 45 | +#### 🧰 What You Need: |
|
| 46 | +- A microcontroller or board with UART support (e.g., Arduino, ESP32, STM32, Raspberry Pi) |
|
| 47 | +- Logic-level conversion (if needed for 3.3V safety) |
|
| 48 | +- CRSF-compatible device (e.g., TBS Crossfire Nano RX) |
|
| 49 | + |
|
| 50 | +Code Concept (Pseudocode) |
|
| 51 | + |
|
| 52 | + |
|
| 53 | + Serial.begin(420000); // Or 115200 for some TX modules |
|
| 54 | + |
|
| 55 | + void loop() { |
|
| 56 | + if (Serial.available()) { |
|
| 57 | + uint8_t byte = Serial.read(); |
|
| 58 | + // Process CRSF packet bytes here |
|
| 59 | + } |
|
| 60 | + } |
|
| 61 | + |
|
| 62 | + |
|
| 63 | + |
|
| 64 | +## via ardupilot |
|
| 65 | + |
|
| 66 | +If you wish to use telemetry then a receiver can be connected to a UART utilizing the CRSF protocol. |
|
| 67 | + |
|
| 68 | +CRSF is a full-duplex protocol that supports integrated telemetry and a number of other features. Connect the RX pin of the UART to the CRSF TX pin of the CRSF device and vice versa. Currently a full-duplex UART connection is required. For best performance a UART with DMA capability on its RX port is desirable, but not required. A message will be displayed once on the GCS console, if connected to a UART without this capability on an F4/F7 based autopilot. |
|
| 69 | + |
|
| 70 | +https://ardupilot.org/rover/docs/common-tbs-rc.html#common-tbs-rc |
|
| 71 | + |
|
| 72 | +## ref |
|
| 73 | + |
|
| 74 | +- [[FPV-dat]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/2025-04-25-17-30-48.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-signal-dat/ELRS-dat/2025-04-25-17-30-48.png differ |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/2025-05-04-15-29-54.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-signal-dat/ELRS-dat/2025-05-04-15-29-54.png differ |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/2025-05-04-15-31-56.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-signal-dat/ELRS-dat/2025-05-04-15-31-56.png differ |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-915M-dat.md
| ... | ... | @@ -0,0 +1,4 @@ |
| 1 | + |
|
| 2 | +# ELRS-915M-dat.md |
|
| 3 | + |
|
| 4 | + |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-HF-RF-Module-dat/2025-05-16-13-30-09.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-HF-RF-Module-dat/2025-05-16-13-30-09.png differ |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-HF-RF-Module-dat/ELRS-HF-RF-Module-dat.md
| ... | ... | @@ -0,0 +1,10 @@ |
| 1 | + |
|
| 2 | +# ELRS-HF-RF-Module-dat |
|
| 3 | + |
|
| 4 | +1.连接USB,高频头无需另外供电,第一次连接电脑如果你的系统是windows 10或以上并处于联网状态下,电脑会自动安装名为CH9102的USB-TTL驱动,刷写固件无需任何按键进入boot,刷写内置的,并且刷写内置Backpack也无需按任何按键和拨码开关,因为我们在内部设计了自动激活刷机模式电路与刷背包固件直通模式 |
|
| 5 | + |
|
| 6 | + |
|
| 7 | + |
|
| 8 | +## ref |
|
| 9 | + |
|
| 10 | +- [[ESP8266-dat]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-04-25-17-34-11.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-04-25-17-34-11.png differ |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-05-12-14-23-11.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-05-12-14-23-11.png differ |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-05-16-13-31-40.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-05-16-13-31-40.png differ |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-05-16-13-32-31.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-05-16-13-32-31.png differ |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-05-16-13-33-12.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/2025-05-16-13-33-12.png differ |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/7CH.json
| ... | ... | @@ -0,0 +1,32 @@ |
| 1 | +{ |
|
| 2 | + "customised": "true", |
|
| 3 | + "serial_rx": -1, |
|
| 4 | + "serial_tx": -1, |
|
| 5 | + "radio_dio1": 4, |
|
| 6 | + "radio_miso": 12, |
|
| 7 | + "radio_mosi": 13, |
|
| 8 | + "radio_nss": 15, |
|
| 9 | + "radio_rst": 2, |
|
| 10 | + "radio_sck": 14, |
|
| 11 | + "power_min": 0, |
|
| 12 | + "power_high": 0, |
|
| 13 | + "power_max": 0, |
|
| 14 | + "power_default": 0, |
|
| 15 | + "power_control": 0, |
|
| 16 | + "power_values": [ |
|
| 17 | + 13 |
|
| 18 | + ], |
|
| 19 | + "led": 16, |
|
| 20 | + "pwm_outputs": [ |
|
| 21 | + 0, |
|
| 22 | + 1, |
|
| 23 | + 3, |
|
| 24 | + 9, |
|
| 25 | + 10, |
|
| 26 | + 5, |
|
| 27 | + 16 |
|
| 28 | + ], |
|
| 29 | + "vbat": 17, |
|
| 30 | + "vbat_offset": 12, |
|
| 31 | + "vbat_scale": 310 |
|
| 32 | +} |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/CRSF.json
| ... | ... | @@ -0,0 +1 @@ |
| 1 | +{"customised":"true","serial_rx":3,"serial_tx":1,"radio_dio1":4,"radio_miso":12,"radio_mosi":13,"radio_nss":15,"radio_rst":2,"radio_sck":14,"power_min":0,"power_high":0,"power_max":0,"power_default":0,"power_control":0,"power_values":[13],"led":16,"pwm_outputs":[-1],"vbat":17,"vbat_offset":12,"vbat_scale":310} |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-PWM-dat/ELRS-PWM-dat.md
| ... | ... | @@ -0,0 +1,73 @@ |
| 1 | + |
|
| 2 | +# ELRS-CHS-PWM-dat.md |
|
| 3 | + |
|
| 4 | + |
|
| 5 | + |
|
| 6 | + |
|
| 7 | + |
|
| 8 | +## Electrodragon 7CH PWM ELRS Receiver |
|
| 9 | + |
|
| 10 | + |
|
| 11 | +Electrodragon ELRS 2.4G Receiver, Seven-Channel PWM Receiver |
|
| 12 | + |
|
| 13 | +This receiver features independent PWM channel outputs, suitable for fixed-wing aircraft, cars, boats, and other models. It also supports CRSF output. The two output signals (PWM and CRSF) can be switched without re-flashing the firmware. |
|
| 14 | + |
|
| 15 | +Follow these steps to switch between PWM (6CH/7CH) and CRSF modes: |
|
| 16 | + |
|
| 17 | +**Accessing the Receiver's Wi-Fi Network:** |
|
| 18 | + |
|
| 19 | +1. **If connected to the high-frequency head (transmitter module):** Use the transmitter's LUA script menu to activate the receiver's Wi-Fi. |
|
| 20 | +2. **If not connected to the high-frequency head:** Power on the receiver and wait for one minute. The receiver will automatically enter Wi-Fi mode. |
|
| 21 | + |
|
| 22 | +**Connecting to the Receiver's Wi-Fi:** |
|
| 23 | + |
|
| 24 | +* Search for Wi-Fi networks on your computer or phone. |
|
| 25 | +* **Wi-Fi Hotspot Name (SSID):** `EXPRESSLRSRX` |
|
| 26 | +* **Connection Password (all lowercase):** `expresslrs` |
|
| 27 | + |
|
| 28 | +**Accessing the Configuration Page:** |
|
| 29 | + |
|
| 30 | +* Open a web browser and go to: `http://10.0.0.1/hardware.html` |
|
| 31 | + |
|
| 32 | +**Configuring the Receiver:** |
|
| 33 | + |
|
| 34 | +* This will take you to the ELRS hardware configuration page where you can import hardware configuration files. |
|
| 35 | +* **Caution:** Do not modify parameters yourself unless you fully understand their meaning. |
|
| 36 | +* Import the provided configuration file for either `PWM7CH` or `CRSF`. |
|
| 37 | +* Click the button at the bottom of the page and wait for the receiver to restart automatically. |
|
| 38 | + |
|
| 39 | + |
|
| 40 | + |
|
| 41 | +## custom PWM setup |
|
| 42 | + |
|
| 43 | + |
|
| 44 | + |
|
| 45 | + |
|
| 46 | + |
|
| 47 | + |
|
| 48 | +## setup for [[ELRS-HF-RF-module-dat]] |
|
| 49 | + |
|
| 50 | + |
|
| 51 | + |
|
| 52 | +## configuration file |
|
| 53 | + |
|
| 54 | +- [[7CH.json]] - [[CRSF.json]] |
|
| 55 | + |
|
| 56 | +the pwm channels |
|
| 57 | + |
|
| 58 | + "pwm_outputs": [ |
|
| 59 | + 0, |
|
| 60 | + 1, |
|
| 61 | + 3, |
|
| 62 | + 9, |
|
| 63 | + 10, |
|
| 64 | + 5, |
|
| 65 | + 16 |
|
| 66 | + ], |
|
| 67 | + |
|
| 68 | + |
|
| 69 | + |
|
| 70 | + |
|
| 71 | +## ref |
|
| 72 | + |
|
| 73 | +- [[ELRS-PWM]] - [[ELRS]] |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/2025-04-25-16-52-56.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/2025-04-25-16-52-56.png differ |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/2025-04-25-16-55-05.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/2025-04-25-16-55-05.png differ |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/2025-05-08-18-22-08.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/2025-05-08-18-22-08.png differ |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/2025-05-16-12-57-47.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/2025-05-16-12-57-47.png differ |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-RX-dat/ELRS-RX-dat.md
| ... | ... | @@ -0,0 +1,90 @@ |
| 1 | + |
|
| 2 | +# ELRS-RX-dat |
|
| 3 | + |
|
| 4 | + |
|
| 5 | +## T-anntena version |
|
| 6 | + |
|
| 7 | + |
|
| 8 | + |
|
| 9 | + |
|
| 10 | +- [[antenna-dat]] |
|
| 11 | + |
|
| 12 | +## SMD antenna version |
|
| 13 | + |
|
| 14 | +## info |
|
| 15 | + |
|
| 16 | +Nano2400-RX receiver with power amplifier (PA+LNA). |
|
| 17 | + |
|
| 18 | +Therefore, it has 100mW telemetry output and better sensitivity at longer distances. |
|
| 19 | + |
|
| 20 | +It uses an IPEX1 antenna connector. |
|
| 21 | + |
|
| 22 | +Paired with an external dipole T-antenna (customized by a professional factory, each antenna is tested with professional instruments to ensure quality, lightness, and durability). |
|
| 23 | + |
|
| 24 | +The CYCLONE series receivers are based on the open-source architecture and program of ExpressLRS. |
|
| 25 | + |
|
| 26 | +We have released 3 types of RX receiver modules. All use the [[ESP8285-dat]] [[MCU-dat]]. You can upgrade the firmware via [[WIFI-dat]], which is very user-friendly. |
|
| 27 | + |
|
| 28 | +## hotspot |
|
| 29 | + |
|
| 30 | +Typically, after powering the receiver and with the remote controller turned off, the ExpressLRS hotspot can be found after a default of 60 seconds. Connect to this hotspot using a computer or mobile phone. |
|
| 31 | + |
|
| 32 | +The password is "expresslrs", and then you can access 10.0.0.1 to upload the receiver firmware. |
|
| 33 | + |
|
| 34 | + |
|
| 35 | + |
|
| 36 | +## serial |
|
| 37 | + |
|
| 38 | +Runtime Options |
|
| 39 | + |
|
| 40 | +This form overrides the options provided when the firmware was flashed. These changes will persist across reboots, but will be reset when the firmware is reflashed. |
|
| 41 | + |
|
| 42 | +WiFi auto on" interval in seconds (leave blank to disable) == 60 |
|
| 43 | +UART baud == 420000 = 420K |
|
| 44 | + |
|
| 45 | + |
|
| 46 | +## Product Features |
|
| 47 | + |
|
| 48 | +- High refresh rate 100mW telemetry output; |
|
| 49 | +- Supports convenient and fast firmware flashing via WIFI connection; |
|
| 50 | +- Firmware Version: 3.3.0 [BETAFPVLite2400RX] |
|
| 51 | +- Equipped with a power amplifier (PA+LNA), providing 100mW telemetry output and better response speed; |
|
| 52 | +- Theoretically compatible with most ELRS 2.4G transmitter modules on the market (requires firmware version 2.0 or above). |
|
| 53 | + |
|
| 54 | + |
|
| 55 | + |
|
| 56 | + |
|
| 57 | + |
|
| 58 | +## supported modules |
|
| 59 | + |
|
| 60 | + |
|
| 61 | +## FAQ |
|
| 62 | + |
|
| 63 | +1. **Q: Can this receiver be bound to a XXX brand's high-frequency head (transmitter module)?** |
|
| 64 | + A: The ELRS project is open source. Therefore, as long as the high-frequency head uses the ELRS protocol, regardless of the brand, it can be bound. However, three conditions must be met: |
|
| 65 | + * The frequency must be the same, either both 2.4G or both 915MHz. |
|
| 66 | + * The firmware version must be consistent. For example, if the high-frequency head is flashed with firmware version 2.5.0, the receiver must also be flashed with firmware version 2.5.0. |
|
| 67 | + * Either both have no binding phrase, or both have the same binding phrase set. |
|
| 68 | + |
|
| 69 | +2. **Q: How do I enter binding mode?** |
|
| 70 | + A: After soldering the receiver, quickly power cycle the aircraft three times. That is: power on then immediately power off, power on then immediately power off, power on and leave it on. The interval between power cycles should be within 1.5 seconds. If done correctly, the receiver's LED will flash rapidly twice in a cycle, indicating it is in binding mode. At this time, press the bind button in the remote controller's script. If binding is successful, the receiver's LED will turn solid. |
|
| 71 | + |
|
| 72 | +3. **Q: I'm using my receiver for the first time, why can't I enter binding mode? The light stays solid. What's wrong?** |
|
| 73 | + A: We have encountered similar issues in after-sales support. We found that some flight controllers have abnormal TX/RX ports, causing the receiver to enter bootloader/flash mode upon power-up. In this case, simply changing to a different TX/RX port on the flight controller can solve the problem. |
|
| 74 | + |
|
| 75 | +4. **Q: Why is my receiver's light always flashing rapidly?** |
|
| 76 | + A: If you power on the receiver and it does not enter binding mode, or if it's already bound but the remote controller is not turned on, the receiver will enter WiFi flashing mode after 60 seconds without a signal, and the indicator light will flash rapidly. |
|
| 77 | + |
|
| 78 | +5. **Q: How do I enter WiFi flashing mode to flash firmware to the receiver?** |
|
| 79 | + A: Same as the answer above. Power on the receiver and leave it. It will automatically enter WiFi flashing mode in about 60 seconds, and the light will flash rapidly. |
|
| 80 | + |
|
| 81 | + |
|
| 82 | +## Versions |
|
| 83 | + |
|
| 84 | +- Firmware Rev. 3.5.2 (7ac5f4) |
|
| 85 | + |
|
| 86 | + |
|
| 87 | + |
|
| 88 | +## ref |
|
| 89 | + |
|
| 90 | +- [[ELRS-dat]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-TX-dat/ELRS-TX-dat.md
| ... | ... | @@ -0,0 +1,14 @@ |
| 1 | + |
|
| 2 | +# ELRS-TX-dat |
|
| 3 | + |
|
| 4 | +- [[radiomaster-dat]] |
|
| 5 | + |
|
| 6 | +radiomaster guide |
|
| 7 | + |
|
| 8 | +https://www.expresslrs.org/quick-start/transmitters/rm-ranger/ |
|
| 9 | + |
|
| 10 | + |
|
| 11 | + |
|
| 12 | +## ref |
|
| 13 | + |
|
| 14 | +- [[ELRS-dat]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-dat.md
| ... | ... | @@ -0,0 +1,170 @@ |
| 1 | + |
|
| 2 | +# ELRS-dat |
|
| 3 | + |
|
| 4 | +Info - [[ELRS-frequency-dat]] - [[ELRS-faq-dat]] |
|
| 5 | + |
|
| 6 | + |
|
| 7 | +## ELRS-link |
|
| 8 | + |
|
| 9 | +ELRS-remote-console-tx |
|
| 10 | + |
|
| 11 | +- BETAFPV literadio 3 |
|
| 12 | +- BETAFPV literadio 2 |
|
| 13 | + |
|
| 14 | +- [[edge-tx-dat]] - [[radiomaster-dat]] - [[lightradio-dat]] |
|
| 15 | + |
|
| 16 | +- [[ELRS-RX-dat]] - [[SX1276-dat]] - [[ESP8285-dat]] - [[ESP32-dat]] - [[SX1281-dat]] - [[SX1208-dat]] |
|
| 17 | + |
|
| 18 | +protocol output - - [[CRSF-dat]] |
|
| 19 | + |
|
| 20 | +- [[CC2500-dat]] |
|
| 21 | + |
|
| 22 | +- [[ELRS-TX-dat]] - [[ELRS-915M-dat]] - [[ELRS-PWM-dat]] - [[ELRS-2.4Ghz-dat]] |
|
| 23 | + |
|
| 24 | +- [[ELRS]] |
|
| 25 | + |
|
| 26 | +## resources |
|
| 27 | + |
|
| 28 | +https://github.com/ExpressLRS/ExpressLRS |
|
| 29 | + |
|
| 30 | +https://www.expresslrs.org/quick-start/getting-started/ |
|
| 31 | + |
|
| 32 | +[ExpressLRS-Configurator-releases](https://github.com/ExpressLRS/ExpressLRS-Configurator/releases) |
|
| 33 | + |
|
| 34 | + |
|
| 35 | + |
|
| 36 | +## **ExpressLRS (ELRS) 2.4GHz Standard Explained** |
|
| 37 | + |
|
| 38 | +**ExpressLRS (ELRS) 2.4GHz** is an open-source **long-range, low-latency radio control link** developed for FPV drones and RC applications. It offers **high performance, ultra-fast response times, and robust signal reliability** compared to traditional RC protocols like FrSky, Crossfire, and Ghost. |
|
| 39 | + |
|
| 40 | +--- |
|
| 41 | + |
|
| 42 | +### **🔹 Key Features of ELRS 2.4GHz** |
|
| 43 | +- **Ultra-Low Latency** (~5ms in high-speed mode). |
|
| 44 | +- **Long-Range Performance** (Up to **30km+** with proper setup). |
|
| 45 | +- **High Packet Rate (Up to 1000Hz)** for **smooth & responsive controls**. |
|
| 46 | +- **Open-Source & Customizable** (Community-driven development). |
|
| 47 | +- **Affordable Hardware** (Compared to Crossfire or Ghost). |
|
| 48 | +- **Wide Compatibility** (Supported on many **radio transmitters & receivers**). |
|
| 49 | + |
|
| 50 | +--- |
|
| 51 | + |
|
| 52 | +### **🔹 ELRS 2.4GHz vs. Other RC Links** |
|
| 53 | +| Feature | ELRS 2.4GHz | TBS Crossfire | Ghost 2.4GHz | FrSky R9M | |
|
| 54 | +| --------------- | ------------ | ------------- | ------------ | ----------- | |
|
| 55 | +| **Frequency** | 2.4GHz | 900MHz | 2.4GHz | 900MHz | |
|
| 56 | +| **Max Range** | ~30km+ | ~50km+ | ~15km | ~10-20km | |
|
| 57 | +| **Latency** | 5-7ms | 15-50ms | ~4ms | ~20ms | |
|
| 58 | +| **Packet Rate** | Up to 1000Hz | 50-150Hz | 500Hz | ~100Hz | |
|
| 59 | +| **Open Source** | ✅ Yes | ❌ No | ❌ No | ❌ No | |
|
| 60 | +| **Cost** | 💰 Affordable | 💰💰 Expensive | 💰💰 Expensive | 💰 Mid-Range | |
|
| 61 | + |
|
| 62 | +--- |
|
| 63 | + |
|
| 64 | +### **🔹 ELRS 2.4GHz Modes & Performance** |
|
| 65 | +| Mode | Packet Rate | Latency | Range | |
|
| 66 | +| --------- | ----------- | ------- | --------------------- | |
|
| 67 | +| **500Hz** | 500Hz | ~5ms | Short (~3km) | |
|
| 68 | +| **250Hz** | 250Hz | ~7ms | Mid (~10km) | |
|
| 69 | +| **150Hz** | 150Hz | ~10ms | Long (~20km) | |
|
| 70 | +| **50Hz** | 50Hz | ~20ms | Extreme Long (~30km+) | |
|
| 71 | + |
|
| 72 | +🔹 **Higher packet rate = Lower latency, but reduced range** |
|
| 73 | +🔹 **Lower packet rate = Higher range, but increased latency** |
|
| 74 | + |
|
| 75 | +--- |
|
| 76 | + |
|
| 77 | +### **🔹 Recommended ExpressLRS 2.4GHz Hardware** |
|
| 78 | +#### **🛠️ Transmitters (TX)** |
|
| 79 | +- **RadioMaster Zorro ELRS 2.4GHz** |
|
| 80 | +- **Jumper T20S (Built-in ELRS)** |
|
| 81 | +- **Happymodel ES24TX Pro (External ELRS Module)** |
|
| 82 | +- **BetaFPV ELRS Micro TX Module** |
|
| 83 | + |
|
| 84 | +#### **📡 Receivers (RX)** |
|
| 85 | +- **Happymodel EP2 (Tiny, best for micro quads)** |
|
| 86 | +- **BetaFPV ELRS 2.4GHz Nano RX** |
|
| 87 | +- **Radiomaster RP1 / RP2 RX (Great range & reliability)** |
|
| 88 | + |
|
| 89 | +--- |
|
| 90 | + |
|
| 91 | +### **🔹 Why Choose ELRS 2.4GHz?** |
|
| 92 | +✅ **Best for FPV Racing & Freestyle** → **Low latency & fast response** |
|
| 93 | +✅ **Perfect for Long-Range FPV** → **Good range at lower packet rates** |
|
| 94 | +✅ **Affordable & Open-Source** → **Cheaper than Crossfire & Ghost** |
|
| 95 | + |
|
| 96 | +🚀 **If you need ultra-low latency for FPV racing or long-range performance at an affordable price, ExpressLRS 2.4GHz is the best choice!** 🔥 |
|
| 97 | + |
|
| 98 | + |
|
| 99 | +## 2.4hz compare to LORA 915mhz |
|
| 100 | + |
|
| 101 | +| Feature | DJI NC3 (OcuSync 2.0) | ELRS 2.4GHz (100mW) | ELRS 915MHz (100mW, SX1276) | |
|
| 102 | +|----------------------------|---------------------------|------------------------------|-------------------------------| |
|
| 103 | +| Protocol Type | Proprietary digital (DJI) | Open-source LoRa/FLRC | Open-source LoRa | |
|
| 104 | +| Frequency Band | 2.4GHz + 5.8GHz | 2.4GHz | 915MHz | |
|
| 105 | +| Max Packet Rate | N/A (digital control/video)| Up to 500Hz | Up to 50Hz | |
|
| 106 | +| Latency (best-case) | ~120 ms (control + video) | ~2.5 ms (500Hz) | ~20 ms (50Hz) | |
|
| 107 | +| Typical Latency | ~120–150 ms | ~6–13 ms | ~22–30 ms | |
|
| 108 | +| Max Range (LOS, FCC) | ~10 km | ~2 km | ~10 km | |
|
| 109 | +| Penetration (Obstacles) | Moderate | Moderate | Strong | |
|
| 110 | +| Interference Resistance | High (hopping + digital) | Moderate | Strong | |
|
| 111 | +| Video Support | Yes (integrated) | No | No | |
|
| 112 | +| Use Case | DJI drones (Mini, Air) | FPV racing, freestyle | Long-range FPV, endurance | |
|
| 113 | +| Antenna Size | Small | Small | Larger | |
|
| 114 | +| Custom Flight Controllers | Not supported | Fully supported | Fully supported | |
|
| 115 | + |
|
| 116 | + |
|
| 117 | +❌ No — ELRS does not support 5.8GHz (as of now). |
|
| 118 | + |
|
| 119 | +- [[LORA-dat]] - [[RF-2.4ghz-dat]] |
|
| 120 | + |
|
| 121 | +- [[5.8Ghz-dat]] |
|
| 122 | + |
|
| 123 | + |
|
| 124 | +## WebUI Configurator |
|
| 125 | + |
|
| 126 | +[ExpressLRS Configurator](https://github.com/ExpressLRS/ExpressLRS-Configurator/releases/) |
|
| 127 | + |
|
| 128 | +[github](https://github.com/ExpressLRS/ExpressLRS) |
|
| 129 | + |
|
| 130 | +### Via "ExpressLRS RX" Access Point |
|
| 131 | + |
|
| 132 | + |
|
| 133 | + |
|
| 134 | +Load the Web UI on your browser using these addresses: |
|
| 135 | + |
|
| 136 | +http://10.0.0.1/ - If you have connected to the ExpressLRS RX Access Point |
|
| 137 | + |
|
| 138 | +### Via button press |
|
| 139 | + |
|
| 140 | + |
|
| 141 | + |
|
| 142 | + |
|
| 143 | +## Code |
|
| 144 | + |
|
| 145 | +| Method | Arduino-Friendly? | Notes | |
|
| 146 | +|---------------|-------------------|--------------------------------------------| |
|
| 147 | +| PWM Output | ✅ Yes | Easiest to use. Limited channels. | |
|
| 148 | +| SBUS/PPM | ✅ Yes (with lib) | Good middle ground. | |
|
| 149 | +| CRSF over UART| ⚠️ Difficult | Only feasible on fast boards (ESP32/STM32).| |
|
| 150 | + |
|
| 151 | + |
|
| 152 | +### ✅ Use PWM output from ELRS receiver for arduino |
|
| 153 | + |
|
| 154 | +Some ELRS receivers support PWM output, which can be read with Arduino pulseIn() or interrupts. |
|
| 155 | + |
|
| 156 | +This is much easier but limits you to a few channels (e.g., 4–8). |
|
| 157 | + |
|
| 158 | +### ✅ Use CRSF over UART (advanced) |
|
| 159 | +If you use a faster board like Teensy, ESP32, or STM32: |
|
| 160 | + |
|
| 161 | +These can handle high baud rates and may be able to parse CRSF messages. |
|
| 162 | + |
|
| 163 | +You’d need to write or port a CRSF parser for Arduino/Teensy/ESP32. |
|
| 164 | + |
|
| 165 | + |
|
| 166 | +## ref |
|
| 167 | + |
|
| 168 | +- [[FPV-dat]] |
|
| 169 | + |
|
| 170 | +- [[ELRS]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-faq-dat.md
| ... | ... | @@ -0,0 +1,26 @@ |
| 1 | + |
|
| 2 | +# ELRS-faq-dat |
|
| 3 | + |
|
| 4 | +## Frequently Asked Questions (FAQ) |
|
| 5 | + |
|
| 6 | +**Q1: Can this receiver bind with a transmitter module (TX module) from brand XXX?** |
|
| 7 | +**A:** The ELRS project is open-source. Therefore, as long as the TX module uses the ELRS protocol, regardless of the brand, they can bind with each other, provided three conditions are met: |
|
| 8 | + 1. **Same Frequency:** Both must operate on the same frequency band (e.g., both 2.4GHz or both 915MHz). |
|
| 9 | + 2. **Matching Firmware Version:** The firmware versions must be identical. For example, if the TX module is flashed with firmware version 2.5.0, the receiver must also be flashed with version 2.5.0. |
|
| 10 | + 3. **Binding Phrase:** Either both devices have no binding phrase set, or they both have the exact same binding phrase configured. |
|
| 11 | + |
|
| 12 | +**Q2: How do I enter binding mode?** |
|
| 13 | +**A:** After soldering the receiver, quickly power cycle the aircraft three times: power on then immediately power off, power on then immediately power off, power on and leave it on. Each power cycle interval should be less than 1.5 seconds. If performed correctly, the receiver's LED will flash quickly twice in a repeating pattern, indicating it is in binding mode. Then, use the bind function/button on your remote controller (often found in the ELRS Lua script). Once binding is successful, the receiver's LED will turn solid. |
|
| 14 | + |
|
| 15 | +**Q3: The first time I used my receiver, it wouldn't enter binding mode, and the LED stayed solid. Why?** |
|
| 16 | +**A:** We've encountered this issue in support cases. It's often caused by an abnormality on the flight controller's TX/RX UART port, which forces the receiver into bootloader/firmware flashing mode upon power-up. Switching the receiver connection to a different, functional TX/RX UART port on the flight controller usually resolves this. |
|
| 17 | + |
|
| 18 | +**Q4: Why is my receiver's LED flashing quickly and continuously?** |
|
| 19 | +**A:** If the receiver is powered on but doesn't enter binding mode (or if it's already bound but the remote controller is off), it will automatically enter Wi-Fi firmware update mode after approximately 60 seconds of not receiving a signal. The fast flashing indicates Wi-Fi mode is active. |
|
| 20 | + |
|
| 21 | +**Q5: How do I enter Wi-Fi mode to update the receiver's firmware?** |
|
| 22 | +**A:** As mentioned above, simply power on the receiver and wait. If it doesn't connect to a transmitter within about 60 seconds, it will automatically enter Wi-Fi update mode, indicated by the rapidly flashing LED. |
|
| 23 | + |
|
| 24 | + |
|
| 25 | +## ref |
|
| 26 | + |
app-dat/RC-dat/RC-signal-dat/ELRS-dat/ELRS-frequency-dat.md
| ... | ... | @@ -0,0 +1,20 @@ |
| 1 | + |
|
| 2 | +# ELRS-frequency-dat.md |
|
| 3 | + |
|
| 4 | +| Feature | ELRS 915MHz (LoRa) | ELRS 2.4GHz (LoRa/FLRC) | |
|
| 5 | +|---------------------|-----------------------------|------------------------------| |
|
| 6 | +| Frequency Band | 915 MHz | 2.4 GHz | |
|
| 7 | +| Range (LOS, 100mW) | ✅ 5–10+ km | ⚠️ 1–2 km | |
|
| 8 | +| Penetration | ✅ Strong (trees, buildings) | ⚠️ Moderate | |
|
| 9 | +| Latency | ❌ ~20–30 ms | ✅ ~2.5–13 ms | |
|
| 10 | +| Max Packet Rate | ❌ ~50Hz | ✅ Up to 500Hz | |
|
| 11 | +| Antenna Size | ❌ Large | ✅ Small | |
|
| 12 | +| Interference Avoidance | ✅ Less crowded band | ⚠️ More Wi-Fi/Bluetooth noise | |
|
| 13 | +| Use Case | Long-range, endurance | Freestyle, racing | |
|
| 14 | +| Power Efficiency | ✅ High (lower data rate) | ✅ High (LoRa + FLRC modes) | |
|
| 15 | +| Hardware Support | Older SX1276 modules | Newer SX1280 + ESP modules | |
|
| 16 | + |
|
| 17 | + |
|
| 18 | +## ref |
|
| 19 | + |
|
| 20 | +- [[ELRS-dat]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-signal-dat/FrSky-dat/FrSky-dat.md
| ... | ... | @@ -0,0 +1,4 @@ |
| 1 | + |
|
| 2 | +# FrSky-dat |
|
| 3 | + |
|
| 4 | +- [[CC2500-dat]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-signal-dat/PPM-dat/PPM-dat.md
| ... | ... | @@ -0,0 +1,29 @@ |
| 1 | + |
|
| 2 | +# PPM-dat |
|
| 3 | + |
|
| 4 | +- [[Wfly-dat]] - [[RC-code-dat]] |
|
| 5 | + |
|
| 6 | +- [[PWM-dat]] |
|
| 7 | + |
|
| 8 | +PPM (Pulse Position Modulation) is a type of analog signal used in radio control (RC) systems to transmit multiple channels of control information (like throttle, steering, elevator, etc.) over a single wire. |
|
| 9 | + |
|
| 10 | +In simple terms: |
|
| 11 | + |
|
| 12 | +- It sends a series of pulses. |
|
| 13 | +- The position (or timing) of each pulse within a repeating frame represents the value for a specific channel. |
|
| 14 | +- A longer "sync" pulse marks the end of one frame and the beginning of the next. |
|
| 15 | + |
|
| 16 | +So, instead of needing a separate wire for each control channel, PPM combines them into one sequential signal. |
|
| 17 | + |
|
| 18 | +## demo video |
|
| 19 | + |
|
| 20 | +[RC #PPM PWM send and receive at Arduino, note the four channels color](https://youtube.com/shorts/BDdSFPlh9KE?si=n1oF2KUIMqEeH1QW) |
|
| 21 | + |
|
| 22 | +Internal control by [[SDR1064-dat]] |
|
| 23 | + |
|
| 24 | +[Wfly #PPM console control toy rover](https://t.me/electrodragon3/369) |
|
| 25 | + |
|
| 26 | + |
|
| 27 | +## ref |
|
| 28 | + |
|
| 29 | +- [[RC-protocols-dat]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-signal-dat/RC-signal-dat.md
| ... | ... | @@ -0,0 +1,109 @@ |
| 1 | + |
|
| 2 | +# RC-signal-dat.md |
|
| 3 | + |
|
| 4 | +## RC-signals |
|
| 5 | + |
|
| 6 | +- [[WIFI-dat]] |
|
| 7 | + |
|
| 8 | + |
|
| 9 | +### Proprietary modulation schemes(专有调制方案) |
|
| 10 | + |
|
| 11 | +Toy RC systems may use other modulation methods like [[DSSS-dat]], [[FHSS-dat]], or non-standard GFSK configurations. |
|
| 12 | + |
|
| 13 | +- [[GFSK-dat]] = [[NRF24L01-dat]] |
|
| 14 | + |
|
| 15 | +- [[SBUS-dat]] - [[PPM-dat]] - [[PWM-dat]] |
|
| 16 | + |
|
| 17 | +Frequency Hopping: |
|
| 18 | + |
|
| 19 | +Many toy-grade RC transmitters hop between frequencies. |
|
| 20 | + |
|
| 21 | +#### DSSS (Direct Sequence Spread Spectrum) |
|
| 22 | + |
|
| 23 | +DSSS (Direct Sequence Spread Spectrum) is a method of transmitting radio signals by spreading the signal over a wider frequency band than the original data rate requires. |
|
| 24 | + |
|
| 25 | +**How DSSS Works:** |
|
| 26 | + |
|
| 27 | +The original data signal is multiplied by a "chipping code", a sequence of faster bits called "chips." |
|
| 28 | + |
|
| 29 | +This process spreads the energy of the signal over a wider bandwidth. |
|
| 30 | + |
|
| 31 | +The receiver, knowing the same chipping code, can reconstruct the original data. |
|
| 32 | + |
|
| 33 | +**Key Features:** |
|
| 34 | + |
|
| 35 | +Spreads signal across wide frequency band (increases resistance to interference and jamming). |
|
| 36 | + |
|
| 37 | +More secure and harder to intercept. |
|
| 38 | + |
|
| 39 | +Improves signal robustness in noisy environments. |
|
| 40 | + |
|
| 41 | +**DSSS in Real-World Use:** |
|
| 42 | + |
|
| 43 | +Used in older Wi-Fi standards (like 802.11b). |
|
| 44 | + |
|
| 45 | +Also found in some military and commercial RF systems. |
|
| 46 | + |
|
| 47 | +Some toy-grade 2.4GHz systems may use simple DSSS-like techniques to reduce cost and avoid interference. |
|
| 48 | + |
|
| 49 | +**Comparison with FHSS:** |
|
| 50 | + |
|
| 51 | +DSSS spreads signal continuously across a wide band. |
|
| 52 | + |
|
| 53 | +FHSS (Frequency Hopping Spread Spectrum) hops between frequencies in a sequence. |
|
| 54 | + |
|
| 55 | +### Compare with WIFI |
|
| 56 | + |
|
| 57 | +| Feature | Wi-Fi (ESP8266) | DSSS RC (Toy/Hobby) | |
|
| 58 | +| ----------- | --------------------------- | ------------------------------ | |
|
| 59 | +| Range | 30–100m typical | 20m (toy) to >1km (hobby) | |
|
| 60 | +| Latency | Medium | Very low | |
|
| 61 | +| Robustness | Lower (affected by routers) | High (designed for RF control) | |
|
| 62 | +| Ease of Use | Easy (phone control) | Needs RC Tx/Rx | |
|
| 63 | + |
|
| 64 | + |
|
| 65 | +## RC-protocols |
|
| 66 | + |
|
| 67 | +- [[edge-tx-dat]] |
|
| 68 | + |
|
| 69 | +- [[CRSF-dat]] |
|
| 70 | + |
|
| 71 | +- [[FrSky-dat]] == [[CC2500-dat]] |
|
| 72 | + |
|
| 73 | +- [[ELRS-dat]] - [[ELRS-RX-dat]] - [[ELRS-TX-dat]] |
|
| 74 | + |
|
| 75 | + |
|
| 76 | +## SDR |
|
| 77 | + |
|
| 78 | +Reverse engineering with a software-defined radio (SDR) (like RTL-SDR or HackRF). |
|
| 79 | + |
|
| 80 | + You could record the RF signal and analyze it to reverse engineer the protocol. |
|
| 81 | + |
|
| 82 | + This is complex and requires RF/digital signal processing (DSP) knowledge. |
|
| 83 | + |
|
| 84 | +Sniffing with NRF24L01+ in promiscuous mode (some hacks exist, but limited). |
|
| 85 | + |
|
| 86 | + Might capture packets from other NRF24L01 devices only. |
|
| 87 | + |
|
| 88 | + Won’t work for general 2.4GHz devices. |
|
| 89 | + |
|
| 90 | +- [[RTL-SDR-dat]] - [[hackrf-dat]] |
|
| 91 | + |
|
| 92 | + |
|
| 93 | +## Step-by-Step: How to Sniff 2.4GHz RC Signal |
|
| 94 | + |
|
| 95 | +1. Gather Tools |
|
| 96 | +2. |
|
| 97 | +RTL-SDR dongle (most only go up to ~1.7 GHz → Not enough for 2.4GHz) |
|
| 98 | + |
|
| 99 | +→ You need: |
|
| 100 | + |
|
| 101 | +- A HackRF One (recommended – covers 1 MHz to 6 GHz) |
|
| 102 | +- OR a CC2500 module (common 2.4GHz transceiver used in RC gear) |
|
| 103 | +- OR an ESP32 with promiscuous mode (works only for Wi-Fi packets) |
|
| 104 | + |
|
| 105 | + |
|
| 106 | + |
|
| 107 | +## ref |
|
| 108 | + |
|
| 109 | +- [[RC-dat]] - [[logic-analyzer-dat]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-signal-dat/RTL-SDR-dat/RTL-SDR-dat.md
| ... | ... | @@ -0,0 +1,52 @@ |
| 1 | + |
|
| 2 | +# RTL-SDR-dat |
|
| 3 | + |
|
| 4 | +1. What You Need |
|
| 5 | + |
|
| 6 | +An RTL-SDR USB dongle (e.g., RTL2832U with R820T2) |
|
| 7 | + |
|
| 8 | +A Windows, Linux, macOS, or Android device |
|
| 9 | + |
|
| 10 | +An antenna (usually included) |
|
| 11 | + |
|
| 12 | +Software (like SDR# or Universal Radio Hacker) |
|
| 13 | + |
|
| 14 | +SDRSharp |
|
| 15 | + |
|
| 16 | + |
|
| 17 | +4. Signal Analysis (for reverse engineering) |
|
| 18 | + |
|
| 19 | +Use Universal Radio Hacker (URH): |
|
| 20 | + |
|
| 21 | +Record raw signals from 2.4GHz toy remote (if within range) |
|
| 22 | + |
|
| 23 | +Analyze bit patterns, timing, modulation |
|
| 24 | + |
|
| 25 | +Use Audacity to visualize audio-like modulated signals. |
|
| 26 | + |
|
| 27 | +5. On Android (Optional) |
|
| 28 | + |
|
| 29 | +Use SDR Touch with an OTG cable and RTL-SDR dongle. |
|
| 30 | + |
|
| 31 | +Works well for listening to FM, air band, etc. |
|
| 32 | + |
|
| 33 | +What You Can Do With RTL-SDR |
|
| 34 | + |
|
| 35 | +- Listen to FM radio, air traffic, police, weather stations |
|
| 36 | +- Track airplanes (ADS-B) |
|
| 37 | +- Capture RF from garage remotes, key fobs, toy RC |
|
| 38 | +- Reverse engineer simple RF protocols |
|
| 39 | + |
|
| 40 | + |
|
| 41 | + |
|
| 42 | +## Alternative: Use an SDR to Sniff Raw RF |
|
| 43 | + |
|
| 44 | +To analyze the actual RF signal, you need a Software Defined Radio (SDR) like: |
|
| 45 | + |
|
| 46 | +HackRF, LimeSDR, or USRP |
|
| 47 | + |
|
| 48 | +Record the 2.4GHz spectrum |
|
| 49 | + |
|
| 50 | +Analyze bursts from the remote |
|
| 51 | + |
|
| 52 | +Use Universal Radio Hacker (URH) or GNU Radio to decode the signal |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-signal-dat/SBUS-dat/SBUS-dat.md
| ... | ... | @@ -0,0 +1,75 @@ |
| 1 | + |
|
| 2 | +# SBUS-dat |
|
| 3 | + |
|
| 4 | +- [[futaba-dat]] |
|
| 5 | + |
|
| 6 | +## 📡 What is SBUS? — Simple Explanation |
|
| 7 | + |
|
| 8 | +**SBUS (Serial Bus)** is a digital protocol used in RC systems to send multiple control signals (channels) over a single wire. |
|
| 9 | + |
|
| 10 | +--- |
|
| 11 | + |
|
| 12 | +### 🧩 Key Features |
|
| 13 | + |
|
| 14 | +- 🔢 **Up to 16 channels** in one signal |
|
| 15 | +- 💬 **Digital serial protocol** |
|
| 16 | +- 📦 Sends data in **serial frames** |
|
| 17 | +- ⏱️ **100,000 baud**, **inverted UART** |
|
| 18 | +- ↪️ Invented by **Futaba**, widely used (FrSky, Radiolink, etc.) |
|
| 19 | +- 🧠 Needs **inversion** to be read by normal UART (hardware or software) |
|
| 20 | + |
|
| 21 | +--- |
|
| 22 | + |
|
| 23 | +### 🧱 Simple Analogy |
|
| 24 | + |
|
| 25 | +> SBUS is like 16 people taking turns speaking very fast on one microphone. |
|
| 26 | +> Each frame contains all channel values packed tightly together. |
|
| 27 | + |
|
| 28 | +--- |
|
| 29 | + |
|
| 30 | +### 🧪 Data Frame Structure |
|
| 31 | + |
|
| 32 | +Each SBUS frame is 25 bytes: |
|
| 33 | + |
|
| 34 | +| 1 byte | 22 bytes | 1 byte | 1 byte | |
|
| 35 | +| ------ | ----------- | ------ | ------ | |
|
| 36 | +| Header | 16 channels | Flags | End | |
|
| 37 | + |
|
| 38 | + |
|
| 39 | + |
|
| 40 | +- **Header**: 0x0F |
|
| 41 | +- **End**: 0x00 |
|
| 42 | +- Sent **every ~9ms** (111Hz refresh rate) |
|
| 43 | + |
|
| 44 | +--- |
|
| 45 | + |
|
| 46 | +### 🔌 Common Use Cases |
|
| 47 | + |
|
| 48 | +- RC Receiver → Flight Controller (e.g., FrSky RX to Betaflight FC) |
|
| 49 | +- RC Receiver → Microcontroller (Arduino, ESP32) |
|
| 50 | +- RC → Servo controller boards (if SBUS supported) |
|
| 51 | + |
|
| 52 | +--- |
|
| 53 | + |
|
| 54 | +### ⚖️ SBUS vs PWM vs PPM |
|
| 55 | + |
|
| 56 | +| Feature | SBUS | PWM | PPM | |
|
| 57 | +|---------------|-------------|---------------|---------------| |
|
| 58 | +| Channels | 16 | 1 per wire | 8 (typically) | |
|
| 59 | +| Wires needed | 1 | 1 per channel | 1 | |
|
| 60 | +| Type | Digital | Analog pulse | Analog pulse | |
|
| 61 | +| Speed | Very fast | Slow | Medium | |
|
| 62 | +| Latency | Very low | High | Medium | |
|
| 63 | + |
|
| 64 | +--- |
|
| 65 | + |
|
| 66 | +### 🧰 Tip for Developers |
|
| 67 | + |
|
| 68 | +To read SBUS using a microcontroller: |
|
| 69 | +- Use **UART** at **100000 baud**, **8E2**, **inverted signal** |
|
| 70 | +- Some MCUs (like ESP32) support inversion natively |
|
| 71 | +- Otherwise, use an **inverter circuit** or a software decoder |
|
| 72 | + |
|
| 73 | +## ref |
|
| 74 | + |
|
| 75 | +- [[network-dat]] |
app-dat/RC-dat/RC-signal-dat/edge-tx-dat/edge-tx-dat.md
| ... | ... | @@ -0,0 +1,4 @@ |
| 1 | + |
|
| 2 | +# edge-tx-dat |
|
| 3 | + |
|
| 4 | +https://github.com/EdgeTX/edgetx |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-supplier-dat/RC-supplier-dat.md
| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | + |
|
| 2 | +# RC-supplier-dat.md |
|
| 3 | + |
app-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-14-45-14.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-14-45-14.png differ |
app-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-14-51-22.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-14-51-22.png differ |
app-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-14-53-48.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-14-53-48.png differ |
app-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-14-58-58.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-14-58-58.png differ |
app-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-15-03-29.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-supplier-dat/WFLY-dat/2025-05-05-15-03-29.png differ |
app-dat/RC-dat/RC-supplier-dat/WFLY-dat/WFLY-WFT06X_Mannual.pdf
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-supplier-dat/WFLY-dat/WFLY-WFT06X_Mannual.pdf differ |
app-dat/RC-dat/RC-supplier-dat/WFLY-dat/WFLY-dat.md
| ... | ... | @@ -0,0 +1,10 @@ |
| 1 | + |
|
| 2 | +# WFLY-dat.md |
|
| 3 | + |
|
| 4 | +- [[WFT06x-dat]] - [[WFR06S-dat]] |
|
| 5 | + |
|
| 6 | + |
|
| 7 | + |
|
| 8 | +## ref |
|
| 9 | + |
|
| 10 | +- [[PPM-dat]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-supplier-dat/WFLY-dat/WFR06S-dat.md
| ... | ... | @@ -0,0 +1,14 @@ |
| 1 | + |
|
| 2 | +# WFR06S-dat.md |
|
| 3 | + |
|
| 4 | + |
|
| 5 | + |
|
| 6 | + |
|
| 7 | + |
|
| 8 | +## New type of WFLY receiver |
|
| 9 | + |
|
| 10 | + |
|
| 11 | +- A. 跳频速度高,采用扩跳频系统(FHSS&DSSS):不但采用了DSSS技术而且在DSSS技术基础上可以进行大约每4毫秒(ms)一次的跳频。 |
|
| 12 | +- B. 接收机输出给舵机的PWM信号稳定度高足以匹配精密数码舱机:可用示波器观察到纳秒级(nS)的细节,而其他一些牌子的接收机输出的PWM信号用示波器在us级别观察就不稳定了 |
|
| 13 | +- C. 44096数据不仅分辨率提升,反应速度也大幅提升(配合9S或8S控) |
|
| 14 | +- D. 接收机开机的时候自动识别PPM,PCMS,4096PCMS三种传输模式日采用可跳频的DSSS,可靠性高。数十台设备同时工作而互无影响。 |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-supplier-dat/WFLY-dat/WFT06X-dat.md
| ... | ... | @@ -0,0 +1,129 @@ |
| 1 | +# WFLY-dat |
|
| 2 | + |
|
| 3 | +- [[PPM-dat]] |
|
| 4 | + |
|
| 5 | + |
|
| 6 | + |
|
| 7 | + |
|
| 8 | + |
|
| 9 | +- the manual == [[WFLY-WFT06X_Mannual.pdf]] |
|
| 10 | +- [fccd.io manual link](https://fccid.io/TZVWFT06XWFT08S/User-Manual/User-Manual-1-1119279.pdf) |
|
| 11 | + |
|
| 12 | +## Info |
|
| 13 | + |
|
| 14 | +- WFT06X-A: 6 channels airplane,mixfunction,D/R,HDE helicopter. |
|
| 15 | +- WFT06X-B: 4 channesl airplane, mix function,D/R, HDE helicopter. |
|
| 16 | +- WFT06X-C: 6 channels CCPMhelicopter,airplane. |
|
| 17 | + |
|
| 18 | + |
|
| 19 | +## Models |
|
| 20 | + |
|
| 21 | + |
|
| 22 | + |
|
| 23 | +- [[airplane-dat]] |
|
| 24 | + |
|
| 25 | + |
|
| 26 | +## toggle switches |
|
| 27 | + |
|
| 28 | + |
|
| 29 | + |
|
| 30 | + |
|
| 31 | +| Switch | State | | Up | Down | |
|
| 32 | +| :---------- | :--------- | --------------------------- | :--------------------------------- | :--------------------------------- | |
|
| 33 | +| A | Helicopter | Ch3 to Ch4 mixture. (note1) | Enables | Disables | |
|
| 34 | +| B | N/A | | Selects Helicopter state. | Selects Airplane state. | |
|
| 35 | +| C (1,2,4,6) | Airplane | | Dual Rate set to ±125%. | Dual Rate set to ±100%. | |
|
| 36 | +| D | Airplane | | Enables mixture functions (E, F). | Disables mixture functions (E, F). | |
|
| 37 | +| E | Airplane | | Enables Ch2 & Ch4 mixture (note3) | Enables Ch1 & Ch6 mixture (note3) | |
|
| 38 | +| F | Airplane | | Enables Ch1 & Ch2 mixture (note2). | N/A | |
|
| 39 | +| G (Ch1) | N/A | | Reverse Mode. | Normal Mode. | |
|
| 40 | +| H (Ch2) | N/A | | Reverse Mode. | Normal Mode. | |
|
| 41 | +| I (Ch3) | N/A | | Reverse Mode. | Normal Mode. | |
|
| 42 | +| J (Ch4) | N/A | | Reverse Mode. | Normal Mode. | |
|
| 43 | +| K (Ch6) | N/A | | Reverse Mode. | Normal Mode. | |
|
| 44 | + |
|
| 45 | +note1 == Ch3 to Ch6 mix always active |
|
| 46 | + |
|
| 47 | +note2 == (Elevon/Delta Wing) (Requires D Up, overrides D) |
|
| 48 | + |
|
| 49 | +note3 == (V-Tail) (Requires D Up). |
|
| 50 | + |
|
| 51 | +Switch Function Instruction |
|
| 52 | + |
|
| 53 | +- (A)At helicopterstate,pulling A down to put offmixturefunction of channel3to channel4,when pulling it up it willcomebackthefunction.Butthemixturefunctiontochannel 6isstable,whichisirrelevant with this switch. |
|
| 54 | +- (B) Pulling B down is airplane state and pulling it up is helicopter state. |
|
| 55 | +- (C) At airplane state, pulling 1, 2, 4, 6 down the dual rate is ±100%; when pulling them up, the dual rate will be ±125%. |
|
| 56 | +- (D) At airplane state, pulling D down make switches have no mixture function, but pulling it up will cause them have thefunction. |
|
| 57 | +- (E) At airplane state, when D is pulled up, pulling E down cause channel 1 & 6 mixture function (Flaperon); pulling E up will cause channel 2 & 4 mixture function(V-TAIL). |
|
| 58 | +- (F) At airplane state,when D is pulled up,pulling F up it works as the mixture function of channel 1&2(TrianglewingELEVON),and Dfunctiondoesn'tworkat that moment. |
|
| 59 | +- (G) Channel 1 is reverse switch for aileron.Pulling G down is to make it in normal mode,and pulling it up is to make it act in reverse. |
|
| 60 | +- (H) Channel 2 is reverse switch for elevator. Pulling H down is to make it in normal mode, and pulling it up is to make it act in reverse. |
|
| 61 | +- (I) Channel 3 is reverse switch for power. Pulling I down is to make it in normal mode, and pulling it up is to make it act in reverse. |
|
| 62 | +- (J) Channel 4 is reverse switch for rudder. Pulling J down is to make it in normal mode, and pulling it up is to makeitactinreverse. |
|
| 63 | +- (K) Channel 6 is reverse switch for screw-pitch/ flaperon.Pulling K down is to make it in normal mode, and pulling it up is to make it act in reverse. |
|
| 64 | + |
|
| 65 | + |
|
| 66 | + |
|
| 67 | +## Binding Instructions: |
|
| 68 | + |
|
| 69 | +1. **Receiver:** Press and hold the "SET" button until the orange "STATUS" light flashes slowly. The receiver is now waiting for the transmitter's binding command. |
|
| 70 | +2. **Transmitter:** Press and hold the "SET" button while powering on the transmitter. Press the SET button once more to enter the binding function (the orange "STATUS" light will be solid). Then, press and hold the SET button until the orange light flashes slowly, entering the binding state. |
|
| 71 | +3. **Binding Successful:** The transmitter's green light will turn solid, and the receiver's indicator light will turn off. |
|
| 72 | + |
|
| 73 | +## Failsafe Setup: |
|
| 74 | + |
|
| 75 | +1. Power on the receiver. |
|
| 76 | +2. Press and hold the "SET" button while powering on the transmitter. Then, press and hold the SET button for about 2 seconds to enter the failsafe setup state (the green light will flash). |
|
| 77 | +3. The receiver's green light will flash quickly. The data currently being output by the transmitter will be set as the failsafe output data for the receiver. |
|
| 78 | +4. **Failsafe Active State:** The receiver's red light will be solid. |
|
| 79 | + |
|
| 80 | +## Technical Parameters: |
|
| 81 | + |
|
| 82 | +* **Application:** Fixed-wing aircraft, HDE helicopters, fixed-pitch helicopters, cars, boats |
|
| 83 | +* **Frequency Band:** 2.400 - 2.483 GHz |
|
| 84 | +* **Transmit Power:** ≤ 100mW |
|
| 85 | +* **Operating Current:** ≤ 160mA |
|
| 86 | +* **Encoding:** PPM |
|
| 87 | +* **RF Module:** Built-in |
|
| 88 | +* **Power Supply:** 9.6 - 12V |
|
| 89 | +* **Dual Rate/Expo Range:** 100% ~ 125% |
|
| 90 | +* **Mixing:** |
|
| 91 | + * Flaperon (Channel 6 and Channel 1 mix) |
|
| 92 | + * V-Tail (Channel 4 and Channel 2 mix) |
|
| 93 | + * Delta Wing (Elevon) (Channel 1 and Channel 2 mix) |
|
| 94 | + * HDE Helicopter (Channel 3 to Channel 4 & 6 mix) |
|
| 95 | + * HDE Helicopter (Channel 3 to Channel 6 mix) |
|
| 96 | +* **Reverse Switches:** |
|
| 97 | + * Channel 1: Aileron 副翼 |
|
| 98 | + * Channel 2: Elevator 升降舵 |
|
| 99 | + * Channel 3: Throttle 油门 |
|
| 100 | + * Channel 4: Rudder 方向舵 |
|
| 101 | + * Channel 6: Flap/Pitch 襟翼/螺距 |
|
| 102 | +* **Low Voltage Alarm (Visual & Audible):** |
|
| 103 | + * Battery Voltage < 8.8V: Power indicator flashes once per second with beeping. |
|
| 104 | + * Battery Voltage < 8.3V: Power indicator flashes twice per second (0.5s interval) with beeping. |
|
| 105 | +* **Charging Jack:** Yes |
|
| 106 | +* **Simulator Jack:** Yes |
|
| 107 | + |
|
| 108 | + |
|
| 109 | +## Beeping |
|
| 110 | + |
|
| 111 | +According to the document, the device will provide a sound-and-light notification when the battery voltage is low. |
|
| 112 | + |
|
| 113 | +**When the battery voltage is below 8.8V**, the power indicator light will glitter and buzz at a rate of 1S/1S. |
|
| 114 | + |
|
| 115 | +**When the battery voltage drops below 8.3V**, the power indicator light will glitter and buzz at a rate of 0.5S/1S. |
|
| 116 | + |
|
| 117 | +Additionally, the WFT06X-C model transmitter will alarm if it is turned on in an Idle-up state with no output. |
|
| 118 | + |
|
| 119 | + |
|
| 120 | + |
|
| 121 | + |
|
| 122 | + |
|
| 123 | +## demo video |
|
| 124 | + |
|
| 125 | +- [how to binding WFLY in chinese ](https://www.bilibili.com/video/BV1Mh4y1c7FS/?vd_source=74a6b8b9bfcd41c5946a742815bf71ae) |
|
| 126 | + |
|
| 127 | +## ref |
|
| 128 | + |
|
| 129 | +- [[WFLY]] - [[lightradio]] - [[radiomaster]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-supplier-dat/betaFPV-dat/2025-05-04-14-49-45.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-supplier-dat/betaFPV-dat/2025-05-04-14-49-45.png differ |
app-dat/RC-dat/RC-supplier-dat/betaFPV-dat/2025-05-04-15-34-48.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-supplier-dat/betaFPV-dat/2025-05-04-15-34-48.png differ |
app-dat/RC-dat/RC-supplier-dat/betaFPV-dat/betaFPV-dat.md
| ... | ... | @@ -0,0 +1,4 @@ |
| 1 | + |
|
| 2 | +# betaFPV-dat |
|
| 3 | + |
|
| 4 | +- [[lightradio-dat]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-supplier-dat/betaFPV-dat/lightradio-dat.md
| ... | ... | @@ -0,0 +1,94 @@ |
| 1 | + |
|
| 2 | +# lightradio-dat |
|
| 3 | + |
|
| 4 | +## Lightradio 3 Pro |
|
| 5 | + |
|
| 6 | +- professional version |
|
| 7 | +- build-in OLED display |
|
| 8 | + |
|
| 9 | + |
|
| 10 | + |
|
| 11 | +Choice of two protocols: |
|
| 12 | + |
|
| 13 | +* **Built-in ELRS 2.4G:** Maximum output power up to 250mW, built-in omnidirectional antenna, enables long-range flight. |
|
| 14 | +* **Built-in CC2500 version:** Supports Frsky D / Frsky X / SFHSS and other protocols, maximum 100mW transmission power. |
|
| 15 | + |
|
| 16 | + |
|
| 17 | + |
|
| 18 | +## lightradio 3 |
|
| 19 | + |
|
| 20 | +- does NOT support original [[ELRS-dat]] system |
|
| 21 | + |
|
| 22 | +### info |
|
| 23 | + |
|
| 24 | + |
|
| 25 | + |
|
| 26 | + |
|
| 27 | +### Flight Controller |
|
| 28 | + |
|
| 29 | +The application supports flight controller that can run LiteSilver firmeware. |
|
| 30 | + |
|
| 31 | +- Lite Brushed FC V3 |
|
| 32 | +- Cetus FPV Kit |
|
| 33 | +- Cetus Pro FPV Kit |
|
| 34 | +- Cetus X FPV KIT |
|
| 35 | +- Cetus Lite FPV Kit |
|
| 36 | +- Aquila 16 FPV kit |
|
| 37 | + |
|
| 38 | +Configurator for FC board is active.Follow the steps to enter FC Setup page. |
|
| 39 | + |
|
| 40 | +1. Connect the FC board to the computer via USB data cable. |
|
| 41 | +2. Select the virtual COM port and click the *Connect" button on the top right. |
|
| 42 | + |
|
| 43 | +Note: If enter FC Setup page fail, please update the FC firmware first. |
|
| 44 | + |
|
| 45 | +Click the "Firmware Flasher" tab on the left for firmware update. |
|
| 46 | + |
|
| 47 | +### Radio Transmitter |
|
| 48 | + |
|
| 49 | +Support the radio controller come with BETAFPV LiteRadio Firmware 2.0 Version. |
|
| 50 | + |
|
| 51 | +- LiteRadio 1 |
|
| 52 | +- LiteRadio 2 SEV2 |
|
| 53 | +- LiteRadio 3 |
|
| 54 | +- LiteRadio 4 SE |
|
| 55 | + |
|
| 56 | +The LiteRadio 2 SE Frsky or Bayang version is not supported. LiteRadio 2 and LiteRadio 3 Pro is powered by OpenTX system, please use the OpenTX Companion. |
|
| 57 | + |
|
| 58 | +Click the yellow button below to active configurator for radio controller. |
|
| 59 | + |
|
| 60 | +### Remote control parameters |
|
| 61 | + |
|
| 62 | +- Model == LiteRadio3 remote control |
|
| 63 | +- Remote control distance == 500-600 meters |
|
| 64 | +- Frequency range == 2.4G (2403MHz-2447MHz) |
|
| 65 | +- Support protocol == ELRS 2.4G/Frsky (CC2500) |
|
| 66 | +- Channel == 8 |
|
| 67 | +- Support protocol == ELRS 2.4G |
|
| 68 | +- Power == 25mW/50mW/100mW |
|
| 69 | +- Adaptive drone type supports |
|
| 70 | + - Multi-rotor/support USB firmware update |
|
| 71 | + - BETAFPV Configurator connection |
|
| 72 | + - Custom LiteRadio system joystick calibration |
|
| 73 | +- LED light == red light on/red warning/blue normal |
|
| 74 | +- Battery built-in == 2000mAh1S battery |
|
| 75 | +- Charging connector == Type-C |
|
| 76 | + |
|
| 77 | +## BetaFPV Configurator |
|
| 78 | + |
|
| 79 | +[github release ](https://github.com/BETAFPV/BETAFPV_Configurator/releases) |
|
| 80 | + |
|
| 81 | +[BETAFPV Configurator User Manual](https://support.betafpv.com/hc/en-us/articles/40712112687769-BETAFPV-Configurator-User-Manual) |
|
| 82 | + |
|
| 83 | +[github BETAFPV_Configurator](https://github.com/BETAFPV/BETAFPV_Configurator) |
|
| 84 | + |
|
| 85 | + |
|
| 86 | +### Connection |
|
| 87 | + |
|
| 88 | +- via serial port (USB) |
|
| 89 | + |
|
| 90 | + |
|
| 91 | + |
|
| 92 | +## ref |
|
| 93 | + |
|
| 94 | +- [[betaFPV]] - [[FPV]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-supplier-dat/frsky-dat/frsky-dat.md
| ... | ... | @@ -0,0 +1,9 @@ |
| 1 | + |
|
| 2 | +# frsky-dat |
|
| 3 | + |
|
| 4 | +- [Taranis Series](https://www.frsky-rc.com/product-category/transmitters/taranis-series/) |
|
| 5 | + |
|
| 6 | + |
|
| 7 | +## ref |
|
| 8 | + |
|
| 9 | +- [[RC-supplier-dat]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-supplier-dat/radiomaster-dat/2025-05-16-12-45-54.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-supplier-dat/radiomaster-dat/2025-05-16-12-45-54.png differ |
app-dat/RC-dat/RC-supplier-dat/radiomaster-dat/2025-05-16-12-47-56.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-supplier-dat/radiomaster-dat/2025-05-16-12-47-56.png differ |
app-dat/RC-dat/RC-supplier-dat/radiomaster-dat/2025-05-16-12-48-22.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/RC-supplier-dat/radiomaster-dat/2025-05-16-12-48-22.png differ |
app-dat/RC-dat/RC-supplier-dat/radiomaster-dat/radiomaster-dat.md
| ... | ... | @@ -0,0 +1,79 @@ |
| 1 | + |
|
| 2 | +# radiomaster-dat |
|
| 3 | + |
|
| 4 | + |
|
| 5 | +## binding |
|
| 6 | + |
|
| 7 | +## Pocket Radio Controller (M2) |
|
| 8 | + |
|
| 9 | + |
|
| 10 | +https://www.radiomasterrc.com/products/pocket-radio-controller-m2 |
|
| 11 | + |
|
| 12 | +https://cdn.shopify.com/s/files/1/0609/8324/7079/files/Pocket_1.pdf?v=1736839330 |
|
| 13 | + |
|
| 14 | +firmwares - https://www.radiomasterrc.com/pages/firmware-updates |
|
| 15 | + |
|
| 16 | + |
|
| 17 | + |
|
| 18 | + |
|
| 19 | +## wifi |
|
| 20 | + |
|
| 21 | +better use this wifi option to connect your devices to your local network: |
|
| 22 | + |
|
| 23 | + One-time connect to network, retain Home network setting |
|
| 24 | + |
|
| 25 | + http://elrs_tx.local |
|
| 26 | + |
|
| 27 | + |
|
| 28 | +find firmware version |
|
| 29 | + |
|
| 30 | + ExpressLRS |
|
| 31 | + RadioMaster Pocket Internal 2.4GHz TX |
|
| 32 | + Firmware Rev. 3.5.4 (a6f9a2) ISM2G4 |
|
| 33 | + |
|
| 34 | + |
|
| 35 | +## flash |
|
| 36 | + |
|
| 37 | + You must choose regulatory domain for your device in 2.4 GHz band |
|
| 38 | + |
|
| 39 | + Custom binding phrase must be longer than 6 characters |
|
| 40 | + |
|
| 41 | + |
|
| 42 | +## build firmware first |
|
| 43 | + |
|
| 44 | + |
|
| 45 | + |
|
| 46 | + |
|
| 47 | + |
|
| 48 | + |
|
| 49 | +## flash log |
|
| 50 | + |
|
| 51 | + % Total % Received % Xferd Average Speed Time Time Time Current |
|
| 52 | + Dload Upload Total Spent |
|
| 53 | + Left Speed |
|
| 54 | + |
|
| 55 | + 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 |
|
| 56 | + 12 1534k 0 0 12 192k 0 153k 0:00:09 0:00:01 0:00:08 154k |
|
| 57 | + 20 1534k 0 0 20 320k 0 137k 0:00:11 0:00:02 0:00:09 137k |
|
| 58 | + 25 1534k 0 0 25 384k 0 119k 0:00:12 0:00:03 0:00:09 119k |
|
| 59 | + 33 1534k 0 0 33 512k 0 113k 0:00:13 0:00:04 0:00:09 113k |
|
| 60 | + 37 1534k 0 0 37 576k 0 110k 0:00:13 0:00:05 0:00:08 110k |
|
| 61 | + 45 1534k 0 0 45 704k 0 105k 0:00:14 0:00:06 0:00:08 96234 |
|
| 62 | + 50 1534k 0 0 50 768k 0 103k 0:00:14 0:00:07 0:00:07 90181 |
|
| 63 | + 54 1534k 0 0 54 832k 0 102k 0:00:15 0:00:08 0:00:07 92902 |
|
| 64 | + 62 1534k 0 0 62 960k 0 100k 0:00:15 0:00:09 0:00:06 91603 |
|
| 65 | + 66 1534k 0 0 66 1024k 0 100k 0:00:15 0:00:10 0:00:05 91548 |
|
| 66 | + 75 1534k 0 0 75 1152k 0 99k 0:00:15 0:00:11 0:00:04 93775 |
|
| 67 | + 79 1534k 0 0 79 1216k 0 98k 0:00:15 0:00:12 0:00:03 94064 |
|
| 68 | + 83 1534k 0 0 83 1280k 0 98k 0:00:15 0:00:13 0:00:02 93852 |
|
| 69 | + 91 1534k 0 0 91 1408k 0 99813 0:00:15 0:00:14 0:00:01 92958 |
|
| 70 | + 95 1534k 0 0 95 1472k 0 99416 0:00:15 0:00:15 --:--:-- 92639 |
|
| 71 | + 100 1534k 0 0 100 1534k 0 92904 0:00:16 0:00:16 --:--:-- 73560 |
|
| 72 | + 100 1534k 0 0 100 1534k 0 87667 0:00:17 0:00:17 --:--:-- 57992 |
|
| 73 | + 100 1535k 100 99 100 1534k 5 84899 0:00:19 0:00:18 0:00:01 47599 |
|
| 74 | + 100 1535k 100 99 100 1534k 5 84899 0:00:19 0:00:18 0:00:01 31982 |
|
| 75 | + |
|
| 76 | + ** UPLOADING TO: http://192.168.72.9/update |
|
| 77 | + |
|
| 78 | + UPLOAD SUCCESS |
|
| 79 | + [32mUpdate complete. Please wait for a few seconds while the device reboots.[0m |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/RC-supplier-dat/speedybee-dat/speedybee-dat.md
| ... | ... | @@ -0,0 +1,7 @@ |
| 1 | + |
|
| 2 | +# speedybee-dat |
|
| 3 | + |
|
| 4 | +[SpeedyBee 4pcs FPV Soldering Practice Board for FPV Drone Beginners, Tools for Flight controller ESC Soldering Practice](https://www.amazon.com/SpeedyBee-Soldering-Practice-Beginners-controller/dp/B0C5X26JWQ/ref=sr_1_32?dib=eyJ2IjoiMSJ9.85xi15ftM4OWw33_siXrDRGNOKuf3CgQct4cVlBOFqI1ZAAZD4Gz_S4U_wqEKgjxWcsGOZPlWkdGdEASaTJntO1H_pFgsXO61wuEgveKAmLTLHR-cjsa5SOhaKUXU0vVHE7oijzqLoIPsx-H55gYNPr_F8aMX98OqPfwk64Ma12qrNSidLDVokmdegWL621v3U-5PDEaMNTjdACgOTHEBxAGhtxksaYVouWcSkxMCTI-jr0FkvxyQeZmO6S-UjXJcEcChxa4sPMjVyiK7070XhJlH2EnXqgnv0KScl80Jqc.AzbbGJAa2ls6bQWRCrudB-jGcm6vKV7pRItsIyBMpdA&dib_tag=se&keywords=FPV&qid=1744201259&sr=8-32) |
|
| 5 | + |
|
| 6 | + |
|
| 7 | + |
app-dat/RC-dat/Tank-dat/2025-05-22-00-49-44.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/Tank-dat/2025-05-22-00-49-44.png differ |
app-dat/RC-dat/Tank-dat/2025-05-22-00-50-12.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/Tank-dat/2025-05-22-00-50-12.png differ |
app-dat/RC-dat/Tank-dat/Tank-dat.md
| ... | ... | @@ -0,0 +1,28 @@ |
| 1 | + |
|
| 2 | +# Tank-dat |
|
| 3 | + |
|
| 4 | + |
|
| 5 | +- [[dc-gear-motor-dat]] - [[MG513-dat]] |
|
| 6 | + |
|
| 7 | +- [[tank-track-dat]] |
|
| 8 | + |
|
| 9 | +## tank platform 1 |
|
| 10 | + |
|
| 11 | +- Each wheel has an independent suspension spring |
|
| 12 | +- six rogs each side |
|
| 13 | + |
|
| 14 | + |
|
| 15 | + |
|
| 16 | + |
|
| 17 | + |
|
| 18 | + |
|
| 19 | + |
|
| 20 | +## 3D |
|
| 21 | + |
|
| 22 | +- tank track and [[robot-arm-dat]] - [3D model](https://cad.onshape.com/documents/74b490fd20a2a4c684736444/w/df7ed99939a49695aecaa97f/e/90154fe41bafe724913e360f?renderMode=0&uiState=68301af9be87bf505c7ca7d0) |
|
| 23 | + |
|
| 24 | + |
|
| 25 | + |
|
| 26 | +## ref |
|
| 27 | + |
|
| 28 | +- [[RC]] - [[tank]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/Tank-dat/markus-tank-dat/markus-tank-dat.md
| ... | ... | @@ -0,0 +1,36 @@ |
| 1 | + |
|
| 2 | +# markus-rover-dat |
|
| 3 | + |
|
| 4 | +- [FPV-Rover V2.0 (RC Tank)](https://www.thingiverse.com/thing:2952852) |
|
| 5 | +- [youtube](https://www.youtube.com/watch?v=dpUSdjNppN0) |
|
| 6 | +- https://www.instructables.com/FPV-Rover-V20/ |
|
| 7 | + |
|
| 8 | +## printed parts |
|
| 9 | + |
|
| 10 | +- 2x main cog front |
|
| 11 | +- 2x main cog rear (needs support) |
|
| 12 | +- 16x small cog |
|
| 13 | +- 1x body (needs support) |
|
| 14 | +- 2x outer frame |
|
| 15 | +- 2x big bevel gear (use 4:1 for less heat and more torque) |
|
| 16 | +- 2x small bevel gear (I recommend strong filament like Nylon) (use 4:1 for less heat and more torque) |
|
| 17 | +- 2x motor mounting bracket |
|
| 18 | +- 2x ESC mount |
|
| 19 | +- 1x inner frame left (or inner frame left high) |
|
| 20 | +- 1x inner frame right (or inner frame right high) |
|
| 21 | +- 1x front cover (needs support) |
|
| 22 | +- 1x rear cover |
|
| 23 | +- 64x tank track |
|
| 24 | +- 64x rubber track for tank track |
|
| 25 | + |
|
| 26 | +## ordered parts |
|
| 27 | + |
|
| 28 | + |
|
| 29 | + |
|
| 30 | +## knowledge |
|
| 31 | + |
|
| 32 | +- [[3d-printer-dat]] |
|
| 33 | + |
|
| 34 | +- [[dc-motor-dat]] - [[tank-track-dat]] - [[ESC-dat]] |
|
| 35 | + |
|
| 36 | +- cog == gear |
app-dat/RC-dat/Tank-dat/tank-track-dat/2025-05-22-14-09-36.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/Tank-dat/tank-track-dat/2025-05-22-14-09-36.png differ |
app-dat/RC-dat/Tank-dat/tank-track-dat/2025-05-22-14-10-22.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/Tank-dat/tank-track-dat/2025-05-22-14-10-22.png differ |
app-dat/RC-dat/Tank-dat/tank-track-dat/2025-05-22-14-11-57.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/Tank-dat/tank-track-dat/2025-05-22-14-11-57.png differ |
app-dat/RC-dat/Tank-dat/tank-track-dat/tank-track-dat.md
| ... | ... | @@ -0,0 +1,54 @@ |
| 1 | + |
|
| 2 | +# tank-track-dat |
|
| 3 | + |
|
| 4 | + |
|
| 5 | +## ✅ When Tank Tracks Are Better |
|
| 6 | +- **Soft Terrain** (sand, mud, snow): |
|
| 7 | + - Tracks distribute weight over a larger surface, preventing sinking. |
|
| 8 | +- **Uneven Terrain** (rocks, slopes, obstacles): |
|
| 9 | + - Tracks provide better grip and stability. |
|
| 10 | +- **Heavy Loads**: |
|
| 11 | + - Tracks can support and move heavier equipment with more traction. |
|
| 12 | + |
|
| 13 | +## ✅ When Wheels Are Better |
|
| 14 | +- **Hard, Flat Terrain** (pavement, concrete): |
|
| 15 | + - Wheels are faster and more energy-efficient. |
|
| 16 | +- **Speed & Efficiency**: |
|
| 17 | + - Wheeled systems are usually lighter and less power-hungry. |
|
| 18 | +- **Maintenance & Cost**: |
|
| 19 | + - Wheels are simpler, cheaper, and easier to repair. |
|
| 20 | + |
|
| 21 | + |
|
| 22 | +## 🔍 Summary Table |
|
| 23 | + |
|
| 24 | +| Feature | Tank Tracks | Wheels | |
|
| 25 | +|------------------|----------------------------------|----------------------------------| |
|
| 26 | +| Traction | Excellent on rough terrain | Good on hard surfaces | |
|
| 27 | +| Speed | Slower | Faster | |
|
| 28 | +| Efficiency | Lower (more friction) | Higher | |
|
| 29 | +| Terrain Handling | Superior on soft/uneven ground | Best on smooth/hard ground | |
|
| 30 | +| Weight Support | High | Moderate | |
|
| 31 | +| Maintenance | More complex and expensive | Easier and cheaper | |
|
| 32 | + |
|
| 33 | + |
|
| 34 | +## BOMS |
|
| 35 | + |
|
| 36 | +Cogs |
|
| 37 | + |
|
| 38 | + |
|
| 39 | + |
|
| 40 | + |
|
| 41 | + |
|
| 42 | +Chains |
|
| 43 | + |
|
| 44 | + |
|
| 45 | + |
|
| 46 | + |
|
| 47 | +## guide |
|
| 48 | + |
|
| 49 | +- [tank #track disassemble and re-assemble](https://t.me/electrodragon3/371) |
|
| 50 | + |
|
| 51 | + |
|
| 52 | +## ref |
|
| 53 | + |
|
| 54 | +- [[robot-dat]] - [[tank-dat]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/UAV-dat/UAV-dat.md
| ... | ... | @@ -0,0 +1,46 @@ |
| 1 | + |
|
| 2 | +# UAV-dat |
|
| 3 | + |
|
| 4 | +A UAV stands for Unmanned Aerial Vehicle. It's an aircraft without a human pilot on board, controlled remotely or autonomously. They are also commonly known as drones. |
|
| 5 | + |
|
| 6 | +- [[betaflight-dat]] - [[ArduPilot-dat]] |
|
| 7 | + |
|
| 8 | +- [[FPV-dat]] |
|
| 9 | + |
|
| 10 | + |
|
| 11 | + |
|
| 12 | +## fixed-wing UAV |
|
| 13 | + |
|
| 14 | +### Talon 1400 Overview |
|
| 15 | + |
|
| 16 | +#### What is the Talon 1400? |
|
| 17 | +The **Talon 1400** is a high-performance, **3D-printed unmanned aerial vehicle (UAV)** developed by Flightory. It is optimized for long-range and efficient flight. |
|
| 18 | + |
|
| 19 | +##### Specifications: |
|
| 20 | +- **Wingspan:** 1,305 mm |
|
| 21 | +- **Length:** 830 mm |
|
| 22 | +- **Flight Time:** Up to 4 hours (with large Li-Ion 4S6P battery) |
|
| 23 | +- **Materials:** LW-PLA and PETG |
|
| 24 | +- **Airfoil:** Eppler E205 |
|
| 25 | +- **Optimal Cruise Speed:** 55-65 km/h |
|
| 26 | + |
|
| 27 | +#### Is It Betaflight-Based? |
|
| 28 | + |
|
| 29 | +**No**, the Talon 1400 is **not** based on Betaflight. Since it is a **fixed-wing UAV**, it is more suited for **autonomous flight controllers** rather than Betaflight, which is designed for FPV racing drones. |
|
| 30 | + |
|
| 31 | +##### Recommended Flight Controllers: |
|
| 32 | + |
|
| 33 | +- **Mateksys F405-Wing / F765-Wing** |
|
| 34 | +- **Pixhawk (PX4 or ArduPilot firmware)** |
|
| 35 | +- **Holybro Kakute F7 / H743-Wing** |
|
| 36 | + |
|
| 37 | +These controllers support **GPS navigation, waypoint missions, and return-to-home (RTH)**, making them better suited for long-range operations. |
|
| 38 | + |
|
| 39 | +#### Resources: |
|
| 40 | + |
|
| 41 | +- [Flying a 3D Printed Fixed Wing Drone | Talon 1400 V2](https://www.youtube.com/watch?v=2ngGgtw1sUw) |
|
| 42 | + |
|
| 43 | +- [Flightory Talon 1400 Official Page](https://flightory.com/product/talon-1400/) |
|
| 44 | +- [Talon 1400 Assembly Tutorial (YouTube)](https://www.youtube.com/watch?v=LGt_8F4e5r8) |
|
| 45 | + |
|
| 46 | + |
app-dat/RC-dat/UAV-dat/betaflight-dat.md
| ... | ... | @@ -0,0 +1,31 @@ |
| 1 | + |
|
| 2 | + |
|
| 3 | +# betaflight-dat.md |
|
| 4 | + |
|
| 5 | +Betaflight is an open-source firmware for drones and other unmanned aerial vehicles (UAVs). It is designed to provide advanced flight control capabilities, making it popular among hobbyists and enthusiasts in the drone community. Betaflight is known for its flexibility, configurability, and support for a wide range of hardware platforms. |
|
| 6 | + |
|
| 7 | +- [[FPV-dat]] |
|
| 8 | + |
|
| 9 | + |
|
| 10 | + |
|
| 11 | + |
|
| 12 | + |
|
| 13 | +## commerlized projects |
|
| 14 | + |
|
| 15 | +- **speedybee** == https://www.speedybee.com/ == SpeedyBee is a company that specializes in providing high-quality drone components and accessories, including flight controllers, ESCs, and other related products. They are known for their innovative designs and user-friendly interfaces, making them a popular choice among drone enthusiasts. |
|
| 16 | +- **betafpv** == https://www.betafpv.com/ == BETAFPV is a company that focuses on producing small and lightweight drones, particularly for FPV (First Person View) racing and freestyle flying. They offer a range of products, including flight controllers, cameras, and other accessories tailored for FPV enthusiasts. |
|
| 17 | +- happymodel |
|
| 18 | +- iFlight |
|
| 19 | +- Holybro |
|
| 20 | +- TBS |
|
| 21 | +- Flywoo |
|
| 22 | +- HGLRC |
|
| 23 | +- Diatone |
|
| 24 | +- GepRC |
|
| 25 | +- Racerstar |
|
| 26 | +- Emax |
|
| 27 | +- Eachine |
|
| 28 | +- HGLRC |
|
| 29 | +- Racerstar |
|
| 30 | + |
|
| 31 | + |
app-dat/RC-dat/airplane-dat/airplane-dat.md
| ... | ... | @@ -0,0 +1,38 @@ |
| 1 | + |
|
| 2 | +# airplane-dat |
|
| 3 | + |
|
| 4 | +## Channel 1: Aileron Action |
|
| 5 | + |
|
| 6 | +Control theright-and-left lean of the aircraft.To level the slantwise aircraft,youmust make |
|
| 7 | +thecontrol rod act inreverse direction.Otherwise,it will makethe aircraftoverturn. |
|
| 8 | + |
|
| 9 | +## Channel 2: Elevator Action |
|
| 10 | + |
|
| 11 | +Control the aerocraft to descend orascend.Pulling the control rod down will driveup the head, |
|
| 12 | +and the aeroplane will ascend.Boosting it upwill make thehead downhill,and the aeroplane |
|
| 13 | +willdescend. |
|
| 14 | + |
|
| 15 | +## Channel 3: Throttle Operation |
|
| 16 | + |
|
| 17 | +Control the power. Pulling the control rod down will minish down the power group, and boosting |
|
| 18 | +the control rod up will increase thepower group. |
|
| 19 | + |
|
| 20 | +## Channel 4: Rudder Action |
|
| 21 | + |
|
| 22 | +Control the swerve of the aerocraft. Turning the control rod to left will make the head of the |
|
| 23 | +aircraft turn left, and turning it to right will make the head turn right. |
|
| 24 | + |
|
| 25 | +## Channel 5: LandingGear/GyroAction |
|
| 26 | + |
|
| 27 | +This channel is for switch variable. It is a switch to control landing gear when used for airplane |
|
| 28 | +state, but it will be a switch for gyroscope when used for helicopter. |
|
| 29 | + |
|
| 30 | +## Channel 6: Screw-pitch/Flaperon Action |
|
| 31 | + |
|
| 32 | +The angle adjustingof the flaperon isfor the airplane state,and the adjustingof themain |
|
| 33 | +screw-pitch is forhelicopter state. |
|
| 34 | + |
|
| 35 | + |
|
| 36 | +## ref |
|
| 37 | + |
|
| 38 | +- [[RC-dat]] - [[airplane]] - [[RC]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/flight-controller-dat/flight-controller-dat.md
| ... | ... | @@ -0,0 +1,3 @@ |
| 1 | + |
|
| 2 | +# flight-controller-dat |
|
| 3 | + |
app-dat/RC-dat/quadcopter-dat/2025-01-29-17-12-32.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/quadcopter-dat/2025-01-29-17-12-32.png differ |
app-dat/RC-dat/quadcopter-dat/quadcopter-dat.md
| ... | ... | @@ -0,0 +1,65 @@ |
| 1 | + |
|
| 2 | +# quadcopter-dat |
|
| 3 | + |
|
| 4 | + |
|
| 5 | +## opensource |
|
| 6 | + |
|
| 7 | +### cleanfight |
|
| 8 | + |
|
| 9 | +https://github.com/cleanflight/cleanflight |
|
| 10 | + |
|
| 11 | +https://github.com/cleanflight/cleanflight/tree/master/docs |
|
| 12 | + |
|
| 13 | +https://cleanflight.com/ |
|
| 14 | + |
|
| 15 | + |
|
| 16 | +### Openpilot |
|
| 17 | + |
|
| 18 | +## Commerial |
|
| 19 | + |
|
| 20 | +### CJMCU |
|
| 21 | + |
|
| 22 | + |
|
| 23 | + |
|
| 24 | +- https://www.rcgroups.com/forums/showthread.php?2456739-Openpilot-port-to-CJMCU-stm32-quadcopter |
|
| 25 | + |
|
| 26 | +- https://oscarliang.com/build-fpv-micro-quadcopter-smallest-quad/ |
|
| 27 | + |
|
| 28 | +#### new version from https://aeracoop.net/cjmcu2-open-source-brushed-quadcopter/ |
|
| 29 | + |
|
| 30 | +https://github.com/Edragon/cjmcu2 |
|
| 31 | + |
|
| 32 | + |
|
| 33 | + |
|
| 34 | +## BOM |
|
| 35 | + |
|
| 36 | +### receiver |
|
| 37 | + |
|
| 38 | +- [DT 2.4GHz Receivers](https://www.deltang.co.uk/) |
|
| 39 | + |
|
| 40 | + |
|
| 41 | + |
|
| 42 | +### props |
|
| 43 | + |
|
| 44 | + |
|
| 45 | +### motors |
|
| 46 | + |
|
| 47 | + |
|
| 48 | +### motor drive |
|
| 49 | + |
|
| 50 | +- [[mosfet-dat]] |
|
| 51 | + |
|
| 52 | +## forum |
|
| 53 | + |
|
| 54 | +- http://www.multiwii.com/forum |
|
| 55 | +- https://www.rcgroups.com/forums |
|
| 56 | + |
|
| 57 | + |
|
| 58 | + |
|
| 59 | +## hexquadcopter |
|
| 60 | + |
|
| 61 | +- http://www.multiwii.com/forum/viewtopic.php?f=12&t=4893&p=53317#p53317 |
|
| 62 | + |
|
| 63 | +## ref |
|
| 64 | + |
|
| 65 | +- [[quadcopter]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/rover-dat/2025-05-23-15-11-02.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/rover-dat/2025-05-23-15-11-02.png differ |
app-dat/RC-dat/rover-dat/rc-car-dat/2025-03-25-15-00-18.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/rover-dat/rc-car-dat/2025-03-25-15-00-18.png differ |
app-dat/RC-dat/rover-dat/rc-car-dat/2025-03-25-15-00-49.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/rover-dat/rc-car-dat/2025-03-25-15-00-49.png differ |
app-dat/RC-dat/rover-dat/rc-car-dat/2025-03-25-15-01-11.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/rover-dat/rc-car-dat/2025-03-25-15-01-11.png differ |
app-dat/RC-dat/rover-dat/rc-car-dat/2025-03-25-15-02-19.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/rover-dat/rc-car-dat/2025-03-25-15-02-19.png differ |
app-dat/RC-dat/rover-dat/rc-car-dat/2025-03-28-18-44-53.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/rover-dat/rc-car-dat/2025-03-28-18-44-53.png differ |
app-dat/RC-dat/rover-dat/rc-car-dat/RC-car-dat.md
| ... | ... | @@ -0,0 +1,49 @@ |
| 1 | + |
|
| 2 | +# RC-car-dat |
|
| 3 | + |
|
| 4 | +- [[video-RC-car-dat]] |
|
| 5 | + |
|
| 6 | +basic [[tech-dat]] - [[robot-dat]] |
|
| 7 | + |
|
| 8 | + |
|
| 9 | + |
|
| 10 | +## Tracked robot platform |
|
| 11 | + |
|
| 12 | + |
|
| 13 | + |
|
| 14 | + |
|
| 15 | + |
|
| 16 | + |
|
| 17 | + |
|
| 18 | + |
|
| 19 | + |
|
| 20 | + |
|
| 21 | +## tricycle / four-wheels platform |
|
| 22 | + |
|
| 23 | + |
|
| 24 | + |
|
| 25 | +tricycle |
|
| 26 | + |
|
| 27 | +Four-wheel two-drive car |
|
| 28 | + |
|
| 29 | +Four-wheel drive car |
|
| 30 | + |
|
| 31 | +Omnidirectional four-wheel two-wheel drive car |
|
| 32 | + |
|
| 33 | + |
|
| 34 | +## other |
|
| 35 | + |
|
| 36 | +### robot tank with camera |
|
| 37 | + |
|
| 38 | +- https://github.com/YahboomTechnology/Raspberry-pi-G1-Tank |
|
| 39 | + |
|
| 40 | + |
|
| 41 | +## read |
|
| 42 | + |
|
| 43 | +- [Tear down and Learn a good-build $20 RC Toy Car](https://www.electrodragon.com/disassemble-and-learn-a-good-build-20-rc-toy-car/) |
|
| 44 | + |
|
| 45 | +## ref |
|
| 46 | + |
|
| 47 | +- [[motor-dat]] |
|
| 48 | + |
|
| 49 | +- [[RC-car]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/rover-dat/rc-car-dat/rc-car-hack-dat/2025-05-12-18-37-13.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/rover-dat/rc-car-dat/rc-car-hack-dat/2025-05-12-18-37-13.png differ |
app-dat/RC-dat/rover-dat/rc-car-dat/rc-car-hack-dat/rc-car-hack-dat.md
| ... | ... | @@ -0,0 +1,44 @@ |
| 1 | + |
|
| 2 | +# rc-car-hack-dat |
|
| 3 | + |
|
| 4 | + |
|
| 5 | +## 1. battery Enlargement |
|
| 6 | + |
|
| 7 | +- [[lithium-battery-dat]] - [[battery-pack-dat]] |
|
| 8 | + |
|
| 9 | + |
|
| 10 | +## 2. RC Signal Extension |
|
| 11 | + |
|
| 12 | +- improve up to 10KM by [[FPV-dat]] system [[ELRS-dat]], or [[PPM-dat]] == [[Wfly-dat]] |
|
| 13 | + |
|
| 14 | +- [[antenna-dat]] |
|
| 15 | + |
|
| 16 | +- control system - try to hack by [[arduino-dat]] |
|
| 17 | + |
|
| 18 | +## 3. Imaging System |
|
| 19 | + |
|
| 20 | +- [[video-transmission-dat]] == pickup option == [[LTE-dat]] |
|
| 21 | + |
|
| 22 | + |
|
| 23 | +## 4. GNSS location system |
|
| 24 | + |
|
| 25 | +- [[location-dat]] |
|
| 26 | + |
|
| 27 | + |
|
| 28 | +## other fancy functions |
|
| 29 | + |
|
| 30 | +- [[WS2812-dat]] |
|
| 31 | + |
|
| 32 | + |
|
| 33 | + |
|
| 34 | + |
|
| 35 | +## Accessories |
|
| 36 | + |
|
| 37 | +- [[Velcro-dat]] |
|
| 38 | + |
|
| 39 | + |
|
| 40 | +## Get Inpsired |
|
| 41 | + |
|
| 42 | +The battery can be put in your top luggage rack |
|
| 43 | + |
|
| 44 | + |
app-dat/RC-dat/rover-dat/rc-car-dat/video-rc-car-dat/2025-03-25-14-43-46.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/rover-dat/rc-car-dat/video-rc-car-dat/2025-03-25-14-43-46.png differ |
app-dat/RC-dat/rover-dat/rc-car-dat/video-rc-car-dat/2025-03-25-14-48-15.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/rover-dat/rc-car-dat/video-rc-car-dat/2025-03-25-14-48-15.png differ |
app-dat/RC-dat/rover-dat/rc-car-dat/video-rc-car-dat/2025-03-25-14-48-28.png
| ... | ... | Binary files /dev/null and b/app-dat/RC-dat/rover-dat/rc-car-dat/video-rc-car-dat/2025-03-25-14-48-28.png differ |
app-dat/RC-dat/rover-dat/rc-car-dat/video-rc-car-dat/video-RC-car-dat.md
| ... | ... | @@ -0,0 +1,36 @@ |
| 1 | + |
|
| 2 | +# video-RC-car-dat |
|
| 3 | + |
|
| 4 | + |
|
| 5 | +[[tech-dat]] - [[Camera-dat]] - [[rc-car-dat]] - [[video-transmission-dat]] - [[robot-dat]] |
|
| 6 | + |
|
| 7 | +- [[rc-car-hack-dat]] |
|
| 8 | + |
|
| 9 | +## Demos |
|
| 10 | + |
|
| 11 | +### based on cable [[fiber-optic-dat]] |
|
| 12 | + |
|
| 13 | +#### demos 1 |
|
| 14 | + |
|
| 15 | +up to 100 meters |
|
| 16 | + |
|
| 17 | + |
|
| 18 | + |
|
| 19 | + |
|
| 20 | + |
|
| 21 | + |
|
| 22 | + |
|
| 23 | + |
|
| 24 | +#### demo video 2 |
|
| 25 | + |
|
| 26 | +- https://t.me/electrodragon3/334 |
|
| 27 | + |
|
| 28 | +### Wireless |
|
| 29 | + |
|
| 30 | +- [[video-transmission-dat]] |
|
| 31 | + |
|
| 32 | +## ref |
|
| 33 | + |
|
| 34 | +- [[video-RC-car]] - [[RC-car]] - [[video-transmission]] |
|
| 35 | + |
|
| 36 | +- [[camera]] |
|
| ... | ... | \ No newline at end of file |
app-dat/RC-dat/rover-dat/rover-dat.md
| ... | ... | @@ -0,0 +1,44 @@ |
| 1 | + |
|
| 2 | +# rover-dat |
|
| 3 | + |
|
| 4 | +- [[ardupilot-dat]] - [[rc-dat]] |
|
| 5 | + |
|
| 6 | +https://ardupilot.org/rover/index.html |
|
| 7 | + |
|
| 8 | +- [[RC-car-dat]] - [[rover-dat]] - [[RC-car-hack-dat]] |
|
| 9 | + |
|
| 10 | +- [[rc-signal-dat]] |
|
| 11 | + |
|
| 12 | +- ARKV6X Flight Controller Overview |
|
| 13 | +- ARK FPV Flight Controller Overview == STM32H743IIK6 MCU |
|
| 14 | +- CUAV V5 Plus Overview == STM32F765 |
|
| 15 | + |
|
| 16 | + |
|
| 17 | + |
|
| 18 | +## 3D printed |
|
| 19 | + |
|
| 20 | +- [[markus-rover-dat]] |
|
| 21 | + |
|
| 22 | + |
|
| 23 | +## 3D files |
|
| 24 | + |
|
| 25 | + |
|
| 26 | + |
|
| 27 | +[differential drive robot](https://cad.onshape.com/documents/78baf3d450629341539223b8/w/67b1d15167c8efd1d8242192/e/0e64a58d61cf14a49375d9c6?renderMode=0&uiState=68301fdbbe87bf505c7cb858) |
|
| 28 | + |
|
| 29 | +[TT Motor 4WD Car Mecanum wheel](https://cad.onshape.com/documents/ffe6ad9ac868a2e0b125a547/w/06961ea3665cb10f47c1f6fe/e/c6b6790270216188fea6ddec?renderMode=0&uiState=6830205c37d051363fada807) |
|
| 30 | + |
|
| 31 | +[Another TT Motor 4WD Car Mecanum wheel](https://cad.onshape.com/documents/3fc9a68709b7b211c126b7b0/w/fd59e3cfbe0cf012d3264ef8/e/f35859a1e063a8642be26811?renderMode=0&uiState=68302088624d574aaab00cc0) |
|
| 32 | + |
|
| 33 | + |
|
| 34 | +## board |
|
| 35 | + |
|
| 36 | +- [[SDR1064-dat]] |
|
| 37 | + |
|
| 38 | +Parts - [[TT-motor-dat]] - [[mecanum-wheel-dat]] |
|
| 39 | + |
|
| 40 | +## ref |
|
| 41 | + |
|
| 42 | +- [[dc-motor-dat]] |
|
| 43 | + |
|
| 44 | +- [[rc-car]] - [[maker]] |
|
| ... | ... | \ No newline at end of file |