May 21

Power supply measurements

Most electronic projects operate on low voltage direct current. This is often provided by a USB connection or a battery. There are several possibilities to power a project from the 120 Vac power line. A common way is to use a wall adapter (wall wart) and feed low voltage direct current to your project through a power connector. A good feature of this approach is that the project enclosure is smaller because it does not need to house a power supply.

If you have a project that controls line power, like a Wi-Fi controlled receptacle, it is more convenient to incorporate the power supply in the project enclosure so that you do not need to connect to both the power line and a wall adapter. The solution is to include the guts of a wall adapter into the project enclosure.

Rather than taking apart a wall adapter, you can buy a phone charger kit from eBay vendors. Try searching for “diy training phone charger kit”.

According to the eBay listings, the specification is 5 Vdc at 350 mA to 500 mA with an input of 100-220 V 50//60Hz 0.3 A. This should be adequate for many Arduino and ESP8266 projects. Sadly, the supply can barely meet 170 mA.

Next step is to modify the circuit to see if the output can be raised. Short out R7 and play around with R2, R3, and C2.

Permanent link to this article:

Apr 16

ThingSpeak Addins

Here is a selection of MATLAB Visualizations

ThingSpeak Addins


Permanent link to this article:

Apr 04

HacDC/W3HAC Meeting Presentation Announcement – April 12, 2017 at 7:30 pm

Some of our members recently purchased a solar powered, Arduino programmable, weather station kit from Karl, W4KRL at the Winterfest in Annandale, VA. Due to the popularity of this kit, I invited Karl to come to our next club meeting to give a presentation all about its development, how the station works, etc. Karl has graciously accepted the invitation.

You may be surprised to learn that this is a new venture for Karl. For most of his career, as an electrical engineer, he designed large power electronics converters for rapid transit car propulsion systems. The Arduino project is the crossover between these two ventures. Planned areas of discussion include a presentation that focuses on the origin of the development of the kit, the challenge of designing a circuit board, and some of the unique technical issues involved with the design of this project.

Because of the content of this meeting, this should be of interest to not just the members of the HacDC Amateur Radio Club, but also to the general “Hackerspace”, “builder” and “maker” communities as well. All are invited and encouraged to attend.

As is the case with all of our events, there is no cost to attend. We look forward to seeing you at the meeting.

Posted on by jeff dahn

Permanent link to this article:

Apr 02

Di Mini (ESP8266) Wi-Fi Status Codes

The ESP8266 using the Arduino Core reports Wi-Fi status with the WiFi.status() function. The D1M-WX1 Weather Station attempts to connect to Wi-Fi every 250 milliseconds until the “Connect” status is found. If this does not happen after 15 attempts, it prints the status to the Serial Monitor.

Normally, the LED on the ESP8266 flashes five or six times until the connection is made. The LED will be dark during the six or seven seconds it takes to post the weather data on the Internet.  It will flash three times before the station goes to sleep for 10 minutes. The code is in the logonToRouter() function of the weather station sketches.

If a Wi-Fi connection can not be made, the LED will flash 16 times and the exit code will appear on the Serial Monitor. The status codes are:

0 = Idle Status – WiFi.begin() is called and remains active until the number of attempts expires (resulting in CONNECT_FAILED) or a connection is established (resulting in CONNECTED)

1 = No SSID Available – Unit is too far from the Wi-Fi access point, the SSID and/or password is incorrect, or the SSID is for a 5GHz-band access point.

2 = Scan Completed – Scanning for available networks is completed.

3 = Connected – Success.

4 = Connection Failed – The opposite of success.

5 = Connection Lost

6 = Disconnected

255 = No Shield – Used for compatibility with the Arduino WiFi Shield – not relevant to the ESP8266.


Permanent link to this article:

Mar 31

D1M-WX1 Instruction Manual Updated 31 March 2017

