Added code for Lab 9
This commit is contained in:
parent
4c5757b3cc
commit
5f40f4c866
24 changed files with 796 additions and 0 deletions
13
Lab09/MicroPython/Code/blink.py
Normal file
13
Lab09/MicroPython/Code/blink.py
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
import machine
|
||||
|
||||
import time
|
||||
|
||||
led = machine.Pin("LED", machine.Pin.OUT) #configure GPIO-15 Pin as an output pin and create and led object for Pin class
|
||||
|
||||
while True:
|
||||
led.value(True) #turn on the LED
|
||||
time.sleep(1) #wait for one second
|
||||
led.value(False) #turn off the LED
|
||||
time.sleep(1) #wait for one second
|
||||
|
||||
|
||||
12
Lab09/MicroPython/Code/blink15.py
Normal file
12
Lab09/MicroPython/Code/blink15.py
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
import machine
|
||||
|
||||
import time
|
||||
|
||||
led = machine.Pin(15, machine.Pin.OUT) #configure GPIO-15 Pin as an output pin and create and led object for Pin class
|
||||
|
||||
while True:
|
||||
led.value(True) #turn on the LED
|
||||
time.sleep(1) #wait for one second
|
||||
led.value(False) #turn off the LED
|
||||
time.sleep(1) #wait for one second
|
||||
|
||||
26
Lab09/MicroPython/Code/pwm/pwm_fade.py
Normal file
26
Lab09/MicroPython/Code/pwm/pwm_fade.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
# Example using PWM to fade an LED.
|
||||
|
||||
import time
|
||||
import machine
|
||||
from machine import Pin, PWM
|
||||
|
||||
|
||||
# Construct PWM object, with LED on Pin(25).
|
||||
pwm = PWM(Pin(15))
|
||||
|
||||
# Set the PWM frequency.
|
||||
pwm.freq(1000)
|
||||
|
||||
# Fade the LED in and out a few times.
|
||||
duty = 0
|
||||
direction = 1
|
||||
for _ in range(8 * 256):
|
||||
duty += direction
|
||||
if duty > 255:
|
||||
duty = 255
|
||||
direction = -1
|
||||
elif duty < 0:
|
||||
duty = 0
|
||||
direction = 1
|
||||
pwm.duty_u16(duty * duty)
|
||||
time.sleep(0.005)
|
||||
26
Lab09/MicroPython/Code/pwm/pwm_fade2.py
Normal file
26
Lab09/MicroPython/Code/pwm/pwm_fade2.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
# Example using PWM to fade an LED.
|
||||
|
||||
import time
|
||||
import machine
|
||||
from machine import Pin, PWM
|
||||
|
||||
|
||||
# Construct PWM object, with LED on Pin(25).
|
||||
pwm = PWM(Pin(15))
|
||||
|
||||
# Set the PWM frequency.
|
||||
pwm.freq(1000)
|
||||
|
||||
# Fade the LED in and out a few times.
|
||||
duty = 0
|
||||
direction = 1
|
||||
for _ in range(8 * 256):
|
||||
duty += direction
|
||||
if duty > 255:
|
||||
duty = 255
|
||||
direction = -1
|
||||
elif duty < 0:
|
||||
duty = 0
|
||||
direction = 1
|
||||
pwm.duty_u16(duty * duty)
|
||||
time.sleep(0.01)
|
||||
37
Lab09/MicroPython/Code/pwm/pwm_fade3.py
Normal file
37
Lab09/MicroPython/Code/pwm/pwm_fade3.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# Example using PWM to fade an LED on pin GP15.
|
||||
|
||||
import time
|
||||
import machine
|
||||
from machine import Pin, PWM
|
||||
|
||||
def pwmFade(fadeTime):
|
||||
# Fade the LED in and out a few times.
|
||||
duty = 0
|
||||
direction = 1
|
||||
for _ in range(8 * 256):
|
||||
duty += direction
|
||||
if duty > 255:
|
||||
duty = 255
|
||||
direction = -1
|
||||
elif duty < 0:
|
||||
duty = 0
|
||||
direction = 1
|
||||
pwm.duty_u16(duty * duty)
|
||||
time.sleep(fadeTime)
|
||||
return 0
|
||||
|
||||
|
||||
# Construct PWM object, with LED on Pin(25).
|
||||
pwm = PWM(Pin(15))
|
||||
|
||||
# Set the PWM frequency.
|
||||
pwm.freq(1000)
|
||||
|
||||
print("Fade time is set to .001")
|
||||
# Fade the LED in and out a few times.
|
||||
pwmFade(.001)
|
||||
|
||||
print("Fade time is set to .01")
|
||||
# Fade the LED in and out a few times.
|
||||
pwmFade(.01)
|
||||
|
||||
37
Lab09/MicroPython/Code/pwm/pwm_fade4.py
Normal file
37
Lab09/MicroPython/Code/pwm/pwm_fade4.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# Example using PWM to fade an LED on pin GP16.
|
||||
|
||||
import time
|
||||
import machine
|
||||
from machine import Pin, PWM
|
||||
|
||||
def pwmFade(fadeTime):
|
||||
# Fade the LED in and out a few times.
|
||||
duty = 0
|
||||
direction = 1
|
||||
for _ in range(8 * 256):
|
||||
duty += direction
|
||||
if duty > 255:
|
||||
duty = 255
|
||||
direction = -1
|
||||
elif duty < 0:
|
||||
duty = 0
|
||||
direction = 1
|
||||
pwm.duty_u16(duty * duty)
|
||||
time.sleep(fadeTime)
|
||||
return 0
|
||||
|
||||
|
||||
# Construct PWM object, with LED on Pin(25).
|
||||
pwm = PWM(Pin(16))
|
||||
|
||||
# Set the PWM frequency.
|
||||
pwm.freq(1000)
|
||||
|
||||
print("Fade time is set to .001")
|
||||
# Fade the LED in and out a few times.
|
||||
pwmFade(.001)
|
||||
|
||||
print("Fade time is set to .01")
|
||||
# Fade the LED in and out a few times.
|
||||
pwmFade(.01)
|
||||
|
||||
37
Lab09/MicroPython/Code/pwm/pwm_fade5.py
Normal file
37
Lab09/MicroPython/Code/pwm/pwm_fade5.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# Example using PWM to fade an LED.
|
||||
|
||||
import time
|
||||
import machine
|
||||
from machine import Pin, PWM
|
||||
|
||||
def pwmFade(fadeTime):
|
||||
# Fade the LED in and out a few times.
|
||||
duty = 0
|
||||
direction = 1
|
||||
for _ in range(8 * 256):
|
||||
duty += direction
|
||||
if duty > 255:
|
||||
duty = 255
|
||||
direction = -1
|
||||
elif duty < 0:
|
||||
duty = 0
|
||||
direction = 1
|
||||
pwm.duty_u16(duty * duty)
|
||||
time.sleep(fadeTime)
|
||||
return 0
|
||||
|
||||
|
||||
# Construct PWM object, with LED on Pin(25).
|
||||
pwm = PWM(Pin(17))
|
||||
|
||||
# Set the PWM frequency.
|
||||
pwm.freq(1000)
|
||||
|
||||
print("Fade time is set to .001")
|
||||
# Fade the LED in and out a few times.
|
||||
pwmFade(.001)
|
||||
|
||||
print("Fade time is set to .01")
|
||||
# Fade the LED in and out a few times.
|
||||
pwmFade(.01)
|
||||
|
||||
6
Lab09/MicroPython/Code/secrets.py
Normal file
6
Lab09/MicroPython/Code/secrets.py
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
secrets = {
|
||||
'location': 'Stcc',
|
||||
'ssid': 'cset@stcc',
|
||||
'password': 'c1s2e3t4',
|
||||
}
|
||||
|
||||
23
Lab09/MicroPython/Code/wifi01/wifiConnect01.py
Normal file
23
Lab09/MicroPython/Code/wifi01/wifiConnect01.py
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
import network
|
||||
import secrets
|
||||
from utime import sleep, ticks_ms, ticks_diff
|
||||
from secrets import secrets
|
||||
|
||||
print('Connecting to WiFi Network Name:', secrets['ssid'])
|
||||
wlan = network.WLAN(network.STA_IF)
|
||||
wlan.active(True)
|
||||
|
||||
start = ticks_ms() # start a millisecond counter
|
||||
|
||||
if not wlan.isconnected():
|
||||
wlan.connect(secrets['ssid'], secrets['password'])
|
||||
print("Waiting for connection...")
|
||||
counter = 0
|
||||
while not wlan.isconnected():
|
||||
sleep(1)
|
||||
print(counter, '.', sep='', end='', )
|
||||
counter += 1
|
||||
|
||||
delta = ticks_diff(ticks_ms(), start)
|
||||
print("Connect Time:", delta, 'milliseconds')
|
||||
print('IP Address:', wlan.ifconfig()[0])
|
||||
17
Lab09/MicroPython/Code/wifi01/wifiScan.py
Normal file
17
Lab09/MicroPython/Code/wifi01/wifiScan.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
import network
|
||||
import binascii
|
||||
import rp2
|
||||
rp2.country('us')
|
||||
wlan = network.WLAN() # network.WLAN(network.STA_IF)
|
||||
wlan.active(True)
|
||||
networks = wlan.scan() # list with tuples (ssid, bssid, channel, RSSI, security, hidden)
|
||||
networks.sort(key=lambda x:x[3],reverse=True) # sorted on RSSI (3)
|
||||
#for i, w in enumerate(networks):
|
||||
# print(i+1, w[0].decode(), binascii.hexlify(w[1]).decode(), w[2], w[3], w[4], w[5])
|
||||
# print('%2d %-30s %16s %4d %4d %4d %4d' %(i+1, w[0].decode(), binascii.hexlify(w[1]).decode(), w[2], w[3], w[4], w[5]))
|
||||
# print(type(i+1), type(w[0].decode()), type(binascii.hexlify(w[1]).decode()), type(w[2]), type(w[3]), type(w[4]), type(w[5]))
|
||||
|
||||
for i, w in enumerate(networks):
|
||||
# print(i+1, w[0].decode(), binascii.hexlify(w[1]).decode(), w[2], w[3], w[4], w[5])
|
||||
print('%2d %-30s %16s %4d %4d %4d %4d' %(i+1, w[0].decode(), binascii.hexlify(w[1]).decode(), w[2], w[3], w[4], w[5]))
|
||||
# print(type(i+1), type(w[0].decode()), type(binascii.hexlify(w[1]).decode()), type(w[2]), type(w[3]), type(w[4]), type(w[5]))
|
||||
122
Lab09/MicroPython/Code/wifi02/WebServer01.py
Normal file
122
Lab09/MicroPython/Code/wifi02/WebServer01.py
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
# Complete project details at https://RandomNerdTutorials.com/raspberry-pi-pico-web-server-micropython/
|
||||
|
||||
# Import necessary modules
|
||||
import network
|
||||
import socket
|
||||
import time
|
||||
import random
|
||||
from machine import Pin
|
||||
from secrets import secrets
|
||||
|
||||
# Create an LED object on pin 'LED'
|
||||
led = Pin('LED', Pin.OUT)
|
||||
|
||||
# Wi-Fi credentials
|
||||
ssid = secrets['ssid']
|
||||
password = secrets['password']
|
||||
|
||||
# HTML template for the webpage
|
||||
def webpage(random_value, state):
|
||||
html = f"""
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Pico Web Server</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<h1>Raspberry Pi Pico Web Server</h1>
|
||||
<h2>Onboard Led Control</h2>
|
||||
<form action="./lighton">
|
||||
<input type="submit" value="Light on" />
|
||||
</form>
|
||||
<br>
|
||||
<form action="./lightoff">
|
||||
<input type="submit" value="Light off" />
|
||||
</form>
|
||||
<p>LED state: {state}</p>
|
||||
<h2>Fetch New Value</h2>
|
||||
<form action="./value">
|
||||
<input type="submit" value="Fetch value" />
|
||||
</form>
|
||||
<p>Fetched value: {random_value}</p>
|
||||
</body>
|
||||
</html>
|
||||
"""
|
||||
return str(html)
|
||||
|
||||
# Connect to WLAN
|
||||
wlan = network.WLAN(network.STA_IF)
|
||||
wlan.active(True)
|
||||
wlan.connect(ssid, password)
|
||||
|
||||
# Wait for Wi-Fi connection
|
||||
connection_timeout = 10
|
||||
while connection_timeout > 0:
|
||||
if wlan.status() >= 3:
|
||||
break
|
||||
connection_timeout -= 1
|
||||
print('Waiting for Wi-Fi connection...')
|
||||
time.sleep(1)
|
||||
|
||||
# Check if connection is successful
|
||||
if wlan.status() != 3:
|
||||
raise RuntimeError('Failed to establish a network connection')
|
||||
else:
|
||||
print('Connection successful!')
|
||||
network_info = wlan.ifconfig()
|
||||
print('IP address:', network_info[0])
|
||||
|
||||
# Set up socket and start listening
|
||||
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
|
||||
s = socket.socket()
|
||||
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
s.bind(addr)
|
||||
s.listen()
|
||||
|
||||
print('Listening on', addr)
|
||||
|
||||
# Initialize variables
|
||||
state = "OFF"
|
||||
random_value = 0
|
||||
|
||||
# Main loop to listen for connections
|
||||
while True:
|
||||
try:
|
||||
conn, addr = s.accept()
|
||||
print('Got a connection from', addr)
|
||||
|
||||
# Receive and parse the request
|
||||
request = conn.recv(1024)
|
||||
request = str(request)
|
||||
print('Request content = %s' % request)
|
||||
|
||||
try:
|
||||
request = request.split()[1]
|
||||
print('Request:', request)
|
||||
except IndexError:
|
||||
pass
|
||||
|
||||
# Process the request and update variables
|
||||
if request == '/lighton?':
|
||||
print("LED on")
|
||||
led.value(1)
|
||||
state = "ON"
|
||||
elif request == '/lightoff?':
|
||||
led.value(0)
|
||||
state = 'OFF'
|
||||
elif request == '/value?':
|
||||
random_value = random.randint(0, 20)
|
||||
|
||||
# Generate HTML response
|
||||
response = webpage(random_value, state)
|
||||
|
||||
# Send the HTTP response and close the connection
|
||||
conn.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n')
|
||||
conn.send(response)
|
||||
conn.close()
|
||||
|
||||
except OSError as e:
|
||||
conn.close()
|
||||
print('Connection closed')
|
||||
|
||||
122
Lab09/MicroPython/Code/wifi02/WebServer02.py
Normal file
122
Lab09/MicroPython/Code/wifi02/WebServer02.py
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
# Complete project details at https://RandomNerdTutorials.com/raspberry-pi-pico-web-server-micropython/
|
||||
|
||||
# Import necessary modules
|
||||
import network
|
||||
import socket
|
||||
import time
|
||||
import random
|
||||
from machine import Pin
|
||||
from secrets import secrets
|
||||
|
||||
# Create an LED object on pin 'LED'
|
||||
led = Pin('GP15', Pin.OUT)
|
||||
|
||||
# Wi-Fi credentials
|
||||
ssid = secrets['ssid']
|
||||
password = secrets['password']
|
||||
|
||||
# HTML template for the webpage
|
||||
def webpage(random_value, state):
|
||||
html = f"""
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Pico Web Server</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<h1>Raspberry Pi Pico Web Server</h1>
|
||||
<h2>Led Control for the LED cnnected to GP15</h2>
|
||||
<form action="./lighton">
|
||||
<input type="submit" value="Light on" />
|
||||
</form>
|
||||
<br>
|
||||
<form action="./lightoff">
|
||||
<input type="submit" value="Light off" />
|
||||
</form>
|
||||
<p>LED state: {state}</p>
|
||||
<h2>Fetch New Value</h2>
|
||||
<form action="./value">
|
||||
<input type="submit" value="Fetch value" />
|
||||
</form>
|
||||
<p>Fetched value: {random_value}</p>
|
||||
</body>
|
||||
</html>
|
||||
"""
|
||||
return str(html)
|
||||
|
||||
# Connect to WLAN
|
||||
wlan = network.WLAN(network.STA_IF)
|
||||
wlan.active(True)
|
||||
wlan.connect(ssid, password)
|
||||
|
||||
# Wait for Wi-Fi connection
|
||||
connection_timeout = 10
|
||||
while connection_timeout > 0:
|
||||
if wlan.status() >= 3:
|
||||
break
|
||||
connection_timeout -= 1
|
||||
print('Waiting for Wi-Fi connection...')
|
||||
time.sleep(1)
|
||||
|
||||
# Check if connection is successful
|
||||
if wlan.status() != 3:
|
||||
raise RuntimeError('Failed to establish a network connection')
|
||||
else:
|
||||
print('Connection successful!')
|
||||
network_info = wlan.ifconfig()
|
||||
print('IP address:', network_info[0])
|
||||
|
||||
# Set up socket and start listening
|
||||
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
|
||||
s = socket.socket()
|
||||
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
s.bind(addr)
|
||||
s.listen()
|
||||
|
||||
print('Listening on', addr)
|
||||
|
||||
# Initialize variables
|
||||
state = "OFF"
|
||||
random_value = 0
|
||||
|
||||
# Main loop to listen for connections
|
||||
while True:
|
||||
try:
|
||||
conn, addr = s.accept()
|
||||
print('Got a connection from', addr)
|
||||
|
||||
# Receive and parse the request
|
||||
request = conn.recv(1024)
|
||||
request = str(request)
|
||||
print('Request content = %s' % request)
|
||||
|
||||
try:
|
||||
request = request.split()[1]
|
||||
print('Request:', request)
|
||||
except IndexError:
|
||||
pass
|
||||
|
||||
# Process the request and update variables
|
||||
if request == '/lighton?':
|
||||
print("LED on")
|
||||
led.value(1)
|
||||
state = "ON"
|
||||
elif request == '/lightoff?':
|
||||
led.value(0)
|
||||
state = 'OFF'
|
||||
elif request == '/value?':
|
||||
random_value = random.randint(0, 20)
|
||||
|
||||
# Generate HTML response
|
||||
response = webpage(random_value, state)
|
||||
|
||||
# Send the HTTP response and close the connection
|
||||
conn.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n')
|
||||
conn.send(response)
|
||||
conn.close()
|
||||
|
||||
except OSError as e:
|
||||
conn.close()
|
||||
print('Connection closed')
|
||||
|
||||
106
Lab09/MicroPython/Code/wifi03/WebServer03.py
Normal file
106
Lab09/MicroPython/Code/wifi03/WebServer03.py
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
# Complete project details at https://RandomNerdTutorials.com/raspberry-pi-pico-web-server-micropython/
|
||||
|
||||
# Import necessary modules
|
||||
import network
|
||||
import socket
|
||||
import time
|
||||
import random
|
||||
from machine import Pin
|
||||
from secrets import secrets
|
||||
|
||||
# Create an LED object on pin 'LED'
|
||||
led = Pin('LED', Pin.OUT)
|
||||
|
||||
# Wi-Fi credentials
|
||||
ssid = secrets['ssid']
|
||||
password = secrets['password']
|
||||
|
||||
indexFilename = "index03.html"
|
||||
|
||||
# HTML template for the webpage
|
||||
def webpage(random_value, state):
|
||||
try:
|
||||
with open(indexFilename, 'r') as f:
|
||||
html = f.read()
|
||||
except FileNotFoundError:
|
||||
print("The file was not found.")
|
||||
except IOError:
|
||||
print("An error was encountered reading the file.")
|
||||
|
||||
return str(html)
|
||||
|
||||
# Connect to WLAN
|
||||
wlan = network.WLAN(network.STA_IF)
|
||||
wlan.active(True)
|
||||
wlan.connect(ssid, password)
|
||||
|
||||
# Wait for Wi-Fi connection
|
||||
connection_timeout = 10
|
||||
while connection_timeout > 0:
|
||||
if wlan.status() >= 3:
|
||||
break
|
||||
connection_timeout -= 1
|
||||
print('Waiting for Wi-Fi connection...')
|
||||
time.sleep(1)
|
||||
|
||||
# Check if connection is successful
|
||||
if wlan.status() != 3:
|
||||
raise RuntimeError('Failed to establish a network connection')
|
||||
else:
|
||||
print('Connection successful!')
|
||||
network_info = wlan.ifconfig()
|
||||
print('IP address:', network_info[0])
|
||||
|
||||
# Set up socket and start listening
|
||||
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
|
||||
s = socket.socket()
|
||||
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
s.bind(addr)
|
||||
s.listen()
|
||||
|
||||
print('Listening on', addr)
|
||||
|
||||
# Initialize variables
|
||||
state = "OFF"
|
||||
random_value = 0
|
||||
|
||||
# Main loop to listen for connections
|
||||
while True:
|
||||
try:
|
||||
conn, addr = s.accept()
|
||||
print('Got a connection from', addr)
|
||||
|
||||
# Receive and parse the request
|
||||
request = conn.recv(1024)
|
||||
request = str(request)
|
||||
print('Request content = %s' % request)
|
||||
|
||||
try:
|
||||
request = request.split()[1]
|
||||
print('Request:', request)
|
||||
except IndexError:
|
||||
pass
|
||||
|
||||
# Process the request and update variables
|
||||
if request == '/lighton?':
|
||||
print("LED on")
|
||||
led.value(1)
|
||||
state = "ON"
|
||||
elif request == '/lightoff?':
|
||||
led.value(0)
|
||||
state = 'OFF'
|
||||
elif request == '/value?':
|
||||
random_value = random.randint(0, 20)
|
||||
|
||||
# Generate HTML response
|
||||
response = webpage(random_value, state)
|
||||
|
||||
# Send the HTTP response and close the connection
|
||||
conn.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n')
|
||||
conn.send(response)
|
||||
conn.close()
|
||||
|
||||
except OSError as e:
|
||||
conn.close()
|
||||
print('Connection closed')
|
||||
|
||||
106
Lab09/MicroPython/Code/wifi03/WebServer04.py
Normal file
106
Lab09/MicroPython/Code/wifi03/WebServer04.py
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
# Complete project details at https://RandomNerdTutorials.com/raspberry-pi-pico-web-server-micropython/
|
||||
|
||||
# Import necessary modules
|
||||
import network
|
||||
import socket
|
||||
import time
|
||||
import random
|
||||
from machine import Pin
|
||||
from secrets import secrets
|
||||
|
||||
# Create an LED object on pin 'LED'
|
||||
led = Pin('GP15', Pin.OUT)
|
||||
|
||||
# Wi-Fi credentials
|
||||
ssid = secrets['ssid']
|
||||
password = secrets['password']
|
||||
|
||||
indexFilename = "index04.html"
|
||||
|
||||
# HTML template for the webpage
|
||||
def webpage(random_value, state):
|
||||
try:
|
||||
with open(indexFilename, 'r') as f:
|
||||
html = f.read()
|
||||
except FileNotFoundError:
|
||||
print("The file was not found.")
|
||||
except IOError:
|
||||
print("An error was encountered reading the file.")
|
||||
|
||||
return str(html)
|
||||
|
||||
# Connect to WLAN
|
||||
wlan = network.WLAN(network.STA_IF)
|
||||
wlan.active(True)
|
||||
wlan.connect(ssid, password)
|
||||
|
||||
# Wait for Wi-Fi connection
|
||||
connection_timeout = 10
|
||||
while connection_timeout > 0:
|
||||
if wlan.status() >= 3:
|
||||
break
|
||||
connection_timeout -= 1
|
||||
print('Waiting for Wi-Fi connection...')
|
||||
time.sleep(1)
|
||||
|
||||
# Check if connection is successful
|
||||
if wlan.status() != 3:
|
||||
raise RuntimeError('Failed to establish a network connection')
|
||||
else:
|
||||
print('Connection successful!')
|
||||
network_info = wlan.ifconfig()
|
||||
print('IP address:', network_info[0])
|
||||
|
||||
# Set up socket and start listening
|
||||
addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]
|
||||
s = socket.socket()
|
||||
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
s.bind(addr)
|
||||
s.listen()
|
||||
|
||||
print('Listening on', addr)
|
||||
|
||||
# Initialize variables
|
||||
state = "OFF"
|
||||
random_value = 0
|
||||
|
||||
# Main loop to listen for connections
|
||||
while True:
|
||||
try:
|
||||
conn, addr = s.accept()
|
||||
print('Got a connection from', addr)
|
||||
|
||||
# Receive and parse the request
|
||||
request = conn.recv(1024)
|
||||
request = str(request)
|
||||
print('Request content = %s' % request)
|
||||
|
||||
try:
|
||||
request = request.split()[1]
|
||||
print('Request:', request)
|
||||
except IndexError:
|
||||
pass
|
||||
|
||||
# Process the request and update variables
|
||||
if request == '/lighton?':
|
||||
print("LED on")
|
||||
led.value(1)
|
||||
state = "ON"
|
||||
elif request == '/lightoff?':
|
||||
led.value(0)
|
||||
state = 'OFF'
|
||||
elif request == '/value?':
|
||||
random_value = random.randint(0, 20)
|
||||
|
||||
# Generate HTML response
|
||||
response = webpage(random_value, state)
|
||||
|
||||
# Send the HTTP response and close the connection
|
||||
conn.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n')
|
||||
conn.send(response)
|
||||
conn.close()
|
||||
|
||||
except OSError as e:
|
||||
conn.close()
|
||||
print('Connection closed')
|
||||
|
||||
24
Lab09/MicroPython/Code/wifi03/index03.html
Normal file
24
Lab09/MicroPython/Code/wifi03/index03.html
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Pico Web Server</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<h1>Raspberry Pi Pico Web Server</h1>
|
||||
<h2>Onboard Led Control</h2>
|
||||
<form action="./lighton">
|
||||
<input type="submit" value="Light on" />
|
||||
</form>
|
||||
<br>
|
||||
<form action="./lightoff">
|
||||
<input type="submit" value="Light off" />
|
||||
</form>
|
||||
<p>LED state: {state}</p>
|
||||
<h2>Fetch New Value</h2>
|
||||
<form action="./value">
|
||||
<input type="submit" value="Fetch value" />
|
||||
</form>
|
||||
<p>Fetched value: {random_value}</p>
|
||||
</body>
|
||||
</html>
|
||||
24
Lab09/MicroPython/Code/wifi03/index04.html
Normal file
24
Lab09/MicroPython/Code/wifi03/index04.html
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Pico Web Server</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
</head>
|
||||
<body>
|
||||
<h1>Raspberry Pi Pico Web Server</h1>
|
||||
<h2>Led Control for the LED cnnected to GP15</h2>
|
||||
<form action="./lighton">
|
||||
<input type="submit" value="Light on" />
|
||||
</form>
|
||||
<br>
|
||||
<form action="./lightoff">
|
||||
<input type="submit" value="Light off" />
|
||||
</form>
|
||||
<p>LED state: {state}</p>
|
||||
<h2>Fetch New Value</h2>
|
||||
<form action="./value">
|
||||
<input type="submit" value="Fetch value" />
|
||||
</form>
|
||||
<p>Fetched value: {random_value}</p>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
Run Code on Power Up
|
||||
(From Google AI)
|
||||
|
||||
To run a MicroPython script automatically on power-up, you must
|
||||
save your code to the device's filesystem with the specific filename main.py. The board's bootloader is programmed to look for this file and execute its contents after finishing its initial setup process.
|
||||
|
||||
Steps to Save and Run Code on Power-up
|
||||
The general process involves connecting your board to a computer, accessing its file system, and saving your script with the required name.
|
||||
|
||||
Connect your board: Plug your MicroPython board (like a Raspberry Pi Pico or ESP32) into your computer via USB.
|
||||
|
||||
Open your IDE/Editor: Use a MicroPython-compatible IDE like Thonny to connect to the board's serial port.
|
||||
|
||||
Save your file as main.py:
|
||||
In Thonny, write your code in the editor window.
|
||||
Go to File > Save as.
|
||||
Select the option to save the file to the "Raspberry Pi Pico"
|
||||
(or your specific board's name) instead of your computer.
|
||||
Name the file main.py and click OK or Save.
|
||||
|
||||
Power cycle the board: Eject or unmount the device safely from your computer's file system, and then unplug and re-plug the USB cable (or press the RST button if available).
|
||||
|
||||
Upon reconnection, the code within main.py will run automatically.
|
||||
|
||||
Advanced Boot Options
|
||||
MicroPython actually uses two special files during the boot process:
|
||||
|
||||
boot.py: This file runs first and is intended for low-level configuration, such as setting up the system path or network connections. You typically do not need to modify this file unless you are customizing the boot process itself.
|
||||
|
||||
main.py: This file runs after boot.py and should contain your primary application logic.
|
||||
|
||||
By correctly naming your script main.py, you ensure it behaves like an embedded system program, running immediately when power is applied, without needing a computer connection or manual command.
|
||||
Binary file not shown.
Binary file not shown.
10
Lab09/MicroPython/README.md
Normal file
10
Lab09/MicroPython/README.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# MicroPython Files
|
||||
|
||||
---
|
||||
Directories & Files
|
||||
---
|
||||
MicroPython: MicroPython firmware for the Pico 2 W
|
||||
|
||||
Code: MicroPython code for the lab.
|
||||
|
||||
Documentation: Any additional documentation files.
|
||||
16
Lab09/README.md
Normal file
16
Lab09/README.md
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
# Lab09
|
||||
## Introduction to the Pico W Wifi and PWM.
|
||||
|
||||
---
|
||||
Directories & Files
|
||||
---
|
||||
|
||||
|
||||
MicroPython: MicroPython code and documentation. It includes the MicroPython Version 1.27.0 Pico W firmware.
|
||||
|
||||
flash_nuke.uf2: Erases all existing firmware on the Pico W.
|
||||
|
||||
MicroPython/code: Working code for the lab.
|
||||
|
||||
Documentation: Pin diagrams, web links, and other information.
|
||||
|
||||
BIN
Lab09/flash_nuke.uf2
Normal file
BIN
Lab09/flash_nuke.uf2
Normal file
Binary file not shown.
BIN
Lab09/universal_flash_nuke.uf2
Normal file
BIN
Lab09/universal_flash_nuke.uf2
Normal file
Binary file not shown.
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue