当前位置:
文章详情

入手Arduino,开始漫漫折腾路

2016-01-14 12:03:20 118点赞 553收藏 97评论

上一次说到了关于激光pm2.5传感器直接连电脑检测空气中pm2.5浓度的应用。虽然能测,但是在使用便捷度上并不是那么方便,不要说背着电脑出门了,就算在家里各个房间测测都要折腾一番。于是卤煮开始折腾起arduino,关于arduino这货,说实话卤煮在折腾之前是听也没听说过的,只是在搜索pm2.5激光传感器的时候时不时看到这个词,于是卤煮就好奇心大发的去搜索了一下。

以下文字来自度娘:

Arduino是源自意大利的一个开放源代码的硬件项目,该平台包括一片具备简单I/O功效的电路板以及一套整合开发环境软件。Arduino可用来开发独立运作、并具互动性的电子产品,也可以开发与PC相连的周边装置,同时能在运行时与PC上的软件进行交互。

Arduino的电路板硬件可以自行焊接组装,也可以购买已组装好的成品,而整合开发环境软件则可通过网络免费下载与使用。目前Arduino的硬件部分支持Atmel的ATmega 8与ATmega 168等微控器。 此外,Arduino方案获得2006年Prix Art Electronica电子通讯类方面的荣誉奖。 Arduino的硬件电路参考设计部分是以知识共享(Creative Commons;CC)形式提供授权。相应的原理图和电路图都可以从Arduino网站上获得。


可能只看这样的文字不是很直观,下面上张图,让大家看一下arduino的本尊。

入手Arduino,开始漫漫折腾路

入手Arduino,开始漫漫折腾路arduino uno r3s.taobao.com

这是最普通也是最常见的Arduino UNO(淘宝售价大约20元)版子,卤煮在这块板子上掉过多个大坑。所以在详细说明之前先提醒下,如果你和卤煮一样想接多个传感器,或者想向网络传送多种数据,那就千万不要买它!!!!千万不要买它!!!!千万不要买它!!!!

那么ARDUINO这样一块板子能做些啥呢,卤煮了解下来,有很多人用他装智能机器人,多轴飞行器的飞控,以及3D打印机等等等等,反正都是异常高大上的项目,而卤煮的什么接个感应器做个空气监测的项目,算是入门中的入门了,当然,作为从零开始的Arduino小白,能做到最后实现卤煮想要的功能,卤煮已经异常满足了。

当然,除了ARDUINO,类似开源的硬件还有很多很多,如果对性能啥的要求比较高的,就有大名鼎鼎的树莓派。卤煮就不展开了(其实是完全不懂,想说也说不出啊)。

除了UNO之外,卤煮之后选择了比他性能更为强大的MEGA2560作为多感应器和网关的主机板,选择了NANO作为户外感应器的主机板。

入手Arduino,开始漫漫折腾路


入手Arduino,开始漫漫折腾路Arduino MEGA 2560s.taobao.com

A(淘宝售价大约50元)

入手Arduino,开始漫漫折腾路

入手Arduino,开始漫漫折腾路Arduino nanos.taobao.com

Arduino NANOArduino MEGA 2560(淘宝售价大约10元)

各型号之间的区别参加下表:

入手Arduino,开始漫漫折腾路

我们可以清楚的看到表中所说的使用人数最多的是UNO,但是UNO的内存只有2K,这是一个大坑,当UNO接了多个传感器之后,可用内存会变的很少,运行的时候稳定性会非常非常差,那会卤煮的UNO没有一次是运行正常的。所以卤煮后来选择了MEGA 2560,2560除了性能高之外,还有个额外好处是,几乎所有为UNO设计的扩展板,都能兼容MEGA2560,要知道UNO作为使用人数最多的ARDUINO型号,他的扩展板种类除了足够多之外,还足够便宜。

这东西看起来比较可能略显复杂,但是实际使用的时候,特别是接各类传感器的时候,却异常简单,见下图:

入手Arduino,开始漫漫折腾路
我们只要关心右边的0-13数字接口和左边的A0-A5接口以及所有的5v,3.3V,GND插口就行了。

好了,arduino的基本介绍就到这,大家如果想跟着卤煮自己动手的话,建议下载个网易云课堂,看里面的arduino教程,卤煮大概只看了3课就自己干上了。。。

