玩转树莓派之智能小车简易组装

今天,我将从树莓派结合一些常用的传感器开始。让大家从基础开始学习,方便后面树莓派如何利用红外传感器进行树莓派小车进行避障,利用超声波模块进行测距、避障。红外循迹传感器进行巡线。到后面的手机安卓遥控。以及视频监控的整个过程。
玩转树莓派之智能小车简易组装
现在在树莓派上常用的控制GPIO的语言有python和C。他们都是通过控制树莓派的GPIO来进行数据的采集以及外围设备的控制。那么我们先从python开始着手。最新的树莓派系统默认安装了RPi.GPIO。如果你用的系统比较早,也可以通过apt-get的方式安装,安装命令为:sudo apt-get install python-RPi.GPIO。
玩转树莓派之智能小车简易组装
小车搭载树莓派3代B型主板和500W像素高清摄像头。学习 C语言或者 Python以及Scratch控制树莓派GPIO。学习利用各种传感器让小车实现多功能,小车黑线循迹、超声波模块避障和红外避障追踪等。使用OPenCV+摄像头物体追踪人脸识别,USB声卡录音或语音识别。持公网和WiFi远程控制。
玩转树莓派之智能小车简易组装
【Raspberry Pi 3 Model B】
硬件参数如下:

  • BCM2837 64位的1.2GHz四核ARM Cortex-A53
  • 1GB内存
  • 10/100自适应网卡
  • 802.11n WiFi无线网卡
  • 低功耗蓝牙4.1 (BLE)
  • HDMI接口
  • USB 2.0接口 x 4
  • MicroSD 卡插槽
  • 3.5 mm 音频输出接口
  • 40PIN GPIO接口
  • CSI摄像头接口
  • DSI显示接口
  • 升级后的电源管理系统,以便使用更多耗电的外设(须用2.5A以上电源供电)
  • 软件方面,支持更多操作系统,如Windows 10Iot、 Ubuntu、 Kali 、 Lakka等

使用基于树莓派官方系统Raspbian的小车镜像系统:

  • 对官方系统进行了汉化:安装了中文库和中文输入法
  • 配置了小车运行需要的环境:安装了控制GPIO的WiringPi库以及视频实时传输mjpgstreamer等
  • 设置了树莓派默认开机启动热点 :方便没有显示器的用户进行远程桌面操作
  • 系统默认浏览器升级为谷歌浏览器 自带Flash插件 可在线播放视频或玩小游戏

玩转树莓派之智能小车简易组装
玩转树莓派之智能小车简易组装

树莓派小车红外避障

玩转树莓派之智能小车简易组装
玩转树莓派之智能小车简易组装

手机控制

玩转树莓派之智能小车简易组装
玩转树莓派之智能小车简易组装

Scratch红外跟踪

玩转树莓派之智能小车简易组装

小编制作的小车镜像

务必参照用户手册进行安装,以免损坏电路.
玩转树莓派之智能小车简易组装

小编组装的五颜六色的树莓派智能小车

原文始发于:玩转树莓派之智能小车简易组装|

树莓派智能小车结合摄像头opencv进行物体追踪

在开发树莓派智能小车的路上已经走了一年多时间了,起初做了以下简单的远程控制和避障功能,后来慢慢加入黑线循迹以及语音识别,物体识别的功能。前段时间在刷新闻头条的时候,偶然看到一外国大牛做的树莓派目标追踪平衡车。所以开始琢磨着让我自己的小车也加上物体追踪的功能。在几天的资料整理之后发现是利用opencv和python实现的。那么今天告诉大家如何安装opencv3.0和如何利用它实现我的小车追踪。

之前确实安装过几次opencv都倒在了cmake编译的路上,但有问题就得解决。翻了好几个帖子终于找到了一个靠谱的。用了一个下午的时间终于安装成功了。安装的教程篇幅过长且容易被头条认为成抄袭所以就在发到评论区吧。然后问题来了,opencv安装好了,怎么实现物体追踪呢。我开始在github上找案列,找啊找啊找,输入关键字 track car raspberry,找到一个,打开看看是树莓派加arduino做的。还好arduino只是用来控制步进电机的。我开始把树莓派gpio控制电机的部分移植到这个项目中。在一天的调试之后,改造版的树莓派物体追踪小车出炉了。怎么说呢,这只是个雏形,因为小车转向不够灵敏,追踪的功能需要进一步优化。个人水平有限,希望大家一起来研究。

