Actions

Difference between revisions of "MicroPython"

From Chalmers Robotics

(WS2812)
Line 35: Line 35:
 
[http://docs.micropython.org/en/v1.8.7/esp8266/esp8266/tutorial/network_basics.html http://docs.micropython.org/en/v1.8.7/esp8266/esp8266/tutorial/network_basics.html]
 
[http://docs.micropython.org/en/v1.8.7/esp8266/esp8266/tutorial/network_basics.html http://docs.micropython.org/en/v1.8.7/esp8266/esp8266/tutorial/network_basics.html]
  
<syntaxhighlight lang="bash">
+
<syntaxhighlight lang="python">
 
import network
 
import network
  
Line 47: Line 47:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
<syntaxhighlight lang="bash">
+
<syntaxhighlight lang="python">
 
sta_if.ifconfig()
 
sta_if.ifconfig()
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=HTTP GET=
 
=HTTP GET=
<syntaxhighlight lang="bash">
+
<syntaxhighlight lang="python">
 
import urequests
 
import urequests
 
response = urequests.get("http://tim.gremalm.se/hello")
 
response = urequests.get("http://tim.gremalm.se/hello")
Line 102: Line 102:
 
=GPIO=
 
=GPIO=
 
[https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/pins.html https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/pins.html]
 
[https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/pins.html https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/pins.html]
<syntaxhighlight lang="bash">
+
<syntaxhighlight lang="python">
 
from machine import Pin
 
from machine import Pin
 
button = Pin(0)
 
button = Pin(0)
Line 112: Line 112:
  
 
=File system on flash=
 
=File system on flash=
<syntaxhighlight lang="bash">
+
<syntaxhighlight lang="python">
 
import os
 
import os
 
os.listdir()
 
os.listdir()
Line 121: Line 121:
 
[https://learn.adafruit.com/micropython-basics-esp8266-webrepl/access-webrepl https://learn.adafruit.com/micropython-basics-esp8266-webrepl/access-webrepl]
 
[https://learn.adafruit.com/micropython-basics-esp8266-webrepl/access-webrepl https://learn.adafruit.com/micropython-basics-esp8266-webrepl/access-webrepl]
  
<syntaxhighlight lang="bash">
+
<syntaxhighlight lang="python">
 
import webrepl_setup
 
import webrepl_setup
 
</syntaxhighlight>
 
</syntaxhighlight>

Revision as of 11:48, 23 April 2018

MicroPython

a software implementation of the Python 3 programming language, written in C, that is optimized to run on a microcontroller

Micropython-logo.svg.png https://docs.micropython.org/en/latest/pyboard/

NodeMCU Devkit

Nodemcu.jpg

  • ESP8266 a microcontroller from Espressif
  • Integrated WiFi
  • 80MHz clock speed

Install

Windows/Mac CP2102 virtual com port driver

If you're running Windows or Mac you may have to install the virtual com port driver.

https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers

Firmware

http://docs.micropython.org/en/v1.8.2/esp8266/esp8266/tutorial/intro.html#deploying-the-firmware

http://micropython.org/download#esp8266

wget http://micropython.org/resources/firmware/esp8266-20171101-v1.9.3.bin
pip install esptool
esptool.py --port /dev/ttyUSB0 write_flash 0 esp8266-20171101-v1.9.3.bin

Connect through serial

screen /dev/ttyUSB0 115200

Stäng screen: Ctrl+A, k, y

Connect to WiFi

http://docs.micropython.org/en/v1.8.7/esp8266/esp8266/tutorial/network_basics.html

import network

ap_if = network.WLAN(network.AP_IF)
ap_if.disconnect()

sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)

sta_if.connect('SSID', 'password')
sta_if.ifconfig()

HTTP GET

import urequests
response = urequests.get("http://tim.gremalm.se/hello")
response.text
response.close()


WS2812

http://docs.micropython.org/en/v1.8.2/esp8266/esp8266/tutorial/neopixel.html

from machine import Pin
from neopixel import NeoPixel

np = NeoPixel(Pin(2), 3)

np[0] = (255, 0, 0)
np[1] = (0, 128, 0)
np[2] = (0, 0, 64)
np.write()

Color conversion with HSL2GRB

https://gist.github.com/dries007/26a2f36770c28500b912b0ecf1276129

def hsv_to_rgb(h, s, v):
	if s == 0.0:
		return v, v, v
	i = int(h*6.0)
	f = (h*6.0) - i
	p = v*(1.0 - s)
	q = v*(1.0 - s*f)
	t = v*(1.0 - s*(1.0-f))
	i = i%6
	if i == 0:
		return v, t, p
	if i == 1:
		return q, v, p
	if i == 2:
		return p, v, t
	if i == 3:
		return p, q, v
	if i == 4:
		return t, p, v
	if i == 5:
		return v, p, q

GPIO

https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/pins.html

from machine import Pin
button = Pin(0)
button = Pin(0, Pin.IN, Pin.PULL_UP)
pin.value()

[1] NodeMCUPinout.png

File system on flash

import os
os.listdir()
os.remove('filename')

Connect through WEBrepl (websocket)

https://learn.adafruit.com/micropython-basics-esp8266-webrepl/access-webrepl

import webrepl_setup

Use HTTP and not HTTPS when connecting to the websocket. HTTPS-version doesn't support connecting to HTTP websocket due to mixed content. http://micropython.org/webrepl/

ampy

https://github.com/adafruit/ampy

a file utility tool for MicroPython on ESP8266

Workshop resources