Antonio Caldara

Antonio Caldara (1670 – 28 December 1736) was an Italian Baroque composer.

Caldara was born in Venice (exact date unknown), the son of a violinist. He became a chorister at St Mark’s in Venice, where he learned several instruments, probably under the instruction of Giovanni Legrenzi. In 1699 he relocated to Mantua, where he became maestro di cappella to the inept Charles IV, Duke of Mantua, a pensionary of France with a French wife, who took the French side in the War of the Spanish Succession. Caldara removed from Mantua in 1707, after the French were expelled from Italy, then moved on to Barcelona as chamber composer to Charles III, the pretender to the Spanish throne (following the death of Charles II of Spain in 1700 without any direct heir) and who kept a royal court at Barcelona. There, he wrote some operas that are the first Italian operas performed in Spain. He moved on to Rome, becoming maestro di cappella to Francesco Maria Marescotti Ruspoli, 1st Prince of Cerveteri. While there he wrote in 1710 La costanza in amor vince l’inganno (Faithfulness in Love Defeats Treachery) for the public theatre at Macerata.

With the unexpected death of Emperor Joseph I from smallpox at the age of 32 in April 1711, Caldara deemed it prudent to renew his connections with Charles III – soon to become Holy Roman Emperor Charles VI – as he travelled from Spain to Vienna via northern Italy. Caldara visited Vienna in 1712, but found Marc’Antonio Ziani and Johann Joseph Fux firmly ensconced in the two highest musical posts. He stopped at the Salzburg court on his return journey to Rome, where he was well received (and to which he subsequently sent one new opera annually from 1716 and 1727). In 1716, following the death the previous year of Ziani and the promotion of Fux to Hofkapellmeister, Caldara was appointed Vice-Kapellmeister to the Imperial Court in Vienna, and there he remained until his death.

Caldara is best known as a composer of operas, cantatas and oratorios. Several of his works have libretti by Pietro Metastasio, the court poet at Vienna from 1729.

Source: Antonio Caldara – Wikipedia

Antonio Caldara was last modified: September 25th, 2017 by Jovan Stosic

Installing and Building an Arduino Sketch for the $5 ESP8266 Microcontroller

Custom build of the Arduino IDE with support for the ESP8266 chip and the esptool programmer.

Custom build of the Arduino IDE with support for the ESP8266 chip and the esptool programmer.

Part 2 of a 3-post series on the new ESP8266 microcontroller

From our look at the $5 ESP8266 WiFi microcontroller and the new Arduino-compatible development environment that’s just been released, let’s get to work testing it out.

Installation of the custom build of the Arduino IDE really couldn’t be simpler. I’m on a Mac, and at that point it comes down to downloading the pre-built binary release from GitHub. The custom binary will live quite happily alongside your existing stock Arduino development environment — in fact, as well as the ESP8266 build, I think I’ve got six or seven other versions of the environment installed at the moment, with version numbers ranging from 1.0.x up to to latest 1.6.x build.

However, despite it being manageable, having a whole separate environment installed isn’t actually necessary. One of the things that the new 1.6.x release of the Arduino environment introduced was much more simplified support for adding and managing new boards.

Blinking an LED using an Arduino sketch and a MOD-WIFI-ESP8266-DEV board. (Credit: Sandeep Mistry)

Blinking an LED using an Arduino sketch and a MOD-WIFI-ESP8266-DEV board. (Credit: Sandeep Mistry)

Which is exactly what Sandeep Mistry has now done with the ESP8266. Installation is almost as simple as before — download it and move the esp8266com folder included in the release inside the hardware folder of your Arduino sketchbook directory.

Wiring up the ESP8266 Module

The pin out for the header block of the ESP-01 module

The pin out for the header block of the ESP-01 module

As I mentioned before, probably the most common breakout board you’ll come across for the ESP8266 is the ESP-01. Now unfortunately while the ESP-01 module has a standard spaced header block on one end, the pin out is rather inconvenient when dealing with breadboards. Because of the way the pins are laid out, you can’t just plug the module directly into a breadboard, you’re going to have to break out some jumper cables.

