530|0

221

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

【得捷电子Follow me第3期】任务完成汇总2 [复制链接]

 

Follow me 第3期任务

视频:

//内容二: 任务/项目总结报告//

 

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

介绍:

MicroPython是一种精简的Python编程语言,可以运行在微型控制器和嵌入式系统上。要使用MicroPython系统,你需要以下步骤:

  1. 硬件准备:ESP32_c3 .
  2. 安装MicroPython:

    Thonny, Python IDE for beginners

    https://thonny.org/

    或者直接进仓库下载:

    链接已隐藏,如需查看请登录或者注册

  3. 编写代码:利用THONNY编辑器中编写代码,然后将代码传输到设备上。
  4. 连接设备:先烧录好支持thonny的ESP32 C3的BIN,用USB数据线将设备连接到计算机。

     

  5. 传输代码:利用thonny的将代码上传到设备上并执行。
  6. 运行代码:代码成功上传到设备上,可以通过串口或OLED屏幕等设备查看输出结果。

任务2:驱动扩展板上的OLED屏幕(必做任务)

        

    利用Thonny中驱动扩展板上的OLED屏幕,连接方式是通过IIC来驱动OLED屏幕的,OLED屏幕通过I2C接口与ESP32 C3上的,具体引脚是时钟和数据脚分别为6脚(SDA)和7脚 (SCL),屏幕是ssd1306,使用的库是ssd1306库

    以下是一些通用的步骤,可以帮助你在Thonny中驱动扩展板上的OLED屏幕:

  1. 确认OLED屏幕的型号和连接方式。查看OLED屏幕的规格书或说明书,了解其通信接口、引脚定义等。

     

     

  2. 连接OLED屏幕。根据OLED屏幕的C3的6脚(SDA)和7脚 (SCL)对应引脚上,这里是直接扣上去就可以使用了。

     

  3. 在Thonny中导入必要的SSD1306的库。

     

  4. 编写驱动程序,测试驱动程序。将驱动程序上传到C3开发板上,并运行Thonny中的程序。观察OLED屏幕是否正常显示,检查驱动程序是否工作正常。
    显示圆:

                        中文:

                        

 

任务3:控制蜂鸣器播放音乐(必做任务)

参考的资料,这个是给了我一定启发的,所以这里我贴出来。

1、

import time
from time import sleep
import machine
from machine import Pin, SoftI2C


# Buzzer settings

buzzer_pin = machine.Pin(5, machine.Pin.OUT)
buzzer = machine.PWM(buzzer_pin)
buzzer.freq(1047)

# Buzzer working

while True:

    buzzer.duty(10)
    time.sleep(1)
    buzzer.duty(0)
    time.sleep(1)

2、

import machine
import time

# Buzzer settings
buzzer_pin = machine.Pin(5, machine.Pin.OUT)
buzzer = machine.PWM(buzzer_pin)
buzzer.freq(1047)

# Defining frequency of each music note
NOTE_C4 = 262
NOTE_D4 = 294
NOTE_E4 = 330
NOTE_F4 = 349
NOTE_G4 = 392
NOTE_A4 = 440
NOTE_B4 = 494
NOTE_C5 = 523
NOTE_D5 = 587
NOTE_E5 = 659
NOTE_F5 = 698
NOTE_G5 = 784
NOTE_A5 = 880
NOTE_B5 = 988

# Music notes of the song, 0 is a rest/pulse
notes = [
    NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
    NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
    NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
    NOTE_A4, NOTE_G4, NOTE_A4, 0,

    NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
    NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
    NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
    NOTE_A4, NOTE_G4, NOTE_A4, 0,

    NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
    NOTE_A4, NOTE_C5, NOTE_D5, NOTE_D5, 0,
    NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, 0,
    NOTE_E5, NOTE_D5, NOTE_E5, NOTE_A4, 0,

    NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
    NOTE_D5, NOTE_E5, NOTE_A4, 0,
    NOTE_A4, NOTE_C5, NOTE_B4, NOTE_B4, 0,
    NOTE_C5, NOTE_A4, NOTE_B4, 0,

    NOTE_A4, NOTE_A4,
    #Repeat of first part
    NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
    NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
    NOTE_A4, NOTE_G4, NOTE_A4, 0,

    NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
    NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
    NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
    NOTE_A4, NOTE_G4, NOTE_A4, 0,

    NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
    NOTE_A4, NOTE_C5, NOTE_D5, NOTE_D5, 0,
    NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, 0,
    NOTE_E5, NOTE_D5, NOTE_E5, NOTE_A4, 0,

    NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
    NOTE_D5, NOTE_E5, NOTE_A4, 0,
    NOTE_A4, NOTE_C5, NOTE_B4, NOTE_B4, 0,
    NOTE_C5, NOTE_A4, NOTE_B4, 0,
    #End of Repeat

    NOTE_E5, 0, 0, NOTE_F5, 0, 0,
    NOTE_E5, NOTE_E5, 0, NOTE_G5, 0, NOTE_E5, NOTE_D5, 0, 0,
    NOTE_D5, 0, 0, NOTE_C5, 0, 0,
    NOTE_B4, NOTE_C5, 0, NOTE_B4, 0, NOTE_A4,

    NOTE_E5, 0, 0, NOTE_F5, 0, 0,
    NOTE_E5, NOTE_E5, 0, NOTE_G5, 0, NOTE_E5, NOTE_D5, 0, 0,
    NOTE_D5, 0, 0, NOTE_C5, 0, 0,
    NOTE_B4, NOTE_C5, 0, NOTE_B4, 0, NOTE_A4
]