来说说detect.py
小车物体追踪的源码。detect.py
中物体追踪是怎么实现的呢,首先它需要捕捉一个frame边框并确定一个物体去追踪。在确定了所要追踪的物体之后,小车将保持对物体的追踪。源码中定义了前后左右和停止的动作。当被锁定的物体移动时,小车则根据物体的位置作出响应即追踪物体前进。

附detect.py
源码:

#导入一些必须的包


from picamera.array import PiRGBArray

from picamera import PiCamera

import cv2

import serial

import syslog

import time

import numpy as np

import RPi.GPIO as GPIO

# 定义捕捉的画面尺寸

width = 320

height = 240

tracking_width = 40

tracking_height = 40

auto_mode = 0

#如下定义小车前后左右的功能函数

def t_stop():

GPIO.output(11, False)

GPIO.output(12, False)

GPIO.output(15, False)

GPIO.output(16, False)

def t_up():

GPIO.output(11, True)

GPIO.output(12, False)

GPIO.output(15, True)

GPIO.output(16, False)

time.sleep(0.05)

GPIO.output(11, False)

GPIO.output(12, False)

GPIO.output(15, False)

GPIO.output(16, False)

time.sleep(0.3)

def t_down():

GPIO.output(11, False)

GPIO.output(12, True)

GPIO.output(15, False)

GPIO.output(16, True)

def t_left():

GPIO.output(11, False)

GPIO.output(12, True)

GPIO.output(15, True)

GPIO.output(16, False)

time.sleep(0.05)

GPIO.output(11, False)

GPIO.output(12, False)

GPIO.output(15, False)

GPIO.output(16, False)

time.sleep(0.3)

def t_right():

GPIO.output(11, True)

GPIO.output(12, False)

GPIO.output(15, False)

GPIO.output(16, True)

time.sleep(0.05)

GPIO.output(11, False)

GPIO.output(12, False)

GPIO.output(15, False)

GPIO.output(16, False)

time.sleep(0.3)

def t_open():

GPIO.setup(22,GPIO.OUT)

GPIO.output(22,GPIO.LOW)

def t_close():

GPIO.setup(22,GPIO.IN)

def check_for_direction(position_x):

GPIO.setmode(GPIO.BOARD)

GPIO.setwarnings(False)

GPIO.setup(11,GPIO.OUT)

GPIO.setup(12,GPIO.OUT)

GPIO.setup(15,GPIO.OUT)

GPIO.setup(16,GPIO.OUT)

GPIO.setup(38,GPIO.OUT)

if position_x == 0 or position_x == width:

print 'out of bound'

t_stop()

if position_x <= ((width-tracking_width)/2 - tracking_width):

print 'move right!'

t_right()

elif position_x >= ((width-tracking_width)/2 + tracking_width):

print 'move left!'

t_left()

else:

# print 'move front'

t_up()

# initialize the camera and grab a reference to the raw camera capture

camera = PiCamera()

 

树莓派智能小车结合摄像头opencv进行物体追踪

图文无关


camera.resolution = (width, height)

camera.framerate = 32

rawCapture = PiRGBArray(camera, size=(width, height))

rawCapture2 = PiRGBArray(camera, size=(width, height))

# allow the camera to warmup

time.sleep(0.1)

# set the ROI (Region of Interest)

c,r,w,h = (width/2 - tracking_width/2), (height/2 - tracking_height/2), tracking_width, tracking_height

track_window = (c,r,w,h)

# capture single frame of tracking image

camera.capture(rawCapture2, format='bgr')

# create mask and normalized histogram

roi = rawCapture2.array[r:r+h, c:c+w]

hsv_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV)

mask = cv2.inRange(hsv_roi, np.array([0,30,32]), np.array([180,255,255]))

roi_hist = cv2.calcHist([hsv_roi], [0], mask, [180], [0,180])

