Maiden flight done
The flight went well, but the glue holding the servo horn onto the tilt mechanism let go and made the tail sloppy, so I fixed it with two self tapping screws, now it's solid and ready for another flight. 😀
No title available

⁂

ellievsbear
occasionally subtle
DEAR READER
styofa doing anything
$LAYYYTER

No title available
NASA
hello vonnie

@theartofmadeline

shark vs the universe
Cosimo Galluzzi
Xuebing Du

JVL
cherry valley forever
KIROKAZE

pixel skylines
Jules of Nature
Lint Roller? I Barely Know Her

seen from Germany
seen from United States
seen from Netherlands
seen from Hong Kong SAR China
seen from Netherlands
seen from United States
seen from Malaysia
seen from United States
seen from United States
seen from T1

seen from Türkiye

seen from United States

seen from Sweden
seen from United States
seen from United States

seen from United States

seen from United States
seen from Netherlands

seen from United States
seen from United States
@darkbutterflyrc
Maiden flight done
The flight went well, but the glue holding the servo horn onto the tilt mechanism let go and made the tail sloppy, so I fixed it with two self tapping screws, now it's solid and ready for another flight. 😀
Inverted Tail Tricopter
Based on the HGLRC Rekon Y6 5 inch frame
Specs.... Motors 3x 2204 SpeedyBee mini 4in1 ESC SpeedyBee mini F405 mini flight controller DJI 04 lite air unit 9g MG servo 5v UBEC to power the servo
Assembling the frame is relatively straightforward as there's not much to it once you have the arms attached to the mid section.
Attaching the motors, I had to design some custom adapters in orange PETG.
The YAW mech is a custom design for this frame, using a direct drive tilt mechanism attached to a metal gear 9g servo.
The O4 Air unit lite, uses custom camera mounts 3D printed in orange PETG.
The 4in1 ESC, 20mm, sits under the flight controller, also 20mm, the holes in the bottom plate of the frame line up perfectly and makes for a neat stack with the O4 air unit above.
Setting up a tricopter in betaflight
Connect your SpeedyBee FC to betaflight, (I'm using a F405 mini)
Flash with the latest Firmware and make sure to include servo option
Reconnect and go to the motors tab, select the Tricopter frame layout
CLI stuff
Type Resource Show
A list will show of assigned resources, I want to reassign the Camera Control B14 pin as my servo output
To do this, free the resource first, type resource CAMERA_CONTROL none
Don’t forget to type save after making the change.
Double check with Resource Show The list will show B14 as FREE
Assign servo 1 to B14, type resource servo 1 B14
Press enter, then type save
Verify with resource show
Optional CLI settings if you’re having trouble with servo direction
Servo reverse in CLI
smix reverse 5 2 r save
The command was like this
smix reverse (servo number) (option number) (r or n)
Options 0 Stabilized ROLL 1 Stabilized PITCH 2 Stabilized YAW 3 Stabilized THROTTLE (ONLY the first motor output) 4 RC ROLL 5 RC PITCH 6 RC YAW 7 RC THROTTLE 8 RC AUX 1 9 RC AUX 2 10 RC AUX 3 11 RC AUX 4 12 GIMBAL PITCH 13 GIMBAL ROLL
Tricopters in 2024-25
Little bit late adding this to the blog, my bad.
Had a blast building this one, made from a scrap RD290 hexa frame, with custom 3D printed top plate.
Little tidbit to know about setting this up, in my case in betaflight.
Open the cli and type “resource.” After that, find the designated port name for which you wired the servo to. Type “resource servo 1 (insert port here example: B01)”. After that type save. Pins A08 for F405 mini
Servo 5 reverse in CLI
smix reverse 5 2 r save
The specs are:
Speedybee F405 mini
AKK VTx analog
1806 motors with littlebee ESCs
Towerpro 9g MG servo
New brain for my large 3D printed wing
Absolutely no documentation on this thing, bought it many years ago and used it on a large tricopter, wanted to reuse old parts.
Morseduino keyboard based CW keyer
Based on an Arduino nano and CardKB mini keyboard. The parts you need to build it are
Arduino nano
CardKB mini keyboard
BC547 NPN transistor
1K resistor
5v reed relay
Socket for the reed relay
Stereo jack for the output
Two on-off-on switches, for speed and power
3D printer to make the enclosure
link to enclosure below
Morseduino by M0YNWArduino based CW keyer built around the cardKB mini keyboard. Printed in ABS, fit the arduino, switches, jack and re
Wire up the speed switch with the centre pin to D13 of the Arduino, this is the reference pin. Connect the either side of the speed switch to D2 and D3 respectively
Wiring up the relay
The diode is not needed with a reed relay IC
The Arduino code
You will need this for the hardware to work, copy and paste it into Arduino IDE. Please respect my work and leave the top comment in.
/*
(c) 12/10/2024 Morseduino by Robert Rayner, M0YNW
This software has no warranty and you use it at your own risk.
*/
#include <Wire.h>
// Define pins for relay and LED
const int relayPin = 7; // relay output
const int ledPin = LED_BUILTIN; // built in LED (specify pin number if using an external LED)
const int speedSwitchA = 2; // Pin connected to one side of the switch
const int speedSwitchB = 3; // Pin connected to the other side of the switch
const int fastWPM = 20; // Fast speed (20 WPM)
const int slowWPM = 12; // Slow speed (12 WPM)
int wpm = fastWPM; // Default WPM is set to fast
// Morse code timing variables
int dotDuration, dashDuration, elementSpace, letterSpace, wordSpace;
// Morse code representation for characters (A-Z, 0-9, /, =, . ?)
const char* morseCodeMap[43] = {
".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", // A-J
"-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", // K-T
"..-", "...-", ".--", "-..-", "-.--", "--..", // U-Z
"-----", ".----", "..---", "...--", "....-", ".....", "-....", // 0-5
"--...", "---..", "----.", // 6-9
"-..-.", "..--..", "-...-", ".-.-.-" //Special characters: / . ? =
};
// CardKB I2C address
#define CARDKB_ADDR 0x5F
// Function to map character to Morse code
const char* getMorseCode(char c) {
if (c >= 'A' && c <= 'Z') {
return morseCodeMap[c - 'A'];
} else if (c >= '0' && c <= '9') {
return morseCodeMap[26 + (c - '0')];
} else if (c == '/') {
return morseCodeMap[36]; // Morse for /
} else if (c == '?') {
return morseCodeMap[37]; // Morse for ,
} else if (c == '=') {
return morseCodeMap[38]; // Morse for =
} else if (c == '.') {
return morseCodeMap[39]; // Morse for .
} else {
return ""; // Return empty for unsupported characters
}
}
// Function to read the slide switch and set WPM
void readSpeedSwitch() {
// Read both switch states with internal pull-up resistors enabled
int switchAState = digitalRead(speedSwitchA);
int switchBState = digitalRead(speedSwitchB);
// Update WPM if one switch is high and the other is low
if (switchAState == LOW && switchBState == HIGH) {
wpm = fastWPM; // Set WPM to fast speed (20 WPM)
} else if (switchAState == HIGH && switchBState == LOW) {
wpm = slowWPM; // Set WPM to slow speed (12 WPM)
}
// Update timing variables based on the current WPM
updateWpmTiming();
}
// Function to transmit Morse code
void transmitMorse(const char* morse) {
while (*morse) {
if (*morse == '.') {
digitalWrite(relayPin, HIGH);
digitalWrite(ledPin, HIGH); // Turn on LED
delay(dotDuration);
digitalWrite(relayPin, LOW);
digitalWrite(ledPin, LOW); // Turn off LED
delay(elementSpace);
} else if (*morse == '-') {
digitalWrite(relayPin, HIGH);
digitalWrite(ledPin, HIGH); // Turn on LED
delay(dashDuration);
digitalWrite(relayPin, LOW);
digitalWrite(ledPin, LOW); // Turn off LED
delay(elementSpace);
}
morse++;
}
delay(letterSpace); // Space between letters
}
// Function to read a key from CardKB
char readCardKB() {
char key = '\0'; // Initialize with null character
Wire.requestFrom(CARDKB_ADDR, 1); // Request one byte from the CardKB
if (Wire.available()) {
key = Wire.read(); // Read the byte from the CardKB
}
return key; // Return the key (or null if nothing was read)
}
// Update WPM and timing variables based on new WPM
void updateWpmTiming() {
dotDuration = 1200 / wpm;
dashDuration = dotDuration * 3;
elementSpace = dotDuration;
letterSpace = dotDuration * 3;
wordSpace = dotDuration * 7;
}
void setup() {
Serial.begin(9600);
pinMode(relayPin, OUTPUT);
pinMode(ledPin, OUTPUT); // Set the LED pin as OUTPUT
Wire.begin(); // Initialize I2C communication with the CardKB
// Enable internal pull-up resistors for the switch pins
pinMode(speedSwitchA, INPUT_PULLUP);
pinMode(speedSwitchB, INPUT_PULLUP);
digitalWrite(13, HIGH); //connect this to the centre pin of the speed switch
updateWpmTiming(); // Set initial WPM and timing values
}
void loop() {
// Read the current position of the slide switch
readSpeedSwitch();
// Read key from CardKB
char c = readCardKB();
if (c != '\0') { // If a key was pressed
Serial.print("Key pressed: ");
Serial.println(c);
const char* morse = getMorseCode(toupper(c)); // Convert to uppercase and get Morse code
if (morse[0] != '\0') { // If valid Morse code
transmitMorse(morse);
} else if (c == ' ') { // Handle space between words
delay(wordSpace);
}
}
}
KK2 tricopter complete, also crashed on maiden flight, broke the servo, the frame remained rock solid, my fault for using a plastic geared servo.
Replaced it with an MG servo, flies great.
Rebuilding my KK2.0 based tricopter in 250 style frame fully 3D printed.
My new UMX Timber Turbo 😊
The most docile and fun thing to fly, it's really lightweight, with full flaps engaged it lifts off effortlessly, even hand launching is a breeze, no need to throw, just a push and it takes off.
If you're new to the hobby, I highly recommend this plane, very beginner friendly.
I recommend not flying in wind over 10mph due to its small size and weight
Horizon Hobby recommends a battery 3s 350mAh, I was flying a 3s 450mAh.
I do have an 850mAh 3s lipo but it's heavier than my 450mAh, so it could make it nose-heavy, meaning I'll have to move it back, the only issue with that is the FC with the servos are right behind the battery, so there isn't much room to move it back, the 450 battery seemed about right.
😊☁️
Close up macro of my nixie clock
Update on the 3D printed plane.
I've installed all the electronics and it's ready for a maiden flight, I will hook it up to the laptop to make sure everything is set correctly, then check the CG, fit the prop and fly 🙂
It's my 10 year anniversary on Tumblr 🥳
Got a new 3D printer, the Bambu Labs P1P, after using it to print its own enclosure, I loaded it with red PLA, downloaded the Eclipson model A plane and printed it in 2 days 😊
A new wing build,
Designed Autodesk Fusion 360 on an M1 MacBook Air and printed using my CTC printer that's around 8 years old.
I'm using tough PLA.
It had its maiden flight today, flew nice and level until the glue holding one of the wings on let go, fortunately it was on the ground when it happened, so just reattached it with a little more glue then I'd used before, it's holding well.
If the weather holds out I'll take it for another flight.
Pizza box flying wing, made entirely from one pizza box and two toilet roll centres for the EDF motor.
I'm using a Frsky nano receiver going into a FC151 dualsky unit.
Two 9g servos.
This is the second of two wings I've built this weekend, the first failed the test fight, as I stupidly forgot the centre spar and the wing flattened out, caused loss of lift. 🤣
This thing needs a name.
This is the state of the oled display on my Pi-Star hotspot, I set it to show all pixels on with no other text displayed, the worn parts of the screen are clearly visible.
It’s burned in after 4 years of constant use.
Hazy Autumn Sunset taken with my Mavic Pro