公式の Arduino から Arduino Nano Every というマイコンが販売されたので、早速入手してみました。
Arduino Uno や nano はフラシュメモリの容量が小さいため、Keyer の持つ機能を制限して使用する必要がありましたが、今回新たに登場した nano every は搭載されているマイコンも ATMega4809 に性能アップし、そのメモリ容量も 50% ほどアップしました。
このため、CW Keyer のオプション keyer_features_and_options.h
からコメントを外して多くの機能を活性化したとしても、メモリエラーに陥ることなくコンパイルが通るんじゃないかと思い、今回 every を買ってみました。
(マイコンチップ単体のメモリ比較)
型式 | 動作電圧 | I/O数 | Flash | SRAM | EEPROM |
---|---|---|---|---|---|
ATMega328 | 2.7~5.5V | 23 | 32K | 2K | 1K |
ATMega1284 | 1.8~5.5V | 32 | 128K | 16K | 4K |
ATMega4809 | 1.8~5.5V | 34 | 48K | 6K | 256 |
今回新たに販売された Nano ファミリーには、幾つかのバリエーションがあり、Wi-Fi や Bluetooth が使えるバージョンもありますが、今回は K3NG の CW Keyer の動作を試すことが目的であり、無線機能の使用は想定にないため、手軽に扱えて(無線付きは技適の関係で届出が必要なため)、しかもイチバン安価な標準の every($9.90)を選択することにしました。
従来の Nano と、ピン数、配置が同じなので、これまで作ったボードの置き換えが可能です。
これまでの ATmega1284 と同じ keyer_features_and_options.h
の設定でコンパイルしてみました。
ボードの設定を Arduino Nano Every にして、ATMEGA4809 を選択します。
コンパイルできました。
書き込みが成功しました。
とりあえず今日のところは、
コンパイルが通り、書き込みができることを確認しました。
今後はこれまでの ATmega1284 を使ったオリジナルボードから、この nano every に移行し、シングルボードに作り直していきたいと思います。
■ ■ ■
以下、今回のコンパイルで設定した keyer_features_and_options.h
です。
// compile time features and options - comment or uncomment to add or delete features // FEATURES add more bytes to the compiled binary, OPTIONS change code behavior#define FEATURE_COMMAND_BUTTONS
#define FEATURE_COMMAND_LINE_INTERFACE // Command Line Interface functionality
#define FEATURE_MEMORIES // on the Arduino Due, you must have FEATURE_EEPROM_E24C1024 and E24C1024 EEPROM hardware in order to compile this
#define FEATURE_MEMORY_MACROS
#define FEATURE_WINKEY_EMULATION // disabling Automatic Software Reset is highly recommended (see documentation)
// #define FEATURE_BEACON
// #define FEATURE_TRAINING_COMMAND_LINE_INTERFACE
#define FEATURE_POTENTIOMETER // do not enable unless you have a potentiometer connected, otherwise noise will falsely trigger wpm changes
// #define FEATURE_SIDETONE_SWITCH // adds switch control for the sidetone output. requires an external toggle switch (assigned to an arduino pin - see keyer_pin_settings.h).
// #define FEATURE_SERIAL_HELP
// #define FEATURE_HELL
#define FEATURE_PS2_KEYBOARD // Use a PS2 keyboard to send code - Change keyboard layout (non-US) in K3NG_PS2Keyboard.h. Additional options below.
// #define FEATURE_USB_KEYBOARD // Use a USB keyboard to send code - Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
// #define FEATURE_CW_COMPUTER_KEYBOARD // Have an Arduino Due or Leonardo act as a USB HID (Human Interface Device) keyboard and use the paddle to "type" characters on the computer -- uncomment this line in ino file: #include <Keyboard.h>
// #define FEATURE_DEAD_OP_WATCHDOG
// #define FEATURE_AUTOSPACE
// #define FEATURE_FARNSWORTH
// #define FEATURE_DL2SBA_BANKSWITCH // Switch memory banks feature as described here: http://dl2sba.com/index.php?option=com_content&view=article&id=131:nanokeyer&catid=15:shack&Itemid=27#english
// #define FEATURE_LCD_4BIT // classic LCD disidefplay using 4 I/O lines
// #define FEATURE_LCD_8BIT // classic LCD display using 8 I/O lines
// #define FEATURE_LCD_ADAFRUIT_I2C // Adafruit I2C LCD display using MCP23017 at addr 0x20
// #define FEATURE_LCD_ADAFRUIT_BACKPACK // Adafruit I2C LCD Backup using MCP23008 (courtesy Josiah Ritchie, KE0BLL)
#define FEATURE_LCD_YDv1 // YourDuino I2C LCD display with old LCM 1602 V1 ic
// #define FEATURE_LCD1602_N07DH // http://linksprite.com/wiki/index.php5?title=16_X_2_LCD_Keypad_Shield_for_Arduino
// #define FEATURE_LCD_SAINSMART_I2C
// #define FEATURE_LCD_FABO_PCF8574 // https://github.com/FaBoPlatform/FaBoLCD-PCF8574-Library
// #define FEATURE_LCD_MATHERTEL_PCF8574 // https://github.com/mathertel/LiquidCrystal_PCF8574
// #define FEATURE_LCD_HD44780
#define FEATURE_CW_DECODER
// #define FEATURE_SLEEP // go to sleep after x minutes to conserve battery power (not compatible with Arduino DUE, may have mixed results with Mega and Mega ADK)
// #define FEATURE_ROTARY_ENCODER // rotary encoder speed control
// #define FEATURE_CMOS_SUPER_KEYER_IAMBIC_B_TIMING
// #define FEATURE_USB_MOUSE // Uncomment three lines in k3ng_keyer.ino (search for note_usb_uncomment_lines)
// #define FEATURE_CAPACITIVE_PADDLE_PINS // remove the bypass capacitors on the paddle_left and paddle_right lines when using capactive paddles
// #define FEATURE_LED_RING // Mayhew Labs Led Ring support
// #define FEATURE_ALPHABET_SEND_PRACTICE // enables command mode S command - created by Ryan, KC2ZWM
// #define FEATURE_COMMAND_MODE_PROGRESSIVE_5_CHAR_ECHO_PRACTICE // enables command mode U
// #define FEATURE_PTT_INTERLOCK
// #define FEATURE_QLF
// #define FEATURE_EEPROM_E24C1024
// #define FEATURE_STRAIGHT_KEY
// #define FEATURE_DYNAMIC_DAH_TO_DIT_RATIO
// #define FEATURE_PADDLE_ECHO
// #define FEATURE_STRAIGHT_KEY_ECHO
// #define FEATURE_AMERICAN_MORSE
// #define FEATURE_4x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
// #define FEATURE_3x4_KEYPAD // code contributed by Jack, W0XR - documentation: https://github.com/k3ng/k3ng_cw_keyer/wiki/380-Feature:-Keypad
// #define FEATURE_SEQUENCER : : 以下、修正なし