智能垃圾桶V2版

制作难度:三星

编程体验:Python

制作耗时:约1个半小时


立马感受


材料与工具

以下为所需材料,手工制作时间大概1个半小时。

材料数量说明 
小龟小车  1辆 
9g舵机 
2个
用于开闭垃圾桶
 面包板1块
 用于识别球进框
超声波模块  
1个
用于扩展接口
M3螺母4个
M3铜柱
16个
 用于垫高纸板篮筐,
也可以用纸板代替
杜邦线10根用于延长传感器
方便安装到正确的位置
硬纸板1张可以用快递盒、包装盒代替
 胶枪/双面胶1个用于固定纸板和传感器 

制作过程

我们先来欣赏一下小车的成品照片,方便小伙伴对小车有个整体印象,然后再开始制作。


第一步:准备一张硬纸板,参考下图剪出一个硬纸盒


第二步:在纸盒上安装舵机和超声波模块

将超声波模块安装到1号面,固定(记下超声波四个管脚位置)


舵机1安装到3号面,调试舵机,按图中摆臂为90°放置,摆臂和6号面使用电线粘牢


1号面从超声波下方裁开


舵机2如安装到5号面


在盒体内按图中模式装一斜纸板


把两个舵机摆臂上粘牢一段电线,调整合适长度分别和面1、面6相连,把超声波和两个舵机连线从盒底引出



第三步:在小龟小车上安装铜柱和垃圾桶

安装高度需要超过家中使用垃圾桶


第四步:连接电路线、适当打扮一下小车

舵机1连线:红线-3V3  棕线-GND  橙线-D2

舵机2连线:红线-3V3  棕线-GND  橙线-SCL

超声波连线:VCC-3V3  GND-GND  Trig-A2  Echo-A1


5、写代码

可以有两个工作模式

模式1,帮助自己丢垃圾。将智能垃圾桶开到自己身边,操控开盖丢入垃圾,再操控智能垃圾桶将垃圾倒入家中垃圾桶。此模式需要分别写一个开盖丢垃圾代码和倒垃圾代码保存,在操控台自定义快捷键。供参考:


控制舵机2倒出垃圾(舵机角度可根据实际调试)

car.servo(SCL,150)
sleep(2) car.servo(SCL,0)

控制舵机1打开垃圾桶盖(舵机角度可根据实际调试)

car.servo(D2,120)
sleep(2)
car.servo(D2,25)

模式2,垃圾桶自动巡逻收集垃圾,遇到固定垃圾桶时将垃圾倒入固定垃圾桶

car.speed(10)    #调整小车速度
def get_dis():
    """超声波测距函数,并过滤一些异常噪音 """
    for _ in range(20):
        sleep(0.01)
        d1 = car.hcsr04(A2, A1)
        d2 = car.hcsr04(A2, A1)
        avg = (d1 + d2) / 2
        #过滤零结果和变化过大的毛刺噪音
        if avg==0: continue
        if (d1 < avg * 0.6) or (d1 > avg * 1.4): continue
        if (d2 < avg * 0.6) or (d2 > avg * 1.4): continue
        return avg
        
    return avg

while True:
    sleep(0.01)
    distance = get_dis()
    if distance > 10:
      car.go()
    elif distance < 10:
      car.servo(D2,120)
      sleep(2)
      car.hello()
      car.servo(D2,25)
      sleep(0.1)