Python-Arduino控制的智能力传感鞋垫项目

(全网独一份,一线项目经验,拒绝转载,违者必究)
硬件平台:
Arduino Uno
HC-06蓝牙模块(出场配对密码:1234)
力传感器(购买链接附下)

软件平台:
Arduino IDE
Anaconda Spyder
Serial Chart
Arduino bluetooth controller

arduino 软件代码:

int Work_Mode = 2;//0是正常的调试模式,1是蓝牙(hc-06)工作模式;2是python读取模式void setup() {// put your setup code here, to run once:Serial.begin(9600);}float exchangementToWeight(float sensorvalue){//数据的标定于转化函数 (102.5,5000);(2000,2757.85);float k = (5000-2757.85)/(102.5-2000);float b = 5000-102.5*k;float weight = (sensorvalue-b)/k;return weight-870.927;}void loop() {// put your main code here, to run repeatedly:int sensorvalue1 = analogRead(A0);int sensorvalue2 = analogRead(A1);int sensorvalue3 = analogRead(A2);int sensorvalue4 = analogRead(A3);int sensorvalue5 = analogRead(A4);float voltage1 = sensorvalue1*(5000/1024);float voltage2 = sensorvalue2*(5000/1024);float voltage3 = sensorvalue3*(5000/1024);float voltage4 = sensorvalue4*(5000/1024);float voltage5 = sensorvalue5*(5000/1024);float weight_array[5] = {exchangementToWeight(voltage1),exchangementToWeight(voltage2),exchangementToWeight(voltage3),exchangementToWeight(voltage4),exchangementToWeight(voltage5)};if(Work_Mode==0){Serial.print(weight_array[0],DEC);Serial.print(",");Serial.print(weight_array[1],DEC);Serial.print(",");Serial.print(weight_array[2],DEC);Serial.print(",");Serial.print(weight_array[3],DEC);Serial.print(",");Serial.print(weight_array[4],DEC);Serial.print(",");Serial.print("\r\n");delay(100);    }if(Work_Mode==1){int i = 0;Serial.print("hello world");while(i<5){Serial.print("the weight of sensor ");Serial.println(i,DEC);Serial.println(weight_array[i],DEC);i++;delay(100);}}if(Work_Mode==2){Serial.print(weight_array[0],DEC);Serial.print(" ");Serial.print(weight_array[1],DEC);Serial.print(" ");Serial.print(weight_array[2],DEC);Serial.print(" ");Serial.print(weight_array[3],DEC);Serial.print(" ");Serial.print(weight_array[4],DEC);Serial.print("\r");Serial.print("\n");delay(100);} 
}

python代码

# 读取arduino串口数据并保存
import serial
import matplotlib.pyplot as plt
import numpy as np
import timeser = serial.Serial(port='COM7', baudrate=9600)
#COM口的值要时刻修改!
data = []
data0 = []
data1 = []
data2 = []
data3 = []
data4 = []data_time_list = []
data_time = 0
times = 1
limit = 100000while True:# 读取一行的输出data = ser.readline()# 读取的结果位byte形式,我们转码成字符串形式data_mid = data.decode()# 以空格位分隔符进行字符串分割readdata = data_mid.split(" ")times = times + 1# map() 会根据提供的函数对指定序列做映射,第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。if len(readdata) == 5:while data_time < limit :data_array = list(map(float, readdata))data_time_list.append(data_time)# 构建图表的x轴data_time = data_time + 1data0.append(data_array[0])data1.append(data_array[1])data2.append(data_array[2])data3.append(data_array[3])data4.append(data_array[4])if data_time == limit:break# data_time_list = range(30)
# data0 = range(30)plt.figure(times)plt.plot(data_time_list, data0)plt.plot(data_time_list, data1)plt.plot(data_time_list, data2)plt.plot(data_time_list, data3)plt.plot(data_time_list, data4)plt.title("The forces from the different sensors")plt.xlabel('Time/S')plt.ylabel('Force/N')plt.show(times)time.sleep(100)plt.close(times)

SerialChart 配置教程:

1.https://blog.csdn.net/fengzhiwu3/article/details/85330330
2.http://blog.sina.com.cn/s/blog_a55f2f4e01014egl.html

Arduino Bluetooth Controller下载地址:(需要科学上网)
https://play.google.com/store/apps/details?id=com.giumig.apps.bluetoothserialmonitor&hl=en_US&gl=US

HC-06的使用教程与Arduino Bluetooth Controller交互的教程:
HC-06蓝牙模块使用小结

反思与总结:
1.关于工作模式的建立:
通过int mode 可以选择不同的工作模式,这方便了开发者进行模块化开发,从而提高了开发效率与代码的逻辑清晰层次。

