kopia lustrzana https://github.com/peterhinch/micropython-samples
163 wiersze
5.1 KiB
Markdown
163 wiersze
5.1 KiB
Markdown
# 1. Running Picoweb on hardware devices
|
|
|
|
This has regularly caused dificulty on the forum.
|
|
|
|
The target hardware is assumed to be running official MicroPython firmware. This
|
|
has now been tested with a daily build of official firmware which now includes
|
|
uasyncio V3. It is therefore compatible with official uasyncio V2 and V3.
|
|
|
|
This repo aims to clarify the installation process. Paul Sokolovsky's Picoweb
|
|
code is unchanged. The demos are trivially changed to use IP '0.0.0.0' and port
|
|
80.
|
|
|
|
The Picoweb version in this repo is no longer current, and subsequent versions
|
|
are no longer compatible with official firmware. See [Picoweb versions](./PICOWEB.md#5-picoweb-versions) if you
|
|
want to run a version newer than that supplied here.
|
|
|
|
Note that the ESP8266 requires the use of frozen bytecode: see [ESP8266](./PICOWEB.md#3-ESP8266)
|
|
for installation instructions.
|
|
|
|
On other platfroms two ways of installing Picoweb are available: copying this
|
|
directory to the target or using `upip`. To use `upip` you should ensure your
|
|
firmware is V1.11 or later; your target will also require an internet
|
|
connection. Both methods require the following preliminaries.
|
|
|
|
## 1.1 Preliminary steps
|
|
|
|
### 1.1.1 Clone this repo to your PC
|
|
|
|
From a suitable destination directory issue
|
|
```
|
|
git clone https://github.com/peterhinch/micropython-samples
|
|
```
|
|
|
|
### 1.1.2 Establish uasyncio status
|
|
|
|
Determine whether your target has `uasyncio` already installed. At the REPL
|
|
issue:
|
|
```
|
|
>>> import uasyncio
|
|
>>>
|
|
```
|
|
If this throws an `ImportError`, `uasyncio` is not installed.
|
|
|
|
## 1.2 Installing using upip
|
|
|
|
Copy the `picoweb` subdirectory of this repo's `PicoWeb` directory, with its
|
|
contents, to the target. If using `rshell` to connect to a Pyboard D this would
|
|
be done from the `PicoWeb` directory with:
|
|
```
|
|
/my/tree/PicoWeb> cp -r picoweb/ /flash
|
|
```
|
|
|
|
Ensure your target is connected to the internet. Then perform the following
|
|
steps. The first step may be omitted if `uasyncio` is already installed.
|
|
```
|
|
upip.install('micropython-uasyncio')
|
|
upip.install('micropython-ulogging')
|
|
upip.install('micropython-pkg_resources')
|
|
upip.install('utemplate')
|
|
```
|
|
|
|
## 1.3 Installing by copying this archive
|
|
|
|
Copy the contents of the `PicoWeb` directory (including subdirectories) to the
|
|
target. If using `rshell` on an ESP32 change to this directory, at the `rshell`
|
|
prompt issue
|
|
```
|
|
/my/tree/PicoWeb> rsync . /pyboard
|
|
```
|
|
This may take some time: 1 minute here on ESP32.
|
|
|
|
If `uasyncio` was already installed, the corrsponding directory on the target
|
|
may be removed.
|
|
|
|
# 2. Running Picoweb
|
|
|
|
At the REPL connect to the network and determine your IP address
|
|
```
|
|
>>> import network
|
|
>>> w = network.WLAN()
|
|
>>> w.ifconfig()
|
|
```
|
|
|
|
issue
|
|
```
|
|
>>> from picoweb import example_webapp
|
|
```
|
|
|
|
or
|
|
```
|
|
>>> from picoweb import example_webapp2
|
|
```
|
|
|
|
Then point your browser at the IP address determined above.
|
|
|
|
# 3. ESP8266
|
|
|
|
RAM limitations require the use of frozen bytecode, and getting the examples
|
|
running is a little more involved. Create a directory on your PC and copy the
|
|
contents of this directory to it. Then add the files `inisetup.py`, `_boot.py`
|
|
and `flashbdev.py` which may be found in the MicroPython source tree under
|
|
`ports/esp8266/modules`. You may also want to add a custom connect module to
|
|
simplify connection to your WiFi. Then build the firmware. The script I used
|
|
was
|
|
```bash
|
|
#! /bin/bash
|
|
|
|
# Test picoweb on ESP8266
|
|
|
|
DIRECTORY='/home/adminpete/temp/picoweb'
|
|
|
|
cd /mnt/qnap2/data/Projects/MicroPython/micropython/ports/esp8266
|
|
|
|
make clean
|
|
esptool.py --port /dev/ttyUSB0 erase_flash
|
|
|
|
if make -j 8 FROZEN_MPY_DIR=$DIRECTORY
|
|
then
|
|
sleep 1
|
|
esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash --flash_size=detect -fm dio 0 build/firmware-combined.bin
|
|
sleep 4
|
|
rshell -p /dev/ttyUSB0 --buffer-size=30 --editor nano
|
|
else
|
|
echo Build failure
|
|
fi
|
|
```
|
|
For the demos you will need to make the `example_webapp.py` source file and
|
|
`squares.tpl` accessible in the filesystem. The following `rshell` commands,
|
|
executed from this directory or the one created above, will make these
|
|
available.
|
|
```
|
|
path/to/repo> mkdir /pyboard/picoweb
|
|
path/to/repo> mkdir /pyboard/picoweb/templates
|
|
path/to/repo> cp picoweb/example_webapp.py /pyboard/picoweb/
|
|
path/to/repo> cp picoweb/templates/squares.tpl /pyboard/picoweb/templates/
|
|
```
|
|
|
|
|
|
# 4. Documentation and further examples
|
|
|
|
See [the PicoWeb docs](https://github.com/pfalcon/picoweb)
|
|
|
|
Note that to run these demos on platforms other than the Unix build you may
|
|
want to change IP and port as above.
|
|
|
|
# 5. Picoweb versions
|
|
|
|
At the time of writing (Sept 2019) Paul Sokolovsky has released an update to
|
|
support Unicode strings. This is incompatible with official firmware. The
|
|
difference is small and easily fixed, however it is likely that future versions
|
|
will acquire further incompatibilities. I do not plan to maintain a compatible
|
|
`Picoweb-copy` fork; hopefully someone will accept this task.
|
|
|
|
The issues are discussed [in this forum thread](https://forum.micropython.org/viewtopic.php?f=18&t=6002).
|
|
|
|
Options are:
|
|
1. Use the version in this repo.
|
|
2. Use the latest version and adapt it.
|
|
3. Use the Pycopy firmware (requires compilation).
|
|
4. Abandon Picoweb and use an alternative web framework.
|
|
|
|
These are discussed in detail in the above forum thread.
|