NodeMCU Config

From Network Security Wiki


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()

Connecting

  • 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

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()

Networking

  • 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

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')
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

  1. As a final step of boot procedure, main.py is executed from filesystem
  2. This file is a hook to start up a user application each time on boot (instead of going to REPL).
  3. For small test applications, you may name them directly as main.py
  4. 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
#esp.osdebug(None)
import uos, machine
#uos.dupterm(None, 1)    # disable REPL on UART(0)
import gc
import webrepl

webrepl.start()
gc.collect()

print("Mem:",gc.mem_free())

import network
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True) # allow auto reconnect

if not sta_if.isconnected():
    print('connecting to network...')
    sta_if.active(True)
    sta_if.connect('TP-Link_6A31', 'Kirat#291011')
    while not sta_if.isconnected():
        pass
print('network config:', sta_if.ifconfig())


References





{{#widget:DISQUS |id=networkm |uniqid=NodeMCU Config |url=https://aman.awiki.org/wiki/NodeMCU_Config }}