Arduino GPRS模块的一些坑

Arduino GPRS模块的一些坑,第1张

要做一个偏远地区的物联网控制应用,考虑了多种通信方式,据我所知总共也就这几种:有线,WIFI,GPRS。其余的什么MQTT,XBEE,RFID等等也离不开网络,或者可以这样设计:用RFID做设备间信息传输,然后部署一台另外的设备负责把最终信息存储设备的信息通过网络发送到服务端,这样能减少一些联网设备,不过感觉意义不大。

首先是第一个坑 ,现在arduino gprs设备几乎都是使用的2G通信,而运营商的2G通道渐渐都关闭了,会伴随着速度缓慢,信号丢失,无反应等各种情况,所以有时候写出来程序调试半天发现是通信的问题,直接让人怀疑选型gprs是个错误,这时候就要在通信程序中加入各种判断,考虑各种情况,工作量大幅上升。

去V2EX发帖吐槽,总结了网友给出消息:摩拜单车锁用的通信方式是移动定制的4G物联网流量卡,公路上的抓拍摄像头使用的是有线连接,自动货物出售机普遍采用4G物联网卡,远洋船舶通信是卫星信号,流量费贵出天际。总之GPRS通信处于被淘汰的边缘了。

应该有人问,那为什么不选4G?一个字:“穷”,arduino官方有支持2G/3G/4G的模块,一个将近900元,在硬件领域,有时候1分钱都要比较,不是斤斤计较,因为大量的设备意味着造价数量级的升高,同样能给出解决方案,老板肯定会选择报价低的。自己做?我反正做不出。

第二个坑 ,arduino gprs通信模块便宜的有A6,SIM800,SIM900,这些模块发送一个>这个是内网穿透,DDNS等范畴。考虑到国内的政策,尤其是光猫的限制,这个变得很难。也正是物联网大多有个中转平台的原因。arduino把数据上传到网站,也从网站获取指令控制开关什么的,由于查询不可能太频繁,所以控制变得有些延迟。
乐为物联 lewei50 有入门例子,简单应用是免费的。吃透后自己搭建一个平台也容易。

举一个例子吧,你想知道室内温度。最简单的方法是看一下墙上的温度计。这是人类早期的创造,简单有效。

但是这里有让人不满的地方,它是为视力健全的人设计的。那么如果想使用听力呢?抱歉它不能满足你的需求。这样我们就不满了,我们虽然不会愤怒,但是我们要去创新了。

接下来,你的设计思路出来了,要一个能感知温度的单元,好的,我们有吗?当然有,太多了,如下所示。
在这里我们不讲热敏电阻是什么,请自己进行知识补充。你就想它是你的感觉器官,类似皮肤,能区别冷热。

好的,我们接下来需要一个认知判断单元。它具有标准,知道温度的数值是怎么来的。也许你见过下面这种单元,可以识别和显示温度,在某些地方也有自己不错的应用,在这里它不是我选择讲述的工具,就一带而过了,我向它的创造者表达我的敬意。

我们回到arduino,它象所有这个级别的工具一样,都具有接收感知单元输出的能力。上一篇我们提到的UNO,有六个接口。我不禁产生了联想,难道人类的认知都是相通的吗?六个可以感知的接口,类似什么?“眼、耳、鼻、舌、身、意”,bingo,完美。

我们接下来做什么呢?接入!把感知单元的输出作为输入交个判断单元。
到这里我们讲完了数据的采集,这不是纯技术文章。我面对的是具有好奇心的你,当你面对这么一个题目,还点进来,并且还看到这里,完全能说明你有很强的探索精神。

我们过往的学习经验是在年少时被区分为文科生或理科生,还有艺术生和体育生。其实在经过了长久地探索后,你会发现局限我们自己的往往是我们自己。转型并不在于你在某个行业深不深,而是你想不想了解其他的行业。

Arduino是一种基于开源硬件和软件的电子开发平台,它包括一个基于C/C++编程语言的开发环境和各种模块化的硬件模块。Arduino的核心是一个基于Atmel AVR微控制器的电路板,这个电路板上包含了数字和模拟输入/输出引脚、USB接口、电源接口等。用户可以通过编写Arduino程序,控制这些硬件模块的运作,实现各种功能,如LED闪烁、电机驱动、温度监测、声音识别等等。Arduino的优点在于它简单易用、开源、灵活、价格低廉,适合初学者和专业开发者使用,广泛应用于教育、创客、艺术等领域。