You’ll need to connect the VCC pin to a +3.3V supply, and the GND pin to ground. The board’s RX should be connected to the TX from your computer, and the board TX should be connected to the RX from your computer.

Additionally, to enable the board, you’ll need to pull the CH_PD pin high to +3.3V, and to allow you to upload your sketches you need to put the ESP8266 into bootloader mode by pulling the GPIO_0 pin low and toggling power to the board.

The two easiest methods to attach the board to your computer, so you can load your Arduino sketch onto the ESP8266, are either to use an FTDI adaptor board — like the FTDI Friend — or a standard FTDI cable.

The ESP-01 wired up to an FTDI adaptor. The CH_PD pin is pulled up to +3.3V to enable the board, the GPIO_0 pin is pulled down to GND to enable firmware upload.

Just remember that, if you use a cable, you’ll also need to use a 3.3V regulator, or go ahead and build a voltage divider out of resistors, as the FTDI cable runs at 5V and the ESP8266 runs at just 3.3V.

The ESP-01 wired up ready to be connected to a standard FTDI cable. The CH_PD pin is again pulled up to +3.3V to enable the board, whilst the GPIO_0 pin is pulled down to GND enabling firmware upload. Note the 3.3V regulator between the +5V input and the ESP-01 board.

After the sketch is uploaded you will need to remove the jumper between GPIO_0 and GND for things to work correctly.

Uploading the Sketch

The use case for the ESP8266 is controlling things via the network, it’s a classic Internet of Things platform. Let’s start off by doing some Internet of Things like things by flashing an LED on and off using the web. After all, if you can turn an LED on and off, you’re halfway to anywhere.

An LED attached to the free GPIO_2 pin of the ESP-01 board.

An LED attached to the free GPIO_2 pin of the ESP-01 board.

Go ahead and wire up your LED in the normal way to the spare GPIO pin, that’d be GPIO_2, and then open the Arduino IDE. Select “Generic ESP8266 Board” from the Tools → Boards menu, and the serial port your board is connected to from the Tools → Ports menu. Finally select “esptool” from the Tools → Programmer menu.

Now go to the File → Examples → ESP8266WiFi menu and load the “WiFiWebServer” sketch into an editor window. Replace the placeholders values in the script for “ssid” and “password” with the SSID and password for your WiFi network. Then hit the upload button.

If all goes well you you should see that it is “Uploading…” and then, after a while, that it is “Done uploading.” If you encounter an error then you should double check and ensure that the CH_PD pin is pulled high, and the GPIO_0 pin is pulled low. Then toggle the power on the board again to make sure it’s in bootloader mode. You should probably also check that RX is wired to TX, and TX to RX.

Now go ahead and open the Serial Monitor, remove the jumper between the GPIO_0 pin and GND, you toggle the power to the board again. If you do not toggle the power to the board at this stage, you sketch won’t be loaded.

However if all is still going well you should see something like this,

Connecting to Wireless Network
.......
WiFi connected
Server started
192.168.1.224

which tells you that the board has connected to the network, and rather crucially, what the board’s IP address ended up as when it negotiated its connection to the DHCP server.

The ESP-01 board running the “WiFiWebServer” example sketch

Now you can just go to your browser and use the endpoint http://gpio/1 to pull GPIO_2 high, and turn the LED on, or http://gpio/0 to pull GPIO_2 low, and turn the LED off. If you’re still connected to the Serial Console you should see something like this scroll by if you attempt to turn the LED on,

new client
GET /gpio/1 HTTP/1.1
Client disconnected
new client
GET /favicon.ico HTTP/1.1
invalid request

Here you can safely ignore the invalid request error message — that’s just your browser asking for the icon that accompanies the web pages its retrieving, it doesn’t necessarily expect a response — however at this point the LED connected to GPIO_2 should be on. Go ahead and try turning it off again.

If you succeed? Well, done. You’ve just replicated 90% of the functionality of a Philips Hue light bulb and built your first Internet of Things thing.

Now if you look closely at the video you might have noticed something odd about the ESP-01 board I’m using, it’s not connected via an FTDI adaptor, or a standard FTDI cable. Instead, I’m using a breadboard adaptor.

Why should I use the ESP8266?

