arduino iot
最近,我想为制造商创建基于Arduino的低功耗物联网(IoT)设备,其内置传感器可用于将传感器数据从任何位置传输到云,并可能控制恒温器等已连接的设备,灯,门锁和其他家庭自动化产品。 在整个过程中,我了解到创建一个新的IoT设备(从构思到原型再到最终产品)并不像我想象的那么简单,并且没有“准备就绪”的开发设备。 但是,通过弄清楚如何做到这一点,我创建了一种名为Siguino的新产品,这是一种开放源代码的 IoT电路板,我希望它将使其他人可以更轻松,更快地创建自己的IoT产品。
Siguino基于Arduino Pro Mini的低功耗版本,该版本具有板载传感器和天线,并用一块电池供电。 它还利用Sigfox (一种旨在将IoT设备连接到云的低功耗广域网)。
本文介绍了从非常杂乱的电路板(但可以正常工作)的原型到最终的,定制设计的印刷电路板(PCB)的过渡过程,其他人将有望使用该电路板。
原型1与最终原型相比
1.面包板
在所有优秀制造商项目开始之初 ,我首先准备了一个概念性电路。 这涉及确定您希望设备具有的功能以及将使用的组件。 我希望我的设备能够:
- 低功耗并基于Arduino(例如,使用ATmega328P芯片的Arduino Pro Mini)
- 包括一个Sigfox芯片,以便它可以通过Sigfox网络发送消息。 我选择WiSOL SFMR10芯片有两个原因:
- 它是仅发送芯片而不是收发器,而且我没有双向通信的计划
- 有一个可用的DevKit (对面包板和原型制作非常有用)
- 有四个基本传感器:
- 连接的恒温器的温度(SparkFun DS18B20 )
- 所连接灯光的光强度(标准光电管)
- 用于门打开/关闭的磁性检测“霍尔效应”,例如门是否已打开或打开(DigiKey AH9246-W-7 )
- 运动检测可确保设备安全,跌倒检测,周边运动检测等等。 我对跳闸开关,水银开关等进行了试验,但决定使用加速度计(Adafruit LIS3DH )是制造商的最佳选择,因为它为开发板提供了原生的可能性。 (请注意,此组件的分线板不是低功耗的 ,尽管原始芯片是。)
结果是一组相当混乱(但实用!)的组件:
一切正常后,我花了一些时间使用面包板跳线整理出更整齐的版本:
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()