Arduino IDE Support for the ESP8266

Despite a wealth of tutorials for setting up and writing code for the ESP8266 WiFi module, there has not been much of anything on programming this cheap wireless module with the Arduino IDE. Finally, this has changed. After many months of coding, the Arduino IDE supports the ESP8266 module.

The Arduino IDE support was announced on the ESP8266 community forum. Setup is fairly simple with downloads for Linux, OS X, and Windows. This isn’t an ESP8266 shield, either: you can write code for the ESP module, connect the serial pins, and hit the program button.

The basic functions of the Arduino IDE – pinMode, digitalRead, digitalWrite, and analogRead – are available. Most of the WiFi functions work just like the WiFi shield library.

There are a few things that aren’t written yet; PWM doesn’t work, as the ESP8266 only has one hardware PWM source. SPI and I2C slave mode aren’t done yet, and uploading sketches via WiFi needs a little bit of thought. That said, this is a great introduction to programming the ESP module. If the Arduino IDE isn’t your thing, you could always do it the cool way with [CNLohr]’s programming tutorial we featured last week.

Another Radio Module for IoT fun – EMW3162

The availability of cheap radio modules is making them ubiquitous in an increasing number of projects that we have been seeing recently. The usual go-to solution is using any one of the several modules based on the ESP8266 device. [Willem] wrote in to share with us his experiences with another radio module – the EMW3162 from MXChip, which at $10 isn’t as cheap as the ESP8266 modules, but is a more capable, power packed, device.

The EMW3162 (PDF datasheet) is a low-power embedded WiFi module with integrated wireless LAN, and a STM32F205 Cortex-M3 microcontroller that runs a “self-hosted” WiFi networking library and software application stack. The microcontroller has 1M flash, 128k RAM and runs at 120MHz. And since MXChip is a Broadcom partner, they are allowed to use the WICED_SDK.

The on-board ARM M3 means all kinds of useful interfaces are available: UART, SPI, I2C, ADC, DAC, PWM, TIMERS, GPIO, and a JTAG flash interface. The good news could be on the power consumption figures – the module is touted to be low-power, and the data sheet shows 7mA when connected to an access point but with no data transfer. When transmitting at 20kbps, the current draw is about 24mA, which goes up to 320mA at 11Mbps.

[Willem] has his EMW3162_WICED repository up on Github, but also take a look at the MXChips MICO (Mico-controller based Internet Connectivity Operation System) repository. At the moment, he has it working using Linux, with a gnu gcc compiler and a JLINK JTAG programmer. He also has the WICED SDK working and has a WiFi AP with an on-board 120MHz arm chip. It would be interesting to hear about other users’ experiences with this radio module. Do let us know in the comments below!


How to Directly Program an Inexpensive ESP8266 WiFi Module

The ESP8266 is the answer to “I want something with Wifi.” Surprisingly, there are a number of engineers and hobbyists who have not heard of this chip or have heard of it but don’t really understand what it is. It’s basically the answer to everything IoT to so many engineering problems that have plagued the hobbyist and commercial world alike.

The chip is a processor with integrated RAM, some ROM, and a WiFi radio, and the only external components you will need are 4 capacitors, a crystal and an external flash! It’s CHEAP, like $4/ea cheap! Or $5 if you want it on a nice, convenient carrier board that includes all these components. The power consumption is reasonable (~200mA)1, the range is insane ~300m2 without directional equipment, and a PCB trace antenna and ~4km if you want to be ridiculous.

One place thing that more people need to know about is how to program directly for this chip. Too many times projects use it as a crutch via the AT commands. Read on and find out how to hello world with just this chip.

Continue reading “How to Directly Program an Inexpensive ESP8266 WiFi Module”

Solar Charge Controller Improves Efficiency of Solar Panels

The simplest and easiest way to charge a battery with a solar panel is to connect the panel directly to the battery. Assuming the panel has a diode to prevent energy from flowing through it from the battery when there’s no sunlight. This is fairly common but not very efficient. [Debasish Dutta] has built a charge controller that addresses the inefficiencies of such a system though, and was able to implement maximum power point tracking using an Arduino.

Maximum power point tracking (MPPT) is a method that uses PWM and a special DC-DC converter to match the impedance of the solar panel to the battery. This means that more energy can be harvested from the panel than would otherwise be available. The circuit is placed in between the panel and the battery and regulates the output voltage of the panel so it matches the voltage on the battery more closely. [Debasish] reports that an efficiency gain of 30-40% can be made with this particular design.

This device has a few bells and whistles as well, including the ability to log data over WiFi, an LCD display to report the status of the panel, battery, and controller, and can charge USB devices. This would be a great addition to any solar installation, especially if you’ve built one into your truck.

This is [Debasish]’s second entry to The Hackaday Prize. We covered his first one a few days ago. That means only one thing: start a project and start documenting it on

Controlling Central Heating Via Wi-Fi

If you’ve ever lived in a building with manually controlled central heating, you’ll probably understand [Martin]’s motivation for this hack. These heating systems often have old fashioned valves to control the radiator. No Nest support, no thermostat, just a knob you turn.

To solve this problem, [Martin] built a Wi-Fi enabled thermostat. This impressive build brings together a custom PCB based on the ESP8266 Wi-Fi microcontroller and a mobile-friendly web UI based on the Open Thermostat Scheduler. The project’s web server is fully self-contained on the ESP8266.

To replace that manual value, [Martin] used a thermoelectric actuator from a Swiss company called HERZ. This is driven by a relay, which is controlled by the ESP8266 microcontroller. Based on the schedule and the measured temperature, the actuator lets fluid flow through the radiator and heat the room.

As a bonus, the device supports NTP for getting the time, MQTT for publishing real-time data, and ThingSpeak for logging and graphing historic data. The source code and design files are available under a Creative Commons license.

File Sharing In Your Pocket

The idea of a pirate box is pretty simple. All you need is a tiny Linux system with a WiFi adapter, a bit of storage space, and the software that will allow anyone to upload a few files to the server and an interface that will let anyone on the network download those files. In practice, though, a pirate box is a mess of wires and power adapters – not the pocketable device a WiFi file sharing box should be.

[Chris] came up with a much smaller file sharing beacon. It’s not based on a router; instead, [Chris]’ build uses an ez Share WiFi microSD adapter. It’s a device meant to push pics taken by a digital camera up to the Internet, but by configuring the software just so, up to five users can connect to the adapter and pull files down from a microSD card. The build only requires putting power to the correct pins. A LiPo battery and charge controller takes care of this problem.

There are a few shortcomings to this project – [Chris] doesn’t know how to upload files to the device. Maybe someone sufficiently clever can figure out how to make that work. Still, if you’re ever in a situation where you’d like to share some files with people in the same building, this is the device you need.

Thanks [Jake] for the tip.

Wearable WiFi Finder Uses the ESP8266

It seems like a day doesn’t go by without an ESP8266 project here on Hackaday. There’s a good reason for that, the chip and associated modules have brought low-cost WiFi connectivity to the masses. Today we have [Stevica Kuharski], who has built an open WiFi access point detector using the ESP8266. To do this he’s using the Lua compatible NodeMcu firwmare. [Stevica] wrote his own Lua scripts to run on the ESP8266’s internal 32 bit microcontroller. The freewifi script scans and searches for open WiFi networks. If a network is detected, the user is informed via a blinking LED.

To make the project wearable, [Stevica] powered the project with a pair of CR2450 coin cell batteries. The ESP8266 is not known for being a particularly low power device, so we’re curious to see what sort of battery life  [Stevica] gets with his project. The project source is already available on GitHub, and [Stevica] is hoping to kick off an Indiegogo campaign in the next few weeks. Click past the break to see the WiFi detector in action.

Continue reading “Wearable WiFi Finder Uses the ESP8266″