Written in Japanese(UTF-8)
2023. 9.10
INASOFT

/トップ/目次/管理人のひとこと/Raspberry Pi Pico WでWebサーバを作れるなら、最近話題のTELNETサーバ的なものが作れるかを試してみたい

3132301 (+0406)[+0422]

管理人のふたこと

Raspberry Pi Pico WでWebサーバを作れるなら、最近話題のTELNETサーバ的なものが作れるかを試してみたい



公開日:2023/ 9/10

【目次】

■Raspberry Pi Pico W を手に入れた話とTELNETサーバ的なものへの挑戦

一昨年、Raspberry Pi Picoを手に入れてMINTIAケースに入れようとしたり、Arduino IDEを使って物理版マウスふるふるを実現してみたり、色々試している中で、Wi-Fiに接続できるRaspberry Pi Pico Wを使うと、簡易的なWebサーバのようなものを作れるという話が聞こえてきまして、とりあえず使ってみたくなり、購入しました。

Raspberry Pi Pico W

作ること自体はそんなに難しくなくて、ちょっとググれば出てきます。例えば私はArduino IDEを使った方法で、サクッと実現できました。

色々と可能性は感じるものの、家庭内での指示系統におけるWebサーバ需要は、すでにRaspberry Pi 4が担ってしまっていて、例えばWi-Fiルータを定期的に冷やすためのサーキュレータ制御とか、リモートワーク部屋のLED, エアコン管理とか、マイクラサーバの起動・終了・ワールドバックアップ制御とかを行っています。

さて、他にどんなことができるか……。色々考えているところに、新しいネタが飛び込んできました。



  社団法人の電子公告が「Telnet」で行われる珍事発生、早速「Tera Term」で読んでみる - やじうまの杜



最近設立されたという、一般社団法人サイバー技術・インターネット自由研究会様の電子公告が「Telnet」で行われていることが話題になっているというもの。もちろん、アクセスしてみましたとも。

これを見て思いました。Rasapberry Pi Pico Wで簡易Webサーバを作れるなら、ヘッダやリターンコードを送り付けることもない、TCP通信で文字列を送るだけの、TELNET的なサーバくらい、もっと簡単に作れるのではないか? 早速チャレンジしてみることにしました。



■Arduino IDEの準備

Raspberry Pi Pico Wに書き込むファームウェア作りとしては、Arduino IDEを使います。やり方としては、Raspberry Pi Picoを物理版マウスふるふるにしたときのやり方の延長です。参考サイトは、こちらになります。



■スケッチの作成

スケッチを作成します。今回は、こんな感じで書いてみました。(参考サイト:ESP32のサーバーサイドTCP/IPでのSocket通信 - Lang-ship)


#include <WiFi.h>
#include <WiFiClient.h>

#ifndef STASSID
#define STASSID "SSID" // お使いの環境のSSIDを記入
#define STAPSK "PASS"  // SSIDに対応するパスキーを記入
#endif

const char *ssid = STASSID;
const char *password = STAPSK;
IPAddress local_IP(192, 168, 0, 10); // 固定IPを使う場合
IPAddress gateway(192, 168, 0, 1);
IPAddress subnet(255, 255, 255, 0);

WiFiServer server(23); // 23番ポートを使用
int Mode = 0;      // LED点滅用に状態を記録する
int i = 0;         // 何バイト目までTELNETで返したか
int iVisitor = 0;  // アクセスカウンタ
// あえてShift_JISで返したいので、16進コードで記述
char denbun1[] ="\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
                "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x53\x6F\x72\x72\x79\x2C\x20\x4A\x61\x70\x61\x6E\x65\x73\x65\x20"
                "\x4C\x61\x6E\x67\x75\x61\x67\x65\x20\x6F\x6E\x6C\x79\x28\x53\x68\x69\x66\x74\x5F\x4A\x49\x53\x29\x0D\x0A\x20"
                "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
                "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
                "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x32\x30\x32\x33\x2E\x30\x39\x2E\x30\x39\x0D\x0A\x20\x20"
                "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
                "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
                "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x49\x4E\x41\x53\x4F\x46\x54\x0D\x0A\x2B\x2D\x2D"
                "\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D"
                "\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D"
                "\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2B\x0D\x0A\x7C\x20\x52\x61"
                "\x73\x70\x62\x65\x72\x72\x79\x20\x50\x69\x20\x50\x69\x63\x6F\x20\x57\x20\x54\x45\x4C\x4E\x45\x54\x20\x70\x61"
                "\x67\x65\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
                "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7C\x0D\x0A\x2B\x2D\x2D\x2D\x2D"
                "\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D"
                "\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2D"
                "\x2D\x2D\x2D\x20\x82\xB6\x82\xE5\x82\xAF\x20\x2D\x2D\x2D\x2D\x2D\x2D\x2D\x2B\x0D\x0A\x82\xA0\x82\xC8\x82\xBD"
                "\x82\xCD\x20";

