数码之家

 找回密码
 立即注册
搜索
查看: 14058|回复: 96

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

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

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

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

x
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,成本更低
未命名1634395994.png

PCB如下
未命名1634396007.png

3D效果图
未命名1634396022.png

2.2打样
注意PCB厚度是1mm的
未命名1634395537.png

2.3焊接
PCB先预热,不然锡膏不粘
未命名1634395556.png

针筒点锡膏
未命名1634395564.png

放上所有元件
未命名1634395575.png

加热焊接,成品如图,不用动烙铁,比手工焊接又快又好
未命名1634395592.png

跟原装的板子合影,一眼就看出是右边山寨的板子
未命名1634395606.png

取出原装电池,准备联调了
未命名1634395624.png


3.调试

将外部传感器都连到接插件上
未命名1634395641.png

SHT20没驱动好,PM2.5也没有驱动
未命名1634395655.png

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

按照通信格式解析PM2.5数据,注意,1包是30个字节
未命名1633790318.png
未命名1633790330.png
未命名1634395678.png


4.组装

东西都凑齐了
未命名1634395735.png

先把PM2.5接头插上,再安置主板
未命名1634395747.png

装好盖板,电池座与盖板干涉了,不过可以凑合用
未命名1634395764.png

拧好螺丝

未命名1634395774.png

上面,注意触摸电路要提前修好
未命名1634395783.png

底面
未命名1634395793.png

连好尾部的接插件,合体
未命名1634395802.png

合体完成
未命名1634395818.png
未命名1634395810.png


5.功能介绍

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

未命名1634395829.png

触摸一下,显示日期3秒钟,再触摸一下,可以提前结束
未命名1634395837.png

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

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

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

Dingtalk_20211016221156.jpg



6.功耗

最高亮度,PM2.5启动后的功率
未命名1634395689.png

最高亮度,PM2.5关闭的功率
未命名1634395705.png

背光关闭,PM2.5关闭的功率
未命名1634395697.png

替换下来的原装主板和电池落寞的身影
未命名1634395875.png

完成了,谢谢大家捧场


其他帖子:

墨迹空气果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
未命名1634399804.png
未命名1634009651.png
4、找到每个段对应的字节和bit位
5、根据4的信息写段码的驱动
6、18楼更新驱动代码


打赏

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

查看全部打赏

发表于 2021-10-17 00:08:45 | 显示全部楼层
楼主威武  大神牛掰
回复 支持 反对

使用道具 举报

发表于 2021-10-17 00:37:17 来自手机浏览器 | 显示全部楼层
这玩意玩的是真溜,当时人家发车的时候,我还想着应该没什么人玩,我都没上车。:mad:
回复 支持 2 反对 0

使用道具 举报

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

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

使用道具 举报

发表于 2021-10-17 06:46:15 | 显示全部楼层
:shocked:我知道为什么涨价了   大佬威武   :lol:已举报   精华帖  
回复 支持 反对

使用道具 举报

发表于 2021-10-17 07:11:25 | 显示全部楼层
有人敢想就有人敢做啊。
不过现在买的貌似都是sport版本的了。
回复 支持 反对

使用道具 举报

发表于 2021-10-17 07:23:51 | 显示全部楼层
无敌了,这玩的真溜
回复 支持 反对

使用道具 举报

发表于 2021-10-17 07:55:51 来自手机浏览器 | 显示全部楼层
牛掰了,膜拜一下,求一份pm2.5模块驱动代码部分学习一下谢谢
回复 支持 反对

使用道具 举报

发表于 2021-10-17 08:17:52 来自手机浏览器 | 显示全部楼层
azzajazz 发表于 2021-10-17 00:37
这玩意玩的是真溜,当时人家发车的时候,我还想着应该没什么人玩,我都没上车。 ...

千万别上车,现在买发的都是另外一种不带时间显示的sport版本,没得折腾。
回复 支持 反对

使用道具 举报

发表于 2021-10-17 08:31:18 | 显示全部楼层
牛啊,卖家给我发了一个没时间的郁闷
回复 支持 反对

使用道具 举报

发表于 2021-10-17 08:57:16 | 显示全部楼层
不错,可以再加个脱机对时功能~
回复 支持 反对

使用道具 举报

发表于 2021-10-17 10:01:25 | 显示全部楼层
看到的时候16了。开始10元,后来好像有过6元,
回复 支持 反对

使用道具 举报

发表于 2021-10-17 11:51:06 | 显示全部楼层
:praise::praise:牛逼牛逼,套件呢:lol:
回复 支持 反对

使用道具 举报

发表于 2021-10-17 12:42:34 | 显示全部楼层
只对主板感兴趣,其他的不会,有成品板子出售?,功耗比原来的低,原来1-2w,关闭pm2.5都要0.5w以上
回复 支持 1 反对 0

使用道具 举报

发表于 2021-10-17 13:01:49 来自手机浏览器 | 显示全部楼层
膜拜大神!你说把论坛的牛人集合起来开个公司什么创意产品做不出来?

打赏

参与人数 2家元 +7 收起 理由
翟占祥 + 3 精彩回帖
玫瑰余香 + 4 这个真不好说,牛人一大片

查看全部打赏

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 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

使用道具 举报

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

本版积分规则

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

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-6-3 22:42 , Processed in 0.249600 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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