
目的是监督太阳能光伏发电,以提高太阳能发电厂的性能,监测和维护。 ![]() 这个项目中使用的东西 硬件组件 粒子光子 × 1 太阳能 × 1 光依赖电阻(LDR) × 1 温度感应器 × 1 RGB背光LCD - 16x2 Adafruit RGB背光LCD -16x2 × 1 电阻1k欧姆 × 3 介绍 太阳能是能源工业的未来。世界各国都在关注可再生和清洁能源。阳光是每天到处都可以获得的最丰富的资源。通过利用太阳光产生能量,可以在没有任何污染的情况下进行发电。不断的研究和创新正在进行,以提高太阳能电池的效率,降低太阳能电池板的制造成本,并改善太阳能电厂的配电。 该项目的目的是提高太阳能电池板的效率。该项目旨在监督太阳能光伏发电,以提高太阳能发电厂的性能,监测和维护。随着技术的进步,可再生能源设备的成本正在全球范围内下降,从而鼓励大规模的太阳能光伏装置。这种大规模的太阳能光伏部署需要使用基于网络的接口远程监控工厂自动化的复杂系统,因为它们中的大多数安装在难以接近的位置,因此易于从专用位置进行监控。该项目允许监测太阳能电池板的功率输出,入射光强度和工作温度。 在该项目中,粒子光子与太阳能电池板的电压输出引脚,LM-35温度传感器和LDR传感器连接,分别监测功率输出,温度和入射光强度。字符LCD还与粒子光子连接,用于实时显示测量参数。Photon不仅在LCD屏幕上显示测量参数,还将测量值发送到云服务器。要查看董事会发送的实时数据和日志,用户需要从Particle的官方网站登录注册帐户。 组件必需 粒子光子20美元 16x2 LCD $ 3 太阳能板$ 4 LM-35温度传感器2美元 LDR 1美元 面包板$ 4 跳线3美元 硬件的总成本约为40美元。 注: - 太阳能板价格可能因需求而异。 硬件 1.Particle Photon Photon是粒子平台上流行的物联网板。该主板包含STM32F205120Mhz ARM Cortex M3微控制器,具有1 MB闪存,128 Kb RAM和18个带有高级外设的混合信号通用输入输出(GPIO)引脚。该模块具有用于Wi-Fi连接的板载Cypress BCM43362 Wi-Fi芯片和用于蓝牙的单频带2.4GHzIEEE 802.11b / g / n。该板配备2个SPI,一个I2S,一个I2C,一个CAN和一个USB接口。 应注意,3V3是用于模拟传感器的滤波输出。该引脚是板载稳压器的输出,内部连接到Wi-Fi模块的VDD。通过VIN或USB端口为Photon供电时,该引脚将输出3.3VDC的电压。该引脚也可用于直接为Photon供电(最大输入3.3VDC)。当用作输出时,3V3上的最大负载为100mA。PWM信号的分辨率为8位,运行频率为500 Hz。 针脚图 ![]() 引脚说明 ![]() 2. 16X2字符LCD 16X2 LCD显示屏用于显示测量参数的值。它通过将其数据引脚D4至D7连接到刨花板的引脚D0至D3而连接到粒子光子。LCD的E和RS引脚分别连接到刨花板的引脚D5和D6。LCD的R / W引脚接地。 ![]() 3. LDR传感器(光敏电阻) LDR或光敏电阻也称为光电阻,光电池,光电导体。它是一种电阻,其电阻根据其表面落下的光量而变化。当光线落在电阻器上时,电阻会发生变化。这些电阻器通常用于需要检测光存在的许多电路中。这些电阻具有多种功能和电阻。例如,当LDR处于黑暗中时,它可用于打开灯或在灯处于关闭状态时关闭灯。典型的光敏电阻器在黑暗中具有1MOhm的电阻,并且在亮度中具有几KOhm的电阻。 LDR的工作原理 该电阻器的工作原理是光电导率。它只不过是,当光线落在其表面上时,材料的导电性降低,并且器件的价带中的电子也被激发到导带。入射光中的这些光子必须具有大于半导体材料带隙的能量。这使得电子从价带跃迁到导电。这些器件依赖于光,当光落在LDR上时,电阻减小,当LDR保持在黑暗的地方时,其电阻很高,当LDR保持在光线下时,其电阻会降低。 LDR传感器用于测量入射光强度。光强度以勒克斯表示。传感器连接到Particle Photon的A2引脚。传感器连接在分压器电路中。LDR提供模拟电压,通过内置ADC转换为数字读数。 4.LM-35温度传感器 LM35是一款精密IC温度传感器,其输出与温度成正比(以oC为单位)。工作温度范围为-55°C至150°C。响应于环境温度的每oC上升/下降,输出电压变化10mV,即其比例因子为0.01V / oC。传感器有三个引脚 - VCC,模拟输出和地。LM35的Aout引脚连接到粒子光子的模拟输入引脚A0。VCC和地连接到公共VCC和地。 ![]() LM35 特征 直接在摄氏度(摄氏度)校准 线性为10.0 mV /°C比例因子 保证0.5°C精度(在25°C时) 额定温度范围为-55°C至150°C 工作电压为4至30伏 电流消耗小于60 mA 低自热,0.08°C灌注空气 非线性仅为0.25°C典型值 低阻抗输出,0.1Ω负载,1 mA负载 5.太阳能电池板 太阳能电池板是将光转换为电能的装置。他们从天文学家使用的“Sol”这个词中得到了“太阳能”面板的名称,以引用太阳和阳光。这些也称为光伏电池板,光伏电池意味着“光电”。将太阳能转换为电能的现象称为光伏效应。这种效应在太阳能曝光时产生输出端的电压和电流。该项目使用3伏太阳能电池板。太阳能电池板由几个太阳能电池或光电二极管组成。这些太阳能电池是PN结二极管,它们可以在太阳光存在的情况下产生电信号。在暴露在阳光下时,该太阳能电池板在其端子处产生3.3 V的直流电压输出。该面板的最大输出功率为0。72瓦,最小输出功率为0.6瓦。其最大充电电流为220 mA,最小充电电流为200 mA。面板有两个端子 - VCC和接地。电压输出来自VCC引脚。电压输出引脚连接到Particle Photon的模拟输入引脚A1,用于测量太阳能电池板的输出功率。 软件 粒子web IDE 为了编写任何Photon的程序代码,开发人员需要在Particle网站上创建一个帐户并使用他的用户帐户注册Photon板。然后,程序代码可以在Particle的网站上的Web IDE上编写,并通过互联网传输到注册的光子。如果所选的刨花板(此处为Photon)已打开并连接到粒子的云服务,则代码将通过互联网连接无线传输到所选板,并且电路板将根据传输的代码开始运行。为了通过互联网控制电路板,设计了一个网页,它使用Ajax和Jquery使用HTTP POST方法将数据发送到电路板。网页通过设备ID识别电路板,并通过访问令牌连接到Particle的Cloud Service。 如何将光子与Internet 连接 1.为设备供电 将USB电缆插入电源。 插入后,设备上的RGB LED应立即开始呈蓝色闪烁。如果您的设备没有闪烁蓝色,请按住SETUP按钮。如果您的设备根本没有闪烁,或者LED正在燃烧时无光泽橙色,可能没有足够的力量。尝试更换电源或USB电缆。 2.你的光子连接到了互联网 您可以通过两种方式使用Web应用程序或移动应用程序 一个。使用Web应用程序 步骤1 转到setup.particle.io 步骤2 单击“设置光子” 步骤3 单击后NEXT,您将看到一个文件(photonsetup.html) 步骤4 打开文件。 步骤5 打开文件后,通过连接到名为PHOTON的网络将PC连接到Photon。 步骤6 配置Wi-Fi凭据。 注意:如果您输入的凭据错误,则Photon将闪烁深蓝色或绿色。您必须再次完成该过程(通过刷新页面或单击重试过程部分) 步骤7 重命名您的设备。如果设备被声明,您还会看到确认。 湾使用智能手机 在手机上打开应用程序。如果您没有,请使用粒子登录或注册一个帐户。 登录后,按加号图标,然后选择您要添加的设备。然后按照屏幕上的说明将设备连接到Wi-Fi。 如果这是您的Photon第一次连接,它会在下载更新时闪烁紫色几分钟。更新完成可能需要6-12分钟,具体取决于您的互联网连接,Photon在此过程中重新启动几次。在此期间请勿重新启动或拔掉Photon。如果您这样做,您可能需要按照本指南修复您的设备。 一旦连接了设备,它就学会了网络。您的设备最多可以存储五个网络。要在初始设置后添加新网络,您需要再次将设备置于聆听模式并按上述步骤操作。如果您认为自己的设备上有太多网络,则可以擦除设备对其学习过的任何Wi-Fi网络的记忆。您可以继续按住设置按钮10秒钟,直到RGB LED快速闪烁蓝色,表示所有配置文件都已删除。 模式 青色,您的Photon已连接到互联网。 Magenta,它目前正在加载应用程序或更新其固件。此状态由固件更新或从Web IDE或Desktop IDE中刷新代码触发。第一次将Photon连接到云时,您可能会看到此模式。 绿色,它正试图连接到互联网。 白色,Wi-Fi模块关闭。 Web IDE Particle Build是一个集成开发环境或IDE,这意味着您可以在易于使用的应用程序中进行软件开发,这恰好恰好在您的Web浏览器中运行。 要打开构建,请登录到粒子帐户,然后单击构建,如图所示。 ![]() 点击后你会看到这样的控制台。 ![]() 要创建新的创建应用,请单击“创建新应用”。 ![]() 要在程序中包含库,请转到库部分。 ![]() 并寻找液晶。 ![]() ![]() 选择要添加库的应用程序。在我的情况下,它是solarpanel监控。 ![]() 验证程序。点击验证。 ![]() 要上传代码,请单击闪存,但在此之前选择设备。 如果您有多台设备,则必须确保已选择要将哪些设备设为闪存代码。单击导航窗格左下角的“设备”图标,然后当您将鼠标悬停在设备名称上时,该星标将显示在左侧。单击它以设置您想要更新的设备(如果您只有一个设备,则不会显示该设备)。选择设备后,与其关联的星形将变为黄色。(如果您只有一台设备,则无需选择它,您可以继续。 ![]() 选择设备后,单击闪存 ![]() 电路如何工作 在电路中,模块的6个GPIO引脚用于连接字符LCD,3个模拟输入引脚用于连接LM-35温度传感器,太阳能电池板和LDR传感器。 一旦电路组装完毕,它就可以与太阳能电池板一起部署。太阳能电池板不断发电,附在设备上。该设备由主电源供电,管理其他性能增强设备。一旦设备通电,一些初始消息就会在其LCD显示屏上闪烁,表明应用程序的意图。面板的功率输出,温度和入射光强度分别由太阳能电池板,LM-35温度传感器和LDR传感器的电压输出引脚测量。太阳能电池板的电压输出引脚,LM-35温度传感器和LDR传感器连接到粒子光子的模拟输入引脚A1,A0和A2。 通过感测各个引脚处的模拟电压来测量各个参数。使用内置ADC通道将在各个引脚上检测到的模拟电压转换为数字值。粒子光子具有12位ADC通道。因此,数字化值的范围可以从0到4095.这里,假设LDR传感器与控制器引脚接口的电阻网络被校准以通过直接比例来指示光强度。 LM-35 IC无需任何外部校准或微调即可在室温下提供±0.25°C的典型精度,在-55°C至150°C的温度范围内提供±0.75°C的典型精度。在正常情况下,传感器测量的温度不会超过或降低传感器的工作范围。通过在晶片级进行修整和校准,从而确保以较低成本使用传感器。由于低输出阻抗,线性输出和LM-35的精确固有校准,传感器与控制电路的接口很容易。由于LM-35器件的电源电流仅为60 uA,因此静止空气中的自热温度非常低,仅为0.1°C。通常在-55°C至150°C的温度范围内,传感器的电压输出每摄氏度增加10 mV。 Vout = 10 mV/°C*T 哪里, Vout =传感器的电压输出 T =摄氏度的温度 因此,T(以°C为单位)= Vout / 10 mV T (in °C) = Vout(in V)*100 如果假设VDD为3.3 V,则模拟读数与12位范围内的检测电压有关,如下式所示。 Vout = (3.3/4095)*Analog-Reading 因此,摄氏度的温度可由下式给出。 T(以°C为单位)= Vout(以V为单位)* 100 T (in °C) = (3.3/4095)*Analog-Reading*100 因此,可以通过检测传感器的模拟电压输出直接测量温度。analogRead()函数用于读取控制器引脚上的模拟电压。 太阳能电池板的电压输出通常应为3 V,可由Particle Photon直接检测。粒子光子可以直接检测高达3.3 V的电压。对于检测到的模拟电压的数字化,它再次内部参考VDD。数字化电压读数在12位范围内缩放,即0到4095.所以 Vout = (3.3/4095)*Analog-Reading 读取传感器数据首先显示在LCD显示器上,然后通过Wi-Fi连接传递到粒子云。用户需要登录Particle的注册帐户才能查看读取的传感器值。该平台允许从注册帐户连接到板。用户可以实时监控接收的传感器数据,也可以记录数据。 连接 光子==> LCD D6 ==> RS D5 ==>启用 D3 ==> DB4 D2 ==> DB5 D1 ==> DB6 D0 ==> DB7 光子==> LM-35 A0 ==> Aout 光子==> LDR A2 ==> Vcc 光子==>太阳能板 A1 ==> Vcc 电路原理图 ![]() ![]() ![]() 结果 ![]() 原理图 太阳能电池板监控电路图 ![]() 代码 #include <LiquidCrystal.h> // libraryfor LCD LiquidCrystal lcd(6, 5, 3, 2, 1, 0); // LCD connection /* LCD ==> Particle RS ==> D6 Enable ==> D5 DB4 ==> D3 DB5 ==> D2 DB6 ==> D1 DB7 ==> D0 */ float reading = 0; float Temperature = 0; float temp1 = 0; float volts = 0; float value = 0; float volt = 0; float lux = 0; byte degree[8] = //array of byte is declared and initializedto display the special character //degree symbol on the LCD. { 0b00011, 0b00011, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000 }; void setup() { Serial.begin(9600); // baudrate 9600 lcd.begin(16,2); // Initialize the LCD lcd.createChar(1, degree); lcd.setCursor(0,0); lcd.print(" Solar Panel "); lcd.setCursor(0,1); lcd.print(" Monitoring "); delay(2000); lcd.clear(); lcd.setCursor(0,0); lcd.print(" For "); lcd.setCursor(0,1); lcd.print("ParticleContest"); delay(2000); lcd.clear(); pinMode(A0, INPUT); // interfaceLM-35 to A0 pin of particle pinMode(A1, INPUT); // interfacesolar plate to A1 pin of particle pinMode(A2, INPUT); // interfaceLDR to A2 pin of particle } void loop() { /*---------Temperature-------*/ reading=analogRead(A0); // Read values from LM-35 Temperature=(reading*0.80); //Temperature=(reading*3.3*100)/4096; // 3.3V/4095= 0.80 Temperature = (Temperature/10); // LM35 gives output of 10mv/°C delay(10); /*---------Voltage----------*/ temp1=analogRead(A1); // volts= (temp1*3.3)/4095; //volts= (temp1/511.5)*3; delay(10); /*-----Light Intensity------*/ lux=analogRead(A2); volt= (lux/4095*100); //volt=(value/1023.0)*5; //lux=((2500/volt)-500)/3.3; delay(10); /*------Display Result------*/ lcd.clear(); lcd.setCursor(0,0); lcd.print("T:"); lcd.print((int)Temperature); lcd.write(1); lcd.print("C"); lcd.setCursor(8,0); lcd.print("V:"); lcd.print(volts); lcd.setCursor(0,1); lcd.print("Intens: "); lcd.print((int)lux); lcd.print(" Lux"); //Serial.println((int)Temp); //Serial.println(volts); //Serial.println((int)lux); //delay(500); //To see events on console Particle.publish("Voltage", String(volts)); Particle.publish("Temperature", String(Temperature)); Particle.publish("LightIntensity", String(lux)); delay(2000); } |