玩转树莓派:树莓派智能小车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全过程手机控制循迹避障(包含源码)

|

发表评论