cv2.normalize(roi_hist, roi_hist, 0, 255, cv2.NORM_MINMAX)

term_crit = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 80, 1)

# capture frames from the camera

for frame in camera.capture_continuous(rawCapture, format='bgr', use_video_port=True):

# grab the raw NumPy array representing the image, then initialize the timestamp

# and occupied/unoccupied text

image = frame.array

# filtering for tracking algorithm

hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

dst = cv2.calcBackProject([hsv], [0], roi_hist, [0,180], 1)

ret, track_window = cv2.meanShift(dst, track_window, term_crit)

x,y,w,h = track_window

cv2.rectangle(image, (x,y), (x+w,y+h), 255, 2)

cv2.putText(image, 'Tracked', (x-25, y-10), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)

# show the frame

cv2.imshow("Raspberry Pi RC Car", image)

key = cv2.waitKey(1) & 0xFF

check_for_direction(x)

time.sleep(0.01)

# clear the stream in preparation for the next frame

rawCapture.truncate(0)

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

引言

当我们手里有一个树莓派的时候,就可以发挥自己的想象力。创造出与众不同的各种东西。搭建网络服务器、私有云、网络监控器、无人机航模、行走机器人等等等等。今天呢,教大家如何把手里的树莓派用起来。玩转树莓派嘛 怎么可能让你的树莓派放在角落里吃灰呢。

软件

我将提供大家三种不同语言的小车控制程序所以运行环境请根据需要搭建。系统版本可以是树莓派Raspbian Jessie或者Ubuntu等。视频网络传输Mjpgstreamer.

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

我配置好运行环境之后制作的镜像系统

C语言版

树莓派官方系统自带Gcc编译器 , 只需安装编译WiringPi库。

Python版

最近的系统已经默认安装了python-RPi.GPIO ,进行无线网络远程遥控的时候需安装pip,flask。

Scratch

什么都不用动 打开Scratch软件 设置GPIOSERVER ON就可以了。

  • 青少年可以从SCRATCH编程中学习编程思想,以及算法基础并养成良好的逻辑思维。

  • 高中到大学可以进阶初步学习Python/C语言编程,Python语言是一种较为容易入门的机器学习语言。

  • 对于有C语言基础的同学学习用WiringPi控制树莓派的GPIO,掌握C语言并应用到自己的实践中。

硬件

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

树莓派3代B型主板

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

部分配件

别小看树莓派 相信出色的你能玩出更多新花样 先看一下我制作的哪些功能

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

红外避障

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

黑线循迹

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

手机软件控制

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

Scratch编程 红外跟随

下面开始进入主题

为了节省工作量呢 我从C语言版本开始说。

系统配置中文环境和拼音我就不罗嗦了

sudo apt-get install ttf-wqy-zenhei (安装中文字体库)

sudo apt-get install scim-pinyin (安装中文输入法 当然了你也可以全装其他的输入法)

我建议最好用远程桌面的方式连接,以便小车运行时方便修改代码。

树莓派安装xrdp 就可以直接用笔记本自带的远程桌面工具进行远程操作了。最新的系统安装步骤:

sudo apt-get install xrdp

sudo apt-get install tightvncserver

然后在windows打开远程桌面连接 打开对应的IP地址,即可连接成功

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

远程桌面界面


C语言安装wiringPi库

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

WringPI库介绍

wiringPi 安装

  • 方案 A——使用 GIT 工具,通过 GIT 获得 wiringPi 的源代码。

git clone git://git.drogon.net/wiringPi

测试一下是否安装成功:

$gpio -v

先来搭建手机远程控制的功能,稍后再进行与传感器的结合。

简单看一下树莓派上即 服务端代码:carserver.c

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

几种初始化wiringPi的函数

首先在程序的开始的时候需要调用上面的任意的函数来对wiringpi 进行初始化,否则你的程序不能正常工作。wiringPiSetup() 该函数初始化wiringPi,幵假定程序将使用wiringPi的管脚定义图。具体管脚映射,可以通过gpio readall命令来查看。该函数需要root权限。驱动电机使用四个引脚。1、4控制一侧,5、6另外一侧。编码方式为wPi。

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

引脚定义

pinMode函数

