はじめに
秋月電子通商で購入した特定小電力無線ユニット AKU-67 を試してみました。
制御にはRaspberry Pi Picoを、言語はMicroPythonでやってみました。
使用したコードはhttps://github.com/Ringo37/AKU-67_Sampleに公開しています。
AKU-67とは
秋月電子で以前まで販売されていた特定小電力無線ユニットで、現在はジャンクとして販売されているときがあるようです。私は秋月電子通商秋葉原店の2階でジャンクとして購入しました。
メーカーは立山科学工業株式会社というところで2007年発売のようです。
インターフェースはUARTで電源電圧は2.2~3.3Vです。
通信距離は見通し100mとマニュアルには書いてあります。
商品ページ:https://akizukidenshi.com/catalog/g/g101914(現在は販売終了)

長方形でサイズは36x57mm。固定用のねじ穴が二か所あります。

端子はZHの6Pinがついている。コネクタ付きケーブルが付属しています。コネクタの左の穴はLEDとボタンの穴です。
今回使用したもの
- マイコン:Raspberry Pi Pico 2個
- 無線ユニット:AKU-67 2個(1セット)
- ブレッドボード 2枚
手順
特に設定をしなくてもとりあえず繋げば使えるようです。ただし、設定をしない場合、どの端末からの通信も受信するため設定をしたほうが良いとは思います。
Raspberry Pi PicoにAKU-67のVCCとSTBYを3.3Vを、GNDはGNDにAKU-67のTXはラズパイのGP1に、RXはラズパイのGP0に接続してください。STOP-SENDは今回は使用しません。
以下のように接続。青い線はSTOP-SENDなので適当に。

仕様など詳細はマニュアルをご確認ください。
MicroPython
以下は文字を送受信できるプログラムです。「***」で設定モードに入ることもできます。
送信時はAKU-67本体の緑のLEDが点灯し、受信時は赤色のLEDが点灯します。
from machine import UART
import time
uart = UART(0, baudrate=9600, tx=0, rx=1)
# 割り込みハンドラ
def receive_data(u):
if u.any():
data = u.read()
if data and b"\x02" in data and b"\x03" in data:
frame = data[1:-1] # STXとETXを除いた中身
try:
print("Recv>", frame.decode())
except UnicodeDecodeError:
print("Recv> (decode error):", frame)
# UART割り込み
uart.irq(handler=receive_data, trigger=UART.IRQ_RXIDLE)
# そのまま送信
def send_data(data):
if isinstance(data, str):
data = data.encode()
uart.write(data)
# STX,ETXを追加して送信
def send_command_frame(data):
if isinstance(data, str):
framed = b"\x02" + data.encode() + b"\x03"
uart.write(framed)
print("Waiting for AKU-67 startup...")
time.sleep(1)
try:
while True:
user_input = input("Send> ")
if user_input == "***":
send_data("***")
else:
send_command_frame(user_input)
time.sleep(0.2)
except KeyboardInterrupt:
send_command_frame("Q")
print("Exiting interactive mode.")
受信するデバイスIDの設定
初期設定のままだとすべてのデバイスからの通信を受信します。複数台で運用する際に不便なため、受信するデバイスを設定します。
受信を制限したい本体で上記プログラムを実行し「***」を入力し設定モードに入ります。
「M=2」を入力し、「m=2」が返ってきたら「Q」で一度設定モードを終了します。送信側からメッセージを送信し、受信側でメッセージが表示されないことを確認します。
確認出来たら、デバイスを登録します。登録の前に送信側のデバイスIDを確認しておいてください。確認の方法は送信側の設定モードで「X」を入力するか、本体裏側の製造番号を確認します。

受信側で再度設定モードに入り「T=△_XXXXXX_」を入力します。△は0~9の数字、XXXXXXは送信側のデバイスIDです。Tが小文字になり返ってきたら成功です。「Q」で設定モードを退出します。
何かを送信したら今度は受信できているかと思います。
おわりに
とりあえず、動かすことはできました。今のところ使い道は思いついてませんが、何か作ってみようと思います。
時間があればそのほかのサンプルやCやArduino環境でも試してみます。
何かあればコメントまでお願いします。
コメント