Dependancies
Buy the components
measure-battery-voltage.ino
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
String AP_NamePrefix = "Cactus ";
const char WiFiAPPSK[] = "hutscape";
unsigned int raw = 0;
float volt = 0.0;
ESP8266WebServer server(80);
void setup() {
Serial.begin(115200);
pinMode(A0, INPUT);
initAccessPoint();
}
void loop() {
raw = analogRead(A0);
volt = raw / 1023.0;
volt *= 4.2;
Serial.print("\n[INFO] Raw analog value is ");
Serial.println(raw);
Serial.print("[INFO] Current voltage is ");
Serial.print(volt);
Serial.println("V");
server.handleClient();
}
void initAccessPoint() {
Serial.println("\n[INFO] Configuring access point");
WiFi.mode(WIFI_AP);
String AP_NameString = getAPName();
// convert String to char array
char AP_NameChar[AP_NameString.length() + 1];
memset(AP_NameChar, 0, AP_NameString.length() + 1);
for (int i=0; i < AP_NameString.length(); i++)
AP_NameChar[i] = AP_NameString.charAt(i);
WiFi.softAP(AP_NameChar, WiFiAPPSK);
startServer();
Serial.print("[INFO] Started access point at IP ");
Serial.println(WiFi.softAPIP());
}
String getAPName() {
uint8_t mac[WL_MAC_ADDR_LENGTH];
WiFi.softAPmacAddress(mac);
String macID = String(mac[WL_MAC_ADDR_LENGTH - 2], HEX) +
String(mac[WL_MAC_ADDR_LENGTH - 1], HEX);
macID.toUpperCase();
return AP_NamePrefix + macID;
}
void startServer() {
server.on("/", handleRoot);
const char * headerkeys[] = {"User-Agent", "Cookie"};
size_t headerkeyssize = sizeof(headerkeys)/sizeof(char*);
server.collectHeaders(headerkeys, headerkeyssize);
server.begin();
}
void handleRoot() {
String content = "<h1>Check the current LiPo voltage!</h1>";
content += "<p>Battery voltage: ";
content += String(volt);
content += "V</p>";
server.send(200, "text/html", content);
Serial.println("[INFO] Called /GET 200");
}
.PHONY: lint compile upload clean
lint:
cpplint --extensions=ino --filter=-legal/copyright,-readability/todo *.ino
compile:
arduino-cli compile --fqbn esp8266com:esp8266:d1_mini ./
upload: compile
arduino-cli upload -p /dev/cu.wchusbserial1410 --fqbn esp8266com:esp8266:d1_mini ./
clean:
rm -f .*.bin
rm -f .*.elf
flash: lint compile upload clean
Measure the LiPo battery voltage and ping that value to the cloud.
Connect 100k
resistor from A0
to JST connector’s positive terminal of the WeMos battery shield.
Instructions:
Cactus XXXX
with password hutscape
cactus.local