tag:blogger.com,1999:blog-34906802846370535872024-02-20T09:55:06.745+02:00Electrical engineering and programming notepadBloghttp://www.blogger.com/profile/01491718934583268390noreply@blogger.comBlogger15125tag:blogger.com,1999:blog-3490680284637053587.post-53312109768387313952017-06-14T15:03:00.001+03:002017-06-14T15:07:45.705+03:00Reading STM32F4 unique device ID from MBED compilerWhen working with the STM32 family of microcontrollers, it can be useful to evaluate the factory-programmed 96-bit UUID. The electronic signature is stored in the Flash memory area. It can be read using the
JTAG/SWD or the CPU. It contains factory-programmed identification data that allow the user firmware or other external devices to automatically match its interface to the characteristics of the STM32F4xx microcontrollers.<br />
<br />
The unique device identifier is ideally suited:<br />
* for use as serial numbers (for example USB string serial numbers or other end
applications)<br />
* for use as security keys in order to increase the security of code in Flash memory while
using and combining this unique ID with software cryptographic primitives and
protocols before programming the internal Flash memory<br />
* to activate secure boot processes, etc.<br />
<br />
The 96-bit unique device identifier provides a reference number which is unique for any
device and in any context. These bits can never be altered by the user.<br />
The 96-bit unique device identifier can also be read in single bytes/half-words/words in
different ways and then be concatenated using a custom algorithm.<br />
According to the <a href="http://www.st.com/web/en/resource/technical/document/reference_manual/DM00031020.pdf" target="_blank">STM32F4 reference manual</a>, the UUID is stored in memory at address <b>0x1FFF7A10</b>.<br />
<br />
<b>Examples:</b><br />
<br />
1. STM32-UID.h<br />
<script src="https://gist.github.com/ElectronicaXAB3/2e1085be2719990f178d0557dc8314d1.js"></script><br />
2. Usage<br />
<br />
<script src="https://gist.github.com/ElectronicaXAB3/04e7de7e522db74fe9b47536e19833c3.js"></script>
References: <a href="https://techoverflow.net/2014/09/26/reading-stm32-unique-device-id-using-openocd/" target="_blank">techoverflow 1</a>, <a href="https://techoverflow.net/2015/02/03/reading-the-stm32-unique-device-id-in-c/" target="_blank">techoverflow 2</a>, <a href="http://www.search-pdf-manuals.com/manual/reference-manual-for-stm32f405415-stm32f407417-stm32f427437-and-stm32f429439-mcus-100" target="_blank">alternative link for STM32F4 reference manual</a>Bloghttp://www.blogger.com/profile/01491718934583268390noreply@blogger.com0tag:blogger.com,1999:blog-3490680284637053587.post-64081139593281325442016-10-17T15:24:00.003+03:002016-10-17T15:31:54.179+03:00SPI ModesSPI knows 4 "standard" modes, reflecting the SCK's polarity (<abbr title="Slave clock polarity">CPOL</abbr>) and the SCK's phase (<abbr title="Slave clock phase">CPHA</abbr>).<br />
<br />
<table class="muchprettier">
<thead>
<tr>
<th>SPI Mode</th>
<th>CPOL</th>
<th>CPHA</th>
</tr>
</thead>
<tbody>
<tr>
<td>0 (or 0,0)</td>
<td class="center b">0</td>
<td class="center b">0</td>
</tr>
<tr>
<td>1 (or 0,1)</td>
<td class="center b">0</td>
<td class="center b">1</td>
</tr>
<tr>
<td>2 (or 1,0)</td>
<td class="center b">1</td>
<td class="center b">0</td>
</tr>
<tr>
<td>3 (or 1,1)</td>
<td class="center b">1</td>
<td class="center b">1</td>
</tr>
</tbody>
</table>
<br />
The meaning is:<br />
<br />
<b>CPOL:</b>
<br />
<ul>
<li> 0 = Clock Idle low level </li>
<li> 1 = Clock Idle high level</li>
</ul>
<b>CPHA:</b>
<br />
<ul>
<li> 0 = SDO transmit edge (*) active to idle </li>
<li> 1 = SDO transmit edge idle to active</li>
</ul>
<div>
(*): the transmit edge is the clock edge at which the SDO level changes.</div>
<div>
<br /></div>
In a timing diagram this looks like(only one clock pulse shown here):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuxgmwYdL6rumoXDStGU6fycrKYzaboejzmDH5REEZ9uCiNn4ZFrTi8usM8Mvn7gHslDN38jQIpby3zOwgK_ps3xPoNhhhSNXIt504yTDxhM_4d3GtKaf7n_bZgnT9DdLnxSKRO4QRl7lX/s1600/SPI_Modes_Edges.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuxgmwYdL6rumoXDStGU6fycrKYzaboejzmDH5REEZ9uCiNn4ZFrTi8usM8Mvn7gHslDN38jQIpby3zOwgK_ps3xPoNhhhSNXIt504yTDxhM_4d3GtKaf7n_bZgnT9DdLnxSKRO4QRl7lX/s1600/SPI_Modes_Edges.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The <u>Transmit edge</u> is the clock edge at which the <u>SPI output data changes</u>,</div>
The <u>Sampling edge</u> is the clock edge at which the <u>sampling of the SPI input data takes place</u>.<br />
The sampling edge is normally the opposite one of the transmit edge.<br />
<div>
<br /></div>
<br />
<b>References:</b> <a href="http://www.rosseeld.be/DRO/PIC/SPI_Timing.htm" target="_blank">www.rosseeld.be</a>, <a href="http://dlnware.com/theory/SPI-Transfer-Modes" target="_blank">dlnware.com</a>Bloghttp://www.blogger.com/profile/01491718934583268390noreply@blogger.com0tag:blogger.com,1999:blog-3490680284637053587.post-80217024231448939912016-10-13T12:22:00.000+03:002016-10-13T12:25:47.968+03:00Suppress any warning in mbed CompilerThe <a href="https://developer.mbed.org/handbook/mbed-Compiler" target="_blank">mbed Compiler</a> is a very usefull development platform for <a href="https://en.wikipedia.org/wiki/Microcontroller" target="_blank">microcontrollers</a>, but sometimes you will get warning messages, some of which you know about and want to be ignored. They appear on the first lines of "Compiler output" and you need to scroll down to reach the "real" compiler errors.<br />
<br />
You can suppress specific compiler errors and warnings by using <b>#pragma diag_suppress</b> in the header of your project before any include happens.<br />
<br />
<a href="https://developer.arm.com/docs/dui0472/latest/compiler-specific-features/pragma-diag_suppress-tagtag" target="_blank">#pragma diag_suppress</a> sets a specific warning code or multiple warning codes and the compiler will ignore those warnings.<br />
<br />
All the error and warning codes can be found on <a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0496b/BABDJCCI.html" target="_blank">http://infocenter.arm.com website</a>.<br />
<br />
<b>Examples:</b><br />
<br />
<br />
<script src="https://gist.github.com/bright-light-in-the-night/50c2457348dad65b9ef7b6235cbc8e9f.js"></script>
<br />
<a href="http://pastebin.com/BjM1xLQR" target="_blank">alternative link</a><br />
<hr />
<b>References: </b><a href="https://developer.mbed.org/forum/mbed/topic/1370/" target="_blank">developer.mbed.org/forum/</a>, <a href="https://developer.arm.com/docs/dui0472/latest/compiler-specific-features/pragma-diag_suppress-tagtag" target="_blank">about diag_suppress tag</a>, <a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0496b/BABDJCCI.html" target="_blank">ARM compiler warning and error codes</a>,Bloghttp://www.blogger.com/profile/01491718934583268390noreply@blogger.com0tag:blogger.com,1999:blog-3490680284637053587.post-14447840796868462262016-10-11T14:02:00.003+03:002023-02-19T21:58:37.254+02:0016 bit color generator (RGB565 color picker)<meta http-equiv="refresh" content="0;URL=https://embeddednotepad.com/page/RGB565-color-picker">
One of the previous notes was about <a href="https://ee-programming-notepad.blogspot.com/2016/09/16-bits-rgb-color-representation.html" target="_blank">16 bits RGB color representation</a>, <b style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13.1999998092651px; line-height: 18.4799995422363px; text-shadow: transparent 0px 0px 0px, rgba(0, 0, 0, 0.741176) 0px 0px 0px !important;">RGB565</b><span style="background-color: white; color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif; font-size: 13.1999998092651px; line-height: 18.4799995422363px;"> format</span>. This note will be based on that note and you will be able to generate any color, within 16 bit color depth, by using the color picker below.<br />
<link href="https://cdn.rawgit.com/bright-light-in-the-night/spectrum/master/spectrum.css" rel="stylesheet" type="text/css"></link>
<style>
.sp-button-container{display:none}
.sp-top{margin-bottom:0 !important}
.sp-previews {
float: left;
width: 134px;
height:137px;
border: none;
margin: 10px 10px 10px 0;
border: 1px solid #666666;
}
</style>
<script src="https://cdn.rawgit.com/bright-light-in-the-night/jquery/1.7.1/jquery.js"></script>
<script src="https://cdn.rawgit.com/bright-light-in-the-night/spectrum/master/spectrum.js"></script>
<br />
<div>
<b>Hexadecimal 24 bit color depth value:</b><br />
<input class="text" id="color_24_bit" name="icon_color" size="30" type="text" value="" /></div>
<div>
<br />
<b>Hexadecimal 16 bit color depth value:</b><br />
<input class="text" id="color_16_bit" name="icon_color" size="30" type="text" value="" /></div>
<div>
<br />
<b>Color picker with preview:</b><br />
<div id="spectrum">
spectrum</div>
</div>
<script>
$(function() {
var color_24_bit = $('#color_24_bit'), color_16_bit = $('#color_16_bit'), initial_color = "ffffff", color_preview;
color_24_bit.val('0x'+initial_color.toUpperCase());
function hex24BitToHex16bit(string_color){
var color_24_bit_int = parseInt(string_color, 16);
var r = (color_24_bit_int >> 16) & 0xFF;
var g = (color_24_bit_int >> 8) & 0xFF;
var b = color_24_bit_int & 0xFF;
var r565 = r >> 3;
var g565 = g >> 2;
var b565 = b >> 3;
var rgb565 = (r565 << 11) ^ (g565 << 5) ^ b565;
return rgb565;
}
function padHex(hex_string){
return String("0000" + hex_string).slice(-4);
}
$('#spectrum').spectrum({
color: '#' + initial_color,
flat: true,
className: "full-spectrum",
preferredFormat: "hex",
move: function(tinycolor) {
color_24_bit.val('0x'+String(tinycolor.toHex()).toUpperCase());
color_preview.css('background-color', tinycolor.toHexString());
var integer = hex24BitToHex16bit(tinycolor.toHex());
var str = Number(integer).toString(16);
color_16_bit.val('0x'+String(padHex(str)).toUpperCase());
},
show: function(tinycolor) {
color_preview = $('<d'+'iv>'+'<'+'/'+'div>').attr({'class': 'sp-previews', 'id': 'sp-previews', 'style': 'background-color: #' + initial_color});
$('.sp-container').append(color_preview);
var integer = hex24BitToHex16bit(initial_color);
var str = Number(integer).toString(16);
color_16_bit.val('0x'+String(padHex(str)).toUpperCase());
}
});
});
</script>Bloghttp://www.blogger.com/profile/01491718934583268390noreply@blogger.com20tag:blogger.com,1999:blog-3490680284637053587.post-82050061164978227042016-10-03T11:10:00.000+03:002016-10-03T15:26:03.334+03:00C++ array of pointers to objectsI was driving multiple TFT LCDs on the same microcontroller. Each LCD had its own instance and I needed an easy method of iterate through all of them.<br />
<br />
The platform I used is a <b>ST Nucleo F411RE</b> board, the programming enviroment is <a href="https://developer.mbed.org/compiler/" target="_blank">mbed</a> and the TFT LCDs are <a href="https://ee-programming-notepad.blogspot.com/2016/09/qvga-22-240x320-tft-spi-display-with-sd.html" target="_blank"><b>2.2 inch ILI9341 display</b></a>.<br />
<br />
By using a single screen, the code could look like this:<br />
<br />
<br />
<script src="https://gist.github.com/bright-light-in-the-night/b882100de9e85030fdecdb63d8af0b37.js"></script>
<br />
On the other hand, by using multiple screens, the code could look like this:<br />
<br />
<br />
<script src="https://gist.github.com/bright-light-in-the-night/2c89089899d487a3644875a30e47fdb9.js"></script>
<br />
The code is not elegant, but it gets the job done.<br />
Note that the LCDs <b>RST</b> and <b>CS</b> pins need to be individually connected to the microcontroller.
<br />
<hr />
<b>Reference:</b> <a href="http://www.java2s.com/Tutorial/Cpp/0180__Class/Anarrayofpointerstoobjects.htm" target="_blank">www.java2s.com</a>Bloghttp://www.blogger.com/profile/01491718934583268390noreply@blogger.com0tag:blogger.com,1999:blog-3490680284637053587.post-26680375739675155512016-09-28T12:20:00.003+03:002016-09-28T12:36:29.566+03:008x8 dot matrix font generator for LCDThis is a javascript based 8x8 pixel font generator for any LCD.
<br />
<br />
<b>How it works:</b> just click on the dot matrix to enable and disable a dot. On the right side, the equivalent binary code will be generated. The reset button will reset the entire dot matrix. Multiple dot selection is not supported.<br /><br />
<table border="0" cellpadding="5" cellspacing="5">
<tbody>
<tr>
<td><table border="0" cellpadding="0" cellspacing="0" style="cursor: pointer; height: 200px; width: 200px;">
<tbody>
<tr>
<td id="1" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="2" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="3" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="4" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="5" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="6" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="7" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="8" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
</tr>
<tr>
<td id="9" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="10" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="11" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="12" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="13" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="14" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="15" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="16" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
</tr>
<tr>
<td id="17" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="18" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="19" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="20" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="21" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="22" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="23" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="24" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
</tr>
<tr>
<td id="25" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="26" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="27" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="28" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="29" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="30" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="31" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="32" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
</tr>
<tr>
<td id="33" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="34" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="35" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="36" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="37" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="38" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="39" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="40" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
</tr>
<tr>
<td id="41" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="42" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="43" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="44" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="45" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="46" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="47" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="48" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
</tr>
<tr>
<td id="49" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="50" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="51" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="52" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="53" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="54" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="55" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="56" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
</tr>
<tr>
<td id="57" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="58" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="59" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="60" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="61" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="62" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="63" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
<td id="64" onmousedown="switchValue(this)" style="background-color: #f9f9f9; border: 1px solid #eeeeee; height: 10px; text-align: center; width: 10px;"> 0</td>
</tr>
</tbody>
</table>
</td>
<td valign="top"><input onclick="resetmatrix()" type="button" value="Reset" /> <br />
Binary code:<br />
<textarea cols="14" id="txtBinary" rows="9"></textarea></td>
</tr>
</tbody>
</table>
<script type="text/javascript"><!--
function switchValue(obj)
{
if(obj.innerHTML == " 0")
{
obj.style.color = '#ffffff';
obj.style.backgroundColor = "#CC0000";
obj.innerHTML = " 1";
} else {
obj.style.color = '#222222';
obj.style.backgroundColor = "#f9f9f9";
obj.innerHTML = " 0";
}
generateBinary();
}
function resetmatrix()
{
var tdObj;
for(var i=1;i<65;i++)
{
tdObj = document.getElementById(i);
tdObj.style.color = '#222222';
tdObj.style.backgroundColor = "#f9f9f9";
tdObj.innerHTML = " 0";
}
generateBinary();
}
function generateBinary()
{
var tdObj;
var binObj = document.getElementById("txtBinary");
binObj.value = "";
for(var i=1;i<65;i++)
{
tdObj = document.getElementById(i);
if(((i-1)==0) || (((i-1)%8) == 0))
{
if(i-1 == 0)
binObj.value += "{\n B";
else
binObj.value += " B";
}
if(tdObj.innerHTML == " 0")
{
binObj.value += "0";
} else {
binObj.value += "1";
}
if((i%8)==0)
{
if(i!=64)
binObj.value += ",\n";
else
binObj.value += "\n}";
}
}
}
generateBinary();
// --></script>
<br />
<hr />
The code for generating "8x8 dot matrix font generator" is taken from <a href="http://www.pial.net/8x8-dot-matrix-font-generator-based-on-javascript-and-html/" target="_blank">www.pial.net</a>.Bloghttp://www.blogger.com/profile/01491718934583268390noreply@blogger.com0tag:blogger.com,1999:blog-3490680284637053587.post-27862706795647227762016-09-23T11:23:00.000+03:002016-09-30T15:14:38.890+03:00QVGA 2.2" (240x320) TFT SPI display with SD-CARD pinoutThe QVGA 2.2" TFT SPI display was bought from <a href="http://www.ebay.com/sch/i.html?_nkw=QVGA+2.2%22+SPI" target="_blank">Ebay</a>. The display driver is ILI9341 and the board uses 3.3V logic.<br />
The maximum color depth this TFT supports is 16 bit.<br />
The SD-CARD is powered from the display VCC and has separate SPI pins.<br />
<br />
<div class="warning">
<b>Warning!</b> The QVGA 2.2" TFT does not support 5V on either of its pins.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrugPT8jypY-MuESQhzQ1tMPPg3MErXUBTHeWmh6lAn7BRj5-6r_jqBu9412JqA0Yr5QLjJs4eU_k66y8RhaQ_iewfkPWkG9xphAEiusXidCuH6E64ulL6a_i6dVoHnlDbVFQa20-SuTbF/s1600/QVGA+2.2+inch+%2528240x320%2529+TFT+SPI+display+with+SD-CARD.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrugPT8jypY-MuESQhzQ1tMPPg3MErXUBTHeWmh6lAn7BRj5-6r_jqBu9412JqA0Yr5QLjJs4eU_k66y8RhaQ_iewfkPWkG9xphAEiusXidCuH6E64ulL6a_i6dVoHnlDbVFQa20-SuTbF/s1600/QVGA+2.2+inch+%2528240x320%2529+TFT+SPI+display+with+SD-CARD.jpg" /></a></div>
<br />
<br />
<b>The TFT display pins:</b><br />
<br />
<b>SDO </b>(MISO)<br />
<b>LED </b>= 3.3V or in series with a 100 ohm resistor from 5V<br />
<b>SCK </b>(CLOCK)<br />
<b>SDI </b>(MOSI)<br />
<b>D/C</b> (DATA/COMMAND)<br />
<b>RESET</b><br />
<b>CS </b>(CHIPSELECT)<br />
<b>GND</b><br />
<b>VCC </b>= 3.3V<br />
<br />
<b>The SD-CARD pins:</b><br />
<b>SD_CS </b>(CHIPSELECT)<br />
<b>SD_MOSI </b>(MOSI)<br />
<b>SD_MISO </b>(MISO)<br />
<b>SD_SCK </b>(CLOCK)<br />
<br />
<br />
<hr />
<b>References: </b><a href="https://www.adafruit.com/datasheets/ILI9341.pdf" target="_blank">ILI9341 PDF manual</a>, <a href="http://www.instructables.com/id/Cheap-TFT-22-inch-Display-on-Arduino-ILI9340C-or-I/?ALLSTEPS" target="_blank">www.instructables.com</a>Bloghttp://www.blogger.com/profile/01491718934583268390noreply@blogger.com0tag:blogger.com,1999:blog-3490680284637053587.post-84917921601568457732016-09-23T11:19:00.000+03:002016-09-23T11:22:22.074+03:00PHP script to transform a 24 bits color depth image into 16 bits color depth raw and back againJust like the title says, the following script will transform a 24 bits color depth image file into 16 bits color depth raw file. You also have the option to view that raw file.<br />
<br />
<script src="https://gist.github.com/bright-light-in-the-night/065eb7f640e2142cde9ff791635a0a7f.js"></script>
<a href="http://pastebin.com/NZS1B5Hv" target="_blank">Alternate link</a><br />
<br />Bloghttp://www.blogger.com/profile/01491718934583268390noreply@blogger.com0tag:blogger.com,1999:blog-3490680284637053587.post-6888190047179403082016-09-16T16:54:00.004+03:002023-02-19T21:37:59.891+02:0016 bits RGB color representation<meta http-equiv="refresh" content="0;URL=https://embeddednotepad.com/page/16-bits-RGB-color">
On a screen, each pixel is represented using 16 bits or 2 bytes (1 bytes = 8 bits). Each color has 5 bits allocated to its color depth, but green, which has 6 bits of color depth. This is the <b>RGB565</b> format.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX1q71KzIvLMUH-TforrvIYkCFdv6JEL3SqxTR09f2H7HPp692ZpWHVGXPauUbkM_wSIXqDxHK-vGLqpt0nmHNOKENPZRMDhlnvVAfCj3hC8TwhIBzr_bJtbAWEl21GL4DawaCwZWE4JcV/s1600/lcds___displays_colorpack.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiX1q71KzIvLMUH-TforrvIYkCFdv6JEL3SqxTR09f2H7HPp692ZpWHVGXPauUbkM_wSIXqDxHK-vGLqpt0nmHNOKENPZRMDhlnvVAfCj3hC8TwhIBzr_bJtbAWEl21GL4DawaCwZWE4JcV/s1600/lcds___displays_colorpack.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
This can lead to small discrepancies in encoding, when someone wishes to encode the 24-bit color RGB with 16 bits. Green is usually chosen for the extra bit in 16 bits because the human eye has its highest sensitivity for green shades, therefore the discrepancies are harder to see. Note that 16 bits of color utilizes a color palette of 32x64x32 = 65,536 colors.<br />
<br />
A few examples of 16 bits colors in C++:<br />
<br />
<script src="https://gist.github.com/bright-light-in-the-night/6cd116568a14047de037c5655ae8d401.js"></script>
<a href="http://pastebin.com/zS8sgUUt" target="_blank">Alternate link</a><br />
<hr />
<b>References:</b><br />
<a href="http://www.willamette.edu/~gorr/classes/GeneralGraphics/imageFormats/" target="_blank">www.willamette.edu/~gorr/</a>, <a href="https://en.wikipedia.org/wiki/High_color#16-bit_high_color" target="_blank">wikipedia.org</a>, <a href="https://learn.adafruit.com/adafruit-gfx-graphics-library/coordinate-system-and-units" target="_blank">learn.adafruit.com</a>Bloghttp://www.blogger.com/profile/01491718934583268390noreply@blogger.com0tag:blogger.com,1999:blog-3490680284637053587.post-72991008148177298532016-09-16T14:02:00.003+03:002016-09-23T11:22:56.719+03:00Low voltage RS232/Serial switchThis schematic is useful when you have 2 devices that needs to be controlled by 1 <a href="https://en.wikipedia.org/wiki/Microcontroller" target="_blank"><abbr title="Microcontroller unit">MCU</abbr></a>. As it's seen below, the MCU switches between the 2 serial devices. The MCU can only talk with 1 device at a time with both RX/TX channels.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2PLlWr25FarjtdcyHK8nrXDpFHshXLxX-JrJfgIjPD_z79Yaxj2jS3wetGFSZkHCb30oLj5ZY7iyQaME3JDI20LCdu4y-485RlmRsNzopy5hF0OPRa2SytLQS1cBv-vD_539yc3b_uqLM/s1600/speedy+switch+schematic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="" border="0" height="442" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2PLlWr25FarjtdcyHK8nrXDpFHshXLxX-JrJfgIjPD_z79Yaxj2jS3wetGFSZkHCb30oLj5ZY7iyQaME3JDI20LCdu4y-485RlmRsNzopy5hF0OPRa2SytLQS1cBv-vD_539yc3b_uqLM/s640/speedy+switch+schematic.png" title="MCU serial switch" width="640" /></a></div>
<br />
<b>SW1 </b>can also be controlled by the MCU. <b>U1 </b>is <b>74HC04 </b>or equivalent. <b>U2 </b>is <b>SN74LVC125A </b>or equivalent.<br />
<hr />
<b>Reference:</b><br />
<a href="http://www.tme.eu/ro/Document/bda149ce91a9c640f6140098fa063c19/wizfi250_ds_v101e.pdf" target="_blank">WizFi250 Datasheet v1.01</a><br />
<b>PDF manuals:</b><br />
<a href="http://www.ti.com/lit/pdf/scas290" target="_blank">Texas Instruments SN74LVC125A</a>, <a href="http://www.search-pdf-manuals.com/manual/nxp-74hc04-and-74hct04-hex-inverter-39" target="_blank">NXP 74HC04</a>Bloghttp://www.blogger.com/profile/01491718934583268390noreply@blogger.com0tag:blogger.com,1999:blog-3490680284637053587.post-24522401363438913122016-09-08T14:05:00.003+03:002016-09-23T11:23:50.728+03:00ESP8266 module family (versions)At the moment of writing this note, ESP8266 had 14 versions in the family.<br />
<br />
<b>ESP-01</b><br />
<table>
<tbody>
<tr>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBNn8bCfE_6RnolesoTJgXz9jPQc7BqPXj2AxyBzydOCoMfMbT5iBtexk-REcRQ6DTwZLYuFeN8nz2kJ9dIW4YYmxLD3LRLrFwFit-7x8hQ9BM-BHyAKPlXdun2awiS-nfdlcawU5epxeb/s1600/ESP-01+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBNn8bCfE_6RnolesoTJgXz9jPQc7BqPXj2AxyBzydOCoMfMbT5iBtexk-REcRQ6DTwZLYuFeN8nz2kJ9dIW4YYmxLD3LRLrFwFit-7x8hQ9BM-BHyAKPlXdun2awiS-nfdlcawU5epxeb/s1600/ESP-01+%25281%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj9sVsisL9exQN7lXtngE3bOBr6lUUBuvhU3HGCo4fQ5-qVcidcKUniK6XJuGBAYhnHRs-1wMQPYByAvFoR_n0xeqBNPsf6XQGdAWneZggEamLh-2AnAd6bFVZZL-NYHp-deyswBK00YmF/s1600/ESP-01+%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj9sVsisL9exQN7lXtngE3bOBr6lUUBuvhU3HGCo4fQ5-qVcidcKUniK6XJuGBAYhnHRs-1wMQPYByAvFoR_n0xeqBNPsf6XQGdAWneZggEamLh-2AnAd6bFVZZL-NYHp-deyswBK00YmF/s1600/ESP-01+%25282%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisPAXq24Xrit4n31gB4HR2F4nkSU_7zuxG9bc3ZPSyYk2SVCoq_p0OtSilGNdw-eG7QWRVW8RkOqNR4QfUW1bieFsvcg7qd5zNvYNap7z-Xrwkp4RnV4UvbkDW5IXavwjLMDRVZKnV-aXu/s1600/ESP-01+%25283%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisPAXq24Xrit4n31gB4HR2F4nkSU_7zuxG9bc3ZPSyYk2SVCoq_p0OtSilGNdw-eG7QWRVW8RkOqNR4QfUW1bieFsvcg7qd5zNvYNap7z-Xrwkp4RnV4UvbkDW5IXavwjLMDRVZKnV-aXu/s1600/ESP-01+%25283%2529.jpg" /></a></td>
</tr>
</tbody></table>
<br />
<b>ESP-02</b><br />
<table>
<tbody>
<tr>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk-x6b9qEfG5EMDiaaQiHA-4nhkXfxWLv8DAmJTVgjID-3EIlOxHzTwIlruoZFNB7XBFHgC0-VAzY4V_PnSpewReXcHxW5ez-yS3k-qBdFOwMAp6sz_T8TxXTMSBRB_IniZB-78oyiULZw/s1600/ESP-02+%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk-x6b9qEfG5EMDiaaQiHA-4nhkXfxWLv8DAmJTVgjID-3EIlOxHzTwIlruoZFNB7XBFHgC0-VAzY4V_PnSpewReXcHxW5ez-yS3k-qBdFOwMAp6sz_T8TxXTMSBRB_IniZB-78oyiULZw/s1600/ESP-02+%25282%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWSSe78OZO8aGDPtteoeZ_SWzKH307DdZcCHjQPSJnqS1GU-G_Ca5qepdnI6cJtXdSAThahsButkPgtWRuCiYJxRfqXLKAFXo8nUegFUm_oDKXykXJ0CN6sA0-3EJhYbJ2g6qMUflH3QCD/s1600/ESP-02+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWSSe78OZO8aGDPtteoeZ_SWzKH307DdZcCHjQPSJnqS1GU-G_Ca5qepdnI6cJtXdSAThahsButkPgtWRuCiYJxRfqXLKAFXo8nUegFUm_oDKXykXJ0CN6sA0-3EJhYbJ2g6qMUflH3QCD/s1600/ESP-02+%25281%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLvliHvBFo2NpPcNPiwTEAFq_sbmYcEfl0mLtzwBD3540G0oTQZdWjvM1snKAtGOwjift11z0U1pKPOvv8TMHSxbpNWSINXxyZ2p5DGOotRvMPeOP-3r05-G7ScGK3v_BJfHB3-yPp_NaV/s1600/ESP-02+%25283%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLvliHvBFo2NpPcNPiwTEAFq_sbmYcEfl0mLtzwBD3540G0oTQZdWjvM1snKAtGOwjift11z0U1pKPOvv8TMHSxbpNWSINXxyZ2p5DGOotRvMPeOP-3r05-G7ScGK3v_BJfHB3-yPp_NaV/s1600/ESP-02+%25283%2529.jpg" /></a></td>
</tr>
</tbody></table>
<br />
<b>ESP-03</b><br />
<table>
<tbody>
<tr>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8mt46C3JOoa_i0-1jAYs3z5BaabvgEin9cgu2y4pAL0df8QHDtC61Sb-_8d6NN5L6lDe0rKa73ed2Oi39UoNeOWf0jqaXEDXozdWeCCMqVC-hg5JS3TeKzr4ji4g52yYVcFv7ArZvwuD1/s1600/ESP-03+%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8mt46C3JOoa_i0-1jAYs3z5BaabvgEin9cgu2y4pAL0df8QHDtC61Sb-_8d6NN5L6lDe0rKa73ed2Oi39UoNeOWf0jqaXEDXozdWeCCMqVC-hg5JS3TeKzr4ji4g52yYVcFv7ArZvwuD1/s1600/ESP-03+%25282%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCuajRcZ6Lx8tBYMZ-EGBJUDs0UxflL6pZ3AeaR2LulOkO_2wXvLhwbyq53uba5AskzYikk21agRhDqJ8Ni3y_lzHA-T4QDQ4Ylq_dXwucUySzpjqn8hhRCtRkym0ThCpj2vECckrvJlch/s1600/ESP-03+%25283%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCuajRcZ6Lx8tBYMZ-EGBJUDs0UxflL6pZ3AeaR2LulOkO_2wXvLhwbyq53uba5AskzYikk21agRhDqJ8Ni3y_lzHA-T4QDQ4Ylq_dXwucUySzpjqn8hhRCtRkym0ThCpj2vECckrvJlch/s1600/ESP-03+%25283%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiByFRnJd7kJaeaKdWOCer7VKIl7f430RCJ4F1O31D3UC6s-nZd_dedaz9bLAgt_Zzr6p-sA85CjIKbOoJPsot36YAeaKs9zWBy8rLJEjFN_tgN4k96C6e-iG1oQm_WwAK8MOwiCHA_qrTw/s1600/ESP-03+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiByFRnJd7kJaeaKdWOCer7VKIl7f430RCJ4F1O31D3UC6s-nZd_dedaz9bLAgt_Zzr6p-sA85CjIKbOoJPsot36YAeaKs9zWBy8rLJEjFN_tgN4k96C6e-iG1oQm_WwAK8MOwiCHA_qrTw/s1600/ESP-03+%25281%2529.jpg" /></a></td>
</tr>
</tbody></table>
<br />
<b>ESP-04</b><br />
<table>
<tbody>
<tr>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-4e66vKP-LKavlJu2pP2jIo5xKOME6k3BvQAkz8eiOJj6-FCH8dn-o4dTCp26N6ROOJBw-CxJfEIZPMlUmB_9tTYehugWKwTg7NP0GMdo32zCPB5sYFHzKHgEYtfofBQpfwA31CaG-q3a/s1600/ESP-04+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-4e66vKP-LKavlJu2pP2jIo5xKOME6k3BvQAkz8eiOJj6-FCH8dn-o4dTCp26N6ROOJBw-CxJfEIZPMlUmB_9tTYehugWKwTg7NP0GMdo32zCPB5sYFHzKHgEYtfofBQpfwA31CaG-q3a/s1600/ESP-04+%25281%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9jQJbyANXNEmgbivbzMYwNlIu2rTM0qWQT4ptKUsFmYFXzX0JmMoO4ThD4X6EbdgPPI5snKQNCBuiwCBeuNDF4D_8LeRVdUpaCnRZh8LY-yKExcGBbvCQSjyHVxoKTXQ36S2i5F4tzV25/s1600/ESP-04+%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9jQJbyANXNEmgbivbzMYwNlIu2rTM0qWQT4ptKUsFmYFXzX0JmMoO4ThD4X6EbdgPPI5snKQNCBuiwCBeuNDF4D_8LeRVdUpaCnRZh8LY-yKExcGBbvCQSjyHVxoKTXQ36S2i5F4tzV25/s1600/ESP-04+%25282%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFVQh6Br_xex1l02dVshnf3byW0g2vVv8fNJZiWPkjGkzVKZQKcjhqthXhvJMv26NeRUK3NdXJv5sSM8WsRY6T6hD8iyQYgyzFwNSGlVcwBi9TMC6ssVVME8kbYN84oxyKVt7R6Lz54AIa/s1600/ESP-04+%25283%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFVQh6Br_xex1l02dVshnf3byW0g2vVv8fNJZiWPkjGkzVKZQKcjhqthXhvJMv26NeRUK3NdXJv5sSM8WsRY6T6hD8iyQYgyzFwNSGlVcwBi9TMC6ssVVME8kbYN84oxyKVt7R6Lz54AIa/s1600/ESP-04+%25283%2529.jpg" /></a></td>
</tr>
</tbody></table>
<br />
<b>ESP-05</b><br />
<table>
<tbody>
<tr>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeveTEusrYZ777G5oLiMKtE3VfLEskSkrr8oUMHrZaiadg1IyDOrfFEZ6XQhukB1S7o5pzb2anYING_MyK5To3qv-8g9TV_4dE5ZObJ2Q_W6xjTKo2SWS9Y7scDyV8NtRp3lpg_Rj-TyPT/s1600/ESP-05+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeveTEusrYZ777G5oLiMKtE3VfLEskSkrr8oUMHrZaiadg1IyDOrfFEZ6XQhukB1S7o5pzb2anYING_MyK5To3qv-8g9TV_4dE5ZObJ2Q_W6xjTKo2SWS9Y7scDyV8NtRp3lpg_Rj-TyPT/s1600/ESP-05+%25281%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIC405zVIBjcH5PiyePcCru8R_iyrUrYxleLnJI7pp4gOaCxvXjaKIi9AVm-mBDp61fX-KSB0mEeZwVxNnpfY3j5Cfbi4_YN4KFdfCS-oO3i0i5D1CvQnXZWT4G6vMd42a4HBieU7kOiWa/s1600/ESP-05+%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIC405zVIBjcH5PiyePcCru8R_iyrUrYxleLnJI7pp4gOaCxvXjaKIi9AVm-mBDp61fX-KSB0mEeZwVxNnpfY3j5Cfbi4_YN4KFdfCS-oO3i0i5D1CvQnXZWT4G6vMd42a4HBieU7kOiWa/s1600/ESP-05+%25282%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiji10Wq1dsBS73_STmk4M1RpnyRstlu7nTQdZXmgd35eo5COF9TYMrtNfFoB_zaxwxOTw3N5Z9Po_bNXSxGc4TKa1N_eZiujsnrRCUQLRIPxvvpyO2iMQY_Fp-_s0PLbA4YjRykobkUkkE/s1600/ESP-05+%25283%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiji10Wq1dsBS73_STmk4M1RpnyRstlu7nTQdZXmgd35eo5COF9TYMrtNfFoB_zaxwxOTw3N5Z9Po_bNXSxGc4TKa1N_eZiujsnrRCUQLRIPxvvpyO2iMQY_Fp-_s0PLbA4YjRykobkUkkE/s1600/ESP-05+%25283%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMzOhkhQ1jpaoMuaNOHJBACBkLQW-PNPomKIpGPyqWdyct2ZeEu1uPA6ryix98yL3E1rN-K6_dPjl04nOO9FoMmoxSuatIFrA9M3yxDbgiwWkBHqGtE44zQLfUtCiUvfOZBITg72LCPwtD/s1600/ESP-05+%25284%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMzOhkhQ1jpaoMuaNOHJBACBkLQW-PNPomKIpGPyqWdyct2ZeEu1uPA6ryix98yL3E1rN-K6_dPjl04nOO9FoMmoxSuatIFrA9M3yxDbgiwWkBHqGtE44zQLfUtCiUvfOZBITg72LCPwtD/s1600/ESP-05+%25284%2529.jpg" /></a></td>
</tr>
</tbody></table>
<br />
<b>ESP-06</b><br />
<table>
<tbody>
<tr>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirwD126_ctwrX9lbbhl-O5h7ZDbxj-aiiqgtW1hUw-srIOl9uQZ9BVBGueZvtc_RC-J0-hivMLZ1RhPG0UG2T7Ja_WxTTy0to5blf9t0J9iiDS-cCKsgZtEWg53ApPbH9Ia3DJuh3qOjL2/s1600/ESP-06+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirwD126_ctwrX9lbbhl-O5h7ZDbxj-aiiqgtW1hUw-srIOl9uQZ9BVBGueZvtc_RC-J0-hivMLZ1RhPG0UG2T7Ja_WxTTy0to5blf9t0J9iiDS-cCKsgZtEWg53ApPbH9Ia3DJuh3qOjL2/s1600/ESP-06+%25281%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPRvMuiPyl2ntfXUSifRfR7AkzFTvGqfSGWxyFr54FxHViKJ9Uj5Lh0GHtOhimt2kSzPqDLT9EHqbkMe5kzEavoswlsc9nLjaGLItdMFcbXlxuJQhHW9SecI9wjeOorukWNdmDDsghWeTT/s1600/ESP-06+%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPRvMuiPyl2ntfXUSifRfR7AkzFTvGqfSGWxyFr54FxHViKJ9Uj5Lh0GHtOhimt2kSzPqDLT9EHqbkMe5kzEavoswlsc9nLjaGLItdMFcbXlxuJQhHW9SecI9wjeOorukWNdmDDsghWeTT/s1600/ESP-06+%25282%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-LR0SojDX2wQn3MWXrvwFuVnp8qAbKVObNLZMuTFSiyqVJwFk4OTbfmidfI5o2ZleAJwKOCFyAKgWZsSP3MLBSX4B3EED7xQhEGpVr9Fj1PZ5xSdOYgKG7MQWeJEFL9-knQJ_1jo3Srsn/s1600/ESP-06+%25283%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-LR0SojDX2wQn3MWXrvwFuVnp8qAbKVObNLZMuTFSiyqVJwFk4OTbfmidfI5o2ZleAJwKOCFyAKgWZsSP3MLBSX4B3EED7xQhEGpVr9Fj1PZ5xSdOYgKG7MQWeJEFL9-knQJ_1jo3Srsn/s1600/ESP-06+%25283%2529.jpg" /></a></td>
</tr>
</tbody></table>
<br />
<br />
<b>ESP-07</b><br />
<table>
<tbody>
<tr>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUZeWb-S1yhsViMsIOrw5brcN5kkNNgwz0dA8cWeHIJpgds0Adre_tHaBRijvT_O7T6ktXpckBnhChuw54gKsjrDlyguOBM_SqYX8ubL6Ct-vMv9VIM2ykZ_7agm7LjgxIsXWCQccutOgL/s1600/ESP-07+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUZeWb-S1yhsViMsIOrw5brcN5kkNNgwz0dA8cWeHIJpgds0Adre_tHaBRijvT_O7T6ktXpckBnhChuw54gKsjrDlyguOBM_SqYX8ubL6Ct-vMv9VIM2ykZ_7agm7LjgxIsXWCQccutOgL/s1600/ESP-07+%25281%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOgyOyezxyu999llgaTYFjQlNKKdzysike2HWGhTB0yHqNGdmqcQQBh5hQ2XnUJ6Vq9QyN3rJfHdxVSE_9nfXJk_Jj4Lq1fGrRZCuN_j00ZJxMD-pxPRmtUTFn84HbN76fYSfo4j3FpqNf/s1600/ESP-07+%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOgyOyezxyu999llgaTYFjQlNKKdzysike2HWGhTB0yHqNGdmqcQQBh5hQ2XnUJ6Vq9QyN3rJfHdxVSE_9nfXJk_Jj4Lq1fGrRZCuN_j00ZJxMD-pxPRmtUTFn84HbN76fYSfo4j3FpqNf/s1600/ESP-07+%25282%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUgkCKvhgavsJwXedqrs0LYdYULaARrgRYeOwmBTYC0mgo5XqfqbpmWCYTaOAGgfdya83bejDtNpI0hwlq2NyP0i415ONE7TdGMAv6Uf5X5sLAOwyQZxa7FspqiR4MBxUtzr1AFGiH9MsN/s1600/ESP-07+%25283%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUgkCKvhgavsJwXedqrs0LYdYULaARrgRYeOwmBTYC0mgo5XqfqbpmWCYTaOAGgfdya83bejDtNpI0hwlq2NyP0i415ONE7TdGMAv6Uf5X5sLAOwyQZxa7FspqiR4MBxUtzr1AFGiH9MsN/s1600/ESP-07+%25283%2529.jpg" /></a></td>
</tr>
</tbody></table>
<br />
<b>ESP-08</b><br />
<table>
<tbody>
<tr>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4i-5i3W8VfRJRawQTHxK4_Jw4qTnJD5kZJkGXfbt6Kjcpz5A-0bekstzmWJ0gvZZNB-PeEnZDusYmI2jZ-8SuhmFJdD5K0B2cjcgBQfmDSf13rKeR-HfFe7yfZfF8fC9yAft300W-GXDE/s1600/ESP-08+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4i-5i3W8VfRJRawQTHxK4_Jw4qTnJD5kZJkGXfbt6Kjcpz5A-0bekstzmWJ0gvZZNB-PeEnZDusYmI2jZ-8SuhmFJdD5K0B2cjcgBQfmDSf13rKeR-HfFe7yfZfF8fC9yAft300W-GXDE/s1600/ESP-08+%25281%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-pfIOa4dXDEIX6wECU5RiY0eIvKME8qInse3Lv0H68iDkcraTALxjSwUsYyuR1B3tOGs0bwRO39HZvTzGGi9DMjwjkfYtbiWbJsfWb3sH582KhEPEG0qrSsMR_xH2e14gEmCFOgsLYpwF/s1600/ESP-08+%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-pfIOa4dXDEIX6wECU5RiY0eIvKME8qInse3Lv0H68iDkcraTALxjSwUsYyuR1B3tOGs0bwRO39HZvTzGGi9DMjwjkfYtbiWbJsfWb3sH582KhEPEG0qrSsMR_xH2e14gEmCFOgsLYpwF/s1600/ESP-08+%25282%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQaBLD3BkwqH-q9qM9u4J4H2NjeT1t1xRNMrMUCMiKv5wTvSaQDleNVDplii_KmEpWKf5Mub0dAHLWsT1ackqVoNeXLCS1BoQetNtO7pDP_x5SZRuqtbns-5yYZg2Bl_v9D5LE7hllqF68/s1600/ESP-08+%25283%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQaBLD3BkwqH-q9qM9u4J4H2NjeT1t1xRNMrMUCMiKv5wTvSaQDleNVDplii_KmEpWKf5Mub0dAHLWsT1ackqVoNeXLCS1BoQetNtO7pDP_x5SZRuqtbns-5yYZg2Bl_v9D5LE7hllqF68/s1600/ESP-08+%25283%2529.jpg" /></a></td>
</tr>
</tbody></table>
<br />
<b>ESP-09</b><br />
<table>
<tbody>
<tr>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT2rdW1KggtXOOt22HRCwq6Dt9RJ9jG7FY-hwc_r1UmYPoYovWTqEg2X5d4skcwn8tbhKfrzJ4BSskmjGpbd6HwvQbheNujStdyFA6uxVQyF5rET1wnSS8ha9T-lOFq0lZKobLxk4eMPvc/s1600/ESP-09+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhT2rdW1KggtXOOt22HRCwq6Dt9RJ9jG7FY-hwc_r1UmYPoYovWTqEg2X5d4skcwn8tbhKfrzJ4BSskmjGpbd6HwvQbheNujStdyFA6uxVQyF5rET1wnSS8ha9T-lOFq0lZKobLxk4eMPvc/s1600/ESP-09+%25281%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgEFdsgNhEgIt3zfb3rVWjYpGfC9S15784P3sqx0thrNz5g7p1_JydPMZKXDVtPgVWyXTkPuoJoy3uI2pun79sDi_MzjVfBkIFBqSuMDsF3GJD0m8UjTycLIS-Hs1bWBsOu_Ay7ghsI5HF/s1600/ESP-09+%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgEFdsgNhEgIt3zfb3rVWjYpGfC9S15784P3sqx0thrNz5g7p1_JydPMZKXDVtPgVWyXTkPuoJoy3uI2pun79sDi_MzjVfBkIFBqSuMDsF3GJD0m8UjTycLIS-Hs1bWBsOu_Ay7ghsI5HF/s1600/ESP-09+%25282%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj00b7uHllFW_624hQNUvF13ihBRPx2GhydU8uMyLKK6iHBd3Nn_DYp5QZKQp0lqnoxW8GICn8U7kYGRwro58OnHDvLsffr-pF_AfdSIU3kgX-oU2CABKa8yCydnMlYlLS9e63f3z4oVBy_/s1600/ESP-09+%25283%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj00b7uHllFW_624hQNUvF13ihBRPx2GhydU8uMyLKK6iHBd3Nn_DYp5QZKQp0lqnoxW8GICn8U7kYGRwro58OnHDvLsffr-pF_AfdSIU3kgX-oU2CABKa8yCydnMlYlLS9e63f3z4oVBy_/s1600/ESP-09+%25283%2529.jpg" /></a></td>
</tr>
</tbody></table>
<b>ESP-10</b><br />
<table>
<tbody>
<tr>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgW57AxRl54S17906Zw1f0BkRyDPbvfPdmuzpf474GiYPszlYbT-vS2h7Ru0-SsNQDgTzVz0Fyhj6sB6ctAklPjiYbCWlB_qVAL_B09Ha-q0FFHtZqTXQOPBYC26hsC4mKTc_pYS1mgmqm/s1600/ESP-10+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgW57AxRl54S17906Zw1f0BkRyDPbvfPdmuzpf474GiYPszlYbT-vS2h7Ru0-SsNQDgTzVz0Fyhj6sB6ctAklPjiYbCWlB_qVAL_B09Ha-q0FFHtZqTXQOPBYC26hsC4mKTc_pYS1mgmqm/s1600/ESP-10+%25281%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyi1hbfoP_uhuhSkZUso2PcTzljsiog0iKYJLNO3HwbVqaCXMAWctW83StNe9J7DeJoh5_JsL0b4ELO2gmLssrNQWegWLfjr2R8711gG93TCP9V2Y7svBzTTFo9VOzWUVTVSa_D76Kx2xV/s1600/ESP-10+%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyi1hbfoP_uhuhSkZUso2PcTzljsiog0iKYJLNO3HwbVqaCXMAWctW83StNe9J7DeJoh5_JsL0b4ELO2gmLssrNQWegWLfjr2R8711gG93TCP9V2Y7svBzTTFo9VOzWUVTVSa_D76Kx2xV/s1600/ESP-10+%25282%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjTp00jt0jk1V50fbB3yAa3mu6tD8_5PHvWJlKFoKikCfDG1WVN08iQVFVx7r_67TIDF5E7ueHqFguQwC512XdC3KSYBF-6JHlJCFdD1hzyKfrAsdifEOW7adIFF29dJObpPjPLjQ6YNqG/s1600/ESP-10+%25283%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjTp00jt0jk1V50fbB3yAa3mu6tD8_5PHvWJlKFoKikCfDG1WVN08iQVFVx7r_67TIDF5E7ueHqFguQwC512XdC3KSYBF-6JHlJCFdD1hzyKfrAsdifEOW7adIFF29dJObpPjPLjQ6YNqG/s1600/ESP-10+%25283%2529.jpg" /></a></td>
</tr>
</tbody></table>
<br />
<b>ESP-11</b><br />
<table>
<tbody>
<tr>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgri5ID8py0Dee5WPYNFuyAsxIG-CWazPLr2h_VRUmEhx6BkndqXrvO_34cRw10cehi52KBb7GDOqrHACOygXrJ3SYbFLzsWX0D_7h1YZXUzFQtNmt-thMEezgcVNwlADxk5Ncfiov7FFYs/s1600/ESP-11+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgri5ID8py0Dee5WPYNFuyAsxIG-CWazPLr2h_VRUmEhx6BkndqXrvO_34cRw10cehi52KBb7GDOqrHACOygXrJ3SYbFLzsWX0D_7h1YZXUzFQtNmt-thMEezgcVNwlADxk5Ncfiov7FFYs/s1600/ESP-11+%25281%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlHq63IUd9a9NuIalO4Yh9iKMc5k2_Uls2Ym3_Fa-OxQqfB4L0GS1N7wO0OO_TF9BNrUOErTsgjPRS0LKkKKjjfxi_VcL4XeEXF72NWDHMiX7sCVislWLSS0XhX5fO5du0cXe6Ln_n2E1k/s1600/ESP-11+%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlHq63IUd9a9NuIalO4Yh9iKMc5k2_Uls2Ym3_Fa-OxQqfB4L0GS1N7wO0OO_TF9BNrUOErTsgjPRS0LKkKKjjfxi_VcL4XeEXF72NWDHMiX7sCVislWLSS0XhX5fO5du0cXe6Ln_n2E1k/s1600/ESP-11+%25282%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieroLMrWNVZUYj1wbtMCnzvqlLbXIWAmbuUpCvwlRhLMynqvU33FPVozTHBxKlN_TbhTinFEnaO36ueT5_fdfKMXB1Kml7H5nV1Q62tBUWrBBjDQ9CWxNgsbP9BXUduUm2xR5GMdevOixJ/s1600/ESP-11+%25283%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieroLMrWNVZUYj1wbtMCnzvqlLbXIWAmbuUpCvwlRhLMynqvU33FPVozTHBxKlN_TbhTinFEnaO36ueT5_fdfKMXB1Kml7H5nV1Q62tBUWrBBjDQ9CWxNgsbP9BXUduUm2xR5GMdevOixJ/s1600/ESP-11+%25283%2529.jpg" /></a></td>
</tr>
</tbody></table>
<br />
<b>ESP-12</b><br />
<table>
<tbody>
<tr>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguk6HP-puzjyjnPo9n1pkWKrMaegsxuY-M6XTumcanpeztfn-uH7c-4EeIvq2TBQAMy5qP36fDmSQQ_OlRFYqtdX4mJfQZ9M44ZLmfmSCiAxv-3x56m5hJYO7To1g52r_uJAfud28Jw77k/s1600/ESP-12+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguk6HP-puzjyjnPo9n1pkWKrMaegsxuY-M6XTumcanpeztfn-uH7c-4EeIvq2TBQAMy5qP36fDmSQQ_OlRFYqtdX4mJfQZ9M44ZLmfmSCiAxv-3x56m5hJYO7To1g52r_uJAfud28Jw77k/s1600/ESP-12+%25281%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAy3PXpwi3-nfxvj2vYAog7uXSb-M2iRmI_VW4896SaHT-CzqIFkJkcjcankL3xnjFxldEWyjBkDktpNDPo6yMfW91dMjpMWAe0TgdaN57EDuadmATDyjCRnuaqbxMFj_Yksdh7uzE6F1L/s1600/ESP-12+%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAy3PXpwi3-nfxvj2vYAog7uXSb-M2iRmI_VW4896SaHT-CzqIFkJkcjcankL3xnjFxldEWyjBkDktpNDPo6yMfW91dMjpMWAe0TgdaN57EDuadmATDyjCRnuaqbxMFj_Yksdh7uzE6F1L/s1600/ESP-12+%25282%2529.jpg" /></a></td>
</tr>
</tbody></table>
<br />
<b>ESP-13</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifvL62tqrrMPgwUSJaCncf581aqp6SB2lCwr4UlPya8HckJTDoLoOcYnuHO15667HaK0tT4RKrPe9bwCwqjW2Yjjv7hlFW5sXuJ1nTxkn-6WWaAzS_RX3drfHgwCTzueBWauCimYp0P109/s1600/ESP-13+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifvL62tqrrMPgwUSJaCncf581aqp6SB2lCwr4UlPya8HckJTDoLoOcYnuHO15667HaK0tT4RKrPe9bwCwqjW2Yjjv7hlFW5sXuJ1nTxkn-6WWaAzS_RX3drfHgwCTzueBWauCimYp0P109/s1600/ESP-13+%25281%2529.jpg" /></a></div>
<b>ESP-14</b><br />
<table>
<tbody>
<tr>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw5DHegH0P79HNg-3mhCAcrhIad1bqCUFeyqOb6qKbWuNjlAqN0eUY3FV3JHgl3MAmjg78Ch8sK7-VF4_iEdXhNI7RO4kyERoBN4mvR3yYdlEUG6WLwlQXbuyBZJq4QwXNcOUpszrL8590/s1600/ESP-14+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw5DHegH0P79HNg-3mhCAcrhIad1bqCUFeyqOb6qKbWuNjlAqN0eUY3FV3JHgl3MAmjg78Ch8sK7-VF4_iEdXhNI7RO4kyERoBN4mvR3yYdlEUG6WLwlQXbuyBZJq4QwXNcOUpszrL8590/s1600/ESP-14+%25281%2529.jpg" /></a></td>
<td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg48r1FUdcAlwDYTKk6f0OEleyjtdbvUh33dfXpkopec-78a6beXCwsdYerur33a9wv0Ygu8HV-EiHm4GfStHrRjI3GUpzUfUhnjl22mRv0iQAejEda1XYXcjH_xF0UGFJ5_pJyNfEAAzfQ/s1600/ESP-14+%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg48r1FUdcAlwDYTKk6f0OEleyjtdbvUh33dfXpkopec-78a6beXCwsdYerur33a9wv0Ygu8HV-EiHm4GfStHrRjI3GUpzUfUhnjl22mRv0iQAejEda1XYXcjH_xF0UGFJ5_pJyNfEAAzfQ/s320/ESP-14+%25282%2529.jpg" width="226" /></a></td>
</tr>
</tbody></table>
<br />
<b>ESP boards summary table</b><br />
<br />
<table class="muchprettier">
<thead>
<tr>
<th>Board ID </th><th>pins </th><th>pitch </th><th>form factor </th><th>LEDs </th><th>Antenna </th><th>Ant.Socket </th><th>Shielded </th><th>dimensions mm </th>
</tr>
</thead>
<tbody>
<tr>
<td>ESP-01 </td><td>8 </td><td class="col2">.1" </td><td>2×4 DIL </td><td>Yes </td><td>Etched-on PCB </td><td>No </td><td>No </td><td>14.3 x 24.8 </td>
</tr>
<tr>
<td>ESP-02 </td><td>8 </td><td class="col2">.1” </td><td>2×4 notch </td><td>No? </td><td>None </td><td>Yes </td><td>No </td><td>14.2 x 14.2 </td>
</tr>
<tr>
<td>ESP-03 </td><td>14 </td><td class="col2">2mm </td><td>2×7 notch </td><td>No </td><td>Ceramic</td><td>No </td><td>No </td><td>17.3 x 12.1 </td>
</tr>
<tr>
<td>ESP-04 </td><td>14 </td><td class="col2">2mm </td><td>2×4 notch </td><td>No? </td><td>None </td><td>No </td><td>No </td><td>14.7 x 12.1 </td>
</tr>
<tr>
<td>ESP-05 </td><td>5 </td><td class="col2">.1" </td><td>1×5 SIL </td><td>No </td><td>None </td><td>Yes </td><td>No </td><td>14.2 x 14.2 </td>
</tr>
<tr>
<td>ESP-06 </td><td>12+GND </td><td class="col2">misc </td><td>4×3 dice </td><td>No </td><td>None </td><td>No </td><td>Yes </td><td>16.3 x 13.1 </td>
</tr>
<tr>
<td>ESP-07 </td><td>16 </td><td class="col2">2mm </td><td>2×8 pinhole </td><td>Yes </td><td>Ceramic </td><td>Yes </td><td>Yes </td><td>20.0 x 16.0 </td>
</tr>
<tr>
<td>ESP-08 </td><td>14 </td><td class="col2">2mm </td><td>2×7 notch </td><td>No </td><td>None </td><td>No </td><td>Yes </td><td>17.0 x 16.0 </td>
</tr>
<tr>
<td>ESP-08 New </td><td>16 </td><td class="col2">2mm </td><td>2×8 notch </td><td>No </td><td>None </td><td>No </td><td>Yes </td><td>18.0 x 16.0 </td>
</tr>
<tr>
<td>ESP-09 </td><td>12+GND </td><td class="col2">misc </td><td>4×3 dice </td><td>No </td><td>None </td><td>No </td><td>No </td><td>10.0 x 10.0 </td>
</tr>
<tr>
<td>ESP-10 </td><td>5 </td><td class="col2">2mmm? </td><td>1×5 notch </td><td>No </td><td>None </td><td>No </td><td>No </td><td>14.2 x 10.0 </td>
</tr>
<tr>
<td>ESP-11 </td><td>8 </td><td class="col2">1.27mm</td><td>1×8 pinhole </td><td>No? </td><td>Ceramic </td><td>No </td><td>No </td><td>17.3 x 12.1 </td>
</tr>
<tr>
<td>ESP-12 </td><td>16 </td><td class="col2">2mm </td><td>2×8 notch </td><td>Yes </td><td class="col5 rightalign">Etched-on PCB </td><td>No </td><td>Yes </td><td>24.0 x 16.0 </td>
</tr>
<tr>
<td>ESP-12-E </td><td>22 </td><td class="col2">2mm </td><td>2×8 notch </td><td>Yes </td><td class="col5 rightalign">Etched-on PCB </td><td>No </td><td>Yes </td><td>24.0 x 16.0 </td>
</tr>
<tr>
<td>ESP-13 </td><td>18 </td><td class="col2">1.5mm </td><td>2×9 </td><td>? </td><td class="col5 rightalign">Etched-on PCB </td><td>No </td><td>Yes </td><td>? x ? </td>
</tr>
<tr>
<td>ESP-14 </td><td>22 </td><td class="col2">2mm </td><td>2×8 + 6 </td><td>1 </td><td class="col5 rightalign">Etched-on PCB </td><td>No </td><td>Yes </td><td class="col8 centeralign">24.3 x 16.2 </td>
</tr>
<tr>
<td>WROOM-02 </td><td>18 </td><td class="col2">1.5mm </td><td>2×9 </td><td>No </td><td>Etched on PCB </td><td>No </td><td>Yes </td><td>20.0 x 18.0 </td>
</tr>
<tr>
<td>WT8266-S1 </td><td>18 </td><td class="col2">1.5mm </td><td>3×6 </td><td>1 </td><td>Etched on PCB </td><td>No </td><td>Yes </td><td>15.0 x 18.6</td>
</tr>
</tbody></table>
<hr />
<b>References:</b> <a href="http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family" target="_blank">www.esp8266.com</a>Bloghttp://www.blogger.com/profile/01491718934583268390noreply@blogger.com0tag:blogger.com,1999:blog-3490680284637053587.post-89943797672562793602016-09-08T11:45:00.003+03:002016-09-23T11:24:00.181+03:00Arduino 1.6.7 with ESP8266 supportUsing Arduino 1.6.7 with ESP8266 support is easy as is with any Arduino supported boards.<br />
<br />
<b>Installation:</b><br />
<br />
<b class="rounded">1</b> The Arduino 1.6.7 can be <a href="http://arduino.cc/download_handler.php?f=/arduino-1.6.7-windows.zip" target="_blank">downloaded here</a>. After the zip file has been extracted, go to <b>File </b>-> <b>Preferences </b>and paste <code>http://arduino.esp8266.com/stable/package_esp8266com_index.json</code> in the<br />
<b>Additional Boards Manager</b> URLs input. Click <b>OK </b>and go to <b>Tools </b>-> <b>Board </b>-> <b>Board Manager...</b> and search for ESP8266. The should be a <b>esp8266 by ESP8266 Community</b> package. I have installed the version 2.1.0 of that package.<br />
<br />
The supported boards for this version are: <span style="white-space: pre-wrap;">Generic ESP8266 Module, </span><span style="white-space: pre-wrap;">Olimex MOD-WIFI-ESP8266(-DEV), </span><span style="white-space: pre-wrap;">NodeMCU 0.9 (ESP-12 Module), </span><span style="white-space: pre-wrap;">NodeMCU 1.0 (ESP-12E Module), </span><span style="white-space: pre-wrap;">Adafruit HUZZAH ESP8266 (ESP-12), </span><span style="white-space: pre-wrap;">ESPresso Lite 1.0, </span><span style="white-space: pre-wrap;">ESPresso Lite 2.0, </span><span style="white-space: pre-wrap;">SparkFun Thing, </span><span style="white-space: pre-wrap;">SweetPea ESP-210, </span><span style="white-space: pre-wrap;">WeMos D1, </span><span style="white-space: pre-wrap;">WeMos D1 mini, </span><span style="white-space: pre-wrap;">ESPino (ESP-12 Module), </span><span style="white-space: pre-wrap;">ESPino (WROOM-02 Module), </span><span style="white-space: pre-wrap;">WifInfo and </span><span style="white-space: pre-wrap;">ESPDuino.</span><br />
<br />
<b class="rounded">2</b> Now you can select the board from <b>Tools </b>-> <b>Board </b>-> <b>Sparkfun ESP8266 Thing</b>. The other settings can be seen in the screenshot below:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDAu-tgZ0zndUoweyn24t3mJuI0ELwgUAT8p6Il_1Af6NemVGVkbjTnm_LKxD1fEpgQdBi-f9IAYgsxOWTZ9SCwEB_tkqSym8HjR4pmu0yqUiLiU2yYN1rk-qeEAFIMZEH3WduSWAzUiF2/s1600/Arduino+with+ESP8266+support+-+select+board.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDAu-tgZ0zndUoweyn24t3mJuI0ELwgUAT8p6Il_1Af6NemVGVkbjTnm_LKxD1fEpgQdBi-f9IAYgsxOWTZ9SCwEB_tkqSym8HjR4pmu0yqUiLiU2yYN1rk-qeEAFIMZEH3WduSWAzUiF2/s1600/Arduino+with+ESP8266+support+-+select+board.png" /></a></div>
<br />
<b class="rounded">3</b> Now you can write your ESP8266 code and upload it. Upload complete on ESP8266 board messages:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha7GlqYOIKzfReIm8lwq_24lh__WB20r6XmV4inmPtSRnhXMEHcIPVxoxHNr4ZQzao6FyDDScG5afZjer-VYkrEftyoM_pi3TJG7FGuQklTf7dfcTTKBLbmGD7J0Pq-hKsMsw05GRzt8xG/s1600/Arduino+with+ESP8266+support.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha7GlqYOIKzfReIm8lwq_24lh__WB20r6XmV4inmPtSRnhXMEHcIPVxoxHNr4ZQzao6FyDDScG5afZjer-VYkrEftyoM_pi3TJG7FGuQklTf7dfcTTKBLbmGD7J0Pq-hKsMsw05GRzt8xG/s1600/Arduino+with+ESP8266+support.png" /></a></div>
<b><br /></b>
<b>Notes:</b><br />
1. In order for this to function, you will have to <a href="https://ee-programming-notepad.blogspot.com/2016/08/esp8266-firmware-flashing.html" target="_blank">flash ESP8266 with Arduino support firmware</a>.<br />
2. The software already contains several ESP8266 libraries, like: <a href="https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer" target="_blank">ESP8266WebServer</a>, <a href="https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266mDNS" target="_blank">ESP8266 Multicast DNS</a> and <a href="https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WiFi" target="_blank">ESP8266WiFi</a>.<br />
<b>References:</b> <a href="http://esp8266.github.io/Arduino/versions/2.1.0/doc/installing.html" target="_blank">esp8266.github.io</a>, <a href="http://www.whatimade.today/esp8266-easiest-way-to-program-so-far/" target="_blank">www.whatimade.today</a>Bloghttp://www.blogger.com/profile/01491718934583268390noreply@blogger.com0tag:blogger.com,1999:blog-3490680284637053587.post-52680917883721031612016-08-30T12:54:00.002+03:002016-09-23T11:25:17.712+03:00ESP8266 firmware flashing on WindowsThe flashing of <b>ESP8266</b> module will be done using the Windows <b>XTCOM_UTIL</b> application. This application can also read/write registers, flash image download, HSpiFlash image download ands memory image download. I'm going to use "<b>flash image download</b>", which is in fact the firmware flashing. The <b>XTCOM_UTILITY</b> and the flash image can be downloaded <a href="http://188.40.53.80/files/index.php?file=/microcontrollers/Flash%20tools/ESP8266%20Arduino%20and%20AT%20command/ESP8266_FLASH_XTCOM_UTILITY.zip&event=download" target="_blank">here</a> (<a href="http://iot-playground.com/swdownload/xtcom_util.zip" target="_blank">alternate link here</a>).<br />
<br />
<b>Modules:</b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAIfyDmfN5TyaWdIvbKFMtS57Vi9oA-xu-GFZD7UnnAtr3iF_wSp9rjOSgY8kFFR5K2KjZdD6xfgyxUwzApzZ_Oz3WCFFt27LNDyYvHhnJ0vbZj1tpN4talXpt3rnjdAXoUjOipiQn0nj3/s1600/usb-ttl-ft232rl-pinout.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="182" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAIfyDmfN5TyaWdIvbKFMtS57Vi9oA-xu-GFZD7UnnAtr3iF_wSp9rjOSgY8kFFR5K2KjZdD6xfgyxUwzApzZ_Oz3WCFFt27LNDyYvHhnJ0vbZj1tpN4talXpt3rnjdAXoUjOipiQn0nj3/s400/usb-ttl-ft232rl-pinout.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
RS232 FTDI</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhucF_kiU_6o2C6cHns26iLaI0pPN9WuaeVnFxWaSGHz2F507cjrmOMPHjI0ba4s8VMcJsp3I6V8EG6HLNOg63YoedPZPiIF1uunS-h9mOXZ3bSxbq52QF6WFplGLtyYvwOkJ0CEWhFNmAf/s1600/ESP8266+Pinout.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="165" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhucF_kiU_6o2C6cHns26iLaI0pPN9WuaeVnFxWaSGHz2F507cjrmOMPHjI0ba4s8VMcJsp3I6V8EG6HLNOg63YoedPZPiIF1uunS-h9mOXZ3bSxbq52QF6WFplGLtyYvwOkJ0CEWhFNmAf/s400/ESP8266+Pinout.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
ESP8266</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<b>Connections:</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGCJZOg8dNFWElSHGkgIApU3WeyUhD8Ngjweu4nnrXStdh0iJZkTPSMbPB864uxCkYsFYDX7YzbI-2uDa7FXc_xNNcBCTpxjHKoeLy8mpsOnbTSjnG5NbJkOrwfeOmdQmITm3QNDL63Aal/s1600/esp8266-reflash-firmware.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGCJZOg8dNFWElSHGkgIApU3WeyUhD8Ngjweu4nnrXStdh0iJZkTPSMbPB864uxCkYsFYDX7YzbI-2uDa7FXc_xNNcBCTpxjHKoeLy8mpsOnbTSjnG5NbJkOrwfeOmdQmITm3QNDL63Aal/s1600/esp8266-reflash-firmware.png" /></a></div>
<br />
<br />
<div class="warning">
<b>Warning!</b> ESP8266 does not support 5V on either of its pins.</div>
Connecting the <b>ESP8266 </b>to <b>FT232RL FTDI</b> USB to TTL Serial+Adapter:<br />
<ul>
<li>VCC = 3.3V (might require a separate power supply for the ESP8266 module, because the FTDI might not give enough current)</li>
<li>GND = ground</li>
<li>CH_PD = Chip enable, connect to +VCC</li>
<li>RST = Leave floating</li>
<li>GPIO0 = Normally floating but this needs to be connected to GND when flashing the ESP8266 module</li>
<li>UTXD = Tx data connect to TX of FTDI</li>
<li>URXD = Rx data connect to RX of FTDI</li>
</ul>
<br />
<b>Flashing ESP8266 module with XTCOM_UTILITY:</b><br />
<br />
Run the program and go to <b>Tools</b>-><b>Config device</b>. Select the Com port of FTDI adapter (only Com
ports COM1-COM6 are supported - change port in Windows control panel if
necessary). The port used by FTDI adapter is visible in <b>Device Manager</b>. In my case the port was <b>COM2</b> and the speed was set to <b>115200</b>. Press <b>Open</b> button to open the COM port and then click <b>Connect</b>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqe46iDTit-NKTd9TiYWjomjmlUzUoLzOA0fGTPiSLif100RYSK38aLtdTia-aRLbdI9xC5-yDk8IQqsQCKUSZT56K9UBSxax91tZ3yR-w9q3Qt2etHyLoMLAkDMFW0K1FEqYwMn2uKLgu/s1600/XTCOM_UTILITY+config+device+COM+port.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqe46iDTit-NKTd9TiYWjomjmlUzUoLzOA0fGTPiSLif100RYSK38aLtdTia-aRLbdI9xC5-yDk8IQqsQCKUSZT56K9UBSxax91tZ3yR-w9q3Qt2etHyLoMLAkDMFW0K1FEqYwMn2uKLgu/s1600/XTCOM_UTILITY+config+device+COM+port.png" /></a></div>
<br />
Go to <b>API TEST</b>-><b>Flash Image Download</b>. Press <b>Browse</b> to select the firmware image and then press the <b>Download</b> button to start flashing.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJV3gMJ2gCM3lApxkZv5dX84R4DG8mBIUMbRWQxsIwNHw0lIpfQ4qqovOn6FTmG_Qu4YZ_04Wh567gkSOOGTt8bBmcxZJ0-R3B9oIFgYOTVk2SJD0B9tX6RGSXz6NnhFhosBiKQ0pBniiG/s1600/XTCOM_UTILITY+upload+flash+image.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJV3gMJ2gCM3lApxkZv5dX84R4DG8mBIUMbRWQxsIwNHw0lIpfQ4qqovOn6FTmG_Qu4YZ_04Wh567gkSOOGTt8bBmcxZJ0-R3B9oIFgYOTVk2SJD0B9tX6RGSXz6NnhFhosBiKQ0pBniiG/s1600/XTCOM_UTILITY+upload+flash+image.png" /></a></div>
<br />
Flash image file info output when using <b>AT+GMR</b> command:<br />
<pre>AT version:0.21.0.0
SDK version:0.9.5</pre>
<div>
<br /></div>
<hr />
<b>References:</b> tutorial from <a href="http://iot-playground.com/blog/2-uncategorised/35-esp8266-firmware-update" target="_blank">iot-playground.com</a>, images from <a href="https://stak.com/USB_to_TTL_Serial_Adapter__FTDI_FT232RL_chipset__3.3V_and_5V_compatible" target="_blank">stak.com</a> and <a href="https://arduino-info.wikispaces.com/Temp-WiFi" target="_blank">arduino-info.wikispaces.com</a><br />
<b>Similar tutorial:</b> <a href="https://developer.mbed.org/users/sschocke/code/WiFiLamp/wiki/Updating-ESP8266-Firmware" target="_blank">developer.mbed.org</a>Bloghttp://www.blogger.com/profile/01491718934583268390noreply@blogger.com0tag:blogger.com,1999:blog-3490680284637053587.post-90265520688919375842016-08-24T15:20:00.001+03:002016-09-23T11:24:48.741+03:00New line, carriage return and tab representation in c/c++Characters representation table<br />
<br />
<table class="muchprettier">
<thead>
<tr>
<th>Name</th>
<th>Character</th>
<th>Decimal value</th>
<th>Hexadecimal value</th>
<th>Octal value</th>
<th>String value</th>
</tr>
</thead>
<tbody>
<tr>
<td>New line (line feed)</td>
<td class="center b">LF</td>
<td class="center b">10</td>
<td class="center b">0x0A</td>
<td class="center b">012</td>
<td class="center b">\n</td>
</tr>
<tr>
<td>Carriage return</td>
<td class="center b">CR</td>
<td class="center b">13</td>
<td class="center b">0x0D</td>
<td class="center b">015</td>
<td class="center b">\r</td>
</tr>
<tr>
<td>Tab</td>
<td class="center b">TAB</td>
<td class="center b">9</td>
<td class="center b">0x09</td>
<td class="center b">011</td>
<td class="center b">\t</td>
</tr>
</tbody>
</table>
<br />
<b>References:</b> <a href="http://www.asciitable.com/" target="_blank">www.asciitable.com</a>Bloghttp://www.blogger.com/profile/01491718934583268390noreply@blogger.com0tag:blogger.com,1999:blog-3490680284637053587.post-4804940984374203662016-08-23T17:07:00.001+03:002016-09-23T11:25:04.181+03:00Ebay ESP8266 pinout - model ESP-01This particular <b>ESP8266 </b>was bought off <a href="http://www.ebay.com/" target="_blank">Ebay</a> from China. Ebay <a href="http://www.ebay.com/sch/i.html?_nkw=esp8266" target="_blank">has</a> all kinds of ESP8266 models. My version is <span style="background-color: white; color: #222222; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif; font-size: 13.1999998092651px; line-height: 18.4799995422363px; text-shadow: transparent 0px 0px 0px , rgba(0 , 0 , 0 , 0.741176) 0px 0px 0px;"><b>ESP-01</b>, </span>it was bought in 2014 and it looks like this.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikNoCSUfXou0pny9RYSalcBxG0JATZhvCQG9H_qvchVbwgQ0CNCiQq_6SJeVXAqwvHVG05mFeK3Wtqp_Dc_GikOfWT4DiBK0m-F98DfCg3QEhoRTcUmH_KTvU12If8ee0lh2kWct_pQLC7/s1600/esp8266-china-ebay-pinout.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="China Ebay ESP8266 pinout" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikNoCSUfXou0pny9RYSalcBxG0JATZhvCQG9H_qvchVbwgQ0CNCiQq_6SJeVXAqwvHVG05mFeK3Wtqp_Dc_GikOfWT4DiBK0m-F98DfCg3QEhoRTcUmH_KTvU12If8ee0lh2kWct_pQLC7/s1600/esp8266-china-ebay-pinout.png" /></a></div>
<b><br /></b>
<b>ESP8266 board connections:</b><br />
<br />
<ul>
<li>3.3V power supply</li>
<li>GPIO0 and GPIO2 are 2 general purpose input/output pins. GPIO0 will be set to GND only when loading the firmware</li>
<li>CH_PD must be in pullup mode when programming only</li>
<li>RST in pullup mode</li>
</ul>
<div class="warning">
<b>Warning!</b> ESP8266 does not support 5V on either of its pins.</div>
<hr />
<b>References:</b> The image was taken from <a href="http://www.electroschematics.com/11276/esp8266-datasheet/" target="_blank">www.electroschematics.com</a> and the information from <a href="http://www.whatimade.today/loading-the-nodemcu-firmware-on-the-esp8266-windows-guide/" target="_blank">www.whatimade.today</a>Bloghttp://www.blogger.com/profile/01491718934583268390noreply@blogger.com0