Bypic Bv508 Loading Settings from Sd Card
As mentioned in my previous post i have been trying out the bv508 mcu with esp8266. Check out it Here
Im currently working on a web based monitoring system for a friend and came to a problem with the ability of regularly changing the WiFi settings.
As the system would be permanently installed and just have a few buttons and no lcd and connection a serial terminal seem too difficult for my non technical friend. I decided to simply house a configuration txt file on a SD card and the system would read and load the settings on startup.
Again i was able to do this in only a few lines of code and thought it was worth sharing.
How it works ?
User simply modifies config file on Sd card and inserts and resets power.
On power up my script will first flash the led three times (card & Indicating config file) and will then attempt loading the wifi settings .
If connection is successful the led will light. At this point the sd card can be removed. If power was reset with no card (no led three flashes) it simply would not try to load the new wifi settings would just connected network stored in Esp8266 flash. You will still get green led on to indicate wifi connected.
Hardware
Connect the sd holder to ic2 bus.
SD Card Connection instructions here
Connect Green led to C3
Install bv508 Firmware
1)Install bv508 firmware with SD card support.
2)Now re-Install esp8266 /dt11 rookie.
http://www.byvac.com/mBlib/flb/Library/wifi/ESP8266_DHT.script
Config file:
On root of SD card called “CONF.TXT”
with the content as below
SSID:yourssid PASS:Yourpass
Code:
// SIMPLE Bv508 LOAD WIFI Setting from SD card
// Example By Luke (www.ls-homeprojects.co.uk)
// Free to use this code how you like but please link my site
//Requirements
//bv508 with sd firmware and ESP8266 Script
// How to use
// (1) Copy and save on bv508 (see bypic homepage
//http://www.bypic.co.uk)
//(2) Save to flash ie flsave("")
//(3) Will launch at power up ! </span>
constant GRN_LED {PORTC(PORT),3} // Set Led pin
constant File$ "CONF.TXT" //change this to your file name
//File structure , has to be as per this to work !
//<firstline> SSID:yourssid
//<secondline> PASS:yourpass
function flash_led()
io_pinSet(*GRN_LED(),1) // Flash led to indicate config file
wait(200)
io_pinSet(*GRN_LED(),0)
endf
function get_setting$(line)
dim f, a$[128], j ,s_v$[128]
dim p=0
f=fopen(File$,"r") //Open file
if f <> 0 then
for j = 0 to line
fgets(a$,f) // Read chosen line
next
fclose(f) // Close file
token$(a$,*p,':') // dummy as this will be first split item ie setting ID
s_v$= token$(a$,*p,':') //
return mid$(s_v$,0,strlen(s_v$)-2)// Return the Value of the setting + strip cr
else
return 0 // return 0 as Error file doesnt exist / Card not inserted
endif
endf
function connect()
wfPower(1)
wf_start()
mode(1)
if get_setting$(0) = 0 then
print "Error reading setting does file and SD card exist ?"
else
flash_led()
wait(200) // flash led to indicate card with config file
flash_led()
wait(200)
flash_led()
dim ssid_r$ = get_setting$(0) //Get ssid from line 1 settings txt file
dim pass_r$ = get_setting$(1) //Get pass from line 2 settings txt file
join(ssid_r$,pass_r$) // connect to wifi
endif
if isIP() = 1 then // check wifi connection !
io_pinSet(*GRN_LED(),1) // connected light green status led
else
io_pinSet(*GRN_LED(),0) // No connection , turn led off
print "\nUnable to get IP address"
return
endif
info() // display wifi info
endf
function main()
io_pinRole(*GRN_LED(),OUT,WOFF) // Set led as output
io_pinSet(*GRN_LED(),0) // Turn led off
connect() // Connect on power on
endf
Leave a Reply