查看: 3362  |  回复: 45
[调试记录贴] 温湿度气压万年历 本帖主对外承接开发, 联系作者
JNCK
2
主题
131
回复
该帖子为嘉立创认证过的开发案例,案例是对作者实际开发产品的介绍,您可以通过这些案例去找到和自己产品相关的一些方案或解决途径。 查看更多案例 >>
发表于2016-10-06 11:55:20 | 显示全部楼层
1# 电梯直达

因为国庆差点把电子制作节的事给忘了,昨天赶紧开始做。

最近对Arduino感兴趣,所以MCU使用Atmega328。请大家帮忙看一下原理图,提些建议。

----------------------------------------------------------------------

补充电路板功能:

  • OLED显示
  • 时钟显示
  • 温湿度显示(电路板上放了2个温湿度传感器,主要是为了对比测试芯片效果)
  • 气压显示
  • USB转串口,增加上位机功能,增加可玩性,可在OLED上显示更多内容。
  • MCU使用Atmega328,可以玩Arduino

以上借本次机会学习的主要功能,其中重点是测试温湿度传感器性能,手边有现成的设备,到时会公布测试数据。

另外,该电路板最终会做成下图效果,可以放在办公桌上使用。有通讯、有显示、可使用Arduino,配合上位机,可玩性非常大,这就是本设计最大的亮点。

----------------------------------------------------------------------

PDF版本:THPC.zip

JNCK
2
主题
131
回复
发表于2016-10-06 17:34:16   |  显示全部楼层
4#
发表于2016-10-06 15:30:20  2# 没有时钟IC?锂电ib可以直接充?串个二极管,在小电流时也有4.5V吧?没电了,充好电再重新设时间?

多谢提醒。

该板子是Arduino基础上设计的,时钟使用swRTC(Arduino软件时钟)。现在这样开关一断时间就没了,需要将开关移到USB与锂电池之间。

锂电池那块是按照最简单的方式来,只要能用就行。这个电路是我从别的电路板上抄下来的,还不知道能否工作。

JNCK
2
主题
131
回复
发表于2016-10-06 17:50:08   |  显示全部楼层
5#
发表于2016-10-06 17:05:08  3# 楼主最好能简单介绍一下这PCBA板的功能、目的、产品亮点、原理图的相关介绍(如器件组成有哪些、工作过程或工作原理如何等等...
多谢提醒,已更新
JNCK
2
主题
131
回复
发表于2016-10-06 20:56:07   |  显示全部楼层
7#
发表于2016-10-06 18:22:41  6# 其实PM2.5比气压有用多了,就是传感器太大!
好主意,以后再考虑吧
JNCK
2
主题
131
回复
发表于2016-10-06 23:44:58   |  显示全部楼层
10#
发表于2016-10-06 21:50:25  9# 个人愚见,外观设计的的还不是那么靓。楼主是否考虑过修改外观?

这版估计外观是完成不了了,外观要与板子结合,现在板子还没达到想象中的要求。先把功能实现再说。

吃过晚饭开始布局,一晚上总算搞的差不多了,下图是自动布线的效果,明天再修改一下布线就投板。

JNCK
2
主题
131
回复
发表于2016-10-06 23:48:04   |  显示全部楼层
11#
发表于2016-10-06 21:31:32  8# 我做过相关的万年历,增加阴历,星期显示,可能会更好一点!
水平、精力都有限,为了不设计不难产,功能就不增加了,后面再完善
JNCK
2
主题
131
回复
发表于2016-10-08 18:05:06   |  显示全部楼层
19#
发表于2016-10-07 16:19:33  14# 据我所知,328只有一路硬件I2C,电路图中引出了三路I2C,是要用软件模拟实现么?I2C本身就可以寻址复用,不明白你这...
I2C还不熟悉,所以没用,每个I2C接口到MCU串了电阻,到时飞线再试一下
JNCK
2
主题
131
回复
发表于2016-10-08 18:12:10   |  显示全部楼层
20#
发表于2016-10-07 16:21:36  15# 根据328的Datasheet,在3V3电压下跑16Mhz是不稳定的,建议改为8Mhz晶振。

刚才看了一 下Arduino原理图,那是5V的,我只看晶振是16MHz就照搬了。

昨晚把PCB画完,今天已经投板了。感谢各位的建议,让我学到了新知识。

JNCK
2
主题
131
回复
发表于2016-10-08 18:12:55   |  显示全部楼层
21#
发表于2016-10-07 10:18:54  12# 锂电池没有充电管理,可能上电保险丝就会断。

看来锂电池是用不了,

