如何用WiFi实现无线定位

一、WiFi主从模块设置

1. 实验器材

2. 实验步骤

     ① 给控制板刷一套空的程序。

② 将Esp8266模块连接到Bigfish扩展板上,并将扩展板插到控制板上。

③ 在arduino的Seiral Monitor中,输入AT指令集,观察模块的相应应答。

3. 常用指令

① 基础AT指令。

 ② WiFi功能AT指令。

③ TCP/IP 工具箱 AT 命令。

二、WiFi定位

1. 实验器材

2. 定位算法

     Rssi三点定位算法。

3. 实验操作

      ① 使用文末资料中的“ESP8266调试工具”将三个模块设置为AP模式,并记录其NAME,用于存储在程序中,按照下面方法连接ESP8266模块和Basra主控板。

      ② 使用“ESP8266调试工具”将与主控板连接的WiFi模块设置为Statino模式,按照下面方法连接ESP8266模块和BigFish主控板,OLED显示屏使用四芯输入排线与BigFish进行连接。

③ 将实验例程(ESP8266RSSIPosition.ino)下载到主控板中。

/*------------------------------------------------------------------------------------版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.Distributed under MIT license.See file LICENSE for detail or copy athttps://opensource.org/licenses/MITby 机器谱 2023-09-12 https://www.robotway.com/------------------------------*//*将与主控板相连接的wifi模块使用“esp8266调试工具软件”设置为Station模式将其余三个模块设置为AP模式,并记录其NAME,存储在程序中*///#define DEBUG#define ESP_AP_NUMBER 3#include <SoftwareSerial.h>#include <RssiPositionComputer.h>#include <Wire.h>#include <MultiLCD.h>SoftwareSerial myESP(2,3);RssiPositionComputer myPositionComputer;Point2D master_point;LCD_SSD1306 lcd;char esp_ap_name[ESP_AP_NUMBER][10] = {"ESP826601","ESP826602","ESP826603"};int   rssi[ESP_AP_NUMBER];float distance[ESP_AP_NUMBER];void setup(){delay(1000);Serial.begin(115200);myESP.begin(9600);#ifdef DEBUGSerial.println("begin");#endifwhile(myESP.available()&&myESP.read());while(!myESP.available()){myESP.println("AT");delay(1000);}while(myESP.available()&&myESP.read());#ifdef DEBUGSerial.println("Resonse ok");#endiflcd.begin();lcd.clear();lcd.setCursor(30,4);lcd.print("Hello, world!");}void loop(){int n = searchESPAP(esp_ap_name,rssi);for(int i=0;i<ESP_AP_NUMBER;i++){distance[i] = rssiToDistance(rssi[i]);Serial.print(distance[i]);Serial.print('\t');}Serial.print(n);Serial.print('\t');if(myPositionComputer.distanceToPoint(distance[0],distance[1],distance[2],&master_point)==true){Serial.print(master_point.x);Serial.print('\t');Serial.print(master_point.y);Serial.print('\t');Serial.println("position okok");lcd.clear();lcd.setCursor(30,2);lcd.printLong(master_point.x*100,FONT_SIZE_LARGE);   //按厘米输出lcd.setCursor(30,5);lcd.printLong(master_point.y*100,FONT_SIZE_LARGE);}else{lcd.clear();lcd.setCursor(30,4);lcd.print("position ERROR!");Serial.println("position ERROR");   }}int nameToNumber(char in[],char name[][10]){for(int i=0;i<3;i++){for(int j=0;j<9;j++){if(in[j] != name[i][j])break;if(j==8)return(i);}}return(-1);}byte searchESPAP(char name[][10], int rs[]){byte search_result_number = 0;int state = 0;int n;int ap_n;char name_string[10];char rssi_string[4];while(myESP.available()&&myESP.read());myESP.println("AT+CWLAP");delay(100);while(myESP.available()&&myESP.read());unsigned long t = millis();while(!myESP.available()){if(millis()-t<3000)delay(5);elsereturn(0);}#ifdef DEBUGSerial.println("received........");#endift = millis();while(myESP.available()||(millis()-t<3000)){if(!myESP.available())continue;char in_char = myESP.read();#ifdef DEBUGSerial.print(in_char);#endifif( (state == 0)&&(in_char=='(') ){state = 1;n = -4;}else if(state == 1){n++;if(n>=0)name_string[n] = in_char;if(n == 8){n = -3;ap_n = nameToNumber(name_string,name);if(ap_n != -1){state = 2;#ifdef DEBUGSerial.print('\n');Serial.print("ap_n:");Serial.println(ap_n);#endif}else{state = 0;}}}else if(state==2){n++;if(n>=0)rssi_string[n] = in_char;if(n == 2){rs[ap_n] = atof(rssi_string);state = 0;search_result_number++;#ifdef DEBUGSerial.print('\n');Serial.print("rssi["+String(ap_n)+"]:");Serial.println(rs[ap_n]);#endif}}}return(search_result_number);}float rssiToDistance(int rssi){float dis = 0;dis = pow(10.0,((abs(rssi)-47)/10.0/2.212));return dis;}

