Jacktang

  • 2022-05-23
  • 回复了主题帖: 瑞萨CPK-RA6M4 开发板测评----CAN

    板载资源不具备CAN外部测试的条件,这个是有点小麻烦

  • 2022-05-22
  • 回复了主题帖: 【平头哥RVB2601创意应用开发】lvgl使用1——标签

    好奇,字体源文件是个文本文件,多看几遍也就猜出是什么意思了,不好猜

  • 回复了主题帖: 瑞萨CPK-RA6M4 开发板测评----ADC

    关于RA6M4的ADC模块学习了

  • 2022-05-21
  • 发表了主题帖: 物联网项目 集锦 2:看看你想动手做哪个?

    本帖最后由 Jacktang 于 2022-5-21 13:05 编辑 [index] [#2] 十五.使用 Arduino IDE 的 ESP8266 气象站 [#3]十六.土壤湿度传感器和 Arduino [#4]十七.汽车倒车雷达电路 [#5]十八.Arduino金属探测器 [#6]十九.数字电容式触摸传感器 arduino 接口 [#7]二十.水流量传感器 YF-S201 Arduino 接口 [#8]二十一.颜色传感器 TCS3200 Arduino 接口 [#9]二十二.Myoware 肌肉传感器与 Arduino 接口 [#10]二十三.Arduino的自动风扇速度控制电路 [#11]二十四.室内空气质量传感器 Renesas [#12]二十五.基于stm32的物联网智能家居 [#13]二十六.STM32无线传输的血氧仪 [#14]二十七.ESP8266的智能氛围灯设计 [#15]二十八.基于51单片机的无线病房温度检测与呼叫系统 [/index] [page]     十五.使用 Arduino IDE 的 ESP8266 气象站   今天我们正在使用 ESP8266 (NodeMCU) 和 DHT11、雨量传感器制作非常酷的气象站。在这个项目中,我们将学习如何使用 ESP8266 和传感器制作一个 DIY 功能齐全的气象站。有两种类型的气象站,一种有自己的传感器,第二种气象站是我们从气象站服务器中提取数据的地方。在本教程中,我们将研究这两种类型的气象站。     所需物料 ESP8266 (NodeMCU) DHT11 连接电线 0.96英寸OLED显示屏(第二类气象站需要) 介绍 什么是气象站? 气象站是一种使用许多不同传感器收集与天气和环境相关的数据的设备。气象站也被称为气象中心、个人气象站、专业气象站、家庭气象站、天气预报员和预报员。     气象站传感器可能包括用于读取温度读数的温度计(LM35 或 DHT11) 、用于测量大气压力的气压计(BMP180)以及用于测量雨、风、湿度等的其他传感器。气象站的范围从简单的模拟技术到数字技术。有些甚至连接到您的计算机或互联网,因此可以使用气象站软件分析收集的数据。 用于气象站的传感器类型 以下是气象站中使用的测量设备列表: 温度计(LM35) – 温度计测量温度。您可以测量室内和室外的温度,记录高点和低点,显示趋势箭头以指示温度上升或下降,甚至预测短期未来温度范围。 您可以使用 ESP8266 阅读 LM35 的示例代码     LM35 温度传感器 湿度计(DHT11) - 湿度计测量相对湿度。相对湿度是空气中水蒸气(气态水)的数量或百分比。湿度会影响环境因素和计算,如降水、雾、露点和热指数。此外,保持室内适当的湿度对您的健康和家庭都有影响。 您可以读取 ESP8266 从 DHT-11 读取数据     ESP8266 的 DHT11 引脚分配 气压计(BMP180) – 气压计测量大气压力。气压计可以根据其测量的大气压力变化来帮助预测即将到来的天气。您可以创建历史图表或压力趋势箭头,以便轻松跟踪变化,例如压力下降。此处给出了 ESP8266 DHT11 图表示例。     BMP180 气压/温度/高度传感器 风速计——风速计测量风速或风速。ESP8266 气象站可以以 MPH、KPH 或节为单位显示风速,并记录当前、峰值和平均风速读数。     NodeMCU风速计风速传感器 风速计风速传感器 风向标——风向标或风向标是一种确定风向的仪器。要显示风向,您可以使用带有 ESP8266 的旋转编码器或磁罗盘传感器。   风向标 Arduino 风向标 雨量计——雨量计测量降雨量或液体降水。该气象站包括降雨警报,可在降雨事件开始时通知您,或提醒您潜在的洪水情况。     雨量传感器模块 基于 ESP8266 的气象站 在第一部分,我们使用 DHT-11 和雨量传感器制作气象站。所以这个数据被发送到客户端(网络浏览器)。在此我们在 ESP8266 上制作 Web 服务器。如果您正在寻找使用 BMP180、DHT11 和雨量传感器的高级气象站,请阅读此处。 气象站电路图 通过分压器将雨量传感器连接到 NodeMCU 的 A0 引脚,ESP8266 在 ADC 上有 1V 输入。将 DHT11 连接到 NodeMCU 的 D5。     ESP8266气象站电路图 气象站的 NodeMCU 代码 程序分为两部分。第一部分包含 ESP8266 WiFi 和硬件相关功能,即我们的main.ino文件。第二部分是 HTML 和用户界面 GUI。它是index.h文件。 在将程序上传到 ESP 之前。在代码中更新您的 SSID 和密码。 主程序 /*  * ESP8266 NodeMCU DHT11 和雨量传感器 - 气象站示例  *  */ #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h>   #include "index.h" //我们的HTML网页内容用javascripts #include "DHTesp.h" //ESP 的 DHT11 库    #define LED 2 //板载LED #define DHTpin 14 //NodeMCU的D5是GPIO14 DHTESP dht; //您的WiFi路由器的SSID和密码 const char* ssid = "你的 SSID"; const char* password = "你的密码";   ESP8266WebServer 服务器(80);//服务器在80端口   //================================================= ================ // 当你在浏览器中打开它的 IP 时执行这个例程 //================================================= ================ 无效句柄根(){  字符串 s = MAIN_page; //读取HTML内容  server.send(200, "text/html", s); //发送网页 } 浮子湿度、温度; 无效句柄ADC(){  intrain=analogRead(A0);    //创建JSON数据  字符串数据 = "{\"Rain\":\""+String(rain)+"\", \"Temperature\":\""+ String(温度) +"\", \"Humidity\":\ ""+ 字符串(湿度) +"\"}";    数字写入(LED,!数字读取(LED));//在数据请求ajax上切换LED  server.send(200, "文本/平面", 数据); //向客户端ajax请求发送ADC值、温湿度JSON  //请求完成后获取湿度温度数据  //给予足够的时间来处理客户端以避免出现问题   延迟(dht.getMinimumSamplingPeriod());   湿度 = dht.getHumidity();   温度 = dht.getTemperature();   Serial.print("H:");   Serial.println(湿度);   Serial.print("T:");   Serial.println(温度); //dht.toFahrenheit(温度));   Serial.print("R:");   Serial.println(rain); } //================================================= =============== // 设置 //================================================= =============== 无效设置() {   序列号.开始(115200);   序列号.println();   //自动检测不可靠,不要使用以下行   // dht.setup(17);   // 改用这个:   dht.setup(DHTpin, DHTesp::DHT11); //对于 DHT11 将 DHT 传感器连接到 GPIO 17   //dht.setup(DHTpin, DHTesp::DHT22); //对于 DHT22 将 DHT 传感器连接到 GPIO 17   WiFi.begin(ssid, 密码); //连接到你的WiFi路由器   序列号.println("");     //板载LED端口方向输出   pinMode(LED,输出);      // 等待连接   而(WiFi.status()!= WL_CONNECTED){     延迟(500);     Serial.print(".");   }   //如果连接成功在串口监视器中显示IP地址   序列号.println("");   Serial.print("连接到");   序列号.println(ssid);   Serial.print("IP地址:");   Serial.println(WiFi.localIP()); //分配给你的ESP的IP地址     server.on("/", handleRoot); //在根位置处理哪个例程。这是显示页面   server.on("/readADC", handleADC); //这个页面被java Script AJAX调用     server.begin(); //启动服务器   Serial.println("HTTP 服务器启动"); } //================================================= =============== // 环形 //================================================= =============== 无效循环() {   server.handleClient(); //处理客户端请求 } 索引.h const char MAIN_page[] PROGMEM = R"=====( <!DOCTYPE html> <html> <头部> <title>circuits4you.com</title> </head> <风格> @ url(https://fonts.googleapis.com/css?family=Montserrat); @import url(https://fonts.googleapis.com/css?family=Advent+Pro:400,200); *{边距:0;填充:0;} 身体{   背景:#544947;   字体系列:Montserrat,Arial,sans-serif; } h2{   字体大小:14px; } .widget{   框阴影:0 40px 10px 5px rgba(0,0,0,0.4);   边距:100px 自动;   高度:330px;   位置:相对;   宽度:500px; } 。上{   边框半径:5px 5px 0 0;   背景:#f5f5f5;   高度:200px;   填充:20px; } 。日期{   字体大小:40px; } 。年{   字体大小:30px;   颜色:#c1c1c1; } 。地方{   颜色:#222;   字体大小:40px; } 。降低{   背景:#00A8A9;   边框半径:0 0 5px 5px;   font-family:'Advent Pro';   字体粗细:200;   高度:130px;   宽度:100%; } 。钟{   背景:#00A8A9;   边界半径:100%;   盒子阴影:0 0 0 15px #f5f5f5,0 10px 10px 5px rgba(0,0,0,0.3);   高度:150px;   位置:绝对;   右:25px;   顶部:-35px;   宽度:150px; } 。小时{   背景:#f5f5f5;   高度:50 像素;   左:50%;     位置:绝对;   顶部:25px;   宽度:4px; } .min{   背景:#f5f5f5;   高度:65px;   左:50%;     位置:绝对;   顶部:10px;   变换:旋转(100度);   宽度:4px; } .min,.hour{   边框半径:5px;   变换原点:底部中心;   过渡:所有 .5s 线性; } .infos{   列表样式:无; } 。信息{   颜色:#fff;   向左飘浮;   高度:100%;   填充顶部:10px;   文本对齐:居中;   宽度:25%; } .info 跨度{   显示:内联块;   字体大小:40px;   边距顶部:20px; } .天气p {   字体大小:20px;填充:10px 0; } .anim{animation:fade .8s linear;} @keyframes 淡出{   0%{不透明度:0;}   100%{不透明度:1;} } 一种{  文本对齐:居中;  文字装饰:无;  白颜色;  字体大小:15px;  字体粗细:500; } </style> <正文> <div class="widget">   <div class="时钟">     <div class="min" id="min"></div>     <div class="hour" id="hour"></div>   </div>   <div class="上">     <div class="date" id="date">3 月 21 日</div>     <div class="year">温度</div>     <div class="place update" id="temperature">23 °C</div>   </div>   <div style="text-align: center;"><a href="https://circuits4you.com" style="align:center">circuits4you.com</a></div>   <div class="lower">         <ul class="信息">       <li class="信息临时">         <h2 class="title">温度</h2>         <span class='update' id="temp">21 °C</span>       </li>       <li class="信息天气">         <h2 class="title">天气</h2>         <p class="main update">晴天</p>       </li>       <li class="信息风">         <h2 class="title">雨</h2>         <span class='update' id="rain">0%</span>       </li>       <li class="信息湿度">         <h2 class="title">湿度</h2>         <span class='update' id="湿度">23%</span>       </li>     </ul>   </div> </div> <脚本> setInterval(drawClock, 2000);      函数绘制时钟(){     var now = new Date();     var hour = now.getHours();     var minute = now.getMinutes();     var second = now.getSeconds();          //日期     var options = {year: 'numeric', month: 'long', day: 'numeric' };     var 今天 = 新日期();     document.getElementById("date").innerHTML = today.toLocaleDateString("en-US", options);          //小时     var hourAngle = (360*(小时/12))+((360/12)*(分钟/60));     var minAngle = 360*(分钟/60);     document.getElementById("hour").style.transform = "rotate("+(hourAngle)+"deg)";     //分钟     document.getElementById("min").style.transform = "rotate("+(minAngle)+"deg)";     //获取湿度温度和降雨数据     var xhttp = new XMLHttpRequest();     xhttp.onreadystatechange = function() {       如果(this.readyState == 4 && this.status == 200){       var txt = this.responseText;       var obj = JSON.parse(txt); //参考:https://www.w3schools.com/js/js_json_parse.asp         document.getElementById("rain").innerHTML = obj.Rain + "%";         document.getElementById("温度").innerHTML = Math.round(obj.Temperature) + "°C";         document.getElementById("temp").innerHTML = Math.round(obj.Temperature) + "°C";         document.getElementById("湿度").innerHTML = Math.round(obj.Humidity) + "%";       }       };    xhttp.open("GET", "readADC", true); //处理ESP8266上的readADC服务器    xhttp.send(); } </脚本> </正文> </html>       [page]   十六.土壤湿度传感器和 Arduino     想知道并记录土壤的湿度水平,这里是传感器,湿度传感器有两个大的裸露焊盘,用作传感器的探针,共同充当可变电阻器。将传感器放入您要测量水分含量的土壤中,这取决于土壤中的水分存在,传感器在垫之间的电导率会有所不同,即水越多电导率越高。     因此,传感器垫对干燥土壤的反应为高电阻,而对潮湿土壤的电阻为低,因此我们得到的信号取决于土壤湿度。     传感器突破 13322-04 湿度传感器电路       本文使用的Sparkfun 土壤湿度传感器 ,它可以很容易地与 Arduino 和其他微控制器模拟读取引脚连接。 Arduino联播     arduino 土壤湿度传感器连接   只需将 Sensors Vcc 插入 Arduino 的 +5V 引脚和 Gnd 到 Gnd,然后将传感器的信号引脚连接到 Arduino 的 A0 引脚。在这里,您无需将偏置或上拉电阻连接到信号引脚即可读取模拟值。 Arduino代码 仅读取传感器输出   int  sensorPin  =  0 ;     // 选择土壤湿度传感器的输入引脚 int  sensorValue  =  0 ;   // 用于存储来自传感器的值的变量   void  setup ( )  {    // 将 ledPin 声明为 OUTPUT:     Serial . 开始(9600 );   }   void  loop ( )  {    // 从传感器读取值:   sensorValue  =  analogRead ( sensorPin ) ;        延迟(1000 );             串行. 打印(“传感器=”  );                          串行. println (传感器值) ;                     }   读取传感器值一会儿       土壤传感器电路当电流连续通过传感器时,传感器垫会腐蚀。这是在特定时间读取数据记录的代码。 在此之前,在 Arduino 板和土壤湿度传感器之间制作给定的电路。在这里,SL100 (NPN) 晶体管充当开关来控制传感器的电源。当 Arduino 的 D10 引脚变高时,传感器将获得电源,如果 D10 变低,则传感器与电源断开连接。       代码 int  sensorPin  =  0 ;     // 选择土壤湿度传感器的输入引脚 int  sensorValue  =  0 ;   // 用于存储来自传感器的值的变量   int  sensorVCC  =  10 ;   void  setup ( )  {    // 将 ledPin 声明为 OUTPUT:     Serial . 开始(9600 );      pinMode (传感器VCC , 输出);     数字写入(传感器VCC , 低); }   void  loop ( )  {    // 为传感器   供电 digitalWrite ( sensorVCC ,  HIGH ) ;    延迟(100 ); //确保传感器已通电   //从传感器读取值:   sensorValue  =  analogRead ( sensorPin ) ;     //停止电源   digitalWrite (sensorVCC , LOW );     //等待   延迟(60 * 1000 );//延迟时间根据你的需要改变             串行. 打印(“传感器=”  );                          串行. println (传感器值) ;                     } 值范围 0 ~ 300 : 干土 300 ~ 700 : 潮湿的土壤 700 ~ 950:在水中。     [page]   十七.汽车倒车雷达电路   在狭小的空间内停车或倒车有些困难,更重要的是不损坏车辆部件。这是一个作为原型给出的非常有用且有效的解决方案。   本设计中使用的超声波传感器测距模块HC-SR04、Arduino nano板和蜂鸣器,通过这些元件的接口我们可以构建汽车倒车雷达电路。该电路在所有障碍物上都能有效工作,并提供 2cm 至 400cm 的感应范围。HC-SR04 只需要 5V 电压并且具有最少的功能端子。   Arduino停车场传感器电路       电路原理图     建设和工作 汽车倒车雷达电路可以很容易地用蜂鸣器、Arduino nano 和超声波传感器 HC-SR04 元件构建,这里 HC-SR04 有两个模块,包括超声波发射器、接收器和内置控制电路,这个传感器发送 8 个 40KHz 信号并检测是否有是一个脉冲信号返回。如果有任何信号返回,则此传感器会输出高电平。   将arduino nano板的+5V电源连接到超声波传感器的+Vcc,将Gnd连接到超声波传感器的Gnd,然后将trig pin连接到Arduino nano的D8,Echo pin连接到D9。根据电路和arduino代码将蜂鸣器连接到D2和Gnd。上传 Arduino 草图后,使用单独的 9V电池通过 Vin 引脚为 arduino 板供电。   汽车倒车雷达电路的Arduino代码 此代码用于检测 100 厘米范围内的障碍物,您可以根据需要将此范围更改为 400 厘米。 /* HC-SR04 Ping 距离传感器 VCC 到 arduino 5v GND 到 arduino GND Echo 到 Arduino 引脚 9 Trig 到 Arduino 引脚 8 蜂鸣器 +ve 到 Arduino 引脚 2 和 GND 到 GND 原始代码来自 theorycircuit.com 一些代码和接线灵感来自arduino.cc */   #define  trigPin  8 #define  echoPin  9 #define  Buzzer  2   无效 设置() { 序列。开始 (9600 ); pinMode (trigPin , 输出); pinMode ( echoPin ,  INPUT ) ; pinMode (蜂鸣器, 输出);   }   无效 循环() {   digitalWrite ( trigPin , 低) ; 延迟微秒(2 ); digitalWrite ( trigPin ,  HIGH ) ; 延迟微秒(10 ); digitalWrite ( trigPin , 低) ;   持续时间 = 脉冲输入(回声针, 高);   距离 =  (持续时间/2)/29.1 ;_ _ _    如果 (距离 <  100 ) { 数字写入(蜂鸣器,高); //小于100cm蜂鸣器会发出哔声   } else  { digitalWrite (蜂鸣器,低); }   如果 (距离 >=  300  || 距离 <=  0 ) { 串行。println ( "超出范围" ) ; } 其他 { 串行。打印(距离); 串行. 打印(“厘米” ); } 延迟(500 ); }   笔记:-       构建电路并上传草图,然后为 Arduino nano 的 Vin 引脚提供单独的 9V 电池,然后用合适的塑料外壳封装所有元件,并打开超声波传感器模块和蜂鸣器。将塑料外壳安装在车辆的中心部分。     [page]   十八.Arduino金属探测器   金属探测器以多种方式确保我们的安全,而且这种金属探测技术可用于许多应用程序或面向过程的项目。在本文中,Arduino金属探测器电路由接近探测器IC CS209A组成。它是一种双极单片集成电路,最适合金属检测和接近感应应用。 金属探测器如何工作?   上图足以让您了解金属探测器的操作。基本磁通量反射和 LC 电感的变化或感应线圈中产生的脉冲感应或反电动势被电路检测到,并将差值信号分离和放大到足够的程度,如果有任何差异,警报指示电路将被触发。   金属探测器线圈从内部振荡器电路中获取振荡信号,就电感而言,它可以在数学上表示为 [L = (μ0 * N² * A) / l ]。   Arduino金属探测器接线   传感器线圈 100μH 由 0.4 mm 绝缘铜线制成直径 40mm 和 50 匝,线圈内部不需要芯。这里 IC CS209A 提供两个输出,分别是引脚 4 的 Out1(通常为高电平)和引脚 5 的 Out2(通常为低电平),您可以将任何一个或两者与 Arduino 一起使用,这里的示例 Arduino 草图仅使用 Out 1 .   Arduino金属探测器代码     //Arduino Metal Detector project // www.theorycircuit.com  //Proximity Detector CS209A is used for metal detection //Writen date 22/2/2018 @ 5.53pm   //声明 Arduino 引脚 const  int  vinHi  =  0 ;  常量 int  vinLo  =  1 ; 常量 int  ledG  =  11 ; 常量 int  ledR  =  10 ; 常量 int  Buz  =  13 ;   //检测状态变化的变量 int  metalState  =  0 ;    //声明 Arduino 引脚模式 void  setup ( )  {   pinMode ( vinHi ,  INPUT ) ;   pinMode (vinLo , 输入);   pinMode (ledG , 输出);   pinMode (LEDR , 输出);   pinMode (Buz , 输出);   }   无效 循环() {   metalState  =  digitalRead (vinHi ); // 读取接近检测器信号     if  ( metalState  ==  HIGH )  // 没有检测到金属      {       digitalWrite ( ledG ,  HIGH ) ;       数字写入(ledR ,低);数字写入(嗡嗡声,低);} else { // 金属检测到digitalWrite ( ledG , LOW ) ; 数字写入(ledR ,高);数字写入(Buz    , 高) ;      }      延迟 (3000 ); // 等待 3 秒。    } 上传代码后,连接单独的 9V电池为 arduino 和金属探测器电路供电。完成接线后,如果传感器线圈附近没有金属,则绿色侧LED会发光,如果将金属靠近线圈,则红色 LED 会发光,并且蜂鸣器会发出噪音。   接近检测器 IC CS209A 引脚配置         [page]   十九.数字电容式触摸传感器 arduino 接口   我们需要开关来控制电子或电器之类的东西,有时当我们用湿手使用电器开关然后触摸来控制电器或电子负载时,电器开关会受到冲击,比普通开关更具交互性,可能是一些项目需要触摸开关。在这里,数字电容式触摸传感器 arduino 界面是作为实验制作的。   基于 TTP223B IC 的数字电容传感器非常实惠,当我们触摸它时反应良好,这种传感器分线器可以轻松地与任何类型的微控制器连接,并且仅包含三个用于外部接口的端子。       TTP223-IC TTP223 是 1 Key Touch pad 检测器 IC,适用于检测电容元件变化。功耗极低,工作电压仅在2.0V~5.5V之间。快速模式下最大响应时间约为 60mS,低功耗模式下最大响应时间为 220mS @VDD=3V。灵敏度可通过外部电容(0~50pF)调节。有关详细信息,请参阅数据表。   应用: 防水电器产品 按键更换 消费产品     Arduino 数字电容式触摸传感器接口     将传感器分线板的 Vcc 引脚连接到 Arduino 的 +5V 引脚和 Gnd 到 Gnd。将信号 (SIG) 引脚连接到 Arduino 数字引脚 D1 并上传以下代码以在您触摸电容式传感器时获得响应。   用于板载LED和串行监视器观察的 Arduino 代码。       //数字电容式触摸传感器Arduino接口   #define  sensorPin  1  // 电容式触摸传感器 - Arduino 数字引脚 D1   诠释 ledPin  =  13 ;  //输出显示LED(板载LED)-Arduino数字引脚D13   无效 设置() {   序列。开始(9600 );   pinMode (ledPin , 输出);    pinMode ( sensorPin ,  INPUT ) ; }   无效 循环() {   int  senseValue  =  digitalRead (sensorPin );   if  ( senseValue  ==  HIGH ) {     digitalWrite ( ledPin ,  HIGH ) ;     串行. println ( "触摸" ) ;   }   else {     digitalWrite ( ledPin , LOW ) ;     串行. println ( "未触及" ) ;   }   延迟(500 );   }     电容式触摸感应开关 Arduino       这个 arduino 连接是控制与 5V DC继电器连接的负载(交流灯泡),继电器的信号引脚取自 Arduino 数字引脚 D13,电容式触摸传感器的其他接线与观察连接相同。   上传以下 Arduino 代码以控制(开/关)负载设备。       //数字电容式触摸传感器开关Arduino接口   #define  sensorPin  1  // 电容式触摸传感器 - Arduino 数字引脚 D1   int 继电器引脚 =  13 ;  // 输出 RelayPin - Arduino 数字引脚 D13   布尔 currentState  =  LOW ; boolean  lastState  =  LOW ; 布尔 继电器状态 = 低;   无效 设置() {   序列。开始(9600 );   pinMode ( relayPin ,  OUTPUT ) ;     pinMode ( sensorPin ,  INPUT ) ; }   无效 循环() {   currentState  =  digitalRead (sensorPin );     if  ( currentState  ==  HIGH  &&  lastState  ==  LOW ) {     延迟( 1 ) ;         if  ( RelayState  ==  HIGH ) {       digitalWrite ( relayPin ,  LOW ) ;       继电器状态 = 低;     }  else  {       digitalWrite ( relayPin ,  HIGH ) ;       继电器状态 = 高;     }   }   最后状态 = 当前状态; }       [page]   二十.水流量传感器 YF-S201 Arduino 接口   Arduino 接口   使用水流量传感器 YF-S201 和 Arduino 测量水或液体流量非常简单,本文介绍了水流量传感器以及水流量传感器的工作原理以及如何将水流量传感器与 Arduino 接口。       为了控制我们需要测量的体积,水对每一件事都是必不可少的,本文帮助您构建水流量计来测量通过管道的水流量。   水流传感器的工作原理   该图给出了基于霍尔效应传感器的水流量传感器的详细工作方法,将嵌入磁铁的涡轮叶轮放置在封闭的塑料外壳上并放置霍尔效应传感器,当水流过管道时,它使涡轮叶轮旋转因此磁通量会干扰霍尔传感器,干扰的速度取决于水流​​的速度,因此霍尔传感器产生脉冲信号输出,该脉冲输出可以计算为水量。   YF-S201水流量传感器     这个水流传感器只有三根线,可以很容易地在任何微控制器和 Arduino 板之间连接。它只需要+5V Vcc并提供脉冲输出,传感器需要紧密安装在水管之间。   Arduino连接       将 +5V 线连接到 Arduino 电源引脚 5V,将接地引脚连接到 Gnd,然后将信号引脚连接到数字引脚 D2,该传感器具有控制电路,因此不需要上拉电阻,有些传感器需要上拉电阻,请参阅水流数据表结束连接之前的传感器。   水流量计的Arduino代码     /*  Arduino 水流量计 YF-S201 霍尔效应水流量传感器 水流量传感器输出处理为以升/小时为单位读取 */ volatile  int  flow_frequency ;  // 测量流量传感器脉冲 unsigned  int  l_hour ;  // 计算的升/小时 unsigned  char  flowsensor  =  2 ;  // 传感器输入 unsigned  long  currentTime ; 无符号 长 循环时间; void  flow  ( )  // 中断函数 {    flow_frequency ++; } 无效 设置() {    pinMode (流量传感器, 输入);    数字写入(流量传感器, 高); // 可选的内部上拉    串行。开始(9600 );    附加中断(0 , 流, 上升); // 设置中断    sei ( ) ;  // 启用中断    currentTime  =  millis ( );    cloopTime  = 当前时间; } 无效 循环 ( ) {    当前时间 = 毫秒( ) ;    // 每秒计算并打印升/小时    if ( currentTime  > =  ( cloopTime  +  1000 ) )    {       cloopTime  =  currentTime ;  // 更新 cloopTime       // 脉冲频率 (Hz) = 7.5Q,Q 是以 L/min 为单位的流速。       l_hour  =  ( flow_frequency  *  60  /  7.5 );  // (脉冲频率 x 60 分钟) / 7.5Q = 流量 L/小时       flow_frequency  =  0 ;  // 重置计数器       序列。打印(l_hour , DEC ); // 打印升/小时       Serial . println ( "L/小时" ) ;    } }     [page]   二十一.颜色传感器 TCS3200 Arduino 接口         感知真彩色带来了很多可能性和应用,当我寻找完美的颜色传感器来检测不同范围的颜色时,我发现了德州先进光电解决方案 (TAOS) 的TCS3200 可编程彩色光到频率转换器。   TCS3200 和 TCS3210 可编程彩色光频率转换器在单个单片 CMOS 集成电路上结合了可配置的硅光电二极管和电流频率转换器。输出是方波(50% 占空比),其频率与光强度(辐照度)成正比。满量程输出频率可以通过两个控制输入引脚按三个预设值之一进行缩放。数字输入和数字输出允许直接连接到微控制器或其他逻辑电路。输出使能 (OE) 将输出置于高阻抗状态,以实现微控制器输入线的多单元共享。   在 TCS3200 中,光频转换器读取 8 x 8 光电二极管阵列。16 个光电二极管具有 蓝色滤光片,16 个光电二极管具有绿色滤光片,16 个光电二极管具有红色滤光片,16 个光电二极管是透明 的,没有滤光片。在 TCS3210 中,光频转换器读取 4 x 6 光电二极管阵列。6个光电二极管有蓝色滤光片,6个光电二极管有绿色滤光片,6个光电二极管有红色滤光片,6个光电二极管是透明的,没有滤光片。       四种类型(颜色)的光电二极管相互交叉,以最大限度地减少入射辐照度不均匀性的影响。所有相同颜色的光电二极管并联连接。引脚 S2 和 S3 用于选择激活的光电二极管组(红色、绿色、蓝色、透明)。光电二极管尺寸为 110 μm x 110 μm,中心为 134 μm(来自数据表)。   TCS3200 传感器引脚分配   tcs3200-pinout   引脚 S0 和 S1 是输出频率缩放选择输入,引脚 3 是输出使能引脚,它也是一个低电平有效引脚,通常与接地电源相连,它为 fo 启用。该传感器的电源要求为 2.5V 至 5.5V,通过引脚 4 (gnd) 和引脚 5 (Vdd) 施加。来自引脚 6、S2 和 S3 的输出频率 (fo) 负责光电二极管类型选择输入。   tcs3200-输出表   TCS 3200 彩色传感器模块电路图   颜色传感器-tcs3200-模块原理图   该传感器包含光电二极管阵列,因此需要光源来检测颜色,因此传感器周围连接了四个白色 LED。电路图代表典型的 tcs3200 模块,可以根据需要进行修改。   传感器-tcs3200-响应   该响应曲线在横轴表示颜色波长,在纵轴表示相对响应度。   框图-tcs3200   输出频率缩放由两个逻辑输入 S0 和 S1 控制。内部光频率转换器产生一个固定脉冲宽度的脉冲序列。通过在内部将转换器的脉冲串输出连接到一系列分频器来实现缩放。   分开的输出是占空比为 50% 的方波,相对频率值为 100%、20% 和 2%。因为输出频率的除法是通过计算主内部频率的脉冲来完成的,所以最终的输出周期代表了主频率的多个周期的平均值。       在 S0、S1、S2、S3 和 OE 线的任何转换之后,在主频率的下一个脉冲时,输出缩放计数器寄存器被清除。在主频率的下一个后续脉冲上,输出变高,开始一个新的有效周期。这最大限度地减少了输入线路上的变化和产生的新输出周期之间的时间延迟。对输入编程变化或辐照度阶跃变化的响应时间是一个新频率周期加上 1 μs。缩放输出通过选定的比例因子改变满量程频率和暗频率。       频率缩放功能允许针对各种测量技术优化输出范围。缩小输出可用于只有较慢频率计数器可用的地方,例如低成本微控制器,或使用周期测量技术(来自数据表)的地方。   颜色传感器 TCS3200 Arduino 连接   这个TCS3200传感器模块可以很容易地与Arduino开发板连接,将传感器的OUT引脚连接到Arduino数字引脚D8,将S2、S3连接到引脚D7、D6,将S1、S0连接到引脚D5、D4,最后将偏置连接到传感器 Vcc 到 5V 和 Gnd 到 Gnd 引脚,然后上传颜色传感器 TCS3200 的以下 Arduino 代码。   Arduino代码     #define  S0  4 #define  S1  5 #define  S2  6 #define  S3  7 #define  sensorOut  8 int  frequency  =  0 ; 无效 设置() {   pinMode (S0 , 输出);   pinMode (S1 , 输出);   pinMode (S2 , 输出);   pinMode ( S3 ,  OUTPUT ) pinMode;   (传感器输出, 输入);       数字写入(S0 ,高);   数字写入(S1 ,低);     串行. 开始(9600 ); } 无效 循环( )  {     数字写入(S2 ,低);   数字写入(S3 ,低);     频率 = 脉冲输入(传感器输出, 低);     串行. 打印(“R=” );   串行. 打印(频率);   串行. 打印(“” );   延迟(100 );     数字写入(S2 ,高);   数字写入(S3 ,高);     频率 = 脉冲输入(传感器输出, 低);     串行. 打印(“G=” );   串行. 打印(频率);   串行. 打印(“” );   延迟(100 );     数字写入(S2 ,低);   数字写入(S3 ,高);     频率 = 脉冲输入(传感器输出, 低);     串行. 打印(“B=” );   串行. 打印(频率);   串行. println ( "" ) ;   延迟(100 ); }         [page]   二十二.Myoware 肌肉传感器与 Arduino 接口   Myoware 肌肉传感器与 Arduino 接口   我们将获得有关肌电图和与 Arduino 连接肌肉传感器的信息,肌电图技术用于医疗应用、可穿戴电子设备、机器人和假肢等。(应用继续)。我们可以在许多应用程序中包含这种肌电图。       什么是肌电图? 通过电势测量肌肉激活,称为肌电图 (EMG),传统上用于神经肌肉疾病的医学研究和诊断。然而,随着不断缩小但功能更强大的微控制器和集成电路的出现,EMG 电路和传感器已进入假肢、机器人和其他控制系统。               Myoware 肌肉传感器 (AT-04-001)   传感器         这里读取肌肉激活信号的传感器,来自 Advancer 技术。它适用于为基于微控制器的应用生成原始 EMG 信号和模拟输出信号,该传感器专为低功耗的可靠 EMG 输出而设计。   它采用具有极性反转保护的单电源(+2.9V 至 +5.7V)工作,该传感器的另一个特点是我们可以调整灵敏度增益。   该传感器适用于可穿戴设计,而且体积小巧,因此我们可以轻松测量肌肉激活信号,这里给出了二头肌测量的示例图(我们可以在前臂等处使用它)   应遵循的步骤   用肥皂彻底清洁目标区域以去除污垢和油污。 将电极卡入传感器的卡扣连接器 (注意:虽然您可以在将传感器放置在肌肉上后将其卡入电极,但我们不建议这样做,因为可能会施加过大的力并擦伤皮肤。) 将传感器放在所需的肌肉上 a.确定您要针对哪个肌肉群(例如二头肌、前臂、小腿)后,彻底清洁皮肤。 b. 放置传感器,使连接的电极之一位于肌肉体的中间。另一个电极应沿肌肉长度方向排列。 c.剥去电极背面,露出粘合剂并将它们涂在皮肤上。 d. 将参考电极放置在目标肌肉附近的骨骼或不相邻的肌肉部位。 连接到开发板(例如 Arduino、RaspberryPi)、微控制器或 ADC。   该传感器与其他产生模拟输出电压的传感器一样简单,连接电池为传感器和 Arduino 板之间的隔离放大器 (ISO124) 提供单独的电源。这里隔离放大器和电池在用户和电网之间提供隔离。(受到推崇的)   Arduino Myoware 传感器连接 arduino 肌肉传感器连接   传感器和隔离放大器没有单独的电池电源 arduino 肌肉传感器无隔离 Arduino代码   /*   AnalogReadSerial  读取引脚 0 上的模拟输入,将结果打印到串行监视器。  将电位器的中心引脚连接到引脚 A0,将外部引脚连接到 +5V 和接地。此示例代码位于公共领域。*/   // 设置例程在您按下重置时运行一次: void  setup ( )  {   // 以每秒 9600 位初始化串行通信:   Serial . 开始(9600 ); }   // 循环例程永远一遍又一遍地运行: void  loop ( )  {   // 读取模拟引脚 0 上的输入:   int  sensorValue  =  analogRead ( A0 ) ;   // 打印出你读到的值:   Serial . println (传感器值) ;   延迟(1 );        // 读取之间的延迟以确保稳定性 }   [page]     二十三.Arduino的自动风扇速度控制电路   风扇速度可以通过改变输入电源来改变,如果需要改变风扇速度取决于温度变化意味着我们可以使用 Arduino 和温度传感器 LM 35 实现以下应用说明。   电路原理图   arduino的自动风扇速度控制器电路   建设和工作     该电路以Arduino uno板为主体,LM35为温度传感器。sensor的输出直接接Arduino板的模拟输入A0管脚,LED1接数字管脚D8,输出取自arduino的D11管脚,这里可以选择任意带PWM功能的数字管脚作为输出引脚,记得在 arduino 程序代码中进行这些更改,这里给出的代码基于 D11 引脚作为输出。    每当温度传感器检测到 Arduino 外部的温度变化时,D11 引脚上的 PWM 输出就会发生变化,因此风扇速度会发生变化,这里 SL100 晶体管充当开关晶体管。 Arduino代码   #include  <液态水晶。h > 液晶 液晶( 7 , 6 , 5 , 4 , 3 , 2 ) ; int  tempPin  =  A0 ;    // 连接传感器输出引脚 int  fan  =  11 ;        // 风扇输出驱动 int  led  =  8 ;         // 风扇状态 LED 引脚 int  temp ; int  tempMin  =  25 ;    // 启动风扇的最低温度 int  tempMax  =  75 ;    // 以 100% 速度转动风扇的最高温度 int  fanSpeed ; int  fanLCD ;   无效 设置() {   pinMode (风扇, 输出);   pinMode (LED , 输出);   pinMode ( tempPin , 输入) ;   液晶显示器。开始( 16 , 2 ) ;   }   无效 循环() {      temp  =  readTemp ();      // 读取温度    if ( temp  <  tempMin )  {    // 如果温度低于最低温度        fanSpeed  =  0 ;       // 风扇关闭        digitalWrite ( fan ,  LOW ) ;           }     if ( ( temp  > =  tempMin )  &&  ( temp  < =  tempMax ) )  {  // 如果温度高于最低温度        fanSpeed  =  map ( temp ,  tempMin ,  tempMax ,  32 ,  255 ) ;         fanLCD  = 地图( temp ,  tempMin ,  tempMax ,  0 ,  100 ) ;   // 显示在 LCD 上的风扇速度        analogWrite ( fan ,  fanSpeed ) ;   // 以 fanSpeed 速度旋转风扇    }       if ( temp  >  tempMax )  {         // 如果温度高于 tempMax      digitalWrite ( led ,  HIGH ) ;   // 打开LED    }  else  {                     // 否则关闭      LED digitalWrite ( led ,  LOW ) ;     }       液晶显示器。打印(“温度:” );    液晶显示器。打印(温度);      // 显示温度    液晶屏。打印(“C” );    液晶显示器。setCursor ( 0 , 1 ) ;       液晶显示器。打印(“粉丝:” );    液晶显示器。打印(风扇液晶);    // 显示风扇转速    lcd . 打印(“%” );    延迟(200 );    液晶显示器。清除( ) ;    }   int  readTemp ( )  {   // 获取温度并将其转换为摄氏度   temp  =  analogRead ( tempPin ) ;   返回 温度 *  0.48828125 ; }     [page]   二十四.室内空气质量传感器 Renesas   室内空气质量传感器 Renesas ZMOD4410   现在,零售消费者非常关心他们家中的空气质量。一些空调旨在通过安装空气质量传感器来满足他们的期望。一些空气质量传感器完全专用于室内使用,瑞萨电子提供了独特的产品,称为室内空气质量传感器 Renesas ZMOD4410。 ZMOD4410 气体传感器模块设计用于在不同的基于气味的用例中检测总挥发性有机化合物 (TVOC)、估算 CO2 和监测室内空气质量 (IAQ)。   ZMOD4410  .     ZMOD4410 引脚详情   ZMOD4410 采用 12-LGA 模块封装 (3.0 × 3.0 × 0.7 mm),占用空间非常小。提供的固件支持基于传统和机器学习算法以及嵌入式人工智能 (AI) 的不同 ZMOD4410 功能。   ZMOD4410 架构   它具有带系统控制电路的加热器和传感器元件。它具有内置的 ADC、内存和 I2C 驱动程序。该传感器检测以下气体参数。电阻测量范围-空气中的乙醇,单位为百万分之几,IAQ 指定的测量范围-空气中的乙醇,用于 IAQ 第一代和第二代,单位为十亿分之几。湿度范围 - 非冷凝,以 %RH 为单位。有关详细信息,请参阅 Renesas ZMOD4410 数据表。   瑞萨 ZMOD4410 特性和应用 基于人工智能机器学习算法的传感器输出。 I2C 接口:最高 400kHz。 用于模块特定数据的内置非易失性存储器 (NVM)。 电源电压:1.7V 至 3.6V,耐硅氧烷。 封装:12-LGA,组装尺寸:3.0 × 3.0 × 0.7 mm。 最适合室内空气监测。 监控家庭、办公室、个人和浴室环境的健康状况和舒适度。 检测有害物质和不健康状况(例如,建筑材料产生的烟雾)。 基于室内环境空气质量的自动化(HVAC、空气净化器、恒温器、厨房油烟机等)。 有关更多特定于应用的设计详细信息,请参阅 Renesas ZMOD4410 数据表。     [page]   二十五.基于stm32的物联网智能家居   设计可以检测环境中温湿度,气压,一氧化碳,空气质量,烟雾浓度和关光照强度,并把测量的值显示在屏幕上,数据上报云平台可以通过手机APP时时查看。通过光照强度传感器检测光照强度,当光照强度小于阈值,表明此时天黑了,自动点亮LED灯照明并且驱动步进电机顺时针旋转180度表示拉上窗帘。如果光照强度高,表示是白天,熄灭LED灯,并驱动步进电机逆时针旋转180度,表示拉开窗帘。可以通过过按键调节系统阈值,系统阈值掉电保存,无需重新       [page]   二十六.STM32无线传输的血氧仪   STM32无线传输的血氧仪   基于STM32芯片设计的一款智能血氧仪,具有血氧检测,脉率,液晶显示,无线传输的功能,同时设计了手机客户端,可实时显示检测数据,能实现血氧浓度过低(90%)以及脉率过低(60次/分)报警。         [page]   二十七.ESP8266的智能氛围灯设计.   基于ESP8266的智能氛围灯设计,项目为基于ESP8266平台,结合阿里云、blinker连接方式,远程控制氛围灯的物联网项目;   功能:   1.设备端采集温湿度数据(DHT11),通过云端(阿里云),显示数据到手机App上; 2.通过手机App按键,远程切换氛围灯6种模式(日光模式、月光模式、电视模式、阅读模式、彩光模式、温馨模式); 3.通过手机App滑动条,远程控制氛围灯频率快慢; 4.通过手机App颜色拾取盘,远程调整氛围灯颜色和亮度; 5.小爱同学语音功能: 例如,先唤起手机小爱同学,并说: "小爱同学,氛围灯开启日光模式"    --此时氛围灯开启日光模式 "小爱同学,氛围灯调整为红色"        --此时氛围灯调整为红色 "小爱同学,氛围灯亮度调整为50"    --此时氛围灯亮度可调节 更多功能可自己继续挖掘、DIY   项目内容丰富,创新性强,提供代码、电路原理图PCB设计、项目所需软件及支持率、Arduino学习资料等。 并且有项目详细教程文档,即使是0基础小白也能做!可作为实际项目使用,也可作为电子学习项目进行DIY设计。   硬件实物可私定制           [page]   二十八.基于51单片机的无线病房温度检测与呼叫系统   本设计是基于STC89C52单片机的无线式病房呼叫系统。为了便于操作仅开设了一个病房,每个病房四个床位,每个病床有一个呼叫开关按键,当病人有需要的时候,按下按键,此时监护室就会得到响应信号,在LCD1602显示相应的床位号,并且蜂鸣器鸣叫,同时可以实时显示病房的温度信息。 系统分为主机端和从机端,采用无线模块NRF24L01进行通信,DS18B20进行数据采集,显示在LCD1602上。     [page]            

  • 发表了主题帖: 物联网项目 集锦 1: 看看你想动手做哪个?

    [index] [#2] 一.ESP8266 DHT11 湿度温度数据记录器 [#3]二.具有电流、电压和成本监控系统的物联网电能表 [#4]三. 带有物联网通知的智能垃圾箱 [#5]四.物联网资产追踪系统 [#6]五.使用树莓派的物联网家庭自动化 [#7]六.物联网垃圾监控系统 [#8]七.基于物联网的消防部门警报系统 [#9]八.物联网洪水监测和警报系统 [#10]九.物联网断路器项目 [#11]十.基于物联网的昏迷患者监测系统 [#12]十一.使用 Atmega 的蜂鸣器系统进行气体泄漏检测 [#13]十二.基于物联网的收费站管理系统 [#14]十三.基于物联网的人员/轮椅跌倒检测 [#15]十四.基于物联网的家庭自动化项目 [/index] [page]   一、ESP8266 DHT11 湿度温度数据记录器   在本项目中,我们将DHT11 或 DHT22 湿度温度传感器与 ESP8266 NodeMCU 连接。我们正在使用 DHT11 和 NodeMCU 制作完整的湿度和温度数据记录器。具有实时图形和表格的数据记录器 Web 服务器,主要在thingspeak 上看到。但是这次我们将完整的图表和表格都放在 NodeMCU 中,而不使用 thingspeak。为此,我们需要使用来自chartsjs.org 的图形库,这是一个开源图表绘图库以及alax、html 和javascript 的知识。   ESP8266 DHT11 湿度温度数据记录器   DHT11(或 DHT22 等)是廉价的温度和湿度传感器。与 ESP8266 的通信是通过单线进行的,但不幸的是它与 Dallas Semiconductors 定义的 1-Wire 协议不兼容。   与 NodeMCU 的电气连接非常简单,因为 DHT 系列可以直接使用 3.3V 供电。只需要 3 根线:VCC、GND 和数据线。 我们需要的东西 NodeMCU ESP8266 USB电缆 笔记本电脑 互联网和 wifi 路由器 DHT11 湿度温度传感器   DHT11 传感器规格   DHT11 温度和湿度传感器具有温度和湿度传感器复合体,具有校准的数字信号输出。采用独有的数字信号采集技术和温湿度传感技术,确保高可靠性和出色的长期稳定性。该传感器包括一个电阻式湿度测量元件和一个NTC温度测量元件,并连接到一个高性能8位微控制器,具有卓越的品质、快速的响应、抗干扰能力和成本效益。   如果您使用的是模块,它带有一个 4.7K 或 10K 电阻。您需要将数据引脚上的外部 10K 或 4.7K 上拉到 VCC。     DHT11 规格:   转到菜单草图>>包含库>>管理库 通过 beegee 库为 ESPx安装DHT 传感器库。或安装库后下载       通过 beegee 库为 ESPx安装DHT 传感器库。或安装库后下载   在直接上传之前,根据您的 WiFi 更改 WiFi SSID 和密码。大部分内容都在代码注释中进行了解释。还制作index.h头文件并将其保存在您的 ino 文件附近。   在此示例中,我们在 ESP8266 中创建 Web 服务器以进行数据记录。它有两部分,一是显示 HTML Web GUI,二是接受 AJAX 请求并读取 ADC 数据。   数据记录器.ino   /* * ESP8266 NodeMCU DHT11 - 湿度温度数据记录示例 * https://circuits4you.com * * 参考资料 * https://circuits4you.com/2017/12/31/nodemcu-pinout/ * */ #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include "index.h" //我们的HTML网页内容用javascripts #include "DHTesp.h" //ESP 的 DHT11 库 #define LED 2 //板载LED #define DHTpin 14 //NodeMCU的D5是GPIO14 DHTESP dht; //您的WiFi路由器的SSID和密码 const char* ssid = "你的 ssid"; const char* 密码 = "你的密码"; ESP8266WebServer 服务器(80);//服务器在80端口 //================================================= ================ // 当你在浏览器中打开它的 IP 时执行这个例程 //================================================= ================ 无效句柄根(){ 字符串 s = MAIN_page; //读取HTML内容 server.send(200, "text/html", s); //发送网页 } 浮子湿度、温度; 无效句柄ADC(){ int a = 模拟读取(A0); //参考1:https://circuits4you.com/2019/01/11/nodemcu-esp8266-arduino-json-parsing-example/ //参考 2:https://circuits4you.com/2019/01/25/arduino-how-to-put-quotation-marks-in-a-string/ 字符串数据 = "{\"ADC\":\""+String(a)+"\", \"温度\":\""+ 字符串(温度) +"\", \"湿度\":\ ""+ 字符串(湿度) +"\"}"; 数字写入(LED,!数字读取(LED));//在数据请求ajax上切换LED server.send(200, "文本/平面", 数据); //向客户端ajax请求发送ADC值、温湿度JSON //请求完成后获取湿度温度数据 //给予足够的时间来处理客户端以避免出现问题 延迟(dht.getMinimumSamplingPeriod()); 湿度 = dht.getHumidity(); 温度 = dht.getTemperature(); Serial.print(湿度,1); Serial.print(温度,1); Serial.print(dht.toFahrenheit(温度), 1); } //================================================= =============== // 设置 //================================================= =============== 无效设置() { 序列号.开始(115200); 序列号.println(); //参考 3:https://circuits4you.com/2019/01/25/interfacing-dht11-with-nodemcu-example/ //自动检测不可靠,不要使用以下行 // dht.setup(17); // 改用这个: dht.setup(DHTpin, DHTesp::DHT11); //对于 DHT11 将 DHT 传感器连接到 GPIO 17 //dht.setup(DHTpin, DHTesp::DHT22); //对于 DHT22 将 DHT 传感器连接到 GPIO 17 WiFi.begin(ssid, 密码); //连接到你的WiFi路由器 序列号.println(""); //板载LED端口方向输出 pinMode(LED,输出); // 等待连接 而(WiFi.status()!= WL_CONNECTED){ 延迟(500); Serial.print("."); } //如果连接成功在串口监视器中显示IP地址 序列号.println(""); Serial.print("连接到"); 序列号.println(ssid); Serial.print("IP地址:"); Serial.println(WiFi.localIP()); //分配给你的ESP的IP地址 server.on("/", handleRoot); //在根位置处理哪个例程。这是显示页面 server.on("/readADC", handleADC); //这个页面被java Script AJAX调用 server.begin(); //启动服务器 Serial.println("HTTP 服务器启动"); } //================================================= =============== // 环形 //================================================= =============== 无效循环() { server.handleClient(); //处理客户端请求 } index.h 数据记录器的 HTML 代码文件 const char MAIN_page[] PROGMEM = R"=====( <!doctype html> <html> <头部> <title>折线图 | Circuits4you.com</title> <!--对于离线 ESP 图,请参阅本教程 https://circuits4you.com/2018/03/10/esp8266-jquery-and-ajax-web-server/ --> <script src = "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script> <风格> 帆布{ -moz 用户选择:无; -webkit 用户选择:无; -ms 用户选择:无; } /* 数据表样式 */ #数据表{ 字体系列:“Trebuchet MS”,Arial,Helvetica,无衬线; 边框折叠:折叠; 宽度:100%; } #dataTable td,#dataTable th { 边框:1px 实心#ddd; 填充:8px; } #dataTable tr:nth-child(even){背景颜色:#f2f2f2;} #dataTable tr:hover {背景颜色:#ddd;} #dataTable th { 上边距:12px; 底部填充:12px; 文本对齐:左; 背景颜色:#4CAF50; 白颜色; } </style> </head> <正文> <div style="text-align:center;"><b>Circuits4you.com</b><br>在 ESP8266 上使用图表实时记录湿度、温度数据</div> <div class="chart-container" 位置:相对;高度:350 像素;宽度:100%"> <canvas id="Chart" width="400" height="400"></canvas> </div> <div> <table id="dataTable"> <tr><th>时间</th><th>ADC值</th><th>温度(°C)</th><th>湿度(%)</th></tr> </table> </div> <br> <br> <脚本> //图表访问:https://www.chartjs.org var ADC值 = []; var Tvalues = []; 变量 Hvalues = []; var timeStamp = []; 函数显示图() { var ctx = document.getElementById("Chart").getContext('2d'); var Chart2 = new Chart(ctx, { 类型:'线', 数据: { labels: timeStamp, //底部标签 数据集:[{ 标签:“电压1”, 填充:假,//尝试为真 backgroundColor: 'rgba( 243,18, 156 , 1)', //点标记颜色 borderColor: 'rgba( 243, 18, 156 , 1)', //图形线条颜色 数据:ADC值, },{ 标签:“温度”, 填充:假,//尝试为真 backgroundColor: 'rgba( 243, 156, 18 , 1)', //点标记颜色 borderColor: 'rgba( 243, 156, 18 , 1)', //图形线条颜色 数据:T值, }, { 标签:“湿度”, 填充:假,//尝试为真 backgroundColor: 'rgba(156, 18, 243 , 1)', //点标记颜色 borderColor: 'rgba(156, 18, 243 , 1)', //图形线条颜色 数据:H值, }], }, 选项: { 标题: { 显示:真, 文本:“ADC 电压” }, 保持纵横比:假, 元素:{ 线: { 张力:0.5 //数据线的平滑(弯曲) } }, 秤:{ y轴:[{ 滴答声:{ 开始零:真 } }] } } }); } //页面加载显示图表 window.onload = 函数(){ console.log(new Date().toLocaleTimeString()); }; //每5秒获取ADC电压的Ajax脚本 //阅读本教程 https://circuits4you.com/2018/02/04/esp8266-ajax-update-part-of-web-page-without-refreshing/ 设置间隔(函数(){ // 以 5 秒的间隔重复调用一个函数 获取数据(); }, 5000); //5000mSeconds 更新率 函数获取数据(){ var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { 如果(this.readyState == 4 && this.status == 200){ //将数据压入数组 var time = new Date().toLocaleTimeString(); var txt = this.responseText; var obj = JSON.parse(txt); //参考:https://www.w3schools.com/js/js_json_parse.asp ADCvalues.push(obj.ADC); Tvalues.push(obj.Temperature); Hvalues.push(obj.Humidity); timeStamp.push(时间); 显示图();//更新图表 //更新数据表 var table = document.getElementById("dataTable"); var row = table.insertRow(1); //在标题后面添加 var cell1 = row.insertCell(0); var cell2 = row.insertCell(1); var cell3 = row.insertCell(2); var cell4 = row.insertCell(3); cell1.innerHTML = 时间; cell2.innerHTML = obj.ADC; cell3.innerHTML = obj.Temperature; cell4.innerHTML = obj.湿度; } }; xhttp.open("GET", "readADC", true); //处理ESP8266上的readADC服务器 xhttp.send(); } </脚本> </正文> </html> )=====";   结果   在 NodeMCU 中上传程序后,以 115200 波特率打开串行监视器并获取 NodeMCU 的 IP 地址。在网络浏览器中打开它。         [page]   二.     具有电流、电压和成本监控系统的物联网电能表   在观察和监控您的用电量以进行验证并不是一件容易的事,因为定期检查电表室是一项非常繁琐的任务,知道您是否同样收费非常重要,因此需要非常确定。好吧,我们已经制作了一个系统,允许用户通过物联网监控电能表读数。我们提出的系统利用带有微控制器系统的能量表来监测利用仪表的能量利用率。该仪表用于监控消耗的单位、估计的成本、线路电压和消耗的电流。名为 IoT Gecko 的简单 Web 应用程序通过 IOT 显示这些读数的实时输出这使用户能够轻松地从站点的任何地方实时检查消耗的单位、估计的成本、线路电压和消耗的电流。           [page]   三.    带有物联网通知的智能垃圾箱   随着人口的增加,我们城市周围的垃圾也增加了。在这里,我们提出了一种自动运行的智能垃圾箱,以使用基于物联网和传感器的电路来帮助解决这个问题。   通常的垃圾箱需要通过将脚压在其杠杆上然后扔垃圾来打开。此外,一个人需要跟踪它何时已满,以便它可以被清空并且不会溢出。在这里,我们提出了一个智能垃圾箱,它可以自行完成所有这些工作。   我们的系统由一个传感器组成,用于检测人类拍手信号,并在拍手时自动打开,无需任何人按下其控制杆。垃圾箱收到信号后会自动打开并关闭其舱口。此外,垃圾箱还包含一个液位感应超声波传感器,该传感器不断测量垃圾箱中的垃圾水平,并自动检测它是否即将装满。垃圾箱现在由一个智能电路组成,该电路通过网络传输此信息,以向设施的主要垃圾收集器发出信号以清空特定的垃圾箱。我们使用 IOTgecko 开发物联网系统的在线 Web 部件。这种垃圾箱在办公室、家庭甚至公共场所的垃圾管理中都有广泛的用途。   因此,我们得到了一个全自动的智能垃圾箱,可以自动清理垃圾。我们使用 IOTgecko 开发物联网系统的在线 Web 部件。这种垃圾箱在办公室、家庭甚至公共场所的垃圾管理中都有广泛的用途。因此,我们得到了一个全自动的智能垃圾箱,可以自动清理垃圾。我们使用 IOTgecko 开发物联网系统的在线 Web 部件。这种垃圾箱在办公室、家庭甚至公共场所的垃圾管理中都有广泛的用途。因此,我们得到了一个全自动的智能垃圾箱,可以自动清理垃圾。     [page]   四.物联网资产追踪系统   GPS系统是当今最广为人知的位置跟踪系统。好吧,这些系统无法精确定位建筑物内或特定楼层或房间内实体的确切位置或位置。 因此,我们在这里提出了一种智能资产跟踪系统,该系统允许跟踪建筑物或任何设施内的物体、货物、人员的位置。我们提出的系统利用射频技术和物联网来实现这个系统。该系统能够将任何实体的位置精确定位到它当前所在的确切房间。该系统使用微型射频电路作为跟踪设备。我们使用基于跟踪微控制器的电路来跟踪那些射频电路。跟踪器电路是安装在物体/实体上的电池供电电路。 监控电路将放置在单独的房间中。现在,只要任何跟踪器对象进入任何房间,跟踪器电路就会进入该房间的监控电路的 2-3 米范围内。监控系统现在将该跟踪器电路的位置传输到在线系统。我们这里使用 IOTGecko 来处理 IOT 跟踪部分。 传输的数据现在由 IOTGecko 显示,以查明特定对象/实体所在的房间。   [page]   五.使用树莓派的物联网家庭自动化   物联网是一种未来的技术,已经开始触及我们的家庭。在这里,我们提出了一个使用树莓派的基于物联网的家庭自动化系统,它可以自动化家用电器,并允许用户从世界任何地方通过互联网轻松控制它们。我们提出的系统由一个基于微控制器的电路组成,该电路具有连接到它的灯和风扇,以及与树莓派接口的 LCD 显示器和 Wifi 连接器。我们的系统与在线 IOT 系统交互,该系统是 IOT Gecko 免费网络界面,用于轻松控制我们的家用电器。与 IOT Gecko 链接后,用户可以通过 IOT 向我们的电路发送负载切换命令。该电路通过使用 wifi 连接器连接到互联网来接收 IOT 上的命令,然后树莓处理器处理这些命令。在此之后,处理器现在处理这些指令以获取用户命令。然后它将这些显示在 LCD 显示器上。它还根据所需的用户命令操作负载(灯和风扇)以打开/关闭它们。因此,我们使用树莓派通过互联网自动化家用电器       [page] 六.物联网垃圾监控系统      该项目物联网垃圾监测系统是一个非常创新的系统,将有助于保持城市清洁。该系统监控垃圾箱并通过网页通知垃圾箱中收集的垃圾水平。为此,该系统使用放置在垃圾箱上方的超声波传感器来检测垃圾水平并将其与垃圾箱深度进行比较。该系统使用 AVR 系列微控制器、LCD 屏幕、用于发送数据的 Wifi 调制解调器和蜂鸣器。该系统由 12V 变压器供电。液晶显示屏用于显示垃圾箱收集的垃圾水平状态。而建立一个网页是为了向监视它的用户显示状态。该网页提供了垃圾箱的图形视图,并以颜色突出显示收集的垃圾,以显示收集的垃圾级别。LCD 屏幕显示垃圾级别的状态。当垃圾收集的水平超过设定的限制时,系统会发出蜂鸣器。因此,该系统通过 IOT Gecko Web 开发平台提供垃圾箱的图形图像,告知垃圾箱的垃圾水平,从而帮助保持城市清洁。         [page] 七.基于物联网的消防部门警报系统      火灾是导致意外死亡的最普遍原因之一。必须立即向消防部门发出警报,以确保立即采取行动。在这种情况下,每一分钟都可以挽救许多生命。因此,我们在这里提出了一种基于物联网的自动消防部门警报系统,该系统可以立即自动向消防部门发出警报并告知情况,以便立即采取行动。该系统使用火灾传感器和 PIR 传感器来有效地检测火灾并通过物联网向消防部门发出警报。我们使用 arduino uno 来检查传感器是否被触发。然后它使用温度传感器再次确认它是否真的是火灾爆发,以确认火灾爆发。该系统现在使用 wifi 连接访问 IOT 服务器并通过互联网传输有关此事件的数据。我们在这里使用 IOTGecko 平台来开发基于 Web 的 IOT 接口。一旦 IOTGecko 系统接收到传感器数据,它就会检查设备 ID 数据是从哪里发送的,并显示设备 ID(将以区域/平面 ID 命名)。该系统现在通过互联网在消防部门的警报蜂鸣器中显示火灾事件,以便消防部门人员收到事件警报以采取必要的行动。       [page] 八.物联网洪水监测和警报系统       洪水通常是由水系统中的水量增加引起的,例如湖泊、河流溢出。有时大坝破裂,突然释放出大量的水。结果是一些水进入土壤,并“淹没”该地区。河流都涉及河岸,在一个车站。除了缺乏产品和房屋和办公财产外,街道基础设施洪水还包括细菌和废物场的污水流以及化学溢出物,从而导致各种疾病。洪水预测需要以下信息: 实时河流水位变化速度,这可能有助于表明这种威胁的严重性和紧迫性。了解产生水分的风暴的形式,例如长度、强度和面积范围,这对于发现洪水的潜在严重性很有价值。在这个系统中,我们使用带有水传感器、雨水传感器的树莓派来预测洪水并提醒相关当局,并在附近的村庄发出即时警报,以使用物联网即时传输有关可能发生的洪水的信息。水位传感器用于测量 3 个不同位置的水位。还使用 3 个不同的雨量传感器来测量这 3 个区域的雨量。这些传感器使用 Raspberry Pi 通过 IOT 提供信息。在检测到洪水情况时,系统会预测特定区域发生洪水所需的时间,并向可能受其影响的村庄/区域发出警报。该系统还计算洪水到达他们所需的时间,并为人们提供时间,以便他们可以相应地撤离。           [page] 九.物联网断路器项目      该项目提供了一个使用 IOT 的基于密码的断路器系统。由于电击,线路人员发生了相当多的致命事故。这是线路人员和变电站之间协调不善或沟通不畅的结果。该项目旨在通过利用物联网来解决这个问题。基于物联网的断路器是一个具有高响应时间的系统,它使用互连网络(互联网)来控制电气负载。该系统使用与本地 Atmega328p 微控制器配对的 wifi 模块连接到互联网。它还配备了一个 LCD 显示屏,可显示连接到系统的每个负载的状态,无论是开还是关。另一端的用户或操作员可以使用互联网设备和名为“IoT Gecko”的接口远程连接系统。这里,用户或操作员必须通过额外的安全层(即密码保护)登录 IoT Gecko 界面。通过 IoT Gecko 界面,用户几乎可以从全球任何地方远程控制连接负载的状态(开/关)。与其他可远程操作的断路器相比,该系统具有优势,因为它使用更快的介质(即互联网)来连接操作员和负载。额外的速度是通过使用晶体管的快速电路断开解决方案来增加的,而不是继电器,因为它们机械地断开电路而相对较慢。当涉及工业安全时,该系统是必不可少的,因为使用这种断路器系统可以消除任何常见事故的机会,例如电击。         [page] 十. 基于物联网的昏迷患者监测系统      正如我们所知,昏迷是一种无意识状态,患者无法感觉到或对疼痛、光或声音做出反应,它不会主动采取任何行动。处于昏迷状态的患者需要不断更新血压、体温、湿度和尿液水平。手动执行此操作几乎不可能同时保持多个患者的更新。为了解决这种情况,我们的系统来救援;该系统将借助传感器收集患者的信息。这些传感器使用 WIFI 将这些信息传送到互联网。该系统由 Raspberry Pi 供电,它包括一个血压监测单元和一个用于检查尿液的超声波传感器、温度传感器、运动传感器和一个 LCD 显示器。当我们打开系统时,它会使用 WIFI 连接到网站,系统监视器显示四个迹象,即心率、温度、湿度和尿量。在测试系统的心率功能时,通过物联网和液晶显示屏更新心率和血压值。正如我们所知,处于昏迷状态的患者无法自行排尿,因此将橡胶管插入膀胱以排出尿液。该系统测试尿液水平,并在患者排尿时更新 IOT 和 LCD 上的值。如果患者恢复意识并尝试移动,传感器将检测到运动并通过 IOT 和 LCD 对其进行更新。通过这种方式,我们的系统监控昏迷患者。心率和血压值通过 IOT 和 LCD 显示屏更新。正如我们所知,处于昏迷状态的患者无法自行排尿,因此将橡胶管插入膀胱以排出尿液。该系统测试尿液水平,并在患者排尿时更新 IOT 和 LCD 上的值。如果患者恢复意识并尝试移动,传感器将检测到运动并通过 IOT 和 LCD 对其进行更新。通过这种方式,我们的系统监控昏迷患者。心率和血压值通过 IOT 和 LCD 显示屏更新。正如我们所知,处于昏迷状态的患者无法自行排尿,因此将橡胶管插入膀胱以排出尿液。该系统测试尿液水平,并在患者排尿时更新 IOT 和 LCD 上的值。如果患者恢复意识并尝试移动,传感器将检测到运动并通过 IOT 和 LCD 对其进行更新。通过这种方式,我们的系统监控昏迷患者。传感器将检测运动并通过 IOT 和 LCD 对其进行更新。通过这种方式,我们的系统监控昏迷患者。传感器将检测运动并通过 IOT 和 LCD 对其进行更新。通过这种方式,我们的系统监控昏迷患者。         [page] 十一. 使用 Atmega 的蜂鸣器系统进行气体泄漏检测     家中的煤气泄漏通常是由于锅炉和炊具等设备安装不当、维护不善或故障造成的。除了数百人住院外,每年还有数起与燃气泄漏有关的死亡,燃气安全是每个家庭都应该认真对待的事情。为了减少这种事故,我们可以使用MQ5气体传感器检测气体泄漏。首先,当我们打开电路的电源时,项目会自动连接到WIFI和IOT站点,一旦建立了与Wi-Fi和IOT站点的连接,系统等待用户手动输入最小值和物联网站点上的最大值,一旦用户输入数据,系统就会接收到。成功接收数据后,项目上的 RGB LED 变为绿色。         [page]   十二. 基于物联网的收费站管理系统       管理多个收费站是一项非常复杂的任务。我们在这里提出了一种基于智能卡的收费亭系统,该系统通过物联网进行监控。Internet 服务器维护用户帐户的所有数据及其余额。所有车主都将拥有一张存储其帐号的基于 rfid 的卡。我们在收费站的系统将监控汽车到达收费站时扫描的卡片。系统现在连接到在线服务器以检查卡是否有效,如果有效,余额是多少。如果用户余额充足,则在线扣除用户余额,并且网络系统将信号发送回卡扫描仪系统,表明用户已被计费。在接收到这个信号后,系统会运行一个马达来打开那辆汽车的收费站。该系统由微控制器控制以实现此目的。微控制器使用 wifi 连接连接到互联网,系统通过该连接与网络服务器交互以执行在线验证过程。系统还允许存储在特定时间间隔通过的所有车辆的数据,以供以后参考和监视。因此,该系统使用基于 RFid 和 IOT 的系统轻松实现了整个收费站收集和监控过程的自动化。       [page] 十三. 基于物联网的人员/轮椅跌倒检测       谈到老年,有必要监测我们的老人的健康和安全。由于虚弱和关节虚弱,他们有很大的跌倒风险。现在重要的是要知道老人是否跌倒,以便及时得到帮助。坐轮椅的人也需要接受跌倒检测。为此,我们提出了一种智能跌倒检测系统。该系统使用加速度计和陀螺仪传感器来检测人的动作,它可以安装在人的手上或轮椅上进行检测。传感器连接到微控制器,以不断传输加速度数据。现在,该系统会持续监控跌倒检测和人员的突然运动变化。系统中突然发生的突然变化被视为跌倒。现在万一那个人没有摔倒,警报是假的,如果有人在 5 秒内按下贪睡按钮,系统允许贪睡警报。如果人没有按贪睡,系统检测到人已经跌倒并通过wifi连接自动触发警报,以立即提醒亲人有关情况。       [page] 十四.  基于物联网的家庭自动化项目 基于物联网的家庭自动化项目是使用低成本 ESP8266 ESPino ESP-12 WiFi 模块完成的,它使用继电器和一些简单的组件,提供了完整的代码,有关软件设置的更多详细信息,请参阅物联网入门教程。您可以控制四个电气设备,还可以监控温度。ESP-12 是我们在这里使用的低成本模块。     随着自动化技术的进步,生活在各个方面都变得越来越简单和轻松。在当今世界,自动系统比手动系统更受欢迎。随着过去十年互联网用户数量的快速增长,互联网已成为生活的一部分,而物联网是最新和新兴的互联网技术。物联网是一个不断增长的日常物品网络——从工业机器到消费品,可以在您忙于其他活动的同时共享信息和完成任务。使用物联网的无线家庭自动化系统(WHAS)是一种使用计算机或移动设备通过互联网从世界任何地方自动控制基本家庭功能和特性的系统,自动化家庭有时被称为智能家居。它的目的是节省电力和人力。 物联网家庭自动化电路图     从电路图可以很清楚地看出,我们使用的元件很少,LM1117-3.3V 用于为 ESP-12 WiFi 模块提供电源。ULN2003 提供继电器驱动。      基于物联网的家庭自动化代码   主程序 /*  * 版权所有 (c) 2015,circuits4you.com  * 版权所有。 /* 创建一个 WiFi 接入点并在其上提供一个 Web 服务器。*/ #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include "mainPage.h" 常量 int Load1=16; 常量 int Load2=14; 常量 int Load3=12; 常量 int Load4=13; /* 将这些设置为您想要的凭据。*/ const char *ssid = "家庭服务器"; const char *password = "家庭自动化"; ESP8266WebServer 服务器(80); 字符串 L1Status,L2Status,L3Status,L4Status,温度; //================================================= ======================== // 处理主页面 192.168.4.1 //================================================= ======================== /* 只是一点测试信息。在网络浏览器中访问 http://192.168.4.1  * 连接到此接入点以查看它。  */ 无效句柄根(){   字符串 s = MAIN_page;       s.replace("@@L1@@", L1Status);   s.replace("@@L2@@", L2Status);   s.replace("@@L3@@", L3Status);   s.replace("@@L4@@", L4Status);   s.replace("@@TEMP@@", 温度);   server.send(200, "text/html", s);     } //================================================= ======================== // 处理设置日期/时间设置 //================================================= ======================== 无效句柄形式(){   字符串 t_state = server.arg("提交");      温度 = 字符串(模拟读取(A0)/10);//这里做校准    //根据请求更改 Load-1 状态   如果(t_state=="ON1")   {     L1状态=“开”;         数字写入(加载1,高);//Load1开启   }      如果(t_state=="OFF1")   {     L1状态=“关闭”;         数字写入(加载1,低);//Load1 关闭     } //根据请求更改 Load-2 状态   如果(t_state=="ON2")   {     L2状态=“开”;         数字写入(负载2,高);//Load1开启   }      如果(t_state=="OFF2")   {     L2状态=“关闭”;         数字写入(加载2,低);//Load1 关闭     } //根据请求更改 Load-3 状态   如果(t_state=="ON3")   {     L3状态=“开”;         数字写入(加载 3,高);//Load1开启   }      如果(t_state=="OFF3")   {     L3状态=“关闭”;         数字写入(加载 3,低);//Load1 关闭     } //根据请求更改 Load-4 状态   如果(t_state=="ON4")   {     L4状态=“开”;         数字写入(加载4,高);//Load1开启   }      如果(t_state=="OFF4")   {     L4状态=“关闭”;         数字写入(加载 4,低);//Load1 关闭     }   server.sendHeader("位置", "/");   server.send(302, "text/plain", "Updated-- Press Back Button"); //这一行保持在同一页上       延迟(500); } //================================================= ======================== // 开机设置 //================================================= ======================== 无效设置(){   延迟(1000);   /* 如果要打开AP,可以去掉密码参数。*/   WiFi.softAP(ssid, 密码);   IPAddress myIP = WiFi.softAPIP();   server.on("/", handleRoot);   server.on("/form", handleForm);     server.begin();   pinMode(负载1,输出);   pinMode(负载2,输出);   pinMode(负载3,输出);   pinMode(负载4,输出);   } //================================================= ======================== // 主程序循环 //================================================= ======================== 无效循环(){   server.handleClient(); } //================================================= ======================== 主页.h const char MAIN_page[] PROGMEM = R"=====( <HTML> <标题> 远程 LED 开/关控制 </标题> <身体> <中心> <FORM method="post" action="/form"> <表格> <TR><TD colspan=2><B>基于物联网的家庭自动化系统</B></TD></TR> <TR><TD>温度:@@TEMP@@C</TD><TD>加载状态</TD></TR> <TR><TD> <输入类型=提交值=“ON1”名称=提交> <输入类型=提交值=“关闭1”名称=提交> </TD> <TD>@@L1@@</TD></TR> <TR><TD> <输入类型=提交值=“ON2”名称=提交> <输入类型=提交值=“关闭2”名称=提交> </TD> <TD>@@L2@@</TD></TR> <TR><TD> <输入类型=提交值=“ON3”名称=提交> <输入类型=提交值=“OFF3”名称=提交> </TD> <TD>@@L3@@</TD></TR> <TR><TD> <输入类型=提交值=“ON4”名称=提交> <输入类型=提交值=“关闭4”名称=提交> </TD> <TD>@@L4@@</TD></TR> <TR><TD colspan=2><B><CENTER><A href = "https://circuits4you.com">www.circuits4you.com</a></CENTER></B></TD> </TR> </表> </表格> </中心> </正文> </HTML> )=====";       [page] 十六. 使用 Arduino IDE 的 ESP8266 气象站     [page] 十七 . 土壤湿度传感器和 Arduino     [page] 十八 .汽车倒车雷达电路     [page] 十九. Arduino金属探测器     [page] 二十. 数字电容式触摸传感器 arduino 接口     [page] 二十一. 水流量传感器 YF-S201 Arduino 接口     [page] 二十二. 颜色传感器 TCS3200 Arduino 接口     [page] 二十三. Myoware 肌肉传感器与 Arduino 接口     [page] 二十四. Arduino的自动风扇速度控制电路     [page] 二十五.室内空气质量传感器 Renesas     [page] 二十六. 基于stm32的物联网智能家居     [page] 二十七. STM32无线传输的血氧仪     [page] 二十八. ESP8266的智能氛围灯设计     [page] 二十九. 基于51单片机的无线病房温度检测与呼叫系统     [page]

  • 2022-05-20
  • 回复了主题帖: MT7921方案WIFI6无线网卡驱动编译方法

    谢谢分享经验之谈

  • 2022-05-19
  • 回复了主题帖: [RTT&瑞萨高性能 CPK-RA6M4] 自动创建的项目中添加一个串口后出现找不到文件board.h

    顶一下,等待其网友上传

  • 2022-05-18
  • 回复了主题帖: 【平头哥RVB2601创意应用开发】我的吉他环境保护器——干湿度自动调节器

    这个干湿度自动调节器不错,谢谢分享

  • 2022-05-17
  • 回复了主题帖: AD7747 电容值读出来都是FF

    电容数字转换器AD7747测试代码 http://m.eeworld.com.cn/bbs_thread-565982-1-1.html 参考一下

  • 2022-05-16
  • 发表了主题帖: 英飞凌无线充电组电量显示之花式点灯

    英飞凌无线充电组电量显示灯板之花式点灯   模拟充电效果   无线充电组的朋友们你们好,众所周知,无线充电组要求制作LED灯板来实时显示超级电容组的电量,LED灯的驱动芯片必须采用英飞凌的LED驱动芯片,这个规则相信参赛同学们都非常清楚了。所以今年英飞凌在为大赛提供芯片支持时,不仅仅提供了单片机的免费申请和特价购买,还提供了LED驱动芯片的免费样片,免费LED驱动芯片申请包含了四种型号:TLD2132-1EP、TLD2331-3EP、TLD2131-3EP、TLD1114-1EP,并委托逐飞科技作为英飞凌LED驱动芯片的发放方。   逐飞长征号灯板   同时作为英飞凌智能车竞赛的官方合作伙伴,英飞凌委托逐飞科技为大家提供一个LED驱动芯片的开源应用方案,所以在今年1月14日的英飞凌-逐飞联合直播后就开源了一版“逐飞无线充电组演示车模浅析及LED电量显示方案开源”,但那次的灯板比较呆板,只能说有个简单功能吧,作为点灯工程师的我们,肯定不服啊,总想着能玩出点花样来才肯罢手,当然更重要的是想传递一下组委会的用意,其实今年增加的这个灯板要求本来也是希望能在大赛中提倡美学设计,起因是受到去年无线充电信标组的一支队伍,卓老师发现其不仅成绩好,小车也做的非常美观精致,不论是结构还是电路板设计都非常富有美感,于是就有了今年无线充电组的灯板设计要求,希望能看到更多漂亮的设计,于是今天抛砖引玉,再来分享一个进阶版的点灯:“英飞凌无线充电组电量显示灯板之花式点灯”。   逐飞长征号灯板背面   一、TLD2331-3EP芯片介绍 1.1、芯片简述 首先还是先简要介绍今天灯板方案中用到的英飞凌LED驱动芯片,TLD2331-3EP是一颗集成了三通道LED控制芯片,每个通道的最大电流可达80mA,输出电流可设定,简单来说就是可以作为一个恒流源来驱动LED灯。其引脚分布图如下:       通过查阅芯片手册可以查找到芯片各引脚对应的功能: 1.引脚2、3、4分别为三路输入的控制端口,连接单片机端口。 2.引脚13、12、11为三路输出端口,连接到LED灯。 3.引脚8、10为电源接口,其中10脚接电源、8脚接地。 4.引脚9为使能引脚,需要接高电平有效。 5.引脚1、5、6、7为特殊功能引脚,本次点灯方案并为用到,接地即可;引脚14为报错信号,本次方案也未使用。   1.2、芯片特性 TLD2331-3EP芯片的一些主要特性如下: 1.恒流输出,可作为一个低成本的电流源使用,保证LED灯的亮度 2.支持3通道同时控制,每个通道最大电流达80mA 3.支持睡眠模式,睡眠模式下的功耗极低 4.拥有故障保护和过载保护 5.工作温度范围极宽,可在-40℃到150℃下稳定工作   二、硬件电路分析 灯板的硬件电路部分已经在之前的无线充电组方案浅析的文章中有提到,不知道各位同学有没有注意到呢?下面我们还是简单的分析一下电路的主要结构。   主要的驱动芯片为TLD2331-3EP,我们分别接上了输入、输出和电源信号,而其他暂时没有用到的功能则按照手册就行了接地或者悬空,输出部分共有15颗LED灯,意在通过一个LED灯就表示有1V电压来应用到我们的无线充电组的电源显示方案中,而TLD2331-3EP芯片是三通道输出的,那么想一颗芯片控制15颗灯就需要额外增加开关控制,将控制范围从一维切换到二维。 此时我们就得到了一个类似于矩阵的电路,而这样的电路相信大家并不陌生。假设我们现在想点亮L1A这个灯,我们需要将A这个引脚设置为高电平,把Q1这个MOS管打开使得L1A这个灯的负极与地连接,B、C、D、E应该设置为低电平,然后我们将L1设置为低电平,L2、L3设置为高电平,这样就只有L1A被点亮了。点亮其他的灯就不一一列举了,相信大家已经理解了如何点亮LED灯,下面我们从程序入手,开始掌握点灯技巧。     三、花式点灯 3.1、点亮一个LED 点亮任意一颗LED灯我们仅需要改变两个端口的状态即可,那么程序部分也极为简单,可以在初始化的时候直接让对应端口输出高低电平就可以让那颗灯点亮,也可以在程序中更改。 下面是基于TC264控制灯板的单个点灯示例程序,大家可以参考学习。   //初始化LED端口 void led_init(void) {     gpio_init(L1, GPO,0, PUSHPULL); //初始化L1端口     gpio_init(L2, GPO,1, PUSHPULL); //初始化L2端口     gpio_init(L3, GPO,1, PUSHPULL); //初始化L3端口       gpio_init(LA, GPO,1, PUSHPULL); //初始化LA端口     gpio_init(LB, GPO,0, PUSHPULL); //初始化LB端口     gpio_init(LC, GPO,0, PUSHPULL); //初始化LC端口     gpio_init(LD, GPO,0, PUSHPULL); //初始化LD端口     gpio_init(LE, GPO,0, PUSHPULL); //初始化LE端口 } //设置LED端口状态 void led1_lighten(void) {     gpio_set(L1,0);     gpio_set(L2,1);     gpio_set(L3,1);       gpio_set(LA,1);     gpio_set(LB,0);     gpio_set(LC,0);     gpio_set(LD,0);     gpio_set(LE,0); }   往返拖尾流水灯效果   3.2、扫描点灯 前面的点亮单颗LED确实非常简单,而我们如果想点亮任意的多个LED灯那就需要进行扫描点灯了,而扫描点灯的例程以及思路早在之前的“逐飞无线充电组演示车模浅析及LED电量显示方案开源”的文章中也有提到,下面再带同学们复习一遍。 扫描的方式就是让每个灯点亮一会儿,由于视觉暂留所以就看起来有多个灯同时点亮的效果。这里需要特别注意的两个地方,第一在点亮其他灯之前务必要先将所有灯关闭,否则会出现一些不应该点亮的灯被点亮的情况。第二在扫描的时候要保证每个灯点亮的时间长度是一样的,否则会出现亮度不一致的问题。 下面是基于TC264控制灯板的扫描点灯示例程序,大家可以参考学习。   #define L1 P21_5 #define L2 P21_4 #define L3 P21_3   #define LA P21_2 #define LB P33_6 #define LC P33_7 #define LD P00_9 #define LE P02_8   // **************************** 宏定义 ****************************   // **************************** 变量定义 **************************** uint8 temp=0,temp1=0;       //计算变量 uint8 num=0;                //刷新计次 float supply_voltage=0;     //模拟电源电压 // **************************** 变量定义 ****************************   int core0_main(void) {     get_clk();//获取时钟频率  务必保留     //用户在此处调用各种初始化函数等       //初始化LED控制引脚     gpio_init(L1, GPO,1, PUSHPULL);     gpio_init(L2, GPO,1, PUSHPULL);     gpio_init(L3, GPO,1, PUSHPULL);     gpio_init(LA, GPO,0, PUSHPULL);     gpio_init(LB, GPO,0, PUSHPULL);     gpio_init(LC, GPO,0, PUSHPULL);     gpio_init(LD, GPO,0, PUSHPULL);     gpio_init(LE, GPO,0, PUSHPULL);       //等待所有核心初始化完毕     IfxCpu_emitEvent(&g_cpuSyncEvent);     IfxCpu_waitEvent(&g_cpuSyncEvent,0xFFFF);     enableInterrupts();     while(TRUE)     {         temp=(uint8)supply_voltage; //获取电源电压         num++;                      //刷新计次         if(num>14) num=0;         //关闭所有LED显示         gpio_set(L1,1);         gpio_set(L2,1);         gpio_set(L3,1);         systick_delay_us(STM0,1);         gpio_set(LA,0);         gpio_set(LB,0);         gpio_set(LC,0);         gpio_set(LD,0);         gpio_set(LE,0);           if(num < temp)  //点亮需要点亮的LED灯         {             temp1 = num/3;             switch(temp1){                          //打开行                 case0:  gpio_set(LA,1);break;                 case1:  gpio_set(LB,1);break;                 case2:  gpio_set(LC,1);break;                 case3:  gpio_set(LD,1);break;                 case4:  gpio_set(LE,1);break;                 default:break;             }             temp1 = num%3;             switch(temp1){                          //打开列                 case0:  gpio_set(L1,0);break;                 case1:  gpio_set(L2,0);break;                 case2:  gpio_set(L3,0);break;                 default:break;             }         }           systick_delay_ms(STM0,1);                  //延时1ms  也可以把上面的语句放进1ms的周期中断中         supply_voltage+=0.002;                      //模拟充电         if(supply_voltage>15) supply_voltage=1;       } }   拖尾流水灯效果   3.3、花式点灯 细心的同学可能已经发现了,前面的点灯都是通过修改端口状态来让灯亮起或者熄灭,那么我们是否可以通过PWM信号来让灯产生不同亮度的光呢?答案是肯定能的。因此我们可以通过使用PWM来进行花式点灯,所以在进行初始化时也需要将一侧的控制端口初始化为PWM输出模式,具体代码如下:   void led_init(void) {     gtm_pwm_init(L1,150000,0); //初始化L1端口     gtm_pwm_init(L2,150000,0); //初始化L2端口     gtm_pwm_init(L3,150000,0); //初始化L3端口       gpio_init(LA, GPO,0, PUSHPULL); //初始化LA端口     gpio_init(LB, GPO,0, PUSHPULL); //初始化LB端口     gpio_init(LC, GPO,0, PUSHPULL); //初始化LC端口     gpio_init(LD, GPO,0, PUSHPULL); //初始化LD端口     gpio_init(LE, GPO,0, PUSHPULL); //初始化LE端口 }   潮汐流水灯效果   而且我们在花式点灯的时候,也需要控制15颗灯,所以显示逻辑部分依旧使用的是扫描点灯的方式,同时为了能让显示更加稳定,还需要通过使用定时器中断的方式来执行显示部分,同时我们仅需要将列显示部分更换为占空比设置即可,以下为显示部分代码:   uint8 num=0;                //刷新计次 IFX_INTERRUPT(cc60_pit_ch1_isr,0, CCU6_0_CH1_ISR_PRIORITY) {     enableInterrupts();//开启中断嵌套     PIT_CLEAR_FLAG(CCU6_0, PIT_CH1);     uint8 temp;     num++;             //刷新计次     if(num>15)     {         num=0;     }     //关闭所有LED显示     pwm_duty(L1,10000);     pwm_duty(L2,10000);     pwm_duty(L3,10000);     systick_delay_us(STM0,1);     gpio_set(LA,0);     gpio_set(LB,0);     gpio_set(LC,0);     gpio_set(LD,0);     gpio_set(LE,0);     if(num <16)       //点亮需要点亮的LED灯     {           temp = num/3;         switch(temp){                          //打开行             case0:  gpio_set(LA,1);break;             case1:  gpio_set(LB,1);break;             case2:  gpio_set(LC,1);break;             case3:  gpio_set(LD,1);break;             case4:  gpio_set(LE,1);break;             default:break;         }         temp = num%3;         switch(temp){                          //打开列             case0:  pwm_duty(L1, animation[show_num][num]);break;             case1:  pwm_duty(L2, animation[show_num][num]);break;             case2:  pwm_duty(L3, animation[show_num][num]);break;             default:break;         }     } }   呼吸灯效果   此时,占空比设置的具体值就关乎着灯的亮度了,而因为我们使用数组控制占空比的值,所以当我们对数组的内容进行移位的时候,此时就相当于让灯也动起来了,下面举个简单的例子,数组内容我们先设置以下初值:   {0000,3000,5000,7000,10000,7000,5000,3000,0000,3000,5000,7000,10000,7000,5000,3000}   按照TLD2331-3EP的控制原理,当输入控制端拉低则点亮,因此我们设置的占空比越低,灯也就越亮,所以如果按照以上占空比初值显示出来的话,就应该是一个波浪的效果,如下图所示: 静态效果   在这个基础上,我们加入一个让数组移位的循环算法,则可以让这个“波浪”动起来!   temp = animation[show_num][0];     for(int i=1;i<16;i++)     {         animation[show_num][i-1]=animation[show_num];     }     animation[show_num][15]= temp;         动态波浪效果   在完成了动效显示之后,大家应该就可以举一反三的写出自己喜欢的点灯效果了,下面也通过视频的方式给大家看看逐飞点灯工程师写的几个效果:         具体的花式点灯代码将放在我们的Gitee开源仓库。 链接:https://gitee.com/seekfree/Infineon_TLD2331_3EP 有兴趣的同学可以下载查阅,也期待大家更多亮眼的设计!   无线充电组双电源供电接线示意图    

  • 回复了主题帖: 瑞萨CPK-RA6M4 开发板测评+开箱搭建环境

    在RT-Studio里添加对开发板支持的sdk,可以下载 然后再需要下载FSP工具,说的很清楚

  • 2022-05-15
  • 回复了主题帖: 【先楫HPM6750测评】CoreMark跑分测试

    确实有点疑问,双核同时运行CoreMark测试,分数会翻倍吗?

  • 回复了主题帖: 双端口MIPI DSI/CSI/LVDS到DP1.2转换器,USB Type-C充电接口

    资料没有贴完吧

  • 回复了主题帖: 【平头哥RVB2601创意应用开发】花卉浇水检测仪-开发板简介

    图片要上传,不能粘贴

  • 2022-05-14
  • 回复了主题帖: 【平头哥RVB2601创意应用开发】使用体验09 -- YoC事件

    谢谢分享“有坑版”的代码写法

  • 2022-05-11
  • 回复了主题帖: 【平头哥RVB2601创意应用开发】+GPIO的使用

    关机后再次使用就只能编译而无法下载了 这个好像不应该

  • 回复了主题帖: 哪里找用于Mbed平台的FastLed驱动WS2812的源代码

    度年没有指点一下么

  • 回复了主题帖: 【国民技术 N32 MCU 开发资料包】--N32G4FR系列

    在官网国民技术的资料不好下载 谢谢楼主分享

  • 2022-05-10
  • 回复了主题帖: 【平头哥RVB2601创意应用开发】2、CH2601串口接收

    期待后续测评

  • 2022-05-09
  • 回复了主题帖: iMX6ULL 小尺寸40*29mm核心板-框架图,核心板硬件设计说明,原理图众多资料为您奉上!

    在自己搞设计做底板时,要注意IIC总线必须加上拉电阻,弄不好确实会导致IIC总线设备不能使用。

统计信息

已有711人来访过

  • 芯积分:2585
  • 好友:--
  • 主题:2514
  • 回复:1713
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


amorqas 2021-11-17
你好,你发布的TI的mmWave系列视频链接打不开,能发我看一下吗,邮箱632877099@ qq.com   非常感谢
seaskyland 2020-7-24
你好,你发表的C2000的软件串口(SCI)实现方法里面的图片内容都打不开,能给我发一下看看吗,想学习一下,谢谢,邮箱地址:13058594@qq.com
seaskyland 2020-7-24
你好,你发表的C2000的软件串口(SCI)实现方法里面的图片内容都打不开,能给我发一下看看吗,想学习一下,谢谢
桃子瑶瑶 2019-10-12
你的实验很有意思
查看全部