有没有可能利用arduino 系统搭建一个VOIP系统

主题信息(必填)
主题描述(最多限制在50个字符)
申请人信息(必填)
申请信息已提交审核,请注意查收邮件,我们会尽快给您反馈。
如有疑问,请联系
CSDN &《程序员》研发主编,投稿&纠错等事宜请致邮
你只管努力,剩下的交给时光!
如今的编程是一场程序员和上帝的竞赛,程序员要开发出更大更好、傻瓜都会用到软件。而上帝在努力创造出更大更傻的傻瓜。目前为止,上帝是赢的。个人网站:www.xttblog.com。个人QQ群:、
个人大数据技术博客:http://www.iteblog.com
责编:屠敏,关注物联网、移动开发领域,寻求报道或投稿请发邮件。
在这篇文章中,我们将介绍如何搭建一款监测土壤水分的物联网系统,用于在土壤干燥时发出警报,提醒用户。本项目使用了 来管理警报系统,同时存储来自传感器的数据。众所周知,物联网是当今热门话题之一,它将改变我们的未来及生活方式。如今我们可以自己动手搭建物联网系统,因为市场上已有一些原型板,这使得我们不用花费太多金钱及精力就可以着手物联网项目。搭建 IoT 系统项目构建这个项目,我们需要:
Arduino MKR1000;
湿度传感器;
IoT 云平台 Carriots 的免费账户(点击创建账户);
IFFT 账户(点击,了解更多)。
该项目的核心理念是搭建一个监测土壤水分的 IoT 系统,勘测土壤的湿度。Arduino MKR1000 控制传感器向 Carriots IoT 平台发送数据。Carriots 平台反过来存储来自传感器的数据,并检测存储的值何时达到阈值。下文我们会分享如何分析数据。现在可以假设 Carriots IoT 平台能够以某种方式调用一个 IFFT 服务,并向用户发送一个提醒的短消息。构建该 IoT 系统,我们可以探索如何使用 IoT 生态系统的组件。此外,该项目使用 LED 矩阵显示湿度土壤状态。接下来,我们看看具体怎么搭建。检测传感器数据第一步,我们必须读取传感器数据。该 IoT 项目使用了 YL-38 + YL-69 传感器,这个是可以插入要检查的土壤中的模拟传感器。那么如何将传感器连接到 Arduino,如下所示:代码很简单。我们 从A1 引脚读取数据,然后计算湿度:float moistureHum = analogRead(A1);
moistureHum = (1023 - moistureHum) * 100 /1023;此外,还需将 Arduino MKR1000 连接到互联网,以便它可以发送数据:#include "WiFi101.h"
void setup() {
Serial.begin(9600);
Serial.print("Starting...");
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
while (true);
connectToWifi();
}connectToWifi() 包含:void connectToWifi() {
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to WPA SSID: ");
Serial.println(ssid);
// Connect to WPA/WPA2 network:
status = WiFi.begin(ssid, pass);
// wait 10 seconds for connection:
delay(10000);
}这样,如以上代码所述,我们可以管理显示湿度的 LED 矩阵。接下来就聚焦于物联网云平台上。连接到 IoT 云平台在将数据发送到云端之前,我们必须配置 Carriots 平台才能管理数据。 Carriots 使用了分层结构来对设备进行分组和管理。因此,在使用设备之前,必须创建此结构。用户一旦登录,先点击“Hierarchy”,再点击“ Project”,填写所需的数据,如下图:下一步创建服务,填写所需的数据:最后,创建组:以上的步骤只需做一次。最后一步是配置设备。它表示我们用来发送数据的物理设备。该设备属于在最后一步创建的组,组属于服务,服务属于项目。配置步骤非常简单,如下图所示:至此,配置步骤已完成。我们需将 Arduino 设备连接到 Carriots 并开始发送数据。上图中,Id.developer 这个参数很重要,它代表了将来自 Arduino 设备的数据绑定到 Carriots 设备的唯一标识符。另一个重要参数是 API 密钥。你可以在设置&API密钥菜单中找到它。为了发送数据,我们将这个函数添加到上面的代码中:void sendData(float data) {
if (client.connect(server,80)) {
Serial.println("Connected to the server....");
String jsonData = "{\"protocol\":\"v2\",\"device\":\""+DEVICE_ID+
"\",\"at\":\"now\",\"data\":{\"soil\":\""+
String(data)+"\"}}";
client.println("POST /streams HTTP/1.1");
client.println("Host: api.carriots.com");
client.println("Accept: application/json");
client.println("User-Agent: Arduino-Carriots");
client.println("Content-Type: application/json");
client.print("carriots.apikey: ");
client.println(API_KEY);
client.print("Content-Length: ");
int thisLength = jsonData.length();
client.println(thisLength);
client.println("Connection: close");
client.println();
client.println(jsonData);
}注意该函数发送一个包含从传感器读取的数据的 JSON 有效载荷。必须在 loop()方法中调用此函数。运行这个程序,我们可以发现设备向 Carriots 发送数据,如下所示:监控物联网传感器数据接下来是监控数据。通常在物联网系统中,我们不仅希望从传感器获取数据,而且当这些值超出特定值时,我们希望监视这些信息以采取完善措施。本项目中,当土壤太过干燥时,我们要告知用户。虽然 Carriots 拥有内置的电子邮件系统,但我们更倾向于与 Carriots 集成的另一个有用的平台,即 IFFT。该平台提供了多种集成服务。为了提醒用户,我们需要两个组件:
监控数据系统;
警报系统。
作为监控数据系统,本 IoT 系统项目使用 Carriots 监听器。监听是分析输入值及应用特定规则的一个过程。当规则被验证时,它就会调用一个脚本。对于 Carriots 的有趣方面是,我们可以使用 Groovy 作为脚本语言来调用外部服务。警报系统建立在 IFFT 上。在完成 Carriots 的任务之前,配置 IFFT 非常有必要。如上所述,当湿度达到阈值时,我们想要发送一条短消息提醒用户。为了实现这个功能,需要在 IFFT 中配置一个短消息服务。在此之前,我们需要一个免费的帐户。那么首先我们创建一个新的 Applet:点击“+”添加服务并搜索“Maker”服务:选择“Maker webhooks”来启用 IoT Maker。接下来配置 maker 服务,并填入触发发送消息进程的事件名称:最后,启动发送消息服务,配置所有必需的参数,如目标号码和消息体:现在,我们来看一下 Carriots 平台的监听器。首先创建一个新的监听器,调用与之前刚创建的 Applet 相关的 URL。当监听器调用 URL 时,IFFT 发送一条短消息。配置监听器流程如下图所示:最后一步是配置表达式。我们可以使用 Groovy 写这个案例。综上,我们可以验证当土壤水分低于阈值水平时,手机上是否会收到一条短信。总结通过本文,相信大家已经学会了如何使用传感器、Arduino 和 IoT 云平台构建 IoT 系统。也正如本文所述,我们可以集成现有的平台和服务来构建一款 IoT 系统。
日(星期六),将在 CSDN 学院召开,集结来自物联网领域的一线专家,从整体架构、技术栈、应用开发平台到实战经验与安全方案,希望通过一天的时间,帮助开发者快速掌握物联网全栈开发之道,也为所有对物联网感兴趣的软件开发者、嵌入式开发人员以及希望从互联网技术背景转入物联网的开发人员提供一个良好的学习晋升平台。五折优惠倒计时5天,火热报名中,欲购从速,详情点击!& 我要Arduino板子——利用面包板搭建arduino最小系统
管理员:??人数:800小组积分:4361简介:大家一起学习Arduino小组公告欢迎大家加入qq交流群??|????|??
需要确认注册邮箱后才能下载,
楼主??[原创]?
我要Arduino板子——利用面包板搭建arduino最小系统
6年会员勋章目前未领取。领取条件:?凡是注册时间六年以上的活跃用户即可领取该勋章。
积分:129分
总积分:214分
发表于 20:20
用面包板做的arduino最小系统, 除了必要的USB-asp编程器和一个USB-UART转换器外, 其余的都是最简单的外围器件。
花了三个晚上, 倾力打造(写这个文档花了一个晚上!!!!)
但是这个东西显得非常的山寨。看到组长还有这么好的福利, 希望玩一个正式一点的板子。。。。特此发帖分享自己的成果,并申请组长的arduino福利板。
1.1. 采用的软硬件平台与工具。
硬件工具:Arduino-Nano(见第2章BOM列表 )、USB-ASP。
软件工具:Arduino IDE、Fritzing、ProgISP
仪器仪表工具:万用表(BEST DT9205A)、示波器(Tek MSO-4104)、USB转SER串口(CH341A)。
2 原理图与BOM
本着最小系统的原则,即电路最简单、连线最少、采用元件最少,根据ATMEGA8A-PU的Datasheet描述,能省则省。
2.1. 原理图
采用最简单的电路结构,根据datasheet描述,在编程CKOPT熔丝后(CKOPT=0)可启用XTAL1与XTAL2引脚自带的内部电容,故省略外部电容。采用Fritzing软件绘制示意图如下:
图 2?1 ?Arduino-Nano的原理图与面包板示意图
2.2. 元件清单
总结Arduino的BOM如下:
表 2?1 Arduino-Nano的BOM元件清单
预计价格¥
ATMEGA8A-PU
330Ω/直插型
Uled1 + Iled1*R1 = 5V
16MHz/直插型
针脚适用于面包板
BOM成本总计:¥12
3 安装与运行
根据原理图安装后,实物图如下:
图 3?1 Arduino-Nano安装后的实物图
3.1. 设置ATMEGA8A的熔丝
由于Arduino对于频率和bootloader等设置有要求,因此必须对ATMEGA8A芯片的熔丝(Fuse)进行设置,才能利用Arduino开发。
熔丝设置必须采用编程器,本次使用的是编程器是USB-ASP,对应的编程软件是ProgISP。
ATMEGA8A的出厂熔丝设置是Lfuse = 0xE1,Hfuse = 0xD9,如下:
图 3?2 ATMEGA8A出厂熔丝设置
而Arduino要求的熔丝设置为Lfuse = 0xDF, Hfuse = 0xCA,注意在修改熔丝设置中,前往不能讲SPIEN和RSTDISBL改变,否则无法使用串行编程器下载而只能采用特制的高压并行下载器下载。
图 3?3 ATMEGA8A的arduino熔丝设置
在ProgISP软件中设置了上述熔丝后,即可开展开发工作。
3.2. 利用USB-ASP下载Arduino编译后的Sketch
打开Arduino-IDE, Tools-&Board选择Arduino NG or older,Tools-&Processor选择ATmega8,Tools-&Serial选择连接的串口号COMx,Tools-&Programmer选择你所使用的编程器(本例采用的是USB-ASP)。
为测试多种功能,编写代码如下:
?? int led = 9;?????????? // the pin that the LED is attached to
? int pushButton = 2;
? int brightness = 0;??? // how bright the LED is
? int fadeAmount = 1;??? // how many points to fade the LED by?
? String inputString = "";???????? // a string to hold incoming data
? // the setup routine runs once when you press reset:
? void setup() {???????????????
??? // initialize the digital pin as an output.
??? Serial.begin(9600);
??? pinMode(pushButton, INPUT_PULLUP);
??? pinMode(led, OUTPUT);??
??? inputString.reserve(100);?
? // the loop routine runs over and over again forever:
? void loop() {
????? analogWrite(led, brightness);???
??? // change the brightness for next time through the loop:
??? brightness = brightness + fadeA
??? // reverse the direction of the fading at the ends of the fade:
??? if (brightness == 0 || brightness == 255) {
????? fadeAmount = -fadeA
??? ??digitalWrite(led, HIGH);?? // turn the LED on (HIGH is the voltage level)
????? delay(1000);?????????????? // wait for a second
????? digitalWrite(led, LOW);??? // turn the LED off by making the voltage LOW
????? delay(1000);
????? int sensorValue = analogRead(A0);
????? float voltage = sensorValue * (5.0 / 1023.0);
????? // print out the value you read:
????? Serial.print("Hello, SB!, voltage = ");
????? Serial.print(voltage);
????? int buttonState = digitalRead(pushButton);
????? // print out the state of the button:
????? Serial.print(", buttonState = ");
????? Serial.println(buttonState);
????? unsigned long currentMillis = millis();
????? Serial.print("Current Mills = ");
????? Serial.println(currentMillis);
??? // wait for 30 milliseconds to see the dimming effect???
??? delay(10);???????????????????????????
? void serialEvent() {
? while (Serial.available()) {
??? // get the new byte:
??? char inChar = (char)Serial.read();
??? // add it to the inputString:
??? inputString += inC
??? // if the incoming character is a newline, set a flag
??? // so the main loop can do something about it:
??? if (inChar == '\n') {
????? Serial.print("R:? ");
????? Serial.println(inputString);
????? inputString = "";
编译(verify)成功后,选择File-&Upload Using Programmer,即可通过编程器将编译后的hex文件写入ATMEGA8A芯片。此时可以看到LED动作,同时串口可以接受并发送各种信号和字符串。
3.3. 下载arduino的bootloader
为方便可以不用编程器而通过arduino的UART下载。只需要将arduino的bootloader烧入芯片中即可。
在ProgISP中,选择
arduino-1.5.2\hardware\arduino\avr\bootloaders\atmega8\ATmegaBOOT-prod-firmware-.hex,下载到ATMEGA8芯片中,后续即可使用arduino的upload功能下载hex文件。只需在点击upload后将芯片复位即可。
?采用面包板搭建Arduino最小开发板——Arduino-Nano.pdf( 534KB ) ?该附件被下载次数 ?99
1楼??[原创]?
Re:我要Arduino板子——利用面包板搭建arduino最小系统
6年会员勋章目前未领取。领取条件:?凡是注册时间六年以上的活跃用户即可领取该勋章。
积分:129分
总积分:214分
发表于 20:24
从word复制粘贴无法复制图片,请下载pdf查看。
2楼??[原创]?
Re:我要Arduino板子——利用面包板搭建arduino最小系统
3年会员勋章目前已领取。领取条件:?凡是注册时间三年以上的活跃用户即可领取该勋章。
4年会员勋章目前未领取。领取条件:?凡是注册时间四年以上的活跃用户即可领取该勋章。
积分:17812分
总积分:24152分
发表于 10:59
可以使用高级编辑器功能,直接从IE导入图片!
3楼??[原创]?
Re:我要Arduino板子——利用面包板搭建arduino最小系统
6年会员勋章目前已领取。领取条件:?凡是注册时间六年以上的活跃用户即可领取该勋章。
积分:2187分
总积分:2822分
发表于 22:06
很不错。。。
4楼??[原创]?
Re:我要Arduino板子——利用面包板搭建arduino最小系统
6年会员勋章目前未领取。领取条件:?凡是注册时间六年以上的活跃用户即可领取该勋章。
积分:129分
总积分:214分
发表于 05:19
组长送我一块PCB吧,好歹让我摆脱山寨性质的面包板arduino
5楼??[原创]?
Re:我要Arduino板子——利用面包板搭建arduino最小系统
6年会员勋章目前已领取。领取条件:?凡是注册时间六年以上的活跃用户即可领取该勋章。
积分:2187分
总积分:2822分
发表于 21:37
以下是引用 mars4zhu 在 上午 05:19的发言组长送我一块PCB吧,好歹让我摆脱山寨性质的面包板arduino
注意专注小组的更新哦。。。。
6楼??[原创]?
Re:我要Arduino板子——利用面包板搭建arduino最小系统
6年会员勋章目前未领取。领取条件:?凡是注册时间六年以上的活跃用户即可领取该勋章。
积分:129分
总积分:214分
发表于 08:42
哇,真的送我啊, 谢谢啊。
7楼??[原创]?
Re:我要Arduino板子——利用面包板搭建arduino最小系统
6年会员勋章目前已领取。领取条件:?凡是注册时间六年以上的活跃用户即可领取该勋章。
积分:2187分
总积分:2822分
发表于 22:18
以下是引用 mars4zhu 在 上午 08:42的发言哇,真的送我啊, 谢谢啊。
那以后要多多分享哦
--- 现有 8个主题,共 1页,目前第 1页 ---??
点击,立即回复。
EDN China官方微信
扫一扫关注,获取电子新知,设计灵感
IC厂商小组
在线研讨会
赞助商链接
2016 EDN China -- Use of this website is subject to its terms of use.
京ICP备号-4 |
京公网安备37 |
新版社区已上线,旧版论坛、博客将停用
1、为防数据丢失,旧版论坛、博客不再接受发帖;
2、老用户只需重设密码,即可直接登录新平台;
3、新版博客将于8月底完美归来,敬请期待;
4、全新论坛、问答,体验升级、手机阅读更方便。& 另类方法搭建中小企业VOIP系统
VoIP电话系统作为企业信息化的一个典型例子, 它的作用是一方面可以大幅度降低企业通讯费用, 另一方面却又进一步加深总部与各地分支机构的联系与统一管理。VOIP 电话系统建立的费用支出是一定的, 但是在日后的经营中会逐渐体现出超值的价值, 这才是信息化带给我们的目的。下面就为大家介绍一种省钱且好用的VOIP系统。VOIP电话系统是一个以传统的电话交换机系统或者企业局域网系统、VOIP 管理系统, 服务器、VOIP务提供商为基础, 以网络为传播平台, 可以提供普通电话、传真、电话会议、视频电话等多功能的电话系统。这样便于IT部门的统一管理与维护。
笔者所在的中型企业其规模有1 0 0 人左右, 全国有4 个分支机构。公司的电话号码由于长时间使用, 因此在业务方面考虑是不可能取消的。考虑到公司信息化建设比较好, 每个办公室都有网络布线, 人手一台电脑, 因此决定建立VOIP 电话系统, 然后通过网络电话软件、IP 电话、VOIP 网关系统等多种方式的组合来实现企业通讯的VOIP 化, 达到降低成本的途径。在搭建VOIP电话系统时, 笔者选用的是3CX Phone System 。它是一款基于Windows 系统的VOIP服务器软件, 可以取代传统的专用硬件PBX (程控交换机) , 适合目前各种SIP (会话发起协议) 电话, 包括软件电话, 具有中文操作界面, 设置简单, 管理方便。另外, 通过3CX PhoneSystem 建立起来的VOIP 电话系统即使办公场地搬迁, 也无需改变原有的配置即可再次使用。
在服务端,3CX Phone System 对硬件设备的需求不高, 一台装有Windows 2003 Server操作系统的电脑或者服务器即可(一台主流配置电脑或者低端服务器—)。由于3CX Phone System基于WEB方式控制,因此系统必须安装上“NET.Framework 2.0″和IIS控制器”(图1)。在客户端,要拨打VOIP电话,可以使用软件拨打或硬件拨打两种方式。软件拨打就是在电脑上使用VOIP软件,用户在头戴耳麦进行通话,就和使用Skype软件一样。硬件拨打则是使用专门的VOIP固话机或VOIP无绳电话,将这种电话机接入公司网络,无需电脑即可拨打电话。
安装VOIP系统
安装3CX Phone System 完毕以后进入设置向导。第一步将语言设置为中文, 下一步选中“ Create New PBX ” , “ 分机” 项目选默认的3 位(可以根据公司实际规模选择2 – 5 位电话号码) , 在“ 服务器FQDN 或SIP 域” 中填入本机IP 地址例如: 1 9 2 . 16 8 . 1 .m 0 ), 在“ 留言信箱配置” 填人一个SMTP 服务器地址与电子邮箱地址。下一步, 在“ 管理员登录和密码” 保持默认设置, 在“创建用户分机” 中建立一个名为“ 1 0 0 ” 的分机, 将“ 操作员分机号” 制定为“ 10 0 ” , 接下来系统就开始创建配置数据库(图2 ) , 完成后还会提醒用户注册, 可选择忽略跳过, 3CX Phone System 就安装完毕了。
建立内网分机
现在我们可以开始分配企业内网的电话系统了。通过“ 开始菜单、程序、“ 3CX Phone System ” 、“ Management Console ” 进入3CX Phone System的管理界面(图3 ) 。先把内网的分机建立起来, 点击“ 分机” 、“ 新建分机” , 只需填写“ 分机号码” 、“ 名” 、“ 验证账号” (与分级号码相同) 和“ 密码” ( 图4 ) 。建立所有的分机以后, 点击“ Management ” 将分机都加入这个工作组中( 图5 ) 。之后用户可以通过支持SIP 的网络电话软件、网络电话硬件或者LinksysWRTP54G这样的语音路由器进行注册( 即为客服端配置分机号和密码, 类似于ADSLMODEM拨号的方式) , 注册以后分机状态从红色未注册变为绿色注册(图6 ) , 这样VOIP 电话系统的内网就建立完毕了。当然, 如果需要外拨电话, 还得进一步的设置才行。
设置外拨电话规则
下面我们要设置VOIP 服务商的信息, 点击“ VOIP服务商” 、“ 新建VoIP 服务商向导” , 服务商名称填写“ tocall ” ( 即服务商的名称, 也可以任意填写) , 在“ 选择服务商” 中选“ Generic SIP Trunk ” (图7 )。下一步要填写“ VOIP服务商资料” , 在“ SIP 服务器主机名或IP ” 和“ 外向代理服务器主机名或IP ” 处填人“ ct .Tocall . cn ” , 端口号均为“ 5060 ” (图8 ) 。接着输入账户资料, 把并发通话数量设置为“ 3 ” 条(图9)。点击两次“ 下一步” , 来到“外向拨号规则” 的设置界面。这里重点说明— 下, 该拨号规则控制着整个V O I P 电话的拨打情况,可以根据公司的需求对拨打规则进行设置。
手机拨号规则
由于公司员工之间的联系常用手机, 因此线路名称这里命名为“ 拨打手机” 。根据服务商tocall 的拨号规则“0 1 [3 5 8 ]x x x x x x x x x ” , 在“ 拨出通话的首个号码(前缀) ” 输入“ 0 1 ” , “ 拨出通话的分机” 输入“ 1 0 0 — 1 0 3 ” (这里应该涵盖所有需要外拨的分机) , “ 呼叫电话长度” 输入“ 1 2 ” , 并在“ 应用该规则” 中“ 线路“ 选中“ tocall ” , “ 剥去数字” 选“ 0 ” , “ 加上数字” 不填, 这样一个手机拨号规则就建立完毕了(图1 0 )。
固话拨号规则
接下来我们再建立拨打固话的规则。将线路名称命名为“ 拨打固话” , 根据tocall的拨号规则“ 0 [2 — 9 ] x x x x x x x x x x ” , 固话在拨打长途还是本地都无区别, 都必须在拨号前输入区号, 那么在“ 拨出通话的首个号码(前缀) ” 输入“ O” , 根据区号在固话三位区号后加上七到八位固话号码, 在“ 呼叫电话长度” 处输入“ 1 0 -1 1” , 其他设置不变( 图1 1) 。
8 0 0 、4 0 0 电话规则
再说一下常用的8 0 0 或4 0 0 电话的拨打规则, 新建一个“ 拨打8 0 0 、4 0 0 ” 线路, 根据tocall的拨号规则“ 。x x x x x x x x x x x )【,’, 拨打前加拨‘ 号, 比如拨打招商银行8 0 0 电话就是“ * 8 0 0 8 2 0 5 5 5 5 ” , 那么在“ 拨出通话的首个号码(前缀)” 处输入q ” , 然后根据8 0 0 或4 0 0 电话的长度加上+ 号1位, 就是1 1位, 在“ 呼叫电话长度” 处输入“ 1 1 ” , 其它设置不变(图12 )。值得说明的是, 外拨规则必须跟VoIP 服务器的拨号规则一致才行, 这里需要用户耐心进行研究。点击“ 端口” 、“ 中继状态” , 刚才建立的“ tocall ” 服务商状态显示为绿色已注册, 说明与服务商连接成功(图13 )。再点击左边栏的“ VOIP 服务商” 、“ tocall” , 在右侧窗口中选择“ 高级” , 将“ 选定“ Contact ” 联络栏中的IP 地址作为登记用” 选为“ 内部” 就完成了外拨电话规则的设置。让VOIP 畅通无阻考虑到公司路由器或者防火墙会影响V O I P 网络电话的穿透, 还必须做端口映射。在“ 3CX
System ” 、“ 设置” 、“ 网络” 中查询“ STP 端口” 和“ 用于VoIP 供应商通话外部传输的端口” ( 图14 ) , 再把这两个端口号码在路由器或防火墙中打开端口映射即可。
最后, 公司员工可以使用VOIP 固话机、VOIP无绳电话机或VOIP软件在电脑上拨打电话, 拨打内网电话可直拨分机号, 拨打外网电话也与普通电话完全一样, 使用起来没有任何障碍。并且在实际运用中我们发现, 3CX Phone System 的功能相当强大, 可以满足大部分公司的各种话务需求。有效运行了3 个月以后, 笔者核对通讯费发现, 费用仅为原来的三成不到, 而公司的日常通讯并没受到任何影响。
如没特殊注明,文章均为好会通科技原创,转载请注明来自 http://www.meeteasy.com.cn/archives/3134.htm.
您的业务需求
中国广东省深圳市南山区西丽九祥岭工业区10栋3楼
copyright &&&&&粤ICP备号-1【Arduino】 搭建颗粒物监测系统(初级 10分钟)
演示如何使用Arduino硬件+乐联网平台&快速搭建&廉价室内颗粒物测试系统。
2 实验条件
硬件设备:
Arduino UNO:约50RMB,
W5100 :约50&RMB,
PPD42NS:约70RMB
系统平台:乐联网
现在市面上有三种廉价颗粒传感器:
GP2Y1010AU0F(约40RMB)
DSM501A(约30RMB)
PPD42NS(约70RMB)
PPD42NS Pin 1 =& Arduino GND
PPD42NS Pin 3 =& Arduino 5VDC
PPD42NS Pin 4 =& Arduino Digital Pin 8
DSM501A 连线方式类似,可以参考相关datasheet
&#include&&SPI.h&&&
&#include&&Ethernet.h&&&
&#define&USERKEY&&&&&&&&&&xxxxxxf348acb720ed3&&//&replace&your&key&here&&
&byte&mac[]&=&{&&&
&&&0xDE,&0xAD,&0xBE,&0xEF,&0xFE,&0xED};&&
&EthernetClient&&&
&char&server[]&=&&open.lewei50.com&;&&&&&
&unsigned&long&lastConnectionTime&=&0;&&&&&&&&&&&&
&boolean&lastConnected&=&false;&&&&&&&&&&&&&&&&&&&
&const&unsigned&long&postingInterval&=&30*1000;&&&
&int&pin&=&8;&&
&unsigned&long&&&
&unsigned&long&&&
&unsigned&long&sampletime_ms&=&30000;&&
&unsigned&long&lowpulseoccupancy&=&0;&&
&float&ratio&=&0;&&
&float&concentration&=&0;&&
&void&setup()&{&&
&&&Serial.begin(9600);&&
&&&pinMode(8,INPUT);&&
&&&starttime&=&millis();&&
&&&if&(Ethernet.begin(mac)&==&0)&{&&
&&&&&Serial.println(&Failed&to&configure&Ethernet&using&DHCP&);&&
&&&&&for(;;)&&
&&&&&&&;&&
&&&else&{&&
&&&&&Serial.println(&Ethernet&configuration&OK&);&&
&&&&starttime&=&millis();&&
&int&x=0;&&&
&int&sampling=1;&&
&int&transfering=0;&&
&void&loop()&{&&
&&&if(1==sampling)&&
&&&&&duration&=&pulseIn(pin,&LOW);&&
&&&&&lowpulseoccupancy&=&lowpulseoccupancy+&&
&&&&&if&((millis()-starttime)&&&sampletime_ms)&&
&&&&&&&ratio&=&lowpulseoccupancy/(sampletime_ms*10.0);&&&&
&&&&&&&concentration&=&1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62;&&&
&&&&&&&Serial.print(ratio);&&
&&&&&&&Serial.print(&,&);&&
&&&&&&&Serial.println(concentration);&&
&&&&&&&lowpulseoccupancy&=&0;&&
&&&&&&&sampling=0;&&
&&&&&&&transfering=1;&&
&if(1==transfering)&&
&&&&&if&(client.available())&{&&
&&&&&&char&c&=&client.read();&&
&&&&&&Serial.print(c);&&
&&&&if&(!client.connected()&&&&lastConnected)&{&&
&&&&&&Serial.println();&&
&&&&&&Serial.println(&disconnecting.&);&&
&&&&&&client.stop();&&
&&&&&&transfering=0;&&
&&&&&&sampling=1;&&
&&&&&&starttime=millis();&&
&&&&if(!client.connected()&&&&(millis()&-&lastConnectionTime&&&postingInterval))&{&&
&&&&&&Serial.print(&http&post:&);&&
&&&&&&Serial.println(concentration);&&
&&&&&&sendData(concentration);&&
&&&&lastConnected&=&client.connected();&&
&void&sendData(int&thisData)&{&&
&&&if&(client.connect(server,&80))&{&&
&&&&&Serial.println(&connecting...&);&&
&&&&&client.print(&POST&/api/V1/gateway/Updatesensors/01&&);&&&
&&&&client.println(&HTTP/1.1&);&&
&&&&&&&&&client.print(&userkey:&&);&&
&&&&&client.println(USERKEY);&&
&&&&&client.println(&Host:&open.lewei50.com&&);&&
&&&&&client.print(&Content-Length:&&);&&
&&&&&int&thisLength&=&24&+&getLength(thisData);&&
&&&&&client.println(thisLength);&&
&&&&&client.println(&Connection:&close&);&&
&&&&&client.println();&&
&&&&&client.print(&[{&Name&:&p1&,&Value&:&);&&&&&&&
&&&&&client.print(thisData);&&
&&&&&client.println(&}]&);&&
&&&else&{&&
&&&&&Serial.println(&connection&failed&);&&
&&&&&Serial.println();&&
&&&&&Serial.println(&disconnecting.&);&&
&&&&&client.stop();&&
&&&lastConnectionTime&=&millis();&&
&int&getLength(int&someValue)&{&&
&&&int&digits&=&1;&&
&&&int&dividend&=&someValue&/10;&&
&&&while&(dividend&&&0)&{&&
&&&&&dividend&=&dividend&/10;&&
&&&&&digits++;&&
&&&return&&&
更多案例可以参考:
【推荐教程2】W5100+arduino+乐联网平台实现传感器数据上传 &
【推荐教程1】W5100+arduino+乐联网平台 实现反向控制 &
&以上介绍了乐联网的反向控制Arduino的一个应用,希望能够让大家对乐联网的物联网应用有更进一步的了解,并能借鉴这个应用启发您的思路,一起在乐联网上实现自己的各类创意。后续,我们会推出通过数值的变化来控制设备实现不同的变化的更为复杂的控制方案,尽请期待!
如果你需要更详细的技术交流或者疑问咨询,可以加入乐为物联技术支持群:;或关注乐为物联新浪微博@乐为物联;
关注乐联网微信:搜索公众账号&乐联网&。或者扫描下面的二维码来添加关注&乐联网&。

我要回帖

更多关于 arduino最小系统 328p 的文章

 

随机推荐