diff --git a/README.md b/README.md
index cf71fc9..330afa6 100644
--- a/README.md
+++ b/README.md
@@ -11,6 +11,14 @@
 
 [![https://www.youtube.com/watch?v=EnLS2lJF1Ls](http://img.youtube.com/vi/EnLS2lJF1Ls/0.jpg)](http://www.youtube.com/watch?v=EnLS2lJF1Ls "Battery Gauges")
 
+** TinyWifiScanner.ino **
+
+A small WiFi scanner and battery meter for the Heltec WiFi Kit 8 - Click to watch demo video:
+
+[![TinyWiFiSccanner](http://img.youtube.com/vi/5GtzhiT66i0/0.jpg)](http://www.youtube.com/watch?v=5GtzhiT66i0 "TinyWiFiScanner")
+
 # Useful links
 
-Use the following guide to setup the arduino environment for the wifi kit 8: [https://robotzero.one/heltec-wifi-kit-8/](https://robotzero.one/heltec-wifi-kit-8/)
\ No newline at end of file
+Use the following guide to setup the arduino environment for the wifi kit 8: [https://robotzero.one/heltec-wifi-kit-8/](https://robotzero.one/heltec-wifi-kit-8/)
+
+Simple how to set up for access point mode or station mode: [https://lastminuteengineers.com/creating-esp8266-web-server-arduino-ide/](https://lastminuteengineers.com/creating-esp8266-web-server-arduino-ide/)
\ No newline at end of file

diff --git a/README.md b/README.md
index cf71fc9..330afa6 100644
--- a/README.md
+++ b/README.md
@@ -11,6 +11,14 @@
 
 [![https://www.youtube.com/watch?v=EnLS2lJF1Ls](http://img.youtube.com/vi/EnLS2lJF1Ls/0.jpg)](http://www.youtube.com/watch?v=EnLS2lJF1Ls "Battery Gauges")
 
+** TinyWifiScanner.ino **
+
+A small WiFi scanner and battery meter for the Heltec WiFi Kit 8 - Click to watch demo video:
+
+[![TinyWiFiSccanner](http://img.youtube.com/vi/5GtzhiT66i0/0.jpg)](http://www.youtube.com/watch?v=5GtzhiT66i0 "TinyWiFiScanner")
+
 # Useful links
 
-Use the following guide to setup the arduino environment for the wifi kit 8: [https://robotzero.one/heltec-wifi-kit-8/](https://robotzero.one/heltec-wifi-kit-8/)
\ No newline at end of file
+Use the following guide to setup the arduino environment for the wifi kit 8: [https://robotzero.one/heltec-wifi-kit-8/](https://robotzero.one/heltec-wifi-kit-8/)
+
+Simple how to set up for access point mode or station mode: [https://lastminuteengineers.com/creating-esp8266-web-server-arduino-ide/](https://lastminuteengineers.com/creating-esp8266-web-server-arduino-ide/)
\ No newline at end of file
diff --git a/TinyWiFiScanner.ino b/TinyWiFiScanner.ino
new file mode 100755
index 0000000..d927f7f
--- /dev/null
+++ b/TinyWiFiScanner.ino
@@ -0,0 +1,219 @@
+/*
+    This sketch demonstrates how to scan WiFi networks.
+    The API is almost the same as with the WiFi Shield library,
+    the most obvious difference being the different file you need to include:
+*/
+#include "ESP8266WiFi.h"
+#include <Arduino.h>
+#include <U8g2lib.h>
+
+#ifdef U8X8_HAVE_HW_SPI
+#include <SPI.h>
+#endif
+#ifdef U8X8_HAVE_HW_I2C
+#include <Wire.h>
+#endif
+
+U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ 16, /* clock=*/ 5, /* data=*/ 4);
+ADC_MODE(ADC_VCC);
+
+void setup() {
+  Serial.begin(115200);
+
+  // sceen stuff
+  pinMode(10, OUTPUT);
+  pinMode(9, OUTPUT);
+  digitalWrite(10, 0);
+  digitalWrite(9, 0);   
+  u8g2.begin();  
+  u8g2.enableUTF8Print(); 
+
+  Serial.println("Setup done");
+
+  getBatteryLevel();
+
+  // Set WiFi to station mode and disconnect from an AP if it was previously connected
+  WiFi.mode(WIFI_STA);
+  WiFi.disconnect();
+  delay(100);
+}
+
+void getBatteryLevel() { 
+  u8g2.setFont(u8g2_font_8x13_mf); 
+  
+  uint32_t getVcc = ESP.getVcc();
+  Serial.println(getVcc);
+
+  // printing getVcc to screen
+  /*
+  String batvol2 = "";
+  batvol2 += getVcc;
+  char batChr[batvol2.length()+1]; 
+  batvol2.toCharArray(batChr, batvol2.length()+1);
+  u8g2.drawStr(0,10,batChr);
+  */
+
+  float measuredvbat = getVcc; // for actual voltage
+  measuredvbat /= 1024; // convert to voltage 
+  Serial.println(measuredvbat);
+
+  //printing actual votage to screen
+  /*
+  String batvol = "";
+  batvol += measuredvbat;
+  char batChr2[batvol.length()+1]; 
+  batvol.toCharArray(batChr2, batvol.length()+1);
+  u8g2.drawStr(0,20,batChr2);
+  */
+ 
+  int percent = map(getVcc, 2300, 3000, 1, 11); // turn vcc into batt perentage (yea I know it's not that accurate due to dropoff rate)
+  if(percent > 11){ percent = 11; }
+  if(percent < 1){ percent = 1; }
+  
+  u8g2.setFont(u8g_font_unifont);
+  //u8g.setFont(u8g_font_osb21);
+  u8g2.drawFrame(111,24,15,8);
+  u8g2.drawBox(113,26,percent,4); //3rd param is %(1-11)
+  u8g2.drawBox(126,26,2,4);
+ 
+}
+
+void drawScrollString(int16_t offset, const char *s){
+  static char buf[36];  // should for screen with up to 256 pixel width 
+  size_t len;
+  size_t char_offset = 0;
+  u8g2_uint_t dx = 0;
+  size_t visible = 0;
+  
+  u8g2.setDrawColor(0);   // clear the scrolling area
+  u8g2.drawBox(0, 30, u8g2.getDisplayWidth()-1, u8g2.getDisplayHeight()-1);
+  u8g2.setDrawColor(1);   // set the color for the text
+    
+  len = strlen(s);
+  if ( offset < 0 )
+  {
+    char_offset = (-offset)/8;
+    dx = offset + char_offset*8;
+    if ( char_offset >= u8g2.getDisplayWidth()/8 )
+      return;
+    visible = u8g2.getDisplayWidth()/8-char_offset+1;
+    strncpy(buf, s, visible);
+    buf[visible] = '\0';
+    u8g2.setFont(u8g2_font_6x10_mf);
+    u8g2.drawStr(char_offset*8-dx, 30, buf);
+  }
+  else
+  {
+    char_offset = offset / 8;
+    if ( char_offset >= len )
+      return; // nothing visible
+    dx = offset - char_offset*8;
+    visible = len - char_offset;
+    if ( visible > u8g2.getDisplayWidth()/8+1 )
+      visible = u8g2.getDisplayWidth()/8+1;
+    strncpy(buf, s+char_offset, visible);
+    buf[visible] = '\0';
+    u8g2.setFont(u8g2_font_6x10_mf);
+    u8g2.drawStr(-dx, 30, buf);
+  }
+  
+}
+
+void loop() {
+  //u8g2.clearBuffer(); // only need this if you want "scanning..." on a clear screen!
+
+  int16_t offset = -(int16_t)u8g2.getDisplayWidth();
+  int16_t len = strlen("Scanning...");
+  for(;;)              // then do the scrolling
+  {
+  
+    drawScrollString(offset, "Scanning...");        // no clearBuffer required, screen will be partially cleared here
+    getBatteryLevel();
+    u8g2.sendBuffer();        // transfer internal memory to the display
+
+    delay(20);
+    offset+=2;
+    if ( offset > len*8+1 )
+      break;
+  }
+  u8g2.sendBuffer();
+  
+  Serial.println("scan start");
+
+  // WiFi.scanNetworks will return the number of networks found
+  int n = WiFi.scanNetworks();
+  Serial.println("scan done");
+  if (n == 0) {
+    Serial.println("no networks found");
+  } else {
+    Serial.print(n);
+    Serial.println(" networks found");
+    
+    for (int i = 0; i < n; ++i) {
+      // Print SSID and RSSI for each network found
+      Serial.print(i + 1);
+      Serial.print(": ");
+      Serial.print(WiFi.SSID(i));
+
+      u8g2.clearBuffer();
+      u8g2.setFont(u8g2_font_8x13_mf);
+      char ssid[WiFi.SSID(i).length()+1]; 
+      WiFi.SSID(i).toCharArray(ssid, WiFi.SSID(i).length()+1);
+      u8g2.drawStr(0,9,ssid);
+      u8g2.print(WiFi.SSID(i));
+      
+      Serial.print(" (");
+      Serial.print(WiFi.RSSI(i));
+      Serial.print(")");
+      Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*");
+      u8g2.setFont(u8g2_font_6x12_mf);
+
+      switch(WiFi.encryptionType(i)){
+        case ENC_TYPE_NONE:
+          u8g2.drawStr(0,21,"Open"); 
+          break;
+        case ENC_TYPE_WEP:
+          u8g2.drawStr(0,21,"WEP"); 
+          break;
+        case ENC_TYPE_TKIP:
+          u8g2.drawStr(0,21,"WPA/PSK"); 
+          break;
+        case ENC_TYPE_CCMP:
+          u8g2.drawStr(0,21,"WPA2/PSK"); 
+          break;
+        case ENC_TYPE_AUTO:
+          u8g2.drawStr(0,21,"WPA/WPA2/PSK"); 
+          break;
+        default:
+          u8g2.drawStr(0,21,"Unknown Encryption"); 
+          break;
+      }
+
+      u8g2.setFont(u8g2_font_6x10_mf);
+      String chStr = "";
+      chStr += WiFi.channel(i);
+      char chan[chStr.length()+1]; 
+      chStr.toCharArray(chan, chStr.length()+1);
+      
+      String rssiStr = "";
+      rssiStr += WiFi.RSSI(i);
+      char rssi[rssiStr.length()+1]; 
+      rssiStr.toCharArray(rssi, rssiStr.length()+1);
+      String toWrite = "ch: "+chStr+" dB: "+rssiStr;
+      
+      char chrWrite[toWrite.length()+1]; 
+      toWrite.toCharArray(chrWrite, toWrite.length()+1);
+      
+      u8g2.drawStr(0,32,chrWrite); 
+
+      getBatteryLevel();
+      
+      u8g2.sendBuffer();
+      delay(2000); // was 2000
+    }
+  }
+  Serial.println("");
+
+  // Wait a bit before scanning again
+  delay(1000);
+}