0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

71歳の... ESP32-S3は日本語ワープロになるか?ナンチャッテ日本語変換やってみた

Posted at

 ワープロなんて大層な表題を付けましたが、中身はお笑いネタかも。本人はいたってまじめです。USBキーボードからESP32-S3への文字直接入力ができたので、日本語変換もできないかと考えました。既にやっておられる方がこちらに。

「Lua」「SKK」を使うのだとか、うーん私には難しい。なので、安直な方法(エヘヘ)を考えました。ついでに私の初試みもいくつか。
 まずは「Tera Term」において、ローカルエコーなしで文字を送信し、ESP32-S3からの返信を受けた様子をお見せします。

teraterm日記.jpg

小学生の夏休みの日記レベルですね(小学生に失礼かな)。

"kinou" SPキー "mo" SPキー "to" SPキー "te" SPキー "mo" SPキー ... 

ってな具合に、アルファベット数個を打ちます。SPキーを区切りに、それに対応する文字をfep.hppから探し出し、返信しています。PC初期の頃は、こんな風に1文字1文字打ってたんだっけと感慨深いです。もっと前の「日本語タイプライター」も知ってます。ワープロ専用機じゃないですよ。
 マイコンボードには一切何も施す必要はないので、本体写真などは割愛します。
 環境/構成です。

1.Windows 11 Pro
2.Arduino IDE 2.3.6
3.ESP32S3 Dev Module(FREENOVE ESP32-S3 WROOM 8MB Flash)
4.「Tera Term」を介してシリアル通信(1文字ずつ即、送信してくれるので)
5.最初、UNOで挑戦。メモリ不足になり断念。ESP32-S3に移行。
    <string>が使える
    `Partition Scheme:"Huge APP ..."` でコンパイル
6.私として初の試み
    ・構造体とその配列
    ・ローマ字から、かな漢字に変換するためのファイル「fep.hpp」を作成
     別ファイルにしてスケッチと同じフォルダーに配置

fep.hppの中身です。(FrontEndProcessor 分かりますか?)

fep.hpp
struct ath{
  char a[10]; String kk;
};

const ath fep[] ={ // 訓読み名詞形で登録
"0","0","1","1","2","2","3","3","4","4",
"5","5","6","6","7","7","8","8","9","9",
"a","あ","i","い","u","う","e","え","o","お",
"xa","ぁ","xi","ぃ","xu","ぅ","xe","ぇ","xo","ぉ",
"ka","か","ki","き","ku","く","ke","け","ko","こ",
"sa","さ","si","し","su","す","se","せ","so","そ",
"ta","た","ti","ち","tu","つ","te","て","to","と",
"na","な","ni","に","nu","ぬ","ne","ね","no","の",
"ha","は","hi","ひ","hu","ふ","he","へ","ho","ほ","fu","ふ",
"ma","ま","mi","み","mu","む","me","め","mo","も",
"ya","や","yi","ぃ","yu","ゆ","ye","ぇ","yo","よ",
"xa","ゃ","xi","ぃ","xu","ゅ","xe","ぇ","xo","ょ",
"ra","ら","ri","り","ru","る","re","れ","ro","ろ",
"wa","わ","wi","うぃ","wu","うぅ","we","うぇ","wo","を",
"n","ん","xtu","っ",
"ga","が","gi","ぎ","gu","ぐ","ge","げ","go","ご",
"za","ざ","zi","じ","zu","ず","ze","ぜ","zo","ぞ",
"da","だ","di","ぢ","du","づ","de","で","do","ど","dexi","でぃ",
"ba","ば","bi","び","bu","ぶ","be","べ","bo","ぼ",
"pa","ぱ","pi","ぴ","pu","ぷ","pe","ぺ","po","ぽ",
"kya","きゃ","kyu","きゅ","kyo","きょ",
"gya","ぎゃ","gyu","ぎゅ","gyo","ぎょ",
"sha","しゃ","shi","し","shu","しゅ","she","しぇ","sho","しょ",
"ja","じゃ", "ji", "じ","ju", "じゅ","je", "じぇ","jo", "じょ",
"cha","ちゃ","chu","ちゅ","cho","ちょ",
"nya","にゃ","nyu","にゅ","nyo","にょ",
"bya","びゃ","byu","びゅ","byo","びょ",
"pya","ぴゃ","pyu","ぴゅ","pyo","ぴょ",
"mya","みゃ","myu","みゅ","myo","みょ",
"rya","りゃ","ryi","りぃ","ryu","りゅ","rye","りぇ","ryo","りょ",
"va", "ヴァ","vi", "ヴィ","vu", "ヴュ","ve", "ヴェ","vo", "ヴォ",
"ichinichi","一日","asa","朝","hayaku","早","hayai","速",
"tenki","天気","ame","雨","kasa","傘","ohisama","お日様","furu","降",
"netui","熱","samui","寒","ondo", "温度","aga","上",
"kibun","気分","suki","好","yoi","良","warui","悪",
"kinou","昨日","kyou","今日","asu","明日","ikiru","生",
"sanpo","散歩","dekakeru","出","ayumi","歩","yuku","行",
"kuruma","車","mokuhyou","目標",
"tabe","食べ","gohan","ご飯",
"tuduki","続",
"naka","中",
"watasi","私",
"-","ー",
",","、",
".","。"
};

スケッチ本体です。

#include <string>
#include "fep.hpp"

const uint16_t data_end = (sizeof fep) / (sizeof(struct ath));
void setup() {
  Serial.begin(115200);
  Serial.println("");
  Serial.println("Fep start");
  Serial.println("");
  //for (int i = 0; i < data_end; i++) Serial.println(fep[i].kk);
}

void loop() {
  String line = "";
  bool flg = false;
  while (flg == false) {
    while (Serial.available()) { // 1文字ずつ受信
      char c = Serial.read();
      if (c == 10 || c == 13) {  // LF or CR
        Serial.println("");  // Tera Term 上で改行
        flg = true;
        break;
      }

      if (c == 32) {  // SP で変換操作
        if (line.length() > 0) {
          for (int i = 0; i < data_end; i++) {  // 探索ループ
            if (line.equals(fep[i].a)) {// 見つけたら
              Serial.print(fep[i].kk);  // 「かな漢字」に変換
            }
          }
        }
        flg = true; // 次の文字入力に進む
        break;
      } else if (c > 32 && c < 127) { // 繋いで文字列にする
        line = line + c;
      }
    }
  }
}

 USBキーボードからの入力、TFTモジュール表示にすれば、編集も利きそうだし... これ、もっと本格的になるかな?
 最後まで見ていただきありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?