<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://w.electrodragon.com/w/index.php?action=history&amp;feed=atom&amp;title=MP-ESP8266</id>
	<title>MP-ESP8266 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://w.electrodragon.com/w/index.php?action=history&amp;feed=atom&amp;title=MP-ESP8266"/>
	<link rel="alternate" type="text/html" href="https://w.electrodragon.com/w/index.php?title=MP-ESP8266&amp;action=history"/>
	<updated>2026-06-04T22:58:14Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.2</generator>
	<entry>
		<id>https://w.electrodragon.com/w/index.php?title=MP-ESP8266&amp;diff=22872&amp;oldid=prev</id>
		<title>Chao at 17:30, 21 October 2019</title>
		<link rel="alternate" type="text/html" href="https://w.electrodragon.com/w/index.php?title=MP-ESP8266&amp;diff=22872&amp;oldid=prev"/>
		<updated>2019-10-21T17:30:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== ESP8266 ==&lt;br /&gt;
* Official github page: https://github.com/micropython/micropython/tree/master/esp8266&lt;br /&gt;
&lt;br /&gt;
=== Demo code ===&lt;br /&gt;
* GPIO Access &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import pyb&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; pin = pyb.Pin(14, pyb.Pin.OUT_PP)  # Set pin 14 as an output.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; for i in range(10):&lt;br /&gt;
...    pin.value(0)     # Set pin low (or use pin.low())&lt;br /&gt;
...    pyb.delay(1000)  # Delay for 1000ms (1 second)&lt;br /&gt;
...    pin.value(1)     # Set pin high (or use pin.high())&lt;br /&gt;
...    pyb.delay(1000)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Reading GPIO Input&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import pyb&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; pin = pyb.Pin(14, pyb.Pin.IN)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; pin.value()  # Read pin value, will show 0 when low (connected to ground).&lt;br /&gt;
0&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; pin.value()  # Read pin value again, will show 1 when high (connected to 3.3V).&lt;br /&gt;
1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Wifi Setup&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import esp&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # Connect to a WiFi network.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; esp.connect('YOUR WIFI SSID NAME', 'YOUR WIFI SSID PASSWORD')&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # Define function to print data received from socket.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; def socket_printer(socket, data):&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;     print(data)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # Create a socket and setup the print function.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; soc = esp.socket()&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; soc.onrecv(socket_printer)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # Connect to adafruit.com at port 80.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; soc.connect(('207.58.139.247', 80))&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # Send a request for the wifi test page.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; soc.send('GET /testwifi/index.html HTTP/1.0\r\n\r\n')&lt;br /&gt;
37&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b'HTTP/1.1 200 OK\r\nDate: Tue, 12 May 2015 18:44:49 GMT\r\nServer: Apache\r\nAccess-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Authorization, Referer, User-Agent\r\nAccess-Control-Allow-Methods: GET, POST, OPTIONS\r\nAccess-Control-Allow-Credentials: true\r\nAccess-Control-Max-Age: 1728000\r\nAccept-Ranges: bytes\r\nX-Mod-Pagespeed: 1.9.32.3-4448\r\nVary: Accept-Encoding\r\nCache-Control: max-age=0, no-cache\r\nContent-Length: 74\r\nConnection: close\r\nContent-Type: text/html\r\n\r\nThis is a test of the CC3000 module!\nIf you can read this, its working :)\n'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* If you're curious what other functions exist on the esp.socket class (or any other object in MicroPython) you can see them by using the dir function:&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; dir(esp.socket)&lt;br /&gt;
 ['__del__', 'close', 'bind', 'listen', 'accept', 'connect', 'send', 'recv', 'sendto', 'recvfrom', 'onconnect', 'onrecv', 'onsent', 'ondisconnect']&lt;br /&gt;
* Once connected you can start entering MicroPython code in a '''read-eval-print loop (REPL)'''.  For example here's the classic Hello World and counting to 10:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print(&amp;quot;Hello world!&amp;quot;)&lt;br /&gt;
Hello world!&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; for i in range(1, 11):&lt;br /&gt;
...     print(&amp;quot;Number {0}&amp;quot;.format(i))&lt;br /&gt;
... &lt;br /&gt;
Number 1&lt;br /&gt;
Number 2&lt;br /&gt;
Number 3&lt;br /&gt;
Number 4&lt;br /&gt;
Number 5&lt;br /&gt;
Number 6&lt;br /&gt;
Number 7&lt;br /&gt;
Number 8&lt;br /&gt;
Number 9&lt;br /&gt;
Number 10&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Usage of esp class ===&lt;br /&gt;
 import esp&lt;br /&gt;
Imports the ESP8266 module.&lt;br /&gt;
&lt;br /&gt;
 esp.scan(print)&lt;br /&gt;
Scans for visible SSIDs. The argument &amp;quot;print&amp;quot; is the callback method receiving tuples which do describe the found SSIDs.&lt;br /&gt;
&lt;br /&gt;
 esp.connect('&amp;lt;ssid&amp;gt;', 'pre-shared-key')&lt;br /&gt;
Connects to the given network.&lt;br /&gt;
&lt;br /&gt;
 esp.disconnect()&lt;br /&gt;
=== Build firmware ===&lt;br /&gt;
* Follow the [[ESP8266 Open SDK]] page to completely setup the environment and compile the SDK first&lt;br /&gt;
&lt;br /&gt;
=== Compile the firmware ===&lt;br /&gt;
 cd ~/micropython/esp8266&lt;br /&gt;
 make&lt;br /&gt;
And the final result should look like below:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
LINK build/firmware.elf&lt;br /&gt;
   text	   data	    bss	    dec	    hex	filename&lt;br /&gt;
 304096	   1332	  53776	 359204	  57b24	build/firmware.elf&lt;br /&gt;
Create build/firmware-combined.bin&lt;br /&gt;
('flash    ', 52800)&lt;br /&gt;
('padding  ', 12736)&lt;br /&gt;
('irom0text', 252672)&lt;br /&gt;
('total    ', 318208)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
And finally copy the firmware out to vagrant folder&lt;br /&gt;
 cp ./build/firmware-combined.bin /vagrant/&lt;br /&gt;
=== write the blink LED on main.py ===&lt;br /&gt;
turn on the vagrant machine and edit the main.py file:&lt;br /&gt;
 cd ~/micropython/esp8266/scripts/&lt;br /&gt;
 nano main.py&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# This script is run on boot&lt;br /&gt;
import pyb&lt;br /&gt;
pin = pyb.Pin(14, pyb.Pin.OUT_PP)&lt;br /&gt;
while True:&lt;br /&gt;
    pin.value(1)&lt;br /&gt;
    pyb.delay(1000)&lt;br /&gt;
    pin.value(0)&lt;br /&gt;
    pyb.delay(1000)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
and finally make the firmware:&lt;br /&gt;
 cd ~/micropython/esp8266&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
== Documents ==&lt;br /&gt;
&lt;br /&gt;
ESP8266&lt;br /&gt;
* http://docs.micropython.org/en/latest/library/esp.html&lt;br /&gt;
* http://docs.micropython.org/en/latest/library/esp.socket.html&lt;br /&gt;
[[category: Micropython]]&lt;/div&gt;</summary>
		<author><name>Chao</name></author>
	</entry>
</feed>