转载请注明文章来源,更多教程可自助参考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)

import socket                 #导入socket通信库
import machine
from machine import Pin g4 = Pin(4,Pin.OUT)
g5 = Pin(5,Pin.OUT)
g12 = Pin(12,Pin.OUT)
g13 = Pin(13,Pin.OUT) def Go():
g4.value(1)
g5.value(0)
g12.value(1)
g13.value(0)
def Back():
g4.value(0)
g5.value(1)
g12.value(0)
g13.value(1) def Left():
g4.value(1)
g5.value(0)
g12.value(0)
g13.value(0)
def Right():
g4.value(0)
g5.value(0)
g12.value(1)
g13.value(0)
def Stop():
g4.value(0)
g5.value(0)
g12.value(0)
g13.value(0)
#-----------------------HTTP Server-----------------------#
#ap模式下,默认ip地址为192.168.4.1
addr = ('192.168.4.1',80) #定义socket绑定的地址,ip地址为本地,端口为80
s = socket.socket() #创建一个socket对象
s.bind(addr) #绑定地址
s.listen(5) #设置允许连接的客户端数量
print('listening on:', addr)
while True:
cl, addr = s.accept() #接受客户端的连接请求,cl为此链接创建的一个新的scoket对象,addr客户端地址
print('client connected from:', addr)
cl_file = cl.makefile('rwb', 0) #返回与socket对象关联的文件对象。rwb:支持二进制模式的读写操作 0:默认值,不支持缓存
req = b''
while True:
line = cl_file.readline() #读取发送过来的数据,直到\r\n换行结束
if not line or line == b'\r\n':
break
req += line
print("Request:")
req=req.decode('utf-8').split('\r\n')
#http header 解析
req_data=req[0].lstrip().rstrip().replace(' ','').lower()
print(req_data)
if req_data.find('favicon.ico')>-1:
cl.close()
continue
else:
req_data=req_data.replace('get/?','').replace('http/1.1','')
index = req_data.find('key=')
value = req_data[index+4:index+6].lstrip().rstrip()
print('key:',value)
if value == 'go':
Go()
elif value == 'ba':
Back()
elif value == 'le':
Left()
elif value == 'ri':
Right()
else:
Stop()
with open("control.html", 'r') as f:
for line in f:
cl.send(line)
#cl.send(response) #返回html网页的数据
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>`_

[Micropython]TPYBoard v202 智能WIFI远控小车的更多相关文章

  1. [Micropython]TPYBoard v202 利用单片机快速实现家庭智能控制平台

    一提到智能家庭,大家可能首先想到的是各种大佬级公司搞的牛逼产品,或者说是创新产品.想想就觉得很复杂,有的用工控机,有的用树莓派,还有的用arduino,不管用什么,都绕不过服务器进行控制,比如yeel ...

  2. [Micropython]TPYBoard v202 v102+v202 家庭无线温湿度检测

     一.实验器件 1.TPYBoard v102 1块 2.TPYBoard v202 1块 3.Nokia 5110LCD显示屏 1块 4.DHT11温湿度传感器 1个 5.micro USB 数据线 ...

  3. micropython TPYBoard v202 超声波测距

    实验目的 了解超声波模块的工作原理 学习使用超声波模块测量距离 实验器材 TPYBoard v202 1块 超声波模块(HC-SR04)1个 micro USB数据线 1条 杜邦线 若干 超声波模块的 ...

  4. 小试牛刀 WiFi 远控 + wendu

    废话 少说 直接上代码 DH11三根线  信号线 接2 WiFi 模块  r-------t t--------r en&vcc------3.3v 剩下的 共地的啦 double Fahre ...

  5. 邪恶改装:TPYBoard制作廉价WIFI干扰器

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 0X01 引言 想不想搞个WIFI干扰器?网上搜集了一下资料,发现用esp8266可以实现简单的干扰功能,包括断网. ...

  6. Python3实现ICMP远控后门(上)

    这几天一直在研究远控木马的一些通信协议,比如TCP,UDP,ICMP,DNS,HTTP等等,对于TCP,UDP这两种就不讲解了,因为太常见了. 大家可能对采用ICMP,DNS的木马不是很熟悉,其实这两 ...

  7. Python3实现ICMP远控后门(上)_补充篇

    ICMP后门(上)补充篇 前言 在上一篇文章Python3实现ICMP远控后门(上)中,我简要讲解了ICMP协议,以及实现了一个简单的ping功能,在文章发表之后,后台很多朋友留言,说对校验和的计算不 ...

  8. Python3实现ICMP远控后门(中)之“嗅探”黑科技

    ICMP后门 前言 第一篇:Python3实现ICMP远控后门(上) 第二篇:Python3实现ICMP远控后门(上)_补充篇 在上两篇文章中,详细讲解了ICMP协议,同时实现了一个具备完整功能的pi ...

  9. Python3实现ICMP远控后门(下)之“Boss”出场

    ICMP后门 前言 第一篇:Python3实现ICMP远控后门(上) 第二篇:Python3实现ICMP远控后门(上)_补充篇 第三篇:Python3实现ICMP远控后门(中)之"嗅探&qu ...

随机推荐

  1. tp5 字段验证表中是否唯一

    namespace app\ps\validate; /** * 客户分类验证器 */ class CustomerCategory extends PsBase { // 验证规则 protecte ...

  2. hadoop 端口总结

    localhost:50030/jobtracker.jsp localhost:50060/tasktracker.jsp localhost:50070/dfshealth.jsp 1. Name ...

  3. 通过页码直接跳转 html

    <?php namespace Admin\TagLib; class BootstrapPage{ public $firstRow; // 起始行数 public $listRows; // ...

  4. Django入门5--URL传递参数

  5. Git 取消跟踪已版本控制的文件(亲测可行)

    git 不再追踪文件改动 git update-index --assume-unchanged filePath git 恢复追踪文件改动 git update-index —no-assume-u ...

  6. UVA 1347"Tour"(经典DP)

    传送门 参考资料: [1]:紫书 题意: 欧几里得距离???? 题解: AC代码: #include<bits/stdc++.h> using namespace std; ; int n ...

  7. linux进程睡眠的介绍

    对于一个进程"睡眠"意味着什么? 当一个进程被置为睡眠, 它被标识为处于一个特殊的状 态并且从调度器的运行队列中去除. 直到发生某些事情改变了那个状态, 这个进程将不被 在任何 C ...

  8. ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(4)之业务仓储工厂

    在创建业务层之前,我们先来熟悉一下业务仓储工厂Bobo.Repository.dll程序集,后续的业务操作,我们都将通过这个程序集中的方法传递数据库操作,其介于数据库操作与业务层之间,详情可前往< ...

  9. Vue-route页面切换过渡动画

    重点:   1.判断路由前进还是后退 2.切换时动画如何实现 1.需要给各个页面定义层级,切换路由时判断进入哪个层级页面,如果进入层级高页面做前进动画,否则做后退动画在路由定义中添加meta自定义参数 ...

  10. Android7_安卓的知识体系梳理

    最近梳理了一下安卓的知识体系,先构建一个整体性的认知,也作为以后的学习路线的依据. [一.从原理角度出发]1.Activity生命周期和启动模式2.View的事件体系与工作原理3.四大组件的工作过程4 ...