原型
void pinMode (int pin,
int mode) ;

使用该函数可以将某个引脚配置为INPUT(输入)、 OUTPUT(输出) 、PWM_OUTPUT (脉冲输出) 或者GPIO_CLOCK(时钟)。在我们的小车C语言控制程序中我们分别设置了GPIO1,GPIO4,GPIO5,GPIO6这四个引脚来控制左右两侧的电机。此时我们是通过GPIO的输出来实现的,所以这里设置mode为OUTPUT。

digitalWrite函数

函数原型
void digitalWrite (int pin,
int value) ;

使用该函数可以向指定的管脚写入HIGH(高)或者LOW(低)写入前,需要将管脚讴置为输出模式。wiringPi将任何的非0值作为HIGH(高)来对待,因此,0是唯一能够代表LOW(低)的数值。如下图,定义小车前进时,将GPIO1置为高GPIO4置为低(左侧前进),将GPIO5置为高GPIO6置为低(右侧前进)。

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

通过接收到的字符进而控制小车动作

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

全部代码占用篇幅。完整代码稍后评论区

组装小车

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

树莓派引脚接线

整体供电使用两节3.7V的18650锂电池。树莓派需要5V供电,所以需要使用一个转5V的降压模块Lm2596模块。编译carserver.c然后等组装好之后运行。

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

安卓软件APP源码就不贴出来了。需要的话可以给我留言。

Scratch控制版

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

Python版

玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

部分源码

好累 ,,能不能偷个懒。python代码原理大同小异。初始化GPIO,定义小车点后左右停止的函数。然后通过GET POST方法发送接收信号。然后控制树莓派进行响应。

原文始发于:玩转树莓派:树莓派智能小车DIY全过程手机控制循迹避障(包含源码)

|

树莓派Scratch入门教程——最简单的方式制作智能小车GPIO篇

硬件

树莓派Scratch入门教程——最简单的方式制作智能小车GPIO篇

树莓派3代B型主板

树莓派Scratch入门教程——最简单的方式制作智能小车GPIO篇

树莓派Scratch入门教程——最简单的方式制作智能小车GPIO篇

Scratch编程小车红外追踪

树莓派Scratch入门教程——最简单的方式制作智能小车GPIO篇

整体供电使用两节3.7V的18650锂电池。树莓派需要5V供电,所以需要使用一个转5V的降压模块Lm2596模块。组装跟之前C语言控制小车一样。

树莓派Scratch入门教程——最简单的方式制作智能小车GPIO篇

现在我们来学习树莓派小车用Scratch编程。

首先打开所有程序—>编程——Scratch>

树莓派Scratch入门教程——最简单的方式制作智能小车GPIO篇

打开软件可以讲语言设置为中文

树莓派Scratch入门教程——最简单的方式制作智能小车GPIO篇

我们通过Scratch软件去控制小车,这就意味着我们的主要工作是用此软件去控制树莓派GPIO,以及利用它去通过GPIO接收传感器发来的讯号并对信号进行处理。

打开软件的第一步:设置StartGPIOServer树莓派Scratch入门教程——最简单的方式制作智能小车GPIO篇

一切准备工作就绪,接下来。我们开始吧树莓派Scratch入门教程——最简单的方式制作智能小车GPIO篇

当旗标被点击时,gpioserveron即打开GPIOSERVER,然后设置引脚18 23 24 25(BCM编码方式,对应wpi编码方式的GPIO1、4、5、6)为out输出模式。设置引脚12 16(BCM编码方式,对应wpi编码方式的GPIO26 27)为in输入模式,输入模式下可以接收传感器发送过来的高低电平讯号。首先看一下怎么通过两个红外传感器或者光敏电阻传感器进行物体跟踪或者光源追踪。树莓派Scratch入门教程——最简单的方式制作智能小车GPIO篇

我们已经设置了12 16引脚为输入模式,设定左侧的传感器接12引脚,右侧的传感器接16引脚。那么我们添加判断语句,当两侧的红外传感器都有障碍物在前方时直行,左侧有障碍物时则左转,右侧有障碍物时则右转,无障碍时则保持静止。若12 16引脚接的是关敏电阻传感器则寻光走。同样的道理黑线循迹也可以实现。