好了,准备工作做完了,接下去就是接线工作了,接线是非常简单的工作,在这卤煮此时已经打算往上面塞一大堆感应器了,所以事先买了一块UNO用的传感器扩展板,如果你也准备和卤煮一样准备大干一番的话,这东西是用的到的,而且不贵(10元以下)。但是这块板子也有缺点,就是所有的VCC都是5V接口的,没有3.3V。卤煮装气压模块的时候按照说明在上面找到了一个3.3V引脚,但接上后气压传感器并不工作,所以后来把气压模块接在户外分机上。这是后话,这儿就先不说了。
入手Arduino,开始漫漫折腾路

入手Arduino,开始漫漫折腾路Arduino Uno R3 v5扩展板 sensor shield v5.0 s.taobao.com


然后按照上篇的介绍,把传感器的第一根线接在VCC 5V上,第二根接GND,第五根……第五根接哪……原谅卤煮,卤煮在买这一大堆东西之前,真的是对编程和ARDUINO一点都不懂啊,这东西商家说是数字的,那就先随便接个数字口吧,反正等会代码里面可以定义是从哪个针脚来读取数据。然后打开之前做的准备工作下载的源码。(在ARDUINO.CN上,有多位大神曾使用过此款传感器,并无私的将源码公开。再此,卤煮先要感谢下度娘来的各大论坛上的网友以及arduino.cc官方网站,没有你们,卤煮基本到这里就歇菜了)。然后连了电脑,准备把程序写进Arduino,这是卤煮遇到的第一个雷。

这儿先说一下arduino库的使用方法,库的获取途径有很多种方法,一个是刚才说的各个论坛的网友分享,还有一个就是大名鼎鼎的Github(链接) 这个网站再接下来会使用多次,但是这次并没有用到,这次用到的库是来自于arduino.cn上mc.six大神所写的,搜索关键词PTKJ。我们先把库下载下来,然后解压到Arduinolibraries目录下即可使用,一般库文件都自含示例程序,如下图一样打开(右图为示例打开后界面):

入手Arduino,开始漫漫折腾路
虽然卤煮不会编程,但大概看还是会看点的,于是浏览了一遍,嗯?怎么没有定义是接那个脚的,大概和读取数去有关的就一个:
while (Serial2.available())
Serial2是什么鬼,我不知道啊,先不管了,先运行下再说吧。
然后果不其然的,就出错了。
'Serial2' was not declared in this scope
大概意思是串口2在此循环里没有定义。为啥Serial2没有定义,Serial同在程序里就没问题呢,那要不这样吧,我把Serial2直接替换成Serial,这样总行了吧,然后程序成功上传,但是在串口监视器里面确实一片空白……卤煮大概知道是线接错了,于是论坛里面找啊找啊,找到一张人家的接线,发现人家是第五根线是接在端口0上,那旧照葫芦画瓢,我也接个5吧,结果接上去更惨,串口监视器都没法打开了,直接显示port busy。

看来arduino这货也不是想的这么简单,卤煮原来看到的介绍是给10多岁的孩子玩的……
于是卤煮再次请出了度娘,查找关于arduino的串口信息,结果发现,UNO只有一个硬串口(0,1)并且这个串口负责和计算机通信(瞬间回想起了云课堂里老师说的一般我们接线都接在2以后的引脚上,01负责和计算机通信)好吧,也就是UNO只有一个串口,你连着电脑就不能连其他,连了其他就不能连电脑……如果要同时连电脑和传感器呢????卤煮不死心,继续找,终于发现UNO可以模拟软串口,可以定义任何的数字引脚为软串口,好吧,那继续搞吧,这时候卤煮再次说明下,arduino自带的示例库非常之强大,很多代码可以直接打开示例直接复制黏贴了用,我们只要在示例里面找到SoftwareSerial然后打开Example就行了,摸索一下,就大概知道怎么改了,改动部分为圈出来的部分(左侧为源程序)。

入手Arduino,开始漫漫折腾路
大概就是文件头加载下软串口的库,然后定义下软串口使用哪两个数字接口。然后把setup和loop里面的Serial2统统替换成mySerial就成。然后上传,串口监视器返回画面:

入手Arduino,开始漫漫折腾路
这一刻,卤煮真的是快感动哭了啊。这里稍微说明下,源程序里写着:

/Test on Uno R3.
M3C UnoR3
TX <---> 0(Rx)/

意思是原作者在UNO R3上进行测试的,第二句不明白,第三句的意思是传感器的TX端接版子的0(RX),但是代码里的Serial2究竟是怎么出来的,卤煮就想不明白了,只能理解为原作者的小失误了。