While the ESP8266 can’t do everything you could do with an Arduino — for instance it only has one PWM pin that isn’t even exposed by the ESP-01 breakout board we’ve used here, you’d have to go looking for something like the Olimex board that Sandeep was using to get access to it — but for $5 it’s a bargain.

For $5 it doesn’t have to do the same amount as you can do with an Arduino, because at $5 you can afford to buy 5 or 6 of them for the price of a single Arduino board.

“This is inexpensive enough to be very much in the territory of ‘thousands of sensors-launched-out-of-a-cannon’-cheap.” — Brian Jepson

The ESP8266 was already well on its way to becoming — almost by stealth — one of the leading platforms for the Internet of Things. It’s super cheap, and super easy to work with, and it’s actually fairly easy — as such things go — to get your hands on, which makes a refreshing change.

However the arrival of Arduino compatibility is step change, suddenly the growing but still small community has opened their platform up to a much larger community. Suddenly there is a huge pool of people that  know how to work with the board, and I think we’re going to see an explosion of projects and products that otherwise wouldn’t get made. Because suddenly we have our hands on a WiFi board, that we all know how to use, that’s almost cheap enough to throw away.

Get out your soldering iron and buy some boards, I’d love to see what you build with it. Especially if it involves cannons.

This is the second of three posts on the ESP8266 microcontroller. Part 1 of the series introduces the board, while the third part talks about creating a breadboard adaptorfor the ESP-01 breakout board.

Source: Installing and Building an Arduino Sketch for the $5 ESP8266 Microcontroller

Installing and Building an Arduino Sketch for the $5 ESP8266 Microcontroller was last modified: July 13th, 2017 by Jovan Stosic

arduino-info – Ethernet

EtherNetModule-1.jpgThis module or an Ethernet Shield uses the W5100 chip which provides a set of TCP/IP protocols, MAC (Media Access) and PHY (Physical Interface) in one network chip, with support for the SPI bus interface.
The Ethernet Arduino IDE library that comes with the Arduino IDE is designed directly for W5100 and is supported on this product.
Your Arduino can be a Web Server with this brick! See an example HERE: But start out with “Your First Web Server” below.

NOTE: There are RED and GREEN versions of this module; they work and wire up the same..

There is on-board voltage regulation, so you can use 5-12V VCC input. The signal pins support both 3.3V and 5V levels.
The Ethernet Module has a standard RJ-45 connection, with an integrated line transformer. Another similar version exists with “Power Over Ethernet” connections that use the pins marked P+, P-, and G; this one does not use those.

NOTE: Most Ethernet Shields using the W5100 chip will work the same in the examples below.

W5100 Ethernet Module Information:

Source: arduino-info – Ethernet

arduino-info – Ethernet was last modified: July 13th, 2017 by Jovan Stosic

Serial Peripheral Interface Bus

The Serial Peripheral Interface bus (SPI) is a synchronous serial communication interface specification used for short distance communication, primarily in embedded systems. The interface was developed by Motorola in the late eighties and has become a de facto standard. Typical applications include Secure Digital cards and liquid crystal displays.

SPI devices communicate in full duplex mode using a master-slave architecture with a single master. The master device originates the frame for reading and writing. Multiple slave devices are supported through selection with individual slave select (SS) lines.

Sometimes SPI is called a four-wire serial bus, contrasting with three-, two-, and one-wire serial buses. The SPI may be accurately described as a synchronous serial interface,[1] but it is different from the Synchronous Serial Interface (SSI) protocol, which is also a four-wire synchronous serial communication protocol. But SSI Protocol employs differential signaling and provides only a single simplex communication channel.

Source: Serial Peripheral Interface Bus – Wikipedia

Serial Peripheral Interface Bus was last modified: September 25th, 2017 by Jovan Stosic

OpenCores

OpenCores is an open source hardware community developing digital open source hardware through electronic design automation, with a similar ethos to the free software movement. OpenCores hopes to eliminate redundant design work and slash development costs. A number of companies have been reported as adopting OpenCores IP in chips,[1][2]or as adjuncts to EDA tools.[3][4] OpenCores is also cited from time to time in the electronics press as an example of open source in the electronics hardware community, for example,[5]