// アクセスカウンタ後
char denbun2[] ="\x20\x90\x6C\x96\xDA\x82\xCC\x96\x4B\x96\xE2\x8E\xD2\x82\xC5\x82\xB7\x81\x42\x0D\x0A"
                "\x83\x4C\x83\x8A\x94\xD4\x82\xF0\x93\xA5\x82\xF1\x82\xBE\x82\xE7\x95\x4B\x82\xB8\x95\xF1\x8D\x90\x82\xB5\x82"
                "\xC4\x82\xAD\x82\xBE\x82\xB3\x82\xA2\x81\x42\x0D\x0A"
                "\x0D\x0A\x81\x49\x92\x8D\x88\xD3\x81\x49\x0D\x0A\x0D\x0A\x20\x20\x20\x20\x82\xB1\x82\xCC\x83\x79\x81\x5B\x83"
                "\x57\x82\xCD\x83\x57\x83\x87\x81\x5B\x83\x4E\x82\xC5\x82\xB7\x81\x42\x0D\x0A\x20\x20\x20\x20\x82\xB1\x82\xCC"
                "\x83\x79\x81\x5B\x83\x57\x82\xCC\x93\xE0\x97\x65\x82\xCD\x82\xA0\x82\xC8\x82\xBD\x82\xCC\x90\xD3\x94\x43\x82"
                "\xCC\x89\xBA\x82\xC5\x8E\x67\x97\x70\x82\xB5\x82\xC4\x82\xAD\x82\xBE\x82\xB3\x82\xA2\x81\x42\x0D\x0A\x20\x20"
                "\x20\x20\x82\xB1\x82\xCC\x83\x79\x81\x5B\x83\x57\x82\xCC\x93\xE0\x97\x65\x82\xF0\x93\xC7\x82\xF1\x82\xBE\x8D"
                "\xDB\x82\xC9\x90\xB6\x82\xB6\x82\xBD\x88\xD3\x90\x7D\x93\x49\x81\x45\x94\xF1\x88\xD3\x90\x7D\x93\x49\x82\xC8"
                "\x8F\xE1\x8A\x51\x82\xC9\x82\xC2\x82\xA2\x82\xC4\x81\x41\x0D\x0A\x20\x20\x89\xE4\x81\x58\x82\xCD\x88\xEA\x90"
                "\xD8\x90\xD3\x94\x43\x82\xF0\x95\x89\x82\xED\x82\xC8\x82\xA2\x82\xCC\x82\xC5\x81\x41\x82\xA0\x82\xE7\x82\xA9"
                "\x82\xB6\x82\xDF\x82\xB2\x97\xB9\x8F\xB3\x89\xBA\x82\xB3\x82\xA2\x81\x42\x0D\x0A\x20\x20\x20\x20\x88\xC8\x8D"
                "\x7E\x81\x41\x82\xB1\x82\xCC\x83\x79\x81\x5B\x83\x57\x93\xE0\x82\xCC\x95\xB6\x8F\xCD\x82\xC9\x82\xE0\x83\x57"
                "\x83\x87\x81\x5B\x83\x4E\x82\xAA\x8A\xDC\x82\xDC\x82\xEA\x82\xDC\x82\xB7\x82\xCC\x82\xC5\x82\xB2\x92\x8D\x88"
                "\xD3\x82\xAD\x82\xBE\x82\xB3\x82\xA2\x81\x42\x0D\x0A\x0D\x0A\x82\x50\x81\x44\x82\xCD\x82\xB6\x82\xDF\x82\xC9"
                "\x0D\x0A\x20\x20\x20\x20\x82\xB1\x82\xCC\x82\xBD\x82\xD1\x82\xCD\x81\x41\x54\x45\x4C\x4E\x45\x54\x20\x70\x61"
                "\x67\x65\x82\xC9\x8C\xE4\x96\x4B\x96\xE2\x82\xA2\x82\xBD\x82\xBE\x82\xAB\x82\xA0\x82\xE8\x82\xAA\x82\xC6\x82"
                "\xA4\x82\xB2\x82\xB4\x82\xA2\x82\xDC\x82\xB7\x81\x42\x0D\x0A\x20\x20\x20\x20\x88\xEA\x94\xCA\x8E\xD0\x92\x63"
                "\x96\x40\x90\x6C\x83\x54\x83\x43\x83\x6F\x81\x5B\x8B\x5A\x8F\x70\x81\x45\x83\x43\x83\x93\x83\x5E\x81\x5B\x83"
                "\x6C\x83\x62\x83\x67\x8E\xA9\x97\x52\x8C\xA4\x8B\x86\x89\xEF\x97\x6C\x82\xCC\x93\x64\x8E\x71\x8C\xF6\x8D\x90"
                "\x82\xAA\x0D\x0A\x20\x20\x81\x75\x54\x45\x4C\x4E\x45\x54\x81\x76\x82\xC5\x8D\x73\x82\xED\x82\xEA\x82\xC4\x82"
                "\xA2\x82\xE9\x82\xC6\x82\xA2\x82\xA4\x83\x6A\x83\x85\x81\x5B\x83\x58\x82\xF0\x95\xB7\x82\xA2\x82\xBD\x82\xB1"
                "\x82\xC6\x82\xC6\x81\x41\x8D\xC5\x8B\xDF\x81\x41\x0D\x0A\x20\x20\x52\x61\x73\x70\x62\x65\x72\x72\x79\x20\x50"
                "\x69\x20\x50\x69\x63\x6F\x20\x57\x82\xF0\x93\xFC\x8E\xE8\x82\xB5\x82\xC4\x81\x41\x89\xBD\x82\xA9\x96\xCA\x94"
                "\x92\x82\xA2\x82\xB1\x82\xC6\x82\xAA\x82\xC5\x82\xAB\x82\xC8\x82\xA2\x82\xA9\x82\xC6\x8D\x6C\x82\xA6\x82\xC4"
                "\x82\xA2\x82\xE9\x92\x86\x82\xC5\x0D\x0A\x20\x20\x82\xBB\x82\xCC\x32\x82\xC2\x82\xAA\x8D\x87\x91\xCC\x82\xB5"
                "\x82\xC4\x81\x41\x52\x61\x73\x70\x62\x65\x72\x72\x79\x20\x50\x69\x20\x50\x69\x63\x6F\x20\x57\x82\xBE\x82\xC1"
                "\x82\xBD\x82\xE7\x54\x45\x4C\x4E\x45\x54\x20\x70\x61\x67\x65\x82\xAA\x8A\xC8\x92\x50\x82\xC9\x8D\xEC\x82\xEA"
                "\x82\xE9\x0D\x0A\x20\x20\x82\xCC\x82\xC5\x82\xCD\x82\xC8\x82\xA2\x82\xA9\x82\xC6\x8E\x76\x82\xA2\x82\xC2\x82"
                "\xA2\x82\xC4\x82\xB5\x82\xDC\x82\xC1\x82\xBD\x82\xBD\x82\xDF\x82\xC9\x8D\xEC\x90\xAC\x82\xB5\x82\xBD\x82\xE0"
                "\x82\xCC\x82\xC6\x82\xC8\x82\xE8\x82\xDC\x82\xB7\x81\x42\x0D\x0A\x20\x20\x20\x20\x8E\x76\x82\xA2\x82\xC2\x82"
                "\xA2\x82\xC4\x82\xB5\x82\xDC\x82\xC1\x82\xBD\x82\xCC\x82\xBE\x82\xA9\x82\xE7\x81\x41\x8D\xEC\x82\xE7\x82\xC8"
                "\x82\xA2\x82\xED\x82\xAF\x82\xC9\x82\xCD\x82\xA2\x82\xA9\x82\xC8\x82\xA2\x81\x42\x0D\x0A\x0D\x0A\x82\x51\x81"
                "\x44\x91\xCE\x89\x9E\x8A\xC2\x8B\xAB\x0D\x0A\x20\x20\x20\x20\x54\x45\x4C\x4E\x45\x54\x82\xC5\x83\x41\x83\x4E"
                "\x83\x5A\x83\x58\x82\xC5\x82\xAB\x81\x41\x53\x68\x69\x66\x74\x5F\x4A\x49\x53\x82\xAA\x93\xC7\x82\xDF\x82\xE9"
                "\x8A\xC2\x8B\xAB\x81\x42\x0D\x0A\x0D\x0A\x82\x52\x81\x44\x8A\x58\x8A\x70\x83\x41\x83\x93\x83\x50\x81\x5B\x83"
                "\x67\x0D\x0A\x0D\x0A\x20\x20\x20\x20\x81\x45\x82\xB1\x82\xCC\x83\x79\x81\x5B\x83\x57\x82\xC9\x83\x41\x83\x4E"
                "\x83\x5A\x83\x58\x82\xB5\x82\xC4\x97\xC7\x82\xA9\x82\xC1\x82\xBD\x93\x5F\x0D\x0A\x0D\x0A\x20\x20\x20\x20\x20"
                "\x20\x83\x5F\x83\x43\x83\x47\x83\x62\x83\x67\x82\xB5\x82\xE2\x82\xB7\x82\xAD\x82\xC8\x82\xC1\x82\xBD\x81\x42"
                "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x83\x78\x83\x8B\x83\x74\x83\x48\x81\x5B\x83\x8B\x8C"
                "\xA7\x20\x54\x2E\x53\x20\x82\xB3\x82\xF1\x20\x28\x34\x38\x29\x0D\x0A\x20\x20\x20\x20\x20\x20\x90\x85\x93\xB9"
                "\x82\xA9\x82\xE7\x83\x4A\x83\x8C\x81\x5B\x82\xAA\x8F\x6F\x82\xC4\x82\xAD\x82\xE9\x82\xE6\x82\xA4\x82\xC9\x82"
                "\xC8\x82\xC1\x82\xBD\x81\x42\x20\x20\x96\x6B\x83\x5A\x83\x93\x83\x60\x83\x6C\x83\x8B\x93\x87\x20\x58\x2E\x59"
                "\x20\x82\xB3\x82\xF1\x20\x28\x32\x32\x29\x0D\x0A\x20\x20\x20\x20\x20\x20\x82\xED\x82\xBD\x82\xB5\x82\xCC\x83"
                "\x7D\x83\x57\x83\x4A\x83\x8B\x83\x76\x83\x8A\x83\x93\x83\x5A\x83\x58\x97\x6C\x81\x5B\x81\x5B\x81\x5B\x20\x20"
                "\x20\x20\x20\x20\x8D\xE9\x8B\xCA\x92\xE9\x8D\x91\x20\x54\x2E\x59\x20\x82\xB3\x82\xF1\x81\x69\x34\x33\x81\x6A"
                "\x0D\x0A\x20\x20\x20\x20\x20\x20\x82\xA8\x95\xC4\x82\xAA\x94\xFC\x96\xA1\x82\xB5\x82\xAD\x82\xC8\x82\xC1\x82"
                "\xBD\x81\x42\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x93\x8C\x83\x5A\x83\x93"
                "\x83\x60\x83\x6C\x83\x8B\x93\x87\x20\x47\x2E\x5A\x20\x82\xB3\x82\xF1\x20\x28\x33\x33\x29\x0D\x0A\x20\x20\x20"
                "\x20\x20\x20\x83\x54\x83\x43\x83\x52\x83\x8D\x82\xC5\x82\x56\x82\xCC\x96\xDA\x82\xAA\x8F\x6F\x82\xBD\x81\x42"
                "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x83\x50\x83\x8B\x83\x51\x83\x8C\x83\x93\x93"
                "\x87\x20\x4F\x2E\x50\x20\x82\xB3\x82\xF1\x20\x28\x35\x32\x29\x0D\x0A\x20\x20\x20\x20\x20\x20\x90\x47\x8E\xE8"
                "\x82\xAA\x90\x4C\x82\xD1\x82\xE9\x82\xE6\x82\xA4\x82\xC9\x82\xC8\x82\xC1\x82\xBD\x81\x42\x20\x20\x20\x20\x20"
                "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x90\xED\x93\xAC\x97\x70\x83\x5A\x83\x93\x83\x60\x83\x6C\x83\x8B\x20\x82"
                "\xB3\x82\xF1\x20\x28\x32\x33\x32\x29\x0D\x0A\x0D\x0A\x0D\x0A\x20\x20\x20\x20\x81\x45\x82\xB1\x82\xCC\x83\x79"
                "\x81\x5B\x83\x57\x82\xC9\x83\x41\x83\x4E\x83\x5A\x83\x58\x82\xB5\x82\xC4\x88\xAB\x82\xA9\x82\xC1\x82\xBD\x93"
                "\x5F\x0D\x0A\x0D\x0A\x20\x20\x20\x20\x20\x20\x83\x65\x83\x8C\x83\x72\x82\xAA\x82\xC2\x82\xDC\x82\xE7\x82\xC8"
                "\x82\xAD\x82\xC8\x82\xC1\x82\xBD\x81\x42\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x93\xFA\x96"
                "\x7B\x20\x20\x20\x20\x20\x4A\x2E\x50\x20\x82\xB3\x82\xF1\x20\x28\x33\x35\x29\x0D\x0A\x20\x20\x20\x20\x20\x20"
                "\x90\xC5\x8B\xE0\x82\xAA\x8D\x82\x82\xAD\x82\xC8\x82\xC1\x82\xBD\x81\x42\x20\x20\x20\x20\x20\x20\x20\x20\x20"
                "\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x93\xFA\x96\x7B\x20\x20\x20\x20\x20\x49\x2E\x4F\x20\x82"
                "\xB3\x82\xF1\x20\x28\x34\x32\x29\x0D\x0A\x20\x20\x20\x20\x20\x20\x97\xAC\x8D\x73\x82\xE8\x95\x61\x82\xC9\x82"
                "\xA9\x82\xA9\x82\xE8\x82\xE2\x82\xB7\x82\xAD\x82\xC8\x82\xC1\x82\xBD\x81\x42\x20\x20\x20\x20\x20\x20\x20\x20"
                "\x20\x20\x93\xFA\x96\x7B\x20\x20\x20\x20\x20\x4B\x2E\x4C\x20\x82\xB3\x82\xF1\x20\x28\x31\x37\x29\x0D\x0A\x20"
                "\x20\x20\x20\x20\x20\x93\xF2\x82\xC5\x8B\x55\x95\xA8\x82\xCC\x53\x53\x44\x82\xF0\x82\xC2\x82\xA9\x82\xDC\x82"
                "\xB3\x82\xEA\x82\xBD\x81\x42\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x93\xFA\x96\x7B\x20\x20\x20\x20\x20"
                "\x41\x2E\x5A\x20\x82\xB3\x82\xF1\x20\x28\x33\x35\x29\x0D\x0A\x20\x20\x20\x20\x20\x20\x89\xD4\x95\xB2\x8F\xC7"
                "\x82\xC9\x94\x59\x82\xDC\x82\xB3\x82\xEA\x82\xE9\x82\xE6\x82\xA4\x82\xC9\x82\xC8\x82\xC1\x82\xBD\x81\x42\x20"
                "\x20\x20\x20\x20\x20\x20\x20\x93\xFA\x96\x7B\x20\x20\x20\x20\x20\x59\x2E\x59\x20\x82\xB3\x82\xF1\x20\x28\x31"
                "\x30\x29\x0D\x0A\x20\x20\x20\x20\x20\x20\x8E\x71\x8B\x9F\x82\xCC\x90\x94\x82\xAA\x8F\xAD\x82\xC8\x82\xAD\x82"
                "\xC8\x82\xC1\x82\xBD\x81\x42\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x93\xFA\x96\x7B"
                "\x20\x20\x20\x20\x20\x59\x2E\x54\x20\x82\xB3\x82\xF1\x20\x28\x35\x32\x29\x0D\x0A\x0D\x0A\x0D\x0A\x20\x20\x20"
                "\x20\x81\x45\x82\xB1\x82\xCC\x83\x79\x81\x5B\x83\x57\x82\xCC\x8F\xAB\x97\x88\x90\xAB\x82\xC9\x82\xC2\x82\xA2"
                "\x82\xC4\x0D\x0A\x0D\x0A\x20\x20\x20\x20\x20\x20\x54\x45\x4C\x4E\x45\x54\x20\x6F\x76\x65\x72\x20\x53\x53\x4C"
                "\x82\xC9\x91\xCE\x89\x9E\x81\x42\x20\x20\x20\x20\x20\x20\x20\x20\x20\x90\xB9\x92\x6E\x81\x45\x8D\xE9\x8B\xCA"
                "\x20\x54\x2E\x59\x20\x82\xB3\x82\xF1\x20\x28\x34\x33\x29\x20\x91\xBC\x20\x36\x34\x35\x96\xBC\x0D\x0A\x20\x20"
                "\x20\x20\x20\x20\x49\x6E\x74\x65\x6C\x82\xC5\x8E\xC0\x91\x95\x81\x42\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
                "\x20\x20\x20\x20\x20\x20\x20\x20\x20\xE3\xC4\x82\xF1\x82\xC5\x82\xC8\x82\xA2\x8D\xE9\x8B\xCA\x47\x82\xB3\x82"
                "\xF1\x20\x28\x33\x39\x29\x20\x91\xBC\x20\x31\x31\x34\x96\xBC\x0D\x0A\x20\x20\x20\x20\x20\x20\x50\x6F\x64\x63"
                "\x61\x73\x74\x82\xC9\x88\xDA\x90\x41\x81\x42\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
                "\x20\x88\xEA\x96\x7B\x95\xFA\x91\x97\x20\x20\x20\x48\x2E\x4B\x20\x82\xB3\x82\xF1\x20\x28\x34\x30\x29\x20\x91"
                "\xBC\x20\x35\x31\x34\x96\xBC\x0D\x0A\x20\x20\x20\x20\x20\x20\x89\x46\x92\x88\x82\xC9\x8C\xFC\x82\xAF\x82\xC4"
                "\x94\xAD\x90\x4D\x81\x42\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x4E\x41\x53\x41\x20\x20\x20"
                "\x20\x20\x20\x20\x92\xB7\x8A\xAF\x82\xB3\x82\xF1\x20\x28\x37\x36\x29\x0D\x0A\x20\x20\x20\x20\x20\x20\x88\xD9"
                "\x90\xA2\x8A\x45\x82\xD6\x93\x5D\x90\xB6\x81\x42\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20"
                "\x20\x20\x20\xE3\xC4\x82\xCE\x82\xB5\x82\xBD\x82\xA2\x8D\xE9\x8B\xCA\x41\x82\xB3\x82\xF1\x20\x28\x34\x33\x29"
                "\x0D\x0A\x0D\x0A\x82\x53\x81\x44\x90\xE9\x93\x60\x0D\x0A\x20\x20\x20\x20\x82\xB1\x82\xCC\x83\x79\x81\x5B\x83"
                "\x57\x82\xF0\x8D\xEC\x90\xAC\x82\xB5\x82\xBD\x96\xEE\x90\x81\x82\xAA\x8C\xB4\x8D\xEC\x82\xF0\x92\x53\x93\x96"
                "\x82\xB7\x82\xE9\x81\x75\x90\x5F\x8F\x8F\x82\xCC\x82\xD7\x82\xE9\x82\xB8\x81\x76\x82\xCC\x83\x52\x83\x7E\x83"
                "\x4A\x83\x89\x83\x43\x83\x59\x94\xC5\x0D\x0A\x20\x20\x82\xC5\x82\xA0\x82\xE9\x81\x75\x90\x5F\x8F\x8F\x82\xCC"
                "\x82\xD7\x82\xE9\x82\xB8\x20\x83\x52\x83\x7E\x83\x4A\x83\x89\x83\x43\x83\x59\x81\x76\x82\xAA\x81\x41\x42\x4F"
                "\x4F\x54\x48\x82\xC5\x94\xCC\x94\x84\x92\x86\x82\xC5\x82\xB7\x81\x42\x0D\x0A\x20\x20\x20\x20\x68\x74\x74\x70"
                "\x73\x3A\x2F\x2F\x79\x75\x7A\x75\x72\x2E\x62\x6F\x6F\x74\x68\x2E\x70\x6D\x2F\x0D\x0A\x20\x20\x20\x20\x82\xDC"
                "\x82\xBD\x81\x41\x91\xE6\x8E\xB5\x98\x62\x82\xCD\x32\x30\x32\x33\x94\x4E\x31\x32\x8C\x8E\x33\x93\xFA\x82\xCC"
                "\x43\x4F\x4D\x49\x54\x49\x41\x31\x34\x36\x82\xC5\x94\xD0\x95\x7A\x97\x5C\x92\xE8\x81\x69\x82\xA0\x82\xAD\x82"
                "\xDC\x82\xC5\x97\x5C\x92\xE8\x81\x6A\x82\xC5\x82\xB7\x81\x42\x0D\x0A\x0D\x0A\x20\x20\x20\x20\x8E\xE1\x82\xA2"
                "\x8D\xA0\x82\xCD\x81\x41\x93\xAF\x90\x6C\x8A\x88\x93\xAE\x82\xC6\x82\xB5\x82\xC4\x81\x41\x83\x56\x83\x85\x81"
                "\x5B\x83\x65\x83\x42\x83\x93\x83\x4F\x83\x51\x81\x5B\x83\x80\x8D\xEC\x82\xE8\x82\xC9\x97\xE3\x82\xF1\x82\xC5"
                "\x82\xA8\x82\xE8\x82\xDC\x82\xB5\x82\xBD\x82\xAA\x81\x41\x0D\x0A\x20\x20\x8C\xBB\x8D\xDD\x82\xC6\x82\xC8\x82"
                "\xC1\x82\xC4\x82\xCD\x81\x41\x90\x46\x81\x58\x82\xA0\x82\xC1\x82\xC4\x91\xE5\x95\x9D\x82\xC9\x8A\x88\x93\xAE"
                "\x8F\x6B\x8F\xAC\x82\xB5\x81\x41\x82\xB1\x82\xEA\x82\xAA\x97\x42\x88\xEA\x8E\x63\x82\xC1\x82\xC4\x82\xA2\x82"
                "\xE9\x93\xAF\x90\x6C\x8A\x88\x93\xAE\x0D\x0A\x20\x20\x82\xC6\x82\xC8\x82\xE8\x82\xDC\x82\xB7\x81\x42\x82\xBA"
                "\x82\xD0\x89\x9E\x89\x87\x82\xA2\x82\xBD\x82\xBE\x82\xAF\x82\xEA\x82\xCE\x8D\x4B\x82\xA2\x82\xC5\x82\xB7\x81"
                "\x42\x0D\x0A\x0D\x0A\x20\x20\x20\x20\x49\x4E\x41\x53\x4F\x46\x54\x82\xC6\x82\xB5\x82\xC4\x82\xE0\x81\x41\x8D"
                "\xC5\x8B\xDF\x82\xCD\x8A\x88\x93\xAE\x82\xAA\x8F\x6B\x8F\xAC\x8C\x58\x8C\xFC\x82\xC9\x82\xA0\x82\xE8\x82\xDC"
                "\x82\xB7\x82\xAA\x81\x41\x82\xB1\x82\xCC\x82\xDC\x82\xDC\x8F\x6B\x8F\xAC\x82\xB5\x82\xC4\x0D\x0A\x20\x20\x82"
                "\xB5\x82\xDC\x82\xA4\x82\xC6\x8D\xA1\x8C\xE3\x89\xBD\x82\xE0\x8E\x63\x82\xE7\x82\xC8\x82\xA2\x82\xC6\x82\xA2"
                "\x82\xA4\x82\xCC\x82\xE0\x8C\x99\x82\xC6\x82\xA2\x82\xA4\x82\xB1\x82\xC6\x82\xA9\x82\xE7\x81\x41\x8B\x8E\x94"
                "\x4E\x81\x41\x83\x57\x83\x87\x81\x5B\x83\x4E\x83\x5C\x83\x74\x83\x67\x0D\x0A\x20\x20\x82\xF0\x8F\xD0\x89\xEE"
                "\x82\xB5\x82\xC4\x8B\x4C\x98\x5E\x8E\x63\x82\xB7\x82\xBD\x82\xDF\x82\xCC\x93\xAE\x89\xE6\x82\xF0\x8D\xEC\x90"
                "\xAC\x82\xB5\x82\xDC\x82\xB5\x82\xBD\x81\x42\x59\x6F\x75\x54\x75\x62\x65\x72\x82\xC6\x82\xB5\x82\xC4\x8A\x88"
                "\x93\xAE\x82\xF0\x82\xB7\x82\xE9\x0D\x0A\x20\x20\x82\xED\x82\xAF\x82\xC5\x82\xCD\x82\xC8\x82\xA2\x82\xCC\x82"
                "\xC5\x81\x41\x92\xE8\x8A\xFA\x93\x49\x82\xC8\x8D\x58\x90\x56\x82\xC8\x82\xC7\x82\xCD\x82\xA0\x82\xE8\x82\xDC"
                "\x82\xB9\x82\xF1\x82\xAA\x81\x41\x96\xA2\x97\x88\x82\xC9\x8E\x63\x82\xB7\x8B\x4C\x98\x5E\x82\xC6\x82\xA2\x82"
                "\xA4\x0D\x0A\x20\x20\x82\xB1\x82\xC6\x82\xC5\x82\xB1\x82\xBF\x82\xE7\x82\xC9\x8E\x63\x82\xB5\x82\xC4\x82\xA2"
                "\x82\xAB\x82\xBD\x82\xA2\x82\xC6\x8D\x6C\x82\xA6\x82\xC4\x82\xA2\x82\xDC\x82\xB7\x81\x42\x0D\x0A\x20\x20\x20"
                "\x20\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x77\x77\x2E\x79\x6F\x75\x74\x75\x62\x65\x2E\x63\x6F\x6D\x2F\x63\x68"
                "\x61\x6E\x6E\x65\x6C\x2F\x55\x43\x79\x30\x62\x45\x35\x71\x57\x61\x48\x52\x34\x6D\x4E\x2D\x75\x52\x4F\x57\x5A"
                "\x44\x39\x77\x0D\x0A\x0D\x0A\x82\x54\x2E\x20\x8E\xD3\x8E\xAB\x0D\x0A\x0D\x0A\x20\x20\x20\x20\x8B\xBB\x96\xA1"
                "\x82\xF0\x8E\x9D\x82\xC1\x82\xC4\x82\xB1\x82\xF1\x82\xC8\x82\xC6\x82\xB1\x82\xEB\x82\xDC\x82\xC5\x93\xC7\x82"
                "\xF1\x82\xC5\x82\xA2\x82\xBD\x82\xBE\x82\xA2\x82\xBD\x8A\x46\x97\x6C\x82\xC9\x8A\xB4\x8E\xD3\x82\xA2\x82\xBD"
                "\x82\xB5\x82\xDC\x82\xB7\x81\x42\x0D\x0A\x0D\x0A\x0D\x0A\x82\x55\x2E\x20\x8D\x58\x90\x56\x97\x9A\x97\xF0\x0D"
                "\x0A\x0D\x0A\x20\x20\x20\x32\x30\x32\x33\x2F\x30\x39\x2F\x30\x39\x20\x20\x76\x65\x72\x2E\x31\x2E\x30\x30\x20"
                "\x20\x8F\x89\x8C\xF6\x8A\x4A\x81\x42\x0D\x0A\x0D\x0A\x0D\x0A";

