Arduino Hellschreiber

Arduino Hellschreiber

Hellschreiber M0IFA (Intermediate Frequency Amplifier) Lots of digital modes • If you start to look at the lower part of ham bands you find lots of digital comms Examples PSK31 PSK63 RTTY HELL PACTOR OLIVIA CONTESTIA hfradio.org.uk/html/digital_modes.html Fuzzy comms? • Lots of things today are Digital, ON|OFF, but how about the Analog world - we humans are analog! • Modes that are analogue, human readable, uncoded, direct viewing or printing modes, are called ‘Fuzzy'. • Examples: Morse, Fax, SSTV, NBTV…Hellschreiber Hellschreiber • Sending text in pulses over radio or telephone line • Divides each text character into pixels in a glyph (a font is a set of glyphs, made of pixels) • Sending the pixels as pulses • German name, “bright writing”. A pun on name of inventor Rudolf Hell, patented in 1929 Hellschreiber • First sent by radio by keying a CW TX, dot by dot • ON = black spot (pixel), OFF = white space • Called Feld-Hell (“field” comms by German army, inventor “Mr Hell”) • Good immunity to interference, also clandestine as nothing sent until key pressed • Graphic, so can transmit any character, e.g Chinese, Korean, Arabic How does it work? Pulses sent for each pixel 1 2 Sent twice. Allows for mistiming 3 Sequencing • Pixels are sent at different Frequencies or Tones • MT-Hell, Multi-Tone Hell, sends all Tones for a vertical column of pixels at once • S/MT-Hell, Sequential Tones sends Tones for each pixel in sequence • Slow S/MT-Hell very good under poor conditions, as slow as one pixel/second Official Hell font • Font is 7 x 14 pixels • First column contains “sync” pulse, starts paper moving. Paper auto- stops after six columns (one character) • Dot timing 112.5 baud 8.16ms), for a 7x7 font = 2.5ch/sec, or 25wpm. Vertical column timing is fixed at 17.5cols/sec • Can be sent much more slowly for high S/N ratio • Pixels are read up bottom to top, left to right columns My Font & Glyph coding b7 Freq Time b0 • You can chose Tone Frequencies & Tone Time • Pixels of the font are read “up columns” b0 to b7 • Font can be official 7x14 or 5x7, 5x5, 3x5. (my code) • Tone frequency standard is USB, b0 = low freq • Frequency/Tone spacing can be very small (1-2Hz) so BW can be very small (7-14Hz). • Time of pixels can be anything, milliseconds to seconds Transmitter Arduino UNO DDS BPF, PA I2C Si5351 Message Fixed or KB input • Very simple electronics, Arduino + DDS • For low sidebands should have sloping sides to pulses… • Can use breadboard made in BARS Tech Group (info available) Transmitter Arduino UNO and Si5351 DDS module with LCD display and Rotary Encoder C++ code byte glyphs[][6] = { {' ', 0x00, 0x00, 0x00, 0x00, 0x00, }, {'/', 0x04, 0x08, 0x10, 0x20, 0x40, }, {'0', 0x7C, 0x8A, 0x92, 0xA2, 0x7C, }, {'1', 0x00, 0x42, 0xFE, 0x02, 0x00, }, {'2', 0x42, 0x86, 0x8A, 0x92, 0x62, }, Glyph table in Hex 5 cols {'3', 0x84, 0x82, 0xA2, 0xD2, 0x8C, }, {'4', 0x18, 0x28, 0x48, 0xFE, 0x08, }, {'5', 0xE4, 0xA2, 0xA2, 0xA2, 0x9C, }, {'6', 0x3C, 0x52, 0x92, 0x92, 0x0C, }, {'7', 0x80, 0x8E, 0x90, 0xA0, 0xC0, }, {'8', 0x6C, 0x92, 0x92, 0x92, 0x6C, }, {'9', 0x60, 0x92, 0x92, 0x94, 0x78, }, {'A', 0x7E, 0x88, 0x88, 0x88, 0x7E, }, {'B', 0xFE, 0x92, 0x92, 0x92, 0x6C, }, Read Msg {'C', 0x7C, 0x82, 0x82, 0x82, 0x44, }, {'D', 0xFE, 0x82, 0x82, 0x44, 0x38, }, Char by char {'E', 0xFE, 0x92, 0x92, 0x92, 0x82, }, {'F', 0xFE, 0x90, 0x90, 0x90, 0x80, }, {'G', 0x7C, 0x82, 0x92, 0x92, 0x5E, }, {'H', 0xFE, 0x10, 0x10, 0x10, 0xFE, }, {'I', 0x00, 0x82, 0xFE, 0x82, 0x00, }, {'J', 0x04, 0x02, 0x82, 0xFC, 0x80, }, 0x7E {'K', 0xFE, 0x10, 0x28, 0x44, 0x82, }, {'L', 0xFE, 0x02, 0x02, 0x02, 0x02, }, Look up pixels of {'M', 0xFE, 0x40, 0x30, 0x40, 0xFE, }, {'N', 0xFE, 0x20, 0x10, 0x08, 0xFE, }, Glyphs {'O', 0x7C, 0x82, 0x82, 0x82, 0x7C, }, {'P', 0xFE, 0x90, 0x90, 0x90, 0x60, }, {'Q', 0x7C, 0x82, 0x8A, 0x84, 0x7A, }, {'R', 0xFE, 0x90, 0x98, 0x94, 0x62, }, {'S', 0x62, 0x92, 0x92, 0x92, 0x8C, }, {'T', 0x80, 0x80, 0xFE, 0x80, 0x80, }, {'U', 0xFC, 0x02, 0x02, 0x02, 0xFC, }, {'V', 0xF8, 0x04, 0x02, 0x04, 0xF8, }, {'W', 0xFC, 0x02, 0x1C, 0x02, 0xFC, }, {'X', 0xC6, 0x28, 0x10, 0x28, 0xC6, }, {'Y', 0xE0, 0x10, 0x0E, 0x10, 0xE0, }, {'Z', 0x86, 0x8A, 0x92, 0xA2, 0xC2, }, }; Columns Code Send tones for outFreq of each pixel of char Si5351 // take glyphs of message and send void sendMsg(char *m) { int c, i, j; // c scans msg, i & j scan the glyphs & rows int pix; Message // pix scans pixel cols in glyph c = 0; 1 Up to end while (m[c] != '\0') { // scan until end of msg for (i = 0; i < NGLYPHS; i++) { 2 Scan glyphs // scan glyphs, scan all rows to preserve timing if (m[c] == glyphs[i][0]) { // if m[c] found at [i][0] for (j = 1; j <= 5; j++) { 3 If glyph found // read glyphs[j][1] to [j][5] for (pix = 1; pix <= 7; pix++) { read columns // font cols b1-b7 for USB if (bitRead(glyphs[i][j], pix) == 1) { // send pix outFreq(freq + (pix * SHIFT), PIXTIME); // calc output freq } else { delay(PIXTIME); 4 If pixel ‘on’ } } output freq } delay(CHARGAP); } } c++; } } Reception • Any RX, USB • Using SDR on 40m, RX 7076KHz USB frequency TX on 7077kHz Gives 1000Hz tones Sidebands • Example: 2.2Hz tones sent for 220ms each Demo UNO UNO Si5351 Si5351 DCRX LCD LCD Enc A/D MacBook Argo Demo Si5351 DCRX.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    18 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us