651|4

253

帖子

4

TA的资源

纯净的硅(初级)

楼主
 

【得捷电子Follow me第3期】任务4:连接WiFi网络(联网、每日一句英语) [复制链接]

  本帖最后由 HonestQiao 于 2023-11-11 23:26 编辑

Seeed Studio XIAO ESP32C3使用的是ESP32-C3核心,联网功能时是基本功能。

下面就分享联网的过程,以及联网后,从api接口请求数据,并显示到显示屏上。

 

一、联网

关于联网的具体处理,Seeed官方提供了演示代码,具体可见:MicroPython for ESP32C3 | Seeed Studio Wiki

其具体的代码如下:

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

# 无线连接设置
wifi_ssid = "无线热点"
wifi_password = "连接密码"

网处理
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()

 

上述代码的过程很简单,是标准的ESP32中,MicroPython的联网处理。

执行上述代码,联网成功后,输出如下:

 

 

二、请求API

要请求API接口,可以使用urequest模块来进行。

本次分享中,调用的接口为每日一句英语,具体调用说明地址为:每日英语-每日英语API接口-免费API接口-聚合数据 (juhe.cn)

在该页面上,申请接口的权限,以及对应的KEY。

 

具体的调用代码如下:

# 每日一句(英语)接口
api_key = "411f8a902123456786ecc36b87654321"
api_url = "http://apis.juhe.cn/fapigx/everyday/query"


# 请求API
response = requests.get(api_url+"?key="+api_key)

# 从API返回获取数据
if response.status_code == 200:
    data = json.loads(response.text)
    if "result" in data:    
        print(data)
        date = data['result']['date']
        content = data['result']['content']
        note = data['result']['note']
    else:
        print("No content")
        date = "No Date"
        content = "Content is empty"
else:
    print("error")
    date = "No Date"
    content = "Request is error"

print("Date: ", date)
print("Content: ", content)

在上述代码中,使用urequests.get()请求API接口,然后检查返回数据是否正确,如果返回正确,则从其中解析出对应的数据。

最终的数据,英文句子存放到变量content,日期存放到date中。

 

实际运行结果如下:

 

三、输出结果到屏幕上

在之前的分享 【得捷电子Follow me第3期】任务2:驱动扩展板上的OLED屏幕(字符、中文、仪表、诗词) 中,已经说明了使用 micropython-nano-gui 来驱动显示,这里同样适用该库。

得到了每日一句英语后,使用下面的代码进行显示:

from color_setup import ssd

from gui.core.nanogui import refresh
from gui.core.writer import CWriter
from gui.widgets.textbox import Textbox
from gui.widgets.label import Label
from gui.core.colors import *

# 字体调用
import gui.fonts.arial10 as arial10

# 清屏
refresh(ssd, True)

# 显示输出
CWriter.set_textpos(ssd, 0, 0)
wri = CWriter(ssd, arial10, verbose=False)
wri.set_clip(True, True, False)

# 显示日期
Label(wri, 0, 40, date)

# 显示英文句子
# Positional
pargs = (13, 2, 124, 4)  # Row, Col, Width, nlines

tb = Textbox(wri, *pargs, clip=False)
tb.append(content, ntrim = 100)
refresh(ssd)

 

在上述代码中,使用了Label和TextBox两个组件,分别用于显示日期和英文句子。

TextBox在现实的时候,可以通过clip参数,来控制是自动换行,还是溢出的不显示。

最终运行的结果如下:

 

四、总结

得益于ESP32强大的联网能力支持,要连接网络并从网络获取数据,易如反掌。

而结合网络开发应用,能够实现更多的应用方式和场景。

 

 

最新回复

大哥  你写的好好,我可以跟你混吗?   详情 回复 发表于 2023-12-5 00:50
点赞 关注
 
 

回复
举报

6841

帖子

11

TA的资源

版主

沙发
 

得益于ESP32强大的联网能力支持,要连接网络并从网络获取数据,易如反掌。

而结合网络开发应用,能够实现更多的应用方式和场景。

感谢大佬的分享!

 
 
 

回复

731

帖子

5

TA的资源

纯净的硅(高级)

板凳
 

感谢楼主提供的技术分享,先收藏学习再发表个人意见,顶起来

 
 
 

回复

33

帖子

3

TA的资源

一粒金砂(中级)

4
 

大哥  你写的好好,我可以跟你混吗?

点评

一起学习呀!  详情 回复 发表于 2023-12-14 23:44
 
 
 

回复

253

帖子

4

TA的资源

纯净的硅(初级)

5
 
jone5 发表于 2023-12-5 00:50 大哥  你写的好好,我可以跟你混吗?

一起学习呀!

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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