forked from lauri/micropython-skeleton
Added sonar example, fixed URL-s
This commit is contained in:
parent
ae8299c4db
commit
6564761f68
4
Makefile
4
Makefile
@ -13,7 +13,3 @@ flash:
|
|||||||
console:
|
console:
|
||||||
echo "Ctrl-A + Ctrl-Q to close Picocom"
|
echo "Ctrl-A + Ctrl-Q to close Picocom"
|
||||||
picocom -b115200 /dev/ttyUSB0
|
picocom -b115200 /dev/ttyUSB0
|
||||||
|
|
||||||
dep:
|
|
||||||
sudo apt install python3-pip
|
|
||||||
sudo pip3 install adafruit-ampy
|
|
||||||
|
81
README.md
81
README.md
@ -2,14 +2,23 @@
|
|||||||
|
|
||||||
## Getting started
|
## Getting started
|
||||||
|
|
||||||
MicroPython project skeleton
|
This howto assumes Ubuntu 16.04 is used on the computer and several tools have been installed:
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone http://git.k-space.ee/lauri/micropython-skeleton
|
sudo apt install picocom make python3-pip
|
||||||
|
sudo pip3 install esptool.py adafruit-ampy
|
||||||
|
```
|
||||||
|
|
||||||
|
Clone the Git repository and run makefiles:
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone https://github.com/k-space-ee/micropython-skeleton
|
||||||
cd micropython-skeleton
|
cd micropython-skeleton
|
||||||
make
|
make
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Blinking LED-s
|
||||||
|
|
||||||
First let's some LED-s blinking.
|
First let's some LED-s blinking.
|
||||||
Press Ctrl-E for paste mode, otherwise spaces get mangled.
|
Press Ctrl-E for paste mode, otherwise spaces get mangled.
|
||||||
Press Ctrl-Shift-V for pasting.
|
Press Ctrl-Shift-V for pasting.
|
||||||
@ -47,7 +56,7 @@ Tasks:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Button presses
|
## Button presses
|
||||||
|
|
||||||
On the board there is button labelled "Boot", this is hooked up to pin 2.
|
On the board there is button labelled "Boot", this is hooked up to pin 2.
|
||||||
By default there is a resistor which pulls the voltage on the pin to 3.3v, but when button is pressed the pin is shorted to ground so the voltage goes to 0v.
|
By default there is a resistor which pulls the voltage on the pin to 3.3v, but when button is pressed the pin is shorted to ground so the voltage goes to 0v.
|
||||||
@ -79,7 +88,7 @@ Tasks:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Driving OLED screens
|
## Driving OLED screens
|
||||||
|
|
||||||
Let's get some pixels on the screen.
|
Let's get some pixels on the screen.
|
||||||
There's 128x64 pixels monochrome OLED screen connected via I2C bus on the pins 4 and 5.
|
There's 128x64 pixels monochrome OLED screen connected via I2C bus on the pins 4 and 5.
|
||||||
@ -107,6 +116,13 @@ Tasks:
|
|||||||
|
|
||||||
Next let's hook up DHT11 sensor to the board and measure the temperature.
|
Next let's hook up DHT11 sensor to the board and measure the temperature.
|
||||||
|
|
||||||
|
* Sensor's Vcc is connected to 3.3v on the board
|
||||||
|
* Ground pins (GND) are connected
|
||||||
|
* Sensor's data pin is connected to board pin 4
|
||||||
|
|
||||||
|
Some code to get you going:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from machine import Pin
|
from machine import Pin
|
||||||
@ -115,20 +131,60 @@ from dht import DHT11
|
|||||||
d = DHT11(Pin(4))
|
d = DHT11(Pin(4))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
d.measure()
|
d.measure()
|
||||||
except OSError:
|
except OSError:
|
||||||
print("Sensor not connected")
|
print("Sensor not connected")
|
||||||
else:
|
else:
|
||||||
print("Temperature %sC" % d.temperature())
|
print("Temperature %sC" % d.temperature())
|
||||||
print("Humidity %s%%" % d.humidity())
|
print("Humidity %s%%" % d.humidity())
|
||||||
finally:
|
finally:
|
||||||
sleep(1)
|
sleep(1)
|
||||||
```
|
```
|
||||||
|
|
||||||
Tasks:
|
Tasks:
|
||||||
|
|
||||||
1. Get temperature and humidity displayed on the screen
|
1. Get temperature and humidity displayed on the screen
|
||||||
|
|
||||||
|
|
||||||
|
## Distance with sonar
|
||||||
|
|
||||||
|
In this case HC-SR04 is hooked up:
|
||||||
|
|
||||||
|
* Trigger is connected to pin 25
|
||||||
|
* Echo is connected to pin 26
|
||||||
|
* GND pins are connected
|
||||||
|
* Sonar's Vcc is connected to 3.3V on the board
|
||||||
|
|
||||||
|
Code to measure distance:
|
||||||
|
|
||||||
|
```
|
||||||
|
from time import sleep_us, sleep_ms
|
||||||
|
from machine import Pin, time_pulse_us
|
||||||
|
|
||||||
|
trigger = Pin(25, Pin.OUT)
|
||||||
|
echo = Pin(26, Pin.IN)
|
||||||
|
|
||||||
|
def measure():
|
||||||
|
trigger.value(0)
|
||||||
|
sleep_us(5)
|
||||||
|
trigger.value(1)
|
||||||
|
sleep_us(10)
|
||||||
|
trigger.value(0)
|
||||||
|
|
||||||
|
duration = time_pulse_us(echo, 1, 29000)
|
||||||
|
distance = (duration / 2.0) / 29
|
||||||
|
return distance
|
||||||
|
|
||||||
|
while True:
|
||||||
|
print("Distance is: %s cm" % measure())
|
||||||
|
sleep_ms(200)
|
||||||
|
```
|
||||||
|
|
||||||
|
Tasks:
|
||||||
|
|
||||||
|
1. Get distance shown on OLED display
|
||||||
|
|
||||||
|
|
||||||
## Connecting to internet
|
## Connecting to internet
|
||||||
|
|
||||||
Exit the serial console by pressing Ctrl-A and then Ctrl-Q.
|
Exit the serial console by pressing Ctrl-A and then Ctrl-Q.
|
||||||
@ -176,9 +232,10 @@ Using web browser navigate [here](http://iot.koodur.com/demo2.html#living-room-o
|
|||||||
1. Move to another channel to prevent flipping lights in my living room
|
1. Move to another channel to prevent flipping lights in my living room
|
||||||
2. Improve the code so the "Boot" button and button in the web interface both work simultaneously
|
2. Improve the code so the "Boot" button and button in the web interface both work simultaneously
|
||||||
3. Download the HTML file and add buttons to select different colors, adjust Python code to handle new commands
|
3. Download the HTML file and add buttons to select different colors, adjust Python code to handle new commands
|
||||||
|
4. Add code to send sensor readings to the webserver
|
||||||
|
|
||||||
|
|
||||||
# Summary
|
## Summary
|
||||||
|
|
||||||
ESP32 microcontroller with MicroPython is a really cheap way to get started with the IoT stuff. See more detailed information [here](https://lauri.xn--vsandi-pxa.com/2017/06/espressif.html).
|
ESP32 microcontroller with MicroPython is a really cheap way to get started with the IoT stuff. See more detailed information [here](https://lauri.xn--vsandi-pxa.com/2017/06/espressif.html).
|
||||||
|
|
||||||
@ -190,4 +247,6 @@ Some more tricks to try:
|
|||||||
Other interesting projects with ESP8266 and ESP32 microcontrollers:
|
Other interesting projects with ESP8266 and ESP32 microcontrollers:
|
||||||
|
|
||||||
* [Nixie clock](https://github.com/k-space-ee/nixiesp12) with ESP8266
|
* [Nixie clock](https://github.com/k-space-ee/nixiesp12) with ESP8266
|
||||||
* [Sumorobot](http://robot.itcollege.ee/sumorobot/2017/08/25/sumesp-prototype/) with ESP32
|
* [Sumorobot](http://robot.itcollege.ee/sumorobot/2017/08/25/sumesp-prototype/) with ESP32
|
||||||
|
|
||||||
|
Come and visit [k-space.ee](https://k-space.ee) on Wednesdays 18:00 for more of MicroPython
|
Loading…
Reference in New Issue
Block a user