[经验] (一天速成)APP控制树莓派的室内机器人

12 小时前  155 树莓派 机器人
分享
0
本人在校生兼职攻城狮,这段时间疫情在家真是憋到慌。每天也就刷刷网课,完成一下作业,再东搞搞西搞搞,没找到那种实验室日夜兼程的感觉,浑身不自在。
所以给自己整点事情玩玩,正巧以前申请的大创项目要结项了,所以买点材料来搞搞,顺便消遣一下时间,顺便检验一下自己“调库”的能力有没有退化了。
历时:一个晚上+一个早上
材料:某宝购买的树莓派+亚克力地盘+电源舵机控制板+摄像头+超声波+DHT11
目标:制作APP端可以控制树莓派小车运动和摄像头的运动,显示视频和温湿度超声波测的数据
最终效果视频:
树莓派的室内机器人.zip (6.13 MB, 下载次数: 3)

record如下:

1.收到零件后已经是下午了,吃个晚饭,然后开始琢磨一下这个车。买来都是散件花了一个多小时才装出来个样子。(已经是老司机了,轻车熟路嘿嘿嘿)



2.刷树莓派系统:还是老配方啦

首先安装官方纯净版系统

然后配置摄像头能用

然后安装mpeg_stream+局域网优化

安装一下这个机器人常用的python库,这里主要用到Adafruit_PWM_Servo_Driver库,RPi.GPIO,Adafruit_DHT

上面步骤自行百度安装教程啦,都是老生常谈了。

(额,,,照片歪了,算了不调了麻烦)


3.装完刚刚那些配置环境后,运行MPEG_stream一下摄像头能用不。

主要 humidity is not None and temperature is not None:

  •     print 'Temp={0:0.1f}*C  Humidity={1:0.1f}%'.format(temperature, humidity)
  •   time.sleep(0.5)
  • GPIO.cleanup()
  • '''
  • print("Starting socket: TCP...")
  • #1.create socket object:socket=socket.socket(family,type)
  • socket_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  • print("TCP server listen @ %s:%d!" %(HOST_IP, HOST_PORT) )
  • host_addr = (HOST_IP, HOST_PORT)
  • #2.bind socket to addr:socket.bind(address)
  • socket_tcp.bind(host_addr)
  • #3.listen connection request:socket.listen(backlog)
  • socket_tcp.listen(1)
  • #4.waite for client:connection,address=socket.accept()
  • socket_con, (client_ip, client_port) = socket_tcp.accept()
  • print("Connection accepted from %s." %client_ip)
  • socket_con.send("Welcome to RPi TCP server!")

  • print("Receiving package...")
  • ###主循环
  • while True:
  •    
  •     try:
  •         data=socket_con.recv(512)      
  •         if(data == b'g'):
  •             dis_f = distance()
  •             humidity, temperature = Adafruit_DHT.read_retry(sensor, gpio)
  •             socket_con.send('Dis={0:0.01f}cm Temp={1:0.1f}*C  Humidity={2:0.1f}%'.format(dis_f,temperature, humidity))         
  •         elif(data == b'w'):
  •             t_up(15,1)
  •         elif(data == b's'):
  •             t_stop(3)
  •         elif(data == b'x'):
  •             t_down(15,1)
  •         elif(data == b'a'):
  •             t_left(30,1)
  •         elif(data == b'd'):
  •             t_right(30,1)
  •         elif(data == b'y'):
  •             if s1 <180:
  •                 s1 = s1 + 10
  •             write(1, s1)
  •         elif(data == b'h'):
  •             if s1>0:
  •                 s1 = s1 - 10
  •             write(1, s1)   
  •         elif(data == b'u'):
  •             if ss1 <180:
  •                 ss1 = ss1 + 10
  •             write(1, ss1)
  •         elif(data == b'j'):
  •             if ss1>0 :
  •                 ss1 = ss1 - 10
  •             write(1, ss1)     
  •     except Exception:
  •             socket_tcp.close()
  •             sys.exit(1)
  • 复制代码

    然后在电脑端用网络调试助手发送指令控制小车。

    嘿嘿这里的指令主要有

    指令功能
    w前进
    s停车
    x后退
    a左转
    d右转
    y摄像头的舵机向上移动
    h摄像头的舵机向下移动
    u摄像头的舵机向下移动
    j摄像头的舵机向上移动
    g更新距离和温湿度数据
    然后测试一下


    5.接下来是编写APP程序来代替电脑网络调试助手

    APP是基于易安卓开发的,也是顺风顺水,几十分钟内搞定。
    文末我会附上这个APP,不喜欢捣鼓的可以直接用,嘿嘿嘿。

    6.尾声:历时一个晚上加一个上午终于捣鼓好了。来跑一下

    回顾一下我们的功能:制作APP端可以控制树莓派小车运动和摄像头的运动,显示视频监控和温湿度超声波测的数据。
    ok收稿,好久没有这么整过了。
    附件:功能视频+APP

    距离温湿度信息显示.png (104.33 KB, 下载次数: 0)

    距离温湿度信息显示.png

    评分

    参与人数 1积分 +10 收起 理由
    elecfans短短 + 10 您的帖子很精彩,期待您分享的下一个帖子!

    查看全部评分

    相关经验

    QQSD 12 小时前
    文末提到的APP附件在文前面的展示视频那里里面,太久没发贴了操作失误
    回复

    举报

    elecfans短短 11 小时前
    很不错的分享哦
    回复

    举报

    评论

    高级模式
    您需要登录后才可以回帖 登录 | 注册

    声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
    发经验
    关闭

    站长推荐 上一条 /7 下一条

    快速回复 返回顶部 返回列表