
Osborne floppy emulator
khaddra/osborne-floppy-emulator
Floppy disk drive emulator for the Osborne 1. Unfinished.

External VFO controller with magnetic encoder for the Xiegu G90 HF transceiver
Catvfoctrl is an open-source printed circuit board by xflyingcat, from the xflyingcat/vfo_controller repository on GitHub, published under the MIT licence. It is a 2-layer board of 56 × 50 mm with 55 parts on 35 nets, routed with 561 tracks and 116 vias.
It is built around the STM32F103C8T6, LM1117-3.3V and FDLL4148, with the PC817XNNIP0F and SK14 among its other parts. Its parts include 19 resistors, 17 capacitors, 6 connectors, 4 ICs and 1 crystal. It belongs with the radio and wireless boards and the STM32 boards of this library.

📺 Youtube video: VFO controller in action
Выносной магнитный валкодер (пульт управления) для КВ-трансивера Xiegu G90.
Проект разработан на базе неблокирующих конечных автоматов (FSM) для воссоздания классического «аналогового» и тактильно приятного ощущения плавной настройки, которого так не хватает штатным энкодерам.
Официальная страница проекта: https://xflyingcat.ru/catvfoctrl.html
Оптимизированный тайминг (50 мс) для плавной настройки: Опрос дельты энкодера происходит с квантом времени 50 мс. Управляющий пакет отправляется в трансивер только при вращении вала. Это обеспечивает плавность настройки без задержек и исключает перегрузку шины CAT.
Магнитный энкодер (MT6701): Высокоточный бесконтактный датчик, настроенный на фиксированные 400 событий на оборот. При шаге 10 Гц это дает 4 кГц на оборот.
Аппаратный уровень (STM32F103):
TIM1 в 16-битном режиме.DMA1_Channel4), что освобождает процессор от ожидания отправки байт.Фильтрация эха: На однопроводной шине CI-V контроллер автоматически отфильтровывает собственное эхо отправленных пакетов, реагируя только на входящие сообщения, адресованные мастеру (THIS_MACHINE_ADDRESS = 0xE0).
Двусторонняя синхронизация (Таймаут 500 мс): Если ручка пульта статична более 500 мс, контроллер запрашивает текущую частоту у Xiegu G90 (команда 0x25 0x00). Это предотвращает «скачки» частоты при ручной перестройке на самом трансивере или смене диапазона.
Управление шагом (10 Гц / 1 Гц): Переключение шага происходит при длительном нажатии кнопки LOCK. При возврате с точности 1 Гц на шаг 10 Гц алгоритм автоматически выполняет математическое округление частоты до десятков ((freq / 10) * 10), убирая дробный «хвост».
Решение проблемы PTT Xiegu G90: Трансивер не имеет стандартного нормализованного входа PTT (под простую педаль с замыканием линии на землю). Данный пульт полностью решает эту проблему: вы подключаете обычную педаль в гнездо 3.5 мм пульта, при замыкании цепи на землю контроллер переводит трансивер на передачу по шине CAT (команда 0x1C).
Защита от залипания PTT (Anti-Stick Watchdog): Для линии PTT реализован таймер безопасности: при непрерывном удержании передачи более 2 минут, контроллер принудительно отключает PTT по CAT для защиты выходного каскада трансивера от перегрева.

Единый пучок длиной 0.5 м (Питание DC, CAT Jack 3.5мм(штеккер), PTT Jack 3.5мм(гнездо)), введенный через гермоввод.


