数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 15653|回复: 96

[综合] 10块包邮的墨迹空气果fun换主板,ESP8266接入blinker APP,联网对时显示天气

    [复制链接]
发表于 2021-10-16 23:56:25 | 显示全部楼层 |阅读模式
0.前言

10块的车有不少人上车了,现在都涨价到20块了论坛有大佬已经解决了联网对时显示天气等问题,已经可以正常使用了。还有大佬已经在原来的板子上开发固件了,听说周末要放出资料。

以下内容只能说自娱自乐

1.想法

当初发车的时候果断上车了,10块钱又不贵,买个PM2.5模块都值。有人发拆机图的时候,发现不是ESP8266,不好折腾了,不过板子虽然复杂,但是外设不复杂,就是段码屏,PM2.5,SHT20。接插件定义板子上都标明了,改主板也不复杂,于是就想要改成ESP8266


2.硬件

2.1硬件设计
主控使用ESP-12F,也可以考虑ESP-07S,这样就可以用原装天线了。取消电池方案,原因是需要充电、升压、电量显示、电源切换,长时间通电也不太安全(主要是简化设计)。使用DS3231作为时钟,就是有点贵,也可以不用,直接使用网络时间也可以(进一步降低成本)。PM2.5还是增加MOS开关控制,可以间歇工作。接插件是1.25 立式贴片的,这个要买了。LDO是3.3V 500mA。没有加入CH340,因此USB用不了,PM2.5占用了串口(其实用软串口连PM2.5也可以,内置USB转串口读log、刷机都很方便,主要还是简化设计)。
以上,不考虑时钟芯片的话,成本应该不超过10块钱……

其实还可以考虑吧原装的核心板拿掉,飞线接ESP-12F,成本更低


PCB如下


3D效果图


2.2打样
注意PCB厚度是1mm的


2.3焊接
PCB先预热,不然锡膏不粘


针筒点锡膏


放上所有元件


加热焊接,成品如图,不用动烙铁,比手工焊接又快又好


跟原装的板子合影,一眼就看出是右边山寨的板子


取出原装电池,准备联调了



3.调试

将外部传感器都连到接插件上


SHT20没驱动好,PM2.5也没有驱动


修改SHT20,如图,写完寄存器指令要等一段时间再去读,否则是读不到的



按照通信格式解析PM2.5数据,注意,1包是30个字节





4.组装

东西都凑齐了


先把PM2.5接头插上,再安置主板


装好盖板,电池座与盖板干涉了,不过可以凑合用


拧好螺丝



上面,注意触摸电路要提前修好


底面


连好尾部的接插件,合体


合体完成




5.功能介绍

除了不能显示电池电量外,其他都能显示



触摸一下,显示日期3秒钟,再触摸一下,可以提前结束


天气需要联网过一段时间才能显示,这图是后补的,上电后大概1分钟就可以显示天气了。初始化后更新一次天气,后面每2小时更新一次,blinker限制每天查询天气100次,不过他们的信息是2小时更新一次


双击后面按键关闭WIFI,会重启一次,再次双击启用WiFi,还会重启一次,长按3s重新配网,配网时只有WiFi logo显示,其他都不会显示,配网是Web配网


DS3231已经精度很高了,首次上电会对一次,以后每隔7天对时一次,平时显示的都是DS3231的时间,后面按键按一下也会对时。
APP如图,可以显示PM2.5、温度、湿度的当前数据,并记录曲线,可以设置亮度占空比0~100,可以设置PM2.5更新周期0~100分钟,0表示一直采集,logo不闪烁,其他设定的话,间隔一段时间,每次采集1分钟且logo会闪,文本用于显示本地地址,用于web OTA升级。






6.功耗

最高亮度,PM2.5启动后的功率


最高亮度,PM2.5关闭的功率


背光关闭,PM2.5关闭的功率


替换下来的原装主板和电池落寞的身影


完成了,谢谢大家捧场


其他帖子:

墨迹空气果fun触摸损坏解决办法
https://www.mydigit.cn/thread-279897-1-1.html

墨迹空气果fun主控板的边框图
https://www.mydigit.cn/thread-279399-1-1.html

后续:空气果AirNutFun ESP8266开源软硬件:
https://www.mydigit.cn/thread-284731-1-1.html


题外话:如何驱动段码屏

1、找到驱动芯片的资料,看看IIC通信格式和指令
2、一般初始化之后,就是发段码的数据,可以参考手册,也可以逻辑分析仪直接抓
3、找到发送段码的指令,尝试发不同的信息,看看是如何显示的
这里最好用单片机进行UART转IIC


4、找到每个段对应的字节和bit位
5、根据4的信息写段码的驱动
6、18楼更新驱动代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 14家元 +240 收起 理由
翟占祥 + 5
玫瑰余香 + 20 多打点板子出来,福利坛友。
kaixi_ants + 20 優秀文章
jf201006 + 20 謝謝分享
番茄炒鸡蛋 + 30
佳维 + 20 謝謝分享
moontree + 20 謝謝分享
sunnyquan + 20 原創內容
隔壁来的 + 20 666666
williamgarci + 20 謝謝分享

查看全部打赏

 楼主| 发表于 2021-10-17 00:40:15 | 显示全部楼层
azzajazz 发表于 2021-10-17 00:37
这玩意玩的是真溜,当时人家发车的时候,我还想着应该没什么人玩,我都没上车。 ...

现在卖16了,还可以上车
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-17 14:33:52 | 显示全部楼层
aacyxjz 发表于 2021-10-17 07:55
牛掰了,膜拜一下,求一份pm2.5模块驱动代码部分学习一下谢谢
  1. typedef enum
  2. {
  3.   PM25_Head1,
  4.   PM25_Head2,
  5.   PM25_Length,
  6.   PM25_Data
  7. }PM25_ST;

  8. PM25_ST pm25St = PM25_Head1;
  9. /**
  10.   *  @brief serial of pm2.5 loop
  11.   *  @param[in] none.
  12.   *  @param[out]  none.
  13.   *  @return none.
  14.   */
  15. static void Display_PM25_Loop(void)
  16. {
  17.   static uint16_t dataLength = 0;
  18.   uint16_t sum, i, chksum;
  19.   if(digitalRead(PM25_POWER_PIN) == HIGH)
  20.   {
  21.     if(Serial.available() > 0)
  22.     {
  23.       switch(pm25St)
  24.       {
  25.         case PM25_Head1:
  26.           pm25Index = 0;
  27.           pm25Buffer[pm25Index] = Serial.read();
  28.           if(pm25Buffer[pm25Index] == 0x32)
  29.             pm25St = PM25_Head2;
  30.         break;
  31.         case PM25_Head2:
  32.           pm25Index = 1;
  33.           pm25Buffer[pm25Index] = Serial.read();
  34.           if(pm25Buffer[pm25Index] == 0x3D)
  35.             pm25St = PM25_Length;
  36.           else
  37.             pm25St = PM25_Head1;
  38.         break;
  39.         case PM25_Length:
  40.           pm25Index++;
  41.           pm25Buffer[pm25Index] = Serial.read();
  42.           if(pm25Index >= 3)
  43.           {
  44.             pm25Index = 4;
  45.             pm25St = PM25_Data;
  46.             dataLength = pm25Buffer[2] * 256 + pm25Buffer[3] + 4;
  47.           }
  48.         break;
  49.         case PM25_Data:
  50.           pm25Buffer[pm25Index] = Serial.read();
  51.           pm25Index++;
  52.           if(pm25Index >= dataLength)
  53.           {
  54.             sum = 0;
  55.             for(i=0; i<dataLength-2; i++)
  56.             {
  57.               sum += pm25Buffer[i];
  58.             }
  59.             chksum = pm25Buffer[dataLength-2]*256 + pm25Buffer[dataLength-1];
  60.             if(chksum == sum)
  61.               Dis_Pm25 = pm25Buffer[6]*256+pm25Buffer[7];
  62.             pm25St = PM25_Head1;
  63.           }
  64.         break;
  65.       }
  66.     }
  67.   }
  68.   else if(Serial.available() > 0)
  69.   {
  70.     Serial.flush();
  71.   }
  72. }
复制代码


随便写的



打赏

