もよいめも

不定期更新ものづくりブログ

【Arduino】Raspberry Pi Picoと圧電ブザーだけで好き放題しゃべらせる(スピーカーでも)

どうも、そういえば先日愛車が事故で廃車になったんですけど、
日々マイコンで色々作っていると、圧電ブザーを使う機会が良くありますよね(???)

愛車のヘッドライトつけっぱなしでドア開けた時になる警告音も圧電ブザーだったのかなぁ...

まあそんなことはおいといて、
ブザーは大変高インピーダンスであるため、アンプ不要で直接マイコンから駆動できる上に消費電力も極めて少ない、非常に優秀な部品ではありますが、
出せる音といったら単音だけなイメージ

実際のところ、ブザーで音楽や声を流すことはできるのか?
今回は、そんなことを試してみましたのでご紹介いたします。

結論

マイコンとブザーだけの場合
ギリ聞こえる

やり方

まず、音声ファイルを用意します

今回は以下サイトで適当に生成した音声を使用させていただきます。
www.voicevox.su-shiki.com

そしたら以下PythonコードでWAVファイルを解析して、生データを配列として記録したヘッダーファイルに変換

import numpy as np
import wave
import os
import tkinter as tk
from tkinter import filedialog

iDir = os.path.abspath(os.path.dirname(__file__))
os.chdir(iDir)

filetype = [ ("WAVファイル","*.wav"), ("すべて","*")]
file_path = tk.filedialog.askopenfilename(filetypes = filetype, initialdir = iDir)

w = wave.open(file_path, 'rb')
data = w.readframes(w.getnframes())
w.close()

s = np.frombuffer(data, dtype="int16") 

f = open(os.path.splitext(os.path.basename(file_path))[0]+'.hpp', 'w')
counter = 0
print(int(w.getframerate()))
f.write('#pragma onceu\n')

f.write('\n')
f.write('const uint16_t len_'+os.path.splitext(os.path.basename(file_path))[0]+' = '+str(len(s))+';\n')
f.write('PROGMEM const int16_t sound_'+os.path.splitext(os.path.basename(file_path))[0]+'[] = {\n')
for rawSound in s:
    f.write(str(hex(int(rawSound)))+',')
    counter+=1
    if counter == 100:
        counter = 0
        f.write('\n')
f.write('};')
f.close()
生成されたmazimanzi.hpp

ターミナルに音声ファイルのサンプリングレートも吐き出されるので、別途記録しておきます。

サンプリングレート

そしたらArduino IDDEで新たなスケッチを作成して保存、同じディレクトリに生成されたヘッダファイルをぶち込みます。

今回はPROGMEM呪文によってRAMではなくフラッシュに音声データを保存しているので、他のプログラムの規模によりますが2Mbyteくらいの音声を再生できます。
今回の音声データだと約9秒で5%なので、max180秒つまりは3分くらいは保存しておけるかもですね。

コンパイル後のファイル容量

そして以下が肝心のプログラム。
今回はPWMaudio機能を利用して何とか鳴らないか試してみました。
PWM Audio Library — Arduino-Pico 3.6.0 documentation
ちなみに、PWMの周波数は48KHz固定の様子、人間の可聴域は20KHzくらいまでなので一応外れています。

#include <PWMAudio.h>
#include "mazimanzi.hpp"

PWMAudio pwm(0);

void setup() {
  pwm.begin(24000);//サンプリングレートを入力
}

void loop() {
  for (int i = 0; i < len_mazimanzi; i++) {
    pwm.write(sound_mazimanzi[i], true);//音声をバッファに追加(trueで空きがない場合待機)
  }
  delay(1000);
}

結果はこちら↓
youtu.be

う~ん、ギリ聞こえるかなって感じ。
マイコンから直だとあんまり実用的とは言えなそうです。

(マイコンから直接駆動させる場合は抵抗を挟んだ方がいいです)
www.murata.com



ブザードライバーを挟めばなんとかなるかなとか思いましたが、
さすがに入力が8KHzまでなので厳しそう
NJU72501使用チャージポンプ内蔵圧電スイッチングドライバモジュール: 半導体 秋月電子通商-電子部品・ネット通販

Hブリッジ組んで高い電圧をかけるか...?
そこまでするならLPFをかませてオーディオ周波数に落としてスピーカーアンプ通して普通のスピーカーつないだ方がよっぽど幸せになれる気がします。

おまけ I2Sアンプでスピーカを使って鳴らす

