RoadTest: Pocket Beagle
Author: gpearston
Creation date:
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?: Raspberry Pi Zero, NodeMCU
What were the biggest problems encountered?: Lack of CPU temperature monitoring capability.
Detailed Review:
In preparation for my PocketBeagle arriving I went out and started doing some research on the How’s and Why’s of the PocketBeagle, PB. I was pleasantly surprised at the volume and quality of information about the PB, how it works, how to make it do its tricks and general support. Now I come from the ESP world of small devices but have never worked with any of the Beagle line. So my first step was to go research PocketBeagle and how to get the OS on the thing. Over the years I having used many different Single Board Computers (SBC) but never the BeagleBone line so when given the opportunity to review the PocketBeagle I thought this is perfect. I had recently finished building a weather station that was built on the NodeMCU (ESP8266 based) using MicroPython and thought comparing how it worked on the PB would be a good basis for this review.
There is a lot of information available on the internet for BeagleBone product line. Less for the PocketBeagle but still respectable and very well done. The official website, https://beagleboard.org/pocket, has all the info for the PocketBeagle. Included are the specs and links to the documentation and images (OS). You can go directly to the documentation using this link: https://github.com/beagleboard/pocketbeagle/wiki The user guide on github is very well done and makes a great reference. I used it a lot while doing this review and putting together projects to test the PocketBeagle.
A quick overview of the specs.
The pin outs
Out of Box
Getting started is like most SBC’s: download the OS, burn it to a MicroSD, plug in, power on, log in and update.The PB differs from the ESP and Arduino lines in that the PocketBeagle is running a Linux operating system. That means it can do a lot of things beyond running one program at a time. I am not knocking the ESP or Arduino, they do what they do pretty well and people have made both platforms do some pretty amazing things. The PocketBeagle is capable of doing more because it is running a more robust OS. You can run programs in the background, you can schedule them, you can run multiple programs at the same time. If you know any Linux, you can use that knowledge on the PB, if you know Debian then you will be right at home.
The current OS is Debian 9.5 dated 10-7-2018. You want the IOT version. There are also Alpha and older releases available on the website. A 4GB or larger MicroSD is recommended to hold that image. I strongly recommend a MicroSD of no less than 8GB. The OS will fill 3.5+GB leaving you little room for everything else once you are up and running. You will need to expand the partition to get access to the space beyond the 4GB but that is a very simple and easy process. Googling ‘expanding partition PocketBeagle’ will get you lots of sites with directions. The directions I used can be found at https://elinux.org/Beagleboard:Expanding_File_System_Partition_On_A_microSD
Since it is running Linux you should update the OS. As the PB does not have WiFi or ethernet on board you do the update via the USB tether. You set the default gateway on the PB and share your internet on the host. If you are uncertain how to share your internet you can use:
The PocketBeagle does not come with WiFi or BlueTooth but they can be added by using a WiFi dongle. As mentioned earlier, accessing the Internet is not hard. You tether the PB to your laptop/desktop/SmartPhone and make a quick change to the default gateway and you are off and running. If you want to be unleashed you can easily add WiFi to it.
The choice of WiFi dongle is important and first I tried one I had on hand. That did not go well and consumed more time trying to make it work than I would have liked. In the end I went with the instructions and dongle listed below and got it working with no fuss.https://www.teachmemicro.com/pocketbeagle-wifi/The dongle listed at teachmemicro can be found on Amazon for less than $10 and my experience is that it is a well spent $10. It worked right away and the time savings, not to mention frustration savings, is worth more than that. That is not to say no other dongles would work, I just have not tried them.
First Test
The first real test of the PocketBeagle was porting over a weather station I had made based on the MicroPython that was running on a NodeMCU (ESP8266) SBC. The weather station had sensors for
This data is reported back to a Raspberry Pi via WiFi via MQTT messages. The sensors use a variety of protocols to collect data including i2c, OneWire and PWM and Analog voltage reading.
My goal was not to see if the PocketBeagle could do the job but to see what it took to get it working. The PB has plenty of horsepower and I/O but how well is that I/O and power supported by the community in terms of drivers and how well is it implemented.
The first task was to find MQTT support for the PB. Found it right away. I used the Eclipse Paho MQTT library. By the way, if you are looking for an MQTT solution the Eclipse project is a good starting point. They have clients and brokers for a wide variety of languages. Mosquito is even part of the Eclipse M2M project. The libraries/info can be found at:
https://www.eclipse.org/paho/articles/talkingsmall/
Reading the docs I found I could use PIP to download and install the libraries and thus avoid having to build (make) the libraries, so I did. Worked flawlessly. Gave it a little test run using the m2m.eclipse.com broker and got the desired results. First hurdle crossed.
Next up was i2c support. That too is trivial.
- sudo apt-get install git zip build-essential python-pip python-dev python-smbus
- sudo pip install serbus
I opted to use the Adafruit BME280 library as I had used it in my MicroPython app on the NodeMCU. Adding the Adafruit libraries is straightforward.
git clone https://github.com/adafruit/Adafruit_Python_BME280
At this point I tested reading the BME280. No issues. Second hurdle crossed.
The next step was to add support for OneWire. That is a little more involved as the device driver is excluded from the kernel. Adding it is not difficult. Googling ‘onewire pocketbeagle’ will produce lots of sites with the instructions. The straight forward step-by-step instructions I used can be found here:
http://klaus.ede.hih.au.dk/index.php/BBB_and_OneWire
Testing the DS1280 temperature sensor worked without any issues. Third hurtle crossed.
Now the only thing needed was PWM. I added BeagleBone IO support from Adafruit because it makes configuring the pins for PWM very easy. This library also makes the naming convention similar to using a Pi. For me that was a plus. More info on the use of the library can be found at:
https://pypi.org/project/Adafruit_BBIO/
Adding the library was done via:
git clone git://github.com/adafruit/adafruit-beaglebone-io-python.git
I crossed my fingers and kicked off the program. Things worked like a charm. So now I had ported my weather station to the PocketBeagle and it was time to put it back outside, connect it to the battery and see how it does.
I ran the PockBeagle as a weather station for two weeks and had no issues with it. No missing data. No mysterious reboots. No lock ups. It connects to the WiFi network flawlessly. It sends the MQTT messages without issue. The temperature reads, wind speed/direction are just as I would expect. The rain fall has been tested twice and reported exactly as I would expect. I have had no issues with the PocketBeagle. So I would say the PocketBeagle is a pretty solid SBC.
A note on power. The power requirement for the PocketBeagle is larger than the NodeMCU. That is not a flaw, just a fact. The PB is doing more than the NodeMCU and has far more I/O. Long term I do not think I would use the PB as my weather station as it is very much over kill for that. Works like a champ though. If remote power was not an issue I would have no reservations about using it.
Second Test
The OS taxed the PB more than my weather station even during reads of the sensors or sending the data. The processor puts out some heat, not so much you can not touch it but it is getting close to the point of uncomfortable. There is no straightforward way to get the CPU temp from the OS, that function has been stripped from the kernel. That is likely due to trying to keep the kernel as small as possible. I have not found a way to add the function and I think that is a problem. Monitoring the temp of the PB is critical for any long term project.
Since the weather station barely taxed the PocketBeagle I decided to try something a little more challenging and turned it in to a WiFi hotspot. Configuring it was a fairly straightforward process. Daniel Zoch put together a well done how-to the WiFi Hot Spot for PocketBeagle and can be found at:
https://beagleboard.org/p/daniel-zoch/automated-pocketbeagle-wifi-access-point-057358
I figured the hot spot would add a heavy load to the PocketBeagle, not really the case. HTOP went from sitting at 4% (idle for my system) to 7% with occasional brief spikes. The memory usage increased a little but nothing that would prevent me from doing anything. So I put the weather station back on it and let it be a weather station and hot spot. That took it up another point on htop but still nothing to worry about. I added some additional i2c sensors for power monitoring of the solar panel and battery and did not expect that to have much impact on the PocketBeagle resources and it didn’t. So the PB was still sitting at just above idle.
My Thoughts on the PocketBeagle
The PocketBeagle is a surprisingly powerful SBC and I am now planning on replacing my NodeMCU based greenhouse control system for the PB. I use two NodeMCU’s and still have to manually operate some portions of the greenhouse because of resource limitations. The system does all the environmental data capture and controls the watering and a couple of vents. I want to add water level monitoring for my tanks, fertilizer injection, more zones (sensors). The PB has plenty of IO to do what I want. I can use Python to tie it all together. A project for the winter.I have been pleasantly surprised by the stability of the of PB. I have not had to reset the board in any of my testing, updating, configuring, etc. That is somewhat of a surprise to me as I run in to this issue with the ESP based boards more than I would like.
The look and feel of the board is of a higher quality as well. The PB comes with a higher price tag than say a NodeMCU but you get a lot more resources, it is a Linux based computer and it is solid. One of the first things I look at when I get a new board is how well the finish was done. Is the board clean of all flux residue? Is the mask clean and crisp or is it smeared anywhere? How well are things labeled. I believe you can tell a lot about the engineering, design and production of the board by this. When I opened the package with the PocketBeagle I knew it was a well engineered board with no corners being cut. All of my finding support the PB being a high quality, well engineered SBC.
When I started the review I did not think the PocketBeagle would become my go to SBC. I like the look and feel of the PB as well as its ability to just run. It is reliable. I will be ordering another PB so I can put one in the greenhouse and keep one on the bench. I might even buy the BeagleBone Black to see what it can do. There is a place for my NodeMCU’s but buying another PocketBeagle is the highest recommendation I can give.
Top Comments
Thanks for the review. I have a BBB also. I found and purchase a FPGA cape and plan on using it too.
Nice review. I like that you put the PocketBeagle to work in a real world project, proving the usefulness of the device (even if it was barely loaded). It is nice to see the Beagle product line growing…
Gene - thank you. The Pocket Beagle is a pretty impressive board and I hope they keep working on the line. I like the RPi's too but the Pocket Beagle seems to be a little better done. Could just be…