Programmering av raspberry pico W
Raspberry Pico W⌗
Syfte⌗
Det här är en uppgift där vi ska lyckas koppla upp en minidator Raspberry Pico W till ett wifi-nätverk och där man ska kunna styra en lysdiod via en webbsida. I den här textguiden finns lite kod-exempel som ni kan använda ihop med en video-guide.
Installation av mjukvara⌗
Programmeringen kommer ske i ett program som heter thonny. Programmet laddas ner här.
Efter installation behöver ni installera ett bibliotek som heter picozero.
Tryck på
Tools > Manage packages...
Om picozero redan finns i det vänstra fältet är det redan installerat på er dator. Om det inte gör det får ni söka upp det och installera det i samma fönster.
Installation av firmware⌗
På er raspberry pico zero så finns det ingen firmware per default. Den måste vi installera så att raspberryn fattar den koden vi ska skicka till den. Det är väldigt enkelt att göra i thonny. Bara tryck längst ner till höger i programmet så dyker det upp en meny där ni kan installera micropython till enheten.
Programmering⌗
Nu är ni klara för att börja programmera enheten och kunna skicka ner program. Nedan kommer lite program exempel som ni kan använda medan ni följer video-genomgången. Detta är alltså kod som jag använder i videos.
Import av bibliotek⌗
import network
import socket
from time import sleep
from picozero import pico_temp_sensor, pico_led
import machine
import rp2
import sys
Wifi konfiguration⌗
ssid = '2.3005'
password = 'Minne2020'
Connect-funktion⌗
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)
ip = wlan.ifconfig()[0]
print(f'Connected on {ip}')
return ip
Open_socket-funktion⌗
def open_socket(ip_till_blocket):
# Open a socket
address = (ip_till_blocket, 80)
connection = socket.socket()
connection.bind(address)
connection.listen(1)
print(connection)
return connection
Hemsida⌗
def hemsida(state):
htmls = f"""
<!DOCTYPE html>
<html>
<body>
<form action="./lighton">
<input type="submit" value="Lampa på" />
</form>
<form action="./lightoff">
<input type="submit" value="Lampa av" />
</form>
<form action="./close">
<input type="submit" value="Stanna server" />
</form>
<p>Lysdiod är nu {state}</p>
</body>
</html>
"""
return str(htmls)
Serve-funktion⌗
def serve(connection):
#Start a web server
state = 'PÅ'
pico_led.on()
while True:
client = connection.accept()[0]
request = client.recv(1024)
request = str(request)
try:
request = request.split()[1]
except IndexError:
pass
if request == '/lighton?':
pico_led.on()
state = 'PÅ'
elif request =='/lightoff?':
pico_led.off()
state = 'AV'
elif request == '/close?':
sys.exit()
html = hemsida(state)
client.send(html)
client.close()
Function call⌗
ip = connect()
den_riktiga_connection = open_socket(ip)
serve(den_riktiga_connection)