HelloWord-Keyboard - Hanwen Smart Keyboard は、私自身のニーズに合わせて設計した多機能のモジュラー メカニカル キーボードです。

()

Created at: 2022-07-30 17:00:25
Language: C
License: GPL-3.0

【ハンウェン】HelloWord-スマートキーボード

hw1

瀚文
Smart Keyboard は、私が自分用に設計した多機能モジュール式メカニカル キーボードです。

キーボードはモジュラー設計を採用しており、左側の多機能シーン インタラクション モジュールは、さまざまなカスタム コンポーネントに置き換えることができます. デフォルトのものは、電子インク スクリーンと FOC フォース フィードバック ノブを

Dynamic组件
備えたものです. キーボードは ARM ベースです.私が開発したCortex-M.チップのキーボードファームウェアとモジュールファームウェア;キーボード本体はシフトレジスタ方式を使用して最適化されたキースキャン回路を実現します;モジュールとキーボード本体は単独で使用することも、それぞれを通信して呼び出すこともできますシリアル ポート プロトコルを介してその他。

このリポジトリのオープン ソース資料の内容は次のとおりです。

  • Lichuang EDA Professional Edition のファイル形式を提供する、Hanwen フォント ハードウェア設計の 10 個の PCB 設計ソース ファイル
  • シェル設計構造ファイル
  • キーボード本体のファームウェアソースコード(比較的完璧)
  • 動的コンポーネントのファームウェア ソース コード (フレームワークが完了し、さらに APP 拡張 WIP)
  • キーボード二次開発SDK(開発中)

キーボード機能のデモでは、次を参照できます。

注: イシューでは、プロジェクトの開発に関連するトピックについて議論します。無意味なメッセージを送信しないでください。そうしないと、倉庫を見ている人に通知メールが届き、他の人に迷惑がかかります! ! ! 灌漑は、倉庫で話し合うで話し合うことができます!


1. プロジェクトの説明

1.0 アップデートに関する注意事項:

22.7.31 更新:

  • キーボード ハードウェアのすべての設計回路図ファイルを追加します (回路にはまだ修正されていないバグがいくつかあります。たとえば、ビデオのフライング ワイヤなどです。これは、新しいバージョンの PCB プルーフが受信されたときに更新されます。動作確認済み)
  • キーボード ファームウェアのソース コードを追加
  • 動的コンポーネントのソース コードを追加する

1.1 プロジェクトファイルの説明:

1.1.1 ハードウェア

ハードウェア フォルダには、Hanwen キーボードで使用されるすべての回路の回路図と PCB ファイルがあります.現在、EDA プロフェッショナルフォーマットのソース ファイルとガーバー フォーマットのライト ドローイング ファイルは、メーカーによる直接処理用に提供されています.

hw0

以下のボードの合計があります。

  • HelloWord-Keyboard : メイン キーボードの PCB、コントローラーは STM32F103 で、ベースと単独で使用でき、従来のキー入力機能を提供し、完全なキー独立 RGB ライトを備えています。
  • HelloWord-Ctrl : 左の動的コンポーネントの PCB、コントローラーは STM32F405 で、ベースと一緒に単独で使用でき、FOC フォース フィードバック ノブ、電子インク スクリーン ディスプレイ、OLED ディスプレイ、RGB ライトなどの機能を提供します。
  • HelloWord-Connector : メイン キーボードは、ベースのコンタクト PCB を接続するために使用され、FFC ケーブルを介してキーボード PCB に接続されます。
  • HelloWord-Connector-Ctrl : Dynamic コンポーネントは、ベースのコンタクト PCB を接続するために使用され、FFC ケーブルを介して Dynamic コンポーネント PCB に接続されます。
  • HelloWord-Encoder : ブラシレス モーターの位置フィードバックに使用される磁気エンコーダー PCB は、放射状に磁化された永久磁石で動作する必要があります。
  • HelloWord-Hub1 : ベースに拡張された 2 つの追加 USB-A ポートは、FFC ケーブルと TypeC インターフェイス ボードを介して PCB に接続されます。
  • HelloWord-Hub2 : 2 つの追加 USB-A インターフェイス用のメス PCB がベース上に拡張され、USB3.0 メス ソケットとピン用に予約されていますが、現在は 2.0 インターフェイスのみが使用されており、将来の HUB で USB3.0 にアップグレードできます。 .
  • HelloWord-TypeC : ベースのコンピュータに接続するために使用される TypeC インターフェイス PCB には、電力充電管理チップと USB-HUB チップが装備されており、FFC ケーブルを介して残りのモジュールに接続されています。
  • HelloWord-OLED : Dynamic コンポーネントの OLED スクリーン用の最小限のドライバー回路とアダプター ボード。
  • HelloWord-TouchBar : オプションの静電容量式タッチ バー モジュール PCB。6 ボタンの静電容量式タッチ チップを使用してリニア センシング アレイを形成し、FFC ケーブルを介してメイン キーボード PCB に接続されます。

