FLiP + WX WiFi base
Rsadeika
Posts: 3,837
in Propeller 1
This is a start for a prototyping base unit; the breadboard has a FLiP module and a WX SIP module. I power it with two li-ion batteries hooked up in a series configuration, to get ~8VDC.
So far it is working as expected, but a weird thing is occurring. I have an LED connected to P0, and when the px1_flip.c program is run, the LED starts to flash. Since I do not have a command for flashing the LED, I am not sure what is causing the LED to flash on P0. Yes, I am using SimpleIDE, hopefully someday that will get an update.
Since the FLiP module does not have an ADC option, I am experimenting with a Micromite processor, since it has six ADC pins to play with. I am also very sure that I can make a serial connection to the Micromite to get access to the ADC readings, which will than be available to view in the html code.
Next thing will be to add an SD breakout, for data logging, and a temp/humidity module, of some kind.
Ray
px1_flip.html
So far it is working as expected, but a weird thing is occurring. I have an LED connected to P0, and when the px1_flip.c program is run, the LED starts to flash. Since I do not have a command for flashing the LED, I am not sure what is causing the LED to flash on P0. Yes, I am using SimpleIDE, hopefully someday that will get an update.
Since the FLiP module does not have an ADC option, I am experimenting with a Micromite processor, since it has six ADC pins to play with. I am also very sure that I can make a serial connection to the Micromite to get access to the ADC readings, which will than be available to view in the html code.
Next thing will be to add an SD breakout, for data logging, and a temp/humidity module, of some kind.
Ray
/* px1_flip.c May 11, 2018 Parallax FLiP module with a WX WiFi SIP module attached to create a battery powered, stand alone remote base unit that is accessed via px1_flip.html. -Wish list: The FLiP module having four ADC pins available. -Ver .01: Base unit running an internet up-dateable softRTC via px1_flip.html. */ #include "simpletools.h" #include "wifi.h" #include "datetime.h" /* softRTC */ datetime dt = {2018, 1, 1, 0, 0, 0}; char dates[9]; char times[9]; int day,month,year; int hour,minutes,seconds; /**********/ /* WiFi */ int event, id, handle; int getFromPageId; char cmdStr[64]; char *path; /**********/ /* Function declaration */ void CRgetTime(); /**********/ int main() { // Add startup code here. dt_run(dt); // Start softRTC pause(150); wifi_start(31, 30, 115200, WX_ALL_COM); // Start WiFi pause(150); getFromPageId = wifi_listen(HTTP, "/tpfm*"); // WiFi while(1) { // Add main loop code here. wifi_poll(&event, &id, &handle); if(event == 'G') { if(id == getFromPageId) { /* Expansion of GET functionality */ memset(cmdStr, 0, sizeof(cmdStr)); sprint(cmdStr, "PATH:%d\r", handle); path = wifi_command(cmdStr); if(strstr(path, "/diag") !=0) { CRgetTime(); // Get the time and date wifi_print(GET, handle, "%s - %s", dates,times); } //else if() //{ //} } } if(event == 'P') { if(id == getFromPageId) { /* Expansion of POST functionality */ memset(cmdStr, 0, sizeof(cmdStr)); sprint(cmdStr, "PATH:%d\r", handle); path = wifi_command(cmdStr); if(strstr(path,"/datetime") !=0) { wifi_scan(POST, handle, "month%d%d%d%d%d%d",&month,&day,&year,&hour,&minutes,&seconds); dt.y=year; dt.mo=month; dt.d=day; dt.h=hour; dt.m=minutes; dt.s=seconds; dt_set(dt); } //else if() //{ //} } } pause(50); } } /**********/ /* Functions */ void CRgetTime() { dt = dt_get(); dt_toTimeStr(dt, times); dt = dt_get(); dt_toDateStr(dt, dates); } /**********/
px1_flip.html
<!-- px1_flip.html --> <!DOCTYPE HTML> <html> <head> <style> a{ background-color:#637aad; color:white; font-size:23px; margin:5px; width:100px; height:55px; cursor:pointer; padding-top:4px; padding-bottom:4px; } a:hover{background-color:white;color:navy;} </style> </head> <body bgcolor=3b5898> <br> <br> <br> <font face="Arial" size=3 color="cyan"> <a onclick="datetimeBtn()">DateTime</a> -- Update softRTC <br> <br> <br> <a onclick = "getFromMcu('diag')">Firmware</a> -- Check FLiP module firmware <font face="Arial" size=5 color="cyan"> <p id = "value">Wating...</p> </body> <script> var getPathExt; function useMcuReply(response) { if(getPathExt = 'diag') { var val = document.getElementById("value"); val.innerHTML = "Value: " + response; } } function getFromMcu(pathExt) { getPathExt = pathExt; httpGet("/tpfm/" + pathExt, useMcuReply); } function httpGet(path, callback) { var req = new XMLHttpRequest(); req.open("GET", path, true); req.onreadystatechange = function() { if(req.readyState == 4) if(req.status == 200) callback(req.responseText); else callback("Wating..."); } req.send(null); } function httpPost(path, param) { var req = new XMLHttpRequest(); req.open("POST", path, true); req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.send(param); } function datetimeBtn() { var dt = new Date(); day = dt.getDate(); var dt1 = new Date(); month = dt1.getMonth(); month = month +1; var dt2 = new Date(); year = dt2.getFullYear(); var dt3 = new Date(); var hours = dt3.getHours(); var dt4 = new Date(); var minutes = dt4.getMinutes(); var dt5 = new Date(); var seconds = dt5.getSeconds(); var send = "month=" + month + "day=" + day + "year=" + year + "hour=" + hours + "minutes=" + minutes + "seconds=" + seconds; httpPost("/tpfm/datetime",send); } </script> </html>
Comments
Since I have a pause() in the main() while(1) loop, if I increase or decrease the time, in the pause(), it shows up in the LED flashing cycle. Now I am wondering if there is something in the wifi_poll() function that is affecting P0?
A brief overview, I have the WX module set for STA+... mode, so I can place the mobile base unit within a wifi signal range to gain access to it. At the moment when I start the program it starts the softRTC and then from a browser I can have the clock updated and view the results. Once I work out the install and connect to the Micromite, I will be able to view the battery voltage, in the html browser app.
Ray
So it looks like it might be something in the wifi_start() function that is affecting P0. Adding a low(0) right after the wifi_start() did not help, the LED keeps on flashing. It does not help if I put a low(0) right after the wifi_poll(), either. I am now wondering if some of the other pins are being affected, since I tried P1, I know that is not affected, at least it is not setting the pin high.
Ray
Does the LED light up when p0 is low or when it's high? You say it flashes, but can you be more specific? E.g., "on for a second, off for a second, repeatedly" or "flickers multiple times a second for two seconds, then off for a second"--something along those lines?
Maybe do some experiments with different pins in the second argument to your wifi_start() call.
Now, either my FLiP module has a problem with P0, or the problem is within wifi_start() and wifi_poll() functions. I am now hoping that somebody with a FLiP + WX wifi module(s) set can duplicate the problem. I also checked P1-P25, those pins do not blink the LED, so I will assume that that is OK.
I am probably going to start coding to see if I can set up a decent communication between the FLiP and the Micromite. I want to do some data logging of battery functionality, and be able to see what the battery charge is at. Since the li-ion battery Ah is only 2.6 Ah, I need to know how long it can run before it needs a battery charge.
Ray
and
Should be:
and