④ 将不同模块按照三点定位摆放开(在1m×1m的空间内),如下图所示,观察实验效果。

程序源代码、ESP8266调试工具、ESP8266相关学习资料详见 如何用WiFi实现无线定位

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/144056.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为智能企业远程办公安全解决方案(1)

华为智能企业远程办公安全解决方案&#xff08;1&#xff09; 课程地址方案背景需求分析企业远程办公业务概述企业远程办公安全风险分析企业远程办公环境搭建需求分析 方案设计组网架构设备选型方案亮点 课程地址 本方案相关课程资源已在华为O3社区发布&#xff0c;可按照以下…

【dbeaver】win环境的kerberos认证和Clouders集群中Kerberos认证使用Dbeaver连接Hive和Phoenix

一、下载驱动 cloudera官网 1.1 官网页面下载 下载页面 的Database Drivers 挑选比较新的版本即可。 1.2 集群下载 Hive可能集群没有驱动包。驱动包名称&#xff1a;HiveJDBC42.jar。41结尾的包也可以使用的。注意Jar包的大小一定是十几MB的。几百KB的是thin包不可用。 …

Dev C++安装与运行

参考: https://blog.csdn.net/Keven_11/article/details/126388791 https://www.cnblogs.com/-Wallace-/p/cpp-stl.html 2021年真题要求 2022年真题要求 河南省的考试环境 IDE环境 Dev C 安装 下载 安装 点击OK&#xff0c;选择我接受 修改安装路径为D盘d:\Program Fi…

IOTE 2023盛况回顾,美格智能聚连接之力促数字新生长

9月20~22日&#xff0c;IOTE国际物联网展深圳站在深圳国际会展中心正式召开。本届展会以“IoT构建数字经济底座”为主题&#xff0c;聚焦物联网技术助推数字经济发展的核心动力。美格智能携前沿技术成果亮相展会&#xff0c;与参展观众深入交流。 展会上&#xff0c;美格智能带…

【自学记录】深度学习入门——基于Python的理论与实现(第3章 神经网络)

3.4.3 3层神经网络Python实现 实现的是这个网络 **init_network()**函数会进行权重和偏置的初始化&#xff0c;并将它们保存在字典变量network中。这个字典变量network中保存了每一层所需的参数(权重和偏置)。 **forward()**函数中则封装了将输入信号转换为输出信号的处理过程…

【python】anaconda使用指南

安装anaconda 访问官方 官网链接注册并登陆安装 无脑下一步即可配置path D:\ProgramData\anaconda3D:\ProgramData\anaconda3\ScriptsD:\ProgramData\anaconda3\Library\binD:\ProgramData\anaconda3\Library\mingw-w64\bin 进入anaconda环境 # 查询版本 conda --version# …

Uni-app 调用微信地图导航功能【有图】

前言 我们在使用uni-app时&#xff0c;有时候会遇到需要开发地图和导航的功能&#xff0c;这些方法其实微信小程序的API已经帮我们封装好了 详见&#xff1a;微信小程序开发文档 接下来我们就演示如何用uni-app来使用他们 使用 <template><view><button type…

【C++入门到精通】C++入门 —— map multimap (STL)

阅读导航 前言一、map简介二、std::map1. std::map简介2. std::map使用- 基本使用- map模板参数说明⭕std::pair<const Key, T> - map的构造函数- map的迭代器- map的容量与元素访问函数&#x1f341;容量函数&#x1f341;元素访问函数 3. map的所有函数&#xff08;表&…

OpenAI ChatGPT API 文档之 Embedding

译者注&#xff1a; Embedding 直接翻译为嵌入似乎不太恰当&#xff0c;于是问了一下 ChatGPT&#xff0c;它的回复如下&#xff1a; 在自然语言处理和机器学习领域&#xff0c;"embeddings" 是指将单词、短语或文本转换成连续向量空间的过程。这个向量空间通常被称…

