■QRコードスキャナM5Stack-U173とRPP2Wとの接続

 

・結線状態

↑左から、

  ・RPP2Wを載せた拡張ボード
     RPP拡張ボードの項ご参照

     M5なら出来合いの拡張基板い即結線できるでしょうが、M5使ってないし、

     RPPのほうが安いし、汎用性高いし!

  ・コネクタ変換基板
     汎用基板にXHコネクタメス4Pとピンヘッダ4本をはんだ付け

  ・U173本体
     付属ケーブルはピンピッチが狭いのでRPP側をXHオス4Pに付替えました。

 

■RPP拡張ボード

↑各GPIOのピンヘッダが信号だけでなく3V3とGNDもあってとても便利です。

 

■コネクタ変換部

XHコネクタにしました。
テストだけなら端子台などでもよいですが、U173本体は固定しませんから、
根本が抜けないようにコネクタできっちり接続するほうがよいでしょう。

 

■拡張基板への接続状態

・GPIO16とGPIO17にTX/RX信号線を接続。
 RPPのTXはU173のRXに、RPPのRXはU173のTXにつながります。
・赤を5V(VUSB)、茶をGNDに接続しています。

 

■スキャナ本体:M5Stack-U173(マイクロサイエンスから購入)

↑ハーネス接続コネクタはM5用で狭ピッチ。

・I2CとUARTの切り替えスイッチが側面にあります。(写真には写っていない)

 

■QRコードスキャナM5Stack-U173 testコード

# ------------------------------------------------------------------------------------------------------------------

# RPP2W
# Micrppython 1.28.0
# M5Stack-U173
# 26/08/09 by kabayon

from machine import UART
import time

# UART#0,TX=GP16->RXonU173(cable yellow)、RX=GP17->TXonU173(cable white)
# Baudrate is 152000 (default@U173)

uart_u173 = UART(0, baudrate=115200, tx=16, rx=17, bits=8, parity=None, stop=1)

while True:
    if uart.any():
        # 受信データがあれば読み出してUTF-8でデコードして画面表示
        data_u173 = uart_u173.read()
        print("QR Data:", data_u173.decode('utf-8'))
    time.sleep_ms(100) #100ms待機

 

# ------------------------------------------------------------------------------------------------------------------

・デフォルトは、
  ・ボーレート:115200

  ・データ:8ビット、パリティ無し

 だそうです。どこかに書いてあるのでしょうが、調べることなく、
 とにかくこれで通信できました。

 

■読み取った結果例(Thonnyのターミナルにて)

 

# リーダ本体のボタンを押すとターミナルに読み取った値が表示される。

MPY: soft reboot
MicroPython v1.28.0 on 2026-04-06; Raspberry Pi Pico 2 W with RP2350
Type "help()" for more information.

(中略)
MPY: soft reboot
QR Data: X0011VJV0R    # from 1-dim barcode
QR Data: https://e.bambulab.com/t?c=GWWMjgK6HkYo6gRh    # from QR-code

 

ということで・・・

コードは恐ろしく単純ですが、マイコンでバーコードリーダからデータを得られました。

最初は、I2CにしてコードをAIから得てやってみたのですが、全然動きませんでした。

AIがめっちゃええ加減なコードを自信満々で提示してくるのですが、間違ってるし!

UARTならややこしいことが少ないようなので、UARTに切り替えたら、一発でOKでした。

I2Cのほうが通信が速いのかもしれませんが、レジスタ云々でややこしいだけ。
データ部が2~30バイト程度の通信であればUARTで十分速いとわかりました。

 

以上