接下来,如何使用按钮控制小车前进后退左右。树莓派Scratch入门教程——最简单的方式制作智能小车GPIO篇

如果这样设置,那么当我按下W键时小车一直向前不会停止。这样未免有点不好操作。所以我把运行步骤改了一下:树莓派Scratch入门教程——最简单的方式制作智能小车GPIO篇

向前0.001秒后停止,这样的话只要一直按住w则小车前进,松开后即停止。同理后退左右也是。大家可以根据自己的需要自己编写脚本。或者先运行我写好的一个小脚本。

稍后评论区放脚本文件

原文始发于:树莓派Scratch入门教程——最简单的方式制作智能小车GPIO篇

|

动手学arduino智能车(4)红外避障小车

有一些基本物理知识的童鞋都知到,除了用超声波,还能用光线探测物体的距。

常用的采用光探测物体的模块有红外测距与激光测距,红外测距模块价格低廉,科技小制作中被广泛使用。

动手学arduino智能车(4)红外避障小车

从小车底盘上可以发现,小车前部左右两侧各有一个红外避障探头(集成在底盘电路板上),用于探测左前或右前方在一定范围内是否有障碍物。

红外避障探头具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号),可通过红外避障可调电阻调节检测距离,有效距离范围 2~30cm。

动手学arduino智能车(4)红外避障小车

接线:

arduino A4 A5端口接底盘P4的OUT3 OUT4两个引脚,把arduino 5V与GND与底盘上的vcc GND相连。

动手学arduino智能车(4)红外避障小车

测试探头:
将避障模块的红外探头对准墙壁或其他障碍物,距离为3 – 30cm厘米以内,此时指示灯亮,输出低电平。
通过读取arduino A4 A5电平状态,判断哪个方向有障碍物,以此改变小车的运行方向。
算法如下:

两个红外探头模块检测到物体(都是低电平)————停车

只有左探头模块检测到物体——右转

只有右探头模块检测到物体——左转

两个红外探头模块都没检测到物体(都是高电平)——前进

主程序代码如下:

动手学arduino智能车(4)红外避障小车

在“ 动手学arduino(3)两款智能灯”中有介绍分支结构,引用如下:

程序的分支结构:

分支结构就是做选择。例如:如果天气好,那么我就出门和朋友一起玩;如果下雨,那么我就在家里写作业。

下面两个命令都是分支命令。

动手学arduino智能车(4)红外避障小车

分支命令要与关系运算和逻辑运算配合使用:关系运算就是比较两个量的关系,有大于,小于,等于

逻辑运算是“与”“或”“非”的运算。

动手学arduino智能车(4)红外避障小车

主程序中的代码:

动手学arduino智能车(4)红外避障小车

表示:A4 A5都是高电平(两个红外探头没有探测到障碍物),

结果应该是执行:小车前进。

另一句代码:

动手学arduino智能车(4)红外避障小车

表示:A4是高电平(为1),并且A5低电平(A5低电平为0,取“非”后为1)

则执行右转向。

复合分支结果逻辑分析难度大,有编程基础的学生容易理解。

上传代码到小车,观察小车运行情况,不断调整代码,让小车正常运行。


动手学arduino智能车(5)pwm调速

曾经有写一篇文章,介绍pwm技术。

PWM(脉冲宽度调制)是利微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术

简单说来,arduino各引脚通常只有0(0伏)和1(5伏)两个状态,要让引脚输出0.4(2伏),怎么办?pwm就有办到。

在arduino中,常用PWM来调整LED的暗亮,电机的转速等。

首先在tinkercad的circuits中进行仿真:

在仿真电路中,在10脚接一个LED电路,并联一个电压表,给一段让10脚电压从0-5V来回变化(LED呼吸灯)效果的代码。

代码:

动手学arduino智能车(5)pwm调速

仿真效果:

仿真截图一:

动手学arduino智能车(5)pwm调速

仿真截图二:

动手学arduino智能车(5)pwm调速

用pwm控制小车电机转速:

