mcuthonk.22.11.01

最近又看到一个叫做w801的mcu,和esp32一样,既有蓝牙又有wifi用,而且貌似价格比esp32便宜很多🤔我现在只要看到mcu就想买一个回来玩,不管能不能用得上🤔这种玩意在我这儿都当大号玩具玩的(确信🤔

所以我随便搜了一个9.9包邮的,结果到了之后发现它除了开发板外还附带了一个同款芯片🤔那真滴牛批,那个芯片貌似一个6块钱,开发板值个十多块吧,我寻思这算不算亏本卖了?🤔

反正无论如何那块芯片我肯定没法用,所以只能放起来了🤔这个w801开发板上面貌似没有usb转ttl,所以芯片直连usb的可能性是存在的,也就意味着它能模拟usb hid的可能性以微粒子形式存在(大嘘🤔

现在剩下的事就是找个sdk了,arduino ide貌似不支持搞它,就比较蛋疼(恼🤔

话说它的官方店里还有一款w800,也是蓝牙+wifi,但有板载温湿度传感器和dac的型号,一个20🤔我这几天搞的不就是温湿度传感器吗?这玩意肯定比esp8266外接看上去好多了(迫真🤔

atthonk

这段时间我还发现了另外一款确定有模拟usb hid功能的mcu,叫做attiny,顾名思义就是做atmega系列的那个厂子atmel出的🤔从某种程度上说它的确挺tiny的,甚至只有dip-8封装,也就是某些主板上bios存储芯片或者声卡和dac上插的运放用的那种🤔而且价格也比别的atmel便宜多了,像我买的attiny88只要6块钱,attiny85也只要12,相比之下atmega32u4至少也得24(恼🤔但它仍然支持模拟usb hid,估计如果它只有dip-8的话,usb占两条线,vcc和gnd占两条线,说实话它也没几个多余的io就是了(确信🤔

等等,attiny85是dip-8,attiny88可是dip-20,而且这两个貌似都支持多于插脚数的io,attiny85支持到6路io,attiny88支持26路io,这可真是邪乎🤔

wchthonk

我购物车里还放着一款叫做ch552g的mcu,也支持usb hid🤔和知名(大嘘)的ch340一样,出自一家叫做wch的厂子,只不过ch340只支持usb转ttl或者说串口,它支持的东西稍微多一些🤔本质上来说这玩意是种51单片机,我上大学的时候就听说过这种玩意了,但我那时对单片机这种东西没啥兴趣🤔

它价格基本上和attiny88是一个级别的,那没什么好说的,随手买一个就vans了🤔

barbruh.22.10.14

难以想象我又一次接近deadline impact了(恼🤔到今天三个小号的蒙德版本活动才打完一个🤔

但从乐观(迫真)的角度来看,打完一个号的版本活动总共需要花的时间居然比我预期的要少很多,那三个又臭又长的主线只需要完成第一个就可以了,这部分大概需要花两小时🤔之后就可以玩各种各样的挑战任务了,这部分全打完应该只需要最多四小时,运气好点只需要三小时半,反正我花了三个小时基本上打得只剩下连续打五处怪这种玩意,中间的路途会生成一大堆气流和推力环(忘了叫什么了),去年的雪山活动里也出现过,应该半小时就能搞定(确信🤔

这周貌似还剩三天时间,剩下两个号应该能一天搞完一个,至于最后一天,也许可以用来将剩下两个主线也撸完🤔但我记得这两个主线不玩它们也能撸满武器精炼材料,而且貌似也没有送任何绝版装饰或者诸如此类的东西🤔所以它们的优先级也许可以调低一点,实在是没时间完成了也没关系(确信🤔

thonk

今天那四个esp-01烧录器也到了,随便取出一个用,这次它能烧录esp-01s了(确信🤔那接下来就不用多说了,将前几天写好的程序灌进去,再插上温湿度传感器模组,接好供电,另外一个discord频道也出现了消息🤔

但貌似温湿度并没有显示出来🤔原来我搞错了io接口的编号,这部分改完后终于出现了温湿度数值,只不过它们和我之前那个discord温湿度计的值相差很大🤔我估计dht11作为传感器搞不好真的只能图一乐,真测温湿度还得看aht20(半恼🤔

接下来一件非常生草的事情发生了,我调试的时候将其再次插入了之前那个不能烧录的无按键烧录器上,它居然能接收到esp-01s串口发送的信息,这可能说明它不能用来烧录的原因是它从设计上就不能将esp-01s切换成烧录模式,或者它切换的功能出了故障🤔

这件事就算彻底搞完了,接下来我又买了两个esp8266玩具,反正这种东西一个才不到10块钱,就当玩具买了(迫真🤔一个什么机智云,貌似和esp-01s一样都是一家叫做安信可的厂子出的,主打低代码(大嘘)编程,不需要刷固件,原厂固件只需要写点逻辑代码就能在手机上遥控智能家居啥的,可以认为是个定制版米家(迫真🤔但从硬件来说,它最大的亮点是esp板和usb转ttl板分离,编程的时候把它们组合成一个板子,跑的时候只需要给esp板插上供电就vans了(确信🤔它还集成一个rgb led,和一个红外发射器,改造成远程空调遥控器的可能性微存?反正肯定比米家的那个蓝牙红外网关便宜得多就是了(确信🤔

我听说安信可原装的esp-01s貌似也能使用什么低代码固件,但我估计这些玩具拿到手不都得先刷个micropython,或者直接上arduino ide?🤔

除此之外我还买了个什么d1 uno r3,就是上次说的那个外观模仿arduino uno r3的玩意🤔不清楚买这个图啥,可能是图它有一个dc输入,这样也许我可以把之前写的discord温湿度计移植到上面,然后随便找个12V电源插上去,免得它占用usb口了🤔当然也有可能我有别的迫真智能家居项目,比如在阳台乃至室外也设置一个温湿度监测站🤔

话说真arduino现在还要三四十块钱,和我上大学的时候一样贵🤔当然说贵也不至于,那时更贵的有gpio功能的单片机是树莓派🤔不清楚那时有没有esp8266这种玩意,但当它出了的时候,不仅同样外观的开发板价格是arduino的三分之一,它还有远超atmega芯片的处理速度、ram和存储,甚至可以实现一部分树莓派的功能,比如几乎所有需要联网的任务🤔怎么说呢,国产芯片就是牛批(吴慈悲🤔

另外一方面,esp8266也是米家几乎所有迫真智能家居产品的核心,也是为什么那些能联网远程遥控的电饭锅啥的卖那么便宜,没有esp8266我估计就没有什么米家(确信🤔

当然,还是那句话,模拟usb hid的功能除外,但能模拟usb hid的arduino再怎么说也是装有atmega32u4的arduino leonardo,而非装有atmega328p的arduino uno,后者和esp8266一样仍然需要串口转ttl,所以说esp8266能完全替代arduino uno r3一点问题都没有(迫真🤔话说什么时候模拟usb hid的微控制器也来一个国产替代罢,我已经等不及了(大嘘🤔其实luat的air系列板子貌似就支持模拟usb hid,但目前支持的功能比较少,只支持模拟键盘输入可见字符,反正amber速射肯定是不行了(恼🤔

thonk2

刚又迫真研究了下,现在使用atmega32u4的开发板,最便宜的到了24.20,反正比我去年买的时候价格便宜了不少,那时至少得30🤔它还有一个更小的usb-a板子,可以不用数据线直接插进机子里的那种,牌子貌似叫cjmcu,不带tf卡槽的版本34,带tf卡槽的版本45🤔这些玩意我就不买了,它们还是比esp8266玩具贵多了(大嘘🤔

另外树莓派貌似出了一个叫做rp2040的mcu,定位貌似和atmega32u4差不多,也是usb直连芯片,所以也存在能用来模拟usb的可能性(确信🤔最主要的是它的价格比atmega32u4便宜多了,裸芯片只要5块钱,基本上和什么esp8266、luat air一个价,而做成的开发板好像也只要16还是17来着🤔但它的话问题是没法用arduino ide编程,这可能会成为一个问题(半恼🤔

bruhfei.22.10.12

现在我前几天买的另外一批单片机玩意也到了,这次到了一个s2 mini,也就是那个最便宜的esp32板子,一些配件,还有一个玩具一般的esp-01s和esp-01s烧录器还是啥玩意来着🤔

极其生草的是esp-01s居然连一个单独的静电袋子都没有,导致我还以为他们没有给我发,直到我开始收拾包装时才发现它夹在里面(恼🤔接下来离奇的事情发生了,我都写好了程序,然后照常插上去刷机了,结果那玩意死活连接超时,而且用了114514个烧录程序,都连接超时🤔

这就有意思了,是烧录器坏了,还是esp-01s坏了?在它里面没有写入什么正经程序的情况下我完全无法确定,所以最后只有一个结论:两个玩意我都得重新买一遍(全恼🤔

这次我应该不会买什么两块多钱的无按键ch340烧录器了,那么还有什么esp-01烧录器可选?我目前看到的有四种型号,电路板好像都一毛一样,带有一个8pin插槽,一个引出来的8pin用来插跳线,还有一个reset按键,根据其usb转串口芯片不同,分为cp2104、cp2102、ch9012以及ch340四种🤔其中cp2104被称为所谓的原版,别的是不是在它的基础上换掉了usb转串口芯片?🤔价格方面,cp2104版是14.5,cp2012版是8.5,ch9012版6.7,而ch340版最便宜,只要4.6🤔反正我在两家店把四个芯片版本的烧录器都买了一遍,顺便还买了两个新的esp-01s,我就不信这次它还不能跑起来(🤔

我估摸着这些带有reset按键的版本也许可以用来随便刷机,而我现在有的无按键版本可能需要短接几条跳线啥的🤔我懒得折腾了,等那些玩意都到了再说🤔

thonkeqing

在寻求最便宜(大嘘)的esp-01烧录器还有usb转ttl的过程中,我发现了一大堆东西免邮费的店铺🤔某宝的价格排序功能向来没什么卵用,但在我找些单片机玩意的时候由于某种申必原因居然又能照常排序了,而且免邮的被排在了前面🤔然后发现什么d1 mini什么s2 mini,甚至包括我以前用过的nodemcu,全都是一个叫做wemos的厂子做的🤔不太清楚wemos到底是个品牌,还是个开源硬件项目,反正搜wemos就能出来什么d1 mini还是d1来着🤔而且更有意思的是,有时候它也会用到一个叫做lolin的品牌名,但基本上wemos和lolin是一个意思,甚至在pcb板上也一会儿印着wemos一会儿印着lolin(迫真🤔

wemos现在有一个官网,但lolin没有,到现在我甚至查不到它背后的实体,到底是哪国公司,实在是太申必了🤔

无论如何,它目前在卖的产品倒是可以查到的,都有下面几个:

  • d1系列:
    • d1 uno r3,提供了一个dc输入,layout迫真模仿arduino uno,据说可以和arduino uno外设实现114514%兼容(当然模拟usb hid它是做不到的,因为esp系列的usb都是usb转串口,而非像arduino一样主控本身提供usb功能),本质上是esp-12外加pcb,价格大概在12左右
    • d1 uno r32,基本上相当于将上面那个的esp8266模块换成了esp32模块,18
    • d1还有一个18650电池款,顾名思义可以用18650供电(也许还能充电),21.6
    • 它也有esp32模块版,价格达到了离谱的34.7
    • d1 esp32,看上去和下面的d32使用了同款esp32模块,但layout完全不一样,而且官网没有这玩意,但它既然叫做d1-esp32了我就暂且先放这里,23.3
  • d1 mini系列:
    • d1 mini v1,本质上是esp-12外加pcb,8.75
    • d1 mini v3,esp8266ex芯片裸露放置,目前我的discord温湿度计就跑在它上面,9.3
    • 另外nodemcu系列的esp8266板子也和wemos有关,简直就像d1 mini v3换了一个layout,价格也是9.3,它还有一个esp32版,13.3
    • d1 mini v4,改成了typec,而且加上了一个i2c接口,也许可以将aht20直接用i2c线接上去,9.6
    • d1 mini pro,接口非常全,既有i2c也有电池接口,有16MB的rom可选,而且除了内置天线外还可以外接ipex天线,然后再去转sma,21
    • d1 mini lite,使用了esp8295(esp8266+板载1MB rom),基本上没什么人买,13(还要加运费
  • d32系列:使用了esp32模块的板子,甚至有16MB rom版本,国内无货(恼
  • s2系列:使用了ESP32-S2FN4R2,顺便一提这个版本的esp32是没有蓝牙的
    • s2 mini,基本上可以视为d1 mini v4的esp32版,引出的接口比d1 mini多出了一排,没有单独的i2c接口,但多出了一个io按键,什么价格都有,甚至都有一个11.45的,你是一个、一个一个一个一个esp32啊啊啊啊啊(错乱
    • s2 pico,带一个oled屏幕外加i2c,价格非常离谱,至少40(仍然比m5stick便宜
  • c3系列:使用了ESP32-C3FH4,板载一个rgb灯,国内基本上买不到,其实最便宜的esp32-c3可以去买luat的,但有人反映那玩意没法上arduino ide它只有所谓的简约版不能用arduino ide,因为它砍掉了usb转ttl,那么问题来了,在没有usb转ttl的情况下它是用什么申必方式往里面烧录程序的?esp32-c3支持模拟usb hid的可能性微存?(大嘘
  • s3系列:使用了ESP32-S3-WROOM-1,有两个typec接口,国内尽管买不到这个牌子的,但貌似可以买到和它layout一毛一样的玩意,价格在45到59之间

wiebitte

https://www.esp32.com/viewtopic.php?t=24092

什么?esp-s2和esp-s3可以模拟usb hid(如果它们的开发板没有用usb转ttl来实现usb的话,很不幸的是至少我有的esp32板子都不是这样),而esp-c3的usb功能只能用来烧录程序和调试?wiebitte?🤔

但至少esp32-c3同时支持用串口和usb烧录程序,所以这样也就解释了luat的esp32-c3板子为什么在没有usb转ttl的情况下仍然能烧录程序了(确信🤔生草的是它的usb相关功能用的是gpio18和gpio1⑨,所以我估计在那个板子上那两个gpio要么直接连着板载usb接口,要么在连接板载usb接口的时候也引出了,但至少在调试时是没法用来处理io的🤔

所以到目前用esp32板子(无论是哪种版本,c3、s2还是更贵的s3)来模拟usb hid或者任何hid是别想了(悲🤔除非掏出两个gpio口来模拟一整套usb协议(可能还要涉及一些焊接啊,电路啊等玩意),但这样的话其实esp8266就能搞定🤔当然还有一种方案是用esp32(s2之外型号)的蓝牙功能来模拟蓝牙键盘鼠标,我在m5stick上撸了一个模拟键盘的,但出于某种申必原因它不支持同时模拟鼠标和键盘,而且还存在不可忽略的丢键现象,很明显不是什么适合用来搞速射amber的选项(恼🤔再说了,arduino ide编译和烧录esp系列固件的速度实在是太寄吧慢,而编译和烧录atmega32u4固件的速度就快多了,所以最后我还是用atmega32u4搞了速射amber🤔

espAYAYA.22.10.10

今天两个版本的d1 mini,还有aht20温湿度传感器都到了🤔我可以先拿v3随便写点玩意,比如arduino ide里面自带一个http示例程序,我可以先往discord频道里发点消息🤔

由于显而易见的原因,在esp8266里使用https是非常困难的,要么得把目标网站的证书指纹提取出来硬编码进代码,要么得套用什么什么框架,要么直接使用setInsecure()不安全地连接🤔我肯定选用了最后一个,毕竟我只是要发送一些温湿度数据上去,甚至都不指望它回复什么东西🤔

好,那我就用之前在cloudflare workers上设置的discord反向代理,几秒钟后discord聊天室里出现了一条新消息,不错,这不是从我的某台电脑或者手机发出来的,而是从一块可能只有10块甚至⑨块钱的esp8266儿童玩具发出来的(确信🤔

接下来我需要将aht20和esp8266相连,并使用某种代码从里面读数据🤔它的示例代码并没有地方设置针脚,所以我估计只能按照它的默认针脚连了(悲🤔而且理论上来说我买的玩意可以同时测温湿度和气压,但我只找到读温湿度的代码,那就先跑它那个示例,不错,温湿度都从串口输出里读出了🤔

接下来我只需要将这两个代码缝合在一起了(确信🤔现在有一个问题,它那个代码里字符串和温湿度是陆续打印到串口输出里,但我要是想把它们post到discord webhook上的话,我得将其合并成一个字符串,此时它就开始报类型错误了,字符串和浮点数没法合并(恼🤔

这玩意貌似是c还是c++来着,c的话使用sprintf构造字符串,结果它的http.post()里面接受的是一个String对象,不是char*(全恼🤔更离谱的是它这里用的是一个叫做String的应该是自创的字符串对象,S是大写,不是std::string,要是自作主张地使用std字符串相关函数,肯定得吃一个类型转换不动的错误(恼🤔比如浮点数转字符串部分,std::tostring肯定是用不了的,极其生草的是它居然提供了一个叫做String(114.514, 3)的函数来将传感器读出来的浮点数转换成String对象,就にま离谱(半恼🤔

反正无论如何,现在discord聊天室里终于打出了当前的温湿度,至此discord温湿度计正式搞完了,拔下来随便找个充电器插上,我就可以将其放什么鬼地方24小时监测室温了(确信🤔discord聊天室刚好可以用来做数据记录,时间戳都能记录下来,哪天我要是想画曲线图啥的,直接将discord频道的内容拖下来做处理就vans了(确信🤔

bruh

但现在这玩意有一个非常严重的问题,每次http请求的时间实在是太たま长了(全恼🤔具体来说,我给那段程序加了一个新功能,它开始发送http请求之前开始亮灯,发送完http请求之后停止亮灯,这样理论上来说每次发送http请求时会闪烁一下(确信🤔但我观察到的是,每次亮灯居然长达七八秒,哪怕我设置的采样和发送请求间隔是两秒,discord那边也得十多秒才能收到一条消息(恼🤔

我无端猜测导致它发送http请求时间如此之长的因素,无非两点:

  • 本来往cloudflare的服务器发送请求,然后再由cloudflare workers处理下发往discord,再接收返回,就是个非常耗时的过程

  • https带来了额外开销

前者基本上被否定了,因为我本机不上梯子发送一个https post请求,也就用了平均1.3s,远远低于esp8266的表现🤔如果是http的话只有0.6s,这两个时间都不算很长(迫真🤔

所以我无端猜测绝对是https拖了后腿🤔具体来说,一次非保持连接的https请求对应的tcp请求貌似是http请求的三倍啊三倍左右,相比之下https带来的额外计算开销反而可以忽略不计(迫真🤔

既然如此,那么cloudflare可以改成支持http,换句话说把什么always https给关了,这样以http方式向cloudflare发送请求时不会302跳转https了(确信🤔

接下来esp8266上的程序也得改,除了网址去掉s外,创建http客户端对象啥的需要用另外一个类,不然的话http请求会发不出去(恼🤔我无端猜测,这两个类发出的http请求搞不好连端口号都不一样,所以不能混用🤔

改完后它每次亮灯基本上不超过一秒,尽管仍然比较长,但至少可以忍受了(迫真🤔现在,也许我设置的采样和发送间隔这个数字变得真正有意义起来,我可以设置一个比如五秒或者11.4514秒的时间,然后扔一边去了(确信🤔