今年出たハッカソンまとめ

はじめに

この記事は「NBUゆるゆるかれんだー Advent Calendar 2023」用に執筆しました。

こんにちは、nakajです。

今回は、今年出たハッカソンの作品と開発期間で感じたこと、思ったことの振り返っていこうと思います。

Open Hack U 2022 Spring OSAKA

最初は前年度に参加した「Open Hack U 2022 Spring OSAKA」というハッカソンに参加したときに制作した「ココロフレーム」という作品です。
この作品は「春」というテーマから、「楽しいときほど旅行先で写真を取り忘れる」という課題から作りました。

作品概要

耳に付けた心拍センサからを使って、自分の心拍数が上がったとき目につけたデバイスで写真を撮ることで、写真の撮り忘れを防止します。
撮影した写真は専用アプリに保存され、スライドショーのような動画を作成
して端末に保存できます。

開発で苦労したことや

自分はこの作品でデバイス部分とアプリのバックエンド部分を担当しました。
デバイスのカメラ部分は2年生の期末作品で使ったプログラムがそのまま使えたのですぐ終わりましたが、心拍センサは初めて使いました。
使用した心拍センサが、脈拍による光の透過具合の変化を光センサーで読み取るセンサでした。サンプルプログラムに心拍数の計算式が書いてありましたが、理解するのに遅れて時間が取られました…。

さらにM5stick C Plusでattachinterruptを使ったのも初めてでした。
センサのデジタル値を読み取る回数やdelayの秒数が原因でマイコンが再起動することにも苦しめられました。
M5stick C Plusはプログラムを書き込むときにBATと3V3を短絡させない書き込めないときがあり、自分はこのハッカソンでM5stick C Plusを使うことにちょっと抵抗ができましたw

また、swiftでOSCを触ったのも初めてでした。OSCのインストール方法が cocoa podsとは違う方法でインストールすることや、ライブラリが複数あったので、どれが使いやすいかなども学べました。

感想

ひとりでデバイスとアプリ(通信部分)のプログラムを書いたのは、自分がこれまで作ってきた作品にしては珍しく、思い入れがあります。

NxPC Lab Vol.65「流せ、ソ~~~メン」

次は3年生になって初めて参加したハッカソン?です
実際はIAMASで開催されたクラブインベントで、ハッカソンじゃないし、作品名も無いデバイスですが、今年作った作品だとTOP3に入るくらい満足感の高いデバイスです。

作品概要

学校でDJ班とVJ班に別れて自分はDJ班でした。
上の写真で光ってるものが自分達で作った部分です。
アクリルの土台にESP32とロードセルとLEDが入ってるシンプルなデバイスです。ビーカーの中にあるのは消臭ビーズで、重さに応じてLEDの色が変わる
のと、MIDIをBLEでPC内にあるDJアプリに送信しています。

開発で苦労したこと

今回のイベントで初めてMIDIを扱いました。MIDIに関する知識は「名前だけ知ってる」程度でした。それに加えDJアプリも使ったことがなく、そもそも通信がうまくできるのか…?という不安しかないイベントでした。
調べたところBLEでMIDI通信できそうだったのでdjayというDJアプリを使いました。
djay側はbluetooth midi connectというアプリを仲介してESPとPCをBLEで接続するだけだったので簡単でした。bluetooth midi connectの評価が低かったので最初は不安でしたが…
問題はESP32側でした。BLEでMIDIを扱ってる記事が少ないのとライブラリは見つかりますが扱いづらかったです。結局普段使ってるBLEに似た書き方のものを使ってdjayと通信できたのでテスト段階ではうまく行けました。

しかし、本番に近づくに連れMIDIの知識不足に追い詰められていきました。
MIDIのチャンネルを分けて曲の変化させたいパラメータを変えることや、ノート番号の対応、velocityがどういう物なのか、など今振り返れば「こんなんで苦しんでいたのか…」と恥ずかしいところですが。

感想

このイベントに参加して良かったなと思えたところは、MIDIの知識がついた事とマイコンを使って曲のパラメータを変えることが出来たことです。
このnoteを書くきっかけになった文理との脱出ゲームでもそうですが、普段は視覚的に変化するものばかりで、ここまで明確に音が変化する物は初めて作り自分が作った作品の中でもお気に入りのデバイスの一つです。

Fri+Lenz

