ぐぇ~
どうも皆さんお久しぶりです。
久々に需要がありそうで書けることをしたので、ご無沙汰ブログもいい加減更新していこうとおもいます。
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に書き込むプログラム #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アドレス)」という名前で出てくるので、
それを使います。
と、数字おくるとこまでやりたかったのですが、健康優良児で夜に弱く、極めて瞼が重くなってきたので今日はここまで。
気が向いたら追記します。
ぐんない!