亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Wi-Fi 遥控车 - Qi 已启用

组件和用品

IDT Qi 5W 发射器原型套件
× 1
IDT Qi 5W 接收器原型套件
× 1
Arduino MKR1000
× 1
• Arduino 2WD 机器人汽车底盘
× 1
L293DNE
× 1
CN6009 - 升压功率转换器模块
× 1
3.7V 锂电池
× 1
1N4007 – 高电压、高额定电流二极管
× 8
LED(通用)
× 1
电阻 221 ohm
× 1
领带
× 5
面包板(通用)
(可选)
× 1

必要的工具和机器

烙铁(通用)
热胶枪(通用)
螺丝刀
电压表

应用和在线服务

Arduino IDE

关于这个项目

你将在这个项目中构建什么?

这是一个项目,将逐步向您展示如何创建一个 Wi-Fi 控制的遥控车,它会在停车时自动无线充电。

它是如何工作的?

该项目的大脑是 Arduino MKR1000,它通过 Wi-Fi 与您的移动设备连接。 Arduino 板由 3.7V 锂电池供电。对于电机控制,使用 L293DNE 电机驱动器。然而,它至少需要 4.5V 才能运行。我们将使用升压升压电源转换器模块将电压从 3.7V 升至 5V(将低电压转换为更高电压),这样电机驱动器将使用 5V 供电。

为了给电池充电,Arduino MKR1000 板具有锂聚合物电池的自动充电系统。当连接外部电源(5V DC)时,连接到开发板的电池正在充电。所以 IDT P9025AC-R-EVK – Qi 5W 接收器将作为外部电源(5V DC)连接到 Arduino 板。当停车场停在充电站上时(即 IDT P9038-R-EVK – Qi 5W 发射器),电池将充电。

控制系统具有快、慢两种速度模式。

如何构建它?

硬件部分

电机极和 IDT 接收器板上的焊线(红色线引脚 OUT 和黑色线引脚 GND)。对于这一步,您需要一个烙铁和 6 根电线。

制作电子线路。您可以使用面包板来创建电路或焊接所有连接。

注意:使用容量至少为 700mAh 的 3.7V Li-Po 电池!否则电池可能会过热爆炸!

调整 CN6009。将电源转换器模块升压至 5V。用螺丝刀调整CN6009的输出值。 务必检查输出电压(通过将电压表连接到引脚 OUT+ 和 OUT-)。

连接 IDT 无线电源 Qi 5W 接收器。拿一块塑料(例如塑料卡)为汽车底部的无线电源接收器做底座。然后用硅胶将塑料片和接收器粘在汽车底部。最后,将 IDT Receiver 的红线连接到 arduino 的 VIN 引脚,将黑线连接到 GND 引脚。

使车辆稳定。用扎带将电池和面包板固定在车辆上。

软件部分——Wi-Fi 连接

对于这部分,只需复制代码。在代码文件中填写您的网络 SSID 和密码(代码文件中的第 12、13 行)。您需要按照评论说明进行操作。该代码当前设置为与 WPA/WPA2 网络一起使用。如果您想连接到 WEP 或开放网络,请按照代码注释(第 34-37 行)中的说明进行操作。

如何使用?

第一步:连接Arduino MKR1000

控制车辆需要 Wi-Fi 连接。您可以通过两种方式实现这一目标。第一个是在您的移动设备上启用 Wi-Fi 热点并将电路板连接到热点。第二个是将您的移动设备和 Arduino 板连接到同一个 Wi-Fi 路由器。请务必在将上传到Arduino板的代码文件中填写您路由器的SSID和密码设置。

注意:最好使用第一种方法(Wi-Fi热点),因为这样您就可以在不需要路由器的情况下控制您的车辆。

第二步:获取Arduino MKR1000的IP地址

如果 Arduino 开发板连接到您的移动设备的热点,请转到 Wi-Fi 热点设置,您将在那里看到您开发板的 IP 地址(例如 192.168.1.1)。

