亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

带联发科技 LinkIt™ Smart 7688 的分区气候控制

组件和用品

乐鑫 ESP8266 ESP-01
× 1
Arduino Nano R3
× 1
Microchip Technology ATtiny85
× 1
DHT22 温度传感器
× 1
舵机(Tower Pro MG996R)
× 1

应用和在线服务

Arduino IDE

关于这个项目

冬天来了

去年冬天,当我和妻子生下第一个孩子时,我们买了一个空间电加热器,让我们的女婴周围的区域保持温暖。当我们从一个房间搬到另一个房间时,我们随身携带了加热器,同时认为我们在使用点气候控制方面非常高效。一个月后,我们收到了两倍于正常金额的电费,并意识到如果全天使用煤气炉为整个房子供暖会更便宜。

冬天又来了,所以这次我升级到了 WiFi 恒温器,这样我就可以在楼下或温暖地藏在被子里时打开加热器。这更方便,但我们仍然在为整个房子供暖,即使大部分时间我们都在房子的一个部分。

更聪明地工作

看看我们控制照明的运动传感器日志,很明显我们下班后作为一个家庭在楼下度过 4-5 个小时,然后在晚上 9 点左右上楼到我们的卧室睡觉,直到第二天早上我们离开去上班。周末有点不同,但周一到周五的工作就像发条一样(特别是对于 10 个月大的孩子来说,睡眠时间很严格)。

我看过具有多区域温度监控和无线可控风管挡板的 HVAC 系统,但硬件非常昂贵,而且所有软件看起来都是事后的想法(随着技术的进步,几乎没有支持或更新)。我的房子里已经有一些支持 WiFi 的温度传感器,用于使用交流单元控制器,并且一直渴望在项目中使用一些小型伺服系统。我所需要的只是 WiFi 连接的伺服系统,它可以打开/关闭我的 HVAC 系统中的管道通风口……应该很容易。

联发科的 LinkIt™ Smart 7688

联发科的新型 LinkIt Smart 7688 Duo HDK 是一款 WiFi 连接微处理器,运行 OpenWRT,带有板载兼容 arduino 的微控制器。它非常适合这个项目,因为它具有多个传感器和伺服电机所需的所有 I/O 引脚,以及与我现有的温度传感器进行通信的 WiFi 功能。此外,由于它已经安装了带有 uHTTPd 的 OpenWRT,我可以直接在 LinkIt Smart 7688 HDK 上运行 WebApp,以获得完全独立的包。

设置 LinkIt Smart 7688 HDK

这是我第一次使用内置 WiFi 的电路板,所以我正在为陡峭的学习曲线做准备。幸运的是,设置实际上只需 3 个步骤:

  • 启动 Linkit Smart 7688 并从您的计算机连接到其 WiFi 接入点
  • 登录网络界面并输入您的 WiFi 接入点设置
  • 在 Arduino IDE 中添加“LinkIt Smart 7688 Duo”板

而已!当您在 Arduino IDE 中选择“LinkIt Smart 7688 Duo”板时,您可以像其他任何板一样通过串行推送您的草图,也可以通过 WiFi 上传(这将在以后非常方便)。 Linkit Smart 7688 入门指南和开发人员指南也可能对您有所帮助。

如果您想让微控制器直接在您的 arduino 草图中使用 WiFi(我们将这样做),您只需 ssh 进入 HDK 并稍微翻转以启用 Arduino Yun 库兼容性。

您可以从这里复制/粘贴行:

WiFi 客户端和伺服控制器

由于它内置了与 Yun 桥接库的兼容性并使用了 Arduino IDE,因此改编现有代码非常容易。使用桥接库,我可以让 HDK 轮询板载 Web 服务器的通风配置(楼上、楼下或整个房子),然后相应地调整两个伺服系统。在下面的视频中,我在 Raspberry Pi 2 上运行了它,但我能够将 WebApp 移植到 LinkIt Smart 7688 以使其更加高效(代码在最后)。

我的 WebApp 在 php 上运行,所以我只是使用 opkg 包管理器来安装它,因为它包含在 LinkIt Smart 7688 上的 OpenWRT 中:

