车载天空光污染自动测量装置研究
2015-11-02屈鸣杨
屈鸣杨
摘要:光污染会对人类的身体健康造成极大危害,城市夜空亮度的提高对天文观测、城市夜间环境保护以及能源利用等都会带来负面影响。光污染是环境治理工作的重要内容,光污染主要来自人工光源,光源的强度决定光污染的大小。本文提出了利用光照度传感器BH1750制作光污染检测仪,用来探测环境中光强的大小。该检测仪系统包括对光强的检测、当前环境光强的显示、测试地点经纬度、海拔高度、测试时间等参数的测量和自动记录到SD卡并可以设定报警功能。通过Arduino的控制功能,实现了光强的实时显示、记录功能的自动化,对光污染监测与控制起到重要作用。
关键词:BH1750;Arduino;光污染;天空亮度
一、引言
天空发亮是城市光污染的主要表现形式之一,近年来,城市夜间照明直接射向和经地面反射到天空中的光,在一定程度上,提高了夜间天空的亮度,因此也严重破坏了天文爱好者及普通市民对城市星空和银河的遥望和观察。天空发亮是来自大气中的气体分子和气溶胶的散射(包括可见和非可见)光线,反射在天文观测方向形成的夜空光亮现象。它主要是由自然天空光和人为天空光两部分造成的。其中自然天空光是指天体和地球大气上层辐射过程引起的那部分天空辉光,它包括五个方面:月光、高层大气辉光、黄道光、散射的星光、星际尘埃和气体等引起的背景光;人为天空光主要是指城市的人工光在尘埃、水蒸气或其他悬浮粒子的反射或扩散作用下进入大气层, 而导致的城市上空发亮。然而深蓝夜空、繁星闪烁作为夜间环境的重要组成,是自然界留给人类的最宝贵生态资源之一,是全球生态和人类生存环境不可或缺的一部分。所以目前有越来越多的学者和专家提倡要“净化”夜空,对星空进行保护,尽量提高城市夜天空的等级。
二、光污染的相关知识
随着城市建设的飞速发展,伴随而来的环境污染日益加剧,除水污染、大气污染、噪声污染、固体废弃物污染外,光污染被认为是第五类重要污染源。光污染最早是由国际天文界指出,认为光污染是城市室外灯光照明使天光很亮而难以进行星空观测,这种狭义的光污染仅仅是指可见光。广义的光污染指对人类生活和生产环境造成不良影响现象的一切光辐射,包括可见光、红外线和紫外线。
(一)光污染的分类及其危害
一般将光污染分为三类,即白亮污染、人工白昼和彩光污染。
1.白亮污染是指阳光照射强烈时,城市里建筑物的玻璃幕墙、釉面砖墙、磨光大理石和各种涂料等装饰反射光线,明晃白亮,眩眼夺目。长时间在白色光亮污染环境下工作和生活的人,视网膜和虹膜都会受到程度不同的损害,视力急剧下降,白内障的发病率高达45%,它还使人头昏心烦,甚至发生失眠、食欲下降、情绪低落、身体乏力等类似神经衰弱的症状。尤其在夏天,玻璃幕墙强烈的反射光进入附近居民楼房内,使室温平均升高4~6摄氏度,影响人的正常的工作和生活。有些玻璃幕墙是半圆形的,反射光汇聚还容易引起火灾。烈日下驾车行驶的司机会出其不意地遭到玻璃幕墙反射光的突然袭击,眼睛受到强烈刺激,很容易诱发车祸。
2.人工白昼是指在夜间,商场、酒店的广告灯、霓虹灯闪烁夺目,令人眼花缭乱,有些强光甚至直冲云霄,使得夜晚如同白天一样,即所谓的人工白昼。这样的环境会扰乱人体正常的生物钟,导致人的白天工作效率低下。人工白昼还会伤害鸟类和昆虫,强光可能破坏昆虫在夜间的正常繁殖过程。
3.彩光污染是指舞厅、夜总会安装的黑光灯、旋转灯、荧光灯以及闪烁的彩色光源构成的污染。人如果长期接受这种照射,可诱发流鼻血、脱牙、白内障,甚至导致白血病和其他癌变。
三、光污染检测系统
(一)系统硬件设计
本测试系统以目前流行的Arduino控制计算机为核心,整合各种外围模块组成的。在应用设计初期,把这款装置分成了两大部分来进行设计,第一部分是基于Arduino控制计算机为核心的硬件,体积小,可以安装在自行车、汽车等各种车辆上,负责收集和记录当前天空光强、测试地点经纬度、海拔高度、测试时间等数据,并通过LCD显示屏实时显示时速等信息。第二部分则是分析统计的数据(研究尚在进行中),由于受Arduino的SRAM和频率的限制,不太适合做数据分析,因此把这部分功能分拆开来,设计成由桌面计算机系统来完成—Arduino记录的数据上传到计算机系统上后进行分析并绘制图表。第二部分系统,初步设计成了一个Web2.0的应用。这样就可以方便地将统计的结果进行分享和发布。
在本测试系统中,基于Arduino的硬件系统部分,主要由以下几个模块来构成:
(1)Arduino控制计算机,测试系统的核心。
(2)电源模块,为所有硬件提供电源。
(3)GPS模块,提供GPS定位信息,以得到位置数据、速度数据、高度数据。
(4)LCD模块,实时显示骑行数据。
(5)SD/TF卡存储模块,储存位置数据、速度数据、高度数据、天空亮度数据、时间数据等。
(6)光照度模块,测量天空亮度数据。
各个模块系统连接框图如图1所示。
该应用设备使用的Arduino端口的规划表如下:
PIN 0 (RX) GPS模块TX
PIN 1 (TX) GPS模块RX
PIN 2
PIN 3
PIN 4
PIN 5 Nokia 5110 LCD模块 SCK
PIN 6 Nokia 5110 LCD模块 MOSI
PIN 7 Nokia 5110 LCD模块 A0
PIN 8 Nokia 5110 LCD模块 Reset
PIN 9
PIN 10 TF卡模块 片选SS
PIN 11 TF卡模块 MOSI
PIN 12 TF卡模块 MISO
PIN 13 TF卡模块 SCK
其中,电源模块由7.4V,1000毫安时锂电池作为电源,经过DC/DC模块,转换成+3.3V和+5V两路电压供Arduino控制计算机和外围各个功能模块使用。
GPS模块和Arduino控制计算机通过标准硬件串口进行连接,通讯波特率采用标准9600。
在这里使用硬件Serial来作为GPS NMEA信号输入而不使用SoftSerial的好处是:避免SoftSerial的兼容问题;节省Flash的空间,减少SRAM使用。
LCD模块和Arduino控制计算机通过非标准的SPI通信协议通讯。因此在编程时不能够使用标准硬件SPI库,而需要使用Soft SPI来驱动。
SD/TF卡存储模块是工作在3.3V的电压下的,采用标准SPI接口和Arduino控制计算机连接。在Arduino控制计算机上,SPI使用引脚10(SS)、11(MOSI)、12(MISO)and13(SCK)。
光照度模块和Arduino控制计算机通过I2C总线通讯。在大多数Arduino控制计算机上SDA(data line)使用模拟口4,SCL(clock line)使用模拟口5。
各模块介绍如下:
ArduinoUNO:
ArduinoUNO(R3版本)采用的微处理器是ATmega328. 该版本包括14个数字输入输出IO、6个模拟输入IO、16MHZ的晶体、USB接口、电源接口、烧录头、复位按钮等。相对于其他版本,R3版本的不同之处是:
(1)增加I2C总线接口:SDA,SCL。
(2)增强的复位线路。
(3)使用16U2替代以前的8U2。
R3版本的主要特征包括:
(1)微处理器:ATmega328。
(2)操作电压:5V。
(3)输入电压:7V到12V。
(4)数字双向IO:14个(其中6个提供PWM输出)。
(5)模拟输入脚:6个。
(6)每个IO脚的最大输出电流:40mA。
(7)提供的3V3最带电流:50mA。
(8)Flash大小:32K字节。
(9)SRAM大小:2K字节。
(10)EEPROM大小:1K字节。
(11)时钟频率:16M。
GPS模块:
ATK-NEO-6M-V12是一款高性能GPS定位模块。该模块采用U-BLOX NEO-6M模组,模块自带高性能无源陶瓷天线(无需再购买昂贵的有源天线了),并自带可充电后备电池(以支持温启动或热启动,后备电池在主电源断电后,可以维持半小时左右的GPS接收数据保存)。
模块通过串口与外部系统连接,串口波特率支持4800、9600、38400(默认)、57600等不同速率,兼容5V/3.3V单片机系统,可以非常方便地与您的产品进行连接。
ATK-NEO-6M GPS模块同外部设备的通信接口采用UART(串口)方式,输出的GPS定位数据采用NMEA-0183协议(默认),控制协议为UBX协议。
5110LCD模块:
5110LCD模块是NOKIA公司生产的可用于其5110、6150,6100等系列移动电话的液晶显示模块,国内厂家也生产有类似的兼容产品。该产品除应用于移动电话外,也可广泛应用于各类便携式设备的显示系统。与其他类型的产品相比,该模块具有以下特点:
(1)84x48的点阵LCD,可以显示4行汉字。
(2)采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源地在内的信号线仅有9条。支持多种串行通信协议(如AVR单片机的SPI、MCS51的串口模式0等),传输速率高达4Mbps,可全速写入显示数据,无等待时间。
(3)可通过导电胶连接模块与印制板,而不用连接电缆,用模块上的金属钩可将模块固定到印制板上,因而非常便于安装和更换。
(4)LCD控制器/驱动器芯片已绑定到LCD晶片上,模块的体积很小。
(5)采用低电压供电,正常显示时的工作电流在200μA以下,且具有掉电模式。
光照度模块:
16位数字输出型环境光强度传感器集成电路BH1750FVI是一种用于两线式串行总线接口的数字型光强度传感器集成电路。这种集成电路可以根据搜集的光线强度数据来调整液晶或者键盘背景灯的亮度。利用它的高分辨率可以探测较大范围的光强度变化。产品特点如下:
(1)支持I2C BUS接口(f/s Mode Support)。
(2)接近视觉灵敏度的光谱灵敏度特性(峰值灵敏度波长典型值:560nm)。
(3)输出对应亮度的数字值。
(4)对应广泛的输入光范围(相当于1-65535lx)。
(5)通过降低功率功能实现低电流化。
(6)通过50Hz/60Hz除光噪音功能实现稳定的测定。
(7)支持1.8V逻辑输入接口。
(8)无需其他外部件。
(9)光源依赖性弱(白炽灯、荧光灯、卤素灯、白光LED,日光灯)。
(10)有两种可选的I2C slave地址。
(11)可调的测量结果影响较大的因素为光入口大小。
(12)使用这种功能能计算1.1 lx到100000 lx马克斯/分钟的范围。
(13)最小误差变动在±20%。
(14)受红外线影响很小。
(二)系统软件设计
在这个项目中,GPS模块的驱动使用了TinyGPS库,LCD显示则使用了u8glib,SD卡模块驱动使用了SD库。当然,为了节省SRAM,对库也进行了修改。例如,对TinyGPS的cardinal函数进行了修改,将数组使用PROGMEM进行存储,节省SRAM的空间。
整个系统的代码逻辑其实很简单。初始化完成后,每秒检查一次GPS信号,如果信号正常则更新信息并在LCD屏幕更新显示的实时数据。由于事后用于分析的数据不需要精确到每秒这样的级别,因此设定每5秒判断一次,如果当前位置和5秒前相比发生了一定的位移量则将数据记录到SD卡,以供分析。
为了简化数据存储的方式,数据以类似CSV的格式存储在TF卡上,文件名则为开始记录的日期,每一段数据以数据格式的版本号开始,每一行都是一笔数据。
格式如下:
日期,时间,连接的卫星个数,纬度,经度,海拔高度,时速,行驶方向,光照度。
程序流程如图2所示,计算机开始运行后进入void setup(){…}程序段对系统硬件进行初始化。开启每秒一次的定时中断计数器,对串口、LCD显示器和I2C BUS进行初始化。
初始化完成后进入GPS数据搜索模式,同时在LCD显示屏显示当前光照度数据。程序将一直运行在该搜索模式,直到计算机获得当前经纬度、高度、速度等卫星定位数据。
如果完成寻星工作,程序就将当前时间、当前速度、卫星数量、移动方向、经纬度、海拔高度、当前光照度等数据按照每秒一次的频率刷新显示到LCD显示器。同时按照每5秒一次的频率将以上数据写到SD卡保存,以便过后对数据进行分析计算。
(三)系统测试
系统调试经过三个阶段。第一阶段完成利用面包板搭建测试环境,初步调试软硬件(如图3)。在这个阶段主要是通过软硬件协同验证硬件模块之间的连接关系是否合理。通过各个测试程序的下载运行,保证硬件模块能够正常工作,模块之间连接关系正确。
初步调试正常以后就将所有硬件模块安装到仪器盒里面。这时候要考虑各个模块的安装位置是否合理,连接是否方便,外部接口位置是否合适等机械方面的问题。然后就是按照设计好的位置在仪器盒的四周进行开孔等操作。
为了实现光照度传感器的遮光等功能,笔者用CRE2.0软件设计了一个孔拦结构,并利用学校工程实验室的3D打印机打印出来(如图4)。
以上工作全部完成后,接下来就是做软件的撰写和调试。软件的调试采用模块化调试方式。先测试各个模块能够正常工作,然后对各个模块进行组装调试。调试程序大约需要4个周六、周日的时间。
下面是调试完成后的装置外观图(如图5)。
当卫星信号正常时,进入正常测试界面如图6所示。
四、结论
通过初步测试盒验证,本装置能够较好地满足天空光污染数据的自动化测量和记录,为天文观测和环境污染研究的专业人士提供一种可靠便捷的测试方法和手段,具有一定的先进性。
五、致谢
在本项目的研究过程中,江苏省天一中学“南京理工大学﹒天一中学机器人创新实验室”的邓一波老师放弃了大量的休息时间来开放实验室,提供尽可能的方便,并在研究过程中提出了很多意见和建议。在此,对他表示衷心感谢!