少々値段が張りますが、市販のI2Sアンプに適当に配線すれば超簡単にそれなりの音量・音質でしゃべらせられます。
MAX98357搭載 I2Sアンプモジュールwww.switch-science.com

#include <I2S.h>
#include "mazimanzi.hpp"

#define pBCLK 12
#define pWS (pBCLK + 1)
#define pDOUT 11

I2S i2s(OUTPUT);

void setup() {
  i2s.setBCLK(pBCLK);
  i2s.setDATA(pDOUT);
  i2s.setBitsPerSample(16);
  i2s.begin(24000)
}

void loop() {
  for (int i = 0; i < len_mazimanzi; i++) {
    sample = sound_mazimanzi[i]; 
    i2s.write(sample);//モノラルアンプに入力する場合も2回writeする必要あり
    i2s.write(sample);
  }
  req_sound = NON;
}


Xにあげた動画っていい感じに埋め込めるんすね

そういや記事を書きながら、ブザーでずんだもん(変換で図んだもんになるのがうざい)がささやく「マジ卍」を聞き続けていたら、なんだか「マジで熱い」に聞こえてくるようになりました。

以上終わり!

(今月も雑記事でなんとかノルマ達成...)
moyoi-repo.blogspot.com

PicoWとESP32間でBluetooth通信

ぐぇ~
どうも皆さんお久しぶりです。
久々に需要がありそうで書けることをしたので、ご無沙汰ブログもいい加減更新していこうとおもいます。

PicoWのBluetooth

とりあえず資料は以下の通り。
Bluetooth on PicoW Support — Arduino-Pico 3.6.0 documentation
きわめて簡単な説明ですね!

簡単にマイコン間通信がしたいだけなのでSerialBluetoothとかでよさそう。
しかしながら、ソースを見る限りPicoWから特定の機器に接続する関数は未実装の様子
arduino-pico/libraries/SerialBT/src/SerialBT.h at master · earlephilhower/arduino-pico · GitHub

一方ESP32系では色々とSerialBTの記事が見つかり、特定の機器に接続する関数(conect)もあるようなので、
今回はESP32からPicoWに接続する形?でSerialBTを試そうと思います。

PicoWとM5stampPico
//PicoWに書き込むプログラム
#include <SerialBT.h>

void setup() {
  Serial.begin(115200);
  SerialBT.begin();
  pinMode(LED_BUILTIN, OUTPUT);
}

char buff[5];
uint8_t counter = 0;
void loop() {
  while (SerialBT) {
    if (BOOTSEL) {
      SerialBT.write('P');
    }

    while (SerialBT.available()) {
      digitalWrite(LED_BUILTIN, HIGH);
      char buff = SerialBT.read();
      Serial.print(buff);
    }
    digitalWrite(LED_BUILTIN, LOW);
  }
}
//ESP32(MK5stamp pico)に書き込むプログラム
#include "BluetoothSerial.h"
BluetoothSerial SerialBT;

uint8_t macAddress[6] = { 0x--, 0x--, 0x--, 0x--, 0x--, 0x-- };//ここにPicoWのMACアドレスをいれる
bool connected;

void setup() {
  Serial.begin(115200);
  SerialBT.begin("ESP32", true);

  connected = SerialBT.connect(macAddress);
  if (connected) {
    Serial.println("Connected");
  } else {
    while (!SerialBT.connected(10000)) {
      Serial.println("No connection");
    }
  }
}



void loop() {
  while (SerialBT.available()) {
    char buff = SerialBT.read();
    Serial.print(buff);
    if (buff == 'P') {
      SerialBT.write('E');
    }
  }
}

PicoのBOOTSELボタンを押すとESP32に'P'が、ESP32ではなにかを受信したら'E'を送信するプログラムです。
なお、PicoのMACアドレスは上のプログラムを書き込んでスマホとかで他のBluetooth機器を探すと「PicoW Serial (Macアドレス)」という名前で出てくるので、
それを使います。


と、数字おくるとこまでやりたかったのですが、健康優良児で夜に弱く、極めて瞼が重くなってきたので今日はここまで。
気が向いたら追記します。

ぐんない!

普通に使える!2千円台のType-C動作ホットプレート買ってみた

最近Twitterで話題になっていた2000円台で買えるTypeCで動くホットプレート。
MHP30というTypeCで動く小型ホットプレートもありますが、安くても7千円越えなのでちょっとなぁ... と。

そんなときに突如として現れた激安ホットプレート。
これは買うしかない!ということで、私も密かに購入していました。