如果 Arduino 板连接到 Wi-Fi 路由器,则您需要从路由器设置中进行检查。

汽车上的 LED 指示成功连接到指定的网络和服务器激活。

第三步:访问Arduino MKR1000的Webserver

转到浏览器,在 URL 框中输入 Arduino 的 IP 地址。

第四步:连接充电座

使用 5V 直流适配器将 IDT P9038-R-EVK – Qi 5W 发射器连接到墙上的插座。

第 5 步:玩得开心!

充电时间!!

试驾:

PCBWeb的Gerber文件

代码

  • Arduino_IDT_Wi-Fi_Car.ino
Arduino_IDT_Wi-Fi_Car.inoArduino
将第 12-13 行中的示例和密码分别替换为您的 ssid 和密码。
#include #include const int motor1Control =2; // 右 motorconst int motor2Control =3; // 左马达const int motor1Input1 =4;const int motor1Input2 =5;const int motor2Input1 =8;const int motor2Input2 =9;const int wifiLed =10; // 表示Wi-Fi连接成功char ssid[] ="example"; // 填写你的网络SSID (name)char pass[] ="password"; // 填写你的网络密码int keyIndex =0; // 填写您的网络密钥索引号(可选 - 仅 WEP 需要)int status =WL_IDLE_STATUS;String readString;WiFiServer server(80); // 定义服务器的端口String speedMode ="fast";void setup() { pinMode(motor1Control, OUTPUT); pinMode(motor2Control, OUTPUT); pinMode(motor1Input1, OUTPUT); pinMode(motor1Input2, OUTPUT); pinMode(motor2Input1, OUTPUT); pinMode(motor2Input2, OUTPUT); pinMode(wifiLed,输出); // 尝试连接到 Wifi 网络:while ( status !=WL_CONNECTED) { // 连接到 WPA/WPA2 网络。如果使用开放或 WEP 网络,请更改此行: // 对于 WEP 网络,替换为: status =WiFi.begin(ssid, keyIndex, pass); // 对于开放网络,替换为: status =WiFi.begin(ssid); status =WiFi.begin(ssid, pass); // 等待 10 秒连接:delay(10000); } // 开始网络服务器 server.begin(); // 表明服务器正在运行 digitalWrite(wifiLed, HIGH);}void loop() { // 监听传入的客户端 WiFiClient client =server.available(); if (client) { // http 请求以空行结束 boolean currentLineIsBlank =true; while (client.connected()) { if (client.available()) { char c =client.read(); // 如果您已经到达行尾(收到换行符 // 字符)并且该行为空白,则 http 请求已结束, // 因此您可以发送回复 if (readString.length() <100 ) { //存储字符到字符串 readString +=c; } if (c =='\n') { // 发送一个标准的 http 响应头 client.println("HTTP/1.1 200 OK"); client.println("内容类型:文本/html");客户端打印(); client.println(""); client.println(""); client.println(""); client.println("<样式>"); client.println("a.button {-webkit-appearance:button;"); client.println("-moz-appearance:button;"); client.println("外观:按钮;"); client.println("高度:400px;"); client.println("行高:400px;"); client.println("文本对齐:居中;"); client.println("文字装饰:无;"); client.println("字体大小:100px;"); client.println("颜色:初始值;}"); client.println(""); client.println(""); client.println(""); // 向前移动的按钮 client.println("FORWARDS
"); client.println("
"); // 左转按钮 client.println(" "); // 汽车停止按钮 client.println("STOP " ); // 右转按钮 client.println("RIGHT "); client.println("
"); // 向后移动的按钮 client.println("BACKWARDS "); client.println("
"); client.println("
"); // 向后移动的按钮 client.println("

速度模式

