arduino iot_如何使用Arduino构建自定义IoT硬件

arduino iot

最近,我想为制造商创建基于Arduino的低功耗物联网(IoT)设备,其内置传感器可用于将传感器数据从任何位置传输到云,并可能控制恒温器等已连接的设备,灯,门锁和其他家庭自动化产品。 在整个过程中,我了解到创建一个新的IoT设备(从构思到原型再到最终产品)并不像我想象的那么简单,并且没有“准备就绪”的开发设备。 但是,通过弄清楚如何做到这一点,我创建了一种名为Siguino的新产品,这是一种开放源代码的 IoT电路板,我希望它将使其他人可以更轻松,更快地创建自己的IoT产品。

Siguino基于Arduino Pro Mini的低功耗版本,该版本具有板载传感器和天线,并用一块电池供电。 它还利用Sigfox (一种旨在将IoT设备连接到云的低功耗广域网)。

本文介绍了从非常杂乱的电路板(但可以正常工作)的原型到最终的,定制设计的印刷电路板(PCB)的过渡过程,其他人将有望使用该电路板。

Prototype 1 vs. final prototype

原型1与最终原型相比

1.面包板

在所有优秀制造商项目开始之初 ,我首先准备了一个概念性电路。 这涉及确定您希望设备具有的功能以及将使用的组件。 我希望我的设备能够:

  • 低功耗并基于Arduino(例如,使用ATmega328P芯片的Arduino Pro Mini)
  • 包括一个Sigfox芯片,以便它可以通过Sigfox网络发送消息。 我选择WiSOL SFMR10芯片有两个原因:
    • 它是仅发送芯片而不是收发器,而且我没有双向通信的计划
    • 有一个可用的DevKit (对面包板和原型制作非常有用)
  • 有四个基本传感器:
    • 连接的恒温器的温度(SparkFun DS18B20
    • 所连接灯光的光强度(标准光电管)
    • 用于门打开/关闭的磁性检测“霍尔效应”,例如门是否已打开或打开(DigiKey AH9246-W-7
    • 运动检测可确保设备安全,跌倒检测,周边运动检测等等。   我对跳闸开关,水银开关等进行了试验,但决定使用加速度计(Adafruit LIS3DH )是制造商的最佳选择,因为它为开发板提供了原生的可能性。 (请注意,此组件的分线板不是低功耗的 ,尽管原始芯片是。)

结果是一组相当混乱(但实用!)的组件:

Prototype 1

一切正常后,我花了一些时间使用面包板跳线整理出更整齐的版本:

Prototype 2

2.编写Arduino代码

下一步是编写基本代码,使面包板设备执行我想要的操作。 其中一些是标准的,并包含在每个组件的现有示例代码中。 例如,使用DS18B20 测量温度的代码如下所示:



   
   
   
#include <DallasTemperature.h>
#include <OneWire.h>

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature temp_sensor(&oneWire);

void setup(){
  Serial.begin(9600);
  temp_sensor.begin();

  Serial.println("DS18B20 Temperature Test\n\n");

  delay(300);//Let system settle

}//end "setup()"

void loop(){

  Serial.print("Requesting temperatures...");
  temp_sensor.requestTemperatures(); // Send the command to get temperatures
 
  Serial.print("Temperature is: ");
  float temp_reading = temp_sensor.getTempCByIndex(0);
  Serial.println(temp_reading);

  delay(1000);
}// end loop()

有许多第三方库提供了用于Arduino Pro Mini的低功耗使用的选项。 我选择了可​​在GitHub找到Rocket Scream库。 家庭自动化社区Andreas Rohner提供了有关修改Arduino Pro Mini以降低功耗的良好信息。 该项目的样本用法为:



   
   
   
// **** INCLUDES *****

#include "LowPower.h"

void setup()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值