購入したのこちら↓製品名は「GDCPH mini heating table」です。
https://s.click.aliexpress.com/e/_DehDhU7
(あふぇリンク)

どうやら販売店によって当たりはずれがあるそうで、天板のネジのザグリ加工のあったりなかったりするそうですが、
私が購入したものは外れだったようで、バリバリにネジ頭が飛び出てました。

梱包はいつもの袋にポツンのひと箱だけ。ケーブル等はもちろん付属していません。

無駄のない梱包

全体像はけっこうイカしてますね。ちなみに天板は加工後のものです。もともとはネジがかなり出っ張ってました。
一通り分解していましたが、下の箱の外壁以外はほぼPCBでできてました。ただし、ちゃんとPCBとして機能しているのは天板とメインボードだけです。
ちなみにサイズは56×56×38mmくらい

全体像(天板加工済み)と中身

メインボードはまあこんな感じ。
ホットプレートは単純にFETでON/OFFしている感じっぽいですね。

OLEDは定番のヤツ、諸事情で交換しましたが、手元のものでもアドレス変更なく普通に動作しました。
https://ja.aliexpress.com/item/32661517521.html?spm=a2g0o.order_list.order_list_main.63.533f585aZNF3j0&gatewayAdapt=glo2jpn

メインボードとOLED

小さいほうのICがUSB PDのシンクコントローラー、大きい方がマイコンです。
USB PD+BC シンクコントローラー CH224K: 半導体(モジュール) 秋月電子通商-電子部品・ネット通販

使われているICたち

天板(ホットプレート)の裏にはパターンが張り巡らされています。基板の上部に接点があり、全体の抵抗値は14Ωくらいでした。
天板への電源供給はポゴピンで行われ、単純にメインボードと接続されています。

温度センサはただ単に耐熱テープではっつけてあるだけ。グリス付けた方がよさそうですねぇ。

天板のうら

固定に使われていたのはこんなネジ、規格はM3で、なぜかインサートナットがところどころで使われてました。
サイズがちょうどよかったんでしょうか?

天板はただ穴をあけただけの状態で、画像のネジでそのまんま留められていました。
そのままだと大きい基板が乗らないので、手動のザグリ工具で頑張ってザグり、皿ネジに変更しました。
加工の際に天板が傷だらけのぼこぼこになりましたが、まあ使えればヨシッ!

使用されていたネジと加工した天板

各部に使われていたケーブルは粗悪な単線のものだったので、何度か分解しているうちに根元からちぎれてしまいました。
そもそもこのケーブル耐熱なのだろうか…?

そんなこんなで、この前秋月で買った耐熱ケーブルに交換しておきました。
耐熱電子ワイヤー 黒色 20m 導体外径0.36mm(AWG28相当): パーツ一般 秋月電子通商-電子部品・ネット通販

ケーブルを交換

改造したらいざ実験!
その辺に転がってた基板を天板においていざ電源ON!
画面はこんな感じ、加熱のON/OFFと温度設定は裏の2つのボタンで行えます。(加熱ON/OFFは2つのボタン同時押し)

200℃設定で待ちましたがなかなかはんだが溶けないので、適当に222℃に設定。
少し待っていたらどんどん溶けてきました。65Wの電源で動かしましたが思ってたより早かったです。
ディスクリート部品もつけっぱで、若干基板が浮いた状態でも、もりもり溶けてくれました。
そのうち極太のターミナル端子のはんだも溶け、引っ張って抜くことができました。

動作画面と実際に試した結果

まとめ

普通に使えるぞ!今すぐ買え!!

追記

別に販売店からも購入してみました
https://ja.aliexpress.com/item/1005005549693756.html?spm=a2g0o.order_list.order_list_main.5.240a585aWJmSuI&gatewayAdapt=glo2jpn

基板の色が全然違いますが、設計は全く同じそう

めっちゃ紫

温度センサーもめちゃちゃんとしてる

温度センサー

天板のザグリ加工もされてるし、皿ネジになってる

飛び出さない天板のネジ

これはなかなか....!
いい買い物をしたぜ~



と思っていたら
x.com
OMG
まさかのスイッチ割れ...
これは使い物にならないぞ

ということでスイッチも別途購入
せっかくなんでセットのものを購入します。これでまたスイッチが割れてても安心です
https://ja.aliexpress.com/item/1005001919466080.html?channel=twinner

Arduino IDEのコンパイル遅すぎだろ!!!

