- 博客(85)
- 资源 (1)
- 收藏
- 关注
原创 microPython搭建webServer--(三)使用microdot库实现用户提交设定后断电保存
很多用esp32diy的产品中,用户需要在首次使用时设定好wifi参数,基本思路就是开机之后,esp32自身作为热点,用户连接此热点后,访问网页设定参数,esp32将参数存入自身,保证断电保存。之后的使用中,如果要改变网络环境,使用某种触发方式,比如开机时长按某个按钮,进入esp32热点状态。先判读用户的请求是get还是post,如果是post,就分析用户提交的颜色,这里是从request.body中提取的,request.body是二进制字符串,所以先解码,然后根据关键词“=”来分割,得到颜色。
2025-01-16 16:31:58
307
原创 microPython搭建webServer--(二)使用microdot库实现对用户提交数据的响应
可以看到,浏览器提交的request,body内容为b’username=&password=456&fruits=apple’,你可以根据自己的需要分割字符串来提取各个变量,也可以直接调用request.form,这是microdot根据body解码出来的。如果想给esp32一个简易的指令,比如开灯,那只要定义对应命令的装饰器,比如"/on",收到on请求后,执行对应的开灯动作,操作某个gpio,并返回浏览器处理结果。用js的fetch提交之后,服务器显示收到的form为空,json有内容。
2025-01-15 16:20:41
1068
原创 microPython搭建webServer--(一)使用microdot库实现基本页面显示
这段代码有两个装饰器,一个是当路由到根目录时,使用send_file送出index.html文件,另一个是访问具体的path时,使用send_file送出任意文件。当然,从服务器的安全性考虑,一个webServer允许访问所有文件显然是不对的,可以增加一个安全策略,比如只send指定目录、指定扩展名的文档。先遍历esp32中的所有文件,然后动态添加到html变量中,生成带超链接的网页,发送给浏览器,这样就可以下载esp32中的所有文件。通过前面的代码,可以遍历出文档名字,然后点击超链接下载回来。
2025-01-13 16:07:59
559
原创 stc8最小系统使用usb下载程序,关于断电的避坑
我一开始的操作是,按住p3.2的按钮,然后插上usb线,给开发板上电,这样怎么都无法识别usb cdc。之后经过别人指点才知道,usb线不能拔掉,按住p3.2的按钮,只断开usb的vcc供电,再上电,就能正确识别设备了。那么,坑在哪里呢,就是这里所说的重新上电,是只断开开发板的vcc,其中的usb线是不能从电脑上拔下来的。3、点击下载软件中的“下载/编程”按钮(注意:USB 下载与串口下载的操作顺序不同)下载成功!===传统的机械自锁紧开关是按上来停电,按下去是上电。了,这时可以松开 P3.2 按键。
2024-10-08 10:53:40
694
1
原创 GPX文件的元素内容详解
新版本的GPX文件支持更多的扩展元素和属性,比如身体健康方面的心率、骑行运动方面的踏频等,这样容纳更丰富的数据和更复杂的GPS数据结构。GPX文件(GPS eXchange Format)是一种用于存储GPS数据的开放标准格式,它可以包含航路点、轨迹和路线等信息。航点是单独的、不相关的点,通常用于标记重要的地理位置,如地标、检查点或特定的兴趣点。轨迹段track segment,可以将轨迹拆成几段,比如上午走一段,中午休息的时候停止记录,此时可以关闭一个航段,下午出行重新开启一个航段,总体是一天的轨迹。
2024-07-11 11:11:38
1540
原创 tl431作为电压比较器的使用心得
V1的跳变是没法利用的,因为对于被驱动的mos来说,这都是高电平,V2处的跳变就比较好,分别为高电平和低电平。1、r1的阻值是根据tl431的最小工作电流1ma来计算,假设tl431在钳位的时候,降低的电压为10v,此时使用10k的电阻,电流为1ma,为了稳妥起见,我使用了5k左右,实际使用的时候,选择5.1k。调节变阻器,使其提供的电压大于2.5v,此时tl431相当于稳压二极管,经过测试,V1处的电压被钳位在1.8v,V2处的电压由r2和r3对1.8v分压,V2=0.3v。
2024-05-23 16:05:20
2439
原创 用ps显示出淘宝裸眼3d立体画中的内容
淘宝前段时间在弄猜数字的游戏,其中有一题是3d立体画,如果我们把图片用ps处理一下,结果马上就出来了。打开原图,再复制进一个新图层,新图层混合模式选“差值”,左右移动新图层,就看到答案啦。
2024-05-11 08:38:34
278
原创 js脚本-屏蔽百度搜索结果页中的网站
百度搜出来的东西穿插着很多无效、重复的结果,或者明知某些网站点进去也是要充会员的,用下面的脚本可以隐藏这些结果。需要使用油猴扩展调用。
2024-03-04 09:19:51
338
原创 使用vs code开发microPython,消除库文件报错
使用vs code 写microPython代码的时候,总是遇到库文件报错,也就是类似machine之类的库下面会有波浪线,看起来很是别扭。命令行是linux的方式,win10要在我的电脑-高级设置-环境变量中添加对应的变量名和路径。前几天在翻看树莓派pico的文档,发现里面提供了很好的方法。git仓库选择官方的,考虑到速度,我选用的是gitee上面的。鼠标悬停在类名,有对应的提示。安装sdk(win10)
2023-12-18 09:31:23
746
原创 microPython使用异步实现两个led不同频率闪烁
2、如果异步中需要等待,要使用await asyncio.sleep_ms(时间),这样才不会堵塞,如果没有await,即使用了asyncio.sleep_ms(时间),也是会堵塞,不知道这样堵住,与用time.sleep有何区别。软件:MicroPython v1.18 on 2022-01-17;硬件:使用的开发板为合宙esp32c3,板载两个led,对应的io为12/13。3、用 await asyncio.gather把各个异步的函数汇总。
2023-09-06 15:12:15
709
2
原创 C语言加载lib静态库-加载ch347的官方库
其中,#pragma comment就是用来加载lib的,#pragma 称为预处理指令,还有很多其他的用法。
2023-06-24 12:36:52
626
原创 python向microPython的repl发送串口命令驱动ws2812(附避坑指南)
python向microPython的rpel发送串口命令驱动ws2812
2022-09-13 15:53:18
1851
原创 合宙esp32c3+合宙air101LCD屏幕跑通microPython
先感谢这篇文章esp32c3+air101Lcd用micropython点亮这个屏幕虽然可以配合esp32c3使用,但是很显然这个lcd不是原生搭配的,因为看针脚的定义,esp32c3的IO10是硬件spi的MISO引脚,在屏幕中,这个引脚定义为RES,看起来还是略显尴尬。根据官方介绍屏幕驱动使用的是st7735s,在使用的时候,先引用st7735.py,然后定义软SPI,不理res针脚这件事情,还是把IO10定义为MISO。测试代码如下:from machine import Pin, Soft
2022-05-31 16:41:03
3616
原创 microPython学习笔记5 Timer定时器的使用
使用esp32的板载led和板载按钮演示。1、创建定时器2、定义回调函数3、响应按键,停止定时器import machinefrom machine import Timertim1=Timer(1)pin2=machine.Pin(2,machine.Pin.OUT)pin0=machine.Pin(0,machine.Pin.IN)def blink(t): pin2.value(not pin2.value())tim1.init(period=2000, mode=Tim
2022-05-28 10:54:34
3796
原创 模拟电路的一些进阶知识
1、lm358与光敏、热敏电阻配合组成控制电路时,为了防止在临界点频繁震荡,可以再lm358上面增加积分电路,也就是在反相端和输出端增加电容。2、MOC3041是带有过零检测功能的光耦,在使用BT138-600E控制交流电的时候,可以防止晶闸管在零点关闭。3、...
2022-05-04 09:07:46
559
2
原创 esp32、esp32c3刷microPython固件的主要步骤
1、先去mpy官网下载最新的固件2、安装esptoolpip install esptool3、执行esptool.py.exe ,这里格外注意,不是esptool.pyesptool.py --chip esp32 --port COM3 write_flash -z 0x1000 F:\esp32.bin
2022-04-24 11:30:15
4163
原创 microPython学习笔记5 json的解析
import ujsondict = {} #创建一个空字典dict["deviceType"] = "Temperature" #对字典赋值dict["values"] = [23,22,25]print(dict) #校验一下创建的情况,用来跟json对比格式。print("++++++++++++++++++++++++++++")encoded = ujson.dumps(dict) #把字典编码成jsonprint(encoded)print("****************.
2022-04-16 21:05:15
1635
原创 microPython学习笔记4 NeoPixel灯带驱动
NeoPixel驱动程序使用neopixel模块:from machine import Pinfrom neopixel import NeoPixelpin = Pin(0, Pin.OUT) # set GPIO0 to output to drive NeoPixelsnp = NeoPixel(pin, 8) # create NeoPixel driver on GPIO0 for 8 pixelsnp[0] = (255, 255, 255) # set the firs
2022-01-08 14:25:08
1626
1
原创 arduino 对多个led实现不同频率的呼吸灯
常见的呼吸灯代码例程,在调节亮度的时候,都是用的delay,那么对于多个led,要实现不同频率的呼吸,就要用多个delay,相互之间会干扰频率的计算,所以,我试验了一下c++的面向对象方式,创建一个led类,再创建几个led对象,对象之间不会相互干扰。源代码如下,led接在3、5端口。class LedClass{ public: int pin; void on(void); void off(void); void flash(void); unsig
2021-11-28 10:02:10
4169
12
原创 python学习笔记3-利用空对象传递属性值
def b(): def c(): return None setattr(c, 'r', 3135789 >> 16 & 0xff) setattr(c, 'g', 3135789 >> 8 & 0xff) setattr(c, 'b', 3135789 & 0xff) return ca=b().rprint(a)定义个空的c,c本身没有用处,但是可以附加三个参数属性...
2021-11-24 10:19:54
553
原创 python学习笔记2-获取参数的名字
m="monday"s="sunday"def foo(**kws): loc = locals()#把locals()方法 print(loc) print(kws) # 这样试试 for i in kws: print(i,"=",kws[i])foo(s=s)print("********************")# 现在的打印效果some code <class 'str'> monday# 希望的打印效果 t <.
2021-11-11 16:15:26
583
原创 microPython学习笔记3--sdcard的操作
先贴代码import machine, sdcard, osfrom machine import SPIfrom machine import PinSD_CS = machine.Pin(5)sd = sdcard.SDCard(machine.SPI(2,sck=Pin(18), mosi=Pin(23),miso=Pin(19)), SD_CS)vfs = os.VfsFat(sd) # 初始化fat文件系统os.mount(sd, "/sd") # 挂载SD卡到/sd目录下
2021-11-04 10:37:53
1753
原创 python语法笔记
1、 (7 // 2)=3,两个除号可以得到除法的整数部分2、3**5=243,两个乘号表示幂3、判断变量类型>>> a = '44.2'>>> b = 44.2>>> type(a)<class 'str'>>>> type(b)<class 'float'>4、print() 相当于是在所键入的字符串的末尾按下回车键。加上,end=’’ 的话,就等于告诉 print() 不需要在字符串末
2021-11-02 10:44:58
686
原创 microPython学习笔记2-i2c总线、spi总线的控制
一、i2c总线的使用1、基本功能2、驱动ssd1306屏幕(12864)import machinei2c = machine.I2C(scl = machine.Pin(21), sda = machine.Pin(22), freq = 100000)print(i2c.scan())
2021-11-01 11:27:40
478
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人