RaspberryPi에서 Bluetooth로 micro:bit에 연결
10307 단어 RaspberryPimicrobit
microbit 프로그램
Bluetooth 서비스 시작만 해 둔다.
그리고 페어링하지 않고도 연결할 수 있도록 설정하기 위해,
프로젝트 설정에서
No Paring Required: Anyone can connect via Bluetooth.
를 활성화합니다.Raspberry Pi
파이썬에서 블루투스를 사용하기위한 bluepy 모듈을 설치합니다.
% sudo pip3 install bluepy
micro:bit의 주소를 찾습니다.
프로그램은 github에도 넣어 둔다.
scan.py
import bluepy
scanner = bluepy.btle.Scanner(0)
devices = scanner.scan(3)
for device in devices :
print("-----------------------------------")
print("address : %s" % device.addr)
print("addrType : %s" % device.addrType)
print("RSSI : %s" % device.rssi)
print("Adv data :")
for (adtype, desc, value) in device.getScanData() :
print(" (%3s) %s : %s " %(adtype, desc, value))
이 명령 만 루트 권한이 필요합니다.
% sudo python3 scan.py
-----------------------------------
address : e4:1e:1f:1f:f4:49
addrType : random
RSSI : -45
Adv data :
( 1) Flags : 06
( 9) Complete Local Name : BBC micro:bit [tazaz]
이것으로 주소를 알았다.
UUID 조사
주소를 알고 있기 때문에 연결하여 UUID 확인
getHandle.py
import sys
import bluepy
def main() :
try:
peri = bluepy.btle.Peripheral()
peri.connect(devadr, bluepy.btle.ADDR_TYPE_RANDOM)
except:
print("device connect error")
sys.exit()
charas = peri.getCharacteristics()
for chara in charas :
print("------------------------------------------")
print(" UUID : %s" % chara.uuid )
print(" Handle %04X : %s" %(chara.getHandle(), chara.propertiesToString()))
peri.disconnect()
if __name__ == "__main__" :
if len(sys.argv) == 1:
print("Usage: getHandle.py BLE_DEVICE_ADDRESS")
sys.exit()
devadr = sys.argv[1]
main()
% python3 getHandle.py e4:1e:1f:1f:f4:49
省略
------------------------------------------
UUID : e95dd91d-251d-470a-a062-fa1922dfa9a8
------------------------------------------
UUID : e95d7b77-251d-470a-a062-fa1922dfa9a8
Handle 0033 : READ WRITE
------------------------------------------
UUID : e95d93ee-251d-470a-a062-fa1922dfa9a8
Handle 0035 : WRITE
------------------------------------------
省略
모든 UUID는 여기에도 있습니다 h tps : // / ㅁㅜㅜㅜㅜㅜㅜㅇㅇㅇ 기주 b. 이오/미 c로비 t-도 cs/레소 r세 s/bぅ에와 th/bぅ에와 th_p로후에ぇ. HTML
micro:bit의 LED에 "Hello"라고 표시
LED의 서비스 UUID로부터, TEXT 출력용 UUID를 취득해, 거기에 출력하는 것으로 LED에 표시를 할 수 있다.
프로그램은 github에도
writeLed2.py
import time
from bluepy import btle
devadr = "e4:1e:1f:1f:f4:49"
uuid_service_led = "e95dd91d-251d-470a-a062-fa1922dfa9a8"
uuid_led_text = "e95d93ee-251d-470a-a062-fa1922dfa9a8"
per = btle.Peripheral(devadr, btle.ADDR_TYPE_RANDOM)
svcLed = per.getServiceByUUID(uuid_service_led)
chLedText = svcLed.getCharacteristics(uuid_led_text)[0]
chLedText.write("Hello".encode("utf-8"))
time.sleep(5)
per.disconnect()
실행 결과
LED에 "Hello"가 표시됨
BlueTooth를 사용하여 micro:bit를 컨트롤 할 수 있게 되었다.
% python3 writeLed2.py
Reference
이 문제에 관하여(RaspberryPi에서 Bluetooth로 micro:bit에 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/roxa/items/b3f3061de17d97f7271a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)