# Durations (in ms) of each music note of the song
# Quarter Note is 250 ms when songSpeed = 1.0
durations = [
    125, 125, 250, 125, 125,
    125, 125, 250, 125, 125,
    125, 125, 250, 125, 125,
    125, 125, 375, 125,

    125, 125, 250, 125, 125,
    125, 125, 250, 125, 125,
    125, 125, 250, 125, 125,
    125, 125, 375, 125,

    125, 125, 250, 125, 125,
    125, 125, 250, 125, 125,
    125, 125, 250, 125, 125,
    125, 125, 125, 250, 125,

    125, 125, 250, 125, 125,
    250, 125, 250, 125,
    125, 125, 250, 125, 125,
    125, 125, 375, 375,

    250, 125,
    #Rpeat of First Part
    125, 125, 250, 125, 125,
    125, 125, 250, 125, 125,
    125, 125, 375, 125,

    125, 125, 250, 125, 125,
    125, 125, 250, 125, 125,
    125, 125, 250, 125, 125,
    125, 125, 375, 125,

    125, 125, 250, 125, 125,
    125, 125, 250, 125, 125,
    125, 125, 250, 125, 125,
    125, 125, 125, 250, 125,

    125, 125, 250, 125, 125,
    250, 125, 250, 125,
    125, 125, 250, 125, 125,
    125, 125, 375, 375,
    #End of Repeat

    250, 125, 375, 250, 125, 375,
    125, 125, 125, 125, 125, 125, 125, 125, 375,
    250, 125, 375, 250, 125, 375,
    125, 125, 125, 125, 125, 500,

    250, 125, 375, 250, 125, 375,
    125, 125, 125, 125, 125, 125, 125, 125, 375,
    250, 125, 375, 250, 125, 375,
    125, 125, 125, 125, 125, 500
]

def play_song():
    total_notes = len(notes)
    for i in range(total_notes):
        current_note = notes[i]
        wait = durations[i]
        if current_note != 0:
            buzzer.duty(512)  # Set duty cycle for sound
            buzzer.freq(current_note)  # Set frequency of the note
        else:
            buzzer.duty(0)  # Turn off the sound
        time.sleep_ms(wait)
        buzzer.duty(0)  # Turn off the sound
while True:
    # Play the song
    play_song()

蜂鸣器所在的位置:

任务4:连接WiFi网络(必做任务)

先来看图:

天线一定要接上去,不然会玩不转。

下面进行,有参考示例:

  1. 导入 wifi 库。在 Thonny 的代码编辑器中,输入以下代码并运行:
     

    import network

    设置 WiFi 参数。要连接的 WiFi 网络的名称(SSID)和密码。在 Thonny 的代码编辑器中,输入以下代码并运行:

  2. wlan = network.WLAN(network.STA_IF)  
    wlan.active(True)  
    if not wlan.isconnected():  
        print('connecting to network...')  
        wlan.connect(SSID, PASSWORD)

    替换 SSID 和 PASSWORD  屋内的 WiFi 网络的真实名称和密码。我这里是CMCC_....),mei1372823.......

  3. 等待连接成功。你可以使用以下代码来等待连接成功:
     

    while not wlan.isconnected():  
        time.sleep(1)  
    print('connected to network')
  4. 测试网络连接。使用 wlan.ifconfig() 命令来查看网络连接的详细信息,IP 地址、子网掩码等。在 Thonny 的代码编辑器中,输入以下代码并运行:
     

    print(wlan.ifconfig())
  5. 查看类似于以下输出:

    实际用到的代码:
     

    # Execute the functions
    scan_and_connect()
    
    # 从时间服务器获取时间
    ntptime.settime()
    
    while True:
        # 获取当前时间戳,此处加了8小时的时区差
        current_time = utime.time() + 8 * 60 * 60
        print("Current Time:", current_time)
    
        # 将时间戳转换为本地时间
        local_time_value = utime.localtime(current_time)
        print("Local Time:", local_time_value)
        
        # 根据日期时间转换,便于打印和显示
        local_data = "{:02d}-{:02d}-{:02d}".format(local_time_value[0], local_time_value[1], local_time_value[2])
        local_time = "{:02d}:{:02d}:{:02d}".format(local_time_value[3], local_time_value[4], local_time_value[5])
    
        print(local_data)
        print(local_time)
    
        # 更新显示内容
        oled.fill(0)
        oled.text(local_data, 10, 25)
        oled.text(local_time, 10, 40)
        oled.show()  
        
        # 延时1秒
        utime.sleep(1)
    

     

