425|1

69

帖子

4

TA的资源

一粒金砂(中级)

楼主
 

【得捷Follow me第3期】XIAO主板交作业 [复制链接]

 

大家好,我是郑工,又有幸参加得捷的follow me活动,有幸能拿到seeed studio XIAO开发板来跟大家做技术交流。

 

 

开发板靓照

 

首先还是来简单介绍一下开发板的硬件功能,下面是官方提供的资料,可以看到XIAO的功能还是非常强大的,而且更难得的是尺寸非常小,上面的照片可以看到,主板也就跟我一个usb线头差不多大,主要是面向小型设备的开发。

 

 

底板的资源也非常丰富,有两个IIC,一个UART,一个AD口外接,还带有RTC实时时钟芯片,SD卡,蜂鸣器,一个RST按键和一个用户按键。

 

那我就来简单说明一下任务细节。

 

视频:https://training.eeworld.com.cn/video/38829

 

代码:https://download.eeworld.com.cn/detail/eew_Ya3s2d/630305

 

任务1:使用MicroPython系统

 

首先需要下载三个东西:

开发环境:

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

 

 

固件下载工具:

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

  

 

 

MicroPython固件:MicroPython - Python for microcontrollers

 

 

然后在文件夹地址栏输入cmd打开命令行工具,输入以下指令(com口和文件名都是可以改变的,文件跟esptool放在同一个文件夹)

esptool.exe --chip esp32c3 --port COM10 --baud 921600 --before default_reset --after hard_reset --no-stub  write_flash --flash_mode dio --flash_freq 80m 0x0 ESP32_GENERIC_C3-20231005-v1.21.0.bin

 

如果通过thonny上可以连接开发板就是下载成功

 

成功连接会有三个紫色">"符号

 

然后在工具>管理插件里搜索“SSD1306",并且安装,就完成开始的准备工作,可以开始玩转micropython

 

 

 

 

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

 

这个任务就是使用SSD1306库控制OLED屏

首先要初始化OLED屏幕,并且加载GFX库

i2c = SoftI2C(scl=Pin(7), sda=Pin(6))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
grap = GFX(oled_width, oled_height, oled.pixel)

然后使用oled库就是不断的使用oled.fill(0)写0清屏,然后写入需要的内容,再调用oled.show()显示内容

oled.fill(0)  # Clear the screen
grap.circle(64,32,r,1) #圆心x,圆心y,半径,线宽
oled.text(f'r:{r}',0,0)		#内容,显示x,显示y
oled.show()

 

 

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

 

底板上自带蜂鸣器,播放音乐就是改变蜂鸣器的频率,我们先定义需要的音调

NOTE_G3 = 196
NOTE_A3 = 221
NOTE_B3 = 248
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
NOTE_C6 = 1047
NOTE_D6 = 1175
NOTE_E6 = 1319
NOTE_F6 = 1397
NOTE_G6 = 1568
NOTE_A6 = 1760
NOTE_B6 = 1967

然后音乐就是用不同的频率播放不同的长度,我写了一个子程序播放音乐

def play_song(tone,step):
    total_notes = len(tone)
    for i in range(total_notes):
        current_note = tone[i]
        wait = step[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

 

 

任务4:连接WiFi网络

 

ESP32最大的特点就是自带蓝牙与wifi功能,我们可以使用自带的network库连接上指定的wifi,只需要调用

station = network.WLAN(network.STA_IF)
station.active(True)
station.connect(wifi_ssid, wifi_password)

这几个都是固定格式了,wifi_ssid是WiFi名称,wifi_password是WiFi密码

 

后面我还是经典的连接获取网络时间

r = urequests.get("http://api.pinduoduo.com/api/server/_stm")
rtc_time = r.headers['Date'].split(' ')
#Sun, 17 Dec 2023 14:10:34 GMT
#['Sun,', '17', 'Dec', '2023', '14:10:34', 'GMT']
oled.fill(0)
show_text(f"{rtc_time[3]}-{rtc_time[2]}-{rtc_time[1]}",1);
show_text(f"{rtc_time[4]}",2);
#去掉最后一个逗号
show_text(f"{rtc_time[0][:-1]}",3);
oled.show()
r.close()

 

 

任务5:使用外部传感器

 

传感器我使用了follow me第二期买的SHT40还有一个光敏传感器。SHT40主要使用iic通讯,光敏就是使用adc读取模拟值,首先初始化一下外设

pot = ADC(Pin(2))         #定义34脚为ADC脚(在32~39上可用),可以读取模拟电压
pot.atten(ADC.ATTN_11DB)   #衰减设置范围:输入电压0-2.45v
sht4x_sensor = SHT4x_Sensor(freq=100000, sdapin=6, sclpin=7)

然后调用相关函数,打印显示结果

measure_data = sht4x_sensor.measurements()
temp = measure_data[0]
humd = measure_data[1]
pot_value = pot.read_uv()/1000.0
oled.fill(0)
oled.text(f'Temp:{temp:.1f} C',10,15)
oled.text(f'Humd:{humd:.1f} %',10,30)
oled.text(f'lig:{pot_value:.1f} mV',10,45)
oled.show()
print(f'Temp:{temp:.1f}')
print(f'Humd:{humd:.1f}')
print(f'light sensor:{pot_value:.1f} mV')
print('')

由于我手上这个是sht40,跟大家手上的sht20不一样。所以对应的库是我自己改的。后面也会提供代码。

 

 

 

上面就是我对几个必选任务的总结了,我还另外买了一些配件,另外发帖给大家汇报一下。

 

回归主题,我还是再次感谢主办方给我这次机会,整个活动下来,我觉得seeed的micropython生态我觉得还是有些乱,有些驱动也是在网上git下来的,因为不是自己造的轮子,也说不清是不是对的。开源共享应该更加面向实际项目应用,而不是像现在这样有些乱的状态。也可能是我还没玩熟悉这样的项目,小家之言,如有不同,那就是你对,哈哈。

点赞 关注
 
 

回复
举报

69

帖子

4

TA的资源

一粒金砂(中级)

沙发
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表