External VFO controller with magnetic encoder for the Xiegu G90 HF transceiver based on non-blocking Finite State Machines (FSM).
This project was designed to recreate the classic, tactilely pleasant "analog" feel of smooth tuning, which stock detent encoders lack.
Project Homepage: https://xflyingcat.ru/catvfoctrl.html
Smooth Tuning Response (50 ms): Encoder delta polling occurs with 50 ms time quantum. A CAT packet is transmitted only when a physical shaft rotation is detected. This provides absolute tuning smoothness with zero lag and prevents transceiver CAT bus overloading.
Magnetic Encoder (MT6701): High-precision contactless 14-bit sensor configured for a fixed 400 events per revolution. With a 10 Hz tuning step, this delivers 4 kHz per revolution.
Hardware Level (STM32F103):
TIM1 timer peripheral in 16-bit mode.DMA1_Channel4), bypassing CPU wait cycles.Echo Filtering: On the single-wire CI-V bus, the controller automatically filters out its own transmitted echo packets by validating the destination address (THIS_MACHINE_ADDRESS = 0xE0).
Bidirectional Sync (500 ms Timeout): If the VFO knob is idle for >500 ms, the controller automatically polls the Xiegu G90 for its current frequency (using advanced 0x25 0x00 command). This prevents frequency "jumps" if you change bands directly on the radio.
Step Control (10 Hz / 1 Hz): Step size switching is bound to a long press of the LOCK button. When returning to 10 Hz, the frequency is automatically rounded to the nearest tens of Hz ((freq / 10) * 10) to clean up fractional offsets.
Xiegu G90 Non-Normalized PTT Fix: The stock transceiver lacks a standard, normalized PTT input for simple footswitches with ground-keying. This controller completely fixes the issue: you plug any standard pedal into the VFO's 3.5mm jack, press it and the MCU instantly triggers transmission via digital CAT commands (0x1C command).
Industrial Grade PTT Safety (Anti-Stick Watchdog): The PTT line features a built-in safety watchdog: if the PTT remains engaged for more than 2 minutes, the transmission is forcefully aborted via CAT to protect the radio's PA stage from overheating.

Integrated 0.5-meter harness (DC Power, CAT 3.5mm Jack/Plug, PTT 3.5mm Jack/Socket) routed via a cable gland.


| Qty | Value | Footprint | References |
|---|---|---|---|
| 11 | 100N | mylib:CAP0805 | C1, C4, C5, C8, C10, C11, C12, C13, C15, C17, C18 |
| 6 | 100 | mylib:RES0805 | R1, R2, R5, R6, R7, R8 |
| 6 | 10K | mylib:RES0805 | R4, R9, R10, R11, R16, R18 |
| 3 | 22uF 25V | CTRLNLOAD:C1206 | C2, C7, C16 |
| 3 | 330 | mylib:RES0805 | R13, R14, R15 |
| 3 | 4K7 | mylib:RES0805 | R12, R17, R19 |
| 2 | , | ||
| 2 | 22PF | mylib:CAP0805 | C6, C9 |
| 2 | SMBJ5.0A-E3/52 UNIPOLAR | mylib:SMA | VD3, VD4 |
| 1 | 1K | mylib:RES0805 | R3 |
| 1 | 1K/100MHZ | mylib:L0805 | FB1 |
| 1 | 22uF 10V | mylib:CAP0805 | C14 |
| 1 | 78M05 | CTRLNLOAD:SOT252 | U2 |
| 1 | 8 MHz | mylib:QUARTZ_TH | Y1 |
| 1 | Buttons | CTRLNLOAD:JST3 | CN4 |
| 1 | CAT | CTRLNLOAD:JST3 | CN3 |
| 1 | FDLL4148 | mylib:MLL34 | VD2 |
| 1 | LEDS | CTRLNLOAD:JST4 | CN5 |
| 1 | LM1117-3.3V | zmirt:SOT252 | U3 |
| 1 | MT6701 | mylib:MT6701 | U4 |
| 1 | PC817XNNIP0F | mylib:P817_SMD | PC1 |
| 1 | PLS4 | CTRLNLOAD:CON1x4 | J1 |
| 1 | PTT input | CTRLNLOAD:JST2 | CN2 |
| 1 | Power | CTRLNLOAD:JST2 | CN1 |
| 1 | SK14 | mylib:SK14 | VD1 |
| 1 | STM32F103C8T6 | CTRLNLOAD:STM-LQFP48_L | U1 |
It measures 56 × 50 mm and has 2 copper layers, 1.59 mm thick.
55 parts, built around the STM32F103C8T6, LM1117-3.3V, FDLL4148 and PC817XNNIP0F. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the xflyingcat/vfo_controller repository on GitHub, at the commit this page was made from: the board is hardware/kicad/catvfoctrl.kicad_pcb and its schematic hardware/kicad/catvfoctrl.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

khaddra/osborne-floppy-emulator
Floppy disk drive emulator for the Osborne 1. Unfinished.


Pongkemon01/Zeabus-Elec-Circuit-Peripheral_bridge
Bridge circuit for several peripheral



PaulBailey-1/motor-master
The board can also be connected to motors through the CAN bus. Connect one end of the CAN chain to the CAN connector on the board and the other end to the TERM connector, or use another termination resistor.

perja12/preheating_station_controller
Controller for the Youyue 946c preheating station.