私史上初めてマイコンであるArduinoに出会ってから早や7年程…
本格的なものを作ろうとすると不便なことも多いですが、そんなに大したものも作らないので
いまだにArduino IDEをメインの開発環境の一つとして使用しています。

Arduino IDEはあくまでも初心者向けの側面が強いので、昨日も限られておりいつまでも頼り続けるのは如何なものかと思いつつも、
いつものUIをみると心が和んでしまう自分がいます。

まさに”実家のような安心感”といったところでしょうか。

もちろん、Arduino IDEからの脱却、脱実家をしようと考えていた頃もありましたが、そんな時に発表されたのが「Arduino IDE 2.0」

たとえるならば実家のリフォームといったところですかね?

モダンなUIに進化し機能もめちゃ強化され、ウキウキ気分で、バグだらけの初期betaから現在に至るまで使用してきました。(実は日本語への翻訳に協力してたりする)

そしてついに最近、beta版を脱し、正式版がリリースされました。


めでたい!🎉


そんな期待の新星「Arduino IDE 2.0」ですが、
どうやら無印IDEに比べ、”コンパイルが早くなった”らしいです。

よし!いっちょコンパイルしてみっか〜

コンパイルにかかった時間


ん??

2:30 10

2分30秒!!
Arduino IDEコンパイル遅すぎだろ!!!



ということでですね、私のWindwosでArduino IDEを使用すると、コンパイルに死ぬほど時間がかかる症状が長らくあり、
最近はもっぱらUbuntuコンパイルしてました。
しかし、先日Nano everyを使用したところ、なんと、ubuntu上でドライバが当たらない!!
仕方なくWindwsでコンパイルしてみるもこの酷さです。
(ちなみに、ubuntu上で去年のロボコンのメインプログラムをArduino IDEを使用してコンパイルしても、大体5秒くらいしかかかりません。)

うーむ、どうしたものか、長年放置してきた問題ですが、ちょうど今は時間もあるので重い腰を上げて原因を探ってみました。

原因

スケッチブック内のライブラリーがあまりにもでかすぎることが原因でした☆

改善方法

標準だと
/ドキュメント/Arduino
内にある「/libraries」フォルダの容量をみてみたところ、いつのまにか500MBを超えていました。
数年も開発をしているとライブラリが溜まりまくるのはあるあるかと思いますが、こんな簡単なことでコンパイルが激遅になっていたとは…
言われてみれば、コンパイルボタンを押してから、実際にコンパイルが始まるまでに相当な時間がかかっていたので、その間に大量のライブラリをロードしていたんですかね?

特にM5stackのライブラリーがクソデカだったりしましたが、M5stack(ESP32)はそもそもArduino IDEを使うとまじで時間かかるので、Platform IOに移行しており、Arduino IDEの方は一旦全部削除しました。

ちなみに、改善後のコンパイルにかかる時間は、数秒ほどに短縮されました。

敗北者の編入体験談2022「三重大学工学部編」

敗北者の編入体験談の第2弾!
今回綴っていくのは

三重大学工学部・電気電子情報工学課程!!

前回の長岡技科大もそうでしたが、今回も体験談と言うより旅行談寄りな気がします…
まあそんなことはどうであれ、少しでも誰かの参考になれば幸いです!

前回の記事と、全落ちしたくない人向けの記事もぜひご覧ください
moyoi-memo.hatenablog.com
moyoi-memo.hatenablog.com

続きを読む

敗北者の編入体験談2022「長岡技術科学大学編」

ちょっと前に「敗北者の編入体験談」シリーズのまとめだけ書いて投稿しましたが、
今回はやっと、各学校ごとの体験談を綴っていこうと思います。
本日の体験談は

長岡技術科学大学・電気電子情報工学課程!

時系列を追っていろいろと説明していこうと思います。
もちろん、試験の詳細も説明しますよ?

ちょうど追い込み時期に入っているであろう受験生の参考になれば幸いです。

ちなみに、まとめの記事も書いているのでそちらも一緒にぜひご覧ください!
moyoi-memo.hatenablog.com

続きを読む

編入全落ちする奴の特徴5選!! ~敗北者の編入体験談2022まとめ~

どうも皆さま。

業式までに書くとか言っときながら、学校に提出する報告書を書くだけでギブアップして、本記事を書いているのは後日となってしまいました。はぁ…

