The Wiring ...
I have not drawn a complete wiring diagram because some things may change during the programming, after which I can make a final diagram.
So I'll just describe what I did in text form.
I used an Arduino Mega 2560, see pinout above.
(source https://store.arduino.cc/arduino-mega-2560-rev3) |
I used an Arduino Mega 2560, see pinout above.
Part of this project can probably also be made with an Arduino UNO, or even a Nano.
Just change the pins and change the code accordingly and see how far you get ...
If you need more pins for buttons, you can apply the analog port trick: add up to 5 buttons on one analog pin with a resistor network.
(see https://wiki.dfrobot.com/Arduino_LCD_KeyPad_Shield__SKU__DFR0009_ )
The TFT display can be changed for a simpler I²C controlled LCD display to save some wires and memory.
Also, I didn't use the extra hardware serial ports on the Mega, but I used SoftwareSerial, so the code should work on the UNO and Nano as well.
The only problem will be that you can't use a rotary encoder AND a SoftwareSerial port at the same time, since both need the interrupt pins, and the UNO/Nano only have two of those (D2 and D3).
So you will have to make a menu with some buttons for navigating. See this example:
https://educ8s.tv/arduino-nokia-5110-menu/
Just change the pins and change the code accordingly and see how far you get ...
If you need more pins for buttons, you can apply the analog port trick: add up to 5 buttons on one analog pin with a resistor network.
(see https://wiki.dfrobot.com/Arduino_LCD_KeyPad_Shield__SKU__DFR0009_ )
The TFT display can be changed for a simpler I²C controlled LCD display to save some wires and memory.
Also, I didn't use the extra hardware serial ports on the Mega, but I used SoftwareSerial, so the code should work on the UNO and Nano as well.
The only problem will be that you can't use a rotary encoder AND a SoftwareSerial port at the same time, since both need the interrupt pins, and the UNO/Nano only have two of those (D2 and D3).
So you will have to make a menu with some buttons for navigating. See this example:
https://educ8s.tv/arduino-nokia-5110-menu/
Now here is what I wired so far ...
First come all the pushbuttons:
First come all the pushbuttons:
4 BIG Memory buttons (short press = once, long
press = repeat)
M1 <>
A11 Send MEM1
M2 <>
A12 Send MEM2
M3 <>
A13 Send MEM3
M4 <>
A14 Send MEM4
I will probably change these, as I can only send the VOICE memories via CI-V command.
It's a shame that Icom didn't provide commands for the CW/RTTY memories!
One solution is to mimic the resistor network at MIC pin 3, and use transistors to key them, like used by ON7EQ in his Arduino memory keyer.
(see https://www.qsl.net/on7eq/en/ under "Projects": ARDUINO ICOM Auto Keyer)
I will probably change these, as I can only send the VOICE memories via CI-V command.
It's a shame that Icom didn't provide commands for the CW/RTTY memories!
One solution is to mimic the resistor network at MIC pin 3, and use transistors to key them, like used by ON7EQ in his Arduino memory keyer.
(see https://www.qsl.net/on7eq/en/ under "Projects": ARDUINO ICOM Auto Keyer)
8 SMALL pushbuttons
B1 <>
D31 Cycle TX POWER : 5W > 10W
> 50W > 100W (levels settable via menu)
B2 <>
D32 TUNE (put rig in mode CW , set power to 5W* as long as button is
pressed, then reset to previous MODE and POWER).
* Tuning power settable via menu.
pressed, then reset to previous MODE and POWER).
* Tuning power settable via menu.
B3 <>
D33 BAND DOWN
B4 <>
D34 BAND UP
B5 <>
D35 TOGGLE USB AF <> IF
B6 <>
D36 TOGGLE KEY TYPE STRAIGHT
KEY <> PADDLE
B7 <>
D37 Cycle Band stack registers
B8 <>
D38 PF Key ... not sure what to do yet, maybe assign some functions per menu,
initiate a CW decoder, ... ?
initiate a CW decoder, ... ?
Rotary Encoder (model without breakout board)
GND
<> GND
A <> D2
B <> D3
SW <>
D4
Color
Display 160 x 128 pixels = Sainsmart
1.8" TFT ST7735,
see info https://randomnerdtutorials.com/guide-to-1-8-tft-display-with-arduino/
see info https://randomnerdtutorials.com/guide-to-1-8-tft-display-with-arduino/
Connect these pins
Arduino UNO or Mega
LED 3.3 V
SCK 13 or 52
SDA 11 or 51
A0/DC 9
RESET 8
CS 10 or
53
GND GND
VCC 5 V
The SPI
MISO signal (Master IN Slave OUT, pin 12 (UNO) or pin 50 (Mega)) is not used
for the TFT display, it is WRITE only. I'll have to connect it later if I would do something with the SD card.
Switches
I used DPDT switches, but using only one contact, so SPDT switches are also OK.
Also, I mounted too many switches because I had the space on the front panel, but don't really know what to use them for, hi.
Well, I may find a use for them in the future ... anyone have a good idea?
I used DPDT switches, but using only one contact, so SPDT switches are also OK.
Also, I mounted too many switches because I had the space on the front panel, but don't really know what to use them for, hi.
Well, I may find a use for them in the future ... anyone have a good idea?
From left
to right
SW1 ICOM MIC <> HEIL MIC, this switches only the microphone line.
Common = MIC to transceiver pin 1
Left = MIC in from front J1, pin 1
Right = MIC in from HEIL Headset , J3
Common = MIC to transceiver pin 1
Left = MIC in from front J1, pin 1
Right = MIC in from HEIL Headset , J3
Problem to be solved : I have a Heil Proset Elite with the dynamic element, not the iC element.
So the level is a bit low, and I have to adjust the transceiver settings. I tried using a step transformer, but that didn't help much. To be investigated ...
SW2 future
use
SW3 future
use
SW4 SPEAKER <> HEADPHONES
Common = SPK IN from RIG from J11
Left = External SPKR to J10
Right = HEIL Headphone to J3 , with in series 6 Ohm , parallel on J3 2.2 Ohm (attenuator)
Common = SPK IN from RIG from J11
Left = External SPKR to J10
Right = HEIL Headphone to J3 , with in series 6 Ohm , parallel on J3 2.2 Ohm (attenuator)
The speaker output from the IC-7300 must be connected ot the controller, and a good quality
external station speaker if you need speaker audio
external station speaker if you need speaker audio
Jacks
FRONT, left to right
J1 Icom Original MIC input (8 pin round connector)
NOTE: For
the HM-219 and the SM-50, also the FREQ UP/DOWN line must be wired if you want
to use the UP/DOWN buttons, or another keypad.
NOTE : for
Desk Microphones SM-30 and SM-50, the +8V line must be wired! (= Power supply
for the electret microphone is taken from this supply, nont from the DC on the MIC pin!)
Connect PTT input (pin 5) to PTT line on MIC OUT Cable, via a 1N4148 diode (cathode to J1)
Connect PTT input (pin 5) to PTT line on MIC OUT Cable, via a 1N4148 diode (cathode to J1)
J2 HEADPHONE OUT for HEIL Headset (TIP +
RING connected)
J3 MIC input from HEIL headset (NO DC needed for dynamic element)
BACK,
left to right
J4 MAINS POWER INPUT
Connect J5
to J8 all in parallel : GND to GND, and TIP to TIP
J5 COOTIE KEY (optional)
J6 BUG (optional)
J7 STRAIGHT KEY
Connect also RING to RING at J8 and J9
J8 PADDLE for electronic key
J9 KEY OUT to rig (connect to rig KEY IN)
J5 COOTIE KEY (optional)
J6 BUG (optional)
J7 STRAIGHT KEY
Connect also RING to RING at J8 and J9
J8 PADDLE for electronic key
J9 KEY OUT to rig (connect to rig KEY IN)
J10 SPEAKER OUT (connect a station speaker here)
J11 CI-V (connect to the CI-V port at the rig)
Connect per following diagram, the RX pin must be an interrupt capable pin.
J12 FOOT or HAND PTT SWITCH IN
(use an appropriate type of jack for your model of switch)
(use an appropriate type of jack for your model of switch)
Connect PTT
line to PTT on MIC OUT Cable, via 1N4148 diode (cathode to J12)
MIC out
cable to Icom MIC IN
Wire these lines MIC, MIC GND, PTT GND, PTT, +8V , UP/DOWN
Wire these lines MIC, MIC GND, PTT GND, PTT, +8V ,
Internal
Power supply
GND
<> GND
+5V <> Arduino 5V
I haven't done this yet, I'm still powering the Mega via the USB connector while I'm testing some code.
So far it looks like a rats nest ... I hope to find the time to rebuild the whole thing nicely when the programming and test phase are over ...
To be continued in part 3 ...
73,
Luc ON7DQ/KF0CR
To be continued in part 3 ...
73,
Luc ON7DQ/KF0CR