四轮蓝牙控制汽车上的当地气象站

介绍:在四轮蓝牙控制汽车上的本地气象站

关于:PLC, Arduino -做自己的项目

你好! !

这是我的四轮蓝牙控制车,车上装有当地的气象站。这款四轮汽车可以通过Blynk蓝牙控制,通过四个直流电机实现汽车的前进、后退、左转、右转。它还可以测量我周围的天气数据,如:气压,温度,湿度,光线。它由Seeed Wio终端和DFRobot直流电机驱动屏蔽控制。所有与汽车和天气有关的数据都在Wio终端LCD和Blynk人机界面上显示。

请在开始之前查看我的介绍视频。

步骤1:用品

首先,我要感谢以下赞助商,他们帮助我完成了这个项目。

JLCPCB:获得财务支持和免费PCB赞助商。如果您有PCB项目,请访问JLCPCB网站以获得令人兴奋的折扣和优惠券,如下所示:

se工作室:支持我一个Wio终端硬件。

DFROBOT:为Arduino支持一个四轴直流电机驱动屏蔽。

主要材料:

⦾1 pc xse Wio终端

⦾1 pc xArduino的DFRobot四直流电机驱动屏蔽

⦾1 pc xGrove -温湿度传感器(DHT11)

⦾1 pc x格罗夫温度和气压传感器(BMP280).我有一个Arduino的Grove初学者工具包其中包括DHT11和BMP280传感器。如果您是Arduino新手,您可以购买此套件,该套件包含10个附加Grove Arduino传感器,全部安装在一块电路板上。

⦾x 4个人电脑GA25 12V减速电机

⦾x 4个人电脑65mm橡胶车轮蓝色.我只有两个这些,所以我使用GT2计时滑轮80牙齿的两个剩余的轮子。

⦾x 4个人电脑机器人车轮用六角电机联轴器

⦾ 6件x可充电锂离子电池

⦾2 pc x2槽位电池18650支架

⦾2 pc x1槽位电池18650支架

⦾1 pc xLM2596S 3A可调降压直流电源模块

⦾1 pc xArduino Uno Protoshield

⦾2 pc x男性头。

⦾1 pc x透明/白色亚克力,A4尺寸,厚度5mm

⦾1 pc x开/关开关

⦾1米x8P/16P彩虹带状电缆

⦾2m ×两芯电源线。

⦾2 pc x5mm直流公母电源插头

⦾电缆扎带、电缆缠绕、螺栓、螺母。

⦾500mm x PVC管Ø42mm & Ø60mm。

⦾2件x PVC三通Ø42mm

⦾ 4件x PVC管端盖Ø42mm。

⦾1pcs x PVC直连接三通Ø60mm

⦾2pcs x PVC管端帽Ø60mm

b。工具:

⦾钻床。

⦾手锯。

⦾焊接机。

步骤2:播种Wio终端

Wio终端是一个基于samd51的微控制器,具有无线连接功能,由Realtek RTL8720DN供电,兼容Arduino和MicroPython。它运行在120MHz (Boost高达200MHz), 4MB外部闪存和192KB RAM。它支持蓝牙和Wi-Fi,为物联网项目提供骨干。

Wio终端本身配备:

  • 2.4英寸液晶显示屏。
  • 机载IMU (LIS3DHTR)。
  • 麦克风。
  • 蜂鸣器。
  • microSD卡槽。
  • 光传感器。
  • 红外发射器(红外940nm)。
  • 5路开关。
  • 3自定义按钮。
  • SAMD51核心内建的RTC功能。
  • 等等

除此之外,它还有两个多功能的Grove端口用于Grove生态系统,40个Raspberry Pi兼容引脚GPIO用于更多的插件。

详情请登录https://www.seeedstudio.com/Wio-Terminal-p-4509.html

Wiki页面:https://wiki.seeedstudio.com/Wio-Terminal-Getting-Started/

步骤3:Arduino的DFRobot四轴直流电机驱动屏蔽

最新Arduino四端电机驱动屏蔽,兼容5V/3.3V Arduino控制器,可同时控制多达4台8引脚直流电机。屏蔽支持PWM速度控制和方向控制。