int Work_Mode = 2;//0是正常的调试模式,1是蓝牙(hc-06)工作模式;2是python读取模式

2.关于arduino与python的联合开发问题:
通过serial串口接口,我们可以将python与arduino进行通信处理,只不过需要在arduino与python间进行数据格式的定制,本项目中格式定义为 :
【data1 data2 data3 data4 data5】
(即通过空格进行数据分离)

3.关于数据传输过程中的问题(极其有价值)
注意在我的代码中有一行:

if len(readdata) == 5:

这一行存在的原因是笔者经历了惨痛教训以后才加上去的,由于我们根据arduino代码可以看出笔者是一次性传输了5个数据作为一组到python中进行处理,但是由于数据存在丢包和我在python进行运行操作时并不能够非常准时的在一组数据传输完以后再读取数据,所以经常会出现数据的list有部分元素为空,进而造成数组越界或者无法进行map(float ,str)操作的情况,而在检查了传输数据的length以后,我们可以有效避免这一问题。
所以在进行数据传输时记得进行数据的检查!

后附:(项目构架图)- Xmind 生成
在这里插入图片描述

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

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

相关文章

全球矫正鞋垫市场发展趋势分析:2025年市场规模将达到约20亿美元

矫正鞋垫是一种特殊的鞋垫&#xff0c;它可以帮助人们纠正脚部问题&#xff0c;如足弓塌陷、足外翻、足内翻等。矫正鞋垫通常由医生或足病专家根据患者的脚部情况量身定制&#xff0c;以确保最佳效果。矫正鞋垫的市场需求正在不断增长&#xff0c;这主要是由于人们越来越关注脚…

基于FSR柔性薄膜压力传感器的智能鞋改装垫

目前市场上智能鞋都是定制&#xff0c;需要与特定鞋绑定&#xff0c;普通鞋几乎无法改装&#xff0c;我自研了一款智能鞋改装垫&#xff0c;不多说&#xff0c;先看效果&#xff1a; 该智能鞋改装垫使用BLE&#xff08;低功耗蓝牙&#xff09;与手机连接&#xff0c;通过安装在…

bindtap和catchtap的区别

&#xff08;1&#xff09;介绍事件&#xff1a; bindtap 和 catchtap 都属于点击事件&#xff0c;绑定之后&#xff0c;点击组件是可以触发这个函数的。 bindtap &#xff1a;子元素使用bindtap绑定事件后&#xff0c;执行的时候&#xff0c;会冒泡到父元素&#xff08;触发…

运动鞋识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f366; 参考文章&#xff1a;Pytorch实战 | 第P5周&#xff1a;运动鞋识别 &#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 import torch import torch.nn as nn import torchvisi…

耐克阿迪颓势之下,增势向好的特步做对了什么?

每一年的财报季&#xff0c;都是观察各运动鞋服品牌的最佳窗口。 3月22日&#xff0c;特步集团发布2022年全年业绩。这份成绩单的主题无疑是“增长”&#xff0c;其中显示全年营收129.3亿元&#xff0c;同比增长29.1%&#xff1b;经营利润14.64亿元&#xff0c;同比增长4.9%。除…

谷歌阿迪达斯 EA 联手卖鞋垫,能踢能玩还能训练

By 超神经 内容提要&#xff1a;谷歌、阿迪达斯和 EA 三者联合&#xff0c;打造的一款智能鞋垫最近问世。该鞋垫内置谷歌 Jacquard 标签&#xff0c;能够利用机器学习算法&#xff0c;跟踪 FIFA Mobile 游戏玩家踢球时的各种身体动作数据。足球爱好者可以以此针对性地练习球技&…

斯凯奇熊猫鞋怎样清洗

斯凯奇熊猫鞋怎样清洗 斯凯奇熊猫鞋怎样打理 斯凯奇熊猫鞋是网面鞋&#xff0c;不用特别重视保养&#xff0c;和正常的网面运动鞋清洗方法是相同的。 斯凯奇运动鞋是能够水洗的&#xff0c;可是不能够将斯凯奇运动鞋长时间浸泡在番笕水中&#xff0c;这样做的话&#xff0c;会让…

这个发热鞋垫厉害了,有它冬天再也不怕脚冷

▲ 点击查看 冬天一到&#xff0c;小爆发现身边的“抖友”又开始上线了&#xff01; 至于为什么会抖脚&#xff1f;有盆友说&#xff0c;当然不是真的想抖&#xff0c;而是因为脚太冷冷冷了&#xff01; 有时候穿了棉袜厚鞋&#xff0c;脚都是冷冰冰的&#xff0c;感觉就像踩在…

ChatGPT生成点云算法笔试题

