Я создаю приложение для Android, которое будет выступать в качестве интерфейса для контроллера IOT. У меня уже есть код чипа, и он подключен к bluetooth-модулю HC-05. Я пробовал использовать Bluetooth-терминал из магазина приложений, и мой телефон успешно подключается к HC-05. Сейчас я создаю мобильное приложение для отправки/получения данных с чипа. Поэтому мне нужно подключиться к HC-05 напрямую из node.js, и здесь я застрял.
Я искал модули npm, которые могут мне помочь, и до сих пор я нашел web-bluetooth-terminal, bluetooth-terminal, serialport, bluetooth-serial-port и johnny-five. Дело в том, что я не уверен, в чем разница между ними и какой из них действительно будет работать с HC-05. Насколько я понимаю, johnny-five предназначен для написания кода для самого контроллера, а не для подключения к блютуз-модулю, и я не уверен, сможет ли веб-блютуз-терминал подключиться к HC-05 на скорости 9600 бод и разных сайтах говорят разное. Как я могу заставить это работать?
Я могу немного опоздать с ответом, но я работаю над подключением Arduino с модулем HC-05 к приложению NodeJS и наткнулся на Библиотека Node-Bluetooth. Используя это, я могу подключиться к HC-05, выполнив следующие действия:
router.post('/connect', function (req, res) {
res.render('connect');
const bluetooth = require('node-bluetooth');
const device = new bluetooth.DeviceINQ();
// Find devices
device
.on('finished', console.info.bind(console, 'finished'))
.on('found', function found(address, name) {
console.info('Found: ' + address + ' with name ' + name);
// We know our Arduino bluetooth module is called 'HC-05', so we only want to connect to that.
if (name === 'HC-05') {
// find serial port channel
device.findSerialPortChannel(address, function (channel) {
console.info('Found channel for serial port on %s: ', name, channel);
// make bluetooth connect to remote device
bluetooth.connect(address, channel, function (err, connection) {
if (err) return console.error(err);
// This is some example code from the library for writing, customize as you wish.
connection.delimiter = Buffer.from('/n', 'utf-8');
connection.on('data', (buffer) => {
console.info('received message: ', buffer.toString());
});
// This is some example code from the library for writing, customize as you wish.
connection.write(new Buffer('hello', 'utf-8'), () => {
console.info('wrote');
});
});
});
}
});
device.scan();
});
Я знаю, что проверка строки «HC-05», вероятно, не лучшая практика, но она работает для целей тестирования.