Version 1.3 of the instruction manual is now available in the D1M-WX1 project area.

  • It clarifies instructions for installing the ESP8266 core in the Arduino IDE.
  • Adds note to use the D1 Mini USB port, not the TP4056 port for programming.
  • Adds links to YouTube videos.
  • Updates the link to the Weather Station firmware and removes github as the source.
  • Adds note to use only 2.4GHz Wi-Fi networks. 5GHz networks will not work.
  • Corrects the format of units: 4.2 V DC rather than 4.2Vdc according to IEEE standards.

D1M-WX1 Assembly Manual v1.3 – March 31, 2017

Permanent link to this article:

Mar 31

Use 2.4GHz Wi-Fi for weather station

The weather station kit and other Wi-Fi-based projects use the ESP8266 system on a chip. This chip supports 2.4GHz Wi-Fi but not 5GHz. If your Wi-Fi works on both bands you probably have two SSIDs. The 5GHz band SSID often ends in 5G like this – “BlackCat-5G”. When you set up the config.h file for the D1M-WX1 weather station make sure you choose the SSID for the 2.4GHz band.

Permanent link to this article:

Mar 21

Suggested list of tools

Our first kit, the D1M-WX1 Solar Powered Weather Station, is very easy to build because it uses only “through hole” components. Although the breakout or daughter boards mounted to the printed circuit board do contain surface mount devices (SMDs), they are all pre-soldered. Only a few basic electronic shop tools are needed to assemble the kit. You probably have all the suggested tools if you have built kits before. For the new kit builder, this list is a good place to start acquiring the tools you will be using time and again when you build more kits. See the list at Tools Needed on the D1M-WX1 projects page.

Permanent link to this article:

Dec 11

Sleep Mode for the Wemos D1 Mini

The key to using solar power in an Internet of Things project is to put the microcontroller unit into sleep modeafter the sensors are read and the data posted to your IoT server. The NodeMCU and the Wemos D1 WiFi, a larger profile that mimics the Arduino UNO form, reliably woke from deep sleep. So far, the Adafruit HUZZAH fails to wake after 20 or 30 sleep cycles. I’m still working on the HUZZAH but the letter carrier just brought a package with three Wemos D1 Mini ESP8266 devkits and an OLED display shield.

Would the D1 Mini also work well with deep sleep? Answering that question had to wait until I checked out the OLED display.

The D1 Mini devkits are supplied with both male and female headers. You must install the female headers if you want to use the OLED shield as a plug-in unit. Make sure you install the headers on the correct side so that the shields will stack with correct connections.

Both Adafruit and Sparkfun have Arduino libraries for this display. The Sparkfun library loaded easily and the examples brought up bright, clear images.

The next step was to make a DIY shield to mount BMP180 and HT21D sensors. The BMP180 measures atmospheric pressure and temperature. The HTU21D measures temperature and humidity. [I will post some photos in a week.] It makes a nice compact little cube with the sensor shield stacked between the D1 Mini and the OLED.

Having proven the OLED display, I removed it and set about to put the D1 Mini and sensor shield into deep sleep. There were some problems doing this. When the ESP8266 wakes up, it needs to be reset to restart execution of the firmware. The ESP8266 provides a signal on pin D0 to do this so D0 must be connected to the Reset pin. However, this connection sometimes interferes with putting the ESP8288 into programming mode and must be opened to reprogram the chip.

I also ran into some problems when power was removed while the chip was in deep sleep.

After getting the chip to sleep and wake up I ran some current tests. The D1 Mini drew an average of 80mA when awake and 2.4mA when asleep. The D1 Mini has a small red LED that lights when the board is powered. I pulled the LED off the board with a pair of pliers. That dropped the sleep current down to 70µA.  This makes the D1 Mini look like a very good choice for solar powered IoT projects.






Permanent link to this article:

Dec 06

External sensors for weather station

Recently the local Institute of Electrical and Electronic Engineers (IEEE) held two “hands on” sessions to build an Internet of Things (IoT) weather station. We built it on a breadboard so that the attendees would not have to solder wires. Several of the participants have kept their stations on-line and two have placed the unit outdoors.

