Hello to all my smoke-eating Maker friends. O’l Sopwith has a story to tell. In my February 1st post, I posted the pure Python source code and updated the implementation documentation for the ever-so-popular AM2315 temperature sensor.
I did this after receiving an Email from a fellow Maker who wanted to know why my sample AM2315 code did not work with Python3. The day after I published that blog entry, a comment was posted stating they could not get their sensor working. The AM2315 was visible in the i2cdetect test, but it would not return any data. The Python code crashed and burned.
About a week of communicating back-and-forth to troubleshoot the problem, this is what we did:
- Turned on Debug mode in the python script
- Made sure the device was wired correctly
- Made sure the correct software was installed
- Disconnected all other devices from the Pi
- Ran the SwitchDoc Labs test script (same stack trace)
- Ensured the Pi had a 2.0 amp power supply
About the same time this was going on, the mate who asked about the Python3 port downloaded and tested the new code. He could not get it to work either. Thinking he had a bad sensor, he set up a test harness and tested his sensor on an Arduino. It worked fine. After some fiddling around, he determined the MAXREADATTEMPT = 3 on line 23 was too small a value. He changed it to 10, and his sensor worked fine.
After more than 5 years, I still get an occasional Email from Makers who ask questions about the Aosong AM2315 temperature/humidity sensor. I got one this week asking why my AM2315 python code did not work with Python3.
This nudged me to take a look at my code and figure out what it would take to get it to work with Python3. Next thing you know, I decided to remove the underlying dependency on any C code libraries and ensure my sample Python code works in both Python2.7 and Python3 without modifications.
To do this, I rely on two Python modules. The first is the great code written by our friends over at Adafruit. They have created a Rapsberry Pi GPIO code module written in pure Python. The second module is from the innovative folks over at SwitchDoc Labs.
I have updated the AM2315 Implementation Guide with the new changes. I also modified the SwitchDoc code so that it will work with Python3.
Now it is time for a rant. If you are a Python programmer, it is time for you to get serious about Python3 if you are still clinging to your Python2.7 worldview. All new code you write should be written in Python3. Python2.7 has an End Of Life date on January 1, 2020. There is a lot of 2.7 code out there that will work in Python3 with just a few changes. In fact, the only changes I made to get the SwitchDoc code to work was putting parenthesis around the print statements. EOR. (End of Rant)
You can download the updated implementation document with a code sample here. Thanks to Adafruit and SwitchDoc Labs for being a part of the Open Source community.
In Part-1 of this hacking series, I set the stage for an adventure in home automation hacking. My goal is to start small, grow a system over time, and share the experience.
To follow along on my openHAB adventure, instead of creating an enormous blog entry, I decided to document it in a PDF ‘How-To’ document. I have found these types of documents are highly valuable to those folks that are new to the Raspberry Pi and Linux, and/or those who have little programming experience. Download the PDF and configuration files below:
Here in Part-II, we explore my adventures with openHAB.
To learn more about openHAB, read Part-I of this series or head over to their web site. I started knowing nothing about openHAB, so I spent a lot if time in the documentation. Next, I burned an image of openHABian and fired it up on a Raspberry Pi 3.
In a couple of weeks of study and hacking, I have a working home automation system that is quite cool. Below is a view of my openHAB system as seen in a browser.
In Part-I and Part-II of this blog series, I assembled the terrific NatureBytes Camera Kit and mounted it on a tripod. I had to wait for parts to arrive before I could add night-vision to the kit. This blog post shows how I modified the camera kit so it can see in the dark.
The goal was to somehow mount and power the LISIPAROI IR light board while still maintaining the weather-proof integrity of the NatureBytes camera kit. The night-vision hack turned out to be pretty simple.
I found a small plastic box with a latching lid in the office supply aisle at a local Wal-Mart. It was designed to store paper clips on a desk, but Ol’ Sopwith had other ideas. The box was the perfect size to install a battery pack, trigger wire and IR light board. Continue reading
In Part-I of this series, I introduced the NatureBytes KickStarter project and finally got around to building the kit I ordered in 2015. I want to hack it so I can capture photos/ videos at night. I need to identify what nocturnal animals are exploring my yard overnight.
The Camera Kit is simply – Fantastic! Details of the kit and the build instructions can be found here. The first thing that struck me was the quality of the bright green case. This thing is an engineering marvel.
On June 24, 2015, a NGO named NatureBytes began a KickStarter campaign to raise money for a wildlife camera kit based on the Raspberry PI. Based in Berkshire UK, west of London, this conservation group set out to encourage kids to get off the couch and explore nature.
Within a month, the campaign raised £34,164 from 303 backers. This was 108% over the goal of £28,995. At that time, Ol’ Sopwith was living in London and was one of 50 backers who pledged £85.
It was expected the kits would ship in December of 2015, but there were delays caused by the complicated molding process used in creating the cases. I followed the updates closely because I felt their pain. Anybody who has ever been involved in the injection molding process of plastics knows how difficult this can be.
As promised, I have updated the AM2315 temperature sensor “How-To” document for modern times. The changes include:
- The removal of the obsolete quickwire library that caused so much pain.
- Removing quickwire also removed the dependency on Python3.
- Added the very capable i2c library tentacle-pi written by lexruee.
- Use of the Raspian Switch OS means these instructions work on any Pi.
- Streamlined 6-Step process.
I have tested the new procedures on every Pi that I have in the drawer. This includes a Pi v1, v2, vA+, v3, and the Pi Zero. Yup – they all work using the same software and the same pinout. Sweet!
You can download the new document and test script here.
For all of you that have contacted me in the last couple of months trying to get your sensor working, I apologize for the delay in getting this document updated.
Hello fellow smoke-breathers. Sorry about the very long absence from my blogging duties. I intend to be more active now that I no longer travel so much.
Over the last several months I have received some Emails telling me the AM2315 temperature sensor code I wrote long ago no longer works. There are a lot of reasons for this. First, the Google code repository has been taken down and folks are having trouble finding the quick2wire code libraries. They are now posted here.
Second, there were some hardware changes made to the Pi-3 and Pi Zero that broke the sensor detection code in my AM2315.py script. Finally, the use of the quickwire code is difficult due to its size and complexity. There are better i2c code libraries available now.
Since the AM2315 is still a popular hacking sensor, I will plug in an alternative i2c library, test the code on the latest Pi’s, and update the ‘How-To’ document.
Standby for the update – ‘ol Sopwith is working on it.
There continues to be great interest in hacking weather sensors on the Pi. A while ago I wrote a ‘How-To‘ for the AOSONG AM2315 temperature/humidity sensor that was quite popular. Today I have released another ‘How-To‘ for the AM2315’s siblings – the AM2302, DHT11, and DHT22 sensors.
I have found that experienced Pi/Linux users can get these sensors up and running in a very short time. For many hackers new to the Pi and or Linux, it is a challenging learning process, sometimes even intimidating. Sopwith’s ‘How-To‘ series are guides designed to help these folks succeed in their Pi project.
Each ‘How-To‘ includes screen shots for nearly every step of a project. Although this takes some work and makes the documents longer, I have found it is these images that help Pi enthusiasts understand each implementation step.
You can download the ‘How-To‘ below. The Zip file also contains the modified test Python script described in the document.
Post a comment if the ‘How-To‘ Series helps you with your projects. Improvements, edits, bug reports, and requests for other ‘How-To‘ topics are most welcome.
There is a kid out there who would love to help you hack your Pi.
In Part-2 of this blog post series I provided a detailed ‘How-To’ for new users of the ByVac BV4618 LCD for their Arduino projects. It is clear to me there are plenty of Arduino hobbyists who want to hack LCD’s and need a simple way to wire them up and write to them.
The ByVac BV4618 LCD is a great choice. You can actually get it up and running with three wires – V+, Gnd, and Tx. Writing text to the display is pretty straightforward using the BV4618_S library. The library is useful, but Ol’ Sopwith does not think the class is easy enough to use for beginners.
To solve this problem I extended the BV4618_S class library and created a new class named sop4618_S. The class is brain-dead simple to use and it hides all the complexities of the VT100 code sequences.