そもそも春休みも後半戦の今頃体験記を書いていること自体、懐疑的にならざるを得ません。
こうなってしまったのも、己の自己管理能力の著しい欠如の賜物…
ということで、同じ悲劇を生まないためにも、編入試験に全落ちした私が提案する、編入全落ちする奴の特徴5選を紹介していこうと思います。
終盤では編入試験の総合的な感想や費用についても書いたので、ぜひ最後まで見て行ってください。

続きを読む

長野高専ロボコン部の裏話 おまけもあるよ

本記事は長野高専アドベントカレンダーの22日目の記事です。
qiita.com
21日の記事はK_White氏による就活関連の記事でした。4年生は必読ですね。

ちなみに私の進路選択に関してはいつか記事を上げるのでお待ちください…

溜まりに溜まった下書きたち

流石に今年中に上げたいなぁ、めっちゃ見たいって方がいたらスターでも押してください。もしかしたらやる気出るかもしれません。

さて本題に戻りまして、今回は長野高専のアドカレということですので、長野高専に関連して、なおかつまもなくTV放送を控えている高専ロボコン2022の裏話でも、していこうかなと思います。
とはいっても部公式ブログでもない(公式ブログ、実はあるらしい)ので、差し障りのない内容ですがよろしくお願いいたします。
ついでに、おまけとして「後輩に教えたい!ちょっとした学び」をご用意したので、そちらも読んでいただけると嬉しいです。

時系列で振り返る

ルール発表から

4月下旬、今年のルールである「ミラクルフライ〜空へ舞い上がれ〜!」が満を持し発表されました。

その前の2年間は、ハピロボ・スゴロボという、自分たちで好きにロボットをつくって見せ合うというルールでした。
しかしながら、これらは現役ロボコニストからすこぶる不評で、「今年もそんなルールだったらロボコンやらん!」と言う話をちょこちょこ聞いており、今年はどうなることやらとヒヤヒヤしたルール発表でした。

結果としてはいつものロボコンに戻って、そんなことを言っていた同級生のT君も大喜びしていました。
5年部員の半数はめちゃめちゃ受験シーズンなはずなのに、みんなでワイワイアイデア出しをしていましたね。

最終的には遊園地と鶴で方向性が決まるのですが、そのアイデアが生み出されるまでに、中々にクセの強いロボット案が出ていました。


例えばロックタイロボ。


我が校ロボコン部では、2019年のランランランドリー以降、何でもかんでもロックタイをつければなんとかなるという伝統が生まれており、何度も救われてきた歴史があります。
そこで、投射からまさかの足回りまでも全部ロックタイで作ってしまうというロボットが爆誕しました。

その他には、足がムチになっているタコで投射だとか、全部リンクで人の動きを真似るロボだったり、個人的にはなかなか面白いアイデアが出ました。


そんなことをしていて1ヶ月間、全然アイデアが決まらず4回目のアイデア発表会の内容も白紙に戻されるなか、突如として遊園地案が誕生しました。
イデアが決まったら、そのへんにあった丸椅子を使用した実験機でひたすら実験し、その実用性を探りました。


公式ツイッターに上げてある動画はその時のものです。


大会前にロボコン本部からこういった動画を事前にあげておけと言われていたのですが、すっかり忘れていて大会中にアップしました。(ごめんなさい)

そんなこんなで進んで行くわけですが、私は受験で9月ぐらいまで全然参加できていなかったので、話は一気に進んで8月下旬になります。

8月下旬から

この辺りに来ればちゃんとした実験機も完成しており、めっちゃ実験していました。結果は良好で、かなり精度がよく、遠くまで飛ぶ投射に仕上がっていました。

しかしここでサイズオーバーが発覚。泣く泣く投射の腕を短くして再実験したところ、全然飛ばなくなってしまい、皆で悲しみにひたっていました。

pixelのレコーダーで録ったミーティングの記録


チーム名の「信州ずくだせランド」とロボット名の「信州大回てぇん」もこの頃決まりました。
このダッサイ名前は実はどちらも私が考案したのですが、まさか採用されるとは思ってなかったです。

ずくだせランドはまだいいとして、大回てぇんってなんだよってなると思うのですが、
これはどちらもチーム名として考案したもので、” 大回転”と”〇〇園”をくっつけて、”だいかいてん・えん”→”だいかいてえん”→”だいかいてぇん”となったわけです。
個人的にはロボットのモチーフである「カイトフライヤー」とチームリーダーの名前になぞらえた「カイト君」を推していました。

9月

9月は実験をしつつ2号機の制作でした。
しかしながらこの頃、私は就活をしていたので(おっと?)あまり参加できませんでした

