esp32小车实验

搭建环境

esp32的环境最后选择了platformio,一是因为他安装方便,最近也修复了网速问题,所以很适合入门,第二个是他真的很方便,不需要配置环境,出的问题也比较少。
环境搭建以及初识esp32
我们所用的开发板跟视频中是一样的,所以视频中的资料都可以用

单片机基础知识

各位带学生在大三时会学到一门叫信号与系统的课,里面都是高数,一定要在大一把高数笔记留好,到时候会用到。信号与系统的世界观认为所有事物都是一个信号系统,那么依照这个观点,单片机也可以认为时一个信号系统。

Created with Raphaël 2.3.0 输入信号 esp32wroom32 输出信号

GPIO端口

信号输入和输出单片机的基本途径,GPIO的G代表general,说明gpio用途广泛,是其他功能实现的基础。

Created with Raphaël 2.3.0 输入信号 gpio_pin esp32wroom32 gpio_pin 输出信号

esp32wroom32引脚图

/*点一盏神灯*/
#include <Arduino.h>
void setup()
{
	/*
	gpio有输入、输出两种模式
	gpio引脚配置函数(引脚编号,输入输出模式);
	*/
  pinMode(LED_BUILTIN, OUTPUT);
}
void loop()
{
	/*led灯的功率很小,单片机可以通过引脚直接驱动,
	板载的蓝色led灯已经在板子上接到了gpio2端口,
	也就是`LED_BUILTIN`*/
  digitalWrite(LED_BUILTIN, HIGH);
}

gpio的配置并不止输入输出那么简单,输入有多种方式,例如模拟输入,数字输入时我们最常用的一种方式,不需要额外配置,模拟输入(adc),输出的模式也很多stm32gpio输入输出详解,我们目前需要掌握的只有数字输入输出,最多是模拟输入输出,其他的是在配置外设时需要工程师了解,我们一版使用现成的配置,把精力留存下来设计控制算法。

PWM

pwm也是一个应用相当广的概念,在调节电机转速时,我们需要控制电压,在电子实验中我们一般通过滑动变阻器来实现,但是单片机的结构不允许出现滑动变阻器这样的东西,所以需要控制一个周期内电压的高电平时间,控制有效电压达到调速目的。

当然,pwm只是gpio输出的一种信号,只不过可以通过功率放大的方法使得其具有驱动别的设备的能力。

  • 呼吸灯实验
    led灯的功率很小,单片机可以通过引脚直接驱动,板载的蓝色led灯已经在板子上接到了gpio2端口,也就是LED_BUILTIN
    观看PWM,结合前面所用的神灯代码,实现一个呼吸灯的效果。

搭建车模

  • 驱动直流电机
    驱动电机需要一个电压,当电机连上的电源电压越高时,转速越快,对于直流电机来说,当电压极性相反,转向也相反,单片机的输出电流较小,无法直接驱动电机,一般需要一个电路把单片机的信号放大,这里的信号就是指的PWM波,PWM通过控制电压高电平的时间控制有效电压,控制转速。
    L298N直流电机驱动模块
    直流电机我们用的是一款小电流的电机,方便搭建车模。
  • 认识第一个传感器
    红外传感器

使用wifi进行调参

  • esp32
    wifi介绍,wifi有AP和STA两种模式,wifi是外设,在这个外设上要运行一个通讯协议,叫做TCP协议,这个协议有两个重要参数,即IP地址和端口号,这次的任务是:
  • 以esp32作为STA连接到路由器,pc连接到路由器,实现两者通讯,让PC通过WiFi控制esp32开发板上的灯灯的亮度。
    代码说明与任务讲解
#include <WiFi.h>

const char *(ssid[]) = {"hudada","esp32test"}; //你的网络名称
const char *(password[]) = {"2001720831gh","5g198J7*"}; //你的网络密码
uint8_t which_wifi=0;
const IPAddress serverIP(192,168,73,75); //欲访问的地址
uint16_t serverPort = 80;         //服务器端口号

WiFiClient client; //声明一个客户端对象,用于与服务器进行连接

void setup()
{
    Serial.begin(115200);
    Serial.println();

    WiFi.mode(WIFI_STA);
    WiFi.setSleep(false); //关闭STA模式下wifi休眠,提高响应速度
    WiFi.begin(ssid[which_wifi], password[which_wifi]);
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(500);
        Serial.print(".");
    }
    Serial.println("Connected");
    Serial.print("IP Address:");
    Serial.println(WiFi.localIP());
}

void loop()
{
    Serial.println("尝试访问服务器");
    if (client.connect(serverIP, serverPort)) //尝试访问目标地址
    {
        Serial.println("访问成功");

        client.print("Hello world!");                    //向服务器发送数据
        while (client.connected() || client.available()) //如果已连接或有收到的未读取的数据
        {
            if (client.available()) //如果有数据可读取
            {
                String line = client.readStringUntil('\n'); //读取数据到换行符
                Serial.print("读取到数据:");
                Serial.println(line);
                client.write(line.c_str()); //将收到的数据回发
            }
        }
        Serial.println("关闭当前连接");
        client.stop(); //关闭客户端
    }
    else
    {
        Serial.println("访问失败");
        client.stop(); //关闭客户端
    }
    delay(5000);
}
from socket import *

# 创建socket
tcp_server_socket = socket(AF_INET, SOCK_STREAM)

# 本地信息
address = ('192.168.2.247', 80)

# 绑定
tcp_server_socket.bind(address)

# 使用socket创建的套接字默认的属性是主动的,使用listen将其变为被动的,这样就可以接收别人的链接了
# listen里的数字表征同一时刻能连接客户端的程度.
tcp_server_socket.listen(1)

# 如果有新的客户端来链接服务器,那么就产生一个新的套接字专门为这个客户端服务
# client_socket用来为这个客户端服务
# tcp_server_socket就可以省下来专门等待其他新客户端的链接
# clientAddr 是元组(ip,端口)
client_socket, clientAddr = tcp_server_socket.accept()

# 接收对方发送过来的数据,和udp不同返回的只有数据
recv_data = client_socket.recv(1024)  # 接收1024个字节
print('接收到的数据为:', recv_data.decode('gbk'))

# 发送一些数据到客户端
client_socket.send("thank you !".encode('gbk')) #

# 关闭为这个客户端服务的套接字,只要关闭了,就意味着为不能再为这个客户端服务了,如果还需要服务,只能再次重新连接
client_socket.close()

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用:使用Micropython和ESP32模块制作小车的步骤如下: 1. 首先,安装esptool工具,通过运行以下命令进行安装:sudo pip install esptool 2. 然后,使用esptool来刷入固件到ESP32模块中。将ESP32模块连接到计算机,并将GPIO0引脚连接到地(0V)。然后按下重置按钮。接下来,在命令行中运行以下命令: esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash esptool.py --chip esp32 --port /dev/ttyUSB0 write_flash -z 0x1000 esp32.bin 这将擦除ESP32的闪存并将固件写入模块中。 3. 现在,可以使用Micropython编写代码来控制ESP32模块。可以使用Python的ampy工具来上传代码到ESP32模块中。首先,安装ampy工具,通过运行以下命令进行安装:sudo pip install adafruit-ampy 4. 然后,将ESP32模块连接到计算机,并使用ampy工具将代码上传到模块中。例如,可以创建一个名为"car.py"的文件,其中包含控制小车的代码。使用以下命令将代码上传到ESP32模块中: ampy --port /dev/ttyUSB0 put car.py 5. 最后,重启ESP32模块,代码将开始运行,控制小车的动作。 请注意,上述步骤中的端口(/dev/ttyUSB0)和文件名(esp32.bin、car.py)可能需要根据实际情况进行调整。此外,还需要安装适当的驱动程序来使ESP32模块与计算机正常通信。<span class="em">1</span> #### 引用[.reference_title] - *1* [esp32cam-micropython:在esp32cam上面使用micropython](https://download.csdn.net/download/weixin_42131798/16174319)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值