1.1.2 ファームウェア

ファームウェアは、上記のすべてのボードのファームウェア ソース コードを提供し、事前にコンパイルされたビン ファームウェアを直接書き込むことができます。主に次の 2 つのプロジェクトが含まれます。

  • HelloWord-Keyboard-fw : メイン キーボードのファームウェアで、主にハードウェア SPI とシフト レジスタに基づく高速キー スキャン、ハードウェア SPI と DMA に基づくバスベースの RGB 光制御、HID 高速デバイス キーボード エニュメレーションとメッセージを実現します。プロトコルの実装、簡単ではないストレージ構成の損失、マルチレイヤー ボタン マッピング、およびその他の機能。
  • **HelloWord-Dynamic-fw: **動的コンポーネント ファームウェア、主に FOC ベースのモーター制御コード、構成可能なタッチセンシティブ パッケージング、電子インク スクリーン ドライバー、OLED ドライバー、USB フルスピード複合デバイス列挙および通信プロトコル、RGB を実装ライトコントロールとその他の機能。

プロジェクトはすべて STM32HAL に基づいて実装されているため、対応する

.ioc
ファイルが提供されており、STM32CubeMX で開くと、対応する keil または STM32IDE プロジェクト ファイルを生成できます。私のように、CLion や STM32CubeIDE でコンパイルしてダウンロードすることもできます。

_Release
このフォルダーには、 ST-Link Utility や STM32CubeProgrammerなどのソフトウェアを使用してチップに直接ダウンロードできる、コンパイル済みの bin ファイルがあります。

ファームウェアの実装の詳細については後述します。

CLion を STM32 用の IDE にする方法については、以前に投稿したチュートリアルを参照してください: STM32 開発用の CLion の構成 [エレガントな組み込み開発]

1.1.3 ソフトウェア

ソフトウェアは、ビデオで説明されているインク スクリーンの画像を愚かに変更するための PC ソフトウェアを含む、キーボードとやり取りするためのコンピューター側の PC ソフトウェアを提供し、キーを変更するためのグラフィカル ソフトウェアはモジュールに徐々に追加されます。のアプリケーション ストア ソフトウェアであり、これらはまだ開発中です。

1.1.4 ツール

Tools は主に、 STM32 ST-LINK Utility 、ドライバーをインストールするためのzadigなど、いくつかのサードパーティ ツール ソフトウェアを提供します。

1.1.5 3D モデル

フォルダーには、キーボードで使用されるすべての構造部品の 3D モデル ファイルがあり、3D プリントに使用できます。

1.1.6 ドキュメント

チップのデータシートなど、関連する参考資料

2. ハードウェア アーキテクチャの説明

構造設計について?

Hanwen の構造は、ドッキング ステーション ベースキーボード入力モジュール、および交換可能な多機能インタラクション モジュールの 3 つの部分で構成されています.キーボード入力モジュールと交換可能な多機能インタラクション モジュールは、ドッキング ステーション ベースの上部で複数の接点を介して接続されています. :

hw2

キーボード本体は、衝撃吸収綿、PCBA、位置決めプレート、シャフトアンダーパッドなどを含む、標準のカスタマイズされたキーボード積層構造設計でもあります。

hw2

キーボードの構造設計は、主に S98 に従って Xikii によって変更されます.これは 75 キーのレイアウトです.他のレイアウトが必要な学生は、PCB とファームウェアの適応を自分で変更できます.

