IchigoJam Advent Calendar 2018 - Day 23

「IchigoJam でチャットができたら……」
というのをどこかで見ていた記憶があります。
実はこれを実現させるために何ヶ月か行っていた事があるんです。

チャットとは?

チャットシステム

リアルタイムで複数人とお話するシステムの事です。
今は Twitter だったり、Facebook メッセージでお話できる状況です。
最近だとお問い合わせにチャットが使用できるところがありますよね。

インターネットが普及した当初はメッセンジャーや ICQ・IRC など、
チャットを行う専用のシステムがよく使われていました。

実現されているチャット

福野さん(IchigoJam 開発者)がいくつかチャットを実現していますよ。

2だいだけのネットをつくろう | IchigoJam プリント

2 台の IchigoJam を接続。
IchigoJam BASIC では入力したものをそのままシリアルに送出するので、
そのままチャットになっちゃうんですね。実際に学校で行って好評なのだとか。

IchigoJam と sakura.io を使用。アプリと送受できるようになっています。

今回のネットワークは……

自分にとってチャットは パソコン通信 がはじめての場です。

パソコン通信というのは、インターネットが普及する前から行われていて、
主に固定電話回線でホストコンピュータに接続し、テキストを送受するものでした。
だから電話代がかかったんですね。大手だと別途料金が発生しています。
ちなみに BBS=掲示板 なのですが、元々はパソコン通信の BBS を指す言葉で、
運営しているホストの事を BBS とも言います。

パソコン通信 BBS

実はこのパソコン通信、まだ残っています。
しかも Telnet を使用する事で、インターネットで接続できるんです。
インターネットだから料金を気にする事がありません。
しかも運営しているのが個人だったり、複数人の任意団体だったり、会社だったり。
そういう事で、入会は無料。完全無料で今すぐ接続できるようになっています。
こういう小規模の BBS は「草の根 BBS」という名称がありまして、
これって日本語固有の名称らしいのです。英語とかでは表現できないんですよ。
英語だと Telnet で接続できる BBS なので「Telnet BBS」という表記です。

いやぁ~検索した時は驚きましたね~。まだ残ってたんですよ。草の根 BBS!!
でも草の根 BBS の一覧をしている固有の Web サイトがなかったのです。
そこで、自分が調べて見つけた草の根 BBS を一覧し、公開しました。

更にせっかくなので自分も BBS を開局してしまってたりします。この時代に。
実は自分、何度か 草の根 BBS を開局して運営していた経験があるのです。

……ええ、今回はこの 草の根 BBS に接続して、チャットをしてしまいます。

IchigoLatte

でも、常にシリアルを送受する IchigoJam BASIC だと実現が難しかったので、
今回は IchigoLatte を採用しました。

IchigoLatte プリント基板 3 種類

プリント基板はこんな感じ。パーツをはんだ付けして組み立てるベータ版、
正式販売では販売時期によって、ピンソケットが黒と白の 2 パターン存在しています。
ブラックコーヒーだと飲めない人が多いから、ミルクを入れたんですね。

見た目でわかると思いますが、IchigoLatte プリント基板は IchigoJam とパーツが一緒です。
なので IchigoJam プリント基板に IchigoLatte のファームウェアを入れて使用できます。
というか、IchigoLatte プリント基板が生まれるまでは
IchigoJam プリント基板に入れて使うのが当たり前だったのですが……

//Balloons

var x;

cls();

while (1)
{
  x=rnd(30)+1;

  lc(x,23);
  log(chr(232),"\n");

  lc(x,23);
  log("l");

  sleep(100);
}

JavaScript でプログラムを作ります。
とはいっても IchigoJam BASIC にも似ているコマンド体型で
この見た目で何をしているか何となく把握できる人もいるのではないでしょうか。

ネットに接続する周辺機器

もちろんネット接続する周辺機器が必要です。今回こんなものを用意しました。

ESP-WROOM-02

ESP-WROOM-02 です。

MixJuice 中心

これ、MixJuice でも使われています。中央上に同じものがあるでしょう?

そのため、MixJuice プリント基板で使う事もできるのですが、
MixJuice プリント基板はファームウェアも MixJuice のままにしておきたいので、
ESP-WROOM-02 のモジュールを入手しました。
ESP-WROOM-02 にピンが出ているだけの場合だといろいろ接続が必要になりますが、
2 つボタンなどが付いている開発ボードだとボタン操作で済むので、
自分は開発ボードを入手しています。海外から直輸入ですが、
スイッチサイエンスさんが開発ボードを発売していますよ。

この ESP-WROOM-02 で Telnet BBS へ接続する Zimodem が公開されています。

ソースからビルドは難易度が高いですが、ちゃんと .bin ファイルがありました。

Zimodem バイナリー

これを MixJuice ファームウェアと同じ手順で入れます。
開始アドレスは 0x00000 で OK です。
えっ、手順を知らない? イチコジャム レシピ で 1 ページ説明してますよ~

こんな感じにジャンパワイヤで IchigoLatte と接続します。

IchigoLatte に ESP-WROOM-02 を接続

ESP-WROOM-02 も MixJuice も持っていない?
それでは…… Raspberry Pi を持っていますか?
Raspberry Pi で接続する方法もあります。OS は Raspbian ですね。

