之前有过用TPYBoard v102制作的各种各样功能的智能小车,比如自动寻迹、自动避障、手机蓝牙遥控等。想着还缺个WIFI控制的,那就用TPYBoard v202做一个吧。

转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇

之前有过用TPYBoard v102制作的各种各样功能的智能小车,比如自动寻迹、自动避障、手机蓝牙遥控等。想着还缺个WIFI控制的,那就用TPYBoard v202做一个吧。

WIFI是目前最有广泛运用的一项无线网络传输技术,覆盖范围广,可远程。本次实现了远程WIFI控制,不仅可以在家里操作,还可以接入一些云平台,实现远程操控。具体思路如下:

1、TPYBoard v202作为整个小车的核心控制部分,连接L298N电机驱动模块,实现小车的基本方向控制;

2、TPYBoard v202接入网络,开启Socket服务实现web服务器功能;

3、手机接入同一局域网,可通过浏览器访问控制页面,进行小车控制。

– TPYBoard v202开发板 1块
– USB数据线(MicroUSB) 1条
– L298N电机驱动模块 1个
– 小车套件包(底板、电机等) 1个
– 18650电池 2节
– 18650电池盒 1个

TPYBoard v202 源代码(main.py)

  1. import socket #导入socket通信库
  2. import machine
  3. from machine import Pin
  4. g4 = Pin(4,Pin.OUT)
  5. g5 = Pin(5,Pin.OUT)
  6. g12 = Pin(12,Pin.OUT)
  7. g13 = Pin(13,Pin.OUT)
  8. def Go():
  9. g4.value(1)
  10. g5.value(0)
  11. g12.value(1)
  12. g13.value(0)
  13. def Back():
  14. g4.value(0)
  15. g5.value(1)
  16. g12.value(0)
  17. g13.value(1)
  18. def Left():
  19. g4.value(1)
  20. g5.value(0)
  21. g12.value(0)
  22. g13.value(0)
  23. def Right():
  24. g4.value(0)
  25. g5.value(0)
  26. g12.value(1)
  27. g13.value(0)
  28. def Stop():
  29. g4.value(0)
  30. g5.value(0)
  31. g12.value(0)
  32. g13.value(0)
  33. #-----------------------HTTP Server-----------------------#
  34. #ap模式下,默认ip地址为192.168.4.1
  35. addr = (\'192.168.4.1\',80) #定义socket绑定的地址,ip地址为本地,端口为80
  36. s = socket.socket() #创建一个socket对象
  37. s.bind(addr) #绑定地址
  38. s.listen(5) #设置允许连接的客户端数量
  39. print(\'listening on:\', addr)
  40. while True:
  41. cl, addr = s.accept() #接受客户端的连接请求,cl为此链接创建的一个新的scoket对象,addr客户端地址
  42. print(\'client connected from:\', addr)
  43. cl_file = cl.makefile(\'rwb\', 0) #返回与socket对象关联的文件对象。rwb:支持二进制模式的读写操作 0:默认值,不支持缓存
  44. req = b\'\'
  45. while True:
  46. line = cl_file.readline() #读取发送过来的数据,直到\r\n换行结束
  47. if not line or line == b\'\r\n\':
  48. break
  49. req += line
  50. print("Request:")
  51. req=req.decode(\'utf-8\').split(\'\r\n\')
  52. #http header 解析
  53. req_data=req[0].lstrip().rstrip().replace(\' \',\'\').lower()
  54. print(req_data)
  55. if req_data.find(\'favicon.ico\')>-1:
  56. cl.close()
  57. continue
  58. else:
  59. req_data=req_data.replace(\'get/?\',\'\').replace(\'http/1.1\',\'\')
  60. index = req_data.find(\'key=\')
  61. value = req_data[index+4:index+6].lstrip().rstrip()
  62. print(\'key:\',value)
  63. if value == \'go\':
  64. Go()
  65. elif value == \'ba\':
  66. Back()
  67. elif value == \'le\':
  68. Left()
  69. elif value == \'ri\':
  70. Right()
  71. else:
  72. Stop()
  73. with open("control.html", \'r\') as f:
  74. for line in f:
  75. cl.send(line)
  76. #cl.send(response) #返回html网页的数据
  77. cl.close() #关闭socket

 

 

 

`点击观看视频 <http://mpvideo.qpic.cn/0bf2hqaaeaaaveaa3ui5h5pfapgdai6aaaqa.f10002.mp4?dis_k=75bc9f531e0fe018cfc344a63c5fdc1d&dis_t=1579070805>`_

`下载源码 <https://github.com/TPYBoard/TPYBoard-v202/tree/master/12.%E6%99%BA%E8%83%BDWIFI%E8%BF%9C%E6%8E%A7%E5%B0%8F%E8%BD%A6>`_

版权声明:本文为xiaowuyi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xiaowuyi/p/12196867.html