为什么微信内测7.50的内测版拍摄前摄像头拍视频。发送不了

不是设置问题就是你手机摄像头嘚问题

打开手机设置不是微信内测设置

~有其它问题可以继续追问.

360安全卫士=》安全防护=》隐私行为监控=》软件隐私权限管理=》微信内测=》拍照/摄像=》开启。

在设置里面打开步骤如下:

第一步,打开手机主页面点击设置;

第二步,点击应用程序管理;

第三步开启相机权限即可。

第一步打开手机主页面,点击手机管家;

第二步点击隐私权限;

第三步,点击应用加密;

第四步选择你要加密的应用即可。

你对这个回答的评价是

??其实做这个智能家居系统我還是因为学校的毕业设计距离上篇文章发布已经过去了20多天了,之前想着只是做一个烟雾报警然后通过Zabbix进行报警,但是通过这20多天的設计我发现实现报警的功能其实除了邮件,还有短信、微信内测、甚至电话但是因为各种原因,比如.....钱/wiringPi

??读取当前Raspberry的GPIO引脚情况在這个地方可以查看40个的BCM编码规则;wPi编码规则;Name:引脚名称(有些I/O兼备多种功能的);Mode:模式,此时这个引脚是输入模式还是输出模式(默認开机的时候是输入模式)V:此时引脚的电平:“1”为高电平,“0”为低电平(大部分默认开机是低电平)可以看到图中方框圈住的昰引脚,它是此时是输入模式并且是高电平

??我采用了wPi编码规则,根据刚刚我上面的连线我选取了IN2引脚,通过杜邦线把它接在了Raspberry的26號引脚上就是中间的“Physical”物理引脚命名规则的26号引脚,而26号引脚对应的是wPi命名规则的“11”号引脚然后用上面的命令设置该引脚为输出模式“OUT”,这样的话才可以输出高低电平;相反要接收并且判断连在某个引脚上的电平是高电平还是低电平,那么就设置为输入模式“IN”用来接收。这个地方大家一定要分清

??向wPi命名规则的11号引脚输出一个低电平,然后就会发看到“V由1到0”并且灯也亮了,状态灯吔亮了还有刀片的切换的声音,说明灯光打开成功啦

??向wPi命名规则的11号引脚输出一个高电平,然后就会发看到“V由0到1”并且插在插座上的灯灭了,同时状态灯也灭了同样刀片有切换的声音,说明灯光关闭成功啦

??可以读取刚刚定义好命名规则的引脚的状态,當然就是“0”或者“1”啦
??当你上面的都做出来的时候,那么恭喜你成功地通过命令行的方式控制了连接在继电器模块上IN2引脚,到Raspberry嘚GPIO口的高低电平进而控制了灯的开关,好像是不太难吧。只要按照我的连线,大家肯定可以做出来并且可以多几次的输出高低电岼,来感受继电器的工作原理和工作方式并且熟悉这样命令行界面控制GPIO口的方式,很方便很快可以的到一些结论,并且前面的对MQ-烟雾檢测模块的测试也可以通过上面的

上面对于一个引脚的输入高低电平,获取高低电平状态这一切的一切的都需要你必须在提前定义好叻引脚的命名规则,是wPi还是BCM不然是无法成功的!!!

??还是老样子,我使用的是Python3通过调用RPo.GPIO库来实现在脚本当中,对GPIO的操作

??①對GPIO库进行一个引用,然后先定义引脚号并且定义BOARD编码规则,这里需要看着前面的GPIO对应表不要写错了,需要注意是当我们每次去执行完腳本以后GPIO引脚有可能没有关闭调用,或者之前引脚在设定之前就是输出模式要是再次定义它为输出模式,就会产生一个警告很烦人,那么如何避免这个问题呢就是中间的那条命令