小小云提示:教程作者 caterpillar是来自台湾的programmer,所以在一些专有名词的使用上会和我们这边使用的不太一样啦,不过作者也有标注出英文名称,大家自行转换哟(⁎⁍̴̛ᴗ⁍̴̛⁎)

Arduino Uno 板子没有衔接网络模组,是无法进行网络连线的,不过 mBlock 具有网路连接功能,两台电脑分别开启 mBlock,就可以进行网络通信,也就是说,你可以通过网络控制另一头连接的 Arduino,反之亦然。

要使用 mBlock 建立网络连线,两台电脑都必须开启 mBlock,接着在其中一台执行“网络连接/自定义连接”后,输入另一台电脑的 IP:

按下“连接”按钮,如果连线成功的话,两台电脑上的 mBlock 都会呈现“网络连接 已连接”的字样:

记得!一定要按下“连接”按钮,直接按下 Enter 键是不会有反应 … XD

接下来就可以写个简单的通讯啦!例如,在其中一台不断地发送计时器的信息:

而另一台不断接收信息并显示:

按下两个 mBlock 的绿旗,你就会看到另一个 mBlock 接到信息并显示出来:

接下来示范一下,如果通过网络调节 LED 亮度,在两台电脑上分别连接上 Arduino,并记得在 mBlock 上分别指定好“串口连接”,当然,也得记得如上通过网络连线两个 mBlock。

接着,其中一台 Arduino 如下连接一个可变电阻:

另一台 Arduino 如下连接电阻与 LED:

因为要通过 Arduino 调节 LED 亮度,别忘了要接在有 PWM 功能的脚位上,因此在上头我是接在 D11 脚位。

接着,连接着可变电阻的电脑上,在 mBlock 上撰写如下的程式:

这会不断地读取类比脚位的电压值并通过网络送出,而在另一台连接着 LED 的电脑上,在 mBlock 中撰写如下的程式:

别忘了,Arduino 类比脚位的输入值是 0 ~ 1023,而通过有 PWM 功能的脚位模拟类比电压时,可指定的值是 0 ~ 255,因此,必须通过计算作转换,“读取一行数据”并不会阻断程式流程,因此我们必须检查值是否为 0 到 1023。

在上头的程式中,“当收到数据时”方块会在“读取一行数据”方块完成后触发执行,你也可以将“如果”方块的部份,直接放在“不停重复”之中,两种写法都可以!

接下来分别执行程式,并试着转动可变电阻,你会发现另一台 Arduino 上的 LED 会随着可变电阻的转动而有不同的明亮。
感谢CodeData用户: caterpillar 的贡献 著作权归作者所有
整理:宁波家电物联网云平台,中科极动云

CONTACT US: >Arduino的接口有以下几种:
1 数字输入/输出口:Arduino板上通常有多个数字输入/输出口,可以通过编程来控制其输出电平(高电平或低电平)或读取输入电平。
2 模拟输入/输出口:Arduino板上通常有多个模拟输入/输出口,可以通过编程来读取模拟电压值或输出模拟电压值。
3 串口:Arduino板上通常有一个或多个串口,可以通过编程来进行串口通信,如与计算机通信、与其他Arduino板通信等。
4 I2C接口:Arduino板上通常有一组I2C接口,可以通过编程来进行I2C通信,如与各种传感器、显示器等I2C设备通信。
5 SPI接口:Arduino板上通常有一组SPI接口,可以通过编程来进行SPI通信,如与各种存储器、显示器等SPI设备通信。
6 PWM接口:Arduino板上通常有多个PWM接口,可以通过编程来输出PWM信号,控制电机、LED等设备的亮度或速度。
7 电源接口:Arduino板上通常有多个电源接口,可以通过连接外部电源来供电,如USB电源、电池电源等。
不同型号的Arduino板可能会有不同的接口数量和类型,具体可以查看相应型号的文档。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/12982994.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存