W5100S-EVB-PICO + ThingsCloud

部署运行你感兴趣的模型镜像
W5100S-EVB-PICO + ThingsCloud

转发: W5100S-EVB-PICO + ThingsCloud


项目介绍

故事

这是一个让我学习如何与物联网平台通信的应用程序。

在我看来,我认为这个物联网平台并不难使用,而且它有一些很好的功能,可以让我轻松地远程控制模块。

由于我在使用 CircuitPython 和 W5100S-EVB-PICO 方面有一些良好的经验,因此我用它与中国一个名为 ThingsCloud 的物联网平台进行通信。

这是我从中文博客上找到的一个中文物联网平台。

它包括与物联网平台通信的不同类型的通信方法

对于此应用程序,我使用 MQTT 来与 ThingsCloud 进行通信。

要了解有关该物联网平台的更多信息,请参阅以下链接。

ThingsCloud - 物联网云平台 - 让万物互联更简单

结构:

ThingsCloud Connection Structure

上图是我为这个IOT应用程序制作的连接图。

正如您所看到的,这个应用程序非常简单。

这样做的目的是展示使用 ThingsCloud 监控设备是多么容易。

因此,我只是添加了一个输入和一个输出模块来展示与 ThingsCloud 通信的最基本设置

将数据输入到 ThingsCloud:

DHT22 - 这是最简单、最基本的温度和湿度上传模块。 Adafruit 有一个很好的库和示例代码,让我可以轻松地将这些信息上传到平台。

从 ThingsCloud 输出数据:

LED 模块 - 为了轻松地通过 ThingsCloud 展示对设备的控制,最好的方法是打开或关闭 LED 灯。

ThingsCloud - 设置物联网平台:

由于这是一个来自中国的物联网平台,我想我需要展示如何在 ThingsCloud 中设置物联网平台。

ThingsCloud 是一个在线物联网平台,不需要在您的 PC 上安装任何东西,并且有免费版本用于测试该平台。

它还具有网页和手机APP,用于与W5100S-EVB-PICO进行远程通信。

第 1 步:创建帐户 - 只需提供您的电子邮件地址和密码即可。

邮件确认后即可在该平台创建账户。

ThingsCloud Registeration

第 2 步:创建设备

对于创建设备来说,创建设备是一个非常简单的过程。 它只需要以下简单的步骤。

a) 选择服务器 - 它将有海外服务器(付费版本)

b) 创建项目 - 这允许用户将所有设备组合到一个项目中

c) 创建设备 - 该项目的特定设备。

Select the server (a) and Create a project (b)

进入项目后,进入“设备->所有设备->创建新设备(右侧蓝色按钮)

Create a new device (c)

步骤 3:找到与 ThingsCloud 通信的连接详细信息。

创建设备后,您可以转到连接部分来收集所有详细信息。

Device's Connection page

进入设备部分后,请选择我突出显示的连接选项卡。

AccessToken 将是您的 MQTT 登录用户名。

ProjectKey 将是您的 MQTT 登录密码。

从MQTT部分,它显示了与ThingsCloud通信的登录地址和端口号。

有了这些信息,我就可以轻松登录这个物联网平台。

如果您想了解更多有关登录方法的信息,可以观看 ThingsCloud 制作的视频链接。

Video Link

编程-主要代码

获得这些信息后,我只需要将所有这些信息提取到我的代码中即可。

WIZnet 和 adafruit 为我创建了很多不同类型的代码,以便我以简单的方式与 MQTT 服务器进行通信。 

通过使用 MQTT 代码,我只需将信息添加到我的秘密文件中并登录 ThingsCloud MQTT 服务器。

代码:

mqtt_client = MQTT.MQTT(
    broker="gz-3-mqtt.iot-api.com",
    username=secrets["thingscloud_user"], #AccessToken 
    password=secrets["thingscloud_pass"], #ProjectKey
    client_id=secrets["thingscloud_id"], #Random name to pass the codes
    is_ssl=False,                        #Not in SSL (Port 1883)
)