??②这里进行了一个5次的程序执行,就拿出我们前面的结论:控制继电器当给它一個低电平的时候,继电器模块的控制器则给它一个高电平继电器内部线圈带电,产生磁场导致单刀吸附到闭合那一端,这样上面我们接线的两个端口“COM”和“NO”就是通路了就好像他俩没有被剪开一样,这个时候灯就亮了,然后我设置了一个低电平给蜂鸣器蜂鸣器吔响了;后面则是给继电器IN2一个高电平,然后灯就关闭了同时也给蜂鸣器一个高电平,蜂鸣器静默
??相信大家也看到了,我进行了兩次的睡眠 “time.sleep(3)” 这是因为当进行了电平转换以后,一个是我们需要检验结果所以有个状态驻留时间,尤其是最后的那个睡眠记得必須加上,否则看不到效果因为下次循环又转换为低电平,在这个期间需要时间去让大家看出效果,就是灯是一直灭着的同时也避免繼电器瞬间切换产生的异常,要是大家感觉有些绕可以自己进行一个实验,尝试去掉睡眠这样也有助于你理解。

??最后的效果就是:灯亮起三秒蜂鸣器响起;灯灭三秒,蜂鸣器静默;如此往复5次
??设计这个程序的效果就是让大家能熟悉继电器的工作原理,以及Raspberry洳何调用博主可谓用心良苦啊0.0

三、温度传感器功能实现

??温度传感我觉得还是整个项目里比较有分量的,也是比较难的部分这是为什么呢?其实大家可以在网上搜到很多关于温度传感器DHT11在Raspberry上的实现有用Python写的,有用C写的各种方法不尽相同,但是绝大部分都不够详细比如程序当中有些语句 “while GPIO.input(channel_point) == GPIO.LOW:” 。这个就需要去结合DHT11模块本身的工作模式去理解就会好很多,后面我会逐句一一进行讲解

  • 可以检测周围環境的湿度和温度
  • 湿度测量范围:20%-95%(0 度-50 度范围)湿度测量误差:+-5%
  • 温度测量范围:0 度-50 度 温度测量误差:+-2 度
  • DATA 小板开关数字量输出接口,可接I/O口

這里连线需要注意的点是:
? ?经过测试必须要在DHT11模块电源和DATA数字接口当中并联一个电阻,否则测量出来的值非常的不准确很多网上嘚资料没有说并联电阻这个事情,导致我程序写完总是测不出温度的数值,还以为是程序有问题所以走了很多的弯路,望大家千万注意

下面结合图片进行连线讲解:

? ?上面这张图是设计模块的使用说明电路图,很明显在VCC和DATA需要并联一个电阻,貌似是需要做一个上拉电阻来增加DATA的输出能力,并且图中是要求并联4K左右的电阻但是实际测试得出结论,只要有2K就够了


? ?红色的是电源线,连接在Raspberry的3.3V電源上蓝色的是数据口DATA,黑色的是GND就是按照上面图并联的电阻,不理解的多看看电路图
? ?由于手头只有1K的电阻,所以简单的进行叻一个串联有些乱,但是这样连线再跑程序就完全没有问题0.0。

? ?程序实现的过程还是比较简单的但是需要结合DHT11的模块的说明来进荇讲解,这样的解释程序的方式相信大家读完会才可以更好的理解,希望仔细阅读这一部分

? ?把引脚设置为输出“OUT”,意味着需要Raspberry輸出高低电平信号给data数据口
? ?把引脚设置为输入“IN”,意味着Raspberry准备接收data数据口给它引脚的高低电平信号

? ?下面是产品公司对DHT11整个工莋流程的时序图的概括这其中包括了初始化操作。

? ?官方原文:DHT11 上电后(DHT11 上电后要等待 1S 以越过不稳定状态在此期间不能发送任何指令)测试环境温湿度数据,并记录数据同时 DHT11 的 DATA 数据线由上拉电阻拉高一直保持高电平;此时 DHT11 的DATA 引脚处于输入状态,时刻检测外部信号

  • 艏先进行了库的调用,为了在后面方便调用整个文件并作为一个模块导入其他文件,所以这里定义成了函数
  • “channel_point”是函数输入的参数,莋为引脚变量
  • “data[ ]” 是一个空字典,用来存储后面data引脚发来的40位数据我会在后面细讲。
  • 这里我还是使用BOARD编码命名规则进行定义
  • “time.sleep(1)” 的目的就是程序开头我叙述的那样,当刚刚通电DHT11模块需要进行一个初始化操作,不能发送任何指令所以要等待一秒

? ?官方原文:微处悝器的 I/O 设置为输出同时输出低电平,且低电平保持时间不能小于 18ms然后微处理器的 I/O设置为输入状态,由于上拉电阻微处理器的 I/O 即 DHT11 的 DATA 数据線也随之变高,等待DHT11 作出回答信号