この作品は「名古屋web3ハッカソン2023」に参加した際に制作した「Fri+Lenz(フレンズ)」という作品です。

作品概要

専用カメラで撮影したアルバムを、NFTとして保存し、RFIDを組み込んだキーホルダーと紐づけます。キーホルダーをカメラに近づけることで、NFTにより所有者を照合し、紐づけたアルバムを見ることができます。
友人グループで遊びに行き、写真を撮影した後に、写真の所有者であることを証明するキーホルダーを互いが持つことで、全員が集まらないと思い出の写真を見ることができなくし、再び集まるきっかけを作ることができます。

開発で苦労したことや感想など

この作品でもデバイス部分とサーバ部分を少し担当しました。
カメラ部分は前使ったプログラムをそのまま使い回しました。
ただ、RFIDはしっかり触るのは今回が初めてでした。2年生の前期に同級生の手伝いで触りましたが、その頃はどの処理が何を行っているかまったく分かりませんでしたが、1年経って成長を感じれて嬉しかったです。
それぞれのRFIDに個人の情報を書き込まないといけないのですが、これまでの卒業生の方でもやったことがなく、自分が初めてだったのですが、うまく出来てよかったです。
RFIDに情報を書き込む知見が出来たので作品制作に結構活かすことができそうです。

このハッカソンで初めて開発でブロックチェーンを使いました。以前ジェネラティブアートの勉強会に参加した際に座学でブロックチェーンについて少し勉強した程度でした。
正直な話をすると、開発段階でも、今noteを書いている段階でもブロックチェーンやNFTのことはあまり理解出来てませんw。サーバ部分を担当してくれたけーちゃんがいないとヤバかったです。ありがとう…

感想

この作品で自分は初めて賞を受賞できたので嬉しかったです。しかも、総合優勝と企業賞のW受賞でした。ASTARのユウキさんには感謝しかないです。

トットトトーク

この作品は「U-22プログラミング・コンテスト」に参加した際に制作した「トットトトーク」という作品です。

作品概要

会議の際に司会者が意見を求めたり注目してほしかったりするときに、手元のパソコンの画面を見ていて気づかない人がいます。
この作品は、司会者が手を叩くかWebアプリを操作することで、参加者のパソコンに取り付けたデバイスによって、パソコンをスリープ状態にします。 会議の参加者にパソコンを一時的に操作させないようにすることで、円滑に会議を進行することをサポートします。

開発で苦労したこと

作品制作に取り掛かった際は、モーターを動かすやり方ではなく、ネジにエナメル線を巻いて電磁石にしてMOSFETやモータードライバを使ってパソコンをスリープ状態にしようとしていました。
しかし、マックの磁石センサが電磁石だとなぜか反応せず、永久磁石なら反応するという謎の現象が発生。モータードライバを今回始めて触ったこともあり、これに気付くまでにモータードライバが2つ壊れました…。
最終的にモーターフェーダに永久磁石を取り付けて移動させることでスリープ状態にすることになりました。

拍手センサも今回始めて触りました。秋月に売っているセンサキットをはんだ付けして組み立てました。触ってみた感想ですが、センサ自体の精度をもう少し上げて欲しい…ていう感じですね。

web socketも初めて触りました。ESP32側のweb socketはライブラリが分かりやすかったです。サーバ側はpythonで書きました。MySQLのデータを定期的にESP32に送ってモーターフェーダの位置を変えないといけないんですが、受信待ちの間は処理が止まってしまう問題あったのが面倒でした。

感想

Fri+Lenz」やNxの後に作った作品なんですが、機能が簡単なのと視覚的な変化が少ないのであまり印象は無いですねw。ネジにエナメル線巻きつてたときに理科の実験を思い出したのと、面倒だったなあって感じです。

ヒートフック

この作品は「技育CAMPキャラバン in 大阪」に参加した際に制作した「ヒートフック」という作品です。

作品概要

秋は寒暖差が激しく、適切な服装を選ぶことが難しいです。 本作品は、寒いと感じたときに導電糸が縫い付けられている腕の部分をこすることで、服内部の発熱シートが温かくなります。 また、腕をこすった場所をアプリに送信することで、他のユーザが寒いと感じた地点を共有することができ、寒さの肌感覚をオープンデータとして共有することができます。

開発で苦労したこと

このハッカソンは、開発陣が風邪を引いてしまいかなりかなりハードなハッカソンでした。検証を終わった段階で風邪をひき、自分が開発に復帰したときにはほぼほぼ完成していました。江崎さんと青木先輩、ありがとうございます…。

