我自己最喜欢的模拟网络

本文介绍了一个项目,使用RaspberryPiPico和W5100S以太网模块,通过ADC读取按钮输入,实现在按下时自动切换浏览四个预设网站。作者提供了硬件连接、MicroPython固件配置和服务器端代码实现。
W5100S + PoE

转发: My own analog web favorites

项目介绍

这次,我参与了一个项目,可以让我一键打开我想要的网站。

我选择了四个我经常去的网站。

硬件

我连接了按钮和可变电阻,如下所示。 这是一个任何人都可以轻松完成的模块。

我做了一个简单的按钮。 上拉3.3V。

用作 MCU 的板是 Raspberry Pi Pico 板。 这是一块可以轻松产生令人难以置信的性能的主板。

它连接到 Pico 板。 我用硅完成了它以固定它。Pico板连接到W5100S板。 这是使用以太网的最佳方式。

以太网

W5100S用于以太网通信。 您只需使用下面的链接即可使用以太网。

W5100S-EVB-Pico | WIZnet Document System

固件

Raspberry Pi Documentation - MicroPython

我是在microPython环境中完成的。 为此需要执行一些简单的任务。 幸运的是,上面的链接很容易解释它。

现在,让我们开始固件配置。

from usocket import socket
from machine import Pin,SPI,ADC
import network
import time

button_pin1 = machine.Pin(27, machine.Pin.IN, machine.Pin.PULL_UP)
adc = machine.ADC(28)

导入所需的库并设置 GPIO 和 ADC 引脚。

def client_loop(query):
    s = socket()
    s.connect(('192.168.0.4', 5000))  # Destination IP Address
    #data = query.encode('utf-8')
    query_str = str(query)
    query_bytes = query_str.encode('utf-8')
    s.send(query_bytes)
    s.close()

然后它创建一个函数来将设备写入为客户端。 当然,这些示例也在 WIZnet Git 上共享。

if button_pin1.value() == 0:
                analog_value = adc.read_u16()
                print("Button 1 pressed. Sending data: %d" % analog_value)
                client_loop(analog_value)
                time.sleep(3)

现在,在主语句中,当按下按钮时,进入运行状态。 只需按下按钮即可读取并发送当前 ADC 值。

Raspberry Pi Pico 的 ADC 是 12 位。 你可以选择Vref,所以我认为按照你想要的设计它会很好。

我将其设置为3.3V,通过电压分配读取1.5至3.3V,并使用ADC。

现在这是服务器端固件。

from socket import *
import webbrowser
import time

chrome_path = "C:/Program Files/Google/Chrome/Application/chrome.exe"

url1 = "https://maker.wiznet.io/"
url2 = "https://github.com/"
url3 = "https://www.google.com"
url4 = "https://www.raspberrypi.com/news/page/3/"

确定要打开的浏览器路径,并将网站保存到变量中。

            try:
                data = connectionSock.recv(1024)
                if not data:
                    break
                print(f"recv data: {data.decode('utf-8')}")

                data_int = int(data.decode('utf-8'))

                url = url1
                if data_int < 57402:
                    url = url2
                    if data_int < 49269:
                        url = url3
                        if data_int < 41136:
                            url = url4

                webbrowser.register('chrome', None, webbrowser.GenericBrowser(chrome_path))
                webbrowser.get('chrome').open(url)
                time.sleep(3)
                print("server closed1.")
            except ConnectionResetError:
                print("Client disconnected: {addr}")
                break

然后根据你收到的ADC值编写代码打开网站。

完成!

文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值