[讨论分享]阿里云环境信息显示大屏 精华

5532浏览
查看: 5532|回复: 4

[讨论分享] 阿里云环境信息显示大屏

[复制链接]
本帖最后由 云天 于 2022-3-26 21:43 编辑

【项目背景】
FriMarch-202203256991..png
将由传感器获取的室内信息,通过屏幕显示。如温湿度、光照强度、噪音分贝等。
SatMarch-202203262033..png
主板使用LattePanda配合7英寸触摸屏与10英寸IPS高分辨率显示屏,通过阿里云IOT,与笔记本电脑可同步显示。
【LattePanda 拿铁熊猫 Win10 开发板】
FriMarch-202203251376..png
LattePanda是市面上首款支持完整Windows10操作系统的单板计算机。此版LattePanda预装Windows 10企业版LTSB操作系统,附带正版激活码,专为工业领域应用设计。LattePanda板载Intel Cherry Trail Z8350四核处理器,极小的体积却有强悍的性能。拥有USB2.0、USB3.0、3.5mm音频、HDMI等常用PC接口,自带蓝牙、WIFI模块,给您带来无比便捷的连接体验。LattePanda板载Arduino芯片,兼容数千种传感器及外设,无缝掌控物理世界。
【硬件组装】
FriMarch-202203253305..png
FriMarch-202203256609..png

【开机】

FriMarch-202203252105..png

FriMarch-202203252005..png
【登陆DF论坛】
FriMarch-202203257720..png

【传感器连接电路图】
SatMarch-202203262361..png

SatMarch-202203264479..png
【阿里云 IOT配置】
1、新建项目:https://studio.iot.aliyun.com/projects
WedMarch-202203231566..png

2、新建WEB应用:https://studio.iot.aliyun.com/p/a123NLToMdCVQRNF/project/detail
WedMarch-202203237134..png

WedMarch-202203233198..png
3、新建大屏

WedMarch-202203237909..png
4、大屏组件样式调整:https://studio.iot.aliyun.com/we ... 20CTqKwdWuj8tF/edit
WedMarch-202203232089..png
大屏美化

FriMarch-202203255236..png

5、创建产品
WedMarch-202203238721..png
6、添加设备
WedMarch-202203238561..png

7、获取Python程序的参数:https://studio.iot.aliyun.com/project/a123NLToMdCVQRNF/devices/a1RIQsYJqq8/LattePanda__class/1
options = {
    'productKey':'你的productKey',
    'deviceName':'你的deviceName',
    'deviceSecret':'你的deviceSecret',
    'regionId':'cn-shanghai'
}



FriMarch-202203253642..png

FriMarch-202203258337..png
8、功能定义:https://iot.console.aliyun.com/p ... RIQsYJqq8?current=8
WedMarch-202203232389..png
WedMarch-202203239873..png

9、数据源
WedMarch-202203233729..png
10、设备模拟器:https://studio.iot.aliyun.com/pr ... LattePanda__class/1


WedMarch-202203239168..png
11、大屏预览


FriMarch-202203255520..png


