MicroPython on ESP8266

January 31, 2017

This is an example post, extracted from my
OneNote Notebook with specifics on getting micropython working on
Please excuse any typos below… there
are my notes after all, and I only am publishing them as an example of
what is possible with OneNote.

on Esp8266 Tutorial


Wemos D1 with esp8266MOD
WROOM v2 (aka ESP-13, aka ESP8266MOD
From <https://esp8266hints.wordpress.com/tag/esp8266mod/>
With 4MB SPI flash
wemos d1 pro
module, 16M SPI flash

Install / load / reinstall micropython on
the Wemos D1

Install the driver-

The wemos d1 uses a cheap

driver download:

installing python on pc, need to install python and then use the
ESPtool to install or reflash / update the firmware to the wemos d1. it
may ship with NODEMCU or AT commands.
help using python pip install and packages
This guide uses 2.7 as of the writing of this install. This is
installed on the PC you are using. Do not use python 3 .
Make sure that it installs / registers itself in the local path so that
you can use the reguar “cmd” prompt. Else it might cause issues.
If things don’t work restart.
open the python command line

esptool from the python command line.

install esptool

If this command does not work, then you need to figure out how to get
python installed properly. You should be able to use the windows
terminal for this command.
Try restarting

are the esptool github details if you need to do it manually, or refer
to instructions.

all available commands
–port COM6 –baud 115200 read_flash 0x0000000 4096 dump.dmp
out the first 4096 bytes to a file called dump to the current director

hex dump file using a hex capable editor (notepad++ with hex edit
plugin installed

method… use the GUI for esp8266
use nodemcu-flasher (https://github.com/nodemcu/nodemcu-flasher)

under Win32
From <https://forum.micropython.org/viewtopic.php?t=2166>

the esp8266, install image.
From windows Cmd prompt

all available commands
–port COM6 –baud 115200 erase_flash
the flash
Download (http://micropython.org/download#esp8266)
and then copy the image file to the working drectory
–port COM6 write_flash -fm dio -fs 32m -ff 40m 0x0000000
the new image. The image is in the directory that you are in so in this
case c:/esp/lfasfile.bin

(optional… dum it again and verify the memory is all ff ff ff ff)

to see if it installed.
Check device manager for com port – Open com port
Open Putty (serial / console software) settings
Connect using (usb) serial console
115200 / 8 / no parity /1 stop/no flow ctl
show up on wifi. Don’t connect yet.

will now be using the Putty Terminal to type commands.
This is called the REPL (Read Execute Python Language)
Once you open the connection:
Hit the Enter key at the cursor and wait for the prompt >>>
Try the hello world program

(“Hello World”!)
hello world mesage
Esp.check_fw() Checks

If the last output value is True, the firmware is OK. Otherwise, it’s
corrupted and need to be reflashed correctly.
From <https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/intro.html>

lets set up WEBREPL so that we can do this from a browser

the repl setup
and Set the web console password and then reboot

After a fresh install and boot the device configures itself as a WiFi
access point (AP) that you can connect to. The ESSID is of the form
MicroPython-xxxxxx where the x’s are replaced with part of the MAC
address of your device (so will be the same everytime, and most likely
different for all ESP8266 chips). The password for the WiFi is micropythoN
(note the upper-case N). Its IP address will be once you
connect to its network. WiFi configuration will be discussed in more
detail later in the tutorial.
From <https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/intro.html>


Wifi connection of the device is

MicroPython-xxx micropythoN

There is no webpage. It will go nowhere. You can only connect by
WebRepl, for now

we install the webrepl client on your Computer.
Here is an example of what it would look like once installed. You could
use this if your computer is hard wired or connected to the same wifi.
Otherwise, we will install this on your local machine.
Functional example:
Install it locally using this link
Extract the files to a folder
Open the html file
Click the connect button
Enter the password you setup earlier of the serial console

with the simple LED on the board
>>> import
>>> pin
machine.Pin(2, machine.Pin.OUT)
>>> pin.high()
>>> pin.low()
From <https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/repl.html>

cannot simply copy and paste code into the repl console. It will throw
To enter a special “paste mode” hit
This will allow you to paste in chunks of text.
to exit this mode and execute the code as entered
code you enter at the REPL does not persist past reboot unless you save
it to a file. Say for example the entered the led toggle code above.
After unplugging and re-pugging in the code, you cant call the toggle
function. If you have your board connected over serial and hot the
reset button, you will see it reload in the console window.
To have your code persist, you would need to start creating files to
make the code permanent.
To view the files on the esp8266 , type the following:

Import os
Os.listdir() This
is like the “dir” or “ls” commands on a computer
Os.mkdir(‘cats’) Makes
a folder called cats
Os.rmdir(‘cats’) Deletes
the folder cats
Os.remove(fine.txt) Deletes
a file called fine.txt

Additionally, you can upload a file from your computer using the
webrepl console.
3.3. Start up

There are two files that
are treated specially by the ESP8266 when it starts up: boot.py and
main.py. The boot.py script is executed first (if it exists) and then
once it completes the main.py script is executed. You can create these
files yourself and populate them with the code that you want to run
when the device starts up.

From <https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/filesystem.html>

all available commands

Leave a Comment

This is a test post

November 18, 2016





1 Comment

Disable OneNote activity notification emails

July 27, 2016

Somewhat recently, Microsoft automatically enabled notifications for all of my onenote notebooks. I was on vacation in Scarborough, Me recently, and the notification emails drove me nuts! It really is a nice idea, but as I am in my onenote all day, deleting emails saying “Here’s a summary of recent activity in your notebook” is not exactly how I want to spend my free time.

I also happen to have multiple onedrive accounts, so when I am working in my own shared OneNote, it appears like someone else is making changes.


The fix is very simple.

Part 1. Fix the problem.

  1. Click the update notification settings link at the bottom of one of those annoying emails.
  2. Disable / Enable notification for your desired OneNote Notebook, or disable them all.

update notification settings


onenote online notebook notification settings



Part 2. Prevent Future Outbreaks.

  1. Log in to your personal onedrive account (the one where the onenote notebook is located
  2. Go to options > Notifications
  3. Uncheck the box for “someone makes changes to files I shared





ta-da, No more emails.

Leave a Comment

Annoying windows 10 notifications

May 19, 2016

Alternative title: How you can still use your windows 10 pc and stay sane.

I hate notifications on my pc.

Traditionally, the audio clips Microsoft “designed” for notifications have been the most annoying creations possible. The new visual notifications are also something dredged from the lowest swap. Combined, these will drive you insane!

Microsoft Spoiler: Go to “Notifications & Actions” settings, then “Show notifications from these apps”.

Turn off the “Send to OneNote Tool”.

From <http://answers.microsoft.com/en-us/office/forum/office_onenote-onenote_2013/new-onenote-screen-clipping-notification-appears/5ef7a417-9c0f-450a-830c-f7f04aefc49a?auth=1

Disable notifications for specific apps:

Depending on your settings, OneNote notifies you EVERY TIME you take a screen clipping with an audio and visual notification.

The fix is easy. Search for notifications and turn them off the onenote tool.

Leave a Comment

Blogging directly from OneNote

May 19, 2016

Alternative title: One easy trick bloggers don’t want you to know!

Writing blogs does not have to be an arduous process. The number one nuisance for me is saving and uploading images. With OneNote (desktop), that problem is eliminated, as images are uploaded to your blog automatically when you post directly.

It only takes a few clicks to set up (assuming you have already set up a blog or website). Write up your article, insert your photos, and click send to blog!

You will be presented with a screen asking what provider you are using. Blogger, wordpress, and sharepoint are the top three supported platforms.

After that, simply type in your website in place of the carots and enter your credentials. (Don’t worry if you get an error, just check your spelling and try again… it took me 4 tries to realize I typed my own website address wrong.)

Once you are connected, you will be presented with a Word document containing your post, allowing one final look before you release it to “the cloud”. Find the publish button at the top left.

I like to upload my articles as a draft first, as there can be a few spacing and formatting issues that are not obvious from within OneNote / Word.

From there, simply log in to your blog, review for formatting and do a final check of links and spelling, and publish!

Happy Blogging!

Leave a Comment

One lazy trick the IT guy uses to fix your computer

April 5, 2016

Catchy internet marketing titles aside, this article shows you how to use msra.exe to remotely connect to computers that you control.

Tired of walking through the snow and rain to help with simple helpdesk requests?

Behold the power of Remote Assistance, built right into windows! This feature can be implemented for your environment, assuming that you are using Active Directory and Group Policy with your windows 7/8 environment. This allows you (or your minions) to remotely offer assistance to a user, initiating an “unsolicited” interactive remote desktop connection, with the option for you to request control of their machine. This does not, however, allow you to force remote control of the user’s computer. (There used to be a trick for Windows XP, but it does not work with windows 7/8)


  • The computer is connect to a windows domain that you have control over.
  • You / the helper must have domain credentials with local admin permissions to the remote computer.
  • You must be a domain admin, or have rights to create and manage Group Policy Users and Groups.
  • You may need to configure additional GPO settings for windows firewall and UAC


Step 1 – (for you, the helper)

  • Create a shortcut to C:\Windows\System32\msra.exe /offerra

Step 2 – (on your Domain)

  • Create a group that will be allowed to initiate connections.
  • Example “Offer Remote Assistance Helpers”
  • Add users to the group who will have permission to remotely assist others.

Step 3 – create a new GPO in an OU containing computers, called “Remote Assistance Policy”

  • Edit the GPO for Computer Configuration.

Step 3.1

  • Computer Configuration > Policies > Windows Settings > Security Settings > Restricted Groups
  • Right click/ Add Group
  • Type in or Browse for the Active directory group you created above.

Step 3.2

  • Go to Computer Configuration > Administrative Templates > System > Remote Assistance and click Configure Offer Remote Assistance.
  • Enable the policy
    • Permit remote control of this computer using “Allow Helpers to remotely control the computer
    • click Show… next to Helpers
    • Enter the names in domain\user or domain\group format.
    • Enter the group name you created earlier

Or in 2012 R2, is is Configure Offer Remote Assistance

Step 3.3

  • In the same settings folder, enable Solicited Remote Assistance
  • This setting may also be found under

    • Computer Configuration > Administrative Templates > System > Remote Assistance and click Solicited Remote Assistance.

Step 3.4

  • Go to Computer Configuration >Administrative Templates> Windows Components >Remote Desktop Services>Remote Desktop Session Host>Connections
  • Enable “Allow users to connect remotely using Remote Desktop Services”

Step 4

  • Apply this GPO to target computers. This can be done at the root of the domain, or under each OU, depending on desired deployment strategy and security considerations.

Step 5 

  • Perform a Gpupdate on server and clients and test to see if the settings work.

Step 6

  • When a user asks for help, launch the msra from the icon using the shortcut you  created (C:\Windows\System32 msra.exe /offerra)


On your PC, launch the new icon

Enter the Computer Name and click next

The user will be prompted with the following:

Once the user clicks Yes, you will see the following.

Notice their desktop image has gone black. This is to preserve network bandwidth for smooth operation. The background will be restored once the support session ends.

You can select the “Request Control” screen

Which prompts the user for permission once again.

 (Tell the user to ignore the checkbox for UAC, unless the user you are helping is a local administrator on their PC. If they do not have local admin rights, they will get a popup asking for credentials, and you will get a black screen with an pause icon. Alternatively, look here)

Once you are done, you or the user may close the Windows Remote Assistance box to end the session!

Happy HelpDesk-ing!

Leave a Comment

Light up musical Christmas Card

December 29, 2015

Three days before Christmas, just as I was falling asleep, I had a vision of a led Christmas tree card. I imagined it would have a number of charliplexed LED’s blinking in a decorative fashion. I had a few ATtiny85 microcontrollers on hand from prior projects, and decided to give it a go.

First off came the experimentation with the Charliplex circuit. I have not played with charlies in a while.  A quick google search revealed some interesting sample code specifically written for the ’85. It has also been a long time since I used my ISP programmer, so I needed a quick reference of the pinout diagrams, for and the 6 pin ISP programming connector and the ISP pins on the ATtiny.

First off was locating some spare parts:

  • 5mm Red and Green LEDs
  • Atmet Tiny85
  • Jumpers
  • Breadboard
  • USBTinyISP programmer
  • Small flat speaker
  • momentary push button

Reference Code used:

The ISP Connections:

Once the ISP Pins were plugged into the micro with jumpers, it was time to program the ATTiny.

Step 1 – Upload Bootloader and select ATtiny85 board, 1 mhz.

Step 2 – Upload simple “Blink” Program

Step 3 – use sample Charliplex code and LEDs

A few quick jumpers on a breadboard yielded some blinkenlights.

First, we try out the sample Charliplex Code

Video – Charliplex code sample

Next, we locate some code that can play back simple tones using a single pin of the ATtiny.

Connecting the speaker is simple

Video: a simple Chromatic scale


Next was determining what notes sounded like Christmas Time Is Here from Charlie Brown Christmas.

I played around with a keyboard to find simple tones (not chords) that sound similar to this tune.

To my untuned, musically challenged ear, the beginning sounds somewhat like A, F , F, D, D.

To get the timing right, I added a new “note” called Z which results in an inaudible frequency when played.

I included note Z to add delays between notes.

The final result sounds like this

Video: Christmas Time Is Here

Because code generated using the Arduino IDE is single threaded, you can only play music or flash LEDs using the above code, not both at the same time. Also…this was 2 days before Christmas, I simply did not have enough time to figure out how to do it the right way. I opted for the “hacky” solution, simply alternating between led lights and tunes. Alternativly, I did experiment with two chips, one playing the tunes and one flashing the lights, as seen in the following video.

Video: two AtTiny 85 chips

Next, I assembled the basic card structure ( a Christmas Tree with LEDs) and wired up 4 pairs of LEDs, arranged with the reverse polarity of its sibling.


Each row has two LED pairs. These pairs will be charliplexed to 4 pins on the micro.



The hookup is roughly as follows for each pair, plus one single LED.

And the messy wiring

I added a simple momentary push button switch to connect the 3v lithium cell to power the circuit. I taped a penny behind it for rigidity.

Finished product – “Christmas Time is Here” with LEDs


Mom loved it.


Leave a Comment

Instructional: Blink an RGB LED with Arduino

December 1, 2013

When I was at the World’s Maker Faire in NY this past fall, the kind people at Sparkfun gave me several free Arduino’s and WS2811/ws2812 RGB LED breakout kits to give away.

This is a very brief collection of resources needed to get  new users started using a programmable RGB LED. The beauty of these units is their ability to be chained together.

Take a gander at the goods:

Ws2811 / WS2812 RGB Breakout Board

This is actually a prototype board with an Atmel Mega82U

Sparkfun “Arduino Compatable”













And this is what the end product of this tutorial will look like.

Ooooooo the blinky.

WS2811 Breakout board with Arduino













High level overview:  You will be installing the Arduino IDE, copying the neopixel library folder into the arduino libraries folder, then opening the example project file and upload it to the arduino.

You will need the following items:



Download and install the latest Arduino environment.










Download the Neo Pixel library.


Install the library by copying it to the correct folder for your Arduino IDE. This varies by operating system. The following instructions are for PC.

Mac holds its files in a different location. Instructions for installing a library on Mac are located here.

Linux users probably won’t be reading this article.


For Windows:
Locate your downloaded .zip file and extract it to a folder.


Open the folder and change the name of the folder to Adafruit_NeoPixel, removing the  -master, otherwise you will receive an error.

Copy the folder and Paste it into your libraries folder. (My Documents/Arduino/libraries)

Close and re-open the Arduino program

If you receive the following message, you missed step #4




If all goes as expected, you should be able to open the “strandtest” NeoPixel example code from the File> Examples> menu.


You should see the following code: 


I would like to call your attention to the comments in the code. They tell you two pieces of information you need to update before uploading your code.
The first is what pin the LED breakout will be connected to.

This is the first line after the include statement:

#define PIN 6

(btw, that is how you use a library, you have to invite it to the party by using the #include.)

We are going to go ahead and hook up the DI pin of the breakout board to digital pin 6. We are going to keep it at pin 6 in the code. If you want to use a different pin number, this is where you would change it.

On the breakout board – DI for Digital In. DO is for digital out.


We are going to physically connect the DI (Digital In) to Pin 6 (digital pin 6) on the Arduino.

We will also set up the number of LEDs. In this instance we only have 1 of these breakout boards connected. If we had more than 1, they could be connected in series.

Change this single line of code from a 60 to a 1

Adafruit_NeoPixel strip = Adafruit_NeoPixel(1, PIN, NEO_GRB + NEO_KHZ800);

Verify that the wiring and environment to ensure we do not perform a smoke test.

Connect the USB cable. 
Tech Tip: If this is your first time connecting the Arduino, your computer may have to load or install a driver to allow your computer to communicate with the Arduino. This driver should be included in the Arduino IDE. If you have problems getting the board to be recognized, you’re gonna have a bad time. See here and here for additional troubleshooting and information. Oh and hereCommunication between the Arduino (Atmel Mega328) and the computer is done over a serial connection. Most Arduinos with a USB connection utilize some form of USB to serial adapter. The board I am using in this particular example uses an FTDI chip to do the USB>serial communication for us. Other boards may use another AVR microcontroller or even implement serial directly in code using v-usb.


Click tools > Serial Port and select your COM port.

I tested COM3 – no go.

COM8 is our man

Select the board type from the Tools >Board menu. The Sparkfun Redboard that I am using is Arduino Uno compatible.


Click upload.

If it works you will see some LEDs on the Arduino flashing. On mine it was the red and yellow RX /TX LED’s.

Wonder of Wonders, it works!

Prototyping is fun, but we can do better.












If you get errors like this when uploading, go back to step #11. You may have to go back and select a different COM port or a different board.

If your board had a few flashes of lights but no activity on the breakout board, double check the 5v, ground, and DI wire are securely connected and plugged in to the correct pins on the Arduino.


Going Further:

-Connect multiple WS2811’s in Series

-Connect multiple WS2811’s in a matrix

Alternative Libraries


Neopixel by Adafruit



This post was composed and uploaded from Microsoft OneNote 2013
1 Comment

asking big questions

November 21, 2013

I was listening to a podcast recently and the topic of the internet and the accessibility of information was posed, along with a question…


Does the vast availability of simple answers (on the internet) condition us to be unable to ask bigger questions?

Are we losing the ability to concentrate on a topic or even read a whole book on a subject without needing all of our questions answered immediately. Are mobile devices an enabler for our shortened attention spans?


Data without structure is useless, it needs to be organizzed to become information.

podcast in question.. approx 12 minutes in


Leave a Comment

Server Room Environmental Monitoring – Part 2

September 4, 2013

[This post should have been published 2 years ago… oops]

In an earlier post I began working on a Server Room Environmental Monitoring based on an Arduino.

Arduino with Temperature and Light sensors

Arduino with Temperature & Light sensors and potentiometer.


This project was started just for fun-  I wanted to learn more about micro controllers (specifically the arduino platform), and partially because I didn’t have room in my technology budget at work to do it the “right way” (not even sure what way that is for a small business…netbotz?). I wanted to improve on my original idea by having it accessible remotely via my network. Thus we end up with our first semi-finished prototype:

prototyping on breadboards

prototyping on breadboards

This device monitors the temperature and ambient light readings and displays the values on an LCD and displays them in a browser windows rendered in html. I have the 2nd iteration pretty much completed, just working through some of the programming issues. [At the time] I wanted to expand the sensors to include multiple i2c temperature sensors, and possibly make the LCD display wireless via Xbee. Later posts will show I ended up using a Nanode with Grove sensors [but I digress as this is documenting the original build.]

Semi- finalized product

Semi- finalized product


Arduino Duemilanove (ATMEL 328p)
DFRobot Ethernet Shield DFR0110, Powered by a Wiznet W5100
Sparkfun Protoboard (v2)
TEMT6000  Ambient Light Sensor by Vishay via the Sparkfun Breakout Board
JK Device HD44780 Compatable 2 x 16 Char LCD display
Sparkfun SerLCD I2C backpack
Adafruit Arduino enclosure


I had to add the Xbee out of necessity (I had them from another project, but when I burned out the FTDI chip on the Arduino I had no way of programming it, but it turned out being rather convenient!)
Two Xbee with a chip based 1mw antenna.
Xbee Explorer Regulated
Xbee Explorer USB

Generic PIR Sensor module from ebay – looks very similar to this.

I have most of the code working. I made the code available as a download. It includes the two libraries for the I2C Serial LCD backpack controls and the LibTemperature library for the I2c temperature module:
Arduino_Environmental_Monitoring_Webserver [this is a .zip file]
The code is also available here in plaintext [here]



This is how it works:

pull in the libraries for all the different modules
set up the variables to store numbers
some code to control the LCD
Set the pins for the LCD and for the LED
Setup the MAC and IP for the Ethernet Shield
read the sensors and store the values to the variables
convert the C temperature to F and store to a different variable.
Print the values to the display
Send the values inside HTML to the browser
Send the browser a command to refresh every X seconds.


The Challenges:

When using my Arduino for another project  I was testing a large number of SMT led’s all at once, pulling a decent amount of current through the 3.3v regulator, far exceeding the 50Ma spec of the L.D.O inside the FTDI. I inadvertently short circuited or over drive the 3.3v line , burning out the FTDI USB to RS232 chip on the board. I ended up utilizing two Xbee modules and connecting one to the TX /RX lines for serial connection. This worked out great, because It forced me to get the Xbee working! I now have 2 Xbee units paired for serial communications.

There were some small issues with the Ethernet Shield. #1. The pin map on this particular model uses (Arduino) pins A4 and A5 to access the SD card, which I am currently using for my I2C temperature sensor communication. There were also issues with the bottom of my proto-shield hitting the ethernet plug and grounding out, so I extended the pins the quick and dirty way by  extending it with pin headers.

The enclosure from Adafruit fit great, but the end plate did not work with the Ethernet shield. I had to discard the plate for the connectors.


mounted, splayed

mounted, splayed

Dirty Coding Schemes:

I was getting some odd looking numbers on the LCD screen when testing it in a variety of light and temperature ranges. The number would “print” to the screen, and when it poured over to the 3rd digit, that digit would stay on the screen, regardless of what was being written to the block immediately to the left.


I didn’t bother figuring out how to erase data or clear the screen between refreshes, so in my code I had it over-write 4 blank spaces, then go back to the beginning and write the data value. probably a very dirty way of clearing that part of the screen.

[Browser Refresh]

the arduino code strings together the HTML and streams it to your browser. there is a small snippet of meta html HTTP-EQUIV “REFRESH” that tells your browser to refresh every few seconds to see the new values gathered in the loop code.

[Hard Coded IP Address]

Unfortunately, I found that the DHCP library did not work so well for me. I decided to hard-code my device. this has certain advantages, but makes it less portable. Not everyone uses a class B /16 subnet at home.


Final Results:



Finished device






connectors... the business end

connectors… the business end



Leave a Comment

Next Page »