"); client.println("FAST"); client.println("SLOW "); client.println(" "); client.println(""); break; } // 决定点击了哪个按钮(如果有) // 快速模式按钮 if (readString.indexOf("?fast")> 0){ speedMode ="fast"; // 清空 readString 才能得到下一条命令 readString =""; } // 慢速模式按钮 if (readString.indexOf("?slow")> 0){ speedMode ="slow"; // 清除 readString 才能得到下一条命令 readString =""; } // 快速模式 if (speedMode =="fast"){ if (readString.indexOf("?moveForwards")> 0 ){ moveForwards(); // 清除 readString 以获取下一条命令 readString =""; } if (readString.indexOf("?moveBackwards")> 0){ moveBackwards(); // 清除 readString 以能够得到下一个命令 readString =""; } } else if (speedMode =="slow"){ // 慢速模式 if (readString.indexOf("?moveForwards")> 0){ moveForwardsSlow(); //清空readString就可以得到下一条命令r eadString =""; } if (readString.indexOf("?moveBackwards")> 0){ moveBackwardsSlow(); // 清除readString 才能得到下一条命令 readString =""; } } if (readString.indexOf("?turnLeft")> 0){ turnLeft(); // 清除readString 才能得到下一条命令 readString =""; } if (readString.indexOf("?turnRight")> 0){ turnRight(); // 清除readString 才能得到下一条命令 readString =""; } if (readString.indexOf("?stopMoving")> 0){ stopMoving(); // 清除readString 才能得到下一条命令 readString =""; } } } // 给浏览器时间来接收数据 delay(1); // 关闭连接:client.stop(); }}// 向前移动的命令void moveForwards(){ digitalWrite(motor1Control, HIGH);数字写入(电机2控制,高);数字写入(电机1输入1,低);数字写入(电机1输入2,高);数字写入(电机2输入1,低); digitalWrite(motor2Input2, HIGH);}// 向后移动的命令void moveBackwards(){ digitalWrite(motor1Control, HIGH);数字写入(电机2控制,高);数字写入(电机1输入1,高);数字写入(电机1输入2,低);数字写入(电机2输入1,高); digitalWrite(motor2Input2, LOW);}// 右转命令void turnRight(){ // 提供较低的电压以降低速度-更好地控制analogWrite(motor1Control, 0);模拟写入(电机2控制,200);数字写入(电机1输入1,高);数字写入(电机1输入2,低);数字写入(电机2输入1,低); digitalWrite(motor2Input2, HIGH);}// 向左转的命令void turnLeft(){ // 提供较低的电压以降低速度 - 更好地控制analogWrite(motor1Control, 200);模拟写入(电机2控制,0);数字写入(电机1输入1,低);数字写入(电机1输入2,高);数字写入(电机2输入1,高); digitalWrite(motor2Input2, LOW);}// 停止carvoid stopMoving() { digitalWrite(motor1Control, LOW);数字写入(电机2控制,低);数字写入(电机1输入1,低);数字写入(电机1输入2,低);数字写入(电机2输入1,低); digitalWrite(motor2Input2, LOW);}// 低速前进指令void moveForwardsSlow(){analogWrite(motor1Control, 200);模拟写入(电机2控制,200);数字写入(电机1输入1,低);数字写入(电机1输入2,高);数字写入(电机2输入1,低); digitalWrite(motor2Input2, HIGH);}// 低速后退指令void moveBackwardsSlow(){analogWrite(motor1Control, 200);模拟写入(电机2控制,200);数字写入(电机1输入1,高);数字写入(电机1输入2,低);数字写入(电机2输入1,高); digitalWrite(motor2Input2, LOW);}

定制零件和外壳

Arduino%20IDT%20Wireless%20charge%20wifi%20car.cad

示意图


制造工艺

  1. C# 构造函数
  2. C# 嵌套类
  3. C# 构造函数重载
  4. 支持 Wi-Fi 的物联网的日益增长的威胁
  5. 精密制造的汽车发动机零件
  6. 了解汽车千斤顶系统
  7. 汽车发动机气缸配置
  8. 了解汽车发动机的工作原理
  9. 如何修复汽车中的燃气泄漏?
  10. 汽车升级会影响保修吗?
  11. 如何修理你的车门把手
  12. 如何修复汽车上的锈迹?