arduino板上画有“~”的引脚中的两个引脚相连。Arduino UNO 控制器的数字引脚中,3,5,6,9,10,11六个可以输出PWM信号。动手学arduino智能车(5)pwm调速
小车电机驱动模块四个引脚接口(p7的IN1 IN2 IN3 IN4)与arduino的5 6 9 10四个端口相连,这四个端口都是可能输出pwm信号的。

使用设置pwm命令给arduino相应的引脚输出pwm信号。

动手学arduino智能车(5)pwm调速

 

修改forward turnleft turnright stop四个自定义函数,如图:

动手学arduino智能车(5)pwm调速

(turnright stop函数略)

主函数不变(红外避障):

动手学arduino智能车(5)pwm调速


动手学arduino智能小车(6)循迹小车

自动循迹小车是比较热门地电子竞赛,它是自动引导机器人系统的基本应用。
寻迹采用的主要原理就是红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的特点
Arduino智能循线车就是以是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。
 

小车底盘前部有一对红外循迹探头(集成在底盘电路板上)。

动手学arduino智能小车(6)循迹小车

红外循迹探头与红外避障探头一样,也是一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测白色时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号),调节循迹探头可调电阻可调节灵敏度。

跑道可用宽2.5黑电工胶带粘在白色物体(纸板 地板 KT板)上

动手学arduino智能小车(6)循迹小车

接线:

arduino A2 A3端口接底盘P4的OUT1 OUT2两个引脚

看模块是否正常工作:

小车通电,模块上的电流指示灯亮。把寻迹模块放在白色纸上,模块上的的开关指导灯也亮。把模块放在黑线上,模块上的的开关指导灯熄灭。

循迹原理:

两个循迹模块检测到白纸(都是低电平)————前进

左循迹模块检测到白纸,右边检测到黑线——右转

左循迹模块检测到黑线,右边检测到白纸——左转

两个循迹模块检测到黑线(都是高电平)——停车

编写主函数(把下面引脚6与引脚7改成引脚A2和引脚A3):

动手学arduino智能小车(6)循迹小车


动手学arduino智能车(7)蓝牙遥控小车

动手学arduino智能车(7)蓝牙遥控小车

无线蓝牙串口透传模块无线通讯HC-06从机蓝牙

动手学arduino智能车(7)蓝牙遥控小车

接线:

一、蓝牙模块插在面包板上,再用杜邦线与arduino的连接:

TX:接Arduino UNO开发板”RX”引脚 
RX:接Arduino UNO开发板”TX”引脚 
GND:接Arduino UNO开发板”GND”引脚 
VCC:接Arduino UNO开发板”5V”或”3.3V”引脚 


二、手机上下载安装手机蓝牙助手

想实现手机蓝牙遥控小车,手机APP是必不可少的,网上有很多蓝牙串口助手,推荐大家用这款手机蓝牙助手(蓝牙串口助手)

动手学arduino智能车(7)蓝牙遥控小车

 

进入主界面,左上角会提示”蓝牙未连接”,这个时候先对蓝牙助手的界面进行自定义设置。选择“模式切换”。 

动手学arduino智能车(7)蓝牙遥控小车

然后选择“地面站设置”进入自定义界面,往下拖动,找到“自定义按键[x]”,在此我们对按键[1][2][3][4][6]进行自定义设置。

动手学arduino智能车(7)蓝牙遥控小车

对应按键之后,蓝牙串口助手自动通过蓝牙发送的数据,Arduino在接收到蓝牙模块的数据后对小车的状态进行控制。

 

接下来我们将连接蓝牙,点击“连接” 

动手学arduino智能车(7)蓝牙遥控小车

一般没有连接过蓝牙模块的时候“已配对的设备”下面没有可选择的设备名称,因此我们要点击“扫描新设备”来检测我们的蓝牙模块,扫描成功后蓝牙模块的名称将显示在“已配对的设备”一栏中 

动手学arduino智能车(7)蓝牙遥控小车

  点击我们的蓝牙模块的名称,输入密码进行配对。配对成功后在蓝牙串口助手的左上角会显示“蓝牙已连接”字样,恭喜你,这时候你已经连接成功。

 