ちなみに、この信号から RS-232C-UART の変換を行う事で、RS-232C の接続ができます。
20~30 年前のパソコンでパソコン通信のように接続ができてしまうんです。

自分はポケコン PC-G850V で接続したりしてますが……

IchigoLatte のターミナル

次は IchigoLatte。ターミナルソフトが必要です。
とはいってもこんな簡単なプログラムで良いんです。

//Terminal
 
var d,c=0;
 
bps(1200);
 
while(1)
{
  d=uart();
  if((d!=-1)*(d!=13))
  {
    if(c==1)
    {
      log(chr(8));
      c=0;
    }
 
    log(chr(d));
  }
  else if((d==-1)*(c==0))
  {
    c=1;
    log(chr(140));
  }
 
  d=inkey();
  if(d==10)
  {
    if(c==1)
    {
      log(chr(8));
      c=0;
    }
 
    // log("\n"); // echo
    uart(13); // CR
    uart(10); // LF
  }
  else if(d!=0)
  {
    if(c==1)
    {
      log(chr(8));
      c=0;
    }
 
    // log(chr(d)); // echo
    uart(d);
  }
}

あ、上の表示、画像ではないんですよ。テキストなんです。コピーできますよ。
Zimodem 向けです。Raspberry Pi は bps(2400); にして下さい。

イチゴジャム レシピ にも掲載済みですが、
こちらは bps(2400); にしてます。Raspberry Pi デフォルトです。

仕組みは簡単なのですよ。キーボードから入力した文字はシリアルへ送り、
シリアルから受信した文字を表示させているだけです。
chr(140) はカーソルの表示です。このカーソル関連でちょっと複雑になってます。
BBS は通常入力した文字はそのまま返してくるので、ローカルエコーは不要です。
ローカルエコーと改行コードを // の有無で有効・無効できるようにしてあります。

いざ接続!!

さあ、接続!……あれ、でもちょっと待って。
IchigoLatte では漢字表示できません。英語ですね~。
なので日本語の BBS では文字化けしてしまいます。

大丈夫、大丈夫~~~

なんと自分、英語の BBS も運営しています。日本発・世界発信!!

このために一時的に公開しているわけではないですよ。
Telnet BBS Guide という英語の BBS が一覧されているところにちゃんと登録しています。
世界中からやってくる BBS なんです。

という事で、こちら Ballon BBS へ接続していただければ安心です。
CP437 という文字コードを使用しているので、一部文字化けしますが、
メニューなどの英語は問題なく表示できます。

ちなみに Ballon はスペルミスではないですよ。フランス語の「バロン」です。
もちろん風船・バルーンの事です~~~🎈😍←風船大好き

それでは接続してみましょう。ms . でプログラムを実行しまして……

AT

AT コマンド、というのを使います。パソコン通信使っていた人は懐かしいでしょう?
OK という文字列が出てくる事を確認して下さい。

ESP-WROOM-02 の Zimodem では MixJuice 同様に Wi-Fi の接続が必要です。

ATW"アクセスポイント,パススルー"

Raspberry Pi は予め使用している OS 側で接続を行っておきます。

そうしたら ATD コマンドで接続します。
パソコン通信時代は電話番号を入れるのですが、
インターネットなので Telnet のホスト名:ポート番号 です。

ATD"fusen.ddns.net:55223"

Raspberry Pi では次のようになります。

ATDT fusen.ddns.net:55223

ANSI は色表示なので、そうではない ASCII を選択します。
英語の BBS ではゲストがありません。なので希望の名前を入力すると
「アカウントを作成しますか?」となります。必要事項を入れて下さい。
Alias が ID、Real Name は本名……BBS によって項目があります。
BBS によっては SYSOP(BBS の運営者)にメッセージを入れる必要があるのですが、
Ballon BBS は登録しやすいように、最小限の項目にしてあります。
これを覚えたら、世界中の英語 BBS はほとんど使えます。

さて、画面にはメインメニューが出ています。表示しきれず、最後のところだけです。

ESP-WROOM-02

誰か入っているかな? Who’s online /W を見てみます。

ESP-WROOM-02

mogmog! おや、(・~・)mogmog さんだ。
チャットでお話してみます。Node Chat /N です。

ESP-WROOM-02

……何話してるか分からないですが……まぁ、こんな感じでお話できます。

ESP-WROOM-02

(・~・)mogmog さんはパソコンから接続していました。
ここでは SyncTERM という専用のターミナルソフトを使っているのですが、
Balloon BBS Web サイト の Connect を参照すると……

Connect now! - fTelnet の下に表示されている画面の下 Connect で
すぐに接続できちゃうんです。HTML5 の最新技術でブラウザから接続できます。
日本人同士であれば konnichiwa—! って英文ローマ字でお話できますね。

IchigoLatte から世界中の人とお話できる!

何がすごいって、インターネットの接続なので、
世界中の BBS に接続できて、世界中の人とお話できちゃうんですよ。
ここまでできるんです。
しかも相手は IchigoLatte じゃないんですね。多くはパソコンですが、
もしかしたら 20~30 年前のコンピュータから接続しているかもしれません。

日本ではさすがに指で数えられる BBS 数になってしまっていますが、
英語では数百局運営されている事が確認できています。まだまだ健在!
インターネットが普及する前に行われていたパソコン通信を体験してみて下さい。


IchigoJam Advent Calendar 2018