Compacte Analog Trim Tab Wiel voor FlightGear met Arduino Nano
Onderdelen en Benodigdheden
| Arduino Nano R3 (of compatibel) | 1 |
| Draaipotmeter (10 kΩ, lineair) | 1 |
| Condensator 100 µF (stroomvlak filtering) | 1 |
| Adafruit SSD1306 0.96" OLED (I2C, 128×64) | 1 |
| Draadbruggen | 1 set |
Apps en Online Diensten
- Arduino IDE
- Anaconda (voor Python omgeving)
- FlightGear (vluchtsimulator)
Over Dit Project
Dit project realiseert een compacte, analoge trim-wiel controller voor de elevatortrim in FlightGear. De Arduino leest de potentiometer uit en stuurt de waarde via seriële poort. Een Python-script zet dit om in UDP-pakketten die FlightGear begrijpt via het Generic Protocol.
Wat is een Trim Wiel?
Een trim-wiel stelt de pilot in om de elevatortrim (trim-tab) in te stellen, zodat het vliegtuig een bepaalde pitch-houding handhaaft zonder continue stuurkracht. In FlightGear wordt dit gemapped op /controls/flight/elevator-trim.
Benodigde Python Libraries
Installeer via Anaconda Prompt:
conda install -c anaconda pyserial
# socket en sys zijn standaard in Python
Drie Scripts
- Arduino Sketch (
arduinoElevatorTrimOLED.ino) – leest potmeter, stuurt seriële data, toont gauge op OLED. - Python Script (
arduinoElevatorTrim.py) – leest seriële data, stuurt UDP naar FlightGear. - XML Protocol (
arduinoElevatorTrim.xml) – FlightGear generic protocol definitie.
Arduino Sketch Details
Vereist de U8glib library. Pas regel 2 aan voor uw display type:
#include <U8glib.h>
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0); // I2C
De map() functies vertalen de 0-1023 ADC waarde naar trim-waarde (-100 tot +100) en naald-positie (0-90 graden). Draairichting omkeren? Wissel de laatste twee argumenten van map().
Python Script Configuratie
host = "localhost" // of 127.0.0.1
port = 21567 // vrije UDP poort
tty = "COM4" // Arduino seriële poort (check Arduino IDE)
Let op: Sluit de Serial Monitor in de Arduino IDE voordat u het Python-script start, anders is de poort bezet.
Start het script vanuit de terminal:
python c:\pad\naar\arduinoElevatorTrim.py
FlightGear Configuratie
- Plaats
arduinoElevatorTrim.xmlin<FlightGearRoot>/data/protocol/. - Start FlightGear met extra argument:
--generic=socket,in,30,localhost,21567,udp,arduinoElevatorTrim
Uitleg: input, 30 Hz, localhost, poort 21567, UDP, protocol bestand arduinoElevatorTrim.
Code Overzicht
Arduino Sketch
Leest potmeter (A6), berekent genormaliseerde waarde (-1.0 tot +1.0), stuurt via Serial. Tekent een mooie analoge gauge met naald op de OLED.
Python Script
Eenvoudige bridge: leest regel per regel van seriële poort, stuurt ongewijzigd door naar UDP socket. Voorkomt duplicaten door vorige regel te onthouden.
XML Protocol
<?xml version="1.0"?>
<PropertyList>
<generic>
<input>
<line_separator>\n</line_separator>
<var_separator>,</var_separator>
<chunk>
<name>Elevator trim</name>
<node>/controls/flight/elevator-trim</node>
<type>float</type>
</chunk>
</input>
</generic>
</PropertyList>
Schema
Potmeter: middelste tap → A6, uitersten → 5V en GND. 100µF condensator parallel over de potmeter voor ruisonderdrukking. OLED: SDA→A4, SCL→A5, VCC→3.3V/5V, GND→GND.
GitHub Repository
Productieproces
- Arduino Digitale Dobbelsteen: Bouw Je Eigen LCD-willekeurige Getalgenerator
- Een Arduino Iron Man bouwen: onderdelen, sensoren en stapsgewijze handleiding
- Analoge-stijl LED Persistence-of-Vision Klok – DIY Arduino Nano Project
- Find Me: Slimme Item Locator met Arduino en Bluetooth
- Bouw een Functionele, Arduino-aangedreven 3D-geprinte Robotarm – Stap-voor-Stap Handleiding
- DIY Arduino Luchtbevochtiger Controller met Relais – Veilige Hoogspanningsopstelling
- NeoPixel Matrix Pong op Arduino Nano: Bouw je eigen neon Pong-spel
- Bouw een Aangepaste Arduino Joystick Stuurwiel voor Gaming
- Bouw een krachtige FM-radio ontvanger met Arduino en TEA5767 module
- Arduino 101: Bouw een teller met DHT11 sensor & LCD display
- Bouw een Arduino RGB Kleur Mixer – Stap-voor-stap Handleiding