在 Pico 使用 AT 指令設定 HC-05/06

這是在 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)的高電位訊號即可。線路接法如下圖。

hc-05_bb
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

規格書 中文資料

hc-06_bb
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='')

發表迴響