NooLite无线设备和智能家居(第2部分)。Arduino Mega服务器

图片

因此,我们继续讲故事的第二部分,即将nooLite无线控制集成到家庭自动化系统中。在这一部分中,我们将讨论nooLite MT1132控制模块及其与流行的Arduino Mega Server系统的集成。通过无线控制智能家居中的灯和电器,这扩展了已经高度开发的AMS功能。

关于第一部分


本系列第一部分讨论了nooLite无线控制的工作原理以及如何从Arduino上的草图控制此设备。在第一部分中,给出了有关连接MT1132模块及其编程的详细信息。现在它将对我们有很大帮助。

为什么呢

因为Arduino Mega Server是Arduino。上一篇文章中编写的所有内容也适用于Arduino Mega Server。因此,在阅读本文之前,建议您熟悉本周期的第一部分。

关于Arduino Mega Server的几句话


Arduino Mega Server是具有许多独特功能的多功能系统。您可以在项目网站上了解更多信息。它清楚地用“图片”描述了它的主要特征。简而言之,这是Arduino控制器的操作系统。裸控制器的功能与板载AMS的控制器的功能几乎相同,与裸机的功能与板载Windows或Linux的计算机的功能几乎相同。

这是图形比较,但是它可以很好地了解Arduino Mega Server是什么。

整合性


现在让我们看看MT1132控制模块如何集成到系统中。从物理上讲,连接该模块与连接到Arduino Mega或Arduino Due并无不同,如前一篇文章所述。因此,我再次请您参考上一篇文章,以免在此处重复相同的内容。

用电线-电源,地线和RX接收来自Arduino的控制命令,模块就可以工作了。的确,nooLite MT1132在轻松将设备连接到微控制器方面一直是冠军。

该软件部分也与上一篇文章中描述的非常相似,并且与之吻合了85%。区别仅在于特定于AMS的变量和函数,我们将在本文中对其进行详细研究。

NooLite管理内核


通过nooLite控制核心,我们指的是执行基本功能的代码,这些功能生成命令并控制MT1132模块(然后将其发送到空中)。

根据AMS模块化结构的思想,此代码被设计为单独的模块,并且是系统的单独逻辑单元。此模块可以打开(如果需要nooLite控件)或关闭(如果不需要nooLite控件)。

图片

这是有利的,因为它节省了微控制器的宝贵内存,并且对于不需要nooLite控制的用户不使用该模块。该模块可以动态关闭(不保存内存),也可以在编译阶段通过简单地注释一行代码来关闭该模块。

//#define NOO_FEATURE

并且在这种情况下,模块占用的所有内存都将保持空闲状态。该系统的设计使其可以自动识别是否已编译的模块并正确处理此事件。

图片

为了方便用户,有关所有系统模块状态的信息显示在站点标题中的仪表板中。您可以立即在此处查看其状态。这适用于Arduino Mega版本和Arduino Due版本。

NooLite内核模块代码


现在,让我们看一下Arduino Mega Server系统的“ noo”模块的代码。在上一篇文章中讨论的那些功能,我将在此处省略。如果您突然不了解某些内容,请返回上一篇文章,然后再次查看。

模块的代码位于条件编译的指令中,用于根据您的指令启用或禁用模块的代码进行编译。

#ifdef NOO_FEATURE


#endif

接下来,设置与MT1132模块连接的结论(第19个输出是可选的,用于确认模块成功发送命令)

byte const PIN_TX = 18; // TX PIN (to RX noolite)
byte const PIN_RX = 19; // RX PIN (to TX noolite)

并设置了通道的字母(只是为了易于使用)

byte const NOO_CHANNEL_1 = 0;
byte const NOO_CHANNEL_2 = 1;

当前,仅使用两个通道,但是没有什么可以阻止您添加几行代码并使用所有32个通道。

该模块由函数初始化

void nooInit() {
  Serial1.begin(9600);
  modulNoo = MODUL_ENABLE;
  started("nooLite");
}

其中Serial1以9600的标准频率初始化,模块被分配为状态“ ENABLE”,并在Serial中显示测试消息以控制初始化过程。

在上一篇文章中详细介绍了构成命令的“主要”功能和将命令简化到极限的“包装”功能。这就是nooLite控件的整个核心。现在,我们可以从Arduino Mega Server代码中的任何位置自由访问任何控制功能。并以任何方式控制nooLite设备。

这是完整的nooLite控制内核代码。

完整的内核代码
/*
Modul nooLite
part of Arduino Mega Server project
*/

#ifdef NOO_FEATURE

byte const PIN_TX = 18; // TX PIN (to RX noolite)
byte const PIN_RX = 19; // RX PIN (to TX noolite)

byte const NOO_CHANNEL_1 = 0; // channel (address) 0...31 (MT1132)
byte const NOO_CHANNEL_2 = 1;
byte const NOO_CHANNEL_3 = 2;
byte const NOO_CHANNEL_4 = 3;
byte const NOO_CHANNEL_5 = 4;

void nooInit() {
Serial1.begin(9600);
modulNoo = MODUL_ENABLE;
started(«nooLite»);
}

void nooWork() {

}

void nooSendCommand(byte channel, byte command, byte data, byte format) {
byte buf[12];

for (byte i = 0; i < 12; i++) {
buf[i] = 0;
}

buf[0] = 85;
buf[1] = B01010000;
buf[2] = command;
buf[3] = format;
buf[5] = channel;
buf[6] = data;

int checkSum = 0;
for (byte i = 0; i < 10; i++) {
checkSum += buf[i];
}

buf[10] = lowByte(checkSum);
buf[11] = 170;

for (byte i = 0; i < (12); i++) {
Serial1.write(buf[i]);
}
}