驱动屏蔽包括两个TB6612FNG电机驱动芯片,每个通道最大输出1.2A连续电流。该模块内置低压检测电路和热关机保护电路,安全可靠。

你可以在产品链接wiki页面

第四步:电路图

电机连接如下图所示:

四电机屏蔽需要两个信号来控制一个直流电机:DIR速度.电机转速信号必须连接Wio Terminal的PWM引脚,如下所示:

  • PWM0(D0/A0)。
  • PWM1 (D2 / A2)。
  • PWM3 (D6 / A6)。
  • PWM4 (D8 / A8)。

DHT11温湿度传感器连接Wio端子的Grove I2C接口,BMP280压力传感器连接Wio端子的D4/A4引脚。

步骤5:制作汽车底盘

首先,我加入了2 pcs x PVC t恤Ø42mm一起构建一个汽车底盘。

我测量和钻孔4个x PVC端帽Ø42mm,用作电机支持。我焊接了4个直流电机的所有电源线,安装在端盖上,并附加了车轮的六角形电机联轴器。

在PVC机箱顶部钻一些孔,以安装电池架、控制板和直流电机电缆。

步骤6:车轮组装

我将所有65mm橡胶轮通过六角形电机联轴器连接到电机轴上。

我没有足够的4个轮子,所以我用了2个滑轮,80个牙齿,两个前轮。

四个端盖电机支架通过4根x管Ø42mm连接到PVC汽车底盘上,长度65mm。

螺纹所有的电机电缆在PVC底盘和他们出来通过一个开放钻孔。

在两个PVC三通之间安装一块钢板,以确保机箱在运行时保持原位并对准。

第七步:电池支架

我切了一个小亚克力片,尺寸180 x 40毫米,钻孔和安装2件x一槽和两槽电池18650支架。

包括塑料支架在内的所有电池都隐藏在PVC直接头Ø60mm内。

我用端盖盖住了这个PVC电池座,并在端盖Ø60mm的后面安装了一个ON/OFF电源开关。

步骤8:焊接Protoshield和电池

我在Protoshield PCB底部焊接了2排x20针公头,用于连接Wio终端母头。

在Protoshield顶部,我焊接了所有女性头部对应的男性头部的四直流电动机驱动器盾。然后我焊接所有的控制线从Wio端子到电机屏蔽遵循原理图上的前一步。

用Wio终端和电机屏蔽连接Protoshield。它是这样的。

我使用了6pcs x 18650可充电电池,分为2个平行组,每组3个电池串联。完全充电时,输出电压约为12VDC。为了给Wio端子和电机屏蔽提供5VDC电源,我使用了降压电源模块LM2596。

步骤9:组装和连接

将电池支架安装到机箱上,将LM2596模块放置在PVC电池支架顶部。

将所有电机电缆连接到四组电机屏蔽端子。

DHT11和BMP280传感器安装在PVC电池支架上。

为了安装Wio终端和电机屏蔽,我使用了另一个铝角和丙烯酸板。

将6节18650电池插入槽中。

完成了!

步骤10:为Wio终端刷新RTL8720固件

为了在Wio终端上更新Realtek RTL8720的最新固件,我们可以参考这个链接

我已经更新了RTL8720固件到版本2.1.3

Arduino IDE中也安装了一些蓝牙库。

步骤11:编程

项目代码可在我的GitHub

A.汽车控制

这辆四轮汽车通过Blynk软件蓝牙控制。你应该拥有自己的。”身份验证令牌在Blynk应用中。

每台电机具有以下特性:

