educore库使用说明
为促进义务教育信息科技课程开设,通过程序验证发展学生计算思维、提升数字化学习与创新能力。义务教育信息科技教学指南编写组制定了educore库标准。educore库目的在于加强不同型号主控板之间的兼容性,简化教育资源的开发及使用过程,并提高学习效率。
行空板K10-educode库,可控制K10的板载器件并兼容部分外接传感器,此库当前为测试版,可能存在bug,推荐有一定技术能力的老师测试和使用。
固件烧录
注意:烧录micropython固件后,要想再使用Mind+中的图形化模式,需要恢复初始设置。
恢复时先按住boot,再接数据线,待识别出端口后即可松开BOOT键,此时再点击恢复初始设置。完成后摁下板子的RST复位即可完成恢复
-
下载ESP32固件烧录软件:点击下载
-
解压后运行exe文件,选择ESP32-S3。
-
选择对应的文件,填入相应地址,并勾选最前面的对号。
-
按住行空板K10背面的BOOT按钮,连接板子与电脑,在软件中选择对应的端口。
-
先点击“ERASE”清除flsh,待成功后再点击"START"进行烧录。
-
烧录完成后摁下行空板K10板子的RST复位键。
软件准备
-
下载并安装Thonny
-
安装完成后打开软件,软件右下角选择ESP32
-
点击左上角新建文件,输入代码
-
CTRL+S保存到micropython设备。选择保存到此电脑也可以,此时程序未保存到板子中,重启后程序丢失。
-
保存文件命名为main.py。
-
点击运行。
引脚操作
数字输入(P0 P1)
from educore import pin
import time
p0=pin(0) #实例化引脚
p1=pin(1) #实例化引脚
while True:
d0=p0.read_digital() #读取引脚电平值,0 为低电平,1 为高电平
d1=p1.read_digital()
print(d0)
print(d1)
print('-')
time.sleep(0.1)
数字输出(P0 P1)
from educore import pin
import time
p0=pin(0)
p1=pin(1)
while True:
p0.write_digital(1)
p1.write_digital(1)
time.sleep(1)
p0.write_digital(0)
p1.write_digital(0)
time.sleep(1)
模拟输入(P0 P1)
from educore import pin
import time
p0=pin(0)
p1=pin(1)
while True:
v0=p0.read_analog()
v1=p1.read_analog()
print(v0)
print(v1)
print('-')
time.sleep(1)
PWM输出(P0 P1)
from educore import pin
import time
p0 = pin(0)
p1 = pin(1)
while True:
for value in range(0, 1024, 10):
p0.write_analog(value=value)
p1.write_analog(value=value)
time.sleep(0.03)
print(value)
for value in range(1023, -1, -10):
p0.write_analog(value=value)
p1.write_analog(value=value)
time.sleep(0.03)
print(value)
引脚中断(P0 P1)
from educore import pin
p0=pin(0)
p1=pin(1)
def p0_event_rising():
global p0
print("p0 rising")
pass
def p1_event_falling():
global p1
print("p1 falling")
pass
p0.event_rising= p0_event_rising # 引脚事件包含 event_rising(上升沿),event_falling(下降沿)
p1.event_falling= p1_event_falling
显示屏控制
from educore import oled
import time
while True:
oled.print("Hello,\nworld!",x=0,y=0) #xy可以不填,默认为0,要支持\n换行
oled.print("Hello,world!",x=0,y=50) #xy可以不填,默认为0,要支持\n换行
time.sleep(1)
oled.clear()
time.sleep(1)
蜂鸣器控制(外接)
from educore import speaker
import time
s1=speaker(0) #蜂鸣器初始化,接到P0
s1.tone(freq=2000,dur=1000) #freq:播放频率dual:持续时间(毫秒)
s1.stop() # 停止播放
舵机控制
from educore import servo
import time
s1=servo(1) # 将舵机连接到P1引脚
while True:
s1.angle(value=170) #设置舵机转动到 180°位置,角度范围为:0~180°
time.sleep(1)
s1.angle(value=10)
time.sleep(1)
RGB灯带控制
from educore import rgb
import time
pxs=rgb(1) #将灯带连接到 1 号引脚,不填使用板载RGB
while True:
pxs.write(index=[0,1,2],r=50,g=50,b=50) #让 0、1、2 号灯珠根据 r、g、b 值显示色彩
time.sleep(1)
pxs.write(index=[0],r=255,g=0,b=0)
pxs.write(index=[1],r=0,g=255,b=0)
pxs.write(index=[2],r=0,g=0,b=255)
time.sleep(1)
pxs.clear() #熄灭所有灯珠
time.sleep(1)
按键
from educore import button
import time
bt_a=button(button.a)#初始化板载按键传感器 A
bt_b=button(button.b)#初始化板载按键传感器 B
def on_button_pressed_a():
print("Button A pressed!")
def on_button_pressed_b():
print("Button B pressed!")
bt_a.event_pressed =on_button_pressed_a #绑定按键事件,当按键 A 被按下时回调 myfunction 函数。
bt_b.event_pressed =on_button_pressed_b #绑定按键事件,当按键 B 被按下时回调 myfunction 函数。
while True:
print('a=',bt_a.status()) #返回按键 A 的状态,0 表示释放,1 表示按下
print('b=',bt_b.status()) #返回按键 B 的状态,0 表示释放,1 表示按下
time.sleep(1)
pass
环境光、加速度、温湿度
from educore import dht,accelerometer,light,oled
import time
dhtsensor=dht()# 读取板载温湿度的值
acc=accelerometer()#初始化板载加速度传感器
lgt=light()#初始化板载环境光传感器
while True:
#print(acc.X(),acc.Y(),acc.Z(),acc.shake(),acc.gesture())#获得 x 轴方向加速度值,和板子姿态
temp,hum=dhtsensor.read()
#oled.clear()
oled.print("temp:",x=0,y=0)
oled.print(str(temp))
oled.print(" hum:")
oled.print(str(hum))
oled.print("\n")
oled.print("\n")
oled.print("light:")
oled.print(str(lgt.read()))
oled.print("\n")
oled.print("\nX:")
oled.print(str(acc.X()))
oled.print("\nY:")
oled.print(str(acc.Y()))
oled.print("\nZ:")
oled.print(str(acc.Z()))
#time.sleep(0.2)
DS18B20
from educore import ds18b20
import time
ds=ds18b20(0)
while True:
temp=ds.read()
print(temp)
time.sleep(1)
超声波
from educore import ultrasonic
import time
sonic=ultrasonic(trig=0,echo=0) #连接 trig 和 echo 引脚
while True:
print(sonic.distance())
time.sleep(0.1)
RFID(DFR1181)
from educore import rfid,oled
import time
scan_rfid=rfid()
while True:
rf=scan_rfid.scanning(wait=True) #尝试读取并返回rfid卡片信息,当wait=True时,会一直等待刷卡;wait参数也可接受整数型数据,当传入整数型数据时表示等待wait秒后结束阻塞。无论是否成功刷卡,该函数都应该返回一个rf对象
print(f"serial_number:{rf.serial_number()}")#获取卡片序列号,若读取不成功则该方法返回None
print(rf.write_block(1,100))#向数据块1写入100
print(rf.read_block(1))#读数据块1的数据
重量(KIT0176)
from educore import force
import time
fs=force()
fs.zero() #清零
while True:
print(fs.read(mass=False)) #返回质量值,单位为克。#默认返回质量,当参数mass=False时,返回力的单位N(牛顿)
time.sleep(0.5)
蓝牙模拟HID
from educore import oled, hid, keycode,button
import time
bta=button(button.a)
btb=button(button.b)
ble_hid = hid(name='mpy_hid') #初始化蓝牙 HID 设备并命名为 mpy_hid
oled.print('ready')
while True:
if ble_hid.isconnected():#判断是否已经连接,True 为连接,False 为未连接 非阻塞
oled.print('connect',x=0,y=0)
else:
oled.print('disconnect',x=0,y=0)
if bta.status():
ble_hid.keyboard_send(keycode.SPACE) #模拟键盘按下空格
if btb.status():
ble_hid.keyboard_send([keycode.CTRL,keycode.a]) #按下组合键CTRL+a
time.sleep(0.1)
WiFi
from educore import wifi
wifi.connect(ssid="dfrobotOffice",psd="dfrobot2011",timeout=50000) #尝试连接wifi网络。可以不写参数名称。timeout为可选参数,表示连接超时时长,默认超时时间为10000毫秒
wifi.status() #返回网络连接状态,True表示已连接,False表示未连接
wifi.info() #返回包含当前IP地址、子网掩码、网关等信息的字符串
MQTT
# EASYIOT
from educore import wifi
from educore import mqttclient
import time
wifi.connect(ssid="Redm",psd="aijine12345",timeout=50000) #尝试连接wifi网络。可以不写参数名称。timeout为可选参数,表示连接超时时长,默认超时时间为10000毫秒
wifi.status() #返回网络连接状态,True表示已连接,False表示未连接
wifi.info() #返回包含当前IP地址、子网掩码、网关等信息的字符串
def received_1ffdf0jpLa():
msg=mqttclient.message(topic='AwErylzNg')
print(msg)
mqttclient.connect(server= "iot.dfrobot.com.cn",
port=1883,
client_id="",
user= "VB3Xs_kHg" ,
psd= "VB3Xy_zNgz") #阻塞运行,默认超时时间为3秒
mqttclient.connected() #返回连接状态
mqttclient.publish(topic='AwErylzNg',content= 'hello')#向对应主题发送消息,content为发送内容
#msg=mqttclient.message(topic='1ffdf0jpLa') #获取对应主题接收的消息,若该主题无消息,则返回None
mqttclient.received (topic='AwErylzNg', #对应主题收到消息时,回调函数
callback=received_1ffdf0jpLa) #通过callback指定回调函数
while True:
time.sleep(0.1)
pass
# SIOT V1
from educore import wifi
from educore import mqttclient
import time
wifi.connect(ssid="DFRobot-guest",psd="dfrobot@2017",timeout=50000) #尝试连接wifi网络。可以不写参数名称。timeout为可选参数,表示连接超时时长,默认超时时间为10000毫秒
wifi.status() #返回网络连接状态,True表示已连接,False表示未连接
wifi.info() #返回包含当前IP地址、子网掩码、网关等信息的字符串
def received_1ffdf0jpLa():
msg=mqttclient.message(topic='siot/Speed')
print(msg)
mqttclient.connect(server= "192.168.7.141",
port=1883,
client_id="",
user= "siot" ,
psd= "dfrobot") #阻塞运行,默认超时时间为3秒
mqttclient.connected() #返回连接状态
mqttclient.publish(topic='siot/Speed',content= 'hello')#向对应主题发送消息,content为发送内容
#msg=mqttclient.message(topic='1ffdf0jpLa') #获取对应主题接收的消息,若该主题无消息,则返回None
mqttclient.received (topic='siot/Speed', #对应主题收到消息时,回调函数
callback=received_1ffdf0jpLa) #通过callback指定回调函数
while True:
time.sleep(0.1)
pass
# SIOT V2 mqttclient.publishs上报消息位置要加"->"
from educore import wifi
from educore import mqttclient
import time
wifi.connect(ssid="Redm",psd="aijine12345",timeout=50000) #尝试连接wifi网络。可以不写参数名称。timeout为可选参数,表示连接超时时长,默认超时时间为10000毫秒
wifi.status() #返回网络连接状态,True表示已连接,False表示未连接
wifi.info() #返回包含当前IP地址、子网掩码、网关等信息的字符串
def received_1ffdf0jpLa():
msg=mqttclient.message(topic='siot/Speed')
print(msg)
mqttclient.connect(server= "192.168.45.146",
port=1883,
client_id="",
user= "siot" ,
psd= "dfrobot") #阻塞运行,默认超时时间为3秒
mqttclient.connected() #返回连接状态
mqttclient.publish(topic='siot/Speed',content= '->hello')#向对应主题发送消息,content为发送内容
#msg=mqttclient.message(topic='1ffdf0jpLa') #获取对应主题接收的消息,若该主题无消息,则返回None
mqttclient.received (topic='siot/Speed', #对应主题收到消息时,回调函数
callback=received_1ffdf0jpLa) #通过callback指定回调函数
while True:
time.sleep(0.1)
pass
数据格式转换
从文本文件中生成字典
from educore import get_dict_from_file
dic=get_dict_from_file('tushu.txt') #读取文本文件内容并生成字典
print(dic)
根据字符串生成字典
from educore import get_dict_from_str
s="001 张三;002 李四"
dic=get_dict_from_str(s)
print(dic)
获取芯片ID
from educore import uuid
_id=uuid() #获取设备唯一标识
print(_id)