這是在 RaspberryPi Pico 中使用 MicroPython 透過 AT 指令設定 HC-05 與 HC-06 的接線方式與程式碼。一般來說不需要特別修改藍牙晶片預設值,但如果需要重設配對密碼或藍牙名稱,就需要下 AT 指令了。一般來說,HC-05 的預設 baud rate 是 38400,HC-06 是 9600,但實際使用時還是要再確認ㄧ下。
HC-05
HC-05模組上用金色筆會打上一個勾勾,通常上面還有一個按鈕,在寫入 AT 指令時會用到。但 HC-05 的 AT 指令比較繁瑣,有些需要一直按著按鈕有些又只要按一次,所以簡單的作法就是在寫入 AT 指令前,先將 EN(Key)腳接到高電位(3.3v 或 5v 均可)後再接 VCC,等 AT 指令都完成後再移除 EN(Key)的高電位訊號即可。線路接法如下圖。
from machine import *
from time import *
menu = '''\
1. AT
2. AT+VERSION
3. Set NAME
4. Get NAME
5. Set PIN
6. Get PIN
7. Exit
'''
while True:
n = input('select baudrate: 1. 9600, 2. 38400 (1 | 2): ')
if n == '1':
baudrate = 9600
elif n == '2':
baudrate = 38400
else:
print('please type "1" or "2"')
continue
uart = UART(0, baudrate=baudrate)
break
print(menu, end='')
while True:
n = int(input('press 1, 2,...: '))
if n == 1:
cmd = 'AT'
elif n == 2:
cmd = 'AT+VERSION?'
elif n == 3:
cmd = 'AT+NAME=' + input('input name: ')
elif n == 4:
cmd = 'AT+NAME?'
elif n == 5:
cmd = 'AT+PSWD=' + input ('input pin(ex, 1234): ')
elif n == 6:
cmd = 'AT+PSWD?'
elif n == 7:
break
print('write command: [{}]'.format(cmd))
uart.write(cmd + '\r\n')
sleep(0.5)
if uart.any() > 0:
data = uart.read()
print('==============================')
print(data.decode('utf-8'))
print('==============================\n')
print(menu, end='')
HC-06
from machine import *
from time import *
menu = '''\
1. AT
2. AT+VERSION
3. Set NAME
4. Set PIN
5. Set 9600 Baudrate
6. Set 38400 Baudrate
7. Exit
'''
while True:
n = input('select baudrate: 1. 9600, 2. 38400 (1 | 2): ')
if n == '1':
baudrate = 9600
elif n == '2':
baudrate = 38400
else:
print('please type "1" or "2"')
continue
uart = UART(0, baudrate=baudrate)
break
print(menu, end='')
while True:
n = int(input('press 1, 2,...: '))
if n == 1:
cmd = 'AT'
elif n == 2:
cmd = 'AT+VERSION'
elif n == 3:
cmd = 'AT+NAME' + input('input name: ')
elif n == 4:
cmd = 'AT+PIN' + input ('input pin(ex, 1234): ')
elif n == 5:
cmd = 'AT+BAUD4'
elif n == 6:
cmd = 'AT+BAUD6'
elif n == 7:
break
print('write command: [{}]'.format(cmd))
uart.write(cmd)
sleep(0.5)
if uart.any() > 0:
data = uart.read()
print('==============================')
print(data.decode('utf-8'))
print('==============================\n')
print(menu, end='')