10月

地区大会が目前に迫る中、投射の位置を判定するセンサーを交換したらモーターのノイズを拾ってしまい、足回りを動かすとすべての紙ヒコーキが投射されてしまうという問題に悩まされました。

そして大会数日前、われわれは銀杏を収穫していました。(?)

部室の横の銀杏と部室に放置される収穫物"

毎年その匂いで我々を悩ませる銀杏ですが、今年は特に実が多く、そのへんがやばいことになったので、一回収穫して掃除しました。(3日後には元に戻って泣いた)
数キロ手に入った銀杏は、素手で洗浄して部員と分け合いました。その後数日間は手がかぶれて皮が剥けまくり、大変でした。

地区大会

ついにきたり地区大会。
T君が新幹線に乗り遅れたり、先生が事前に記入しておいた健康チェックシートを長野の車のボンネットにおいて来たりと、さまざまなハプニングを乗り越え無事に会場入りしました。

1日目のテストランを無事に終え、小山駅近くで夕飯とレモン牛乳を買いました。コンビニの前の歩道に、長野ではめったに見ないG君がいたので、思わず写真を撮ってしまいました。立派ですね。

レモン牛乳とG

そして大会当日。
練習でもなかなか乗っていなかった滑走路に見事着地するという、まさにミラクルフライが発生し、ありがたいことに全国大会への推薦枠を頂くことが出来ました。

ちなみに、このころのロボットには装填機構がついていましたが、紙飛行機の個体差が大きすぎて安定して装填できないことが発覚していたので、装填機構に装填されている紙飛行機を抜き取って手動で装填してました。
さらにさらに、装填機構は大会時は3つついていましたが、本当は6つあり、すべての腕に同時に装填することを想定していました。
しかしながら、1つあたり1.5kgくらいある装填機構を6つもつけると重量オーバーになることは明らかになり、減らすことになりました。

重量オーバーが発覚した際の写真

見た目があまりにもイカツイので減らして正解だったと思います。
しかしながら、装填を失ったことで得点力が落ちてしまったのも事実です。高速で装填して投射できる方法が思いついて、なおかつもう少し時間が確保できれば、ロボコン大賞もあったかもしれなかったですね。

11月

全国大会に向けて部全体でずくだせランドの改良を行っていた最中、鶴がエキジビションに出場が決定したとの一報が入りました。


外装を鶴メンバーに任せていたので、そのタスクが降り注ぎ、かつかつスケジュールで改良を進めることになりました。
まあそんなこんなで、電光掲示板をつけてみたり、コーヒーカップをつけてみたり、遊園地を違法建築したりしました。
ロボット上部についていた基板もきれいにリニューアルしていい感じにしました。

投射の位置決めに使うレーザー基板もリニューアルし、大量のレーザーが取り付けられるようになりました。

レーザー基板

合計24個のレーザーが搭載されていたので、”大量の数のレーザー”→”数レーザー”→”カズレーザー”という渾身のボケを用意していたのですが、披露することはなかったのでここで消化しておきます。

全国大会

地区大会の時のようなハプニングもなく、無事に国技館に到着して、運命のトーナメントくじ引きに挑みました。
そして引いたのがまさかの群馬高専。皆絶望でした。得点力も音割れ力もレべチでしたからね。


そんなこんなでテストラン等々を終え、飯を食べに行きましたが、群馬高専の皆さんと遭遇し、音割れ群馬高専さんの入ったラーメン屋の向かいの中華料理屋で夕飯を食べました。

両国駅前の小次郎で食べたマーボーナス

うまうまでした。

そして試合。
地区大会のようなミラクルフライはおこらず、ぎりぎりの1点でした。
しかしながら、アイデアや細かいこだわりが評価され、念願のアイデア賞を頂きました。

試合直後にアップした回路の写真も多くの方に見ていただけたようでうれしいです。
過去イチできれいな配線で自信作です。回路ボックスはそれごと外れるようになっているので、メンテ性もバツグンなんですよ?


その後、片付けをしていたらこじるりに遭遇したので、いろいろおしゃべりして長野へ帰りました。

回路の裏話

さて、全体の流れを振り返っただけで結構な分量になってしまいましたが、ここからは回路関係の裏話をしていこうと思います。

今年のシステム

今年は去年試しに使ってみたRaspberry Pi Picoがなかなか良くて気に入ったので、ほとんどがpicoで構築しました。
春休み中に受験勉強の休憩として開発をすすめ、珍しく早い段階である程度完成していました。(去年メイン基板が完成したのは大会数週間前)