OpenCores has always been a commercially owned organization. In 2015, the core active users of OpenCores established the independent Free and Open Source Silicon Foundation (FOSSi), and registered the libreCores.org website, as the basis for all future development, independent of commercial control.

Source: OpenCores – Wikipedia

OpenCores was last modified: September 25th, 2017 by Jovan Stosic

Project management triangle

The Project Management Triangle (called also Triple Constraint or the Iron Triangle) is a model of the constraints of project management. It is a graphic aid where the three attributes show on the corners of the triangle to show opposition. It is useful to help with intentionally choosing project biases, or analyzing the goals of a project.[1] It is used to illustrate that project management success is measured by the project team‘s ability to manage the project, so that the expected results are produced while managing time and cost.[2][3][4]

Like any human undertaking, projects need to be performed and delivered under certain constraints. Traditionally, these constraints have been listed as “scope” (features and quality), “time”, and “cost”.[5]These are also referred to as the “Project Management Triangle,” where each side represents a constraint. One side of the triangle cannot be changed without affecting the others. A further refinement of the constraints separates product “quality” or “performance” from scope, and turns quality into a fourth constraint.

Source: Project management triangle – Wikipedia

Project management triangle was last modified: September 25th, 2017 by Jovan Stosic

433 Mhz interference – causes? – DoItYourself.com Community Forums

This is a weird one so bear with me.

I installed a remote starter in my car about 2 years ago. It will decide to ignore the key fob commands at random. It will last for a few days and then be fine again. Over time I began to realize that this was only occurring in my driveway.

Recently I installed a new garage door opener. The opener comes with this nifty light fixture that you plug into any outlet in the garage. It receives its on/off commands from the motor housing. It worked fine for a few days and then stopped working. Not putting 2+2 together I demanded a replacement fixture from the manufacturer. Then the light went on (in my head, pun intended). That light fixture stopped working the same day my remote starter stopped working.

I did some investigation and it turns out both operate at 433 Mhz. I also found that if I move the light so that its receiver antenna is close enough to almost touch the transmitter it will work. Get a few inches away and it doesn’t work. Ditto with the car remote. If I put the key fob right up against the antenna wire it will work. Otherwise no dice. I’ve confirmed that they are not interfering with each other.

So I have a few questions:

1) What sort of everyday (or non-everyday) device could be transmitting strong enough to cancel out my other 433 Mhz devices?

2) What’s a typical range of a 433 Mhz signal?

I did some experimentation and my car remote begins to function once I’m about 200 feet away from my house. Further experimentation seems to point to the interference coming from me or the people across the street from me. Being a gadget-type person I suspect I’m the cause of my own problems.

Any ideas?

Source: 433 Mhz interference – causes? – DoItYourself.com Community Forums

433 Mhz interference – causes? – DoItYourself.com Community Forums was last modified: July 13th, 2017 by Jovan Stosic

Resolved: Does ethercard browseurl callback duplicate callback with persistTcpConnection ? – JeeLabs Café – JeeLabs . net

Am now starting to understand the browseurl and callback now – but still can’t find an explanation for all the parameters in the callback function.

static void my_callback (byte status, word off, word len)

‘ status ’ – I can not find explanation for this – please help if you know what values can be passed here, and what they mean / represent.

IF I understand this correctly :

When browseurl is first called, it runs asynchronous, until ethernet data arrives, and that buffer is then passed to the callback function.

The first callback has the offset = 54 and len = 512.
If this is the first call, why is there an offset ? Should the data not start at position 1 in the buffer ?

Next, with the use of persistTcpConnection, the browseurl will continue to run until the end of the stream of data ( in 512k blocks ) from the web server arrives.

Does the callback wait to complete its code before the next callback is activated ?

What happens if the second browseurl modifies the buffer while the code in the callback is still busy working with it.

For example, in my callback I have :