小知识:蓝牙模块上电(只简单连接”VCC”和”GND”引脚)之后,其他蓝牙设备即可与其连接,一般蓝牙模块默认初始连接密码为”0000”或”1234”。蓝牙模块上电后LED指示灯不断闪亮,当有设备连接预期连接之后会隔一段闪两下,蓝牙串口助手也会有相应已连接的提示。

 

代码(抄此前文章的代码,各引脚接线要与代码相对应,所以代码引脚2、3、4、5分别要改成5、6、9、10,Nanon改成uno):

将代码上传到arduino上。

动手学arduino智能车(7)蓝牙遥控小车

动手学arduino智能车(7)蓝牙遥控小车

动手学arduino智能车(7)蓝牙遥控小车


动手学arduino智能车(1)一些准备

通过15篇的文章,如果逐个实验都动手练习,恭喜你,你已经可以学习更高级的arduino课程了。

从本文开始,我陆续介绍如果用mind+编程,做一款智能arduino小车。

关于小车实体:

此前,我有介绍一款arduino智能小车。小车所有部件从淘宝上购得,一部小车成本价约80元。可谓相应的便宜。若你是一个动手能力不太强的初学者,在制作过程中发现,把所有部件装配在一起是一件非常棘手的事情,各部件之间的物理连接也非常麻烦。

解决方案:

淘宝上有一款智能小车,这种小车各部件集成在底盘上,只要把arduino安装在小车上就可以,大大简化了装配过程,使用者可以专注于程序的设计。强烈推荐此款小车。

https://item.taobao.com/item.htm?spm=a1z0d.6639537.1997196601.26.4c917484ErM4Tu&

id=43671770126

动手学arduino智能车(1)一些准备

动手学arduino智能车(1)一些准备

小车还配了实验套件,可进行arduino扩展实验,初高中学生适用。

动手学arduino智能车(1)一些准备

动手学arduino智能车(1)一些准备

编程软件:

为了与tinkercad仿真平台相衔接,小车的编程软件仍采用图形化。满足此条件的软件有多种方案,本文中采用mind+

Mind+是一款基于Scratch3.0开发的青少年编程软件,支持arduino、micro:bit等各种开源硬件,只需要拖动图形化程序块即可完成编程,还可以使用python/c/c++等高级编程语言,让大家轻松体验创造的乐趣。

1.安装mindPlus:进入http://mindplus.dfrobot.com.cn/

下载安装mind+

动手学arduino智能车(1)一些准备

 

2. 把arduino UNO用usb线与电脑连接,运行mind+

3. 选择设备arduino UNO

4. Mind+窗口的上方第一行选择连接设备,软件会自动烧写固件。选择实时模式。

 

动手学arduino智能车(1)一些准备

5. 在第二行选择‘模块’。这是纯scratch模式。(scatch是小学信息课学习内容)

动手学arduino智能车(1)一些准备

 

6. 左边工具栏内最后一个是arduino Uno工具,对arduino各引脚进行控制和读取引脚信息。

动手学arduino智能车(1)一些准备

mind+与tinkercad的circuits的使用方法几乎一样。

以光控路灯为例,代码如下:

动手学arduino智能车(1)一些准备

如果你一切准备就绪,下一次就开始“闭门造车”了。

动手学arduino智能车(2)测试小车

把小车按商家提供的说明书安装好。

小车底盘

动手学arduino智能车(2)测试小车

前视图

动手学arduino智能车(2)测试小车

小车全身肖像

测试小车:
将底盘上电机驱动模块四个引脚接口(p7的IN1 IN2 IN3 IN4)与arduino的5 6 9 10四个端口相连。动手学arduino智能车(2)测试小车
 

动手学arduino智能车(2)测试小车

动手学arduino智能车(2)测试小车

把小车与电脑相连,打开小车电源,在mind+上选择arduino Uno,点击“连接设备”。
选择“实时模式”

动手学arduino智能车(2)测试小车

 在mind+上编写下面代码,运行代码,观察小车轮子转动情况。

动手学arduino智能车(2)测试小车

果小车两个轮子转动,说明小车工作正常。

再观察轮子转动的方向,通过调换P7 IN1、IN2或IN3、IN4两组引线,可以变换轮子的转向。

试一试:写一段代码,让小车走“之”字形路线。