[作品提交] 【得捷电子Follow me第3期】项目汇总贴

EP-Proselyte   2023-12-15 14:22 楼主

第一部分  (3—5分钟短视频)

https://training.eeworld.com.cn/video/38622

第二部分  (任务总结报告)

任务1:使用MicroPython系统(必做任务)

熟悉Seeed Studio XIAO ESP32C3开发板基本操作,安装esptool,并给开发板刷写MicroPython系统,完成入门程序的运行

1、安装esptool工具,如果电脑里已经有了esptool的同学可以跳过

2、下载MicroPython固件,网址:

https://micropython.org/download/esp32c3/

将固件注入设备 最终结果

seeed studio固件注入.PNG
一定要去设备管理器提前查找设备到底在哪个串口 避免白忙活一场

任务2:驱动扩展板上的OLED屏幕

任务目标:利用OLED屏幕显示文字图形图片等信息

因为OLED屏幕的驱动芯片是SSD1306,所以在网上找到ssd1306的micropython库即可

同时进行文字和图形的显示,以下为代码

from machine import Pin, SoftI2C
from ssd1306 import SSD1306_I2C
from font import Font

i2c = SoftI2C(scl=Pin(7), sda=Pin(6)) 
screen = SSD1306_I2C(128, 64, i2c)
f=Font(screen)

screen.fill_rect(0, 0, 128, 64, 1)
screen.fill_rect(2, 2, 124, 60, 0)
f.text("hello,world!",15,25,16)
screen.show()

运行结果

 

微信图片_20231215140051.jpg

任务3:控制蜂鸣器播放音乐

任务目标:学会使用控制蜂鸣器,并能根据音乐简谱让蜂鸣器播放对应的音乐

扩展板上集成了一颗蜂鸣器,由于我们需要使用蜂鸣器发出不同频率的声音,所以这里就使用pwm功能来进行调整变频率

根据频率 查询音高 写出代码 代码如下

import machine
import utime

# 定义音调频率
tones = {'1': 277, '2': 294, '3': 330, '4': 349, '5': 392, '6': 440, '7': 494,'8':523,'9':587, '-': 0}
# 定义Bad apple!!!旋律
melody = "23456-986-2-654323456-543234321323456-986-2-654323456-543-4-5-6"

pizzo = machine.Pin(5)
pwm1 = machine.PWM(pizzo)
#frep1 = 500
#pwm1.freq(frep1)
#pwm1.duty_u16(32768)


for tone in melody:
    freq = tones[tone]
    if freq:
        pwm1.init(duty=1000, freq=freq)  # 调整PWM的频率,使其发出指定的音调
    else:
        pwm1.duty(0)  # 空拍时一样不上电
    # 停顿一下 (四四拍每秒两个音,每个音节中间稍微停顿一下)
    utime.sleep_ms(400)
    pwm1.duty(0)  # 设备占空比为0,即不上电
    utime.sleep_ms(100)

演示请看视频 这里不再放视频

任务4:连接WiFi网络

将Seeed Studio XIAO ESP32C3连接到WiFi网络,并访问互联网信息

esp32的一大优势就是联网 接下来我们只需要

使用network库来进行联网是真的好用

调用接口network.WLAN(network.STA_IF)设置network的模式

调用接口station.scan()来进行wifi热点扫描

调用接口station.connect(wifi_ssid, wifi_password)来连接到wifi网络

就可以愉快的调用网络上的内容啦

这边通过获取魅族天气数据 实现在开发板上显示天气

代码如下

import network
import urequests as requests
import ujson as json
import utime as time

# 无线连接设置
wifi_ssid = "MERCURY_8A1B"
wifi_password = "060324a0"

def scan_and_connect():
    station = network.WLAN(network.STA_IF)
    station.active(True)
    
    if not station.isconnected():
        print("Scanning for WiFi networks, please wait...")
        for ssid, bssid, channel, RSSI, authmode, hidden in station.scan():
            print("* {:s}".format(ssid))
            print("   - Channel: {}".format(channel))
            print("   - RSSI: {}".format(RSSI))
            print("   - BSSID: {:02x}:{:02x}:{:02x}:{:02x}:{:02x}:{:02x}".format(*bssid))
            print()

        while not station.isconnected():
            print("Connecting...")
            station.connect(wifi_ssid, wifi_password)
            time.sleep(10)

    print("Connected!")
    
    print("My IP Address:", station.ifconfig()[0])
# 联网
scan_and_connect()
import ujson as json
import utime as time
import urequests
import network
from machine import Pin, SoftI2C
import ssd1306
# i2c引脚
i2c = SoftI2C(scl=Pin(7), sda=Pin(6))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
# 获取天津天气信息
response = urequests.get("https://aider.meizu.com/app/weather/listWeather?cityIds=101030100")
res = json.loads(response.text)
temp = res.get("value", [{}])[0].get("realtime", {}).get("temp")
sd = res.get("value", [{}])[0].get("realtime", {}).get("sD")
# 清除屏幕
oled.fill(0)
# 显示内容
oled.text("TianJin", 10, 15)
oled.text(temp+"C "+sd+"%", 10, 25)
oled.show()

微信图片_20231215140738.jpg

任务5:使用外部传感器

连接环境光传感器或温湿度传感器,获取传感器的数值,并转换成真实的物理量

这一次follow me为我们选配了2个外部传感器模块,分别是温湿度传感器模块AHT20和环境光传感器模块。

这里演示温湿度传感器模块的示例

通过资料查询我们可知,这颗是数字传感器, 通过I2C协议传输数据. 使用的芯片是AHT20, 可以直接按照规格书的说明通过I2C协议通信. 由于使用广泛, 再某hub上已经有写好的库了, 这里直接调用ahtx0.py 即可.

代码如下

import ahtx0
from machine import Pin, SoftI2C
from ssd1306 import SSD1306_I2C
from font import Font

i2c = SoftI2C(scl=Pin(7), sda=Pin(6)) 
screen = SSD1306_I2C(128, 64, i2c)
sensor = ahtx0.AHT10(i2c)
f=Font(screen)
values = (sensor.temperature, sensor.relative_humidity)

f.text("T:%.2f"%(values[0]),36,25,16)
f.text("H:%.2f"%(values[1]),36,40,16)
screen.show()
sleep(2)
微信图片_20231215141357.jpg
第三部分:可编译下载的代码
总结感想
首先非常感谢德捷还有eeworld可以给予我这个学生党,一次接触开发板 了解python编程的机会
通过这次机会,了解了开发板的广阔世界,激发了我对开发板的进一步了解。感谢eewolrd啦

 

 

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复