typedef struct {int SPD_PIN;//速度引脚int DIR_PIN;//方向引脚int SET_SPEED;//要设置的速度}电机;

小车控制通过虚拟引脚在Blynk应用程序上执行。

BLYNK_WRITE(V1) {Forwardcmd_V1 = param.asInt();//获取一个整数if(Forwardcmd_V1) {RC_Car_Forward();} else {RC_Car_Stop();} }

并且移动命令也相应地打印在Wio终端屏幕上。

void RC_Car_Forward(){//设置汽车方向digitalWrite(MotorFrontLeft。DIR_PIN, 0);digitalWrite (MotorBackLeft。DIR_PIN, 0);digitalWrite (MotorFrontRight。DIR_PIN, 0);digitalWrite (MotorBackRight。DIR_PIN, 0);//设置汽车速度类比write (MotorFrontLeft。SPD_PIN MotorFrontLeft.SET_SPEED);analogWrite (MotorFrontRight。SPD_PIN MotorFrontRight.SET_SPEED);analogWrite (MotorBackLeft。SPD_PIN MotorBackLeft.SET_SPEED);analogWrite (MotorBackRight。SPD_PIN, MotorBackRight.SET_SPEED); // Show "FORWARD" command on LCD screen Car_Image.createSprite(WIDTH, HEIGHT); Car_Image.fillSprite(TFT_BLACK); Car_Image.setTextColor(TFT_MAROON); Car_Image.setFreeFont(&FreeMonoBold24pt7b); Car_Image.drawString("FORWARD", 70, 6); Car_Image.pushSprite(0, (HEIGHT/2) + 1); Car_Image.deleteSprite(); }

A.本地天气预报

在我的程序中,无论我的四轮车是否连接到Blynk,天气信息都会更新并显示在Wio终端屏幕上。我用过“BlynkTimer设置温度、湿度、压力和光传感器的间隔读数。

//设置BMP280读数计时器之间的2秒间隔。设置间隔(2000L,myTimerBMP280);//设置DHT11读数计时器之间的3秒间隔。设置间隔(3000L,MyTimerDH11);//设置光传感器读数计时器之间的4秒间隔。设置间隔(4000L,myTimerLight);

例如,压力传感器BMP280每2秒读取一次,然后将其数据发送到Blynk屏幕,并显示在Wio Terminal LCD屏幕上。

void myTimerBMP280() {readPressure();//发送给Blynk BlynkvirtualWrite (V6、压力/ 1000);//在LCD屏幕上显示实际压力createSprite(宽/ 2,高);Car_Image.fillSprite (TFT_BLACK);Car_Image.setTextColor (TFT_RED);Car_Image.setFreeFont (&FreeMonoBold12pt7b);Car_Image。拉带(pressureStr 2 12);Car_Image。pushSprite(0, (8*HEIGHT/2) + 1); Car_Image.deleteSprite(); }

对实际的周围压力进行如下读取和处理:

void readPressure(){//从BMP280读取压力pressure = BMP280 . getpressure ();//转换成字符串显示在液晶屏压力= "P:" +字符串(压力/1000)+ "kPa";}

步骤12:Blynk & Wio终端屏幕

A.Wio终端液晶

⦾标题下方四轮钢筋混凝土汽车”,它显示:

  • 命令的状态向前/落后的/向右转/向左转/停止/急停。
  • 速度显示百分比。

⦾标题下方天气信息,显示以下数据:

  • 温度(T).
  • 湿度(H).
  • 压力(P).
  • 光(l).

b。智能手机的Blynk屏幕。

Blynk HMI以与Wio终端屏幕相关的方式显示天气信息和车辆控制命令。

我在Blynk中使用了虚拟pin码作为E-Stop按钮。但最好是在Wio终端上设置一个内置的物理按钮作为E-Stop按钮,以防出现故障。

步骤13:试验

我在没有气象站的情况下做了第一次测试,调整了4个马达的速度,确保车子可以直线行驶。我们可以在程序中用4台直流电机之间的速比来校准它们。

因为Wio终端有一个内置的加速计传感器,所以当我们发出运行命令时,它可以反馈汽车是否移动。

步骤14:结论

我们可以在静止或移动模式下使用这辆四轮汽车。它可以像普通的当地气象站一样放在桌子上。

谢谢你阅读我的作品。感谢JLCPCBse工作室DFRobot感谢您在这个项目上对我的支持!!

第一个分享

    建议

    • 音频挑战

      音频挑战
    • 机器人比赛

      机器人比赛
    • 制作肥皂和蜡烛的速度挑战

      制作肥皂和蜡烛的速度挑战

    评论