tobot

  • 2020-11-02
  • 加入了学习《8分钟讲解关于5G的一切》,观看 8分钟讲解关于5G的一切

  • 加入了学习《te》,观看 Connected_flow

  • 加入了学习《te》,观看 ECC-60s

  • 加入了学习《BQ76952 & BQ76942, 3-16S & 3-10S 电池监控器系列讲座 (2)》,观看 2.1 BQ76942/BQ76952 简介

  • 2020-11-01
  • 加入了学习《BQ76952 & BQ76942, 3-16S & 3-10S 电池监控器系列讲座 (2)》,观看 2.2 bq76942/bq76952 器件概述

  • 2020-10-29
  • 回复了主题帖: 注册有礼!一起聊聊机器人的供电需求

  • 2020-09-28
  • 回复了主题帖: 获奖名单|Microchip 安全解决方案系列研讨会前6场研讨会中出席3场及以上

    信息确认无误,谢谢

  • 2020-07-24
  • 回复了主题帖: 2020年ST MEMS传感器创意大赛颁奖礼,致敬敢于挑战&坚持的你们~

    信息确认无误,来领奖哦

  • 回复了主题帖: 获奖名单|Microchip 安全解决方案系列研讨会前6场研讨会中出席3场及以上

    确认信息无误,谢谢!

  • 回复了主题帖: 2020年ST MEMS传感器创意大赛颁奖礼,致敬敢于挑战&坚持的你们~

    恭喜大家,也恭喜我自己

  • 2020-07-22
  • 发表了主题帖: 补充:机房监控项目的下位机设计

    之前《机房环境监控平台》(http://bbs.eeworld.com.cn/thread-1130853-1-1.html)一文中对Sensortile.box描述太少,故补充发文。 本文重点在于介绍,如何从例程中快速建立自己的代码。 在“en.FP-SNS-STBOX1_firmware.zip”例程中,最接近所需功能是“BLESensors”代码。其项目路径如下: “en.FP-SNS-STBOX1_firmware\STM32CubeFunctionPack_STBOX1_V1.3.0\Projects\STM32L4R9ZI-SensorTile.box\Applications\BLESensors\Src” 源代码中已经提供了对所需温度、湿度、磁力数据的提供,其中“main.c”中做少量修改,包括: 定义变量: 实现函数读取环境信息: 以及在main()中调用 对应的头文件main.h增加 另外还需要改动对应的sensor_service.c文件,更新tBleStatus数据,即实现Temp_Update(int16_t Temp)、Hum_Update(uint16_t Hum)、Mag_Update(BSP_MOTION_SENSOR_Axes_t *Mag);篇幅原因,不便在文中贴代码,见上传附件。   仓促完成,错误和疏漏在所难免,见谅。    

  • 回复了主题帖: 获奖名单|Microchip 安全解决方案系列研讨会前6场研讨会中出席3场及以上

    确认无误,谢谢

  • 2020-07-05
  • 发表了主题帖: 机房环境监控平台

    本帖最后由 tobot 于 2020-7-5 21:52 编辑 忽然发现已经最后一天了,卡点提交。 简单介绍一下我的项目: 一、项目背景    大家都知道,温度过高,印刷电路板的结构强度会变弱,温度过低,绝缘材料会变脆,同样会使结构强度变弱;对记录介质而言,温度过高或过低都会导致数据的丢失或存取故障。湿度对计算机设备的影响也同样明显,当相对湿度较高时,水蒸汽在电子元器件或电介质材料表面形成水膜,容易引起电子元器件之间出现形成通路;当相对湿度过低时,容易产生较高的静电电压。可见温湿度对计算机机房设备有着较大的影响。环境电磁场,同样是影响设备是否能稳定工作的重要指标,在电磁兼容EMC领域中,设备本身产生电磁干扰EMI和电磁干扰防范EMP的研究工作也是重中之重。另外现在都提倡绿色环保,因此设备的功耗也是我们经常需要的研究对象。    我希望通过sensortile.box来监控机房环境,分别监控温度、湿度、电磁、功率四个指标。Sensortile.box天生具备温度、湿度、磁场(磁场和电磁干扰应该不是一个玩意吧,我就当它是了)监控功能,自带蓝牙传输,内置TF卡可以记录监控离线时的信息,通过简单编程可以实现功率作为外部数据引入,整合后,向服务器传送,再通过CS或BS模式将多个传感器的信息呈现给客户,实现集中监控,未来可以扩展报警联动、分级管理、大数据分析等模块。   二、作品简介    如背景介绍所述,这个项目相对较大,包括传感器编程、前端开发、报警联动、数据分析等工作。其中传感器编程部分已基本完成,通过sensortile.box采集周边温度、湿度、电磁场信息,通过蓝牙将数据传到某个服务器,但时间有限,引入外部监控机柜功率功能相关功能尚未开发,目前已完成的部分包括监控温度、湿度、磁场。Web大致界面如下:    通过图形化展现可用传感器所在位置,红色表示已内置该传感器,但目前蓝牙未搜索到。对于颜色和图片的优化可以以后再说,大家看在底色(#66ccff)是洛天依小姐姐本命色份上,先凑合着看看吧。    单击可用的传感器,可以看到传感器读取的信息值。    页面是准静态的,30秒自动刷新一次,即时数据需要下端刷新按钮手工刷新,图片用PIL生成。         因为是http方式,所以做多媒体呈现是非常容易的,在这里我只做了图片,但如果有需要,插入视频、声音也很方便。   三、系统框图    构想的使用场景:      因为蓝牙的传输距离非常有限,不太可能覆盖住整个机房,故采用分级管理的方式:下位机(树莓派)读取sensortile.box信息,上传到云服务器,再通过云服务器进行数据整合呈现。    开发时,因为sensortile.box的数量实在太少(只有一个),因此把云功能裁剪了。目前开发的部分已可以使用,优化空间还有不少,已实现的功能和待继续优化开发的结构框图如下:      其中TBD部分的主要包括数据库的搭建,APP界面开发等等,难度不大,只是比较耗时间。   四、各部分功能说明    软件功能流程框图:    Sensortile.box作为传感器的部分,采集相关信息流,通过蓝牙给到系统,系统再通过数据处理,转换成数组形式存储,访问web页面时生成曲线图片,提交给用户。   五、作品源码和简介    引入库文件: 其中flask是http的框架,apschedule是定时任务,bluetooth是蓝牙库,random产生随机数字(用途后续章节介绍),drawpic和readsensor都是我自己写的,分别用于提供曲线图和读取传感器。    自定义传感器数据类:         之所以只使用81个数值,是画图只画81个点就能够很好呈现出变化趋势。    传感器读取:套用例程,监控温度、湿度、磁场。上位机读取传感器可以参考我之前的帖子    Web框架方案:    采用flask方案,其中@app.route('/<sensor>')可以将<sensor>获取sensor的索引号,无需对每个sensor都写一份代码。   运行后服务器界面:   六、视频演示(视频简介+链接)    第一个视频,是我在模拟了有多个传感器(其实是多个蓝牙)的,只有正确读取信息,才会显示结果。曲线只显示81个点,超过81个点后再读入新值的话,会丢弃list的0位数值,保持曲线结果始终最新。考虑到带宽,30秒自动刷新一次网页时才会更新各项数值,如果需要加速更新,可以点击按钮手工强制刷出最新显示值。      第二个视频,是我晚些时候修改了刷新频率,将网页模板中setTimeout('Refresh()',30000);改为了setTimeout('Refresh()',5000);,把页面刷新调整到5秒尝试效果的视频,曲线果然可以连续画出,但页面闪烁得厉害,估计还是python效率导致,考虑用java重写代码可能会好一点。另外我是用生成图片+链接方式读取图片,而不是直接将图片推送到前端,有个写硬盘的过程,也非常影响效率,这点可以再优化。录视频的时候不小心碰到了传感器,所以有个磁场的跳变。。。   七、开发心得    开发中间过程略,共享一下我碰到的几个问题和解决方案吧:  牙死掉的问题:这个似乎无法彻底规避,引用pybluez库,用树莓派读取,平均读五~十分钟就会死一次,用pc读取,概率大幅度降低,但也有出现,不知道是库的原因还是代码错误引入,慢慢研究。 悲催的硬件:最初希望将历史数据存在tf卡上,当读取传感器时,一并读取tf卡获取历史数据,再历史数据来画曲线,但TF卡似乎被我玩坏了,不过计算一下,也正常,按照我平均每5秒写入一次数据,TF卡寿命10万次,也就几天时间……,所以在成品上,画曲线是通过读取实时信息生成的。 Python的低效率:python的效率实在太低,想做成无刷的html5页面,但用flask多次报错,实在没信心继续调,干脆使用server记录多次读取传感器信息再用来画曲线。未来可以尝试用ajax技术做一下部分刷新,也许会好一点。        浏览器兼容:因为在web下涉及多个图片叠加用div标签分层,但IE画<div>内<img>的时候,总有一个蓝色的框,很丑;用QQ浏览器就好得多,事实上,我还尝试了360浏览器,效果与QQ浏览器基本一致。Firefox、谷歌浏览器未测试,但推测功能可用,图象效果未知。        http server:前面我已经说了,选择的是python,为什么不选择更高效率的php呢?虽然我搞得定php画图和页面显示,但我实在不会用php读蓝牙,所以只能忍受python的低执行效率了,考虑换成php做前端,python写数据库,或者整体换成java,有时间可以试试。        门限值:机房环境监控一般都有门限,超过门限应该有告警方案,我的图中采用红色表示异常,白色为正常值,温度和湿度采用的是通信机房的A标:温度20~24℃,湿度45%~65%,磁场没做门限异常告警,统一用蓝色,功率根本就没做,显示都是NA。        多传感器:一般机房肯定不止一个传感器,但我手边只有一个。图片GUI呈现的四个其中3个是假的,读不了数据(我考虑稍晚一点可以做个模拟可读数据的功能)。程序里是通过mac地址区分,固化位置。程序启动时,先通过蓝牙搜索,当蓝牙搜索结果无法匹配到对应mac,传感器图标为红色,匹配成功为绿色,点击图标显示读取传感器的结果,同时将图标带上光环。(实际上就是换一个png图片) 图片刷新:由于缓存的问题,后端生成新图片,在早些时候编写代码时没有注意名称,当前端页面刷新还是以前的旧图,多次刷新才会显示新的结果。找到原因以后,在链接中增加一个随机值,如:rt.sensorTemperaturepic='img/Temperature.png?t='+str(random.random()),使其链接有所区别,每次都能显示出最新图片。      tf卡写入的频率:我们大家都知道tf卡读取是无损的,但写入次数有限,一般说10万次左右,但作为一个长期监控的工具,10万次实在不多,我在试用到一半的时候,就已经把tf卡写坏了,后续实验都没该tf卡。如果真如我设想,平素数据都记录在本地tf卡,可以考虑每10分钟写入一次,大约用1年做1次硬件替换。 使用多线程方案,后台需要多次读取各传感器,而python的定时器timer效率实在让人难以忍受,而且似乎会不断浪费资源,估计是我代码中没有释放。因此直接采用apscheduler,也很简单。   以上是我开发的小小感悟,在此抛一小砖,望大家不吝赐玉。虽已结题,但后续如有新心得,将继续在本站发帖!          

  • 2020-07-03
  • 加入了学习《基于Sensortile.box的童姿提醒器》,观看 作品展示-童姿提醒器

  • 2020-06-29
  • 加入了学习《什么是 I2C 设计工具?》,观看 I2C 设计工具

  • 2020-06-25
  • 回复了主题帖: 关于树莓派通过蓝牙连接SensorTile.box

    嗯,正在尝试,谢谢。。。

  • 2020-06-23
  • 回复了主题帖: 关于树莓派通过蓝牙连接SensorTile.box

    littleshrimp 发表于 2020-6-19 10:43 试试手机连接是否正常
    如果出现树莓派不能连的话,手机也搜不到对应设备。但手机不会主动把蓝牙弄死,用电脑或者树莓派把蓝牙弄死以后,只要sensortile.box重启就能恢复。我最近几天从最初的hex一步步试出来的,估计我用树莓接sensortile.box只能考虑串口或者读文件了。

  • 2020-06-19
  • 发表了主题帖: 关于树莓派通过蓝牙连接SensorTile.box

    打开系统蓝牙 sudo service bluetooth start 进入bluetoothctl Sudo bluetoothctl 输入以下命令 power on agent on default-agent scan on pair C0:50:27:32:09:33 连接成功以后 [bluetooth]# pair c0:50:27:32:09:33 Attempting to pair with C0:50:27:32:09:33 [CHG] Device C0:50:27:32:09:33 Connected: yes [NEW] Primary Service         /org/bluez/hci0/dev_C0_50_27_32_09_33/service0001         00001801-0000-1000-8000-00805f9b34fb         Generic Attribute Profile [NEW] Characteristic         /org/bluez/hci0/dev_C0_50_27_32_09_33/service0001/char0002         00002a05-0000-1000-8000-00805f9b34fb         Service Changed [NEW] Descriptor         /org/bluez/hci0/dev_C0_50_27_32_09_33/service0001/char0002/desc0004         00002902-0000-1000-8000-00805f9b34fb         Client Characteristic Configuration [NEW] Primary Service         /org/bluez/hci0/dev_C0_50_27_32_09_33/service000c         00000000-000e-11e1-9ab4-0002a5d5c51b         Vendor specific [NEW] Characteristic         /org/bluez/hci0/dev_C0_50_27_32_09_33/service000c/char000d         00000001-000e-11e1-ac36-0002a5d5c51b         Vendor specific [NEW] Descriptor         /org/bluez/hci0/dev_C0_50_27_32_09_33/service000c/char000d/desc000f         00002902-0000-1000-8000-00805f9b34fb         Client Characteristic Configuration [NEW] Characteristic         /org/bluez/hci0/dev_C0_50_27_32_09_33/service000c/char0010         00000002-000e-11e1-ac36-0002a5d5c51b         Vendor specific [NEW] Descriptor         /org/bluez/hci0/dev_C0_50_27_32_09_33/service000c/char0010/desc0012         00002902-0000-1000-8000-00805f9b34fb         Client Characteristic Configuration [NEW] Primary Service         /org/bluez/hci0/dev_C0_50_27_32_09_33/service0013         00000000-0003-11e1-9ab4-0002a5d5c51b         Vendor specific [NEW] Characteristic         /org/bluez/hci0/dev_C0_50_27_32_09_33/service0013/char0014         00000100-0001-11e1-ac36-0002a5d5c51b         Vendor specific [NEW] Descriptor         /org/bluez/hci0/dev_C0_50_27_32_09_33/service0013/char0014/desc0016         00002902-0000-1000-8000-00805f9b34fb         Client Characteristic Configuration [NEW] Primary Service         /org/bluez/hci0/dev_C0_50_27_32_09_33/service0017         00000000-0001-11e1-9ab4-0002a5d5c51b         Vendor specific [NEW] Characteristic         /org/bluez/hci0/dev_C0_50_27_32_09_33/service0017/char0018         00020000-0001-11e1-ac36-0002a5d5c51b         Vendor specific [NEW] Descriptor         /org/bluez/hci0/dev_C0_50_27_32_09_33/service0017/char0018/desc001a         00002902-0000-1000-8000-00805f9b34fb         Client Characteristic Configuration   而且可以通过info看到 [TILEBOX]# info Device C0:50:27:32:09:33 (public)         Name: TILEBOX         Alias: TILEBOX         Paired: yes         Trusted: yes         Blocked: no         Connected: yes         LegacyPairing: no         UUID: Vendor specific           (00000000-0001-11e1-9ab4-0002a5d5c51b)         UUID: Vendor specific           (00000000-0003-11e1-9ab4-0002a5d5c51b)         UUID: Vendor specific           (00000000-000e-11e1-9ab4-0002a5d5c51b)         UUID: Generic Access Profile    (00001800-0000-1000-8000-00805f9b34fb)         UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb) 很可惜,这个连接不稳定,很快出现 Failed to pair: org.bluez.Error.AuthenticationFailed [CHG] Device C0:50:27:32:09:33 Connected: no 出现这个问题后,再次连接不成功,即使重启树莓派也无效,但此时只需要重启SensorTile.Box就可以再次连接。 原因暂不明,怀疑是我手上的SensorTile.Box蓝牙不稳定造成。

  • 2020-06-17
  • 回复了主题帖: 获奖名单|6月10日有奖直播 | 微软 Azure Sphere助力稳定,安全和灵活的物联网解决...

    信息确认无误,谢谢。

  • 2020-06-03
  • 发表了主题帖: 使用python连接SensorTile.box

    在尝试了APP之后,发现SensorTile.box有实时优势,那就是可以通过蓝牙连接,而不是每次取完数据之后从TF卡里面把数据拿出来分析;同时,如果没有实时的蓝牙连接,TF卡里面的数据也足以保证数据记录的完整性,两者相辅相成,互为比较。在这里我尝试用python获取蓝牙数据。首先在笔记本上编写python代码实现tile.box的查找,如下: import time from bluetooth import * alreadyFound = [] def findDevs():     foundDevs = discover_devices(lookup_names=True)     for (addr, name) in foundDevs:         if (addr not in alreadyFound) and (name=='TILEBOX'):             alreadyFound.append(addr) if __name__=='__main__':     while alreadyFound == []:         findDevs()         time.sleep(5)     print(alreadyFound) 执行后, Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:20:19) [MSC v.1925 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license()" for more information. >>> ================ RESTART: D:\bluetooth\tilebox.py ================ ['C0:50:27:32:09:33'] >>> 接下来尝试把代码移植到树莓派上,首先需要在树莓派上安装蓝牙组件,sudo apt-get install libbluetooth-dev,安装完成以后,可以通过命令行查看蓝牙设备 pi@raspberrypi:~$ hciconfig hci0:   Type: Primary  Bus: UART         BD Address: DC:A6:32:13:8A:2B  ACL MTU: 1021:8  SCO MTU: 64:1         UP RUNNING         RX bytes:806 acl:0 sco:0 events:52 errors:0         TX bytes:2515 acl:0 sco:0 commands:52 errors:0 pi@raspberrypi:~$ hcitool dev Devices:         hci0    DC:A6:32:13:8A:2B 本机的蓝牙地址是DC:A6:32:13:8A:2B,激活蓝牙设备 pi@raspberrypi:~$ service bluetooth start pi@raspberrypi:~$ sudo hciconfig hci0 up pi@raspberrypi:~$ hcitool scan 很可惜,找不到tile.box,所以代码移植肯定是暂不成功的。后续准备从两方面开展: 1、使用电脑调试信息获取; 2、调通树莓派的蓝牙。

统计信息

已有78人来访过

  • 芯币:542
  • 好友:3
  • 主题:18
  • 回复:81
  • 课时:--
  • 资源:--

留言

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


现在还没有留言