Add periodic NTP resync
This commit is contained in:
parent
c2f7272a04
commit
9eb83d2b1c
@ -29,11 +29,17 @@ Photos:
|
|||||||
Boot ESP8266 with program pin held low and flash MicroPython:
|
Boot ESP8266 with program pin held low and flash MicroPython:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
wget http://micropython.org/resources/firmware/esp8266-20170612-v1.9.1.bin
|
||||||
esptool.py --port /dev/ttyUSB0 --baud 460800 erase_flash
|
esptool.py --port /dev/ttyUSB0 --baud 460800 erase_flash
|
||||||
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20170612-v1.9.1.bin
|
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20170612-v1.9.1.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
Upload main.py and boot.py and adjust network configuration in boot.py accordingly.
|
Upload main.py and boot.py and adjust network configuration in boot.py accordingly:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ampy -p /dev/ttyUSB0 put boot.py
|
||||||
|
ampy -p /dev/ttyUSB0 put main.py
|
||||||
|
```
|
||||||
|
|
||||||
## Assembly tips
|
## Assembly tips
|
||||||
|
|
||||||
|
17
boot.py
17
boot.py
@ -1,17 +1,16 @@
|
|||||||
# Just in case prevent boot loops
|
|
||||||
from time import sleep
|
# Disable AP
|
||||||
print("Press Ctrl-C to stop boot script...")
|
import network
|
||||||
sleep(1)
|
ap_if = network.WLAN(network.AP_IF)
|
||||||
|
ap_if.active(False)
|
||||||
|
print("Access point disabled")
|
||||||
|
|
||||||
# Connect to wireless network as client
|
# Connect to wireless network as client
|
||||||
import network
|
|
||||||
sta_if = network.WLAN(network.STA_IF)
|
sta_if = network.WLAN(network.STA_IF)
|
||||||
sta_if.active(True)
|
sta_if.active(True)
|
||||||
sta_if.connect("Robootikaklubi", "u4HNj3sgYK")
|
sta_if.connect("Robootikaklubi", "u4HNj3sgYK")
|
||||||
|
while not sta_if.isconnected():
|
||||||
# Synchronize clock
|
pass
|
||||||
import ntptime
|
|
||||||
ntptime.settime()
|
|
||||||
|
|
||||||
# Clean up
|
# Clean up
|
||||||
import gc
|
import gc
|
||||||
|
25
main.py
25
main.py
@ -1,11 +1,25 @@
|
|||||||
|
|
||||||
|
import ntptime
|
||||||
|
import esp
|
||||||
from time import sleep, localtime
|
from time import sleep, localtime
|
||||||
from machine import Pin, Timer
|
from machine import Pin, Timer
|
||||||
|
|
||||||
|
TIMEZONE = 3
|
||||||
|
RESYNC = 7200 # Resync once in two hours
|
||||||
|
|
||||||
|
print("Press Ctrl-C now abort main.py execution and to retain keyboard input")
|
||||||
|
sleep(1)
|
||||||
|
|
||||||
|
# Configure powersave
|
||||||
|
esp.sleep_type(esp.SLEEP_LIGHT)
|
||||||
|
|
||||||
|
# Note that keyboard input is lost beyond this point!
|
||||||
clock = Pin(3, mode=Pin.OUT)
|
clock = Pin(3, mode=Pin.OUT)
|
||||||
latch = Pin(0, mode=Pin.OUT)
|
latch = Pin(0, mode=Pin.OUT)
|
||||||
data = Pin(2, mode=Pin.OUT)
|
data = Pin(2, mode=Pin.OUT)
|
||||||
blink = 0
|
blink = 0
|
||||||
lookup = 11, 9, 12, 8, 0, 4, 1, 3, 2, 10
|
lookup = 11, 9, 12, 8, 0, 4, 1, 3, 2, 10
|
||||||
|
countdown = 0
|
||||||
|
|
||||||
def bitbang_bit(value):
|
def bitbang_bit(value):
|
||||||
if value & 1:
|
if value & 1:
|
||||||
@ -17,7 +31,7 @@ def bitbang_bit(value):
|
|||||||
|
|
||||||
def bitbang_digit(digit):
|
def bitbang_digit(digit):
|
||||||
bitbang_bit(blink)
|
bitbang_bit(blink)
|
||||||
for i in range(0,width):
|
for i in range(0,4):
|
||||||
bitbang_bit(lookup[digit] << i >> 3)
|
bitbang_bit(lookup[digit] << i >> 3)
|
||||||
bitbang_bit(blink)
|
bitbang_bit(blink)
|
||||||
bitbang_bit(blink)
|
bitbang_bit(blink)
|
||||||
@ -26,12 +40,19 @@ def bitbang_digit(digit):
|
|||||||
timer = Timer(-1)
|
timer = Timer(-1)
|
||||||
|
|
||||||
def schedule(delay=0):
|
def schedule(delay=0):
|
||||||
|
global countdown
|
||||||
|
if countdown <= 0:
|
||||||
|
ntptime.settime()
|
||||||
|
countdown = RESYNC
|
||||||
|
print("Resync")
|
||||||
|
countdown -= 1
|
||||||
if delay:
|
if delay:
|
||||||
timer.init(period=1000, mode=Timer.ONE_SHOT, callback=dump)
|
timer.init(period=1000, mode=Timer.ONE_SHOT, callback=dump)
|
||||||
else:
|
else:
|
||||||
dump()
|
dump()
|
||||||
|
|
||||||
def dump_time(hour, minute, second):
|
def dump_time(hour, minute, second):
|
||||||
|
print("Time is %02d:%02d:%02d" % (hour, minute, second))
|
||||||
bitbang_digit(hour // 10)
|
bitbang_digit(hour // 10)
|
||||||
bitbang_digit(hour % 10)
|
bitbang_digit(hour % 10)
|
||||||
bitbang_digit(minute // 10)
|
bitbang_digit(minute // 10)
|
||||||
@ -42,7 +63,7 @@ def dump_time(hour, minute, second):
|
|||||||
def dump(t=None):
|
def dump(t=None):
|
||||||
global blink
|
global blink
|
||||||
year, month, day, hour, minute, second, _, millis = localtime()
|
year, month, day, hour, minute, second, _, millis = localtime()
|
||||||
dump_time((hour + 3) % 24, minute, second)
|
dump_time((hour + TIMEZONE) % 24, minute, second)
|
||||||
latch.on()
|
latch.on()
|
||||||
latch.off()
|
latch.off()
|
||||||
blink = 1-blink
|
blink = 1-blink
|
||||||
|
Loading…
Reference in New Issue
Block a user