智能垃圾桶V2版
制作难度:三星
编程体验:Python
制作耗时:约1个半小时
立马感受
材料与工具
以下为所需材料,手工制作时间大概1个半小时。
材料 | 数量 | 说明 |
---|---|---|
小龟小车 | 1辆 | |
9g舵机 | 2个 | 用于开闭垃圾桶 |
面包板 | 1块 | 用于识别球进框 |
超声波模块 | 1个 | 用于扩展接口 |
M3螺母 | 4个 | |
M3铜柱 | 16个 | 用于垫高纸板篮筐, 也可以用纸板代替 |
杜邦线 | 10根 | 用于延长传感器 方便安装到正确的位置 |
硬纸板 | 1张 | 可以用快递盒、包装盒代替 |
胶枪/双面胶 | 1个 | 用于固定纸板和传感器 |
制作过程
我们先来欣赏一下小车的成品照片,方便小伙伴对小车有个整体印象,然后再开始制作。
第三步:在小龟小车上安装铜柱和垃圾桶
安装高度需要超过家中使用垃圾桶
第四步:连接电路线、适当打扮一下小车
舵机1连线:红线-3V3 棕线-GND 橙线-D2
可以有两个工作模式
模式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)