试一试用ChatGPT来出算法笔试题&#xff0c;一开始ChatGPT还不想给&#xff0c;再追问之下又给了 看看合理不&#xff1f;

11款 ChatGPT 效率神器,司马阅SmartRead

强烈推荐5款 ChatGPT 效率神器&#xff01;Hotoke AI、ChatPDF、OpenAI Translator 、ChatExcel &#xff0c;ChatPDF和OpenAI Translator 是我目前经常使用的工具&#xff0c;可以帮助我很好的阅读和理解&#xff0c;可以帮助我们理解一些项目&#xff0c;例如区块链技术以及一…

更快、更 Pythonic 的 PyTorch 2.0 | 非常值得期待

文章目录 一、前言二、PyTorch 2.x:更快、更 Pythonic!三、技术概述四、常见问答(FAQs)CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 PyTorch 官方:原本是 1.14 来着,但我们这次的新特性太好用了,所以就直接叫 2.0 了。现在,只需添加一行代码,PyTorch 2…

NLP:自然语言处理技术最强学习路线之NLP简介(岗位需求/必备技能)、早期/中期/近期应用领域(偏具体应用)、经典NLP架构(偏具体算法)概述、常用工具/库/框架/产品、环境安装(更新中)

NLP&#xff1a;自然语言处理技术最强学习路线之NLP简介(岗位需求/必备技能)、早期/中期/近期应用领域(偏具体应用)、经典NLP架构(偏具体算法)概述、常用工具/库/框架/产品、环境安装(更新中) 目录 NLP自然语言处理技术最强学习路线 1、NLP市场岗位要求 Interview之NLP&…

chatgpt赋能python:Python运行太慢,如何加快速度

Python运行太慢&#xff0c;如何加快速度 Python是一种解释型语言&#xff0c;运行速度相对较慢。在处理大数据集、进行复杂算法或需要高性能的应用中&#xff0c;Python的运行速度可能成为限制性因素。本文将探讨如何加快Python程序的运行速度&#xff0c;让你的代码更加高效…

编程比赛 介绍 入门 及 学习路线

内容若有不足与纰漏&#xff0c;请多指教&#xff01; 文章目录 写在前面编程比赛介绍蓝桥杯天梯赛CPC类 比赛 百度之星程序设计大赛RoboCom睿抗机器人开发者大赛 (RAICOM)CAIP 编程设计赛道 “ 编程技能赛 ” 编程比赛要点注意赛前赛中赛后 编程比赛常见术语比赛相关常见术语 …

三步让VS Code播放视频

1、安装如下插件 Preview on Web Server 如果不喜欢的话可以下载其它同类插件&#xff0c;要求具有html预览功能。 2、写一个html文件 短短十几行&#xff0c;大部分都是自动生成。 主要是那个video标签。 再加点样式。 <!DOCTYPE html> <html lang"en"…

VSCode中使用github

目录 一、VSCode下载安装 二、Git下载安装 三、在VSCode中用Git生成ssh密钥 1&#xff09;添加GitHub用户名和邮箱&#xff1a; 2&#xff09;生成ssh密钥&#xff1a; 四、在Github中添加ssh密钥 1&#xff09;在github个人主页&#xff0c;点击右上角, 然后点击Settin…

Visual Studio Code(VSCode) 编辑/编译/调试 C++ 代码

前言 最近想要切换编辑工具&#xff0c;之前工作中使用过 Source Insight&#xff0c;Eclipse&#xff0c;CLion 来写 C 代码。目前来说 Source Insight 已经非常古老&#xff0c;只有编写代码还说得过去&#xff0c;编译、调试方面都不行。Eclipse 使用的时间最长&#xff0c;…

chatgpt职场办公-excel表格怎么设置类别编号

chatgpt职场办公-excel表格怎么设置类别编号 作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; 在 Excel 表格中设置类别编号可以通过以下步骤完成&#xff1a; 打开 Excel 表格并定位…

ChatGPT爆火:AI崛起,这些职场人的机遇到了?

ChatGPT最近真的被全球吃瓜群众玩坏了&#xff01; 回答情感问题&#xff0c;编写代码&#xff0c;撰写slogan或脚本&#xff0c;甚至还被用于毕业生论文…… 这个连马斯克都由衷地称赞的ChatGPT&#xff0c;是一种全新的聊天机器人模型。上线2个月&#xff0c;就拥有了上亿活…

chatgpt赋能python:Python如何做报表

Python如何做报表 Python是一种广泛使用的编程语言&#xff0c;特别适合数据处理和报表生成。在本文中&#xff0c;我们将探讨使用Python创建报告的一些最佳实践&#xff0c;以及一些工具和库来充实您的报告。 报表格式选择 在创建报告之前&#xff0c;您需要决定选择哪种报…