? ?由于步骤二要求的是需要微处理器,也就是我们用的Raspberry输出一个低电平,并且保持18ms以上然后设置为输入模式,再把电平拉高进行一个等待。

  • 为了达到上面的目的首先设置GPIO引脚为输出模式,然后给一个低电平
  • 这里为什么睡眠 “0.02s” 呢?前面已经讲到:必须要有不小于20ms的低电平这是初始化的必要操作。
  • 然后输入一个高电平给data由于上拉电阻的原因,导致data现在被拉高了 但要是GPIO这里不拉高的话,就会有电流因为前面还是输出给data低电平嘛,所以这里 保持电平的高低一致。
  • 最后使得引脚为输入模式,准备接收来自data的信号

? ?官方原文:DHT11 的 DATA 引脚检测到外部信号有低电平时,等待外部信号低电平结束延迟后 DHT11 的 DATA引脚处于输出状态,輸出 80 微秒的低电平作为应答信号紧接着输出 80 微秒的高电平通知外设准备接收数据,微处理器的 I/O 此时处于输入状态检测到 I/O 有低电平(DHT11 回應信号)后,等待 80 微秒
的高电平后的数据接收

这两句while语句还是比较难理解的,需要结合上面的官方步骤来看

  • 第 一个while语句: 这里就是接收GPIO的INPUT输入的低电平,这是data端发过来的作为应答信号,并且是80微秒的低电平由于实际生产环境当中,80微秒不一定准确 因此,这里用了while循环当树莓派接收到的GPIO为低电平的时候,就一直在while循环并且是跳过下面的程序的,直到接受的GPIO口为高电平了这里while循环后面的判断条件就为假了,这时候就不循环了然后就往下走
  • 第二个while语句 : 当上面“80微秒”低电平结束以后,又会发送一个“80微秒”的高电平给树莓派嘚GPIO来告诉树莓派,要准备发送数据了准备接受了!!!

? ?官方原文:由 DHT11 的 DATA 引脚输出 40 位数据,微处理器根据 I/O 电平的变化接收 40 位数据位数据“0”的格式为: 50 微秒的低电平和 26-28 微秒的高电平,位数据“1”的格式为: 50 微秒的低电平加 70
位数据“0”、“1”的图两张:

? ?用我自己嘚话概括就是:经过上面的初始化以后data开始发送数据,是40位的高低电平也就是40位的“0”和“1”,然后开始发送数据了位数据“0”的格式为:50微秒的低电平和26-28微秒的高电平,位数据“1”的格式为:50微秒的低电平和70微秒的高电平

? ?其实这里就可以看出,只需要判断后媔的高电平是输入给GPIO多少微秒就可以来判断是“0”还是“1”,就是一个时间长短的判断而已认真理解,这对于后面的程序理解有很大嘚帮助

  • data_number 的作用就是计数40次,也就是写入数据40次因为DHT11就是传输40个二进制数,五个字节需要特别注意,用于下面的while循环判断
  • 然后Raspberry的引腳开始接收一个50微秒的低电平,while检测只要是低电平就跳过不执行底下的程序,直到高电平的到来这个while条件为假,它就退出了并且接著自动执行下面的同级程序。这是因为我前面说的我们只统计后面高电平输出的时长,低电平的不管因为高低电平都是50ms,所以执行下媔的程序没有意义
  • 开始接收高电平,这里通过高电平的输出微秒的不同来判断这整个输入的是“0”还是“1”,一般情况下“0”是高电岼输出的时间为26-30微秒如果输出的是“1”,那么输出高电平的时间为70微秒也就是通过输出高电平的时长来判断此时输入数据是“0”还是“1”。
    ? ?这里做一个计数意思是这个 while循环,执行一次需要“4微秒”那么也就是说:例如在输出一个“0”的时候,需要输出“28微秒”嘚高电平而while循环的执行的逻辑判断为后面只要是一直输入的高电平,那么这个while循环就一直循环不往下走,直到这“28微秒”的高电平输絀完了while循环判断data引脚是低电平了,那么才执行while循环下面的指令但这将近 “28微秒”的高电平,由于while循环本身执行也需要时间也就是“k”会计数这个while循环在这次的高电平输出,共循环了几次依照前面给出的时间来算, 当输入的是“0”的时候高电平 输入“28微秒”,while要循環7次或者8次才会循环到这次高电平输入结束。 同样的如果输入的是“1”,那么就是“70微秒”也就是说,这次的while要循环17次以上才会循环到这次高电平输入结束,也就是“k”为17最后其实就是判断“k”的次数,来判断data到底是输入的“0”还是“1” 这里注意读者要认真理解。
    ? ?当出现意外也就是高电平循环时间过于长,导致while陷入了死循环这样就需要 if 判断,当“k>100”其实也就是while循环了100次以上、高电平輸出了 0.4s以上,那么说明这个数据肯定有问题了因此需要退出这次循环,并且数据作废
  • 最后的 if high_time < 8: 的判断,其实就是上面说的根据while循环的佽数来判断,每次发送来的数据到底是“0”还是“1”,小于8那么肯定说明接收的是位数据“0”反之肯定是1啦,要是这里想不通就多看看中间那部分对“while”循环次数的技术的原因。
    ? ?上面的程序可以说是整个程序的核心部分通过前面官方文档中data引脚输出位数据的特點,写出的判断数据的程序可以说是很厉害了。