JNCK
2
主题
131
回复
发表于2016-10-08 18:18:41   |  显示全部楼层
22#
PCB来了,下单时选了SMT,结果审核后显示电阻电容都没办法贴,仔细一下原来还有那么多规则,懒得看了又重新下单把SMT取消了。这板子器件也不多,准备回来手焊

THPC.zip

JNCK
2
主题
131
回复
发表于2016-10-13 07:10:26   |  显示全部楼层
24#

板子昨天下午到了,焊上USB、电源和MCU,发现好多失败的地方啊

问题1,是电源,到仓库一看只有5.0V和3.0V,选了个5.0V的焊上,结果电脑上显示有串口,但是发送数据时CH340B与MCU连接的TX、RX信号灯不闪,一查资料,原来CH340B的3.3V与5.0V硬件设计不一样,可能是这个原因,后面再查。

问题2,使用Arduino Nano给这块板子下载bootloader,一开始想当然将两块板子ISP接口连在一起,结果不行,上网一搜索发现原来需要将Nano的PB2(SS)连接到被下载的板子上的RESET;

问题3,下载时,被下载的板子的D0 D1(RX TX)是不能连接任何设备的,去掉后终于可以下载了。

JNCK
2
主题
131
回复
发表于2016-10-13 20:12:52   |  显示全部楼层
27#
发表于2016-10-13 10:46:32  26# USB外壳没有接地,底部也没有敷铜。可能与自动布线有关吧。
这个有讲究吗,图中故意这样做的
JNCK
2
主题
131
回复
发表于2016-10-18 20:34:48   |  显示全部楼层
28#

今天郁闷了,板子下载完Bootloarder后只能使用ArduinoIDE下载一次程序,可能真的是楼上所说3.3V 16MHz时Atmega328不稳定,明天把电源割了试一下。看来重新打样是必须的。

下面记录一下今天调试内容:

-----------------------------------------

之前使用5.0V LDO板子无法工作,已经重买了RT9193-3.3V焊上。

之前已经使用ArduinoNano给板子成功下载过Bootloader,但是发现数据时串口RX、TX上的蓝色LED闪烁不明显,误以为下载失败,所以又买了USB ISP回来下载。

免驱USB ISP插上电脑后是不显示COM,第一次用不知道,还请教了商家了。使用USB ISP下载时需要设置熔丝位,网上搜索后操作步骤如下:

使用工具软件:
USB ISP
progisp1.72
Arduino Nano
操作步骤:
在Arduino安装目录下找到boards.txt(C:\Program Files (x86)\Arduino\hardware\arduino\avr);

见下图方框所示:

Arduino Nano ATmega328 对应的熔丝位需要设置为:
熔丝低位=0xFF
熔丝高位=0xDA

熔丝扩展位=0x05(实际操作时扩展侠的高位无法设置,所以没有按照文件中设置为0x05)


方框中最后一行显示Bootloader文件是atmega\ATmegaBOOT_168_atmega328.hex,progisp1.72 中调入该文件下载即可。
---------------------------------------------------------------------------------------

有BMP180和HDC1080都是淘宝买的,好贵。三颗传感器的封装使用烙铁都没焊好,改用热风枪才搞定,祈祷芯片没吹坏了。下面show一下焊好传感器的实物:

JNCK
2
主题
131
回复
发表于2016-10-19 20:50:21   |  显示全部楼层
30#

割了板子电源,USB进来防反接的二极管压降太大(0.7V),也去掉了,MCU改成5V供电,烧写Bootloader后通过串口还是只能下载一次,RX、TX引出使用外部USB转TTL还是不行。找出官方原理一对,发现USB转串口芯片的DTR串着一个电容连接到MCU的RESET引脚上,改之,OK了。技术不精啊。板子已被改的面目全非了。还好,赶在出差前把下载程序搞定。

JNCK
2
主题
131
回复
发表于2016-10-19 23:19:48   |  显示全部楼层
31#
11点了,SHT31还未访问成功,后悔使用普通IO模拟I2C了,SHT31代码还得重新写。得洗洗睡了,明晚继续吧。
JNCK
2
主题
131
回复
发表于2016-10-21 12:38:12   |  显示全部楼层
33#
发表于2016-10-21 10:42:09  32# 该回复已被删除。

谢谢,不用了。芯片应用示例已经有了,I2C的问题才卡住的,由于没有使用硬件自带的I2C,Arduino的I2C库没法使用了,所以得使用IO模拟I2C。现在已经解决了。

---------------------------------------------------

