<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>nodemcu &#8211; Squix &#8211; TechBlog</title>
	<atom:link href="https://blog.squix.org/tag/nodemcu/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.squix.org</link>
	<description></description>
	<lastBuildDate>Thu, 09 Dec 2021 08:13:47 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.8</generator>
<site xmlns="com-wordpress:feed-additions:1">121913304</site>	<item>
		<title>ESP8266: NodeMCU Motor Shield Review</title>
		<link>https://blog.squix.org/2015/09/esp8266-nodemcu-motor-shield-review.html</link>
					<comments>https://blog.squix.org/2015/09/esp8266-nodemcu-motor-shield-review.html#comments</comments>
		
		<dc:creator><![CDATA[Daniel Eichhorn]]></dc:creator>
		<pubDate>Sat, 12 Sep 2015 10:08:00 +0000</pubDate>
				<category><![CDATA[ESP8266 Peripherals]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[motorshield]]></category>
		<category><![CDATA[nodemcu]]></category>
		<category><![CDATA[robotics]]></category>
		<category><![CDATA[smart car]]></category>
		<guid isPermaLink="false">http://blog.squix.org/2015/09/12/esp8266-nodemcu-motor-shield-review/</guid>

					<description><![CDATA[If you want to engage with your ESP8266 into robotics there is now an almost ready-to-go solution: the NodeMCU Motor Shield. If my research is correct then it was the Doctors of Intelligence &#38; Technology (http://doit.am/) who created it and also are offering some LUA ... <p><a class="read-more btn btn-secondary" href="https://blog.squix.org/2015/09/esp8266-nodemcu-motor-shield-review.html">Read More</a></p>]]></description>
										<content:encoded><![CDATA[<div dir="ltr" style="text-align: left;">If you want to engage with your ESP8266 into robotics there is now an almost ready-to-go solution: the NodeMCU Motor Shield. If my research is correct then it was the Doctors of Intelligence &amp; Technology (<a href="http://doit.am/">http://doit.am/</a>) who created it and also are offering some LUA code to get started. This post shares my experience with the motorshield and also with a two engine &#8220;Smart Car&#8221; kit that nicely combines with the motorshield.</p>
<h3 style="text-align: left;">Motorshield</h3>
<div>If you want to drive motors with your ESP8266 you have to be careful. The General Purpose Input/Output (GPIO) pins of the ESP8266 (as well as the similar Arduinos) don&#8217;t allow you to draw the amount of current required for a motor. But how to do that? You could build something on your own by using a few electronic components (transistor, capacitor, etc) or you could just pick something off the shelf that does exactly that for you. That&#8217;s where the Doctors of Intelligence &amp; Technology and their motor shield comes in. It is designed to carry a NodeMCU V1.0 on its back. <b>Note: the motor shield won&#8217;t fit for a NodeMCU V0.9! </b>It has convenient terminals to attach two two-ways motors (or according to some source one stepper motor). It also has terminals to attach the power source that drives the motors and the NodeMCU. And as a clever addition you can decide to have just one power source for both motors and NodeMCU by setting a jumper accordingly.</div>
<div>One of the two terminals (Vin for NodeMCU) can be cut off with a power switch which saves you from taking out the batteries.</div>
<div></div>
<div>Besides the terminals there are also male pins which lead out GPIO 0-8 (in NodeMCU terminology), the reset pin, the analog/digital converter, the UART pins and the SPI pins.</div>
<div></div>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="https://i0.wp.com/2.bp.blogspot.com/-omdNIDIY7SE/VfQJMC-RH4I/AAAAAAAAAcU/eesUUM8MmGU/s1600/NodeMcuMotorshield.jpg"><img data-recalc-dims="1" fetchpriority="high" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/09/NodeMcuMotorshield.jpg?resize=320%2C219&#038;ssl=1" width="320" height="219" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">NodeMCU V1.0 Powershield</td>
</tr>
</tbody>
</table>
<div>A sign on the PCB makes it easy enough to plugin the NodeMCU the correct way: just make sure that the antenna of the ESP8266 and the antenna symbol on the motor shield are on the same side.</div>
<div></div>
<h3 style="text-align: left;">Smart Car Kit</h3>
<div>The Smart Car Kit is the ideal companion for the NodeMCU if you want to get started into WiFi controlled cars or robotics. Some vendors even sell it in one big package for about USD $22 (<a href="https://www.banggood.com/Geekcreit-2WD-L293D-WIFI-Smart-Robot-Car-With-NodeMCU-+-Shield-Kit-For-ESP-12E-Based-On-ESP8266-p-995166.html?p=0P21061109440201501M&amp;custlinkid=1587783" target="_blank" rel="noopener">see here</a>). It comes with 2 two-ways motors with reduction gear, two main wheels and one support wheel, a chassis, a battery pack for 4 AA cells and additional screw driver.</div>
<div>You can put everything to getter within just about 15 minutes once you have figured out where the parts have to go. I only had two issues with the kit: while you might be able to attach the wires to the engine without soldering I would recommend that you do this with a soldering iron. The other (bigger) problem was the supporting wheel. It turns easy enough around the axis of the wheel itself but the z-axis which should adjust when the car makes a turn is not working so smoothly. This can have the effect that even if both motors go at the same speed the supporting wheel is stuck in a weird position and keeps your car to pull to one side. I solved this by using some duct tape and fixing the wheel at the &#8220;forward&#8221; position. This might be suboptimal for turning but works good enough on smooth floors. It might be a problem though on soft carpets but I haven&#8217;t tried that.</div>
<div></div>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="https://i0.wp.com/1.bp.blogspot.com/-63lGVhW0hsU/VfQPt3pG5SI/AAAAAAAAAck/VDyC4BMe-Go/s1600/SmartCarKit.png"><img data-recalc-dims="1" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/09/SmartCarKit.png?resize=294%2C320&#038;ssl=1" width="294" height="320" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">The Smart Car Kit</td>
</tr>
</tbody>
</table>
<div></div>
<div></div>
<h3 style="text-align: left;">Bringing it together: the WiFi Car</h3>
<div>The next step was to put all the pieces (Smart Car, battery pack, NodeMCU V1.0 and Motor Shield) together. The holes of the motor shield fit perfectly into the holes of the acrylic chassis and the kit comes with enough screws and nuts to attach it. Also the battery pack can be screwed easily onto the chassis. The way I placed the components onto the chassis left only little space between the motor shield and the battery pack which made it hard to attach the wires with the terminals.</div>
<div></div>
<h3 style="text-align: left;">Programming the Car from the Arduino Environment</h3>
<div>The inventors of the kit have sample code for LUA on their website. But I decided to try to program the car with the Arduino IDE. And that is really easy: 4 pins control the engines. Pins 4 and 5 (Arduino Terminology) control the speed of the engines with PWM in a default range of 0..1023 while pins 0 and 2 define the direction the engines will turn. 0 is backwards and 1 is forward but this might depend on who you wired the engines up to the shield. In my case I had to swap the wires of one of the two engines so a &#8220;1&#8221; would symbolise the same direction for both engines.</div>
<div>First I wrote a little Arduino sketch to test if everything was working alright and if I understood the interface correctly. From there I incrementally improved the code and I&#8217;m now able to steer it with any device with a modern browser, a built in accelerometer by just balancing the device in the direction I want to car to move. While it is still far from perfect it works surprisingly well: a javascript program reads out the accelerometer of the controlling device (e.g. an iPhone) and sends AJAX requests to the WiFi connected Smart Car. These commands are then taken to steer the motors.</div>
<div>In this scenario a big part of the logic is in the javascript code. While this could be hosted on the ESP8266 EEPROM I decided to load it from an external server which makes it really easy to program: I only have to change the file on the remote server. The ESP8266 firmware remains unchanged for most of the time.</div>
<div>To connect to the device you only have to find out the IP that has been assigned to the NodeMCU. Then open that IP in your Smart Phone browser and move level your device to steer the car.</div>
<div></div>
<div>Here is a little video of that setup:</div>
<div><iframe src="https://www.youtube.com/embed/dLR6jnUdpXE" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div>
<div>
<p>Source Code:</p>
<ul style="text-align: left;">
<li><a href="https://github.com/squix78/esp8266-projects/tree/master/arduino-ide/wifi-car">https://github.com/squix78/esp8266-projects/tree/master/arduino-ide/wifi-car</a></li>
</ul>
</div>
<h3 style="text-align: left;">Shopping List:</h3>
<div>
<ul style="text-align: left;">
<li><a href="https://www.banggood.com/Geekcreit-2WD-L293D-WIFI-Smart-Robot-Car-With-NodeMCU-+-Shield-Kit-For-ESP-12E-Based-On-ESP8266-p-995166.html?p=0P21061109440201501M&amp;custlinkid=1587783" target="_blank" rel="noopener">Complete Kit from Banggood</a> (~USD $23)</li>
<li><a href="http://www.banggood.com/ESP8266-WiFi-Motor-Drive-Expansion-Board-For-NodeMCU-ESP-12E-p-991603.html?p=0P21061109440201501M" target="_blank" rel="noopener">Motor Shield for NodeMCU V1.0</a> (~USD $5.30)</li>
<li><a href="http://www.banggood.com/NodeMcu-Lua-ESP8266-ESP-12E-and-WiFi-Motor-Drive-Expansion-Board-p-995417.html?p=0P21061109440201501M" target="_blank" rel="noopener">Kit NodeMCU + MotorShield</a> (~USD $11.60)</li>
<li><a href="http://www.banggood.com/Smart-Robot-Car-Chassis-Kit-Speed-Encoder-Battery-Box-For-Arduino-p-981975.html?p=0P21061109440201501M" target="_blank" rel="noopener">Smart Car Kit</a> (~USD $12)</li>
</ul>
</div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.squix.org/2015/09/esp8266-nodemcu-motor-shield-review.html/feed</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">29</post-id>	</item>
		<item>
		<title>ESP8266 contribution from Zurich to #FIFAgate: At least data is not corrupt!</title>
		<link>https://blog.squix.org/2015/05/esp8266-contribution-from-zurich-to.html</link>
					<comments>https://blog.squix.org/2015/05/esp8266-contribution-from-zurich-to.html#comments</comments>
		
		<dc:creator><![CDATA[Daniel Eichhorn]]></dc:creator>
		<pubDate>Thu, 28 May 2015 09:34:00 +0000</pubDate>
				<category><![CDATA[Common]]></category>
		<category><![CDATA[#FIFAgate]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[MQTT]]></category>
		<category><![CDATA[nodemcu]]></category>
		<category><![CDATA[OLED display]]></category>
		<guid isPermaLink="false">http://blog.squix.org/2015/05/28/esp8266-contribution-from-zurich-to/</guid>

					<description><![CDATA[I recently discovered the Node Red tool and almost immediately fell in love. I was about to write something like that myself when I found out about it and so far it does everything the way I would expect it: you could call it if-this-than-that ... <p><a class="read-more btn btn-secondary" href="https://blog.squix.org/2015/05/esp8266-contribution-from-zurich-to.html">Read More</a></p>]]></description>
										<content:encoded><![CDATA[<div dir="ltr" style="text-align: left;" trbidi="on">
I recently discovered the <a href="http://nodered.org/" target="_blank">Node Red</a> tool and almost immediately fell in love. I was about to write something like that myself when I found out about it and so far it does everything the way I would expect it: you could call it <a href="https://ifttt.com/" target="_blank">if-this-than-that</a> for your home automation/internet of things projects.</p>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;">
<tbody>
<tr>
<td style="text-align: center;"><a href="https://i0.wp.com/1.bp.blogspot.com/-kpySFIKqpE0/VWb5V3qQxeI/AAAAAAAAAUA/Ff8BYq-nxBY/s1600/FIFAgate.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img data-recalc-dims="1" loading="lazy" decoding="async" border="0" height="219" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/05/FIFAgate.jpg?resize=320%2C219&#038;ssl=1" width="320" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">I needed a high activity Twitter hash tag. What could be more<br />
active today than #FIFAgate?</td>
</tr>
</tbody>
</table>
<p><a name='more'></a></p>
<p>My first little project was to pass on a twitter feed through MQTT to a <a href="http://s.click.aliexpress.com/e/yRVVB2F2B" target="_blank">NodeMCU ESP8266</a> module with an attached OLED display. It was super easy and even more versatile than I expected. I can now shift away the logic from the ESPs which are always short on RAM to the central node running on a Raspberry Pi. The stream can then easily be setup in the browser. As soon as you press &#8220;deploy&#8221; the changes will become visible on the OLED display.</p>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;">
<tbody>
<tr>
<td style="text-align: center;"><a href="https://i0.wp.com/1.bp.blogspot.com/-I_CmYs27uYc/VWb58od7kGI/AAAAAAAAAUI/H_9B-Rt99Xo/s1600/Screenshot%252B2015-05-28%252B13.18.17.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img data-recalc-dims="1" loading="lazy" decoding="async" border="0" height="153" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/05/Screenshot2015-05-2813.18.17.png?resize=320%2C153&#038;ssl=1" width="320" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">The twitter flow: get the tweets from twitter, beautify them a little<br />
throttle the news feed to not overload the ESP and send them to the<br />
ESP over MQTT.</td>
</tr>
</tbody>
</table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;">
<tbody>
<tr>
<td style="text-align: center;"><a href="https://i0.wp.com/3.bp.blogspot.com/-_jawLd_-qWQ/VWb8uRUUl-I/AAAAAAAAAUU/YtpTQAJV4y0/s1600/FIFAgate%252BOled%252Bdisplay.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img data-recalc-dims="1" loading="lazy" decoding="async" border="0" height="182" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/05/FIFAgateOleddisplay.png?resize=320%2C182&#038;ssl=1" width="320" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">The data flow: Twitter, Node Red, NodeMCU (Lua), Oled display</td>
</tr>
</tbody>
</table>
<div class="separator" style="clear: both; text-align: center;">
</div>
<p></div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.squix.org/2015/05/esp8266-contribution-from-zurich-to.html/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">49</post-id>	</item>
		<item>
		<title>ESP8266 Projects: Internet Connected WeatherStation with beautiful icons</title>
		<link>https://blog.squix.org/2015/05/esp8266-projects-internet-connected.html</link>
					<comments>https://blog.squix.org/2015/05/esp8266-projects-internet-connected.html#comments</comments>
		
		<dc:creator><![CDATA[Daniel Eichhorn]]></dc:creator>
		<pubDate>Sat, 23 May 2015 14:10:00 +0000</pubDate>
				<category><![CDATA[Common]]></category>
		<category><![CDATA[cjson]]></category>
		<category><![CDATA[humidity]]></category>
		<category><![CDATA[icons]]></category>
		<category><![CDATA[nodemcu]]></category>
		<category><![CDATA[temperatue]]></category>
		<category><![CDATA[weather station]]></category>
		<guid isPermaLink="false">http://blog.squix.org/2015/05/23/esp8266-projects-internet-connected/</guid>

					<description><![CDATA[Since I learned how to create pictures and display them on these wonderful OLED displays&#160;I wanted to build something useful with it. Once you know about all the pieces, putting them together is quite easy. The icon, temperature and humidity are updated every 10 minutes ... <p><a class="read-more btn btn-secondary" href="https://blog.squix.org/2015/05/esp8266-projects-internet-connected.html">Read More</a></p>]]></description>
										<content:encoded><![CDATA[<div dir="ltr" style="text-align: left;" trbidi="on">
Since I learned how to create pictures and display them on these wonderful <a href="https://www.banggood.com/Geekcreit-0_96-Inch-4Pin-White-IIC-I2C-OLED-Display-Module-12864-LED-Geekcreit-for-Arduino-products-that-work-with-official-Arduino-boards-p-958196.html?p=0P21061109440201501M&amp;custlinkid=1587780" target="_blank" rel="noopener">OLED displays</a>&nbsp;I wanted to build something useful with it. Once you know about all the pieces, putting them together is quite easy.<br />
The icon, temperature and humidity are updated every 10 minutes from <a href="http://openweathermap.org/">http://openweathermap.org/</a>, then parsed into a JSON object.</p>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;">
<tbody>
<tr>
<td style="text-align: center;"><a href="https://i0.wp.com/2.bp.blogspot.com/-W-UZsPvh-4I/VWCjUVTzxqI/AAAAAAAAATc/bmdILYERtGo/s1600/display.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img data-recalc-dims="1" loading="lazy" decoding="async" border="0" height="320" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/05/display.jpg?resize=320%2C320&#038;ssl=1" width="320" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">SSD1306 128&#215;64 with the web based weather station.<br />
The data is fetched from openweatherchannel.com. <br />
It also displays the last update time.&nbsp;</td>
</tr>
</tbody>
</table>
<p></p>
<h3 style="text-align: left;">
</h3>
<h3 style="text-align: left;">
Wiring</h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i0.wp.com/3.bp.blogspot.com/-YAf9sCSkaUw/VWClROJKgyI/AAAAAAAAATo/hOSAYo4Z8VU/s1600/simple-oled-sketch_bb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img data-recalc-dims="1" loading="lazy" decoding="async" border="0" height="246" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/05/simple-oled-sketch_bb.png?resize=320%2C246&#038;ssl=1" width="320" /></a></div>
<div>
</div>
<h3 style="text-align: left;">
Source Code</h3>
<div>
<ul style="text-align: left;">
<li>Arduino IDE:&nbsp;<a href="https://github.com/squix78/esp8266-weather-station">https://github.com/squix78/esp8266-weather-station</a></li>
<li>Lua: <a href="https://github.com/squix78/esp8266-projects/tree/master/lua/weather-station">https://github.com/squix78/esp8266-projects/tree/master/lua/weather-station</a></li>
</ul>
</div>
<p></p>
<h3 style="text-align: left;">
By the way, the WeatherStation Kit is available at the shop:&nbsp;<a href="https://blog.squix.org/about-this-shop" style="font-size: medium; font-weight: normal;">https://shop.squix.ch</a></h3>
<div>
<ul style="text-align: left;">
</ul>
</div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.squix.org/2015/05/esp8266-projects-internet-connected.html/feed</wfw:commentRss>
			<slash:comments>22</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">50</post-id>	</item>
		<item>
		<title>ESP8266, NodeMCU: how to create xbm images for displaying on OLED 128&#215;64 I2C Displays</title>
		<link>https://blog.squix.org/2015/05/esp8266-nodemcu-how-to-create-xbm.html</link>
					<comments>https://blog.squix.org/2015/05/esp8266-nodemcu-how-to-create-xbm.html#comments</comments>
		
		<dc:creator><![CDATA[Daniel Eichhorn]]></dc:creator>
		<pubDate>Thu, 21 May 2015 18:51:00 +0000</pubDate>
				<category><![CDATA[Common]]></category>
		<category><![CDATA[drawXBM]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[nodemcu]]></category>
		<category><![CDATA[SSD1306]]></category>
		<category><![CDATA[weather icons]]></category>
		<category><![CDATA[XBM]]></category>
		<guid isPermaLink="false">http://blog.squix.org/2015/05/21/esp8266-nodemcu-how-to-create-xb/</guid>

					<description><![CDATA[Do you know these wonderfully cheap SSD1306 based OLED displays with the crispy display? For a while now the NodeMCU Lua firmware for the ESP8266 supports them and has a rich feature set to draw lines, circles and even bitmaps. One way to draw bitmaps ... <p><a class="read-more btn btn-secondary" href="https://blog.squix.org/2015/05/esp8266-nodemcu-how-to-create-xbm.html">Read More</a></p>]]></description>
										<content:encoded><![CDATA[<div dir="ltr" style="text-align: left;">Do you know these wonderfully cheap SSD1306 based OLED displays with the crispy display? For a while now the NodeMCU Lua firmware for the ESP8266 supports them and has a rich feature set to draw lines, circles and <i>even</i> bitmaps.<br />
One way to draw bitmaps is in the XBM format, which is originally a text based format and they can be directly included into C code:</p>
<pre class="brush:cpp;">#define clouds_width 60
#define clouds_height 60
static unsigned short clouds_bits[] = {
   0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
   0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
   ...
   0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
   0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
   0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 };
</pre>
<p>When looking at the examples on the NodeMCU Github page the xbm file looks a bit different:</p>
<pre class="brush:cpp;">fff ffff 3fff ffff ff3f e0e0 ffff 3fe3
e1ff ff3f f3f1 ffff 3ff3 f1fe bf37 f311
1c1f 30f3 0108 8c20 f301 00c0 39f3 81c7
c139 f3c1 c7c9 38f3 c1c3 193c e389 0198
3fc7 1800 083e 0f3c 701c 303f fffc 8731
ffff bfc7 2301 0000 c623 0300 000e 30ff
ff3f 1f3c ffff 3fff 3fff ff3f ff3f ffff
ffff 3fff ffff ff3f 
</pre>
<p>[the_ad_placement id=&#8221;inpostplacement&#8221;]</p>
<p>So how to you get your images in the right format? The NodeMCU Api documentation for drawXBM gives a good hint, but I had to apply a minor tweak which turns out to simplify things further:</p>
<ul style="text-align: left;">
<li>Go to: <a href="http://www.online-utility.org/image_converter.jsp">http://www.online-utility.org/image_converter.jsp</a></li>
<li>Select MONO aus Output format AND press &#8220;Select format&#8221; (Who has invented THAT UI???)</li>
<li>Upload your image. I was succesful with a monochrome PNG file, whereas the XBM only resulted in an error.</li>
<li>Upload the created MONO file to your ESP8266 and use it with a code like this:</li>
</ul>
<pre class="brush:shell;">-- setup I2c and connect display
function init_i2c_display()
     -- SDA and SCL can be assigned freely to available GPIOs
     sda = 5 -- GPIO14
     scl = 6 -- GPIO12
     sla = 0x3c
     i2c.setup(0, sda, scl, i2c.SLOW)
     disp = u8g.ssd1306_128x64_i2c(sla)
end

function xbm_picture()
     disp:setFont(u8g.font_6x10)
     disp:drawStr( 0, 62, "Rainy   8C")
     disp:drawXBM( 0, -5, 60, 60, xbm_data )
end

function bitmap_test(delay)
     file.open("clouds.xbm", "r")
     xbm_data = file.read()
     file.close()

      disp:firstPage()
      repeat
           xbm_picture()
      until disp:nextPage() == false

      tmr.wdclr()
end

init_i2c_display()
bitmap_test()
</pre>
<div></div>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="https://i0.wp.com/1.bp.blogspot.com/-6OZsV4puGCU/VV5ESDHb96I/AAAAAAAAAS0/ELfprDeePl4/s1600/ssd1306.jpg"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/05/ssd1306.jpg?resize=320%2C320&#038;ssl=1" width="320" height="320" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">SSD1306 OLED 128&#215;64 display,<br />
connected to a NodeMCU DevKit V1.0</td>
</tr>
</tbody>
</table>
<div class="separator" style="clear: both; text-align: center;"></div>
<div class="separator" style="clear: both; text-align: center;"><a style="margin-left: 1em; margin-right: 1em;" href="https://i0.wp.com/3.bp.blogspot.com/-0TXb1Wfpztc/VV7qDlj2UbI/AAAAAAAAATI/MyLO5UwKWyk/s1600/simple-oled-sketch_bb.png"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/05/simple-oled-sketch_bb-1.png?resize=320%2C246&#038;ssl=1" width="320" height="246" border="0" /></a></div>
<div class="separator" style="clear: both; text-align: center;">You just need to connect four pins of the display</div>
<p>to the NodeMCU</p>
<h3 style="text-align: left;">Update 11 June 2015 &#8211; Batch Processing</h3>
<div>
<div class="p1">In case you have many images to convert to xbm you might consider installing imagemagick and do it with a few lines on the command line. This example assumes that you want to resize your source png&#8217;s into xbm format of 60&#215;60:</div>
<div class="p1"></div>
<pre class="brush:shell;">mogrify -resize 60x60 +dither -format xbm *.png
cat *.xbm | sed s/static/const/ | sed s/=/PROGMEM=/  &gt; icons.h
</pre>
<div class="p1"></div>
<div class="p1">You will still need to do a bit of hand processing, for instance adding the PROGMEM command, so the images can be handled more efficiently.</div>
</div>
<h3 style="text-align: left;">Source</h3>
<div>
<ul style="text-align: left;">
<li><a href="https://github.com/squix78/esp8266-projects/tree/master/simple-oled-example">https://github.com/squix78/esp8266-projects/tree/master/simple-oled-example</a></li>
</ul>
</div>
<h3 style="text-align: left;">Shopping Links:</h3>
<p>&nbsp;</p>
<ul style="text-align: left;">
<li>White on Black Display, 128&#215;64 on Banggood: <a href="https://www.banggood.com/Geekcreit-0_96-Inch-4Pin-White-IIC-I2C-OLED-Display-Module-12864-LED-Geekcreit-for-Arduino-products-that-work-with-official-Arduino-boards-p-958196.html?p=0P21061109440201501M&amp;custlinkid=1587780" target="_blank" rel="noopener">http://www.banggood.com/0_96-Inch-4Pin-White-IIC-I2C-OLED-Display-Module-12864-LED-For-Arduino-p-958196.html?p=6R31122484684201508S</a></li>
</ul>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.squix.org/2015/05/esp8266-nodemcu-how-to-create-xbm.html/feed</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">51</post-id>	</item>
		<item>
		<title>ESP8266 module comparison: ESP-01, ESP-05, ESP-12, ESP-201, Test Board and NodeMCU</title>
		<link>https://blog.squix.org/2015/03/esp8266-module-comparison-esp-01-esp-05.html</link>
					<comments>https://blog.squix.org/2015/03/esp8266-module-comparison-esp-01-esp-05.html#comments</comments>
		
		<dc:creator><![CDATA[Daniel Eichhorn]]></dc:creator>
		<pubDate>Mon, 16 Mar 2015 01:05:00 +0000</pubDate>
				<category><![CDATA[Common]]></category>
		<category><![CDATA[IoT Products]]></category>
		<category><![CDATA[battery pack]]></category>
		<category><![CDATA[ESP-01]]></category>
		<category><![CDATA[ESP-05]]></category>
		<category><![CDATA[ESP-12]]></category>
		<category><![CDATA[ESP-201]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[nodemcu]]></category>
		<category><![CDATA[pcb]]></category>
		<category><![CDATA[pcb antenna]]></category>
		<category><![CDATA[prototyping]]></category>
		<category><![CDATA[test board]]></category>
		<guid isPermaLink="false">http://blog.squix.org/2015/03/16/esp8266-module-comparison-esp-01-esp-05/</guid>

					<description><![CDATA[In this post I will guide you through the jungle of available modules based on the ESP8266. This is not a complete list of available modules but a selection of the ones I could test and review. If you think that I have been missing ... <p><a class="read-more btn btn-secondary" href="https://blog.squix.org/2015/03/esp8266-module-comparison-esp-01-esp-05.html">Read More</a></p>]]></description>
										<content:encoded><![CDATA[<div dir="ltr" style="text-align: left;">
<p>In this post I will guide you through the jungle of available modules based on the ESP8266. This is not a complete list of available modules but a selection of the ones I could test and review. If you think that I have been missing out on one important module please let me know.Every module here as some advantages and disadvantages, depending on the targeted application. If you are planning to to use a module as Wifi shield for an Arduino you might pick a different type than if you´re planning a standalone node. Other aspects are breadboard compatibility, availability of pins, need for external components such as a serial-to-usb adapter as well as size and costs.</p>
<p>The following tables summarise this post, if you are too much in a hurry to read the whole article:</p>
<h3>Comparison of Raw Modules</h3>

<table id="tablepress-4" class="tablepress tablepress-id-4">
<thead>
<tr class="row-1">
	<td class="column-1"></td><th class="column-2">ESP-01</th><th class="column-3">ESP-05</th><th class="column-4">ESP-12</th><th class="column-5">ESP-201</th><th class="column-6">Testboard</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1"></td><td class="column-2"><a href="http://blog.squix.org/go/esp-01" rel="nofollow" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-thumbnail wp-image-280" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/ESP01v0-150x150.jpg?resize=84%2C84" alt="ESP01v0" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/ESP01v0.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/ESP01v0.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/ESP01v0.jpg?w=700&amp;ssl=1 700w" sizes="(max-width: 84px) 100vw, 84px" /></a></td><td class="column-3"><a href="http://blog.squix.org/go/esp-05" rel="nofollow" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-thumbnail wp-image-734" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/961246_2-150x150.jpg?resize=84%2C84" alt="ESP-05" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/961246_2.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/961246_2.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/961246_2.jpg?resize=120%2C120&amp;ssl=1 120w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/961246_2.jpg?w=600&amp;ssl=1 600w" sizes="(max-width: 84px) 100vw, 84px" /></a></td><td class="column-4"><a href="http://blog.squix.org/go/esp-12" rel="nofollow" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-thumbnail wp-image-735" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/980984_3-150x150.jpg?resize=84%2C84" alt="ESP-12" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/980984_3.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/980984_3.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/980984_3.jpg?resize=120%2C120&amp;ssl=1 120w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/980984_3.jpg?w=600&amp;ssl=1 600w" sizes="(max-width: 84px) 100vw, 84px" /></a></td><td class="column-5"><a href="http://blog.squix.org/go/esp-201" rel="nofollow" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-thumbnail wp-image-736" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/964288_4-150x150.jpg?resize=84%2C84" alt="ESP-12" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/964288_4.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/964288_4.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/964288_4.jpg?resize=120%2C120&amp;ssl=1 120w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/964288_4.jpg?w=600&amp;ssl=1 600w" sizes="(max-width: 84px) 100vw, 84px" /></a></td><td class="column-6"><a href="http://blog.squix.org/go/esp-testboard" rel="nofollow" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-thumbnail wp-image-309" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/01/testboard-layout-150x150.jpg?resize=84%2C84" alt="testboard-layout" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/01/testboard-layout.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/01/testboard-layout.jpg?zoom=3&amp;resize=84%2C84&amp;ssl=1 252w" sizes="(max-width: 84px) 100vw, 84px" /></a></td>
</tr>
<tr class="row-3">
	<td class="column-1">GPIO Pins</td><td class="column-2">2</td><td class="column-3">-</td><td class="column-4">11</td><td class="column-5">11</td><td class="column-6">11</td>
</tr>
<tr class="row-4">
	<td class="column-1">ADC</td><td class="column-2">-</td><td class="column-3">-</td><td class="column-4">1</td><td class="column-5">1</td><td class="column-6">1</td>
</tr>
<tr class="row-5">
	<td class="column-1">Antenna</td><td class="column-2">PCB</td><td class="column-3">PCB</td><td class="column-4">PCB</td><td class="column-5">External/PCB</td><td class="column-6">PCB</td>
</tr>
<tr class="row-6">
	<td class="column-1">USB-To-Serial</td><td class="column-2">No</td><td class="column-3">No</td><td class="column-4">No</td><td class="column-5">No</td><td class="column-6">No</td>
</tr>
<tr class="row-7">
	<td class="column-1">Breadboard friendly</td><td class="column-2">Medium</td><td class="column-3">Good</td><td class="column-4">Bad</td><td class="column-5">Good</td><td class="column-6">Bad</td>
</tr>
<tr class="row-8">
	<td class="column-1">Form factor</td><td class="column-2">Small</td><td class="column-3">Small</td><td class="column-4">Medium</td><td class="column-5">Big</td><td class="column-6">Very Big</td>
</tr>
<tr class="row-9">
	<td class="column-1">Price</td><td class="column-2">~$3</td><td class="column-3">~$3</td><td class="column-4">~$3</td><td class="column-5">~$3</td><td class="column-6">~$6.50</td>
</tr>
<tr class="row-10">
	<td class="column-1">Application</td><td class="column-2">Simple Standalone mode<br />
or wifi shield for Arduino</td><td class="column-3">Wifi Shield</td><td class="column-4">Standalone</td><td class="column-5">Standalone</td><td class="column-6">Prototyping</td>
</tr>
<tr class="row-11">
	<td class="column-1">Where to buy?</td><td class="column-2"><a href="http://blog.squix.org/go/esp-01" rel="nofollow" target="_blank">Banggood</a></td><td class="column-3"><a href="http://blog.squix.org/go/esp-05" rel="nofollow" target="_blank">Banggood</a></td><td class="column-4"><a href="http://blog.squix.org/go/esp-12" rel="nofollow" target="_blank">Banggood</a></td><td class="column-5"><a href="http://blog.squix.org/go/esp-201" rel="nofollow" target="_blank">Banggood</a></td><td class="column-6"><a href="http://blog.squix.org/go/esp-testboard" rel="nofollow" target="_blank">Banggood</a></td>
</tr>
<tr class="row-12">
	<td class="column-1">Detail Post</td><td class="column-2"><a class="in-cell-link" href="http://blog.squix.ch/2014/12/esp8266-flashing-lua-firmware-and.html" target="_blank">Post</a></td><td class="column-3">-</td><td class="column-4">-</td><td class="column-5"><a class="in-cell-link" href="http://blog.squix.ch/2015/02/esp8266-esp-201-breakout-board-review.html" target="_blank">Post</a></td><td class="column-6"><a class="in-cell-link" href="http://blog.squix.ch/2015/01/esp8266-test-board-review.html" target="_blank">Post</a></td>
</tr>
</tbody>
</table>

<h3>Comparison of Development Modules</h3>

<table id="tablepress-5" class="tablepress tablepress-id-5">
<thead>
<tr class="row-1">
	<td class="column-1"></td><th class="column-2">NodeMCU V0.9</th><th class="column-3">NodeMcu V1.0</th><th class="column-4">Wemos D1 Mini</th><th class="column-5">Wemos D1 R2</th><th class="column-6">LoLin V3 NodeMcu Board</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">Branded</td><td class="column-2">NodeMCU</td><td class="column-3">DOIT</td><td class="column-4">Wemos</td><td class="column-5">Wemos</td><td class="column-6">LoLin</td>
</tr>
<tr class="row-3">
	<td class="column-1"></td><td class="column-2"><a href="http://blog.squix.org/go/nodemcuv09" rel="nofollow noopener" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/976440_8-150x150.jpg?resize=84%2C84" alt="NodeMCU V0.9" width="84" height="84" class="aligncenter size-thumbnail wp-image-749" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/976440_8.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/976440_8.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/976440_8.jpg?resize=120%2C120&amp;ssl=1 120w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/976440_8.jpg?w=600&amp;ssl=1 600w" sizes="(max-width: 84px) 100vw, 84px" /></a></td><td class="column-3"><a href="http://blog.squix.org/go/nodemcuv10" rel="nofollow noopener" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="size-thumbnail wp-image-727" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/985891_7-150x150.jpg?resize=84%2C84" alt="Geekcreit™ Doit NodeMcu Lua ESP8266 ESP-12E WIFI Development Board" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/985891_7.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/985891_7.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/985891_7.jpg?resize=120%2C120&amp;ssl=1 120w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/985891_7.jpg?w=600&amp;ssl=1 600w" sizes="(max-width: 84px) 100vw, 84px" /></a></td><td class="column-4"><a href="http://blog.squix.org/go/wemosd1mini" rel="nofollow noopener" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-thumbnail wp-image-670" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/07/WemosD1Mini-150x150.jpg?resize=84%2C84" alt="WemosD1Mini" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/07/WemosD1Mini.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/07/WemosD1Mini.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/07/WemosD1Mini.jpg?resize=120%2C120&amp;ssl=1 120w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/07/WemosD1Mini.jpg?w=600&amp;ssl=1 600w" sizes="(max-width: 84px) 100vw, 84px" /></a></td><td class="column-5"><a href="http://blog.squix.org/go/wemosd1r2" rel="nofollow noopener" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-thumbnail wp-image-738" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/1011870_6-150x150.jpg?resize=84%2C84" alt="Wemos R1 D2" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/1011870_6.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/1011870_6.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/1011870_6.jpg?resize=120%2C120&amp;ssl=1 120w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/1011870_6.jpg?w=600&amp;ssl=1 600w" sizes="(max-width: 84px) 100vw, 84px" /></a></td><td class="column-6"><a href="http://blog.squix.org/go/nodemculolin" rel="nofollow noopener" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-thumbnail wp-image-739" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/992733_6-150x150.jpg?resize=84%2C84" alt="LoLin V3 NodeMcu" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/992733_6.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/992733_6.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/992733_6.jpg?resize=120%2C120&amp;ssl=1 120w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/992733_6.jpg?w=600&amp;ssl=1 600w" sizes="(max-width: 84px) 100vw, 84px" /></a></td>
</tr>
<tr class="row-4">
	<td class="column-1">GPIO Pins</td><td class="column-2">11</td><td class="column-3">11</td><td class="column-4">11</td><td class="column-5">11</td><td class="column-6">11</td>
</tr>
<tr class="row-5">
	<td class="column-1">ADC</td><td class="column-2">1</td><td class="column-3">1</td><td class="column-4">1</td><td class="column-5">1</td><td class="column-6">1</td>
</tr>
<tr class="row-6">
	<td class="column-1">Antenna</td><td class="column-2">PCB</td><td class="column-3">PCB</td><td class="column-4">PCB</td><td class="column-5">PCB</td><td class="column-6">PCB</td>
</tr>
<tr class="row-7">
	<td class="column-1">ESP8266 Module</td><td class="column-2">ESP12 (AI-Thinker)</td><td class="column-3">ESP12E (AI-Thinker)</td><td class="column-4">ESP12E (Wemos)</td><td class="column-5">ESP12E (Wemos)</td><td class="column-6">ESP12E (Ai-Thinker)</td>
</tr>
<tr class="row-8">
	<td class="column-1">USB-To-Serial</td><td class="column-2">Yes</td><td class="column-3">Yes</td><td class="column-4">Yes</td><td class="column-5">Yes</td><td class="column-6">Yes</td>
</tr>
<tr class="row-9">
	<td class="column-1">Serial Chip</td><td class="column-2">CH340G</td><td class="column-3">CP2102/CH340G</td><td class="column-4">CH340G</td><td class="column-5">CH340G</td><td class="column-6">CH340G</td>
</tr>
<tr class="row-10">
	<td class="column-1">Breadboard friendly</td><td class="column-2">Bad (covers many pins)</td><td class="column-3">Very Good</td><td class="column-4">Very Good<br />
(after soldering)</td><td class="column-5">Bad<br />
(Arduino Form Factor)</td><td class="column-6">Bad<br />
(Covers many pins)</td>
</tr>
<tr class="row-11">
	<td class="column-1">Form factor</td><td class="column-2">Big</td><td class="column-3">Big</td><td class="column-4">Medium</td><td class="column-5">Very Big</td><td class="column-6">Big</td>
</tr>
<tr class="row-12">
	<td class="column-1">Price</td><td class="column-2">~$6.40</td><td class="column-3">~$6</td><td class="column-4">~$6</td><td class="column-5">~$6.50</td><td class="column-6">~6.50</td>
</tr>
<tr class="row-13">
	<td class="column-1">Application</td><td class="column-2">Development<br />
Beginner</td><td class="column-3">Development<br />
Beginner</td><td class="column-4">Development<br />
Advanced<br />
(soldering required)</td><td class="column-5">Development<br />
Form compatibility with<br />
Arduino Shields</td><td class="column-6">Development<br />
Beginner</td>
</tr>
<tr class="row-14">
	<td class="column-1">Where to buy?</td><td class="column-2"><a href="https://www.banggood.com/NodeMcu-Lua-WIFI-Development-Board-For-ESP8266-Module-p-976440.html?p=6R31122484684201508S&amp;custlinkid=1587792" rel="nofollow noopener" target="_blank">Banggood</a></td><td class="column-3"><a href="https://www.banggood.com/Geekcreit-NodeMcu-Lua-WIFI-Internet-Things-Development-Board-Based-ESP8266-CP2102-Wireless-Module-p-1097112.html?p=6R31122484684201508S&amp;custlinkid=1587608" rel="nofollow noopener" target="_blank">Banggood</a><br />
<a href="https://www.banggood.com/Geekcreit-NodeMcu-Lua-ESP8266-ESP-12F-WIFI-Development-Board-p-985891.html?p=6R31122484684201508S&amp;custlinkid=1587789" rel="nofollow noopener" target="_blank">Gearbest</a><br />
<a href="/go/al-nodemcu" rel="nofollow noopener" target="_blank">Aliexpress</a><br />
</td><td class="column-4"><a href="/go/tp-wemos-d1-pro " rel="nofollow noopener" target="_blank">ThingPulse</a><br />
<a href="https://www.banggood.com/Geekcreit-D1-Mini-NodeMcu-Lua-WIFI-ESP8266-Development-Board-Module-p-1044858.html?p=6R31122484684201508S&amp;custlinkid=1587788" rel="nofollow noopener" target="_blank">Banggood</a><br />
<a href="/go/al-d1minipro" rel="nofollow noopener" target="_blank">Aliexpress</a><br />
</td><td class="column-5"><a href="https://www.banggood.com/D1-R2-WiFi-ESP8266-Development-Board-Compatible-UNO-Program-By-IDE-p-1011870.html?p=6R31122484684201508S&amp;custlinkid=1587787" rel="nofollow noopener" target="_blank">Banggood</a></td><td class="column-6"><a href="https://www.banggood.com/3Pcs-LoLin-V3-NodeMcu-Lua-WIFI-Development-Board-p-1122727.html?p=6R31122484684201508S&amp;custlinkid=1587786" rel="nofollow noopener" target="_blank">Banggood</a></td>
</tr>
<tr class="row-15">
	<td class="column-1">Detail Post</td><td class="column-2"></td><td class="column-3"><a class="in-cell-link" href="http://blog.squix.ch/2014/12/esp8266-flashing-lua-firmware-and.html" target="_blank" rel="noopener">Post</a></td><td class="column-4"></td><td class="column-5"></td><td class="column-6"></td>
</tr>
</tbody>
</table>

<p>&nbsp;</p>
<p>[toc]</p>
<h3 style="text-align: left;">ESP-01</h3>
<div>
<p>This is probably one of the most popular modules, although it is by far not the most convenient one. With its small form factor (24.75mm x 14.5mm) it fits nicely into any enclosure. Two GPIO pins are led out and can be used to control periphery. With proper wiring and a serial-to-usb adapter you can also easily flash alternatives firmwares on it. By default it comes with one of the different versions of the AT firmware which allows you to use it in combination with an Arduino. One of the biggest problems of this module is the placement of the pin posts which makes it impossible to plug it directly into a bread board for prototyping: the two rows of posts are so close to each other that you would get a short-cirtcuit. However you can still use this module on a breadboard: either build a bread-board adapter or use female-to-male dupont wires to wire the module to your bread-board.<br />
<strong>Update</strong>: There are now also versions of the ESP-01 available <a href="https://www.banggood.com/Upgraded-Version-1M-Flash-ESP8266-ESP01-WIFI-Transceiver-Wireless-Module-p-979509.html?p=0P21061109440201501M" target="_blank" rel="noopener">with 1MB Flash</a>, compared to the <a href="https://www.banggood.com/Upgraded-Version-1M-Flash-ESP8266-ESP01-WIFI-Transceiver-Wireless-Module-p-979509.html?p=0P21061109440201501M" target="_blank" rel="noopener">earlier 512MB</a></p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/ESP01v0.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/ESP01v0.jpg?resize=200%2C200&#038;ssl=1" width="200" height="200" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">ESP8266 ESP-01 module</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
</div>
<div></div>
<h3 style="text-align: left;">ESP-05</h3>
<div>This module is very simple and has one purpose only: use it as mini wifi shield together with your Arduino or similar micro controller. There are different versions available: a four pin version that only has 3.3V, GND, RX and TX. Over the later ones you talk with your Arduino. Another version has an additional reset pin which allows you to manually or programatically reset the module.</div>
<div>This module nicely fits into a breadboard since the module has only one row of pin posts. But (and there is always a but) you are stuck with the delivered firmware unless you are willing to do some <a href="http://www.esp8266.com/viewtopic.php?f=13&amp;t=295" target="_blank" rel="noopener">lead cutting and soldering of some pins</a>. According to the forums not all boards come with the same AT firmware version.</div>
<div>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/SKU188840-1.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/SKU188840-1.jpg?resize=200%2C200&#038;ssl=1" width="200" height="200" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">ESP8266 ESP-05 module</td>
</tr>
</tbody>
</table>
</div>
<h3 style="text-align: left;">ESP-12</h3>
<div>This module allows you to access many features of the ESP8266: 11 GPIO pins, one analog-to-digital converter (ADC) with a 10 bit resolution. It also lets you easily configure deep-sleep mode which (<a href="http://tim.jagenberg.info/2015/01/18/low-power-esp8266/" target="_blank" rel="noopener">according to this source</a>) lets you run the module for 3 years on two AA batteries. With one drawback: it is not breadboard friendly at all. As for the modules previously described here the antenna is a track on the PCB which delivers good results for Wifi sensitivity.<br />
But to use it for prototyping you´ll have to build something around the module. You can order these breadboard adapters or build one yourself, like my colleague Andi did:</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/2015-03-1417.06.27-1024x758.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/2015-03-1417.06.27.jpg?resize=200%2C147&#038;ssl=1" width="200" height="147" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">ESP8266 ESP-12 plus self made bread board adapter<br />
(thx to Andifor the picture)</td>
</tr>
</tbody>
</table>
<p>There is also an almost-ready breadboard adapter available <a href="http://www.banggood.com/WIFI-ESP8266-ESP-12-Serial-Module-Full-IO-Port-Leads-p-972891.html?p=0P21061109440201501M" target="_blank" rel="noopener">here</a>.<br />
Thanks to its good availability and the rich access to the chip pins it is also widely used for aggregated modules, such as the test board I describe later in this post or the first version of the NodeMCU module. If you are planning to use the ESP8266 as a stand alone node the chances are good you will end up with this module in one way or the other.</p>
<p>[the_ad_placement id=&#8221;inpostplacement&#8221;]</p>
<h3 style="text-align: left;">ESP-201</h3>
</div>
<div>Originally named as ESP-12 this module has come to popularity as ESP-201 after the name clash had been discovered. In good old BASIC line adressing style the creators apparently wanted to make sure that no other name clash would occure and added a safety distance to the numbering scheme;-)</div>
<div>It is currently my preferred module for prototyping since it is breadboard friendly and offers similar access to the chip pins as the ESP-12 does. I say breadboard friendly with two remarks: the four pins at the head of the module keep you from directly plugging the module into a breadboard. But you can easily bend them to ninety digrees or unsolder them and place them on the upper side of the module. The second note is that the module itself hides many pins of the bread board for direct access and leaves only one row visible on each side of the module. If you need more you will have to extend a 5-pin row by connecting it to annother row on your breadboard. The board comes with a printed PCB antenna but also with a connector for an external one. This makes this module also a perfect candidate if you need to bridge a longer distance with your Wifi module. You can then easily replace the package wire antenna with a high-gain antenna and improve the sensitivity even farther.</div>
<div>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/ESP201_Front-1024x991.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/ESP201_Front.jpg?resize=200%2C193&#038;ssl=1" width="200" height="193" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">ESP8266 ESP-201 with pin-out description</td>
</tr>
</tbody>
</table>
<h3 style="text-align: left;">Test Board</h3>
</div>
<div>There are various test boards available. Check the links and view the picture below to see what I´m describing here. This test board comes with a battery pack and various preconfigured LEDs and one light dependent resistor connected to the ADC. It integrates an ESP-12 as described earlier in this post and makes all the pins available to your convenience. It also has a jumper which you can set when flashing a new firmware. The board comes with a voltage regulator that steps down the 4.5 Volt from the battery pack to the 3.3V that the ESP8266 needs. You can easily replace the battery pack with the power lines of a USB connector, as I described <a href="https://blog.squix.org/2015/01/esp8266-test-board-review.html" target="_blank" rel="noopener">here</a>.</div>
<div>I see two kinds of applications for this board: run a standalone node somewhere without a wired power adapter is the first only from the attached battery pack. You can use a tiny bread board if you need to connect sensors to the test board and even glue it on the module. Just make sure to not cover the PCB antenna for better antenna reception.</div>
<div>The second application is to quickly test program code with the simplified periphery of the many LEDs and the light dependent sensor which is connected to the ADC. <b>Update: </b>I have this board running on the 3 AA batteries for more than 1000 hours (&gt;40days) already. See the <a href="https://blog.squix.org/2015/06/eps8266-long-term-data-logger-update-31.html">article here</a></div>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/testboard-layout.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/testboard-layout.jpg?resize=154%2C200&#038;ssl=1" width="154" height="200" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">ESP8266 test board with pin-out description</td>
</tr>
</tbody>
</table>
<div></div>
<div></div>
<h3 style="text-align: left;">NodeMCU module V0.9 (Outdated)</h3>
<div>This module is somehow quite different from the modules described earlier in this post. It comes with all you need to get started since it already has a built-in serial-to-usb adapter and comes with a micro USB plug for power supply and for programming the module.</div>
<div>I had high hopes on this module since in theory it should make development of applications based on the ESP8266 much easier: less wiring is required compared to any of the other modules, you  need neither an external power supply nor a serial-to-usb adapter and two switches allow for easy resetting the module and booting it into flash mode. And it nicely fits into a bread board and lets you wire periphery with the fewest amount of wires imaginable.</div>
<div></div>
<div>Reality looks currently a bit different: on my Mac I could not flash the module with the built in serial-to-usb adapter even after installing the latest driver available. I then had to fall back to an external serial-to-usb adapter. For me this was not a big issue since I don´t flash new firmwares that often and I was already in possession of an external serial converter. After I had flashed the latest version of the NodeMCU Lua firmware I could use the built-in converter just fine. The second problem is that the current form factor of the module covers all the pins on a bread board in the area of the module. To use the pins you will have to insert bridges which lead from under the module to a visible part and insert the module again. And you can only to this for a limited number of pins.</div>
<div></div>
<div>Due to the higher price of this module you will most likely use this module during development time. Once you have completed the software and all the required external components you might use one of the other modules or you will design a completely new module which integrates all the required components</div>
<div></div>
<div>At the time of this writing only the first version of the NodeMCU module is available and that is what I´m reporting here. In the next few days (or weeks) the team that created the first module will publish an improved version which will fix the mentioned problems of the first version. I´m looking forward to test the new version as soon as it becomes available. Once these issues have been resolved this module certainly has all it takes to become an interesting all-in-one alternative to an Arduino based internet-of-things node. <b>UPDATE: don&#8217;t order this version anymore, consider the NodeMCU V1.0 instead (see below)</b></div>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/2015-02-2713.10.45-1024x1024.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/2015-02-2713.10.45.jpg?resize=200%2C200&#038;ssl=1" width="200" height="200" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">ESP8266 NodeMCU module (version 0.9)</td>
</tr>
</tbody>
</table>
<div></div>
<div>
<h3>NodeMCU module V1.0</h3>
</div>
<div>A few weeks ago the NodeMCU team published their new design and I have to say that it is a huge improvement over the first issue. I tested it with both the NodeMCU LUA firmware and the Arduino IDE. It incorporates the new ESP-12E module with 4MB of flash memory and also has a few more pin-outs.</div>
<div>Compared to the V0.9 variant the V1.0 is more narrow and leaves one row of pins on each side on a standard breadboard which is just perfect for prototyping. Another nice feature is the fact that you don&#8217;t even have to press the reset/flash button combination in the Arduino IDE to upload a new version of your code. Somehow the board or the software handle this automagically. And with the latest published version of the Arduino/ESP8266 board configuration you can configure upload speed to 921600 baud with which the upload finishes just within a few seconds.</div>
<div>
<p>All in all, this is the long awaited development board that you want to have and play with. The price is slightly higher than with the other boards, starting from around $8 for a potential clone, but it is totally worth it because you are saving all the additional hardware like serial-to-usb converter.</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="https://i0.wp.com/1.bp.blogspot.com/-BLq1aICYHos/VXvfon8emRI/AAAAAAAAAVI/jdHmKFoDAO4/s1600/NodeMCU_DEVKIT_1.0.jpg"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/NodeMCU_DEVKIT_1.0.jpg?resize=320%2C213&#038;ssl=1" width="320" height="213" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">New improved version of the NodeMCU V1.0.<br />
Now fits very nicely on a breadboard and also the Serial-To-USB<br />
converter works very well.</td>
</tr>
</tbody>
</table>
</div>
<div>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="https://i0.wp.com/3.bp.blogspot.com/-0F3PBZr7SGA/VVzgIj_xgdI/AAAAAAAAASo/weK3UBggBJI/s1600/Screenshot%252B2015-05-20%252B21.27.08.png"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/Screenshot2015-05-2021.27.08.png?resize=320%2C171&#038;ssl=1" width="320" height="171" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">I created a Fritzing part for the NodeMCU V1.0 that you<br />
can use to draw up your circuits. <a href="https://blog.squix.org/2015/05/esp8266-nodemcu-v10-part-created-for.html">Read all about it here</a></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
</div>
<h3 style="text-align: left;">Summary</h3>
<div>Which module suits you best depends on your application. If the price and small form factor is important for you and you are looking for a stand alone module with just two GPIO pins, the ESP-01 is your candidate. If you just want cheap Wifi connectivity for your Arduino you might go for the ESP-05. The ESP-12 might be interesting if you have periphery based on SPI or I2C bus or if you just many GPIO pins and you are not afraid of a bit of soldering. The ESP-201 is good for solder-free prototyping on a bread board and allows you to access almost all pins of the ESP8266 chip. But you´ll still need an external serial-to-usb converter and a power supply. In case you want it even easier and the slightly higher price is not a problem I would recommend the NodeMCU V1.0 module for you. The following table summarises this post:</div>
<div></div>
<h3 id="overviewRawModules">Raw Modules</h3>

<table id="tablepress-4-no-2" class="tablepress tablepress-id-4">
<thead>
<tr class="row-1">
	<td class="column-1"></td><th class="column-2">ESP-01</th><th class="column-3">ESP-05</th><th class="column-4">ESP-12</th><th class="column-5">ESP-201</th><th class="column-6">Testboard</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1"></td><td class="column-2"><a href="http://blog.squix.org/go/esp-01" rel="nofollow" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-thumbnail wp-image-280" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/ESP01v0-150x150.jpg?resize=84%2C84" alt="ESP01v0" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/ESP01v0.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/ESP01v0.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/ESP01v0.jpg?w=700&amp;ssl=1 700w" sizes="(max-width: 84px) 100vw, 84px" /></a></td><td class="column-3"><a href="http://blog.squix.org/go/esp-05" rel="nofollow" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-thumbnail wp-image-734" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/961246_2-150x150.jpg?resize=84%2C84" alt="ESP-05" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/961246_2.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/961246_2.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/961246_2.jpg?resize=120%2C120&amp;ssl=1 120w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/961246_2.jpg?w=600&amp;ssl=1 600w" sizes="(max-width: 84px) 100vw, 84px" /></a></td><td class="column-4"><a href="http://blog.squix.org/go/esp-12" rel="nofollow" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-thumbnail wp-image-735" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/980984_3-150x150.jpg?resize=84%2C84" alt="ESP-12" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/980984_3.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/980984_3.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/980984_3.jpg?resize=120%2C120&amp;ssl=1 120w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/980984_3.jpg?w=600&amp;ssl=1 600w" sizes="(max-width: 84px) 100vw, 84px" /></a></td><td class="column-5"><a href="http://blog.squix.org/go/esp-201" rel="nofollow" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-thumbnail wp-image-736" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/964288_4-150x150.jpg?resize=84%2C84" alt="ESP-12" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/964288_4.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/964288_4.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/964288_4.jpg?resize=120%2C120&amp;ssl=1 120w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/964288_4.jpg?w=600&amp;ssl=1 600w" sizes="(max-width: 84px) 100vw, 84px" /></a></td><td class="column-6"><a href="http://blog.squix.org/go/esp-testboard" rel="nofollow" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-thumbnail wp-image-309" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/01/testboard-layout-150x150.jpg?resize=84%2C84" alt="testboard-layout" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/01/testboard-layout.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/01/testboard-layout.jpg?zoom=3&amp;resize=84%2C84&amp;ssl=1 252w" sizes="(max-width: 84px) 100vw, 84px" /></a></td>
</tr>
<tr class="row-3">
	<td class="column-1">GPIO Pins</td><td class="column-2">2</td><td class="column-3">-</td><td class="column-4">11</td><td class="column-5">11</td><td class="column-6">11</td>
</tr>
<tr class="row-4">
	<td class="column-1">ADC</td><td class="column-2">-</td><td class="column-3">-</td><td class="column-4">1</td><td class="column-5">1</td><td class="column-6">1</td>
</tr>
<tr class="row-5">
	<td class="column-1">Antenna</td><td class="column-2">PCB</td><td class="column-3">PCB</td><td class="column-4">PCB</td><td class="column-5">External/PCB</td><td class="column-6">PCB</td>
</tr>
<tr class="row-6">
	<td class="column-1">USB-To-Serial</td><td class="column-2">No</td><td class="column-3">No</td><td class="column-4">No</td><td class="column-5">No</td><td class="column-6">No</td>
</tr>
<tr class="row-7">
	<td class="column-1">Breadboard friendly</td><td class="column-2">Medium</td><td class="column-3">Good</td><td class="column-4">Bad</td><td class="column-5">Good</td><td class="column-6">Bad</td>
</tr>
<tr class="row-8">
	<td class="column-1">Form factor</td><td class="column-2">Small</td><td class="column-3">Small</td><td class="column-4">Medium</td><td class="column-5">Big</td><td class="column-6">Very Big</td>
</tr>
<tr class="row-9">
	<td class="column-1">Price</td><td class="column-2">~$3</td><td class="column-3">~$3</td><td class="column-4">~$3</td><td class="column-5">~$3</td><td class="column-6">~$6.50</td>
</tr>
<tr class="row-10">
	<td class="column-1">Application</td><td class="column-2">Simple Standalone mode<br />
or wifi shield for Arduino</td><td class="column-3">Wifi Shield</td><td class="column-4">Standalone</td><td class="column-5">Standalone</td><td class="column-6">Prototyping</td>
</tr>
<tr class="row-11">
	<td class="column-1">Where to buy?</td><td class="column-2"><a href="http://blog.squix.org/go/esp-01" rel="nofollow" target="_blank">Banggood</a></td><td class="column-3"><a href="http://blog.squix.org/go/esp-05" rel="nofollow" target="_blank">Banggood</a></td><td class="column-4"><a href="http://blog.squix.org/go/esp-12" rel="nofollow" target="_blank">Banggood</a></td><td class="column-5"><a href="http://blog.squix.org/go/esp-201" rel="nofollow" target="_blank">Banggood</a></td><td class="column-6"><a href="http://blog.squix.org/go/esp-testboard" rel="nofollow" target="_blank">Banggood</a></td>
</tr>
<tr class="row-12">
	<td class="column-1">Detail Post</td><td class="column-2"><a class="in-cell-link" href="http://blog.squix.ch/2014/12/esp8266-flashing-lua-firmware-and.html" target="_blank">Post</a></td><td class="column-3">-</td><td class="column-4">-</td><td class="column-5"><a class="in-cell-link" href="http://blog.squix.ch/2015/02/esp8266-esp-201-breakout-board-review.html" target="_blank">Post</a></td><td class="column-6"><a class="in-cell-link" href="http://blog.squix.ch/2015/01/esp8266-test-board-review.html" target="_blank">Post</a></td>
</tr>
</tbody>
</table>

<p>&nbsp;</p>
<h3 id="overviewDevModules">Development Modules (with Serial Converter)</h3>

<table id="tablepress-5-no-2" class="tablepress tablepress-id-5">
<thead>
<tr class="row-1">
	<td class="column-1"></td><th class="column-2">NodeMCU V0.9</th><th class="column-3">NodeMcu V1.0</th><th class="column-4">Wemos D1 Mini</th><th class="column-5">Wemos D1 R2</th><th class="column-6">LoLin V3 NodeMcu Board</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">Branded</td><td class="column-2">NodeMCU</td><td class="column-3">DOIT</td><td class="column-4">Wemos</td><td class="column-5">Wemos</td><td class="column-6">LoLin</td>
</tr>
<tr class="row-3">
	<td class="column-1"></td><td class="column-2"><a href="http://blog.squix.org/go/nodemcuv09" rel="nofollow noopener" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/976440_8-150x150.jpg?resize=84%2C84" alt="NodeMCU V0.9" width="84" height="84" class="aligncenter size-thumbnail wp-image-749" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/976440_8.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/976440_8.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/976440_8.jpg?resize=120%2C120&amp;ssl=1 120w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/976440_8.jpg?w=600&amp;ssl=1 600w" sizes="(max-width: 84px) 100vw, 84px" /></a></td><td class="column-3"><a href="http://blog.squix.org/go/nodemcuv10" rel="nofollow noopener" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="size-thumbnail wp-image-727" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/985891_7-150x150.jpg?resize=84%2C84" alt="Geekcreit™ Doit NodeMcu Lua ESP8266 ESP-12E WIFI Development Board" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/985891_7.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/985891_7.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/985891_7.jpg?resize=120%2C120&amp;ssl=1 120w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/08/985891_7.jpg?w=600&amp;ssl=1 600w" sizes="(max-width: 84px) 100vw, 84px" /></a></td><td class="column-4"><a href="http://blog.squix.org/go/wemosd1mini" rel="nofollow noopener" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-thumbnail wp-image-670" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/07/WemosD1Mini-150x150.jpg?resize=84%2C84" alt="WemosD1Mini" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/07/WemosD1Mini.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/07/WemosD1Mini.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/07/WemosD1Mini.jpg?resize=120%2C120&amp;ssl=1 120w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2016/07/WemosD1Mini.jpg?w=600&amp;ssl=1 600w" sizes="(max-width: 84px) 100vw, 84px" /></a></td><td class="column-5"><a href="http://blog.squix.org/go/wemosd1r2" rel="nofollow noopener" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-thumbnail wp-image-738" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/1011870_6-150x150.jpg?resize=84%2C84" alt="Wemos R1 D2" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/1011870_6.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/1011870_6.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/1011870_6.jpg?resize=120%2C120&amp;ssl=1 120w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/1011870_6.jpg?w=600&amp;ssl=1 600w" sizes="(max-width: 84px) 100vw, 84px" /></a></td><td class="column-6"><a href="http://blog.squix.org/go/nodemculolin" rel="nofollow noopener" target="_blank"><img data-recalc-dims="1" loading="lazy" decoding="async" class="aligncenter size-thumbnail wp-image-739" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/992733_6-150x150.jpg?resize=84%2C84" alt="LoLin V3 NodeMcu" width="84" height="84" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/992733_6.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/992733_6.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/992733_6.jpg?resize=120%2C120&amp;ssl=1 120w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/992733_6.jpg?w=600&amp;ssl=1 600w" sizes="(max-width: 84px) 100vw, 84px" /></a></td>
</tr>
<tr class="row-4">
	<td class="column-1">GPIO Pins</td><td class="column-2">11</td><td class="column-3">11</td><td class="column-4">11</td><td class="column-5">11</td><td class="column-6">11</td>
</tr>
<tr class="row-5">
	<td class="column-1">ADC</td><td class="column-2">1</td><td class="column-3">1</td><td class="column-4">1</td><td class="column-5">1</td><td class="column-6">1</td>
</tr>
<tr class="row-6">
	<td class="column-1">Antenna</td><td class="column-2">PCB</td><td class="column-3">PCB</td><td class="column-4">PCB</td><td class="column-5">PCB</td><td class="column-6">PCB</td>
</tr>
<tr class="row-7">
	<td class="column-1">ESP8266 Module</td><td class="column-2">ESP12 (AI-Thinker)</td><td class="column-3">ESP12E (AI-Thinker)</td><td class="column-4">ESP12E (Wemos)</td><td class="column-5">ESP12E (Wemos)</td><td class="column-6">ESP12E (Ai-Thinker)</td>
</tr>
<tr class="row-8">
	<td class="column-1">USB-To-Serial</td><td class="column-2">Yes</td><td class="column-3">Yes</td><td class="column-4">Yes</td><td class="column-5">Yes</td><td class="column-6">Yes</td>
</tr>
<tr class="row-9">
	<td class="column-1">Serial Chip</td><td class="column-2">CH340G</td><td class="column-3">CP2102/CH340G</td><td class="column-4">CH340G</td><td class="column-5">CH340G</td><td class="column-6">CH340G</td>
</tr>
<tr class="row-10">
	<td class="column-1">Breadboard friendly</td><td class="column-2">Bad (covers many pins)</td><td class="column-3">Very Good</td><td class="column-4">Very Good<br />
(after soldering)</td><td class="column-5">Bad<br />
(Arduino Form Factor)</td><td class="column-6">Bad<br />
(Covers many pins)</td>
</tr>
<tr class="row-11">
	<td class="column-1">Form factor</td><td class="column-2">Big</td><td class="column-3">Big</td><td class="column-4">Medium</td><td class="column-5">Very Big</td><td class="column-6">Big</td>
</tr>
<tr class="row-12">
	<td class="column-1">Price</td><td class="column-2">~$6.40</td><td class="column-3">~$6</td><td class="column-4">~$6</td><td class="column-5">~$6.50</td><td class="column-6">~6.50</td>
</tr>
<tr class="row-13">
	<td class="column-1">Application</td><td class="column-2">Development<br />
Beginner</td><td class="column-3">Development<br />
Beginner</td><td class="column-4">Development<br />
Advanced<br />
(soldering required)</td><td class="column-5">Development<br />
Form compatibility with<br />
Arduino Shields</td><td class="column-6">Development<br />
Beginner</td>
</tr>
<tr class="row-14">
	<td class="column-1">Where to buy?</td><td class="column-2"><a href="https://www.banggood.com/NodeMcu-Lua-WIFI-Development-Board-For-ESP8266-Module-p-976440.html?p=6R31122484684201508S&amp;custlinkid=1587792" rel="nofollow noopener" target="_blank">Banggood</a></td><td class="column-3"><a href="https://www.banggood.com/Geekcreit-NodeMcu-Lua-WIFI-Internet-Things-Development-Board-Based-ESP8266-CP2102-Wireless-Module-p-1097112.html?p=6R31122484684201508S&amp;custlinkid=1587608" rel="nofollow noopener" target="_blank">Banggood</a><br />
<a href="https://www.banggood.com/Geekcreit-NodeMcu-Lua-ESP8266-ESP-12F-WIFI-Development-Board-p-985891.html?p=6R31122484684201508S&amp;custlinkid=1587789" rel="nofollow noopener" target="_blank">Gearbest</a><br />
<a href="/go/al-nodemcu" rel="nofollow noopener" target="_blank">Aliexpress</a><br />
</td><td class="column-4"><a href="/go/tp-wemos-d1-pro " rel="nofollow noopener" target="_blank">ThingPulse</a><br />
<a href="https://www.banggood.com/Geekcreit-D1-Mini-NodeMcu-Lua-WIFI-ESP8266-Development-Board-Module-p-1044858.html?p=6R31122484684201508S&amp;custlinkid=1587788" rel="nofollow noopener" target="_blank">Banggood</a><br />
<a href="/go/al-d1minipro" rel="nofollow noopener" target="_blank">Aliexpress</a><br />
</td><td class="column-5"><a href="https://www.banggood.com/D1-R2-WiFi-ESP8266-Development-Board-Compatible-UNO-Program-By-IDE-p-1011870.html?p=6R31122484684201508S&amp;custlinkid=1587787" rel="nofollow noopener" target="_blank">Banggood</a></td><td class="column-6"><a href="https://www.banggood.com/3Pcs-LoLin-V3-NodeMcu-Lua-WIFI-Development-Board-p-1122727.html?p=6R31122484684201508S&amp;custlinkid=1587786" rel="nofollow noopener" target="_blank">Banggood</a></td>
</tr>
<tr class="row-15">
	<td class="column-1">Detail Post</td><td class="column-2"></td><td class="column-3"><a class="in-cell-link" href="http://blog.squix.ch/2014/12/esp8266-flashing-lua-firmware-and.html" target="_blank" rel="noopener">Post</a></td><td class="column-4"></td><td class="column-5"></td><td class="column-6"></td>
</tr>
</tbody>
</table>

<div></div>
<div>
<h3 style="text-align: left;">Applications/ Development Kits</h3>
</div>
<div>I have to admit, this is a bit of shameless advertisement;-). But if you came here because you are interested in IoT and you are probably getting started you might profit from a ready-to-go development kit. One of my most successful projects with the ESP8266 is the WeatherStation. It displays current weather information and forecasts it downloads frequently from the web on a beautiful OLED display. And this is just the starting point. You can use the included libraries to display data from other sources (stock information, sport results, etc) available on the net. And: I sell it as a development kit in my shop. <a href="https://blog.squix.org/product/weatherstation-kit-w-white-oled">ESP8266 WeatherStation</a> with shipping available to almost all countries.</div>
<div></div>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="https://i0.wp.com/2.bp.blogspot.com/-O0G-gWU3JxY/Vlr40FI48kI/AAAAAAAAAd0/ErIlnmvZWK8/s1600/WeatherStationV2.JPG"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/WeatherStationV2.jpg?resize=320%2C320&#038;ssl=1" width="320" height="320" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">The WeatherStation Kit displaying a 3-day forecast</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="https://i0.wp.com/3.bp.blogspot.com/-ATMgNrCLW24/VYHM2ujGRnI/AAAAAAAAAV8/j1dL4UGwsuk/s1600/WeatherStationKit.jpg"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/03/WeatherStationKit.jpg?resize=320%2C234&#038;ssl=1" width="320" height="234" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">The components included in a WeatherStation Kit:<br />
NodeMCU V1 with 4MB flash, 128&#215;64 pixels OLED display,<br />
USB cable and jumper wires. Available now in the shop:<br />
<a href="https://blog.squix.org/product/weatherstation-kit-w-white-oled">ESP8266 WeatherStation</a></td>
</tr>
</tbody>
</table>
<div></div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.squix.org/2015/03/esp8266-module-comparison-esp-01-esp-05.html/feed</wfw:commentRss>
			<slash:comments>21</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">61</post-id>	</item>
		<item>
		<title>ESP8266: ESP-201 breakout board review</title>
		<link>https://blog.squix.org/2015/02/esp8266-esp-201-breakout-board-review.html</link>
					<comments>https://blog.squix.org/2015/02/esp8266-esp-201-breakout-board-review.html#comments</comments>
		
		<dc:creator><![CDATA[Daniel Eichhorn]]></dc:creator>
		<pubDate>Sat, 07 Feb 2015 19:57:00 +0000</pubDate>
				<category><![CDATA[Common]]></category>
		<category><![CDATA[ESP-201]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[ESP8266 ESP-201]]></category>
		<category><![CDATA[external antenna]]></category>
		<category><![CDATA[nodemcu]]></category>
		<category><![CDATA[pin-out]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[test board]]></category>
		<guid isPermaLink="false">http://blog.squix.org/2015/02/07/esp8266-esp-201-breakout-board-review/</guid>

					<description><![CDATA[Today finally a new package from China arrived containing an ESP8266-ESP201 bought on aliexpress. I had ordered two pieces and each came in a little plastic bag and stuck in protective foam. The bag also contained a tiny antenna that can be plugged into the connector ... <p><a class="read-more btn btn-secondary" href="https://blog.squix.org/2015/02/esp8266-esp-201-breakout-board-review.html">Read More</a></p>]]></description>
										<content:encoded><![CDATA[<div dir="ltr" style="text-align: left;">
<p>Today finally a new package from China arrived containing an <a href="https://blog.squix.org/go/esp-201" target="_blank">ESP8266-ESP201</a> bought on aliexpress. I had ordered two pieces and each came in a little plastic bag and stuck in protective foam. The bag also contained a tiny antenna that can be plugged into the connector on the board.</p>
<div></div>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/02/ESP201_Front-1024x991.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/02/ESP201_Front.jpg?resize=320%2C309&#038;ssl=1" width="320" height="309" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">Pin layout to your convenience: when plugged into a breadboard<br />
you cannot read the labels on the lower side of the PCB<br />
Please Note: GPIO15 remains connected even after flashing</td>
</tr>
</tbody>
</table>
<div></div>
<h3 style="text-align: left;">Board</h3>
<div>I ordered the ESP-201 board because I was looking forward to finally own an ESP8266 module which was compatible with my bread board. Annoyingly the connectors for power supply and serial connection are placed in a way which by default doesn&#8217;t fit into a normal breadboard. You can however use pliers to bend the four pins in a 90 degree angle so that you can attach the connectors right to it (see picture):</div>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/02/IMG_5385-1024x768.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/02/IMG_5385.jpg?resize=200%2C150&#038;ssl=1" width="200" height="150" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">ESP8266 ESP-201: bend TX, RX, 3.3V and GND<br />
pins to fit the module into a bread board</td>
</tr>
</tbody>
</table>
<div style="text-align: left;">Another annoying design mistake is that the labels for most of the pins are on the bottom side of the PCB. You can&#8217;t read the labels when the module is sitting on the bread board. Because of this I drew up the pin layout above. I hope it will help you&#8230;</div>
<div style="text-align: left;"></div>
<table class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="text-align: center;"><a style="margin-left: auto; margin-right: auto;" href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/02/ESP201_back-896x1024.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/02/ESP201_back.jpg?resize=175%2C200&#038;ssl=1" width="175" height="200" border="0" /></a></td>
</tr>
<tr>
<td class="tr-caption" style="text-align: center;">The bottom side of the ESP201. As<br />
you can see, the pins are nice labeled,<br />
just on the wrong side</td>
</tr>
</tbody>
</table>
<div style="text-align: left;"></div>
<h3 style="text-align: left;">Flashing Firmware</h3>
<div>It took me a while until I figured out that I also had to connect GPIO15 to ground in order to get the board running. After that flashing worked fine and I could transfer the NodeMCU firmware without further problems to the chip.</div>
<div></div>
<h3 style="text-align: left;">Available Pins</h3>
<div>It seems that all the usual pins are available. See this table here for mapping from the labels on the bottom of the field to the once often used in forums and other sources: <a href="https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition">https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition</a></div>
<div>Especially noteworthy is the availability of the T_OUT pin which is the analog-digital-converter (ADC). I&#8217;m not 100% sure what the D0,D1, D2 and D3 pins are for. It might be that the are used for the SDIO mode, where you boot from a SD card.</div>
<div></div>
<h3 style="text-align: left;">Antenna</h3>
<div>The board appears to have a built-in antenna but also offers a connector to the antenna that came with the package. The following table shows the average signal strength of (anonymized) access points in my neighbourhood after running the wifi.sta.getap command on the lua firmware 100 times. Once with the external antenna and once without:</div>
<div></div>
<div>
<table dir="ltr" style="border-collapse: collapse; border: 1px solid #ccc; font-family: arial,sans,sans-serif; font-size: 13px; table-layout: fixed;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 21px;">
<td style="padding: 2px 3px 2px 3px; vertical-align: bottom;"></td>
<td style="font-weight: bold; padding: 2px 3px 2px 3px; text-align: center; vertical-align: bottom;" colspan="2" rowspan="1" data-sheets-value="[null,2,&quot;# of access point listed&quot;]"># of access point listed</td>
<td style="font-weight: bold; padding: 2px 3px 2px 3px; text-align: center; vertical-align: bottom;" colspan="2" rowspan="1" data-sheets-value="[null,2,&quot;avg signal strength [dbm]&quot;]">avg signal strength [dbm]</td>
</tr>
<tr style="height: 21px;">
<td style="padding: 2px 3px 2px 3px; vertical-align: bottom;"></td>
<td style="font-weight: bold; padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;w/ ext antenna&quot;]">w/ ext antenna</td>
<td style="font-weight: bold; padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;w/o&quot;]">w/o</td>
<td style="font-weight: bold; padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;w/ ext antenna&quot;]">w/ ext antenna</td>
<td style="font-weight: bold; padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;w/o&quot;]">w/o</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-1&quot;]">AP-1</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,100]">100</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,97]">97</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-70]">-70</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-82]">-82</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-2&quot;]">AP-2</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,93]">93</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,18]">18</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-88]">-88</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-92]">-92</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-3&quot;]">AP-3</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,2]">2</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,0]">0</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-92]">-92</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;n/a&quot;]">n/a</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-4&quot;]">AP-4</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,94]">94</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,1]">1</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-86]">-86</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-94]">-94</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-5&quot;]">AP-5</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,4]">4</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,0]">0</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-93]">-93</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;n/a&quot;]">n/a</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-6&quot;]">AP-6</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,16]">16</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,0]">0</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-89]">-89</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;n/a&quot;]">n/a</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-7&quot;]">AP-7</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,99]">99</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,97]">97</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-80]">-80</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-84]">-84</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-8&quot;]">AP-8</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,19]">19</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,0]">0</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-91]">-91</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;n/a&quot;]">n/a</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-9&quot;]">AP-9</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,5]">5</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,0]">0</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-92]">-92</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;n/a&quot;]">n/a</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-10&quot;]">AP-10</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,100]">100</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,100]">100</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-31]">-31</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-32]">-32</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-11&quot;]">AP-11</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,100]">100</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,100]">100</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-31]">-31</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-32]">-32</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-12&quot;]">AP-12</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,98]">98</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,87]">87</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-89]">-89</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-91]">-91</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-13&quot;]">AP-13</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,40]">40</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,0]">0</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-92]">-92</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;n/a&quot;]">n/a</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-14&quot;]">AP-14</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,4]">4</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,0]">0</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-91]">-91</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;n/a&quot;]">n/a</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-15&quot;]">AP-15</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,1]">1</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,0]">0</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-91]">-91</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;n/a&quot;]">n/a</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-16&quot;]">AP-16</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,16]">16</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,0]">0</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-93]">-93</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;n/a&quot;]">n/a</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-17&quot;]">AP-17</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,13]">13</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,0]">0</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-93]">-93</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;n/a&quot;]">n/a</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-18&quot;]">AP-18</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,81]">81</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,92]">92</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-89]">-89</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-92]">-92</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-19&quot;]">AP-19</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,22]">22</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,0]">0</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-90]">-90</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;n/a&quot;]">n/a</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-20&quot;]">AP-20</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,47]">47</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,38]">38</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-91]">-91</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-92]">-92</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-21&quot;]">AP-21</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,99]">99</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,75]">75</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-78]">-78</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-89]">-89</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-22&quot;]">AP-22</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,95]">95</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,87]">87</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-81]">-81</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-89]">-89</td>
</tr>
<tr style="height: 21px;">
<td style="font-weight: bold; padding: 2px 3px 2px 3px; vertical-align: bottom;" data-sheets-value="[null,2,&quot;AP-23&quot;]">AP-23</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,6]">6</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,0]">0</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,-90]">-90</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;c&quot;]">n/a</td>
</tr>
</tbody>
</table>
</div>
<div></div>
<div>As you can see, 12 access points were not even visible without the external antenna. All others had significantly worse signal strength without antenna. I realize that this test is not highly scientific but it might give you an idea how valuable the external antenna is.</div>
<div></div>
<h3 style="text-align: left;">Chip</h3>
<div>My two boards are equipped both with the newer ESP8266EX chip. If anybody knows what the difference is to the version without &#8220;EX&#8221; please let me know. Nodemcu&#8217;s node.info() returns these values:</div>
<div>
<table dir="ltr" style="border-collapse: collapse; border: 1px solid #ccc; font-family: arial,sans,sans-serif; font-size: 13px; table-layout: fixed;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 21px;">
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;flashisize&quot;]"><b>flashisize</b></td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;flashmode&quot;]"><b>flashmode</b></td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,2,&quot;flashspeed&quot;]"><b>flashspeed</b></td>
</tr>
<tr style="height: 21px;">
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,512]">512</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,0]">0</td>
<td style="padding: 2px 3px 2px 3px; text-align: right; vertical-align: bottom;" data-sheets-value="[null,3,null,40000000]">40000000</td>
</tr>
</tbody>
</table>
</div>
<div></div>
<h3 style="text-align: left;">Quality</h3>
<div>The board looks well processed but one of the two pieces came with pins not 100% perpendicular to the PCB. However, this doesn&#8217;t affect usage since both rows of pins are equally skewed.</div>
<div></div>
<h3 style="text-align: left;">Summary</h3>
<div>If you don&#8217;t mind adapting some of the pins with pliers you get a great test board for a really good price (I paid $4.69, by now it&#8217;s even cheaper). Once adapted the module fits nicely into a bread board and you have one row of connectors left on each side of the board. It is a pity that the pins are only labeled on the bottom side but that might be changed in the future. However, for a price only slightly higher than a ESP-01 it is a pretty good module and has many pins more broken out as well. Especially the ADC offers new possibilities for experimentation. Just remember that the ADC measures values between 0 and 1V. The external antenna and the connector on the board is another aspect on the plus side. It is quite impressive how much more sensitivity this 15cm wire yields.</div>
<div></div>
<h3 style="text-align: left;">Links</h3>
<div>
<ul style="text-align: left;">
<li><a href="https://github.com/esp8266/esp8266-wiki/wiki/Pin-definition">ESP8266EX Pin Definition</a></li>
<li><a href="https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en#wifistagetap">NodeMcu &#8211; getAp</a></li>
</ul>
</div>
<div style="text-align: left;"></div>
<div></div>
<p>&nbsp;</p>
<div></div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.squix.org/2015/02/esp8266-esp-201-breakout-board-review.html/feed</wfw:commentRss>
			<slash:comments>15</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">63</post-id>	</item>
		<item>
		<title>ESP8266, Arduino, Raspberry Pi: introduction to IoT hardware</title>
		<link>https://blog.squix.org/2015/02/esp8266-arduino-raspberry-pi.html</link>
					<comments>https://blog.squix.org/2015/02/esp8266-arduino-raspberry-pi.html#respond</comments>
		
		<dc:creator><![CDATA[Daniel Eichhorn]]></dc:creator>
		<pubDate>Wed, 04 Feb 2015 19:04:00 +0000</pubDate>
				<category><![CDATA[Common]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[comparison]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[MCU]]></category>
		<category><![CDATA[NodeLua]]></category>
		<category><![CDATA[nodemcu]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<guid isPermaLink="false">http://blog.squix.org/2015/02/04/esp8266-arduino-raspberry-pi/</guid>

					<description><![CDATA[Checkout my presentation about IoT:]]></description>
										<content:encoded><![CDATA[<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
Checkout my presentation about IoT:</div>
<p><iframe loading="lazy" allowfullscreen="true" frameborder="0" height="299" mozallowfullscreen="true" src="https://docs.google.com/presentation/d/1Dp2ZiS9hMW2IZ4QjOqh2KG1dxMzs3dTAJH_Yu3rsiyA/embed?start=true&amp;loop=true&amp;delayms=5000" webkitallowfullscreen="true" width="480"></iframe></div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.squix.org/2015/02/esp8266-arduino-raspberry-pi.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">65</post-id>	</item>
		<item>
		<title>ESP8266 with web update: NodeLua, a Spark.io like ESP8266 firmware</title>
		<link>https://blog.squix.org/2015/01/esp8266-update-over-air-nodelua-sparkio.html</link>
					<comments>https://blog.squix.org/2015/01/esp8266-update-over-air-nodelua-sparkio.html#respond</comments>
		
		<dc:creator><![CDATA[Daniel Eichhorn]]></dc:creator>
		<pubDate>Sun, 04 Jan 2015 13:07:00 +0000</pubDate>
				<category><![CDATA[Common]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[frankenstein firmware]]></category>
		<category><![CDATA[NodeLua]]></category>
		<category><![CDATA[nodemcu]]></category>
		<category><![CDATA[spark core]]></category>
		<category><![CDATA[web update]]></category>
		<guid isPermaLink="false">http://blog.squix.org/2015/01/04/esp8266-update-over-air-nodelua-sparkio/</guid>

					<description><![CDATA[The ESP8266 chip is really something: cheap and with its Wifi interface capable for Internet-of-Things tasks. You can get boards on Aliexpress for as little as $3, shipping to Europe or US included! OK, so you ordered one, waited (possibly) a few weeks and then ... <p><a class="read-more btn btn-secondary" href="https://blog.squix.org/2015/01/esp8266-update-over-air-nodelua-sparkio.html">Read More</a></p>]]></description>
										<content:encoded><![CDATA[<div dir="ltr" style="text-align: left;" trbidi="on">
The ESP8266 chip is really something: cheap and with its Wifi interface capable for Internet-of-Things tasks. You can get boards on Aliexpress for as little as $3, shipping to Europe or US included! OK, so you ordered one, waited (possibly) a few weeks and then it arrived! What do you do with it? How do you program it? I covered a few possibilities in my previous posts: you can use your Arduino and talk with AT commands to the ESP8266, thus saving a lot of money compared to a Wifi shield that often costs $60.- or more. Then you can try to run the ESP8266 standalone. Download the SDK from Espressif (the manufacturer of the chip) and setup your build tool chain and write your own first program in C(++) and write this new firmware to the chip. Or you go for one of the various all-purpose firmwares that allow you to write code directly executed on the chip. I tested two firmwares of this last type in my previous posts: NodeMCU and Frankenstein firmwares. While you write LUA scripts that get interpreted on the chip for the NodeMCU firmware, you get something similar to a busyBox command line interface on the Frankenstein firmware.<br />
I played around with the NodeMCU firmware for a while but you have to upload files to the chip line by line and often the transfer gets interrupted in the middle. It got a little bit better when I switched to a <a href="https://blog.squix.org/2015/01/esp8266-good-power-supply-is-essential.html">dedicated power supply</a>. But still, uploading code is cumbersome and takes too much time.</p>
<h3 style="text-align: left;">
A better way of programming&#8230;</h3>
<p>What I really wanted is a web based IDE like the one used on the Spark.io platform. The Spark Core is an Arduino compatible chip which initially will be connected to your Wifi network. Once connected it can be programmed in the browser: you use the same code as you&#8217;d use for an Arduino, save the file and choose &#8220;Flash it to my Spark Core&#8221; and bang! your Spark Core gets updated! But of course there is a catch: a Spark Core costs around $39.- and this is a lot more than the $3 for a ESP8266 board. But thanks god there are skilled people in the world. Harold Mars is developing something very similar for the ESP8266!</p>
<h3 style="text-align: left;">
NodeLua</h3>
<div>
He called his platform <a href="http://nodelua.org/" target="_blank">NodeLua</a> (apparently not related with NodeMCU) and offers a nice web IDE and one click deployment to the ESP8266, once it you have successfully burned the firmware and connected the device to your Wifi network.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/01/ScreenShot2015-01-04at14.55.46-1024x530.png?ssl=1" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img data-recalc-dims="1" loading="lazy" decoding="async" border="0" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2015/01/ScreenShot2015-01-04at14.55.46.png?resize=320%2C165&#038;ssl=1" height="165" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<p>You can even activate a specific ESP8266 to send debug output back to the browser. Another nice feature is the cloud feature: with only two lines of code you can send or receive data from the chip to or from the cloud. This lets you log the humidity in a room with just a few lines to a web chart!</p>
<p>While I think NodeLua is looking very promising it doesn&#8217;t yet offer the whole feature set of the NodeMCU firmware. The TCP client and server methods are currently disabled. I also tried to get my DHT22 humidity sensor working, without success.</p>
<p>I hope Harold will continue the great work he has started. It is so much more fun to program in NodeLua&#8217;s web IDE than going through the hassle of the Uploader tools like ESPlorer needed for the NodeMCU firmware&#8230;</p>
<h3 style="text-align: left;">
Summary</h3>
<div>
There are many ways to set the ESP8266 to use. My current favourite is the NodeLua firmware which lets you program the device in the browser and lets you update it with one simple click. But not all features of the NodeMCU are available yet on the NodeLua firmware, so give it some time (or just give it a try;-))</div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.squix.org/2015/01/esp8266-update-over-air-nodelua-sparkio.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">71</post-id>	</item>
		<item>
		<title>ESP8266: Internet connected baby nightlight for less than $10</title>
		<link>https://blog.squix.org/2014/12/esp8266-internet-connected-baby.html</link>
					<comments>https://blog.squix.org/2014/12/esp8266-internet-connected-baby.html#comments</comments>
		
		<dc:creator><![CDATA[Daniel Eichhorn]]></dc:creator>
		<pubDate>Sun, 28 Dec 2014 11:39:00 +0000</pubDate>
				<category><![CDATA[Common]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[esplorer]]></category>
		<category><![CDATA[lua]]></category>
		<category><![CDATA[nightlight]]></category>
		<category><![CDATA[nodemcu]]></category>
		<category><![CDATA[time client]]></category>
		<guid isPermaLink="false">http://blog.squix.org/2014/12/28/esp8266-internet-connected-baby/</guid>

					<description><![CDATA[A while ago a wanted to build one of those nightlights for my daughter that tell her when to sleep and when to call for the parents: an orange light behind a sun depicts the day, a blue light behind a moon the night. My ... <p><a class="read-more btn btn-secondary" href="https://blog.squix.org/2014/12/esp8266-internet-connected-baby.html">Read More</a></p>]]></description>
										<content:encoded><![CDATA[<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: left;">
<a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2014/12/IMG_4772-1024x768.jpg?ssl=1" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img data-recalc-dims="1" loading="lazy" decoding="async" border="0" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2014/12/IMG_4772.jpg?resize=320%2C240&#038;ssl=1" height="240" width="320" /></a></div>
<p>
A while ago a wanted to build one of those nightlights for my daughter that tell her when to sleep and when to call for the parents: an orange light behind a sun depicts the day, a blue light behind a moon the night. My first attempt was based on a Spark Core which is a bit pricy (~$40) to just connect to the internet to synchronise the time.<br />
Playing with the ESP8266 I needed an actual project to use it and the nightlight came in handy. It uses both GPIO pins available on the ESP8266-ESP01 and calls google.com to synchronise the time every 30 minutes as soon as the device is connected to the access point. I currently still need an Arduino but just as power source and debugging tool. So the actual components are:</p>
<ul style="text-align: left;">
<li>plastic box (from food delivery)</li>
<li>black paper as mask</li>
<li>sun and moon downloaded and printed from the internet</li>
<li>cardboard from a cereal box to shield the LEDs</li>
<li>2 LEDs (orange and blue)</li>
<li>a mini bread board</li>
<li>an ESP8266</li>
<li>2 resistors</li>
<li>some jumper wires</li>
</ul>
<p><a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2014/12/IMG_5207-1024x768.jpg?ssl=1" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img data-recalc-dims="1" loading="lazy" decoding="async" border="0" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2014/12/IMG_5207.jpg?resize=320%2C240&#038;ssl=1" height="240" width="320" /></a></p>
<h3 style="text-align: left;">
Prepare the ESP8266</h3>
<div>
First you need to put the LUA firmware from nodemcu on the ESP8266. I described <a href="https://blog.squix.org/2014/12/esp8266-flashing-lua-firmware-and.html">in this post</a>&nbsp;how it is done. Once this is done you can use the <a href="http://esp8266.ru/esplorer/">Esplorer</a>&nbsp;to transfer lua files to the ESP8266.</div>
<div>
</div>
<h3 style="text-align: left;">
Check out the code and adapt it</h3>
<div>
Checkout the two lua files from <a href="https://github.com/squix78/ESP8266-lua-nightlight">here</a>&nbsp;and adapt them to your needs. Especially your access point and credentials need to be set in the init.lua file. If you&#8217;re not living in the GMT+1 timezone you&#8217;ll also need to adapt your offset in the nightlight.lua script. In the current version the day/night phases can only be set within the code, but this might change in the future. There is a lightweight webserver available for the lua firmware which might allow setting the time through a web browser.</div>
<div>
</div>
<h3 style="text-align: left;">
Transfer the files to the ESP8266</h3>
<div>
The current version of the firmware crashes and restarts the unit if you try to call the dofile function for a non-existing file. Since the init.lua scripts calls the nightlight.lua script transfer them in the appropriate order (first nightlight, then init). Note: I had some cases where the module would connect to the AP and receive an IP but would further fail to call the google server to get the time. This only happened after clean updates of the firmware and disappeared after a short while.</div>
<div>
</div>
<h3 style="text-align: left;">
Sources</h3>
<div>
<ul style="text-align: left;">
<li><a href="https://github.com/nodemcu/nodemcu-firmware">Lua firmware</a></li>
<li><a href="http://esp8266.ru/esplorer/">Esplorer (ESP8266 IDE)</a></li>
<li><a href="http://www.esp8266.com/viewtopic.php?f=19&amp;t=809">ESP8266 example for google time client</a>&nbsp;(thanks to GeoNomad)</li>
</ul>
</div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.squix.org/2014/12/esp8266-internet-connected-baby.html/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">73</post-id>	</item>
	</channel>
</rss>