13、Python设备接入:https://www.yuque.com/cloud-dev/iot-tech/rz6fpl?spm=a2c6h.12873639.0.0.30bcb47frAT3ro
测试程序
  1. # -*- coding: utf-8 -*-
  2. import paho.mqtt.client as mqtt
  3. import time
  4. import hashlib
  5. import hmac
  6. import random
  7. import json
  8. options = {
  9.     'productKey':'a1RIQsYJqq8',
  10.     'deviceName':'LattePanda__class',
  11.     'deviceSecret':'c86bdcbdee4feec23ef6db01af0898e0',
  12.     'regionId':'cn-shanghai'
  13. }
  14. HOST = options['productKey'] + '.iot-as-mqtt.'+options['regionId']+'.aliyuncs.com'
  15. PORT = 1883
  16. PUB_TOPIC = "/sys/" + options['productKey'] + "/" + options['deviceName'] + "/thing/event/property/post";
  17. # The callback for when the client receives a CONNACK response from the server.
  18. def on_connect(client, userdata, flags, rc):
  19.     print("Connected with result code "+str(rc))
  20.     # client.subscribe("the/topic")
  21.    
  22. # The callback for when a PUBLISH message is received from the server.
  23. def on_message(client, userdata, msg):
  24.     print(msg.topic+" "+str(msg.payload))
  25. def hmacsha1(key, msg):
  26.     return hmac.new(key.encode(), msg.encode(), hashlib.sha1).hexdigest()
  27. def getAliyunIoTClient():
  28.         timestamp = str(int(time.time()))
  29.         CLIENT_ID = "paho.py|securemode=3,signmethod=hmacsha1,timestamp="+timestamp+"|"
  30.         CONTENT_STR_FORMAT = "clientIdpaho.pydeviceName"+options['deviceName']+"productKey"+options['productKey']+"timestamp"+timestamp
  31.         # set username/password.
  32.         USER_NAME = options['deviceName']+"&"+options['productKey']
  33.         PWD = hmacsha1(options['deviceSecret'],CONTENT_STR_FORMAT)
  34.         client = mqtt.Client(client_id=CLIENT_ID, clean_session=False)
  35.         client.username_pw_set(USER_NAME, PWD)
  36.         return client
  37. if __name__ == '__main__':
  38.         client = getAliyunIoTClient()
  39.         client.on_connect = on_connect
  40.         client.on_message = on_message
  41.         
  42.         client.connect(HOST, 1883, 300)
  43.         client.loop_start()
  44.         while True:
  45.                 time.sleep(5)
  46.                 payload_json = {
  47.                 'id': int(time.time()),
  48.                 'params': {
  49.                         'temperature': random.randint(20, 30),
  50.             'notice': "测试信息"+str(random.randint(40, 50)),
  51.                         'SoundDecibelValue':random.randint(10, 60),
  52.                         'LightLux':random.randint(10, 60),
  53.                         'Humidity':random.randint(10, 60)/100
  54.                 },
  55.             'method': "thing.event.property.post"
  56.         }
  57.                 print('send data to iot server: ' + str(payload_json))
  58.                 client.publish(PUB_TOPIC,payload=str(payload_json),qos=1)
  59.                
复制代码

14、WEB应用预览


【编写Arduino程序】

  1. #include <dht11.h>
  2. dht11 DHT;
  3. #define DHT11_PIN 9
  4. String str1;
  5. void setup()
  6. {
  7.   Serial.begin(115200);
  8.   pinMode(DHT11_PIN, INPUT);
  9. }
  10. void loop()
  11. {     int chk;
  12.       //Serial.print("DHT11, \t");
  13.       chk = DHT.read(DHT11_PIN);    // READ DATA
  14.       int light=analogRead(A0);
  15.       int sound=analogRead(A2);
  16.       switch (chk){
  17.         case DHTLIB_OK:
  18.                     //Serial.print("OK,\t");
  19.                     break;
  20.         case DHTLIB_ERROR_CHECKSUM:
  21.                     //Serial.print("Checksum error,\t");
  22.                     break;
  23.         case DHTLIB_ERROR_TIMEOUT:
  24.                     //Serial.print("Time out error,\t");
  25.                     break;
  26.         default:
  27.                     //Serial.print("Unknown error,\t");
  28.                     break;
  29.       }
  30.      // DISPLAT DATA
  31.       //Serial.write();
  32.           str1=String(DHT.humidity);
  33.           str1.concat(",");
  34.           str1.concat(String(DHT.temperature));
  35.           str1.concat(",");
  36.           str1.concat(String(sound));
  37.           str1.concat(",");
  38.           str1.concat(String(light));
  39.          
  40.           Serial.println(str1);
  41.       delay(3000);
  42.       
  43.    
  44. }
复制代码

【编写Python程序】
  1. import serial
  2. # -*- coding: utf-8 -*-
  3. import paho.mqtt.client as mqtt
  4. import time
  5. import hashlib
  6. import hmac
  7. import random
  8. import json
  9. ser = serial.Serial('COM4', 115200, timeout=0)
  10. options = {
  11.     'productKey':'a1RIQsYJqq8',
  12.     'deviceName':'LattePanda__class',
  13.     'deviceSecret':'c86bdcbdee4feec23ef6db01af0898e0',
  14.     'regionId':'cn-shanghai'
  15. }
  16. HOST = options['productKey'] + '.iot-as-mqtt.'+options['regionId']+'.aliyuncs.com'
  17. PORT = 1883
  18. PUB_TOPIC = "/sys/" + options['productKey'] + "/" + options['deviceName'] + "/thing/event/property/post";
  19. # The callback for when the client receives a CONNACK response from the server.
  20. def on_connect(client, userdata, flags, rc):
  21.     print("Connected with result code "+str(rc))
  22.     # client.subscribe("the/topic")
  23.    
  24. # The callback for when a PUBLISH message is received from the server.
  25. def on_message(client, userdata, msg):
  26.     print(msg.topic+" "+str(msg.payload))
  27. def hmacsha1(key, msg):
  28.     return hmac.new(key.encode(), msg.encode(), hashlib.sha1).hexdigest()
  29. def getAliyunIoTClient():
  30.         timestamp = str(int(time.time()))
  31.         CLIENT_ID = "paho.py|securemode=3,signmethod=hmacsha1,timestamp="+timestamp+"|"
  32.         CONTENT_STR_FORMAT = "clientIdpaho.pydeviceName"+options['deviceName']+"productKey"+options['productKey']+"timestamp"+timestamp
  33.         # set username/password.
  34.         USER_NAME = options['deviceName']+"&"+options['productKey']
  35.         PWD = hmacsha1(options['deviceSecret'],CONTENT_STR_FORMAT)
  36.         client = mqtt.Client(client_id=CLIENT_ID, clean_session=False)
  37.         client.username_pw_set(USER_NAME, PWD)
  38.         return client
  39. if __name__ == '__main__':
  40.         client = getAliyunIoTClient()
  41.         client.on_connect = on_connect
  42.         client.on_message = on_message
  43.         
  44.         client.connect(HOST, 1883, 300)
  45.         client.loop_start()
  46.         while True:
  47.                 time.sleep(2)
  48.                 count = ser.inWaiting()
  49.                 if count > 0:
  50.                   data = ser.read(count)
  51.                   if data != b'':
  52.                     data=str(data,"utf-8")
  53.                     data=data.replace("\r\n","")
  54.                     data=data.split(",")
  55.                     payload_json = {
  56.                 'id': int(time.time()),
  57.                 'params': {
  58.                         'temperature': float(data[1]),
  59.             'notice': "测试信息"+str(random.randint(40, 50)),
  60.                         'SoundDecibelValue':int(data[2]),
  61.                         'LightLux':int(data[3]),
  62.                         'Humidity':float(data[0])/100
  63.                 },
  64.             'method': "thing.event.property.post"
  65.         }
  66.                     print('send data to iot server: ' + str(payload_json))
  67.                     client.publish(PUB_TOPIC,payload=str(payload_json),qos=1)
  68.                
复制代码
【显示数据】
SatMarch-202203268445..png
【演示视频】






dbc0301  中级技匠

发表于 2022-3-29 13:29:26

做的挺好的,不过用这么贵的开发板做这个感觉有点浪费,不如再搞点智能语音助手什么的放上去。
回复

使用道具 举报

云天  高级技匠
 楼主|

发表于 2022-3-29 16:34:38

dbc0301 发表于 2022-3-29 13:29
做的挺好的,不过用这么贵的开发板做这个感觉有点浪费,不如再搞点智能语音助手什么的放上去。 ...

正在思考,用这个做点什么,您的建议很好!
回复

使用道具 举报

盐焗海盐  见习技师

发表于 2022-4-2 20:46:44

不错不错,国产的就是好用。
回复

使用道具 举报

河岸上的鱼  见习技师

发表于 2022-4-7 12:31:16

这个可以学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2022 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail