# Raspberry Pi Pico MicroPython ## 配件 - [x] Pi Pico本體 - [x] 風速感測 https://shop.playrobot.com/products/sensor-dg0753 - [x] 紅外線溫度感測 https://shop.playrobot.com/products/9614baa-non-contact-clinical-thermometer-infrared-temperature-sensor-5cm - [ ] 濕度感測 https://shop.playrobot.com/products/bme680-iaq- - [ ] 紅外線訊號傳送 https://www.digikey.tw/zh/products/detail/everlight-electronics-co-ltd/IRM-3638N3/2693794 - [x] 麵包版 - [ ] 日光燈調光模組 - [ ] 代增加 #### 紅外線控制參考 https://blog.robodock.net/shi-yong-raspberry-pi-zhi-zuo-hong-wai-xian-yao-kong-qi/ ### Part 1 連接Wi-Fi ``` import network import socket from time import sleep from picozero import pico_temp_sensor, pico_led import machine ssid = 'TMD 1.0 (26.3)' password = 'ttun1007' def connect(): #Connect to WLAN wlan = network.WLAN(network.STA_IF) wlan.active(True) wlan.connect(ssid, password) while wlan.isconnected() == False: print('Waiting for connection...') sleep(1) print(wlan.ifconfig()) try: connect() except KeyboardInterrupt: machine.reset() ``` ### Part 2 DataHub感測數據上傳 ``` import datetime import time import string import random import threading from wisepaasdatahubedgesdk.EdgeAgent import EdgeAgent import wisepaasdatahubedgesdk.Common.Constants as constant from wisepaasdatahubedgesdk.Model.Edge import EdgeAgentOptions, MQTTOptions, DCCSOptions, EdgeData, EdgeTag, EdgeStatus, EdgeDeviceStatus, EdgeConfig, NodeConfig, DeviceConfig, AnalogTagConfig, DiscreteTagConfig, TextTagConfig from wisepaasdatahubedgesdk.Common.Utils import RepeatedTimer def on_connected(edgeAgent, isConnected): print("connected !") config = __generateConfig() _edgeAgent.uploadConfig(action = constant.ActionType['Create'], edgeConfig = config) def on_disconnected(edgeAgent, isDisconnected): print("disconnected !") def edgeAgent_on_message(agent, messageReceivedEventArgs): print("edgeAgent_on_message !") def __sendData(): data = __generateData() _edgeAgent.sendData(data) def __generateBatchData(): # send data in batch for high frequency data array = [] for n in range(1, 10): edgeData = EdgeData() for i in range(1, 1 + 1): for j in range(1, 1 + 1): deviceId = 'Device' + str(i) tagName = 'Wind' + str(j) value = random.uniform(0, 100) tag = EdgeTag(deviceId, tagName, value) edgeData.tagList.append(tag) for j in range(1, 1 + 1): deviceId = 'Device' + str(i) tagName = 'Temp' + str(j) value = random.uniform(0, 100) tag = EdgeTag(deviceId, tagName, value) edgeData.tagList.append(tag) for j in range(1, 1 + 1): deviceId = 'Device' + str(i) tagName = 'Humid' + str(j) value = random.uniform(0, 100) tag = EdgeTag(deviceId, tagName, value) edgeData.tagList.append(tag) array.append(edgeData) return array def __generateData(): edgeData = EdgeData() for i in range(1, 1 + 1): for j in range(1, 1 + 1): deviceId = 'Device' + str(i) tagName = 'Wind' + str(j) value = random.uniform(0, 100) tag = EdgeTag(deviceId, tagName, value) edgeData.tagList.append(tag) for j in range(1, 1 + 1): deviceId = 'Device' + str(i) tagName = 'Temp' + str(j) value = random.uniform(0, 100) tag = EdgeTag(deviceId, tagName, value) edgeData.tagList.append(tag) for j in range(1, 1 + 1): deviceId = 'Device' + str(i) tagName = 'Humid' + str(j) value = random.uniform(0, 100) tag = EdgeTag(deviceId, tagName, value) edgeData.tagList.append(tag) return edgeData def __generateConfig(): config = EdgeConfig() deviceConfig = DeviceConfig(id = 'Device1', name = 'Device1', description = 'Device1', deviceType = 'Smart Device1', retentionPolicyName = '') analog = AnalogTagConfig(name = 'Wind', description = 'Wind', readOnly = False, arraySize = 0, spanHigh = 1000, spanLow = 0, engineerUnit = '', integerDisplayFormat = 4, fractionDisplayFormat = 2) deviceConfig.analogTagList.append(analog) analog = AnalogTagConfig(name = 'Temp', description = 'Temp', readOnly = False, arraySize = 0, spanHigh = 1000, spanLow = 0, engineerUnit = '', integerDisplayFormat = 4, fractionDisplayFormat = 2) deviceConfig.analogTagList.append(analog) analog = AnalogTagConfig(name = 'Humid', description = 'Humid', readOnly = False, arraySize = 0, spanHigh = 1000, spanLow = 0, engineerUnit = '', integerDisplayFormat = 4, fractionDisplayFormat = 2) deviceConfig.analogTagList.append(analog) config.node.deviceList.append(deviceConfig) return config _edgeAgent = None edgeAgentOptions = EdgeAgentOptions(nodeId = '1f68db2f-9c63-47ce-a727-fe44aa56d13b') edgeAgentOptions.connectType = constant.ConnectType['DCCS'] dccsOptions = DCCSOptions(apiUrl = 'https://api-dccs-ensaas.education.wise-paas.com/', credentialKey = 'ca9c2354fdb371110d29eda06df41bze') edgeAgentOptions.DCCS = dccsOptions _edgeAgent = EdgeAgent(edgeAgentOptions) _edgeAgent.on_connected = on_connected _edgeAgent.on_disconnected = on_disconnected _edgeAgent.on_message = edgeAgent_on_message _edgeAgent.connect() time.sleep(5) # Waiting for connection to be established for i in range(1, 60): __sendData() time.sleep(1) ``` ### Part 3 IoTHub感測數據上傳 ### Part 4 IoTHub控制數據下載