メインからRS485で各ハブに信号を送りまくるという今までの我が部の方式を受け継いで、マイコンをリニューアルした感じですね。
コントローラー関連も通信プロトコルはそのままでリニューアルを行いました。

おまけ「後輩に教えたい!ちょっとした学び」

①チップのセラコンを手はんだするときは要注意

今回ロボットには搭載しませんでしたが、実はモータードライバーの制作を裏で進めていました。
その際に得た学びが「セラコンを手はんだするとたまに内部が割れてしまう」です。
見た目的にはしっかりついているセラコンも、実は半田が冷めるときの収縮で引っ張られて内部的に割れることがあります。
私の場合は運が悪いことにブートストラップ用のセラコンでそれが起きてしまい、モーターが全く動かない現象に悩まされました。
ちなみに、コンデンサがしっかりつながっているかどうかは、通電した状態でコンデンサ両端の電圧を図ることである程度判定できます。

②リレーは定格で使おう!

非常停止には代々12vのリレーを使っており、電池の電圧である大体16v程度をそのままぶち込んで切り替えをしていました。
しかし、練習中に非常停止が利かなくなる重大な問題が発生し、どうしたものかと原因を探していたところ、
リレーが過電圧で磁化して戻らなくなっていることが発覚しました。
ただの電磁石と舐めていたら痛い目に合うので、部品はちゃんと定格で使いましょう。

コンデンサーは各所に設置しよう!

地区大会前に発生したセンサーにノイズが乗ってしまう問題ですが、
こちらはセンサーのすぐそばにコンデンサを追加することで解決しました。
大本にはたくさんコンデンサを突っ込んでおいたので大丈夫だろと、たかをくくっていましたが、EMCは奥深いようで
ちゃんと対策しないと効果を発揮しないことを思い知りました。

④根幹のシステムはOFFシーズンで完成させろ

これは当たり前ですね。
去年、私は怠惰であるにもかかわらず、根幹のシステムのリニューアルを推し進めました。その結果、いろいろと遅れまくって大変迷惑をかけてしまったと反省しています。
その年ごとに新規開発は必要になりますが、根幹となる部分OFFシーズン中で完成させましょう

⑤基板はあらかじめ形を決めておこう

今年の基板は特殊なもの以外、7cmの正方形で固定穴の位置もあらかじめ決めておきました。その結果、回路ボックス内の整理がとてもしやすくなり、見栄えもとてもよく、さらには拡張性もたかい素晴らしいボックスが完成しました。

ロボコンは技術対決とは限らない