# Connect to ThingsCloud
print("Attempting to connect to %s" % mqtt_client.broker)
mqtt_client.connect()

创建连接设置后,我只需要找到正确的渠道来发布和订阅。

代码:

mqtt_attributes = "attributes" #Publish channels to ThingsCloud
mqtt_push = "attributes/push" #Subscribe channels to receive data from ThingsCloud

#Subscribe the receive data channel 
print("Subscribing to %s" % mqtt_push)
mqtt_client.subscribe(mqtt_push)

#Using loop function in the while loop to collect data from ThingsCloud
mqtt_client.loop()

#Publish data to publish channel (Inside While Loop)
print("Publishing to %s" % mqtt_attributes)
mqtt_client.publish(mqtt_attributes, data)

为了使该应用程序更易于理解和呈现,我添加了代码以允许 W5100S-EVB-PICO 将温度和湿度数据上传到 ThingsCloud。 我什至添加了消息函数(MQTT 接收数据)中的代码来控制我的 LED 模块。

对于与ThingsCloud的通信,需要以JSON格式进行处理。 因此,我设置了代码以 JSON 格式与平台进行通信。

代码:

#Message function Setup
def message(client, topic, message):
    # Method callled when a client's subscribed feed has a new value.
    print("New message on topic {0}: {1}".format(topic, message))
    if message.find('"relay"') > 0: #find relay - The name for the switch
        if message.find("true") > 0: #find true - It means turn ON LED
            LED_light.value = 1
        elif message.find("false") > 0: #find false - It means turn OFF LED
            LED_light.value = 0

# Setup the callback methods above - Required for MQTT communication in circuitpython
mqtt_client.on_message = message

#Subscribe the receive data channel 
print("Subscribing to %s" % mqtt_push)
mqtt_client.subscribe(mqtt_push)

while True:
    mqtt_client.loop()
    try:
        # Print the values to the serial port
        temperature_c = dhtDevice.temperature #collect temperature from DHT22

        humidity = dhtDevice.humidity #collect humidity from DHT22
        data = '{'+'"temperature": {},"humidity": {}'.format(temperature_c,humidity)+'}'    #Set into correct JSON format before sending to ThingsCloud
        
        #Send the values to ThingsCloud
        print("Publishing to %s" % mqtt_attributes)
        mqtt_client.publish(mqtt_attributes, data)
        
        time.sleep(0.5)
    except RuntimeError as error:
        # Errors happen fairly often, DHT's are hard to read, just keep going
        print(error.args[0])
        time.sleep(2.0)
        continue
    except Exception as error:
        dhtDevice.exit()
        raise error

Display on Mobile APP

还有几个步骤可以使这些信息显示在移动应用程序上。

1.安装thingsx应用程序。 它有IOS和Android版本。 (细节

2.平台设置。 创建设备类型并将设备连接到该类型以实现完全控制

3.添加与我上传到平台同名的变量

4.设置手机APP页面显示

1.安装thingsX应用程序:

Thingsx APP是该物联网平台的手机应用程序。 安装应用程序后,您只需提供一些登录详细信息。

a) 创建一个用户APP - 这是为了管理用户使用该项目的特定功能。 请选择 thingsX 并为此用户应用程序命名。

位置:应用程序 -> 用户应用程序 -> 创建新的用户应用程序(蓝色按钮)

选择 ThingsX:

Part 2: Find ThingsX

创建一个名称并创建这个应用程序

Part 3: Create a User application

创建用户应用程序后,您将获得第一个登录信息:AppID。

AppID

要创建用户帐户,请转到应用程序 -> 用户帐户 -> 创建新用户帐户(蓝色按钮)

Create a account for the mobile APP

提供用户名和密码以创建帐户。

Username and password

最后,您就可以登录ThingsX APP了。

AppID / Username / Password

登录页面

Logged In Page

2.平台设置-创建设备类型

创建设备类型正在尝试将平台与移动应用程序连接起来。

为了创建此设备类型,我需要转到设备 -> 设备类型 -> 创建新的设备类型(蓝色按钮)

Part 1: Find the way to create a device type

之后,我输入我的名字并使用选择以太网与设备进行通信

创建设备类型后,我需要将通信的设备添加到该设备类型中。

Add device Type

3.为设备类型添加变量

为了允许从设备到设备类型的数据,请确保两个部分的变量相同。

Device Type variables

Device variables

变量已设置到设备类型部分的上传和下载部分。

上传(橙色)-> 温度和湿度

下载(蓝色)->继电器(控制LED灯)

4. 移动应用程序显示设置

对于本部分,我需要转到设备类型 -> 应用程序设置 -> 编辑设备显示

Open device display

进入设置页面后,我可以将任何小部件添加到页面中,它将显示在移动应用程序上。

Edit Display

对于本部分,您可以按照我从 ThingsCloud 学习的示例视频进行操作。

感谢您的阅读。 :)

文件

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### W5100S-EVB 技术信息与替代方案 W5100S 是一款由 WIZnet 提供的单芯片以太网控制器,内置硬件 TCP/IP 协议栈,支持高达 4 个独立的 socket 连接。它的 EVB(Evaluation Board)提供了完整的开发平台,方便工程师快速实现网络功能集成[^1]。 #### 替代芯片分析 针对 W5100S 及其开发板的功能需求,市场中有若干种替代方案可供选择: ##### 1. **ENC28J60** - ENC28J60 是 Microchip 推出的一款经济高效的以太网控制器。 - 它通过 SPI 接口与主机微控制器通信,并提供基础的 MAC 和 PHY 功能。 - 不同于 W5100S 的全硬件协议栈,ENC28J60 需要软件来管理大部分 TCP/IP 协议堆栈,因此对 MCU 性能有一定要求[^2]。 ##### 2. **LAN9252** - LAN9252 是 SMSC(现为 Microchip Technology Inc.)推出的支持 USB 和 SPI 接口的以太网控制器。 - 具备强大的硬件加速能力,能够减轻主处理器负担。 - 支持多达 7 个独立的 socket,远超 W5100S 的 4 个 socket 数量限制。 - 更高的吞吐能力和更低的延迟使得它非常适合高负载应用场景[^3]。 ##### 3. **DP83848** - DP83848 是 Texas Instruments 出品的一种独立的以太网 PHY 装置。 - 主要用于补充不具备内部 PHY 的以太网 MAC 控制器。 - 当搭配具有强大计算资源的 SoC 使用时,可以达到极佳的成本效益平衡点[^4]。 --- ### 开发板相关资料 关于 W5100S-EVB 的具体文档和技术细节可以从官方渠道获取,主要包括但不限于以下内容: - **Datasheet**: 描述了模块的工作原理、引脚分配、电气规格等内容。 - **User Manual**: 提供详细的设置指南和典型应用案例说明。 - **Firmware Example Code**: 包含各种主流操作系统下的驱动程序实例代码片段,帮助开发者迅速上手。 下面给出一段简单的 Python 示例代码演示如何利用 Sockets API 同 W5100S 类似设备交互: ```python import socket def create_socket_connection(ip_address='192.168.1.1', port=80): try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_address = (ip_address, port) print(f'Connecting to {server_address}') sock.connect(server_address) message = 'GET / HTTP/1.1\r\nHost: {}\r\nConnection: close\r\n\r\n'.format(ip_address).encode('utf-8') sock.sendall(message) data_received = '' while True: chunk = sock.recv(16) if not chunk: break data_received += chunk.decode() print(data_received) sock.close() except Exception as e: print(e) create_socket_connection() ``` 此段代码展示了创建一个基本的客户端套接字并发送请求的过程。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值