回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页
best-icon

ESP32-C3测试 简单

头像 地下铁 2023.06.22 398 21

   前段时间参加了DF举办的ESP32-C3测试活动,拖到今天才交作文,真的感觉很对不起组织的信任和支持。真心觉得这是一个非常成功的活动,特别是要给“Beetle ESP32-C3免费试用活动群”点赞。虽然名字有点土,但是这个群里真的有很多热心大佬,不但懂的多,而且说话还好听。一不小心就有100多条未读信息,全方位无死角,可以说只要进了群,就不允许有一个人掉队。哪怕漏掉一个知识点都是对知识的亵渎。

   言归正传,进入主题。本文主要分享一个小白拿到模块后,在群里各位大大的帮助下,如何实现“Hello world”的过程。

一、初次见面

打开黑色的小盒子,可以看到2块小而美的板子:ESP32-c3 和扩展板,还有2个排针。

1-2.jpg

ESP32-C3 正反面

3-4.jpg

ESP32扩展板 正反面

 

好嘛,既然看到排针就知道来活了,要自己学着把针脚焊上去。其实按其他大大的意思,也可以不焊的,用鳄鱼夹也是可以的。出于学习目的,我还是焊了。至于扩展板也不是必须的,你可以选择将焊上针脚的ESP32插在面包板上,也是挺方便的。因为我申请了两块,出于学习的目的,我还是焊了。不过我申请了2块,所以只焊了1块,扩展板和面包板的连接方式都可以体验一下。

 

二、焊接

    DF的东西一如既往的非常精致,对我这个焊接小白来说,特别怕因技术太菜把东西弄脏弄坏,不过看到群里很多大大都动手了,我皱皱眉头也上了。因为焊上后,板子的引脚标识可能就会被锡盖住,所以我先拍照记录。用夹子夹着这样,比较好上手,但是注意夹子不要夹在板子不受力的地方,例如扩展板接显示屏数据线的塑料接口。

夹住.jpg

1)  排针接ESP32上,不需要用到扩展板,然后可以直接插面包板,再外接其他传感器。

5-6.jpg

2)排母接ESP32上,排针插扩展板上,然后再把两个板子合在一起

7-8.jpg

焊上排母的ESP32 C3

 

9-10.jpg

焊上排针的扩展板

 

接着我们把它们连接在一起,要注意ESP32 c3板子的GND和BAT要和扩展板的GND和BAT对应。

 

11.jpg
12-13.jpg

把排针、排母接在一起就完成了

三、测试

 

前面是热身,现在要给板子上程序。这里有个文档很重要,DF wiki这篇起码要读一遍,这里→https://wiki.dfrobot.com.cn/_SKU_DFR0868_Beetle_ESP32_C3#target_0.

因为我主要是想在C3上运行micropython,所以要给Beetle ESP32-C3烧录固件,这里直接看 《9.1 MicroPython环境搭建》就完事了,我就不当大自然的搬运工了。刷固件前需要将GND和9号脚短接。因为我的板子已经接排母了,所以我找了一条公公线,如果还没有焊接的同学,直接用个导线穿过两个孔也是可以的。

14-16.jpg

运行烧录工具 :flash_download_tool_3.9.3.exe,我刷的是这个esp32c3-usb-20220117-v1.18.bin。这部分操作比较顺利,先擦除(ERASE),然后上载(start) 就可以了。Thonny里面也带了一个“install or update fireware”的功能,出于学习的目的,我也试了,也是可以的。

 

接着打开thonny,在 “运行--选择解释器”,弹出窗口里选择板载解释器,选择端口,看到左侧的文件管理器下方出现板子里的文件结构,右侧出现命令行,说明已经成功了,可以准备上载程序。

thonny.jpg

我们接着来上个点灯的程序。因为范例已经有板载灯的例子,这里我们用外接模块的方式,可以是用面包板或者扩展板来实现。

 

17.jpg

用面包板:用了一颗led灯,长脚接了一个220欧的电阻,然后接到C3的5号脚,短脚连ND

 

18.jpg

用扩展板:把led模块插在扩展板的5号脚

 

代码是一样的,都可以正常闪烁。

代码
import time
from machine import Pin

led = Pin(5,Pin.OUT)

while True:
    led.value(1)
    time.sleep(0.1)
    led.value(0)
    time.sleep(0.1)

接着再来试试其他好玩的。在TFT屏幕上显示一张图片。

 

用扩展板的方式

 

19.jpg20.jpg21.jpg

 

用面包板的方式

22.jpg

下面是代码,记得先要将ST7789.py 和 dfrobot.bmp两个文件上载到板子里。

代码
from ST7789 import TFT,TFTColor
from machine import SoftSPI,Pin
import time
import math

spi = SoftSPI(baudrate=20000000,
        polarity=1,
        phase=0,
        sck=Pin(0),
        mosi=Pin(1),
        miso=Pin(3))

tft=TFT(spi,aDC =6, aCS = 10, aReset = 4) # for skids
tft.initr()
tft.rgb(True)
lcd_w = 240
lcd_h = 240
  
f=open('dfrobot.bmp', 'rb')
if f.read(2) == b'BM':  #header
	dummy = f.read(8) #file size(4), creator bytes(4)
	offset = int.from_bytes(f.read(4), 'little')
	hdrsize = int.from_bytes(f.read(4), 'little')
	width = int.from_bytes(f.read(4), 'little')
	height = int.from_bytes(f.read(4), 'little')
	if int.from_bytes(f.read(2), 'little') == 1: #planes must be 1
		depth = int.from_bytes(f.read(2), 'little')
		if depth == 24 and int.from_bytes(f.read(4), 'little') == 0:#compress method == uncompressed
			print("Image size:", width, "x", height)
			rowsize = (width * 3 + 3) & ~3
			if height < 0:
				height = -height
				flip = False
			else:
				flip = True
			w, h = width, height
			if w > lcd_w: w = lcd_w
			if h > lcd_h: h = lcd_h
			tft._setwindowloc((0,0),(w - 1,h - 1))
			colorData = bytearray(2*240)
			for row in range(h):
				if flip:
					pos = offset + (height - 1 - row) * rowsize
				else:
					pos = offset + row * rowsize
				if f.tell() != pos:
					dummy = f.seek(pos)
				colorDataIndex = 0
				readBgrNum = 6
				for col in range(0,w,6):
					bgr = f.read(18)
					bgrIndex = 0
					for t in range(6):
						color = ((bgr[bgrIndex+2] & 0xF8) << 8) | ((bgr[bgrIndex+1] & 0xFC) << 3) | (bgr[bgrIndex+0] >> 3)
						colorData[colorDataIndex] = color >> 8
						colorData[colorDataIndex+1] = color
						colorDataIndex = colorDataIndex + 2
						bgrIndex = bgrIndex + 3

				tft._writedata(colorData)



      我们再来测试一下mqtt的点灯。这里用行空板作为mqtt服务器,esp32-c3 作为mqtt 客户端连入,在行空板的web管理页面发送一个已定制主题和指令,控制esp32-c3连接的led的亮灭。

硬件链接还是把led接在Esp32扩展板的5号脚。

下面是客户端代码,打开Thonny,上载到ESP32上就可以了,用到的库放在文末附件里,记得也要上载进去。上载后就可以点击运行,连接到siot服务器上。

代码
import time
from machine import Pin  
import network
from umqttsimple import MQTTClient


def do_connect():
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect('wifi账户', 'wifi密码')   # 更换为自己的wifi账号密码
        i = 1
        while not wlan.isconnected():
            print("正在链接...{}".format(i))
            i += 1
            time.sleep(1)
    print('network config:', wlan.ifconfig())


def sub_cb(topic, msg): # 回调函数,收到服务器消息后会调用这个函数
    print(topic, msg)
    # ---- 添加 --------
    if topic.decode("utf-8") == "ledctl" and msg.decode("utf-8") == "on":
        led_pin.value(1)
    elif topic.decode("utf-8") == "ledctl" and msg.decode("utf-8") == "off":
        led_pin.value(0)
    # ---- 添加 --------


# 1. 联网
do_connect()

# 2. 创建mqt
c = MQTTClient("umqtt_client", "192.168.2.34",0,"siot","dfrobot")  # 建立一个MQTT客户端
c.set_callback(sub_cb)  # 设置回调函数
c.connect()  # 建立连接
c.subscribe(b"ledctl")  # 监控ledctl这个通道,接收控制命令

# ---- 添加 --------
# 3. 创建LED对应Pin对象
led_pin = Pin(5, Pin.OUT)   # 如果不是5号脚 记得要换成自己的
# ---- 添加 --------

while True:
    c.check_msg()
    time.sleep(1)

   来看看测试效果,未发送指令前:

23.jpg

      在浏览器中打开访问10.1.2.3,在应用开关里找到siot选项,打开管理页面。

siot.jpg

在管理页面的“发送消息”,发送一个主题为"ledctl",内容为"on"的消息。这个步骤也可以用另一块板子做成另外一个客户端来发出消息。

on.jpg

在thonny的终端窗口可以看到接收到的消息。

testcode.jpg

当然ESP32上的led也亮起来了。反过来用off指令也可以关闭led灯。

24.jpg

 

     

附件

评论

user-avatar
  • 08buck

    08buck2023.09.16

    就会爆炸

    1
    • 08buck

      08buck2023.09.16

      就会爆炸

  • CHICKEN

    CHICKEN2023.09.16

    66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666

    0
    • 林cancan叫jiji

      林cancan叫jiji2023.09.16

      太厉害了,我家猴子看完都会上天了

      1
      • 地下铁

        地下铁2023.09.16

        5555~~~~

    • AEK

      AEK2023.09.16

      太有实力了好吧

      0
      • CHICKEN

        CHICKEN2023.09.16

        给个三连

        0
        • 张靖钰

          张靖钰2023.09.16

          汕头市蓝天学校初二10班辛嵘嘉实名为这位温良老师点赞

          0
          • 佘挺

            佘挺2023.09.16

            666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666牛牛牛牛牛

            0
            • AEK

              AEK2023.09.16

              点赞加关注

              0
              • CHICKEN

                CHICKEN2023.09.16

                666赞赞赞厉害厉害离谱离谱牛逼牛逼

                1
                • 81rum19wCJjs

                  81rum19wCJjs2023.09.16

                  6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666

              • 林cancan叫jiji

                林cancan叫jiji2023.09.16

                点赞,关注,加好友,直接关注

                0
                • 花生编程

                  花生编程2023.08.13

                  赞赞赞赞赞

                  0
                  • 花生编程

                    花生编程2023.08.13

                    厉害厉害

                    0
                    • 三春牛-创客

                      三春牛-创客2023.08.10

                      厉害厉害

                      0
                      • 三春牛-创客

                        三春牛-创客2023.08.10

                        厉害厉害

                        0
                        • hacker_

                          hacker_2023.07.18

                          666

                          0
                          • 腿毛利小五郎

                            腿毛利小五郎2023.06.30

                            666

                            0
                            • 宋云辉

                              宋云辉2023.06.27

                              s

                              0
                              • 宋云辉

                                宋云辉2023.06.27

                                👄

                                0