bohemia日記

おうちハックとか画像処理、DeepLearningなど

WifiのSSIDで隣人とコミュニケーションしよう

こんにちは。ぼへみあです。

こちらは、おうちハックアドベントカレンダーの5日目の記事になります。

スマホのテザリング機能やモバイルWifiルーターで簡単に自分の付近にWifi環境を作ることができる時代です。 ときに、このWifiのSSIDに変な名前をつけて盛り上がっている人もいます。

【これはひどい】街中で見つけた Wi-Fi名 が面白かったりひどかったりする件について - NAVER まとめ

ここで僕は、このSSIDを隣人や近くの人とのちょっとしたコミュニケーションに使えないか?と考えました。

自宅にて

自分のアパートやマンションの隣や上下に住んでいる人とコミュニケーションを取っていますか? 近所づきあいも面倒だし、関わりがない場合が多いのではないでしょうか?  しかし集合住宅に住んでいるからには、隣人トラブルというのはつきものです。
コミュニケーションがないと、お互いの不満が分からず、不満が積み重なると大ごとになり兼ねません。
少しでもその人と関わりがあれば、大ごとになる前に済むでしょう。
こういうときはSSIDで、軽い要望や不満を投げかけてみるのはどうでしょうか?

f:id:bohemian916:20181206002704p:plain

新幹線にて

新幹線で他人と話す機会なんてありませんよね?
例えば景色を眺めて、山が綺麗なことに感動して、誰かと共有したいと思うこともあると思います。だけど写真を撮ってSNSに投稿しても、実際に見た景色の綺麗さと感動は伝わらない訳です。できれば同じ場所と時間を共有している人と一緒に盛り上がりたい。 そんなときは、こんなSSIDをつけましょう

f:id:bohemian916:20181206002807j:plain

ふと新幹線で仕事中のサラリーマンが、Wifi繋ごうとWifi一覧をみた瞬間、 「山が綺麗だよ」という情報を得てふと窓の外を眺め、しばし山に見惚れる。こんなことがあったら素敵ではありませんか?

イベント会場にて

同じ趣味の人間が集まるイベントでは、せっかくなので同好の人にしか分からないようなネタを交えて盛り上がりましょう。
コミケだとこんな感じでしょうか。
f:id:bohemian916:20181206002947p:plain

他の人の使い方

勉強会で無料のWifiがないことをSSIDで伝えるという絶望的な使い方をされていました。

https://camo.qiitausercontent.com/e5ed5e8f9c7e53af91d3dad17ad3a018fea3022e/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3133373034352f61653034306437632d636337392d393765642d313662332d3766646663643938393833382e706e67

qiita.com

位置情報とコミュニケーション

インターネットというのは、すぐ近くにいる人にメッセージを送ったり、コミュニケーションするのが結構面倒だったりします。 通信回線を介して遠くにあるサーバーに接続し、今のGPS位置情報を送って初めて、その人は近くにいる、という情報がわかります。 場合によっては、AWSのサーバーがある地球の反対まで情報が行かないと「近くにいる」ことさえ分からないのはまどろっこしいのでは、とおもいます。 そんなまどろっこしい方法ではなく、電波の届く範囲の人と気軽にコミュニケーションをとるには、Wifiの電波を利用したこの方法が準備もなく一番手軽かと思います。

SSIDだけじゃなくてサーバーたてちゃえば?

変わった名前のWifiがあれば、使えるのか試しに繋いでみたくなると思います。不正アクセスやらセキュリティが頭によぎってなかなかできませんが。しかしSSIDでは10文字までしか情報を伝えられないので、なかなか限界があります。 そこでESP8266というマイコンを使って、ごく小規模のWebサーバーを作ってみましょう。

Wi−Fiモジュール ESP−WROOM−02 DIP化キット: 無線、高周波関連商品 秋月電子通商-電子部品・ネット通販

これを使うと、好きな名前でWifiが飛ばせる上に、ごく小規模ながらWebサーバーを作ることができます。秋月でブレッドボードに刺さるDIP化のものならたったの650円!

これを使い、パスワードなしのWifiに繋いだら、ゴミの日の情報がすぐに出てくるSSIDを作りました。 パスワードがいらない、gomi_infoという名前のWifiに繋いだ時のデモです。

youtu.be

仕組みとしては、無料のWifiに繋いだときに、認証やらログインをさせるための画面がぽんと出てくるアレを使いました。 この仕組みはCaptive Portalと言うそうです。

書き込んだコードはこんな感じです。

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <DNSServer.h>
#include <FS.h>

static const char *ssid = "gomi_info";
static const char *pwd = "";

ESP8266WebServer server(80); 
DNSServer dnsServer;
IPAddress ip( 192, 168, 3, 1); 
IPAddress subnet( 255, 255, 255, 0 ); 

const byte DNS_PORT = 53;

void setup() { 
  Serial.begin(9600);
  SPIFFS.begin();
  WiFi.mode(WIFI_AP); 
  WiFi.softAPConfig(ip, ip, subnet); 
  WiFi.softAP(ssid, pwd);

  dnsServer.start(DNS_PORT, "*", ip);
  
  server.onNotFound(handleNotFound);
  server.on("/", handleRoot); 
  server.begin();
  Serial.println("ap setup..."); 
} 
void loop() { 
  dnsServer.processNextRequest();
  server.handleClient(); 
}

void handleRoot() {
    
    String tmp;
    //index.htmlファイルの読み込み
    File index = SPIFFS.open("/index.html", "r");
    if(!index)
       Serial.println("file open failed");
    else{
      tmp = index.readString();//index.htmlをstringで読み込み
      index.close();//ファイルを閉じる
    }      

    server.send(200, "text/html", tmp);
}

void handleNotFound()
{ 
    server.sendHeader("Location", "/",true); //Redirect to our html web page 
    server.send(302, "text/plane",""); 
}

HTMLは別途転送しています。 ポイントはやはりCaptive Portalですね。こちらを参考にさせていただきました。

ESP-WROOM-02でIoTデバイスっぽいものを作る(1) : Eleclog.

同様のことをコミケでやられた方がいらっしゃったそうですが、こちらは市販の無線ルーターにOpenWRTというOSを自力で入れ、バッテリー駆動で頑張って動かしてます。

enukane.github.io

こちらと比べると、ESP8266を使ったこの方法は、材料費が1000円以下で済むのと、乾電池でも動いてしまうというお手軽さです。 大きさもウィダーインゼリーくらいです。これだけでアクセスポイント構築+Webサーバーとしての役割が果たせてしまうのは驚きです。

f:id:bohemian916:20181206003759j:plain

私が使ったのはESP8266という少し前に流行ったWifiモジュールSocでしたが、後継で今流行っているESP32も同様にできそうです。 ESPシリーズをこのような局所的な告知やコミュニケーションに使うのはかなりコスパが良いと思います。
例えばマンションで住民専用のお役立ちページを作ったり、会場でしか必要のない情報を掲載したりするのに良さそうです。
なによりURLを共有せずとも、Wifiに繋ぐだけで情報が得られるというのはかなり便利だと思います。リアルでURLを伝える手段はQRコードやURL手打ちなどが考えられますが、こっちのほうがスマートです。
皆さんも機会があればESPシリーズで局所的な情報共有に使ってみてください。