
您是要做一个什么应用呢?小尺寸小体积的蓝牙模块我了解的有SKB369和SKB501都支持做主、从设备。
以SKYLAB蓝牙室内定位方案为例,从设备蓝牙Beacon内的蓝牙模块会连续广播信标信号如UUID,Major,Minor,RSSI等信息。主设备蓝牙网关TD05内的蓝牙模块则每秒收集一次Beacon附近的信息,包括RSSI,MAC等。
蓝牙室内定位方案
1)TD05内蓝牙模块每秒收集一次Beacon附近的信息,包括RSSI,MAC等。
2)蓝牙模块通过UART串口将信标信息发送至WiFi模块,每秒一次。
3)WiFi模块将Beacon信息传输到指定的UDP服务器,并接收服务器返回的信息。
5/12 TD05-DA-001,A / 0具有POE数据表的蓝牙网关
4)在UDP服务器分析并计算信标信息之后,信标位置可以显示在首页上。然后反向也可以发送控制指令到WiFi模块,然后通过WiFi模块发送到蓝牙模块开发不同的功能(如:照明灯具等)。
备注:TD05可通过POE交换机或无线路由器连接到互联网。
我在编程方面不行,但个人认为测量距离理论上仅仅能测量空旷场地下手机到设备的距离,一般室内墙壁反射和阻隔,测距必然不准,各种墙壁和地板的衰减程度也不同。
同时,wifi发射器类型的不同,其覆盖面积和信号的强度也会略有不同。
我认为根据具体环境,相关的参数比较多,能准确的测距可能较难实现。
import androidappActivity;
import androidbluetoothBluetoothAdapter;
import androidcontentContext;
import androidcontentIntent;
import androidnetwifiWifiInfo;
import androidnetwifiWifiManager;
import androidosBundle;
import androidwidgetTextView;
/
获取手机WIFI的MAC地址
@author 单红宇
/
public class GetmacipinfoActivity extends Activity {
/ Called when the activity is first created /
private static final int REQUEST_ENABLE_BT = 3;
private WifiManager mWifi;
private BluetoothAdapter bAdapt;
private String btMac;
private String WifiMac;
@Override
public void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutmain);
mWifi = (WifiManager) getSystemService(ContextWIFI_SERVICE);
if (!mWifiisWifiEnabled()) {
mWifisetWifiEnabled(true);
}
WifiInfo wifiInfo = mWifigetConnectionInfo();
bAdapt = BluetoothAdaptergetDefaultAdapter();
if (bAdapt != null) {
if (!bAdaptisEnabled()) {
Intent enBT = new Intent(BluetoothAdapterACTION_REQUEST_ENABLE);
startActivityForResult(enBT, REQUEST_ENABLE_BT);
}
btMac = bAdaptgetAddress();
} else {
btMac = "No Bluetooth Device!";
}
if ((WifiMac = wifiInfogetMacAddress()) == null) {
WifiMac = "No Wifi Device";
}
TextView mac = (TextView) findViewById(RidmacView);
macsetTextSize(16);
// 查看已经连接上的WIFI信息,在Android的SDK中为我们提供了一个叫做WifiInfo的对象,这个对象可以通过WifiManagergetConnectionInfo()来获取。WifiInfo中包含了当前连接中的相关信息。
// getBSSID() 获取BSSID属性
// getDetailedStateOf() 获取客户端的连通性
// getHiddenSSID() 获取SSID 是否被隐藏
// getIpAddress() 获取IP 地址
// getLinkSpeed() 获取连接的速度
// getMacAddress() 获取Mac 地址
// getRssi() 获取80211n 网络的信号
// getSSID() 获取SSID
// getSupplicanState() 获取具体客户端状态的信息
StringBuffer sb = new StringBuffer();
sbappend("\n获取BSSID属性(所连接的WIFI设备的MAC地址):" + wifiInfogetBSSID());
// sbappend("getDetailedStateOf() 获取客户端的连通性:");
sbappend("\n\n获取SSID 是否被隐藏:"+ wifiInfogetHiddenSSID());
sbappend("\n\n获取IP 地址:" + wifiInfogetIpAddress());
sbappend("\n\n获取连接的速度:" + wifiInfogetLinkSpeed());
sbappend("\n\n获取Mac 地址(手机本身网卡的MAC地址):" + WifiMac);
sbappend("\n\n获取80211n 网络的信号:" + wifiInfogetRssi());
sbappend("\n\n获取SSID(所连接的WIFI的网络名称):" + wifiInfogetSSID());
sbappend("\n\n获取具体客户端状态的信息:" + wifiInfogetSupplicantState());
macsetText("WIFI网络信息: " + sbtoString() + "\n\n蓝牙MAC: " + btMac);
}
}
看下这段代码或许对你有帮助!!
以上就是关于请问能否推荐一款体积小的,连接后能够传回rssi值的蓝牙模块,或者一般蓝牙模块怎么获取rssi值全部的内容,包括:请问能否推荐一款体积小的,连接后能够传回rssi值的蓝牙模块,或者一般蓝牙模块怎么获取rssi值、关于android中wifi的RSSi信号测距的问题···求大神指点、android 如何获取同一WiFi下的所有连接终端等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)