ビデオに表示されている構造部品については、Xikii のソリューションであるため、許可なくソース ファイルを公開することは容易ではなく、構造の元のバージョンは CNC 加工に使用されるため、コストが比較的高くなります。

そこで、私は Xikii に 3D で使用できる構造部品の簡略化されたバージョンの設計を手伝ってもらい、それをオープンソースにして倉庫に入れました。

チップの選択について?

  • キーボード マスターに選択したチップは STM32F103CBT6. 実際には C8T6 も使用できます. ただし、将来のファームウェア機能のスケーラビリティを考慮すると、Flash の 2 倍のサイズの CBT6 がより費用対効果が高くなります. 私のファームウェアは基本的に HAL ライブラリを使用して実装されているため, メイン コントロールは実際には STM32 シリーズの任意のチップに置き換えることができます. サポート チップには、キー スキャン用と RGB ライト駆動用の 2 つの SPI ハードウェア インターフェイスが必要です.高速 USB インターフェイス。
  • 動的コンポーネントによって制御される STM32F4。これは、手元にこのチップがたくさんあるためです。理論的には、チップに PWM 生成用の高度なタイマーがあり、2コーディング用のハードウェア SPI インターフェイス e-ink スクリーンとの通信、OLED ドライバー用の I2C インターフェイス、およびフルスピード USB インターフェイスで十分です。
  • モーターの磁気エンコーダーチップはAS5047Pで、これも非常に一般的に使用されている磁気エンコーダーチップで、性能が良いですが、コストが少し高くなります.手元にあるので、これを選択しました.また、変更することもできます.もちろん、MT6816などの他の安価なモデルも、ファームウェアドライバーコードを変更する必要があります。
  • キースキャン用のシフトレジスタに使用されている74HC165は、国内のチップ小売店で1個あたり約0.5元で、1個で8個のキーを駆動でき、必要なキーの数に応じてシリアルレジスタチップを変更できます。TI純正などの輸入165は国産よりも割高で、性能も若干アップするが、本案では4MHzのキースキャン周波数で十分なので、国産の16MHzチップでも十分すぎるほどだ。
  • 静電容量式タッチパネルは、PCB誘導パネルの設計に特定の要件がある6チャンネルの静電容量式タッチボタンチップXW06Aによって実現され、倉庫は設計されたPCBを提供しました。このチップの読み取り方法は実際には通常のボタンと変わらないため、74HC165 もこの方式でのスキャンと読み取りに使用されます。
  • モーター FOC ドライバー回路は、FD8288Q をゲート ドライバーとして使用して、私の Ctrl ドライバーから完全に移植されました。電流センサーは必要ありません。

焼き方は?

JLink や STLink などのデバッガーを使用したプログラミング用に、PCB とケースの両方に SWD デバッグ ポートを予約しました。ハードウェア開発の経験がない学生のために、USB ポート経由でファームウェアを直接アップグレードできるブートローダーも後でリリースします。

モーターの選択について?

2204の中古モーターを使っていますが、このモーターは現状ではなかなか手に入りそうにないので、似たようなサイズのブラシレスモーターで代用できます.できれば200前後。モーターは、エンコーダーの位置決めのために、半径方向に磁化された永久磁石をローターに手動で取り付ける必要があります. 異なるタイプのモーターでは、FOC パラメーターを調整する必要があります.

hw2

3. ソフトウェア アーキテクチャの説明

4.SDK設計・二次開発

追加予定。

以下のアイテムに感謝します。

Lexikos/AutoHotkey_L: AutoHotkey - Windows 用のマクロ作成および自動化指向のスクリプト作成ユーティリティ (github.com)

olikraus/u8g2: モノクロ ディスプレイ用の U8glib ライブラリ、バージョン 2 (github.com)

BLDC 用の simplefoc/Arduino FOC (github.com)

zhongyang219/TrafficMonitor: これは、現在のネットワーク速度、CPU およびメモリの使用率を表示するために使用されるデスクトップ フローティング ウィンドウ ソフトウェアで、タスクバーの表示とスキンの交換をサポートします。(github.com)