void nooBind (byte ch) {nooSendCommand(ch, 15, 0, 0);}
void nooUnbind (byte ch) {nooSendCommand(ch, 9, 0, 0);}

void nooOn (byte ch) {nooSendCommand(ch, 2, 0, 0);}
void nooOff (byte ch) {nooSendCommand(ch, 0, 0, 0);}
void nooTrigger(byte ch) {nooSendCommand(ch, 4, 0, 0);}
void nooCancel (byte ch) {nooSendCommand(ch, 10, 0, 0);}

void nooUp (byte ch) {nooSendCommand(ch, 3, 0, 0);}
void nooDown (byte ch) {nooSendCommand(ch, 1, 0, 0);}
void nooRevers (byte ch) {nooSendCommand(ch, 5, 0, 0);}

void nooValue (byte ch, byte v) {nooSendCommand(ch, 6, v, 1);}

#endif // NOO_FEATURE

绑定和解绑接口


由于Arduino Mega Server为我们提供了豪华的界面,因此我们可以将其用于处理模块和nooLite系统本身的所有功能。我们不需要手动做任何事情,在使用Internet上的站点时,将使用您熟悉的标准界面元素来与nooLite系统的所有功能进行通信。这些将是按钮,下拉列表等。

让我们从界面“绑定”和“取消”电源块开始。一切都非常简单:在下拉列表中,选择所需的频道号,然后选择操作类型-“绑定”或“取消绑定”,然后单击“提交”。这是有关单击“提交”按钮后的简短说明。总的来说,一切都非常简单而优雅地完成。

图片

您可以在任何数量和任何通道上“绑定”和“取消绑定”任意块(一个通道上可以有多个电源块,由于它们在同一通道上,因此它们将同时打开)。

在这里,您只需要记住,在0.14汇编中实现了对两个通道的控制。如果两个通道不足以满足您的需求,则可以类推为您需要的任意数量的通道(最多32个)添加控制。

控制界面


现在,让我们看看AMS中的nooLite设备管理界面是如何组织的。在系统菜单中,有一个“ Management nooLite”项。当您单击它时,将打开一个页面,您可以在其中以无线方式打开和关闭nooLite设备。如我所说,在0.14版本中,控制是在两个通道上进行的。它们分别称为“块1”和“块2”(表示nooLite无线电源二聚体块)。

图片

我们单击“块1”,然后看到一个漂亮的按钮-这是第一个电源块的控制界面。您可以将照明设备或任何具有相应功率的电器连接到本机,并…通过按此按钮方便,舒适地控制其开和关。

Arduino Mega Server界面是自适应的,这意味着您可以直接从智能手机控制电器的打开和关闭-该界面将“折叠”,并且挖土机很大且易于在智能手机上按下。

图片

这还不是全部。除了简单地打开和关闭设备之外,nooLite系统还允许您执行更多其他操作,例如,调暗(平滑更改)灯的亮度或设置所需的负载功率。为此设计了另一个界面元素-用于设置功率和调光的小部件。

电源和调光小部件


在第二个通道上,有两个界面元素-打开和关闭按钮以及电源设置小部件。使用此小部件,您可以设置功率,以最大值的百分比表示。这是适用于大多数情况的通用解决方案。

您同样可以将nooLite无线调光器(例如SU111-300),房间中的枝形吊灯或需要调节功率(在功率装置的额定功率之内)的电气设备连接到nooLite无线调光器,并且可以直接从网页轻松安装任何所需的功率。

图片

如果您需要以其他方式(例如,以更高的精度或非线性方式)调整功率,则可以通过调整源代码(当然,可以完全访问)来更改标准小部件。

图片显示了功率设置为最大功率的20%的瞬间。同时,您可以将草图的电源自动更改为Arduino。例如,使用此系统,当灯的亮度缓慢增加并“自然”地唤醒您时,组织如此时髦的“黎明闹钟”毫无意义。而且没有电线!功率和控制能力足以将二聚体集成到灯或枝形吊灯中。

小部件和按钮独立工作。这意味着您可以设置所需的电源(亮度),然后关闭并重新打开电源,将节省安装的电源,这非常方便。

其他功能


描述nooLite仪器控制命令Nootekhnika 文档包含许多其他命令,其中一些已经存在于内核中,而另一些则不存在。如果您需要其他命令,则可以自己添加它们,因为这一点都不困难,并且系统中已有许多示例。

结论


因此,我们研究了将nooLite MT1132控制模块集成到Arduino Mega Server中以及组织nooLite硬件管理接口的原理。借助集成的控制核心,您可以在智能家居中轻松地通过AMS控制nooLite设备。

关于这一点,第二篇文章结束了,在本系列的第三篇文章中,您将熟悉Arduino Mega Server “ 100合1”系统的绝对梦幻概念,当板上带有AMS的控制器取代您使用许多设备和系统并节省成本时。

它将在焊接站的示例中显示,我们实际上将一台无线nooLite二聚体从零做起。

聚苯乙烯

Arduino Mega Server是一个通用且灵活的系统,几乎可以与任何东西集成,因此,有兴趣推广其技术并扩展用户群的公司可以合作-您的设备也可以轻松地与流行的Arduino Mega Server系统集成。

在Arduino Mega Server中拥有自己的模块(和网站)是一个很好的主意。循环

的第一第三第四部分。

加法一个Youtube频道已打开,这是Arduino Mega Server 促销视频,演示了如何在实际系​​统上工作。

Source: https://habr.com/ru/post/zh-CN389293/


All Articles