最近、多くの高専が現代制御を取り入れており、導入していない長野のような高専との差が開きつつあります。
しかしながら、(高専ロボコンはあくまでもアイデア対決であることを忘れてはいけません。
重要なのはアイデアであり、高度な制御や高い技術力は必ずしも要求されるわけではありません。
高度な技術や制御を取り入れ、それがアピールポイントなロボットでも、審判の評価があまり高くないことはよくあります。
求められていることは面白いアイデアであることを忘れず、アイデアを実現するために技術や制御を選択していくべきであると、私は考えます。

2023/4/20
最近やけにPVが多いので追記
これは高専ロボコンロボコン大賞を念頭に考えた場合の意見です。
優勝を目指す場合や、学生ロボコンとかの場合はバチバチ技術対決ですからね。

普段お気持ち表明はあまりしない様にしているので、あえて最後の方に書いたわけですが、わざわざ書いた理由は「技術向上にとらわれてアイデアを考えるのを放棄してほしくなかった」という個人的な希望があったからです。
いや〜、自分でも上手く言葉に表せ無いのでもどかしいんですが、
もちろん効率的にルールを淡々とこなすロボットは大好きです。
ですが過半数高専のロボットがそうなったら高専ロボコン高専ロボコンである理由は無くなるのでは無いかと思っています。そういう大会は他にも沢山ありますからね。

世間(ロボコン内ではなくの広い意味の)で見たことのある、さんざん擦られた高い技術でゴリ押すよりも、良いアイデア(工夫)を生み出し、存分に活用して課題をこなしてほしいという考えが私の中にあります。※理想論、本人には出来なかった模様

本質的に重要なのは「新たに生み出すこと」であるんじゃないかなと。
それがアイデアであり、高専ロボコンが一番重要にしていることな気がします。

まあともかく、高専ロボコンにはこれからも今まで見たことのない様な変なロボットで溢れかえっていてほしいと、個人的に願っています

⑦ゴミバンドは使わない

2.4GHzは完全に終わってます。絶対に使わないように。
出来ればどこも使ってないバンドを狙いましょう。

「いっぱいチャンネルがあるから別に大丈夫だろう」は間違いで、
相互変調という要素により、実際問題なく使えるチャンネルはかなり限られます。
↓2ページ目「1-3.電波に関する留意点」参照
https://www.interplan.co.jp/support/solution/wireless/im920s/manual/IM920s_SW_manual.pdf


もし他校でも同じバンドを使っている様なら、事前に打ち合わせをし
相互変調の影響が少ないチャンネルを使用するのが理想的です。(チャンネルプランで検索)


なお上記内容は周波数が固定タイプの通信機についてです。
周波数ホッピング等の場合は知識がないのでわかりません

まあどちらにしても、本番で発生する無線関係の問題を最小にしたいなら、ゴミバンドは使わないのが確実です。

⑧大会は交流会だ!

ロボットを語れ、そして色々聞け!


最後に

こんなに大きなテーマなのに、今まで書き溜めていなかった自分が憎いです。
超急いで書いたので書きたいことの6割くらいしかまだ書けていません。
しかしアドカレは今日なので、とりあえず公開しておこうと思います。

つたない記事でしたがご覧いただきありがとうございました!

【Arduino】RTC(DS3231)を使ってみた 〜2022年令和最新版〜

5分で作ったクソださアイキャッチ

はるか昔、RTCを使ってみた記事を書きました。↓
moyoi-memo.hatenablog.com

それからもう4年。どうやらライブラリもアップデートされ、そのままでは使えなくなってしまったとの報告をうけましたので、今回は改めてDS3231をArduinoで使っていこうと思います!

続きを読む

【GAS】活動受付・管理システムをスプレッドシートで作ってみた

今回は、初めてGAS(Google App Script)を扱います。
「活動受付・管理システム」を作ることになった経緯としては、
毎週不定期で行われる活動の参加者募集をLINEの投票等で行っていたが、その管理が面倒すぎたため、スプレッドシートで一括管理したかった
といった感じになります。

実は本記事のものはVer2になるのですが、Ver1に比べかなり処理が軽量になったので、個人的にはなかなかいいんじゃないかと思ってます。

ちなみに、上記の活動運営の引き継ぎとして作ってるんで、わかりやすくするためにもちょこちょこ更新してくと思います。(コードの変数名も適当ですし)
まあ、ばっちこい本業の勉強をせにゃならん時期なのでわかりませんけどね~

続きを読む

【M5Stack】SDカード内のCSVファイルを読み出す!

現在鋭意制作中のM5 core2で貸出管理をするシステム、その名も「KASHIDASHI」ですが、
貸出のデータはSDカード内にCSV形式で保存・読み出しをするようにしています。
youtube.com


C言語ならfscanfが使えるので、CSV形式のデータを読み出すのはそこまで大変じゃないでしょうが、
Arduino言語だとそんな便利なものはありません。
そこで今回は、M5Stack(Core2)でArduino言語を使って、CSV形式のデータを要素ごとに読み出す方法についてまとめていこうと思います!

続きを読む

【Raspberry Pi Pico】SDカードを接続してファイルを保存する!

前回に続きまして、今回もRaspberry Pi Pico!
SDカードモジュールを接続して、ファイルの保存、書き込みをしていこうと思います。

続きを読む

【Raspberry Pi Pico】PIOを使ってナノ秒単位で計測する!

今回はRaspberry Pi Pico君の秘められしポテンシャルを拝ませてもらうべく、
PIO(Programable IO)に触れていきたいと思います。

続きを読む

【おさるのジョージ】なぜアリーは手提げバッグの絵を描いたのか

本日の朝8:30からEテレ放送された、全人類が愛するアニメ「おさるのジョージ」のBパート「フルフルぼし」にて、気になるシーンがありました。
それはそれはBパートが始まってすぐ、こちら↓の動画の場合は20秒後にあります。

続きを読む

【Raspberry Pi Pico】シリアル通信( Software Serialも)をArduino IDEで使い倒す!

Raspberry Pi Pico(RP2040)は、計3つのハードウェアでのシリアル通信に対応しています。
1つはUSB、残りの2つはペリフェラルで、対応しているGPIO中から指定してやることで使えるようになります。

続きを読む