Jump to content

NodeMCU Projects: Difference between revisions

no edit summary
No edit summary
Line 3:
<br/>
 
= Micropython =
 
= Analog Temperature Meter=
== Basics ==
 
*Installing:
sudo pip install esptool
esptool.py --port /dev/ttyUSB0 erase_flash
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 ~/Desktop/esp8266-20171101-v1.9.3.bin
 
*Connecting via Terminal:
sudo apt install picocom
picocom /dev/ttyUSB0 -b115200
 
*Connecting via REPL(web):
import webrepl_setup
 
If you disabled automatic start-up on boot, you may run configured daemon on demand using:
import webrepl
webrepl.start()
 
*Checking filesystem:
import os
os.listdir()
 
*Create directories:
os.mkdir('dir')
 
*Remove Files:
os.remove('data.txt')
 
*Writing Data to files:
f = open('data.txt', 'w')
f.write('some data')
f.close()
 
*Reading data:
f = open('data.txt')
f.read()
f.close()
 
* Checking Machine Frequency & Overclocking:
import machine
machine.freq() # get the current frequency of the CPU
machine.freq(160000000) # set the CPU frequency to 160 MHz
 
*Check AP Name:
import network;
ap = network.WLAN(network.AP_IF);
print(ap.config('essid'));
 
*Change AP name and password:
import network;
ap = network.WLAN(network.AP_IF);
ap.active(True);
ap.config(essid='MyESP8266', authmode=network.AUTH_WPA_WPA2_PSK, password='mypassword');
print(ap.config('essid'));
 
*Boot Process:
As a final step of boot procedure, ''main.py'' is executed from filesystem
This file is a hook to start up a user application each time on boot (instead of going to REPL).
For small test applications, you may name them directly as ''main.py''
but instead it’s recommended to keep your application(s) in separate files, and have just the following in main.py:
 
import my_app
my_app.main()
 
* Upload data using Serial Port
sudo pip install adafruit-ampy
ampy --port /dev/ttyUSB0 put ~/Desktop/main.py
 
== Projects ==
 
===Playing with GPIO===
 
<syntaxhighlight lang="python">
import machine
import time
import urandom
 
pin = machine.Pin(2, machine.Pin.OUT)
 
def toggle(p):
p.value(not p.value())
 
while True:
time.sleep_ms(urandom.getrandbits(8))
toggle(pin)
</syntaxhighlight>
 
 
===Fading an LED===
<syntaxhighlight lang="python">
import time, math
import machine
 
led = machine.PWM(machine.Pin(2), freq=1000)
 
def pulse(l, t):
for i in range(20):
l.duty(int(math.sin(i / 10 * math.pi) * 500 + 500))
time.sleep_ms(t)
 
while True:
pulse(led, 20)
</syntaxhighlight>
 
 
=== Control a hobby servo ===
 
Hobby servo motors can be controlled using PWM.
They require a frequency of 50Hz and a duty between about 40 and 115, with 77 being the center value.
 
*Manual Movements
<syntaxhighlight lang="python">
servo = machine.PWM(machine.Pin(12), freq=50)
servo.duty(40)
servo.duty(115)
servo.duty(77)
</syntaxhighlight>
 
*Random movements:
<syntaxhighlight lang="python">
servo = machine.PWM(machine.Pin(12), freq=50)
while True:
servo.duty(urandom.getrandbits(8))
time.sleep(1)
</syntaxhighlight>
 
* Analog Temperature Meter:
 
Requirements:
Cookies help us deliver our services. By using our services, you agree to our use of cookies.