Multi Wii Copter LCD Config
About
LCD_Config is a hardware and software solution to program the Multi Wii Copters on flying field, also it contains the possibility to log data while flying and playback the log files to the MultiWiiConf.
Features
- works for Multi Wii Software 1.5 (stable) and 1.6pre
- serial communication with the MultiWii software
- same parameters changeable as in the GUI
- presents sensor data (gyro, nunchuk, acc, barometer), receiver input channels, abd output channels (ESCs and servos)
- simple graphic output for servo channels and inclination angles
- logging to SD cards
- profile management to test different settings
Prerequisites
- an Arduino board Arduino Boards
- Arduino 022 (for SD Card support)
- a LC Display, either using parallel 4 Wires or ShiftReq control (based on the Hitachi HD44780 (or a compatible) chipset, which is found on most text-based LCDs.)
- Some keys, some cable
- latest Arduino Sketch for LCD_Config
Download
(Note: the version of the LCD_Config does not correspond to the version of the MultiWiiCopter software. All listed versions of the LCD_Config work with both MWC v1.5 and v1.6pre.)
V1.50: http://www.rc-heli-fan.org/download/file.php?id=92207
V1.60: http://www.rc-heli-fan.org/download/file.php?id=92263
V2.0 beta: http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=315#p1186998
V2.0: http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=375#p1190414
V2.1: http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=420#p1193837
V2.2: http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=450#p1197679
V2.3: http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=480#p1201705
V2.4: http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&p=1205571#p1205571
V2.5: http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=480#p1208770
V2.6: http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&p=1212892#p1212892
V2.7: http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=540#p1216418
V2.8: http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=600#p1230952
V2.9: http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=690#p1237293
Version History
V0.8 to V1.4 see [1]
V1.50
- check trailing 'A' char in serial communication to detect frame errors,
- KEY_LEFT cancels reading when no serial connection is present (important to reset wrong settings!)
- optimization of format routines (merged two routines, invalid values are displayed as ###)
- bugfix in logging (logMode=-1 was stored in flash, so logging was permanently disabled)
V1.60
- Min/max values show up again (optional)
- Fixed some issues on compiling with different options
V2.0 beta
- Adaptation to MWC version 1.preter6 (new config "Flying Wing", new data format)
- Changed arrangement of parameters in state "0 - Config"
- Bug 'logMode=-1' finally solved
V2.0
- Swapped motors 4 and 5 in 'Esc Out' for versions 1.5 and 1.6prebis
- Changed behaviour of UP and DOWN for consistency (UP decrements, DOWN increments values)
- Added version V1.6
- Output logfiles in LogView format [OPTIONAL] (file numbers starting from 500, extension ".lvw")
- Added JOYSTICK option to replace input buttons by an analog joystick [experimental]
- Display 'invalid' values in graphics
- Heavy optimizations (!) due to space restrictions
- Removed WAIT_FOR_INIT option, changed start state to 31 instead
V2.1
- Bugfix in deserialize() with v1.6
- Joystick handling was improved (calibration, use of pullups, can be used in parallel to buttons)
- Added 'Play LogFile' state
- Easter egg function to display internal configuration :)
- BUGFIX: RC Rate multiplied by factor 2 for MWC Versions >v1.5, minimum of 20% for RC Rate (0% makes no sense)
- Added random offsets in TEST mode
V2.2
- Cancel in Logfile Playback (press LEFT_KEY)
- Settings of "Baud Rate", serialRead() has been adapted to work with different COM speeds
- Greater flexibility in changing the Settings
- (Log) Delay Time was moved to Settings state and is used as the time interval of polling the MWC board
V2.3
- Changed internal representation of state machine and strings
- Support for v1.7pre (I-/P-Level instead of AutoLevelStrength, trigger calibration, 8 instead of 5 receiver
- channels, configuration of activation modes for Aux1/Aux2, ...)
- Software Version is now stored in Logfile
- APC220 Option (disables APC220 module via pin D2 during playback of logfiles, experimental)
V2.4
- Swapped Angle and Baro/Comp/Cycle states
- Added 'Config' parameter to LogFiles, show Config and Version in selectLogFile
- Use of blinking Cursor instead of Arrows in Enter mode
- LogView mode: corrected order of receiver channels
- Greater robustness in serialWrite() method
V2.5
- Simultaneous setting of Roll and Pitch PID values ("2 PID -> Roll/Pitch")
V2.6
- Support for v1.7prebis (replaced v1.7pre) and also v1.7preter
- (Profiles generated with older versions are automatically converted to v.17prebis profiles)
- CHECK_INPUT option to visualize the joystick input (hidden state, press RIGHT key in start state for >1 sec)
- BATTERY_LEVEL option (experimental), visualisation of battery status on LCD and via Status LEDS, 4 warn levels can be defined
- Internal optimizations
V2.7
- Added consistency check in serialRead, removed strange behaviour after framelength errors.
- Improved error handling when communication fails (more detailed description than "Inv. FrameLength")
- Show MWC version in start state
- Show current values in "Settings" state, added blinking cursor when entering values
- Number of Profiles can be configured (constant NUM_PROFILES)
2.7
- Removed BATTERY_LEVEL problem in conjunction with APC220
- Flashing in battery status display to indicate warn levels
- Bugfix in setting of delay time
2.9
- KEY_PIN can be undefined if no cascading Buttons are used
- Changed default values for Version (highest version) and Baudrate (115200)
- Added Option "Dump Buffer" to show the contents of the data buffer when an invalid frame is received (for debugging)
- DEFAULT_BAUDRATE can be configured, USE_DEFAULT_BAUDRATE ignores stored Baudrate params (Baudrate can still be adjusted manually)
- Bugfix in state "Enter R/C Rate / Expo" (no action on RIGHT)
- Bugfix concerning Battery level (removed leading extra byte)
3.0
- Bugfix in "Enter PID Level" state
- deleted JS_INV_SELECT_KEY - the Joystick SELECT Button must be connected to GND.
http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=705#p1238139
3.1
- Support of EagleTree PowerPanel (thx to Danal Estes) and Sparkfun Serial LCD
http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=780#p1257793
Hardware
LCD Keypad Shield
This is the original LCD used with the LCD_Config app:
Schematics: http://www.nuelectronics.com/estore/index.php?main_page=project_lcd
Joystick
Emulation of the four required input buttons via an analog Joystick (like the one used in Wii Nunchuks). Requires two analog input pins and (optional) one digital or analog input pin for the Select key.
Hardware Keys
If you like to use normal hardware keys on digital ports use this schematic to connect them:
http://arduino.cc/en/Tutorial/DigitalReadSerial
Then remove the comment signs // in front of line:
#define HWKEYS
Define the ports to use here:
// Input pins of the hardbuttons: (used when HWKEYS is defined) #define HW_RIGHT 10 #define HW_UP 9 #define HW_DOWN 11 #define HW_LEFT 8 #define HW_SELECT 6
It is possible to controll everything with out the Select key, so you don't need this key.
Shift Register LCD
Using 3 wires interface for the display:
http://www.arduino.cc/playground/Code/LCD3wires
Adjust the ports used here:
ShiftRegLCD lcd(3, 2, 4, 2); // (Datapin, Clockpin, Enablepin or TWO_WIRE [, Lines [, Font]]])
Logging
Connection of SD Card: standard SPI interface, i.e.,
pin 13 SCK SPI clock pin 12 MISO SPI master in, slave out pin 11 MOSI SPI master out, slave in pin 10 SS SPI slave select
Logfiles are written either in binary format, in that way they can be sent to and visualized by the MultiWiiConf software, or (starting from Version 2.0) in LogView OpenFormat, to display them in LogView. A corresponding device file for LogView (.ini) is included in the archive beginning from Version 2.0. For more details, check out www.logview.info (and don't forget to donate :)).
Status LEDs
Primary goal of this option is to give some visual feedback on the internal state when no LCD is connected. Three LEDs are supported, named RED, YELLOW and GREEN (like a traffic light).
The red LED signals errors (slow flashing, e.g., when the application is halted), or recoverable exceptional states (fast flashing, e.g., the app is waiting for input from the serial connection).
Yellow LED: blinking means I/O, it is permanently on when the app is waiting for user input
The green LED signals logging.
LEDs are connected through 220-500 Ohm resistors to some of the unused ports (default: A3 - Red, A4 - Yellow, A5 - Green).
The status leds are also used when the battery status is displayed on the screen. Five different levels can be defined (green, green/yellow, yellow, yellow/red, red).
Port settings are defined here:
// include routines to show the state of the application with three leds // (red: error, yellow: busy/waiting for input, green: logging) #define STATUS_LEDS #define RED_LED A3 #define YELLOW_LED A4 #define GREEN_LED A5
State chart
(the state chart is not up to date!)
Gallery
Schematics as PDF,.PLT, Image
http://www.rc-heli-fan.org/viewtopic.php?p=1185353#p1185353
http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=105#p1178184
http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=120#p1180305
Here some links to already build and working boxes
http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336#p1166512
http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=60#p1171774
http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=60#p1171802
http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=105#p1180155
http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=120#p1180731
http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=135#p1180893
http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=135#p1181027
http://www.rc-heli-fan.org/viewtopic.php?f=255&t=80336&start=135#p1181131