传感器是将物理参数转换为电输出的设备。 传感器是换能器的一种。 传感器可分为模拟传感器和数字传感器。 模拟传感器以电压和电流的形式提供输出。 微控制器需要 ADC(模数转换器)读取来自模拟传感器的数据。 许多较新的传感器都是数字传感器,即它们使用 I2C(内部集成电路)、SPI(串行外设接口)和 UART(通用异步接收器)等协议以数字格式提供输出。
执行器是将电信号转换为物理输出(即运动)的设备。 执行器可以通过电压或电流、气动或液压、甚至人力来控制。 在嵌入式系统中,执行器主要由电力控制。 当接收到控制信号时,执行器将电能转换为机械运动。 执行器可以产生线性运动、旋转运动或振荡运动。 执行器的示例包括电动机、压电致动器、气动致动器、步进电机和门锁致动器等。
除了以太网、WiFi、蓝牙等传统通信技术外,还有许多其他技术可用于物联网通信。
Standard Frequency Range Data Rate LiFi Similar to 802.11 400 − 800 T H z < 10 m < 224 G b p s WiFi 802.11 a / b / g / n / a c 2.4 G H z and 5 G H z ∼ 50 m < 1 G b p s Cellular GSM/GPRS/EDGE 900 , 1800 , 1900 , and < 200 k m < 500 k p s ( 2 G ) , (2G), UMTS/HSPA 2100 M H z < 2 M b p s ( 3 G ) , (3G), LTE (4G), 5G 2.3 , 2.6 , 5.25 , 26.4 , and < 10 M b p s ( 4 G ) 58.68 G H z < 100 M b p s ( 5 G ) Bluetooth Bluetooth 4.2 2.4 G H z 50 − 150 m 1 M b p s RFID/NFC ISO/IEC 18000 − 3 13.56 M H z 10 c m 100 − 420 k b p s 6LowPAN RFC6282 2.4 G H z and ∼ 1 G H z < 20 m 20 − 250 k b p s ZigBee ZigBee 3.0 based on 2.4 G H z 10 − 100 m 250 k b p s IEEE802.15.4 Z-Wave Z-Wave Alliance 868.42 M H z and < 100 m < 100 k b p s ZAD12837 / ITU-T 908.42 M H z LoRa G.9959 LoRaWAN 868 M H z and 915 M H z < 15 k m 0.3 − 50 k b p s \begin{array}{lllll} \hline & \text { Standard } & \text { Frequency } & \text { Range } & \text { Data Rate } \\ \hline \text { LiFi } & \text { Similar to } 802.11 & 400-800 \mathrm{THz} & <10 \mathrm{~m} & <224 \mathrm{Gbps} \\ \text { WiFi } & 802.11 \mathrm{a} / \mathrm{b} / \mathrm{g} / \mathrm{n} / \mathrm{ac} & 2.4 \mathrm{GHz} \text { and } 5 \mathrm{GHz} & \sim 50 \mathrm{~m} & <1 \mathrm{Gbps} \\ \text { Cellular } & \text { GSM/GPRS/EDGE } & 900,1800,1900 \text {, and } & <200 \mathrm{~km} & <500 \mathrm{kps}(2 \mathrm{G}), \\ & \text { (2G), UMTS/HSPA } & 2100 \mathrm{MHz} & & <2 \mathrm{Mbps}(3 \mathrm{G}), \\ & \text { (3G), LTE (4G), 5G } & 2.3,2.6,5.25,26.4, \text { and } & & <10 \mathrm{Mbps}(4 \mathrm{G}) \\ & & 58.68 \mathrm{GHz} & & <100 \mathrm{Mbps}(5 \mathrm{G}) \\ \text { Bluetooth } & \text { Bluetooth } 4.2 & 2.4 \mathrm{GHz} & 50-150 \mathrm{~m} & 1 \mathrm{Mbps} \\ \text { RFID/NFC } & \text { ISO/IEC } 18000-3 & 13.56 \mathrm{MHz} & 10 \mathrm{~cm} & 100-420 \mathrm{kbps} \\ \text { 6LowPAN } & \text { RFC6282 } & 2.4 \mathrm{GHz} \text { and } \sim 1 \mathrm{GHz} & <20 \mathrm{~m} & 20-250 \mathrm{kbps} \\ \text { ZigBee } & \text { ZigBee } 3.0 \text { based on } & 2.4 \mathrm{GHz} & 10-100 \mathrm{~m} & 250 \mathrm{kbps} \\ & \text { IEEE802.15.4 } & & & \\ \text { Z-Wave } & \text { Z-Wave Alliance } & 868.42 \mathrm{MHz} \text { and } & <100 \mathrm{~m} & <100 \mathrm{kbps} \\ & \text { ZAD12837 / ITU-T } & 908.42 \mathrm{MHz} & & \\ \text { LoRa } & \text { G.9959 } & & & \\ & \text { LoRaWAN } & 868 \mathrm{MHz} \text { and } 915 \mathrm{MHz} & <15 \mathrm{~km} & 0.3-50 \mathrm{kbps} \\ \hline \end{array} LiFi WiFi Cellular Bluetooth RFID/NFC 6LowPAN ZigBee Z-Wave LoRa Standard Similar to 802.11802.11a/b/g/n/ac GSM/GPRS/EDGE (2G), UMTS/HSPA (3G), LTE (4G), 5G Bluetooth 4.2 ISO/IEC 18000−3 RFC6282 ZigBee 3.0 based on IEEE802.15.4 Z-Wave Alliance ZAD12837 / ITU-T G.9959 LoRaWAN Frequency 400−800THz2.4GHz and 5GHz900,1800,1900, and 2100MHz2.3,2.6,5.25,26.4, and 58.68GHz2.4GHz13.56MHz2.4GHz and ∼1GHz2.4GHz868.42MHz and 908.42MHz868MHz and 915MHz Range <10 m∼50 m<200 km50−150 m10 cm<20 m10−100 m<100 m<15 km Data Rate <224Gbps<1Gbps<500kps(2G),<2Mbps(3G),<10Mbps(4G)<100Mbps(5G)1Mbps100−420kbps20−250kbps250kbps<100kbps0.3−50kbps
Node-RED是IBM开发的基于Web的开源软件工具,可用于通过互联网连接硬件设备。借助 Node-RED,您可以将 mbed 开发板连接到互联网,读取传感器值,将其显示在图表、网页、电子邮件等消息中。 您还可以将命令发送回开发板以执行一些控制。 它是一种基于图形的编程工具,使用称为节点的功能块来构建程序。 您所需要做的就是连接节点并配置它们。 这使得许多编程任务变得非常简单且易于实现。 下图显示了在 Node-RED 中实现的一个简单的基于 WebSocket 的聊天程序。
数字输入输出
数字输入示例:
#include "mbed.h"
DigitalIn mypin(SW2); // change this to the button on your board
DigitalOut myled(LED1);
int main()
{
// check mypin object is initialized and connected to a pin
if (mypin.is_connected()) {
printf("mypin is connected and initialized! \n\r");
}
// Optional: set mode as PullUp/PullDown/PullNone/OpenDrain
mypin.mode(PullNone);
// press the button and see the console / led change
while (1) {
printf("mypin has value : %d \n\r", mypin.read());
myled = mypin; // toggle led based on value of button
ThisThread::sleep_for(250);
}
}
#include "mbed.h"
DigitalIn a(D0);
DigitalIn b(D1);
DigitalOut z_not(LED1);
DigitalOut z_and(LED2);
DigitalOut z_or(LED3);
DigitalOut z_xor(LED4);
int main()
{
while (1) {
z_not = !a;
z_and = a && b;
z_or = a || b;
z_xor = a ^ b;
}
}
数字输出示例:
#include "mbed.h"
DigitalOut myled(LED1);
int main()
{
// check that myled object is initialized and connected to a pin
if (myled.is_connected()) {
printf("myled is initialized and connected!\n\r");
}
// Blink LED
while (1) {
myled = 1; // set LED1 pin to high
printf("myled = %d \n\r", (uint8_t)myled);
ThisThread::sleep_for(500);
myled.write(0); // set LED1 pin to low
printf("myled = %d \n\r", myled.read());
ThisThread::sleep_for(500);
}
}
批量输入示例:
#include "mbed.h"
BusIn nibble(D0, D1, D2, D3); // Change these pins to buttons on your board.
int main()
{
// Optional: set mode as PullUp/PullDown/PullNone/OpenDrain
nibble.mode(PullNone);
while (1) {
// check bits set in nibble
switch (nibble & nibble.mask()) { // read the bus and mask out bits not being used
case 0x0:
printf("0b0000, D3,D2,D1,D0 are low \n\r");
break;
case 0x1:
printf("0b0001, D0 is high \n\r");
break;
case 0x2:
printf("0b0010, D1 is high \n\r");
break;
case 0x3:
printf("0b0011, D1,D0 are high \n\r");
break;
case 0x4:
printf("0b0100, D2 is high \n\r");
break;
case 0x5:
printf("0b0101, D2, ,D0 are high \n\r");
break;
case 0x6:
printf("0b0110, D2,D1 are high \n\r");
break;
case 0x7:
printf("0b0111, D2,D1,D0 are high \n\r");
break;
case 0x8:
printf("0b1000, D3 is high \n\r");
break;
// ...
case 0xF:
printf("0b1111, D3,D2,D1,D0 are high \n\r");
break;
}
ThisThread::sleep_for(1000);
}
}
模拟输入输出
脉冲宽度调制
加速度计和磁力计
SD卡读写
本地文件系统
中断
串口、SPI、I2C、CAN
以太网、以太网网络客户端和服务器、TCP和UDP套接字、WebSocket、WiFi
低通滤波器、高通滤波器、带通滤波器、带阻滤波器和陷波滤波器、快速傅里叶变换、PID控制器
网络监控温度、智能灯控、声控门禁、RFID读取器、云端数据分析和可视化示例、实时信号处理