然后我通过添加以下行更新 /etc/config/uhttpd 文件以解释 php:

并重新启动 uHTTPd

硬件

我将伺服喇叭直接连接到通风口,并制作了一个铝制支架,用一些不锈钢支架将伺服器固定到位。还有一点玩,所以我会添加一些拉链,使它更持久一些。

软件

这个构建实际上归结为三个组成部分:

  • 房屋周围的温度传感器会定期向 LinkIt Smart 7688 上运行的 uHTTPd 网络服务器发送更新。
  • 在 LinkIt Smart 7688 上运行的 Web 应用程序,可显示当前状态并允许您手动重新配置通风口。
  • LinkIt Smart 7688 上的 MCU 可控制通风口,根据一天中的时间将暖空气引导到楼上或楼下。

温度传感器只是连接到 DHT11 或 DHT22 的 ATtiny85s 或 Arduino Nanos,并通过 ESP8266 通过软件串行将温度/湿度信息发送到网络服务器。我在这里对这些传感器进行了完整的记录,因为它们最初是作为我的使用点空调项目的第二阶段设计和开发的(这部分是完全可选的,但它会给你额外的指标,可用于调整系统并最终实现自动化)。

LinkIt Smart 7688 HDK 本身在我的阁楼上,直接连接到管道通风口。在 OpenWRT 端,一个 cronjob 更新了通风口状态文本文件。运行 arduino 草图的 MCU 端会定期检查此文本文件并相应地调整通风口。

为了检查通风口的状态并手动重新配置它们,我创建了一个直接托管在 LinkIt Smart 7688 上的小型 Web 应用程序。如果需要,我可以通过 dyndns 和端口转发从屋外查看和控制所有这些。

改进的空间

随着夜晚已经越来越冷,我需要尽快让它工作,所以以快速部署的名义做出了一些让步。在硬件方面,我将为伺服器 3D 打印适当的支架,因为我的 hack-job 支架有点玩。此外,我在演示中使用的小型 RC 伺服系统全是塑料齿轮,我预计这些齿轮不会持续多年,所以因为我不想很快爬回阁楼,所以我要换了它们用于带有金属齿轮的大型伺服系统。

有一天,我可能会在每个房间的通风口添加额外的 WiFi 连接伺服器,并将它们全部连接回单个 LinkIt Smart 7688。

目前,温度探头仅将读数转储到 csv 文件中,因此我可以轻松地对其进行跟踪和绘制。如果房子特别冷,早点打开加热器会很好,但是我的 WiFi 恒温器还没有 API。我还想与我的家庭自动化系统相关联,以便通风口根据来自运动传感器的实时房间占用情况自动调整,而不是完全根据一天中的时间(尤其是周末,因为我们的日程安排是动态的)。

代码

  • LinkIt Smart Duo WiFi 通风口
  • WiFi 温度传感器
  • Vent.php
  • LinkIt Smart Vent Android 网络应用程序