任务5:使用外部传感器(必做任务)

连接方式 :

在 Thonny 中获取环境光传感器或温湿度传感器的数值。以下是获取传感器数值的一般步骤:

  1. 导入所需的库。在 Thonny 的代码编辑器中,导入与传感器相关的库。
    库地址:https://pypi.org/search/?q=aht20

     

  2. 设置传感器引脚。
    温湿度传感器模块 连接至扩展板的 I2C 接口(开关旁边)。将 光传感器模块 连接至扩展板的 A0-D0 接口(蜂鸣器旁边)。
  3. 初始化传感器。先初始化传感器,然后对连接到传感器引脚并设置传感器的参数。
  4. 读取传感器数值。使用相应的函数来读取传感器的数值。
    from machine import Pin, SoftI2C, ADC
    import ssd1306
    import utime
    import time
    from ahtx0 import AHT20
    
    i2c = SoftI2C(scl=Pin(7), sda=Pin(6))
    
    oled_width = 128
    oled_height = 64
    oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
    
    # 清空屏幕,并显示任务要求
    oled.fill(0)
    oled.text("ESP32 _ C3 fifth", 0, 0)
    oled.text("ATH20:", 0, 16)
    oled.text("Humi:", 0, 32)
    oled.text("Light:", 0, 48)
    oled.show()
    
    # aht20
    aht = AHT20(i2c)
    
    # 光照部分
    adc = ADC(Pin(2))
    adc.atten(ADC.ATTN_11DB)
    adc.width(ADC.WIDTH_12BIT)  #4095
    
    while True:
        temp = aht.temperature
        humi = aht.relative_humidity
        
        light_adc = adc.read()
        
        # 计算光照强度单位Lux
        light_lux = light_adc * 350 * 1.0 / 4095
        
        # 算出电阻值单位K
        light_res = (4095 - light_adc) * 10.0 / light_adc
        
        print("Temp(°):\n");
        print('{:.2f}'.format(temp))
        print("Humi(%):\n");
        print('{:.2f}'.format(humi))
        print("Light(lux)\n");
        print('{:.2f}'.format(light_lux))
        print("Light(K)\n");
        print('{:.2f}'.format(light_res))
        
        # 清除变化部分的内容
        oled.fill_rect(64,16,64,48,0) 
        oled.text('{:.2f}'.format(temp), 64, 16)
        oled.text('{:.2f}'.format(humi), 64, 32)
        oled.text('{:.2f}'.format(light_lux), 64, 48)
        oled.show()
        
        # 延时1秒
        time.sleep(1)
    
    
    
    
    
    

     

 

//内容三:可编译下载的代码//

温湿度显示程序.rar (4.72 KB, 下载次数: 0, 售价: 5 分芯积分)
屏.rar (3.58 KB, 下载次数: 0, 售价: 5 分芯积分)
蜂鸣器.rar (1.15 KB, 下载次数: 0, 售价: 5 分芯积分)
wifi.rar (1.58 KB, 下载次数: 0, 售价: 5 分芯积分)
followme3.rar (892.86 KB, 下载次数: 0, 售价: 5 分芯积分)

 

总结:

使用Thonny和ESP32开发板进行SSD1306 OLED显示屏、蜂鸣器和WiFi连接的编程的总结。

  1. SSD1306 OLED显示屏:

在ESP32上使用SSD1306 OLED显示屏,使用I2C接口来通信。首先,对I2C代码初始化,然后设置SSD1306的地址,引脚分配。在Thonny中,使用内置的I2C库来执行这些操作。完成图像,文字,英文,中文显示等。

  1. 蜂鸣器:

ESP32驱动扩展板上的蜂鸣器通常可以通过GPIO引脚进行控制。在Thonny中,使用的是GPIO库来控制GPIO引脚。通过改变GPIO引脚的电平状态,使蜂鸣器发出声音,和不同频率的声音。

  1. WiFi连接:

ESP32 C3具有内置的WiFi模块,通过连接到WiFi网络。在Thonny中,首先,用代码中初始化WiFi,然后输入WiFi网络的SSID和密码。如果连接到WiFi网络,就可以通过互联网发送和接收数据。

总之,使用Thonny对ESP32 C3进行编程可以方便地控制各种外设,包括SSD1306 OLED显示屏、蜂鸣器和WiFi连接。通过使用,可以更好地理解如何使用微控制器和互联网进行物联网项目的开发。

 

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表