NodeMCU Config: Difference between revisions
Content added Content deleted
(15 intermediate revisions by the same user not shown) | |||
Line 23: | Line 23: | ||
</syntaxhighlight> |
</syntaxhighlight> |
||
== |
== Console Access == |
||
*Via Terminal: |
|||
* Via Terminal: |
|||
sudo apt install picocom |
sudo apt install picocom |
||
picocom /dev/ttyUSB0 -b115200 |
picocom /dev/ttyUSB0 -b115200 |
||
Exiting from picocom: |
|||
*Via REPL(web): |
|||
Cntrl + A |
|||
Cntrl + X |
|||
* Via REPL(web): |
|||
<syntaxhighlight lang="python"> |
<syntaxhighlight lang="python"> |
||
Line 34: | Line 39: | ||
</syntaxhighlight> |
</syntaxhighlight> |
||
*If you disabled automatic start-up on boot, you may run configured daemon on demand using: |
* If you disabled automatic start-up on boot, you may run configured daemon on demand using: |
||
<syntaxhighlight lang="python"> |
<syntaxhighlight lang="python"> |
||
Line 44: | Line 49: | ||
sudo pip install adafruit-ampy |
sudo pip install adafruit-ampy |
||
ampy --port /dev/ttyUSB0 put ~/Desktop/main.py |
ampy --port /dev/ttyUSB0 put ~/Desktop/main.py |
||
ampy --port /dev/ttyUSB0 ls |
|||
== Error Codes == |
|||
Error Code Details: |
|||
https://github.com/micropython/micropython-lib/blob/master/errno/errno.py |
|||
== File System == |
== File System == |
||
Line 78: | Line 89: | ||
</syntaxhighlight> |
</syntaxhighlight> |
||
*Execute a script called foo.py |
|||
== Networking == |
|||
import foo |
|||
== Information == |
|||
*Checking Machine Frequency & Overclocking: |
*Checking Machine Frequency & Overclocking: |
||
Line 86: | Line 100: | ||
machine.freq(160000000) # set the CPU frequency to 160 MHz |
machine.freq(160000000) # set the CPU frequency to 160 MHz |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
*Diagnostics |
|||
import port_diag |
|||
== Networking == |
|||
=== AP Mode === |
=== AP Mode === |
||
Line 101: | Line 120: | ||
ap = network.WLAN(network.AP_IF) |
ap = network.WLAN(network.AP_IF) |
||
ap.active(True) |
ap.active(True) |
||
ap.config(essid='MyESP8266', authmode=network.AUTH_WPA_WPA2_PSK, password='mypassword') |
ap.config(essid='MyESP8266', authmode=network.AUTH_WPA_WPA2_PSK, password='mypassword') # Password should be min 8 char |
||
print(ap.config('essid')) |
print(ap.config('essid')) |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
Line 157: | Line 176: | ||
</syntaxhighlight> |
</syntaxhighlight> |
||
== boot.py File == |
|||
<syntaxhighlight lang="python"> |
|||
# This file is executed on every boot (including wake-boot from deepsleep) |
|||
import esp |
|||
import uos |
|||
import machine |
|||
import gc |
|||
import webrepl |
|||
import network |
|||
import ntptime |
|||
#from machine import RTC |
|||
import micropython |
|||
import time |
|||
#esp.osdebug(None) |
|||
#uos.dupterm(None, 1) # disable REPL on UART(0) |
|||
webrepl.start() |
|||
gc.collect() |
|||
# Determine if waking from Deep Sleep |
|||
if machine.reset_cause() == machine.DEEPSLEEP_RESET: |
|||
print('Woke from a deep sleep') |
|||
# Machine Stats |
|||
print("Freq: ", machine.freq()/1000000, "MHz") |
|||
#print("ESP Flash size: ", esp.flash_size()) |
|||
#print("ESP Free Mem: ", esp.freemem()) |
|||
print("Free Mem: ", gc.mem_free()/1000,"KB") |
|||
#print("Micropython Info: ") |
|||
#micropython.mem_info() |
|||
# Flash Space stats |
|||
space = uos.statvfs('/') |
|||
total_space = (space[1] * space[3])/1000000 |
|||
used_space = (space[2] * space[4])/1000000 |
|||
free_space = total_space - used_space |
|||
print("Total:", total_space, "MB Used:", used_space,"MB Free:", free_space,"MB") |
|||
# WiFi Config |
|||
sta_if = network.WLAN(network.STA_IF) |
|||
sta_if.active(True) # allow auto reconnect |
|||
if not sta_if.isconnected(): |
|||
print('Connecting to WiFi...') |
|||
sta_if.active(True) |
|||
sta_if.connect('TP-Link_6A31', 'Kirat#291011') |
|||
while not sta_if.isconnected(): |
|||
pass |
|||
print('STA Config: ', sta_if.config('essid'), sta_if.ifconfig()) |
|||
# Wifi Access Point config |
|||
ap = network.WLAN(network.AP_IF) |
|||
ap.config(essid='MicroPythonAP', authmode=network.AUTH_WPA_WPA2_PSK, password='Admin@123') # Password should be min 8 char |
|||
#ap.active(False) |
|||
print('AP Config: ', ap.config('essid'), ap.ifconfig()) |
|||
# synchronize with ntp need to be connected to wifi |
|||
rtc = machine.RTC() |
|||
try: |
|||
ntptime.settime() # set the rtc datetime from the remote server |
|||
print("Time: ", rtc.datetime()) # get the date and time in UTC |
|||
except OSError: |
|||
print("Time: Unable to get data from Server") |
|||
# Deep Sleep config |
|||
def deep_sleep(delta): |
|||
delay = delta*1000*60 |
|||
rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP) |
|||
rtc.alarm(rtc.ALARM0, delay) |
|||
print("Deep Sleep for: ", delta," min") |
|||
machine.deepsleep() |
|||
# Flash Onboard LED |
|||
def flash_led(n,x,y): |
|||
pin = machine.Pin(2, machine.Pin.OUT) |
|||
pin.on() |
|||
for i in range(n): |
|||
pin.off() |
|||
time.sleep(x) |
|||
pin.on() |
|||
time.sleep(y) |
|||
</syntaxhighlight> |
|||
<br /> |
<br /> |
Latest revision as of 15:30, 5 June 2020
Micropython
- Documentation:
http://docs.micropython.org/en/latest/esp8266/quickref.html
Installation
- Flashing Micropython
Download firmware file from micropython.org
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
- Check the firmware integrity:
import esp
esp.check_fw()
Console Access
- Via Terminal:
sudo apt install picocom picocom /dev/ttyUSB0 -b115200
Exiting from picocom:
Cntrl + A Cntrl + X
- 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()
- Upload data using Serial Port
sudo pip install adafruit-ampy ampy --port /dev/ttyUSB0 put ~/Desktop/main.py ampy --port /dev/ttyUSB0 ls
Error Codes
Error Code Details:
https://github.com/micropython/micropython-lib/blob/master/errno/errno.py
File System
- Checking filesystem:
import os
os.listdir()
- Create directories:
os.mkdir('dir')
- Remove Files:
os.remove('data.txt')
- Reading data:
f = open('data.txt')
f.read()
f.close()
- Writing Data to files:
f = open('data.txt', 'w')
f.write('some data')
f.close()
- Execute a script called foo.py
import foo
Information
- 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
- Diagnostics
import port_diag
Networking
AP Mode
- 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') # Password should be min 8 char
print(ap.config('essid'))
- Turning off AP:
ap = network.WLAN(network.AP_IF)
ap.active(False)
Station Mode
Connecting to WIFI AP:
sta_if = network.WLAN(network.STA_IF) sta_if.active(True) sta_if.connect('<your ESSID>', '<your password>')
To check if the connection is established:
sta_if.isconnected()
Once established you can check the IP address:
sta_if.ifconfig()
You can then disable the access-point interface if you no longer need it:
ap_if.active(False)
Disconnecting from Station:
sta_if = network.WLAN(network.STA_IF) sta_if.active(False)
Here is a function you can run (or put in your boot.py file) to automatically connect to your WiFi network:
def do_connect():
import network
sta_if = network.WLAN(network.STA_IF)
if not sta_if.isconnected():
print('connecting to network...')
sta_if.active(True)
sta_if.connect('<essid>', '<password>')
while not sta_if.isconnected():
pass
print('network config:', sta_if.ifconfig())
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()
boot.py File
# This file is executed on every boot (including wake-boot from deepsleep)
import esp
import uos
import machine
import gc
import webrepl
import network
import ntptime
#from machine import RTC
import micropython
import time
#esp.osdebug(None)
#uos.dupterm(None, 1) # disable REPL on UART(0)
webrepl.start()
gc.collect()
# Determine if waking from Deep Sleep
if machine.reset_cause() == machine.DEEPSLEEP_RESET:
print('Woke from a deep sleep')
# Machine Stats
print("Freq: ", machine.freq()/1000000, "MHz")
#print("ESP Flash size: ", esp.flash_size())
#print("ESP Free Mem: ", esp.freemem())
print("Free Mem: ", gc.mem_free()/1000,"KB")
#print("Micropython Info: ")
#micropython.mem_info()
# Flash Space stats
space = uos.statvfs('/')
total_space = (space[1] * space[3])/1000000
used_space = (space[2] * space[4])/1000000
free_space = total_space - used_space
print("Total:", total_space, "MB Used:", used_space,"MB Free:", free_space,"MB")
# WiFi Config
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True) # allow auto reconnect
if not sta_if.isconnected():
print('Connecting to WiFi...')
sta_if.active(True)
sta_if.connect('TP-Link_6A31', 'Kirat#291011')
while not sta_if.isconnected():
pass
print('STA Config: ', sta_if.config('essid'), sta_if.ifconfig())
# Wifi Access Point config
ap = network.WLAN(network.AP_IF)
ap.config(essid='MicroPythonAP', authmode=network.AUTH_WPA_WPA2_PSK, password='Admin@123') # Password should be min 8 char
#ap.active(False)
print('AP Config: ', ap.config('essid'), ap.ifconfig())
# synchronize with ntp need to be connected to wifi
rtc = machine.RTC()
try:
ntptime.settime() # set the rtc datetime from the remote server
print("Time: ", rtc.datetime()) # get the date and time in UTC
except OSError:
print("Time: Unable to get data from Server")
# Deep Sleep config
def deep_sleep(delta):
delay = delta*1000*60
rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)
rtc.alarm(rtc.ALARM0, delay)
print("Deep Sleep for: ", delta," min")
machine.deepsleep()
# Flash Onboard LED
def flash_led(n,x,y):
pin = machine.Pin(2, machine.Pin.OUT)
pin.on()
for i in range(n):
pin.off()
time.sleep(x)
pin.on()
time.sleep(y)
- References
{{#widget:DISQUS
|id=networkm
|uniqid=NodeMCU Config
|url=https://aman.awiki.org/wiki/NodeMCU_Config
}}