RoadTest: Adafruit Feather HUZZAH Dev Bd
Evaluation Type: Development Boards & Tools
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: Arduino Pro Mini
What were the biggest problems encountered?: Serial terminal access to NodeMCU LUA
Reviewed the great little Adafruit Feather Huzzah board. This board comes with an ESP8266 wifi header solder onto it – so you can quickly jump into your own IOT project! This board runs on 3.3V logic, but you can power it over USB or with a lithium polymer batter, and the board takes care of the voltage regulation. As you can see in the pinout diagram below, there are many features that make this very similar to most other Arduino type microcontrollers. This device is most similar in form factor to the Arduino Pro Mini series. Another interesting feature, this controller has a charging circuit, so you can use it to charge your lipo battery.
The package I received is very minimal and clean, very little packaging. Just the board and its headers. I love this - This is something you could probably deliver in an envelope. Small device and small packaging size decreasing shipping costs.
The device itself is tiny, clean, and looks great. All the PCB silk screening is clean and legible. Nothing appears visibly damaged.
I soldered the board up and jumped into it!
Adafruit is great with online tutorials and support, and this device is no exception. The packaging gives you a short link to get started online.
This brings you to a product page where you can quickly find a great tutorial guide to get started with the device. https://www.adafruit.com/product/2821
You can also find the entire guide in a PDF here. https://cdn-learn.adafruit.com/downloads/pdf/adafruit-feather-huzzah-esp8266.pdf?timestamp=1597789491
Note there is a mention of some CP2104 drivers that you are supposed to get, because they allow improved USB connection to the device. I didn’t find that I needed them, but the link is here. https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
I’m mostly familiar with Arduino based programming, so I was interested to learn about the direct serial connection into this controller. Luckily, the Adafruit guide can get you started in a pinch: https://learn.adafruit.com/adafruit-feather-huzzah-esp8266/using-nodemcu-lua
While I was able to access the device with PuTTY, I ran into many issues when I tried to send commands. After lots of head scratching, I found that Tera Term works for me.
The tutorial gave me a great first impression of the power of this terminal. I access the device directly without compiling code, I could configure wifi, and I access the GPIO to turn a light on and off. The possibilities of this are rather exciting. I could use this feature to quickly connect a sensor and check sensor values, without creating an Arduino sketch, saving, and uploading. One thing I really didn’t like about this interface (but this might be Tera Term specific) is that I could not access a history of my previous commands. That meant that every ham-handed typo had to be infuriatingly re-typed.
On the Arduino sketch side, I tested some basic scripts, and had no issue making the device blink and read sensor data. The included example sketches to connect to WiFi also work well and do a great job at explaining the interface and commands.
The next step in using this device is to capitalize on the online connectivity of this device. One thing that has irked me for several years was the relative difficulty in getting a device connected online and logging data that you access remotely. I remember when I used the Arduino Yun that there were only select websites that provided free MQTT access to put your devices online. I guess other people more time and resources could probably spin up a server on their home network and receive the data there…
Adafruit’s guide unfortunately did not clear the clouds on this issue, and yet they have a great solution available. After browsing on the internet I heard about Adafruit IO, which does allow devices to freely connect to the net, and better yet, allows you to spin up pretty dashboards to view the data! You can learn more here: https://learn.adafruit.com/iot-temperature-logger-with-arduino-and-adafruit-io/adafruit-io-setup
The first idea I wanted to try was a quick proto on a biomedical wearable. I decided to capture accelerometer data from an IMU and log it to an online platform. The motivation here would be for a biomed researching like myself to log raw data to an online platform where I could later download it for offline signal processing. More intelligently, this server could also be used for online signal processing and detecting of user activities, and even allow detection of a critical incident like a fall. Since the device is connected to an online platform, an emergency alert could then be easily created. The hardware setup for this project’s prototype was relatively simple.
I strapped the device to my arm with the one foam band I had near by. In the future I would put this inside a 3D printed enclosure and fix it to the outside of the wrist.
The Adafruit IO guide (https://learn.adafruit.com/iot-temperature-logger-with-arduino-and-adafruit-io/adafruit-io-setup) gives you a quick guide on making an account and the required calls in your Adruino sketch that will transmit your sensor data to the Adafruit IO platform. Begin by creating your feed. The free account lets you create 10 free feeds. Each feed is a single variable. To read 2 different axes from my accelerometer, I had to use up 2 of my 10 feeds. I don’t think you can easily jam your data into a single custom packet – I don’t think there was much interface in Adafruit IO for coding and parsing your own packets.
Next step: Create your Dashboard. In each dashboard, you then create a visual Block for each piece of Feed data that you want to view. You can learn more here: https://learn.adafruit.com/adafruit-io-basics-feeds, https://learn.adafruit.com/adafruit-io-basics-dashboards
Create a new Block
Select the Feed that you want to view
You can then configure how many data points will appear in your rolling window, and define y axis limits and labels.
With this arm monitor, I initially tried to get an AHRS algorithm running on the Feather so that I could report quaternion or Euler angle orientation instead of accelerometer data. I had success in calibrating the magnetometer and saving calibration data to EEPROM, but I ended up not being able to properly initialize my IMU with the AHRS script, so I fell back to just reading from the accelerometer for this iteration.
In the image below, you can see the rhythmic data in the x and z axis accelerometer as I move my arm up and down. This looks great and functions well as a quick setup, free online visualizer of sensor data.
Note however that the free Adafruit IO account is limited to 30 packets a minute. So this is not really designed for high frequency data logging. Even the paid membership only allows you 60 packets a minute!
The second project I tried was a simple weather station that logged to Adafruit IO. This makes much more responsible use of Adafruit IO’s usage limits. For this experiment, I just used the thermometer in the LSMDS0 IMU, and put the device outside on my balcony.
The repeated refreshing of the web browser showed me how smoothly laid out the dashboard is. It looks good! The data below shows me setting up the sensor inside, where the temperature was higher. The temperature starts to drop down steadily when I brought the device outside around 7pm. The temperature spiked up after 830pm because I put the device inside a plastic takeaway container, to ensure that it didn’t get exposed to any potential rain overnight. You see the temperature fluctuates less after the Feather is in a container. This leads me to believe the previous temperature fluctuations between 7pm and 830pm were at least partially due to the wind on my balcony. After the Feather is in a box, the temperature stabilizes significantly.
I powered the Feather with a random 10-year old power bank, and the Feather is still running after 24 hours. Also note that this IMU’s thermometer very likely has a significant measurement bias of several degrees.
I then left the device powered overnight. The following temperature profile really fascinated me. Here is my take on the situation on this calorimetric situation.
I really like this device. It’s a compact, fun little thing that can get you on the internet in minutes. I also like that you can buy an assembled version – not all of us have solder irons!
If you have a teenager or young adult who wants to make an IOT project, I definitely recommend this over the Arduino Pro Mini. Adafruit has a history of great tutorials and support material. This is essential to helping young people make great projects, and preventing frustrating roadblocks.
This would likely have even become my go-to proto device in my Master's research lab. I don't need something smaller like a Pro Mini for the disadvantages it brings. If I really want to optimize volume and weight, I'm going to do that in the next proto stage, when I make a PCB.
I really like the price point and strategy of this device. This device currently costs $17 on Adafruit’s website.
A similar device to the Feather for a mini IOT type project would be the Arduino Pro Mini, similar in size (the main unit is actually lighter). However, the price point is higher ($32 with the UART programmer), and assembly is notably more involved. Also, soldering on a WiFi shield results in a prototype device that occupies significantly more volume than the Feather Huzzah.
In the battle between a 6 gram Feather Huzzah and a 1 gram Pro Mini, the real differentiator for a miniature proto is likely going to be the volume of the two units (unless you’re tagging seabirds), and in this category, the Feather definitely comes out on top.
For any amateur like me, the Feather Huzzah would be a go-to choice for an IOT project, because I don’t want to be bothered with soldering on a wifi unit and a lipo connector. The onboard wifi chip and ready-to-go JST connector would definitely make up my mind in picking the Feather, because I know I can more quickly build a smaller device with less wires in my early stage proto. When I want to get really small, I'll go ahead and make a custom PCB. For a new hacker who wants something they can program in the field, deploy, and read data, I would definitely recommend the feather.
Another homerun from Adafruit!