gpt4 book ai didi

bluetooth - 如何使用基于HM-10蓝牙模块的BLE Shield?

转载 作者:行者123 更新时间:2023-12-01 02:21:55 25 4
gpt4 key购买 nike

我是 arduino 项目的新手。我想请你帮忙。我从 (http://imall.iteadstudio.com/development-platform/arduino/shields/im130704001.html) 购买了 Arduino 的 BLE Shield。他们使用 Hm-10 蓝牙模块 (http://www.jnhuamao.cn/bluetooth.asp?ID=1) 制作了这个盾牌。 Itead Studio 没有使用此屏蔽的示例代码。我不知道如何对其进行编程或从 Arduino 发送 AT 命令。

我在数据表(ftp://imall.iteadstudio.com/Shield/IM130704001_ITEAD_BLE_Shield/DS_IM130704001_ITEAD_BLE_Shield.pdf)上阅读了“AT 命令”,并尝试使用此代码(http://arduino.cc/en/Reference/SoftwareSerial)将“AT 命令”从 arduino 发送到 BLE shield,但我只收到了返回的命令。

这里有人用过这个HM-10蓝牙模块吗?

我需要一些 arduino 草图寻求帮助!

最佳答案

#include <SoftwareSerial.h>

int led = 13;
int bluetoothTx = 2;
int bluetoothRx = 3;
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
int baudrate[8] ={4800,9600,14400,19200,28800,38400,57600,115200};
int i = 1;

void setup() {
Serial.begin(9600);
bluetooth.begin(9600);
while(!Serial){}

Serial.write("AT sent");
delay(500);
bluetooth.write("AT+NAME?");
delay(500);
while (bluetooth.available()) {
Serial.write(bluetooth.read());
}
delay(100);
Serial.println("");

bluetooth.write("AT+POWE3");
delay(500);
while(bluetooth.available())
{
Serial.write(bluetooth.read());
}
delay(100);
Serial.println("");

delay(500);
bluetooth.write("AT+CHAR?");
delay(500);
while (bluetooth.available()) {
Serial.write(bluetooth.read());
}
delay(100);
Serial.println("");

delay(500);
bluetooth.write("AT+NAMEFlightline"); //Check Status
delay(500);
while (bluetooth.available()) {
Serial.write((char)bluetooth.read());

}

Serial.println("");
bluetooth.write("AT+CHAR0x2901"); //add charicteristic
delay(500);
while (bluetooth.available()) {
Serial.write(bluetooth.read());

}
Serial.println("");
bluetooth.write("AT+RELI0");
delay(500);
while (bluetooth.available()) {
Serial.write(bluetooth.read());
}
Serial.println("");
bluetooth.write("AT+SHOW1");
delay(100);
while (bluetooth.available()) {
Serial.write(bluetooth.read());

}
Serial.println("");

pinMode(led,OUTPUT);
digitalWrite(led,HIGH);
}

void testAllBaudRates(){
for(int j=0; j<8; j++)
{
bluetooth.begin(baudrate[j]);
delay(100);
Serial.println("boud rate " + String(baudrate[j],DEC) +" i-> "+String(j,DEC));
// Serial.println("");
bluetooth.write("AT");
delay(500);
while (bluetooth.available()) {
Serial.write(bluetooth.read());
Serial.println();
}
delay(100);
}
}

// and now a few blinks of the LED,
// so that we know the program is running

void loop()
{
//Read from bluetooth and write to usb serial
while(bluetooth.available())
{
char toSend = (char)bluetooth.read();
if(toSend == 'x'){
digitalWrite(led,HIGH);
Serial.println("set high");
bluetooth.write("RXOK");
}else if(toSend == 'y'){
digitalWrite(led,LOW);
Serial.println("set low");
bluetooth.write("RXOK");
}
Serial.print(toSend);

}

//Read from usb serial to bluetooth
while(Serial.available())
{
char toSend = (char)Serial.read();
bluetooth.write(toSend);
Serial.print(toSend);
}
}

看看我上面的草图,我有几件事要指出我浪费了时间。

确保你有线路
while(!Serial){}

或者你可能有一个工作屏蔽,但由于串行监视器没有准备好而错过了响应。

请记住,如果蓝牙模块连接到设备,您将不会收到来自串行监视器的命令的响应。当灯停止闪烁时,它已连接到设备。

如果你运行这个草图,你应该得到这个输出
AT sent
OK+Set:3
OK+Get:0x2901 <- this may be blank the first time you run it
OK+Set:Flightline
OK+Set:0x2901
OK+Set:0
OK+Set:1

可以在这里找到最全面的 AT 命令列表
[All the AT commands and a good explanation][1]

您需要像我在这里所做的那样在设备的特性
bluetooth.write("AT+CHAR?");

或者你会发现它可以连接到 iOS 和 Android

如果您要连接到 Android,请使用 BluetoothLE 类而不是蓝牙类。

关于bluetooth - 如何使用基于HM-10蓝牙模块的BLE Shield?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19826749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com