Web Bluetooth API를 통한 too 제어 시 응답(대상 모터 제어)
11432 단어 JavaScriptWebBluetoothtoio
개시하다
로봇 장난감'toio'을 제어Web Bluetooth API할 때 제어 응답을 얻는 방법을 시도한 노트다.
구체적으로 다음과 같은'대표적 지정 모터 제어'를 사용할 때'대표적 지정 모터 제어에 대한 응답'을 얻기 위해 만든 내용이다.
● 모터too™핵심 입방체 기술 규격
다음 기사를 썼을 때 전동기 제어를 했지만 연속적인 전동기 제어를 할 때 전동기 제어가 완성되었는지 알아보기 위해 이번 기사의 내용을 시도해 봤다.
● 오디오용 Teachable Machine 머신으로 벨소리와 드럼 소리 배우기) - Qita
● 목표가 지정한 모터 제어 사양 확인 및 사용(#GW advent 달력 5/3) #재택 로봇 개발-Qiita
목표가 지정한 모터 제어를 가진 응답 규격
우선 도구의 모터 제어 응답 규격을 조사해 봅시다.
too의 모터 제어 규격을 보면 목표가 지정한 모터 제어를 하면 다음과 같은 응답을 받을 수 있다.
제어 유형의 부분은 고정되고 두 번째 제어 식별자는'목표 모터 제어를 할 때 지정한 값(이하 그림의 빨간 화살표와 같은 부분)'이다.
그 다음에 대답 내용에는 다음과 같은 임의의 답장이 있을 것이다.
대체로 응답하는 방법을 알아도 절차에 따라 처리한다.
웹 Bluetooth API의 Notifications
응답의 수용 방법에 대해 조금 조사해 봤는데 다음과 같은 구조를 활용할 것 같다.
●Web Bluetooth/Notifications Sample
https://googlechrome.github.io/samples/web-bluetooth/notifications.html
이 같은 내용에는 과거 자신의 기사에서 작성한 프로그램 중 비교적 좋은 부분을 발췌했다.
우선 취득
characteristic
한 후 startNotifications
부분을 더한 다음addEventListener
통지characteristicvaluechanged
를 받았을 때 처리하는 함수(이하'handleNotifications
라고 함)를 이용하면 된다. .then(characteristic => {
myCharacteristic = characteristic;
return myCharacteristic.startNotifications().then(_ => {
log('> Notifications started');
myCharacteristic.addEventListener('characteristicvaluechanged',
handleNotifications);
});
})
또한 통지를 받았을 때의 처리로 아래event.target.value
부분에서 응답을 받을 수 있습니다.function handleNotifications(event) {
let value = event.target.value;
let a = [];
// Convert raw data bytes to hex values just for the sake of showing something.
// In the "real" world, you'd use data.getUint8, data.getUint16 or even
// TextDecoder to process raw data bytes.
for (let i = 0; i < value.byteLength; i++) {
a.push('0x' + ('00' + value.getUint8(i).toString(16)).slice(-2));
}
log('> ' + a.join(' '));
}
이걸 프로그램에 편입해 보세요.상술한 내용을 too의 제어에 편입해 보십시오
이전 기사게재된 프로그램에 대해 먼저 아래 두 줄의 처리를 추가해 보았습니다.
.then(characteristic => {
cube.motorChar = characteristic;
console.log("characteristic", characteristic);
cube.motorChar.startNotifications(); //追加1
cube.motorChar.addEventListener('characteristicvaluechanged',handleNotifications); //追加2
})
또한 상기 처리에 따른 추가handleNotifications
도 절차에 추가된다.처리는 우선 다음과 같이 해 보자.
// 以下の4行を追加
function handleNotifications(event){
console.log(event);
console.log(event.target.value);
}
이후 프로그램을 실행해 too의 짝짓기와 BLE를 통한 모터 제어를 시도했다.이때 브라우저 컨트롤러의 출력을 보십시오. "이벤트."target.value'쪽에서 3바이트의 2진 데이터를 받을 수 있을 것 같습니다.
그리고 프로그램을 다음과 같은 내용으로 바꾸어 다시 한 번 시도했다.
function handleNotifications(event){
console.log(event.target.value.getUint8(0));
console.log(event.target.value.getUint8(1));
console.log(event.target.value.getUint8(2));
}
이렇게 되면 모터 제어 처리를 한 후 완성될 때까지 기다린 경우와 모터 제어 처리에서 다음 제어를 한 경우 각각 다음과 같은 출력을 얻었다.모터 제어가 끝날 때까지 기다리는 것은 다음과 같다.
첫 번째는 too의 규격
0x81
(10진법 131)에 따라 출력하고, 두 번째는 모터 제어 시 지정한 0 출력이다.또 세 번째와 관련해서는 모터 제어가 정상적으로 끝났을 때의 값 0이 출력돼 예기한 응답을 받았다는 것을 알 수 있다.또한 모터 제어 처리에서 다음 모터 제어를 진행할 때 다음과 같은 내용과 상술한 내용을 출력하였다.
다음은 위에서 말한 세 번째 값과 달리 5의 값이다.상기 toio의 규격에서 이 값은'기타 쓰기 수리'를 표시하고 첫 번째 모터 제어에서 끝나기 전 두 번째 집행의 결과를 반영한다.2차 모터 제어가 정상적으로 끝났기 때문에 상술한 결과와 같은 출력 형식은 다음과 같다.
총결산
TOIO 목표물 지정이 있는 모터 제어를 할 때 이 제어가 정상적으로 진행되는지 등을 판단하기 위해 응답을 얻으려고 시도해 응답을 받았는지 확인한다.
앞으로 나는 이 응답을 잘 사용하여 연속적인 전동기 제어를 해 보려고 한다.
Reference
이 문제에 관하여(Web Bluetooth API를 통한 too 제어 시 응답(대상 모터 제어)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/youtoy/items/2c9c52517ee3b10c006d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)