参与人数 1家元 +20 收起 理由
aacyxjz + 20 熱心助人

查看全部打赏

回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2021-10-17 14:36:53 | 显示全部楼层
tangcailin 发表于 2021-10-17 08:17
千万别上车,现在买发的都是另外一种不带时间显示的sport版本,没得折腾。 ...

Sport版本更好玩,
GD32的单片机,蓝牙模块,彩屏,
缺少WiFi可以考虑WiFi转串口,飞线到单片机上,
潜力无限,比FUN版更好玩
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-10-17 14:37:29 | 显示全部楼层
qrut 发表于 2021-10-17 08:57
不错,可以再加个脱机对时功能~

脱机对时代码太麻烦,懒
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-10-17 21:12:06 | 显示全部楼层
adsl_95 发表于 2021-10-17 20:36
加热板怎么用?
提前摆好了,再放上去?
焊完了不用拿下来吗?(余热时间很长,可能塑料件受不了) ...

焊完了就用镊子夹下来
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-18 09:21:05 | 显示全部楼层
ycg9603 发表于 2021-10-18 09:09
这个牛了,看的有点恍惚,app也是单做的?

APP是blinker提供,可以自定义界面
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-18 10:53:19 来自手机浏览器 | 显示全部楼层
ww5223017240 发表于 2021-10-18 09:38
都这么改了其实把屏幕都改了更好,就是觉得屏幕显示内容太少所以没上车 ...

找到合适的屏幕不容易,要是彩屏得上esp32了,成本太高,不值得
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-18 10:56:37 来自手机浏览器 | 显示全部楼层
43726664 发表于 2021-10-18 09:50
商家优先出成本低的FUN,打算先把FUN卖完再卖Sport。
结果没想到坛子里的大神把FUN玩出花儿来了!
涨价到20 ...

sport潜力巨大,单片机好改是gd32可以参考stm32,资料多,再飞线连上WIFI转串口模块,到时候做个WIFI时钟小电视什么的,不比这个高级?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-18 12:22:41 来自手机浏览器 | 显示全部楼层
43726664 发表于 2021-10-18 11:11
应用层面我不懂,但是但就驱动层面,TFT屏的初始化序列难搞定,通用的初始化代码有可能点亮,但是效果和 ...

初始化指令可以用逻辑分析仪抓呀
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-18 14:02:29 | 显示全部楼层
Hoobers 发表于 2021-10-18 13:04
膜拜大佬,8266新手,只会8266基础和用blinker点灯,请问大佬你那种blinker进阶交互和8266在线固件升级在哪 ...

这些示例里面都有,文件-示例-第三方-blinker
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-18 14:03:27 | 显示全部楼层
43726664 发表于 2021-10-18 12:33
果然专业玩家设备够专业。
低分TFT一般采用SPI接口,从Sport的PCB走线来看,LCM大概用掉9根线,有可能是S ...

ESP8266点彩屏有点吃力吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-19 00:45:52 来自手机浏览器 | 显示全部楼层
stk 发表于 2021-10-18 22:23
Good night,能设计一个啊,温度湿度连续记录的。功能吗?最好是一次能记录,一年的一天,记录4次。 ...

可以存到FS里,但是不好导出来
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-19 22:01:27 | 显示全部楼层
ouyangyuye 发表于 2021-10-19 21:37
10元的车没上,15元的上了,后来就16了。
刚去看好家伙,39了...
还没开始折腾,等终极方案出来再说,先收 ...

有大佬在原板上开发固件了,拭目以待吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-25 22:56:31 | 显示全部楼层
本帖最后由 胡奚曷 于 2021-10-25 22:57 编辑
xiaodaishu 发表于 2021-10-25 21:42
楼主大大,能不能只换WIFI主控板?
我给个转换板模型

这个方案考虑过,但是不准备做,因为不知道PIN脚定义,而且WiFi下面原来的板子是铺铜的,这个ESP12F天线会受影响的,不合适
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-11 20:24:29 | 显示全部楼层
墨迹空气果AirNutFun ESP8266主板开源软硬件
https://www.mydigit.cn/thread-284731-1-1.html
(出处: 数码之家)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-21 04:10 , Processed in 0.156000 second(s), 10 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表