制作树莓派wifi遥控和自动避障小车

写在前面


前几年买了树莓派,当时主要是想用来做客厅多媒体盒,不过实际使用下来有点卡,速度不尽人意。虽然后来换了class10的SD卡速度有点提升,但也很少拿去看电影了,多数时间是用来做下载机。

其实之前也有听说可以做很多有趣的东西,我最感兴趣就是做个遥控小车,一直有这个想法,就是没有实际行动。最近在网上又看到类似的遥控车,突然间又来了兴致,这次决心很大,立即就找了下资料,并且在淘宝上买了配件。趁着周末有时间,花了半天时间组装好了,又花了半天改了程序支持自动避障,还做了个iPad/iPhone的手机端遥控app。自己又是摆道具又是录视频的,忙得不亦乐乎。废话少说,现在进入正题!

视频效果

这是后来做的加了三路寻轨功能的视频,后面文章会继续介绍:

需要的材料

===

  1. 树莓派小车底盘,这个上淘宝一搜一大堆,我买的四驱的,有带亚克力两层车板。
  2. 三种杜邦线,每一种买十条就可以了,我当时怕不够用,每一种都买了20条。
  3. 移动电源,这个家里之前有一个飞毛腿的,要买双usb输出的。
  4. 树莓派
  5. L298N电机驱动板模块
  6. 红外避障模块和超声波测距模块,如果想做避障功能就需要买这个传感器,买两个(开始的时候不知道,我只买了一个红外避障模块…)。
  • 7
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
树莓小车的红外遥控和超声波可以通过编写代码来实现。下面是一个简单的示例代码,可以通过红外遥控控制小车的前进、后退、左转和右转,并使用超声波传感器碍物。 ```python import RPi.GPIO as GPIO import time # 设置红外遥控引脚 ir_pin = 18 # 设置超声波引脚 trig_pin = 16 echo_pin = 12 # 设置小车电机引脚 motor_left_pin1 = 7 motor_left_pin2 = 11 motor_right_pin1 = 13 motor_right_pin2 = 15 # 初始化GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(ir_pin, GPIO.IN) GPIO.setup(trig_pin, GPIO.OUT) GPIO.setup(echo_pin, GPIO.IN) GPIO.setup(motor_left_pin1, GPIO.OUT) GPIO.setup(motor_left_pin2, GPIO.OUT) GPIO.setup(motor_right_pin1, GPIO.OUT) GPIO.setup(motor_right_pin2, GPIO.OUT) # 定义小车运动函数 def move_forward(): GPIO.output(motor_left_pin1, GPIO.HIGH) GPIO.output(motor_left_pin2, GPIO.LOW) GPIO.output(motor_right_pin1, GPIO.HIGH) GPIO.output(motor_right_pin2, GPIO.LOW) def move_backward(): GPIO.output(motor_left_pin1, GPIO.LOW) GPIO.output(motor_left_pin2, GPIO.HIGH) GPIO.output(motor_right_pin1, GPIO.LOW) GPIO.output(motor_right_pin2, GPIO.HIGH) def move_left(): GPIO.output(motor_left_pin1, GPIO.LOW) GPIO.output(motor_left_pin2, GPIO.HIGH) GPIO.output(motor_right_pin1, GPIO.HIGH) GPIO.output(motor_right_pin2, GPIO.LOW) def move_right(): GPIO.output(motor_left_pin1, GPIO.HIGH) GPIO.output(motor_left_pin2, GPIO.LOW) GPIO.output(motor_right_pin1, GPIO.LOW) GPIO.output(motor_right_pin2, GPIO.HIGH) def stop(): GPIO.output(motor_left_pin1, GPIO.LOW) GPIO.output(motor_left_pin2, GPIO.LOW) GPIO.output(motor_right_pin1, GPIO.LOW) GPIO.output(motor_right_pin2, GPIO.LOW) # 定义超声波函数 def obstacle_avoidance(): GPIO.output(trig_pin, GPIO.HIGH) time.sleep(0.00001) GPIO.output(trig_pin, GPIO.LOW) while GPIO.input(echo_pin) == 0: pulse_start = time.time() while GPIO.input(echo_pin) == 1: pulse_end = time.time() pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 distance = round(distance, 2) if distance < 20: stop() else: move_forward() # 定义红外遥控函数 def ir_control(): ir_value = GPIO.input(ir_pin) if ir_value == 0: move_forward() elif ir_value == 1: move_backward() elif ir_value == 2: move_left() elif ir_value == 3: move_right() else: stop() # 主循环 while True: ir_control() obstacle_avoidance() ``` 以上代码只是一个简单的示例,实际应用中需要根据具体情况进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值