好了,进行到这,传感器接arduino的工程就完结了。但是现在如果要读取数据,仍然是需要arduino连接电脑的,有什么办法能脱离电脑呢,卤煮决定按照自己挖坑填坑的过程说吧。

其实Arduino除了在片头说的那些应用,实际工业上最大的应用是现在非常火的“物联网”。卤煮的一个朋友原先是做智能家居的,他们初期开发产品的时候,用的解决方案就是arduino。所以自然而然的,卤煮决定把Arduino读取的数据直接上传到物联网平台,然后通过手机来读取(别问我为啥先想到的不是用手机连蓝牙读,说实话我也不知道)。国内有两大免费的物联网平台,YEELINK和乐联网(在上一篇的评论里,卤煮多次把乐联说成乐维,还望大家见谅),并且他们对arduino都提供非常好的支持,有在github上提供完整的库文件和示例程序以及论坛上有多篇教程,大家请自行搜索浏览学习。

卤煮首选的平台其实是yeelink,因为人提供手机app,app对于现代人来说,是多么重要的一件事啊(事后发现,乐联虽然没有提供单独下载的iOS APP,但是提供了WEB APP,相对起YEELINK打开速度,查看数据的方式和界面更为优秀)。但是非常无奈的,卤煮折腾了好几天也没能成功,作为一个没有恒心不懂得坚持的人,卤煮就第一时间投靠了乐联网,然后一试就成功……,下面来说说连接乐联网卤煮用到的额外硬件——W5100网络模块:

入手Arduino,开始漫漫折腾路

入手Arduino,开始漫漫折腾路Arduino w5100s.taobao.com

这个网络模块可以直接插在UNO上,然后再把传感器插在这个模块上。如下图组装:

入手Arduino,开始漫漫折腾路
因为路由器自带USB口,所以非常方便的就直接插上给ARDUINO取电了,不过怪事是每次插拔USB路由器都会自动重启下。

下面来说说乐联网程序,之前提过,乐联网非常友好的提供了能供像卤煮一样的小白直接使用的程序库和示例,你所要做的就是注册个账号,在我的设备里添加传感器,然后下载程序。关于注册账号和添加传感器,卤煮就不多说了,卤煮就直接点说,如何把乐联的程序和我们之前的程序结合起来。

这儿有个重要信息,网上流传的乐联库文件有两个,卤煮用的是这个,另一个略显复杂,看了两眼就放弃了,我们只要打开其中的示例append_send(注意,github上面打包下载的库都会有-master的后缀,拷贝到arduino文件夹后请改名)。然后再打开我们刚才成功运行的传感器示例程序,依照小图,文件头合并,SETUP合并,LOOP合并。然后上传,就大功告成了。见下图

入手Arduino,开始漫漫折腾路

这里说明下,截图都是卤煮之后做的,仅供说明之用,所以上图第一段里面没有软串口的定义,请大家忽略。
最后一张图
lwc->append("你的传感器名字",(float)(pmcf25));
这段就是把什么数据发送到哪,其中pmcf25就是传感器源文件里面定义的pm25值(CF=1,标准颗粒物)。至于每一个数字表示什么,见下图:

入手Arduino,开始漫漫折腾路
可以看到G5这个传感器能提供非常详尽的各档pm值数据(G3和G1和G5相比少了颗粒物计数,目前已经出到了G7,详见攀藤科技官网)。大致上你要传什么数据,就直接添加一句
lwc->append("你的传感器名字",(float)(数据名));
不过卤煮测试这样还是只能传第一个数据,卤煮也懒得深究什么原因,就直接复制了从 if (lwc)到delay(POST_INTERVAL);}的所有代码再添加一次。其中(float)转换一定要加,不然出错,这个也是个雷,卤煮特地请教了朋友才解决。
代码上传好了之后,就把我们的arduino+w5100接上电源和网线,打开你的网页或是手机,看看实时更新的结果吧。注意,默认代码里面 delay(POST_INTERVAL);定义的是30秒,多个传感器之间你可以把POST_INTERVAL改成自己想要的数字,1000=1秒。

入手Arduino,开始漫漫折腾路
卤煮第一次上传的时候用了4个数据,现在加了其他传感器,所以只保留了pm2.5和pm10,一则乐联网免费用户最多使用8个传感器,二则其实这么多也没意义,接下来卤煮会只保留pm2.5一个数据就行了。

实时链接继续放上。