数字孪生:降低现代船舶水声设备研制风险与成本的关键要素

声波是海洋中唯一能够有效传递远距离信息的载体&#xff0c;1000Hz的声波在海水中的每公里吸收衰减仅为0.067分贝&#xff0c;而在陆地上大显神通的电磁波由于受到海水高介电常数和高导电率的影响&#xff0c;因传播衰减量太大而无法通信。 声波在海洋中的传播也并非一帆风顺。…

Python绘图系统22:实现系统菜单

文章目录 文件菜单子部件开关 Python绘图系统&#xff1a; 前置源码&#xff1a; Python打造动态绘图系统&#x1f4c8;一 三维绘图系统 &#x1f4c8;二 多图绘制系统&#x1f4c8;三 坐 标 轴 定 制&#x1f4c8;四 定制绘图风格 &#x1f4c8;五 数据生成导入&#x1f4c8;…

人工智能安全-2-非平衡数据处理(2)

5 算法层面 代价敏感&#xff1a;设置损失函数的权重&#xff0c;使得少数类判别错误的损失大于多数类判别错误的损失&#xff1b; 单类分类器方法&#xff1a;仅对少数类进行训练&#xff0c;例如运用SVM算法&#xff1b; 集成学习方法&#xff1a;即多个分类器&#xff0c;然…

【OpenSSL】单向散列函数

什么是单向散列函数 任意长度数据生成固定长度是散列快速计算消息变化散列变化单向不可逆&#xff0c;抗碰撞 应用场景 文件完整性口令加密消息认证伪随机数配合非对称加密做数字签名比特币工作量证明 单向hash抗碰撞 弱抗碰撞 给定X和hash值的情况下&#xff0c;找到另外…

怎么使用 Go 语言操作 Apache Doris

Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库&#xff0c;以极速易用的特点被人们所熟知&#xff0c;仅需亚秒级响应时间即可返回海量数据下的查询结果&#xff0c;不仅可以支持高并发的点查询场景&#xff0c;也能支持高吞吐的复杂分析场景。基于此&#xf…

buuctf-[网鼎杯 2020 朱雀组]phpweb

1.打开网站&#xff0c;吓我一跳 2.查看源代码&#xff0c;主要看到timezone&#xff0c;然后这个页面是五秒就会刷新一次 一开始去搜了这个&#xff0c;但是没什么用 3.使用bp抓包 会发现有两个参数&#xff0c;应该是用func来执行p 4.修改func和p file_get_contents&#…

7.网络原理之TCP_IP(上)

文章目录 1.网络基础1.1认识IP地址1.2子网掩码1.3认识MAC地址1.4一跳一跳的网络数据传输1.5总结IP地址和MAC地址1.6网络设备及相关技术1.6.1集线器&#xff1a;转发所有端口1.6.2交换机&#xff1a;MAC地址转换表转发对应端口1.6.3主机&#xff1a;网络分层从上到下封装1.6.4主…

HTTP 与 HTTPS

文章目录 HTTP协议一、什么是HTTP协议二、HTTP 协议通信过程三、URL什么是URI 四、HTTP报文1、请求报文&#xff08;1&#xff09;请求报文结构 2、响应报文&#xff08;1&#xff09;响应报文结构 五、HTTP请求方式1、GET&#xff1a;获取资源2、POST&#xff1a;提交数据增加…

巨人互动|Facebook海外户Facebook内容的类型

随着人们日益依赖的社交媒体来进行信息获取与交流&#xff0c;Facebook作为全球最大的社交媒体平台之一&#xff0c;那么Facebook的内容都有哪些类型呢&#xff1f;下面小编来讲讲吧&#xff01; 1、实时发生的事 我们需要实时了解时事动态&#xff0c;这样可以使用户对品牌发…

三个要点,掌握Spring Boot单元测试

单元测试是软件开发中不可或缺的重要环节&#xff0c;它用于验证软件中最小可测试单元的准确性。结合运用Spring Boot、JUnit、Mockito和分层架构&#xff0c;开发人员可以更便捷地编写可靠、可测试且高质量的单元测试代码&#xff0c;确保软件的正确性和质量。 一、介绍 本文…

AWS SAA知识点整理(作成中)

共通 一些信息已经更新了&#xff0c;但参考题的答案还是旧的。 比如&#xff1a; S3的最大读写性能已经提高到 3,500 PUT/COPY/POST/DELETE or 5,500 GET/HEAD requests per second 并且不再要求使用random prefix 题目中有时候会让选择Not violation 不合适的一项&#xff…