static void my_callback (byte status, word off, word len) {
    Serial.println("my_callback initiated");
    Serial.print("Status : ");   Serial.println(status);
    Serial.print("off : ");         Serial.println(off);
    Serial.print("len : ");         Serial.println(len);
    Serial.println((const char*) Ethernet::buffer + off);

    Ethernet::buffer[off+len] = 0;  // after the offset and the length, add an end marker .. is this correct ?  Sample codes showed [off + 300]

    WriteSDfile(2,0,((char*) Ethernet::buffer + off)); // now I need to write ( append ) the data in the buffer to an SD card file ( file number 2, no erase, data to append to file )

    Ethernet::buffer[0] = 0;  // set the end market to the start of the buffer so next received block of data is at the start of the buffer

        if(len != 512){  // if this is the last block of data ( less than len 512 ) then echo the SD Card Data to the Serial Monitor
        Serial.println("......................................");
            Serial.println("Reading Contents of File 2");
        Serial.println("......................................");
            ReadSDfile(2);
        }   
}

Or, is the code in the callback run, and must complete all of its code in the function before the callback can accept new data in the buffer in the next loop of the script execution ?

If this is the case, can the ethernet module modify the data in the ( existing ) buffer while the first instance of the callback function is still trying to process the code.

Would it be better to copy the buffer to a second byte array at the start of the callback, clear the buffer ( Ethernet::buffer[0] = 0; ) and then work with the copy array ?

I would really appreciate any advice here.

Source: Resolved: Does ethercard browseurl callback duplicate callback with persistTcpConnection ? – JeeLabs Café – JeeLabs . net

Resolved: Does ethercard browseurl callback duplicate callback with persistTcpConnection ? – JeeLabs Café – JeeLabs . net was last modified: July 13th, 2017 by Jovan Stosic

VLOOKUP Example Spreadsheet & Tutorial | Productivity Portfolio

How to do VLOOKUP in Excel

As every September approaches, I can count on a series of spreadsheet questions. One popular Excel tutorial request is, “how do you look up a value on one Excel worksheet and use it on another Excel worksheet?”. For example, you need to translate a product number into a product name. One of my favorite Excel features is the VLOOKUP function and it can help with this task. (See Resources section at the end for a video tutorial and sample worksheets.)

A recent case involved some voter registration data I needed to analyze. On one Excel spreadsheet, the voter’s party was listed as an alphanumeric value called “Pcode” and not the political party. This coding wasn’t intuitive. For example, “D” was for “American Independent Party”, but some thought it meant “Democratic Party”.

Pcode column requiring a lookup

Non-intuitive column needing a lookup

One way to solve this problem is to create a worksheet with the Pcode and translation and have Excel use the VLOOKUP function for the party name. You might think of VLOOKUP as an Excel translator. I could then add a column called “Political Party” to my original worksheet to show the information from a lookup table.

Creating a Lookup Table

A lookup table includes the values you wish to “lookup” such as our Pcode and the translation such as a political party. You can place this table on the same worksheet, but for this Excel tutorial I added a worksheet called “Party Codes”.

Using the Starting VLOOKUP Example File,

  1. Download the starting Excel sample file. The file link is also at the bottom of this tutorial.
  2. Review Worksheet 1 called “Voters”. It has voter first and last names, but only a PCODE.
  3. Review Worksheet 2 called “Party Codes”. It has a listing of party codes and political names. Each of the Party Codes and Names are unique. You’ll also note that Column A is in ascending order.
Excel worksheet with vlookup values

Worksheet with Translated Code Names

Using the Function

Excel’s VLOOKUP function uses 4 pieces of information. The function panel may seem intimidating with the terms, but it’s simpler than it looks.

To lookup a value using VLOOKUP,

    1. Add your new column on the Voters worksheet that will display the info pulled from the Lookup table on Party Codes. In my example, I added a column called Political Party in Column D. This is where I will insert the Excel function.
New Excel column for lookup values

Add a new Excel column for lookup values

    1. Place your cursor in the first blank cell in that column. In my example, this is cell D2.
    2. From the Formulas tab, select Insert Function. The Insert Function dialog will appear.
Inserting the VLOOKUP function

Inserting the VLOOKUP function

  1. In the Search for a function: text box, type “vlookup” and click Go.
  2. Highlight VLOOKUP and click OK.

Defining the Values