Finding a suitable outdoor enclosure for the sensors is difficult. There are several available for relatively large sensors with costs from $30 to hundreds. Fortunately, a scrounging mission to Walmart turned up a nice little box for 88¢!

The box is 88 x 60 x 50mm (3.25 x 2.38 x 2.00-in). The box is transparent and has a lid the fits over the sides of the box. There is some play between the lid and the box so it allows some air movement. This can be “enhanced” by drilling four 6mm (1/4-inch) holes in the bottom of the box.

The box neatly holds a BME280 barometric pressure/temperature/humidity sensor and a BH1750 light intensity sensor. A piece of stripboard mounts the sensor breakout boards. Since the sensors are I2C devices they need four wires (two I2C and 2 power) to connect to the “control unit”. I cut the ends off a flat USB cable from the dollar store. It requires a lot of careful patience to solder the very small wires to the stripboard. I am looking for a better method.

My box is mounted to a second-floor window frame with clear packing tape. The window is above a small shingled roof. This is not an ideal location because solar heating of the roof probably affects the temperature reading. In practice, the temperature accurately tracks the local WeatherBug station reading.

The unit has been outside since 10 November 2016. It has been through several rain storms with no problems.

Permanent link to this article:

Nov 24

Solar Power Supply

A solar power supply would be a really neat addition to any Internet of Things project. The ultimate goal would be to have a self-sufficient IoT device that could be remotely reprogrammed with the Other The Air (OTA) feature.

A key to using solar power is to reduce the average power requirement of the IoT device. The ESP8266 can be put in several levels of sleep but dev kits (development kits) like the NodeMCU have other power hungry support devices that swamp out the ESP8266 power draw. The two main consumers are the voltage regulator and the USB converter chip. In deep sleep mode, the ESP8266 draws about 70μA while the total draw of the NodeMCU is about 15mA. Several people have “fixed” this issue by removing the regulator and cutting traces to the USB chip. Removing the regulator is easy, cutting traces on the USB is difficult. It was even more difficult in my case because the particular NodeMCU I was attempting to modify uses the CH340G chip rather than the CP2102. Theoretically, the same process of lifting the Vcc connection should work. For the CH340G, this is pin 16, however, I found there is no direct connection between pin 16 and 3.3V. Not having a schematic, I decided to look for other options.

I had hoped that the Adafruit HUZZAH is a good choice for sleep mode experiments. After days of experimentation, the HUZZAH fails to wake after about 20 or 30 sleep cycles. Others have experienced the same problem and offered solutions. To date, none have worked for me.

Using the exact same software, the Wemos D1 WiFi has worked perfectly. Unfortunately, the D1 has similar parasitic loads like the NodeMCU so is not a good choice for a solar powered project. Since the same software fails on the HUZZAH there must be some hardware solution. I drew up the circuits for both dev kits with the objective of building the same circuit around the HUZZAH using external components.

Since the same software that works on the D1 fails on the HUZZAH, there must be some hardware problem. I drew up the circuits for both dev kits with the objective of building the same circuit around the HUZZAH using external components.

Schematic comparison of Wemos D1 WiFi and the Adafruit HUZZAH.

The suspiciously missing components from the D1 are circled in orange. The most significant are:

  • C11 – a 100nF capacitor from the Reset pin to ground. This value is suggested by Expressif. If probbaly provides some time delay on the wake up pulse. Added this between GND and RST on the HUZZAH.
  • C10 – a 100nF bypass capacitor on Vcc. Probably not too important but easy to add between 3V and GND on the HUZZAH.
  • R13 – a 10K pullup resistor on GPIO0. The HUZZAH has an LED in this line that may introduce too much voltage drop and leave GPIO0 in an indeterminate state. Added a 10K between 3V and #0 on the HUZZAH.
  • The logic circuit of Q1 and Q2 is driven by the DTR and RTS lines from the USB chip to automatically put the ESP8266 into programming mode. I do not think their omission from the HUZZAH is the problem. But I could be wrong!

Sadly, the HUZZAH still fails to come out of deep sleep after about 20 cycles of 120 second sleep duration.


Permanent link to this article: