何か知らんけど絶対お前それ試してないだろみたいな記事が散見したので備忘録として記事にする。
ベースはここが比較的わかりやすいが、何故か配線図が乗ってない。
使ったもの↓
CP2102モジュール
WROOM02
CP2102モジュールのブレークアウト基盤には(出来損ないのパチもんでなければ)既に3.3Vのレギュレータが乗ってるのでそれを使う。
抵抗は全部10k。あとはArduino側の書き込み方式を選ぶところでReset Method:dtr(aka nodemcu)
を選べば良い。
何か知らんけど絶対お前それ試してないだろみたいな記事が散見したので備忘録として記事にする。
ベースはここが比較的わかりやすいが、何故か配線図が乗ってない。
使ったもの↓
CP2102モジュール
WROOM02
CP2102モジュールのブレークアウト基盤には(出来損ないのパチもんでなければ)既に3.3Vのレギュレータが乗ってるのでそれを使う。
抵抗は全部10k。あとはArduino側の書き込み方式を選ぶところでReset Method:dtr(aka nodemcu)
を選べば良い。
英語読めるならここ読んで終わり。
https://stackoverflow.com/questions/55898000/blocked-a-frame-with-origin-file-from-accessing-a-cross-origin-frame
Chromium 67以降はWebSecrityをFalseにしてもCORS制約を突破できない。
appのreadyイベント発生前にChromiumへコマンドを送る下記の一行を追加すれば良い。
app.commandLine.appendSwitch('disable-site-isolation-trials');
もっともこんな手段を使わずになんとか出来るならそれに越したことはない。postMessageとか手段はあるんだから。
今回これが必要になったのはyoutube iFrame APIを弄るためだが、こいつの出来が悪いんだ全く。
環境:vue-cli-plugin-electron-builderでボイラープレート生成→background.jsで下記のようなコードを書く
const fetch = require("node-fetch");
//中略
fetch("https://drroot.page/wp").promise((d)=>{
//中略
});
ここで下記例外が発生。
UnhandledPromiseRejectionWarning: TypeError: fetch is not a function
解決策は、requireの書き方を変える。
const fetch = require("node-fetch").default;
参考
https://github.com/node-fetch/node-fetch/issues/450
理由はWebpackの処理が怪しい事らしい。
javascriptのimport/require周りはイマイチ挙動が怪しくて気に食わん。
WROOM02は650円で買える結構ハイスペなWiFi内蔵マイコンモジュール。
http://akizukidenshi.com/catalog/g/gK-09758/
こいつで宅内のWiFiに接続し、ローカルネットワーク内に固定IPのサーバーを建てる話。
オリジナルのソースを読めば一発で分かる話だが、備忘録として残す。
やってる事は「TCPソケットでメッセージを受ける」だけで、想定としてはネットワークにぶら下がったPC等から自作デバイス(WROOM02)を操作するみたいな感じだ。
#include <ESP8266WiFi.h>
/**************************/
/*wifi static configration*/
/**************************/
char ssid[] = "WiFiのSSID";
char pass[] = "WiFiのパスワード";
IPAddress ip(192, 168, 1, 111);
IPAddress gateway(192,168,1,255);
IPAddress subnet(255,255,255,0);
WiFiServer server(11111); //port
/////////////////
const int led = 2; //status led pin
void beginConnect() {
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(200);
}
server.begin();
digitalWrite(led, HIGH);
}
/************************/
/*** main functions ***/
/************************/
void setup() {
pinMode(led, OUTPUT);
WiFi.config(ip,gateway,subnet);
//use for debug
Serial.begin(115200);
Serial.println("\nbegin");
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
WiFiClient c = server.available();
if (c) {
while(c.connected()){
if(c.available()){
char str[64]={0};
c.read((uint8_t*)str,63);
Serial.println(str);
}
}
}
}
else {
beginConnect();
}
}
Wroom02のWiFiライブラリは、ArduinoオリジナルのWiFiクラスに概ね準拠している。
そのためArduino公式のリファレンスを見ればサンプルとしては十分機能する。
https://www.arduino.cc/en/Reference/WiFi
躓きポイントとして、WiFi.config(ip,gateway,subnet);
がある。
オリジナルではWiFi.config(ip);
のみで動作するが、WROOM02ではgatewayとsubnetを省略出来ない仕様である。
それさえ指定してやれば固定IPでネットワークにぶら下げられる。
またこれは本家ライブラリの躓きポイントなんだが、loop()内でネットワークのリクエストを捌く仕様上、while(c.connected())
で処理を固める必要がある。
whileを活用しないとブロックを抜けてしまい、コネクションが即座に断たれてしまう。
…loop関数の存在が前提のArduinoと、割り込み的に発生するリクエストの処理は本質的に相性が悪い気がする…。
https://drroot.page/wp/?p=158
ハードウェア的には前回のこれと同一。
ようはBIOS欲しいけどネットから落とすと微妙にグレー度が上がるし自前で吸いたいなーみたいな時に使える(?)。
例のスタンガン配信は思いっきりエミュでのプレイなので、ROMの引っこ抜きどうやってんのって話をする。
その際LPC1768用のROMダンパをもっと安いLPC11u35に移植出来たので折角だから記事にした。
割と雑に移植したら動いたみたいな感じなので全権利は元のファーム製作者にある事だけ注意。
前回中々使える奴と判明した5024くんを使って、SN比重視のバイノーラルマイクを作った。
本当はメイキングを動画で挙げたかったのだが、編集が一向に終わらんので先にこっちを投稿だ。
結論から言うとやっぱ音質にクセがある。またソースフォロアをそのまま出力しているので、どっかでゲインを稼ぐ必要がある。
ファンタムを吐けるレコーダー、編集時のEQなんかは必須だと思う。
また、今回は動作させられる最低限の状態、いわゆる「バニラ」なので、使い勝手を求める場合は更に工夫の余地がある。
その代わり5000円でお釣りがくるくらい安い。購入品と購入先のリストは末尾に記載する。
AOM-5024L-HD-R、以下AOM5024。
エレクトレットコンデンサマイクのカプセルで、おひとつ350~500円ほど。
~数個で買うなら送料を考えるとマルツが安いかな。単位大きいならDigikeyとかが安い。
https://www.marutsu.co.jp/pc/i/27039172/
こいつは個人が買えるカプセルの中で最高のSN比80dBを誇る。
これは数値だけなら3dio Freespace、通称白耳に搭載されているEM-172と同等の性能だ。
しかしPrimoの野郎はこれら高品質なカプセルを一般向けに卸していない為、SN比80dBを叩き出すならこの製品しか無いということになる。
ネットで探してもこのAOM5024を使った例は無かったため、ざっくり触ってみたレポを書いてみる。
PCと連動して動くスタンガンはどう制作したかの話。
スタンガンはUSBから電源を取ってるので威力は大したこと無いが、それでも全く電気を知らない人が扱うのは危ないので手順レベルでの詳細は書かない。
勿論一切の責任は取れない。
日本ではファンタム電源に繋ぐECM駆動回路がパナ改くらいしか見当たらないので、
海外フォーラムでよく見かける回路を紹介しようと思う。選択肢が増えれば幸い。