服を擦って暖かくなるという部分で、着ている人にしかそれが分からないのでサーモカメラを買って動かしてみました。サンプルを動かしただけですが。いつか作品にも活かしてみたいですね。

感想

服を擦った部分を導電糸を使っているんですが、「これ、どうやって実現してるんだ?」みたいな感じの使い方をしてみたいです

転ケンパ


この作品は「Web×IoT メイカーズチャレンジ PLUS in 富山」に参加した際に制作した「転ケンパ」という作品です

作品概要

雪道を歩くとき、真っ白なため、雪の凹凸や凍りついているかどうかがひと目ではわからず危険です。 本作品は、腰につけたデバイスからグリッド線と地面の温度を地面にプロジェクションすることで、雪の状態がわかりやすくなり、安全に道を歩くことができます。凍った地面の方向に歩いてしまうと不正解の音が鳴るため、雪道をゲームのような感覚で楽しんで歩くことができます。

開発で苦労したこと

今回のハッカソンは開発外での苦労が大きかったです。
チームが勝手に分断されてはじめましての人と組まされる、組むことになったT大学の1人はハッカソン期間中一切連絡がないどころかリアクションすらなかったです。カスが、、、
そもそも、デバイスが必須のハッカソンで遠隔で開発なんかできるわけないのに…
それとCHIRIMENとかいうカスエディターは2度と使いたくないですね。

今回の作品はヒートフックのときに使ったサーモカメラをうまく活かせてよかったです。
先生のアドバイスで表示する温度を絶対温度で表示するか、相対温度で表示するか変えたりして多少コード変えました。
今回はM5の画面に表示されているサーモカメラの情報をプロジェクターに表示するために「M5Stack Display Module」というのを使いました。

M5Stack Core2とDisplay Module

BasicよりもCore2の方がHDMI出力が安定するというツイートを見て、今回初めてcore2を触りましたが、画面がタッチパネルで気持ちBasicよりもきれいでした。

Display Moduleの取り付け方ですが、M5の裏の蓋をこじ開けて、露出しているピンヘッダに取り付けます。このときに外した蓋に加速度センサが取り付けられてて、サンプルコードを書き込んでも動かないというアクシデントが発生しました…
HDMIを出力するコードはメソッド1つ記述するだけでできるのでめちゃ簡単です。今回は使いませんでしたが、接続先から音を出したり、表示するサイズを指定したりするメソッドがあったので、結構応用が効きそうです。

Display Moduleを使うためにM5Unifiedというライブラリを使いました。
これまでは使用するM5のマイコンごとにそれぞれのライブラリを読み込んできましたが、M5Unifiedはその必要がなくなる優れものです。
ただ、自分的にはこれまで使ってきたライブラリの方が書き慣れているのであんまり使わないと思います。

感想

今回の作品は特別賞を頂いたんですが、サンプルコード切り貼りするだけだったので楽でしたw。コードはもっと簡略化できそうなので年末年始までに書き直したいですね。

まとめ

今年出たハッカソンまとめと言ったものの、今年に作った作品をまとめた感じになりました。作ってて楽しかったのは、DJデバイスとFri+Lenzでした。DJデバイスとFri+Lenzは開発期間に余裕が結構あったので、きれいにコードを書けたので満足です。特にFri+Lenzはデバイス、アプリ、サーバと結構なボリュームがあるのと、RFIDに書き込む部分の開拓が出来たので良かったです。

おまけ

今年作って良かったなと思った作品のランキング

  1. Fri+Lenz

  2.  転ケンパ

  3.  DJデバイス

順位付けの理由は、使っている技術だったり、どれくらいコードをきれいに書けたかっていう部分でこうなりました。
追記して思ったけど、BLEでMIDI飛ばしたり、磁石でパソコンをスリープしたり、サーモカメラをプロジェクションマッピングしたりこの1年で作った作品は良くわからんことばっかやってますねw
技育CAMPの参加者や富山ハッカソンのメンターの人にも言われましたけど「実際に作ってくるとは思ってませんでした。」って言われたのは嬉しかったです。
マイコンの性能が上がってるのはそうですけど、自分の作った作品がそういう風に評価されるのは、プロトタイプ作品ならではだなーと思いました。


この記事が気に入ったらサポートをしてみませんか?