LinkIt Smart Duo WiFi VentC/C++
此草图使用来自 Arduino Yun 的 Bridge 和 HTTP Client 库来轮询 Web 服务器并根据需要打开/关闭 HVAC 通风口。
/* 改编自 BARRAGAN  和 Yun 的 Sweep 伺服示例由 Tom igoe 创建的 HTTP 客户端示例 ** 两者都在公共域中。*** 代码适用于 HAI(带智能的家庭自动化),由 Buddy Crotty ** 这个 arduino 草图依赖网络服务器来完成所有繁重的工作。这可以是像 Raspberry Pi 这样的独立设备,或者您可以在 LinkIt Smart inOpenWRT 的 MPU 端运行它。** Web 服务器从房子周围收集温度读数,并根据时间确定冷/热空气需要去哪里白天、室外天气(包括预报)和家庭入住率。** 然后根据需要将空气输送到哪里,输出“楼上”、“楼下”或“全屋”。 */#include  #include #include  伺服上行; // 创建舵机对象来控制楼上舵机 Servo downservo; // 楼下通风口风门伺服 int uppos =0; // 存储(楼上)伺服位置的变量 int downpos =0; // 楼下舵机位置 const char* host ="192.168.1.80"; // 家庭自动化 Webserverint dopenangle =80 的内部 IP; //您的伺服需要在ventint dcloseangle =0上打开/关闭之间转动的度数; int uopenangle =140; int ucloseangle =0; void setup() { upservo.attach(9); // 连接到楼上通风口风门的伺服销 downservo.attach(10); // 连接到楼下通风口风门的伺服引脚 //启动连接到 OpenWRT pinMode(13, OUTPUT);数字写入(13,低); Bridge.begin(); digitalWrite(13, HIGH);} void wholehouse(){ if (downpos <=dcloseangle){ // 确保通风口尚未就位 //打开楼下通风口 for(downpos =dcloseangle; downpos <=dopenangle; downpos + =1) // 从设定的关闭角度移动到开启角度一次 { downservo.write(downpos);延迟(20); // 在步骤之间等待直到伺服到达位置 } } if (uppos <=uopenangle) { //打开楼上通风口 for(uppos =ucloseangle; uppos <=uopenangle; uppos +=1) { upservo.write(uppos);延迟(20); } }}void downstairs(){ if (downpos <=dopenangle) { //打开楼下通风口 for(downpos =dcloseangle; downpos <=dopenangle; downpos +=1) { downservo.write(downpos);延迟(20); } } if (uppos>=ucloseangle){ //关闭楼上通风口 for(uppos =uopenangle; uppos>=ucloseangle; uppos-=1) { upservo.write(uppos);延迟(20); } }}void upstairs() { if (uppos <=uopenangle) { //打开楼上通风口 for(uppos =ucloseangle; uppos <=uopenangle; uppos +=1) { upservo.write(uppos);延迟(20); } } if (downpos>=dcloseangle){ //关闭楼下通风口 for(downpos =dopenangle; downpos>=dcloseangle; downpos -=1) { downservo.write(downpos);延迟(20); } }} void loop(){ HttpClient 客户端; // 创建并发出一个 HTTP 请求:String cmd ="http://"; cmd +=主机; cmd +="/vent.txt";客户端获取(cmd); // 从服务器读取传入的字节 while (client.available()) { int c =client.read(); if (c =='2') 楼上(); if (c =='1') 楼下(); if (c =='0') 全屋(); } 延迟(60000);}
WiFi 温度传感器C/C++
连接的温度和湿度传感器。将数据记录到中央家庭自动化服务器。
/* * Buddy Crotty 为 HAI(带智能的家庭自动化)改编的代码 * * 通过 HTTP GET 请求将数据发送到您的 HAI 服务器 * * 连接是通过软件串行连接到ESP8266 WiFi * 接口已配置为连接到您的无线局域网,* 但您可以取消 WiFi 设置的注释以重置 SSID/密码 * */const char* host ="192.168.1.80"; // 家庭自动化 Webserver 的内部 IPconst char* devID ="downstairs"; // 设备 ID(单字,无空格,无特殊字符)#include SoftwareSerial ser(10, 11); // (RX, TX) // 用于控制 ESP8266 模块的软件串口 // 用于调试的硬件串口long utime =300000; // 更新间隔时间 // 900000 =15 分钟(电池/太阳能)// 300000 =5 分钟(交流电源)// 5000 =5 秒(测试)// ESP8266 必须大于 10000退出睡眠模式(电池模式)//温湿度传感器#include #define DHTPIN 2 //温度/湿度传感器引脚#define DHTTYPE DHT22 // DHT11、DHT22(AM2302或DHT21(AM2301) )DHT dht(DHTPIN, DHTTYPE);void setup() { Serial.begin(9600); ser.begin(9600); //ser.listen(); /* // 取消注释重置 WiFi 设置延迟(1000); ser.println("AT+CWMODE=1"); ser.println("AT+CWJAP=\"SSID\",\"密码\""); */ ser.println("AT+RST"); / / 重置 ESP8266 因为 arduino 被重置 delay(10); dht.begin(); // 启动 DHT Serial.println("Giving everything a chance to warm up"); //等待 25 秒让 WiFi 连接 Serial.println( "|-------------------------|"); Serial.print("|"); for(int x =0; x <25; x++){ Serial.print("#"); delay(1000); } Serial.println("|"); Serial.println("Done");} float t =0; INT H =0; float hi =0;void loop() { Serial.println(); //温度和湿度浮动 t =dht.readTemperature(true); int h =dht.readHumidity(); float hi =dht.computeHeatIndex(t, h);// 输出值被发送到 ThingSpeak Serial.print("Temperature:"); Serial.print(t); Serial.print(" *F\t"); Serial.print("热指数:");串行打印(嗨); Serial.println(" *F"); Serial.print("湿度:"); Serial.print(h); Serial.println("%\t"); Serial.print("...连接到"); Serial.println(主机); // TCP连接字符串 cmd ="AT+CIPSTART=\"TCP\",\""; cmd +=host; cmd +="\",80"; ser.println(cmd);延迟(1000); if(ser.find("Error")){ Serial.println("AT+CIPSTART 错误");返回; } else{ } // 准备 GET 字符串 String getStr ="GET /tempupdate.php?ID="; getStr +=devID; getStr +="&field1="; //临时getStr +=t; getStr +="&field2="; //湿度 getStr +=h; getStr +="&field3="; //热指数 getStr +=hi; getStr +="\r\n\r\n"; Serial.print("发送数据地址:"); Serial.println(getStr); // 发送数据长度 cmd ="AT+CIPSEND="; cmd +=String(getStr.length()); ser.println(cmd); if(ser.find(">")){ ser.print(getStr); Serial.println("成功!"); } else{ ser.println("AT+CIPCLOSE"); Serial.println("连接失败"); // 提醒用户 }Serial.print("Next update in ");Serial.print(utime / 1000);Serial.println(" seconds");delay(utime); //在更新之间等待 }
Vent.phpPHP
检查状态并手动覆盖通风口配置。
仅限楼上