好了,到目前为止,卤煮已经实现了不开电脑arduino接着网线上传数据到乐联网,然后再通过手机或电脑查看家中实时的pm空气质量数据。但是大家是不是觉得依旧不是很方便呢,毕竟这货要接着网线,要是房间没有布有线网呢,岂不是这个检测仪就不能测了么。。。

于是卤煮想了个非常简单的方法,就是买个小的无线路由器,接着arduino,间接实现arduino的无线工作。不过这样一接线就有些多,而且还需要个USB HUB给两个设备供电。所以目前已不再使用。

入手Arduino,开始漫漫折腾路TP-LINK TL-WR702N 150M迷你型无线路由器(浅绿)¥88京东

还有更简单的办法,就是购买arduino的时候直接购买WIDO版, 就是价格稍贵,都要180+,而且可能还需要配置WIFI的工作,卤煮没有研究,就不做评论,看大家各取所需了,至于卤煮现在的解决方案,将会再接下来的续篇中讲到。也可能是下下篇,大家可以评论让卤煮下篇是讲其他传感器还是讲其他的连接方法。

入手Arduino,开始漫漫折腾路ARDUINO WIDOs.taobao.com


展开 收起
97评论

  • 精彩
  • 最新
  • 如果想看得更细,楼主可以看看b站的《Arduino入门教程》by Jeremy Blum,一共十五集。有兴趣的值友也可以看看。元器件在element14上都能找着。

    校验提示文案

    提交
    恩,回头去找来看下,女儿要出生了,估计这种折腾事也要停上一段时间

    校验提示文案

    提交
    马一个了, B站是????

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 刚弄完手机直连的G3,NANO,去看看

    校验提示文案

    提交
    安卓有安卓的优势,不过后来我用了蓝牙串口连接手机。

    校验提示文案

    提交
    收起所有回复
  • 请问楼主买的哪家的MEGA2560?可否给个链接或搜索关键字?
    另外是买攀藤有个pm2.5+甲醛二合一传感器G5S,是这个好还是Pm2.5和甲醛分开买好呢?谢谢!

    校验提示文案

    提交
    这个哪家买都一样的,我自己买起来也是看哪家店便宜,能一次采购到自己所需要的所有东西来定的。关于分开还是二合一,我个人比较倾向于分开,不过如果使用UNO NANO之类的话,因为接口数少,所以二合一的比较方便。

    校验提示文案

    提交
    收起所有回复
  • 好,极客,产业化好吗,买买买

    校验提示文案

    提交
    照着我说的做,分分钟就出来了。

    校验提示文案

    提交
    收起所有回复
  • 楼主的co2传感器用的什么

    校验提示文案

    提交
    GE T6603-5 量程有点短,还有一些国产的型号,你可以关注下

    校验提示文案

    提交
    收起所有回复
  • 不用这么麻烦啊,接个1602的屏幕直接显示多好。想高大上就接个12864,或是TFT

    校验提示文案

    提交
    其实确实简单点的做法就是1602了,但是我是小白,觉得接液晶可能难度比较高,昨晚拆了个1602,回头试试。方便的话相关过程也写出来

    校验提示文案

    提交
    收起所有回复
  • 楼主,你的传感器是接在nano上还是mega上啊?有没有接线图分享下?

    校验提示文案

    提交
    目前都在mega上,单个传感器的话接nano也没啥大问题,至于具体接线,还是需要自己定,看传感器类型,如果是串口传感器,就从mega的TX2,RX2开始接,传感器的TX接MEGA的RX,这样,如果是NANO,就要自己定义2个软串口,然后接。数字传感器的话,2-13随便接,然后在程序里定义,模拟传感器接A0-A7,。还有I2C接口的传感器则是SDA接A4 ,SCL接A5这样。

    校验提示文案

    提交
    明白,用mega的话就是mega+分线板+w5100对么?然后传感器直接接在mega

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 好文章,马一个,正在自己做新风,准备像楼主一样搭个控制系统

    校验提示文案

    提交
    这个是我想做的,只要接收到关于CO2的数值大于某一数,就直接开启新风30分钟,过30分钟再测,过了就停了,不过就继续开30分钟……

    校验提示文案

    提交
    准备用直流电机,pwm调速,想控制的更精细。比如可以有睡眠模式,离家模式,

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 看了楼主的,果断决定还是买个某宝上带小屏的吧 [大囧]

    校验提示文案

    提交
    哈哈哈哈,我这主要是穷折腾。某宝上的等我更完,就知道,大约成本150-160就出来了,就是还要做个壳,回头等我穷折腾完了去看看能不能定一批亚克力盒子给大家DIY用

    校验提示文案

    提交
    能定做吗 ,给我算算 G5 、甲醛、二氧化碳、tvoc,都加上 价格彩屏 一共多少钱 我定制一个

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • uno r3只卖20块 不会吧

    校验提示文案

    提交
    非原装版 原装版好像99

    校验提示文案

    提交
    收起所有回复
  • 给程序猿赞一个

    校验提示文案

    提交
    我不是程序猿,我的代码公开估计会被真的程序猿笑死,都是剪刀加浆糊做出来的

    校验提示文案

    提交
    收起所有回复
  • 楼主好毅力,请问楼主全部下来成本多少?外壳的事,我打算画图用3G打印一个。 [吐舌] 关键部位还没学,先考虑外壳了。。

    校验提示文案

    提交
    成本这事,具体还是要看要实现多少功能,主板+扩展板+线材大约在100,感应器pm2.5的150,二氧化碳的200,甲醛的180,温湿度高精度的40。液晶屏单色两行的1602 10元,外壳50元……一套全齐下来也不便宜,不过可以按需配。

    校验提示文案

    提交
    谢谢。。你能上给成品图看看吗??

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 楼主,你上传的乐联代码的图太小了,看不清。可以给个高清无码大图吗?多谢~~

    校验提示文案

    提交
    乐联网代码乐联网上有链接的,github下载

    校验提示文案

    提交
    收起所有回复
  • 最近在用nodemcu捣鼓类似的东西,楼主开个群大家一起交流一下吧

    校验提示文案

    提交
    nodemcu其实比arduino更强大,不过跑lua脚本的,又是完全不懂的

    校验提示文案

    提交
    之前也是不懂的,不过好在门槛比较低,api比较简单,现在已经了解得七七八八了。编辑器用ESPlorer,熟悉了之后,去去看看 编译一个自己需要的固件,用esptool刷进去就可以用了,默认固件内存比较少,用网站编译出来的内存多了好多。这个网站可以入门:去看看 然后这个非官方FAQ有很多有价值的信息:去看看

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 楼主,看了你的帖子我也中毒了,买来东西准备开干。不知道第四篇什么时候能与我们见面呢?

    另外本篇修改示例程序的一段,弄一个软串口没有必要啊,按照文中那么改,没有收到正确数据。然后我删了串口2,并把有串口2的位置还成串口1就成功了。

    校验提示文案

    提交
    uno只有一个串口,连接计算机的时候用来通信用的,所以加软串口,mega的话确实不用

    校验提示文案

    提交
    目前做了个甲醛 PM CO2全功能版的,但是有点小问题,开机时间久了之后温度湿度不会更新,还在调试,等找到问题了之后更新

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 请问楼主,您的手机APP界面怎么实现的,是自己开发的APP吗

    校验提示文案

    提交
    乐为互联,紫薯布丁

    校验提示文案

    提交
    你用的乐联网的app是什么版本的,有下载链接吗,我在官网上找到的 版本比较早,界面没有你这个好

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 请问楼主,为什么用充电宝或手机插头供电时得到的数据比电脑供电时的数据差很远,是电压的问题吗?

    校验提示文案

    提交
    这个我还没观察过 回头我自己试下再回复你

    校验提示文案

    提交
    好的,麻烦楼主了。我只用了一块uno,1602,g5s,接线好像没接错

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 楼主好,我在做的是把DHT11+攀藤G5监测数据上传到乐联网,DGT11可以完美上传,但是攀藤G5数据就是死活上传不上去 [喷水] 目测代码有问题,楼主能不能提供下源码啊 [傻笑] 已经卡在这边好长时间了 daiyq19940828@163.com

    校验提示文案

    提交
    好的 我回去把g5的找下发给你

    校验提示文案

    提交
    非常感谢啦 [傻笑]

    校验提示文案

    提交
    收起所有回复
  • 楼主提供一下DIY检测仪各传感器所需的代码吧,我的邮箱fwz0805@163.com,谢谢

    校验提示文案

    提交
    最近在写原创 请期待 到时候所有代码都会提供下载

    校验提示文案

    提交
    收起所有回复
  • 楼主,主控我用的DFROBOT的Bluno beetle兼容Arduino,能不能发个攀藤PMS7003的代码,我在github上也找了很多,谢谢,邮箱;568411838@qq.com

    校验提示文案

    提交
    我的代码和github上的一样的

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
553
扫一下,分享更方便,购买更轻松