void setup() {
  Serial.begin(115200);
  delay(500);
  Serial.println();

  // 固定IP
  WiFi.mode(WIFI_STA);
  WiFi.config(local_IP, gateway, subnet);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }

  server.begin();
}

void loop() {
  while (1) {
    WiFiClient client = server.available();

    if (client) {
      // 訪問者数前のテキストを出力
      i = 0;
      while (client.connected()) {
        client.write(denbun1[i]);

        // 1バイト返すごとにLEDを点滅させる。また、あえて50msのをスリープを置き、時代のゆったり感を演出
        delay(50);
        if(Mode){
          digitalWrite(LED_BUILTIN, HIGH);
        }else{
          digitalWrite(LED_BUILTIN, LOW);
        }

        Mode = !Mode;
        ++i;
        if (denbun1[i] == 0x00) { // 文字列終端に達した
          break;
        }
      }

      // 訪問者数を出力
      client.write(String(++iVisitor).c_str());

      // 訪問者数後のテキストを出力
      i = 0;
      while (client.connected()) {
        client.write(denbun2[i]);

        // 1バイト返すごとにLEDを点滅させる。また、あえて50msのをスリープを置き、時代のゆったり感を演出
        delay(50);
        if(Mode){
          digitalWrite(LED_BUILTIN, HIGH);
        }else{
          digitalWrite(LED_BUILTIN, LOW);
        }

        Mode = !Mode;
        ++i;
        if (denbun2[i] == 0x00) { // 文字列終端に達した
          break;
        }
      }

      client.stop();
    }
  }

  delay(1);
}



■コンパイル/エクスポートしてファームウェアを作成、書き込み



■Raspberry Pi Pico W TELNETサービス起動、接続テスト




本ページへは、自己責任の範囲内であれば自由にリンクしていただいて構いません。
本ページに掲載されている内容は、自由にお使いいただいて構いませんが、必ずしも筆者が内容を保証するものではありませんので、ご利用に際しては自己の責任においてお使いいただきますよう、お願いいたします。
このページのURLやアンカーは、サーバ運営・サイト運営・ページ運営・その他の都合により無告知で一時的あるいは永遠に消滅したり、変更したりする可能性がありますので、あらかじめご了承下さい。
本ページは、公開から1年半経過後の任意のタイミングで削除される予定です。本ページの内容は複製・公開していただいて構いません。


/トップ/目次/管理人のひとこと/Raspberry Pi Pico WでWebサーバを作れるなら、最近話題のTELNETサーバ的なものが作れるかを試してみたい