全屋

仅限楼下

Vents 当前打开为 ";if ($status ==="0 ") 打印"全屋";if ($status ==="1") 打印"仅楼下";if ($status ==="2") 打印"仅楼上";打印"
"; fclose($myfile);if ($_GET["zone"] =="");else {$myfile =fopen("vent.txt", "w+") or die("无法打开文件!"); if ($_GET["zone"] !="") print "

发送命令打开通风口";if ($_GET["zone"] ==="0") print "the Whole House"; if ($_GET["zone"] ==="1") 打印“仅限楼下”;if ($_GET["zone"] ==="2") 打印“仅限楼上”;打印“

";fwrite($myfile, $_GET['zone']);fclose($myfile);}?>
LinkIt Smart Vent Android WebAppJSON
清单文件,因此 Android 上的 chrome 将通风控制器作为网络应用程序打开。
{ "name":"LinkIt Smart Vent", "icons":[ { "src":"LinkIt_icon_36.png", "sizes":"36x36", "type":"image/png", "density":0.75 }, { "src":"LinkIt_icon_48.png", "sizes":"48x48", "type":"image/png", "密度":1.0 }, { "src":"LinkIt_icon_128.png", "sizes":"128x128", "type":"image/png", "密度":1.0 }, { "src":"LinkIt_icon_192 .png", "sizes":"192x192", "type":"image/png", "density":1.0 }], "start_url":"vent.php", "display":"standalone", "orientation" ":"肖像"}

示意图

ATtiny85 或 Arduino Nano 从 DHT11/22 和与 ESP8266 连接的 WiFi 中提取温度。

制造工艺

  1. 数据模块:23.1 英寸超拉伸 TFT 显示屏,智能控制
  2. 带二维码、RFID 和温度验证的访问控制
  3. 使用 3D 打印部件进行更好的质量控制
  4. 智能采购平衡 AI 与 HI
  5. 使用 Arduino 控制硬币接收器
  6. 带 3D 打印外壳的电池供电电视遥控器
  7. Arduino 带蓝牙控制 LED!
  8. Arduino Nano:使用操纵杆控制 2 个步进电机
  9. 使用 Cortana 控制 LED
  10. ThimbleKrox - 用手指控制鼠标
  11. GÖPEL 借助优傲机器人改善汽车制造的质量控制
  12. 带 CNC 的车床