基于物联网的智能体育器材管理系统

继续更新之前做过的一些Arduino基础项目之基于ESPduino的智能体育器材管理系统

实现效果

系统的整体结构图

阿里云服务器物模型运行图
系统的APP页面图片
本系统可以将采集到的数据上传至阿里云物联网平台,并通过物联网平台发送至用户的手机app上,用户可以远程查看室内情况,并可以远程处理室内异常情况.

所需硬件及软件

1.Espduino和Arduino开发板(采用双机通信的方法,原来引脚没规划好,做到后面只能加个Arduino开发板了,Espduino作为主机,Arduino作为从机)

2.传感器模块(dht11温湿度模块,MQ2烟雾传感器,MFRC522无线射频识别模块,SG90舵机,语音识别模块)
3.软件: 阿里云服务器,APP Inventor

整体电路连接图

开发和调试部分

由于在开发中,不可能一口吃个胖子,所以就需要先把各个模块调试好,然后在整合到一块去

Dht11和ESPduino编程调试

DHT11模块湿度的测量精度在5%以内,温度的测量精度在2℃内,输出的是数字信号。采用单总线协议

编写代码

#include "DHT.h"
 
 #define DHTPIN  4
 #define DHTTYPE DHT11
 
 DHT dht(DHTPIN, DHTTYPE);
 void setup() {
  Serial.begin(9600);
 Serial.println("DHT11 test");
  dht.begin();
}

void loop() {
 float h = dht.readHumidity();//读湿度
  float t = dht.readTemperature();//读温度(摄氏度)

  Serial.print("Humidity:");
  Serial.print(h);
Serial.print("% Temperature:");
  Serial.print(t);
 Serial.println("℃");
  delay(2000);
}

调试和注意事项

1.可能会有数读数异常,检查一下是否是杜邦线没插好松了
2.保证供电稳定,否则也会有读数异常情况产生

烟雾传感器和Espduino调试

1.	MQ-2传感器对可燃气、烟雾等气体灵敏度高,基于MQ-2的烟雾传感器模块通过电路设计,提供了两种输出方式:
		数字量输出:通过板载电位器设定浓度阈值,当检测到环境气体浓度超过阈值时,通过数字引脚DO输出低电平。	
		模拟量输出:浓度越高,AO引脚输出的电压值越高,通过ADC采集的模拟值越高。
		本系统采用模拟量输出的方式

电路连接图MQTT电路连接图

代码及调试部分

#include <Arduino.h>

#define Sensor_AO A0
unsigned int sensorValue = 0;
void setup()
{

  Serial.begin(9600);
}
void loop()
{
  sensorValue = analogRead(Sensor_AO);
  Serial.print("Sensor AD Value = ");
  Serial.println(sensorValue);
  delay(1000);
}
    !这是mqt采集到的数据上传到阿里云的图片](https://img-blog.csdnimg.cn/6901632af3e54c69a7b0358b737db459.png#pic_center)

舵机和Espduino部分

Servo basketball_myservo;  // 定义Servo对象来控制
Servo pingpang_myservo;  // 定义Servo对象来控制
int basketball_servopin = 2;    //控制租借篮球
int pingpang_servopin = 3; //控制租借足球

void setup() { 
  Serial.begin(9600);
   basketball_myservo.attach(basketball_servopin);//控制篮球的舵机
    pingpang_myservo.attach(pingpang_servopin);//控制乒乓球的舵机
    basketball_myservo.write(0); //初始化篮球舵机
    pingpang_myservo.write(0); //初始化乒乓球舵机
   Serial.println("welcome to use our stm");
  basketball_myservo.write(90); //初始化篮球舵机
    pingpang_myservo.write(90); //初始化乒乓球舵机  
}

RFID和Arduino代码调试部分

1. RFID模块连接引脚比较多,Espduino引脚不够用了,那时手里刚好有一块Arduino板子,所以就采用Arduinol了
2. 安装RFID库(点击「项目」—「加载库」—「管理库」,查找选择「MFC522」最新版本进行安装。)
3. RC522模块的3.3V、GND分别对应连接开发板的3.3V、GND,模块的MOSI、MISO、SCK分别连接开发板的SPI接口11、12、13,模块的SDA、RST分别连接开发板数字管脚10、9。
4. 编写代码,初始化对应引脚,刷RFID卡,将卡号以16进制的方式保存下来,例如byte cardID[4] = {0xC3, 0x9C, 0xD2, 0xA9};//存储有权限的卡ID,当再次刷卡时,RFID模块就将信息读取出来通过串口方法发送给主机
5. 关键示例代码:
 byte cardID[4] = {0xC3, 0x9C, 0xD2, 0xA9};//身份信息
 /*保存读取的卡号*/
	   //搜索新卡
  if ( ! rfid.PICC_IsNewCardPresent())
    return;
  // 验证NUID是否可读
  if ( ! rfid.PICC_ReadCardSerial())
    return;
  MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
  // 检查是否MIFARE卡类型
  if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
      piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
      piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
      Serial.println("不支持读取此卡类型");
      return;
  }
  // 保存读取到的UID
  for (byte i = 0; i < 4; i++) {
    nuidPICC[i] = rfid.uid.uidByte[i];
  }
   Serial.print("十六进制UID:");
  printHex(rfid.uid.uidByte, rfid.uid.size);
  Serial.println();

经测试各个模块都能正常使用,所以就可以进行后面的阿里云物联网平台的产品创建,测试数据是否可以发送给平台,云平台下发的指令,是否有用,这样的话,后面编写APP部分,就算有问题只用处理APP和云平台的部分即可了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨小羽ovo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值