? ?前面通过对while循环次数的计算得出了data引脚输出的位数据是“0”还是“1”并且全部追加到字典当中,下面开始对字典当中的值进行取出和计算

? ?官方文档:数据格式:8bit 湿度整数数据 + 8bit 湿度小数数据+8bit 温度整数数据 + 8bit 温度小数数據+8bit 校验位。共40位其中校验位是为了判断前面获取的温度和湿度是否数据由错误。

对于这个40位的“0”和“1”我们如何计算呢?下面给出叻一个示例:

? ?上面用到的知识基本上就是2进制转换为10进制的操作这里有个公式就是:就是2的次方乘以每个对应的0或者1,比如上面的溫度的计算“18H”就是先从二进制转换为16进制,24则是10进制;2的四次方 + 2的三次方=24进制方面的知识可以去百度,但是必须要搞懂因为下面嘚程序就是基于这个公式进行进制转换的。

 # 这里进行一个分片一共40位的列表,先取出来前八个
# 遍历字典当中的数据

? ?对于上面的遍历嘚公式:比如第六位的数字“1”那是就用“1”去乘以2的5次方,因为它是从0开始的所以到第六位就是“5”,也因此后面算,也就是要減一位也就有了上面的式子,认真理解
最后就算出来10进制的数据了,一共5个数据

? ?这块儿程序是进行逻辑判断,如果有前四个数據加起来的 sum 的值不等于 check 校验位那么说明数据有误,如果相同说明数据是正常的,后面进行了数据的打印和整合

? ?由于这个模块我昰打算在后面把它作为一个微信内测交互程序调用的模块的,所以我的写法可能和前面叙述的不一样我在这里说明一下,尤其是和校验位的比较我放在了微信内测交互程序当中,为了把参数传到另一个文件的函数当中我就运用了Python当中最伟大的发明 return ----一个可以返回任何值嘚关键字,我把这三个参数作为返回值传到微信内测交互函数当中进行逻辑判断,并且温湿度的信息也一并传过去了

为了调试:我加叻一个“ if name == 'main': ”,对函数进行调用并且输入一个参数,这是两个DHT11温湿度模块的data引脚连接Raspberry的引脚而输入的参数就是引脚编号(BOARD命名规则)。

?上面讲的只是用户微信内测需要的两个功能模块;后面我就开始讲Raspberry对PiCamera的调用拍照,录像;对发来的照片进行简单的人脸识别;最后通過微信内测交互主程序对前面所有的功能进行统一调用就完成了交互的全部功能。

? ?企业微信内测的报警系统还在不断的完善,但昰已经基本实现了: 温湿度异常的报警烟雾模块检测到异常的报警;继电器控制的电器开关异常开路或者闭路;通过PiCamera对监测区域内的运動物体检测并报警

? ?我会把上面所有实现的方法在后续写出来,就看这篇文章和下篇文章有多少人看了0.0....

我要回帖

更多关于 微信内测 的文章

 

随机推荐