After you click OK, Excel’s Function Arguments dialog appears and allows you to define the four values. You’ll see that your starting cell and the formula bar show the beginning part of the function =VLOOKUP(). The Function Arguments dialog adds the needed data elements that will display between ().

For illustration purposes, I have overlaid the Party Codes worksheet on top to show the relationships.

Mapping the VLOOKUP Function Arguments

Mapping the VLOOKUP Function Arguments

1. Lookup_value – Think of this field as your starting point. In my example, I’ll click cell C2 so the value is filled in the dialog. I’m requesting Excel take the value of C2, which displays as the Pcode of “A” and find the matching political party on my lookup table on the Party Codes worksheet.

2. Table_array – This is the range for your lookup table. The range can be on your existing worksheet or another worksheet such as our “Party Codes”. When you click another worksheet and define the range, Excel prepends that tab name to the range such as ‘Party Codes’. In our case, I clicked the Party Codes worksheet and selected the range A2:B45.

Rules & Caveats

There are several rules to remember about this table array.

  • Rule 1 – The left column must contain the values being referenced. In other words, I couldn’t have our first column be NAME.
  • Rule 2 – You can’t have duplicate values in the leftmost column of the lookup range. I couldn’t have two entries with the value “A” with one being “Democratic” party and another “A” for the “Humanist” party. Excel would complain.
  • Rule 3 – When referring to a lookup table, you don’t want your cell references to change when you drag and fill to populate the other cells with the VLOOKUP function. As an example, if I want to use the same function in cells D3 through D7, I don’t want my lookup cell references shifting each time I move down to the next cell. I need the cell references to be the same. After you define your range, you need to press F4 which will cycle through absolute and relative references. You want to select the option that includes a $ before your Column and Row. ( ‘Party Codes’!$A$2:$B$45. ) You can get around this if you know how to use Excel name ranges.

3. Col_index_num – This is the number of the column on your lookup table that has the information you need. In our example, we want column 2 from the Party Codes worksheet which has the NAME of the political party.

4. Range-lookup – this field defines how close a match should exist between your Lookup_value (C2) and the value in the leftmost column on our lookup table. In our case, we want an exact match so we’ll use “FALSE”.

After clicking various cells, my dialog looks like the example below.

Mapped Values from Both Worksheets

Mapped Values from Both Worksheets

You can see in the red outlined formula bar above, I now have more information based on my entries in the Function Arguments dialog box.

The other item of interest is that when you build these functions, Excel displays the result in the Formula result = text line. This is great feedback which can show if your function is on target. In our example, we can see Excel looked up the Pcode of “A” and returned the Political Party “Democratic”.

Copying the VLOOKUP Function to Other Cells

It doesn’t make sense to use VLOOKUP for one cell in your Excel spreadsheet. Instead, I want to copy the function to other cells in the same column.

To copy VLOOKUP to other column cells,

  1. Click the cell containing the VLOOKUP arguments. In our example, this would be D2.
  2. Make sure you changed your Table_array entry per Rule 3 above – Party Codes’!$A$2:$B$45.
  3. Grab the cell handle that displays in the lower right corner.
  4. Left-click and drag down the cell handle to cover your column range. You can also double-click the bottom-right corner of the fill handle.

Note: If I hadn’t changed to absolute reference as mentioned in Rule 3, I would’ve seen my table array entry shift by one cell as we dragged down through the other cells.

VLOOKUP is a powerful Excel function that can leverage spreadsheet data from other sources. There are many ways you can benefit from this function. In this example, I used a 1:1 code translation, but you could also use it for group assignments. For example, you could assign state codes to a region such as CT, VT, and MA to a region called “New England”. And for the adventurous, you can use VLOOKUP in your Excel formulas.

If you’re trying to a do a horizontal lookup, you’ll be happy to learn that Excel has a function for that called HLOOKUP. I haven’t done a HLOOKUP tutorial here, but there is a good one over at Deskbright I’d suggest you read.

Source: VLOOKUP Example Spreadsheet & Tutorial | Productivity Portfolio

VLOOKUP Example Spreadsheet & Tutorial | Productivity Portfolio was last modified: July 13th, 2017 by Jovan Stosic