板子上传感器都没有使用硬件I2C口,所以需要使用软件模拟I2C,又是一个没做的,得重头造轮子了。从昨晚折腾到现在,资料看了N篇N遍,网上例程试了若干种,终于有眉目了,现在已经可以读取BMP180的温度了,解决一个其它的都好解决了。马上得赶紧去吃午饭,下午还得去客户现场了。

这次有两点收获:

  • Arduino同一文件中函数不需要声明,少写若干代码;
  • 安装的第三方库的代码可以直接调用,只需要在文件头包含头文件即可;
这两点真是太方便使用了,这也是Arduino的优点,不需要关心太多内容即可玩起来。
看下面简洁的代码吧:

主程序

Adafruit_BMP085 bmp;
void setup() {
  Serial.begin(115200);
  if (!bmp.begin()) {
  Serial.println("Could not find a valid BMP085 sensor, check wiring!");
  while (1) {}
  }
}
  
void loop() {
    Serial.print("Temperature = ");
    Serial.print(bmp.readTemperature());
    Serial.println("'C");
    Serial.println();
    delay(500);
}
BMP180与BMP085代码通用,这个是找的第三方库。普通IO模拟I2C也是找的第三方库。

所有代码我只添加两行代码,在BMP085应用代码中包含头文件和定义了myWire():

#include <SoftwareWire.h>
SoftwareWire myWire( 5, 4);
然后把BMP085应用代码中原来使用Wire的全部修改成myWire。这么长时间的努力换来了So Easy的方法。

下图是实际效果,手捏传感器可以看到温度变化。



JNCK
2
主题
131
回复
发表于2016-10-21 12:50:25   |  显示全部楼层
34#
发表于2016-10-21 10:42:09  32# 该回复已被删除。
再感慨一下,Arduino真的是非常非常好用,不过支持的MCU非常少,真的希望能有支持热门MCU芯片的“Arduino”。
JNCK
2
主题
131
回复
发表于2016-10-21 17:32:39   |  显示全部楼层
35#
HDC1080、BMP180、SHT31均可以读出数据了。还是要赞一下Arduino,SoftwareWire竟然可以复用,只需要重新定义一下引脚。
调试中遇到一个问题没搞明白:
hdcWire.write((uint8_t)0x00);
hdcWire.write((uint8_t)0x00);

hdcWire.write(0x00);
hdcWire.write(0x00);

write参数是uint8_t类型,前两行那种格式可以,后两行就会报错。而且数值改成0x02也没有报错。错误信息:

\ClosedCube_HDC1080\src\ClosedCube_HDC1080.cpp: In member function 'void ClosedCube_HDC1080::begin(uint8_t)':
\ClosedCube_HDC1080\src\ClosedCube_HDC1080.cpp:47:19: error: call of overloaded 'write(int)' is ambiguous  hdcWire.write(0x0);


  现在出差在外,无法将OLED焊上调试,下一步先把modbus搞定,然后再整个上位机。


JNCK
2
主题
131
回复
发表于2016-11-14 21:40:05   |  显示全部楼层
36#

最近把数据库给跑通了,详见 http://club.szlcsc.com/article/details_904_0_1_0_1_1.html

有个问题暂时还未解决,启动时从template表复制结构新建表,模板中字段类型为数字时,复制到新表中写入带小数的数值最终都会变成整数

JNCK
2
主题
131
回复
发表于2017-06-30 11:25:18   |  显示全部楼层
39#
发表于2017-06-25 17:01:23  38# 请教下,我想将mega2560跟w5500做在一块板子上,这个难么
不难,网上资料很丰富的
JNCK
2
主题
131
回复
发表于2017-09-08 14:14:34   |  显示全部楼层
41#
发表于2017-09-06 13:17:12  40# 加下微信b08070324,详细了解下,可以么

不好意思,这个我也没做过。arduino有w5500的库,所以才觉得做起来不难。

实在不行,网上买个W5500的模块回来抄个原理图也能解决

JNCK
2
主题
131
回复
发表于2017-09-16 14:59:48   |  显示全部楼层
43#
发表于2017-09-16 11:59:48  42# 我不懂电路,Arduino官方有相关资料,可以找到w5500的原理图,都是eagle格式的,我也不会弄图,要不你帮忙看看...
提个具体需求我看看
JNCK
2
主题
131
回复
发表于2017-09-29 11:33:17   |  显示全部楼层
46#
发表于2017-09-18 11:02:22  44# 将ArduinoMEGA与ArduinoEthernetshieldv2两个板子组合在一块板子上,32路作为输入、32路...
还需要做吗,费用一万,含一套硬件调试好的板子

主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部