The GreenSTEM Network is an open source, Arduino-powered urban sensor network developed by a group of civic-minded Philly hackers in collaboration with the Philadelphia Water Department. It collects data from the urban environment (such as sunlight levels and soil moisture), and can be expanded as new sensors are developed.
The primary goal of the GreenSTEM Network is to enhance Science, Technology, Engineering, and Math (STEM) education through data visualizations, student engagement, and opportunities for data analysis and critical thinking. A secondary goal of the GreenSTEM Network is to become a source of environmental data that can be used by city government officials to make better infrastructure and environmental policy decisions.
greenSTEMnetwork, a soil-monitoring kit designed to teach students about STEM, started like many other hackathon projects do. Someone had an idea, pitched it at a hackathon and found a team of developers to work on it.
But instead of fizzling out and losing steam after the hackathon ended, like most projects do, the team continued to work on greenSTEM for a year and a half, up until it was ready to ship. Matthew Fritch, the Water Department environmental engineer who originally presented the idea at the February 2013 TechCamp hackathon, which, full disclosure, Technical.ly Philly organized with the U.S. State Department and dev firm Jarvus, plans to install the kits at four public schools next week.
So what made greenSTEM different?
Students at four Philadelphia public schools will be using hardware to tend to their rain gardens. They’ll also learn how to build, program and maintain the hardware.
GreenSTEM made the cover of this week’s CityPaper:
For more than a year, Fritch has been developing a soil-monitoring kit with a volunteer group of civic hackers. In a few weeks, the first batch of greenSTEM Network devices will be introduced to four public schools – Nebinger, Greenfield, Cook-Wissahickon and the Science Leadership Academy’s Beeber campus – and he’s doing a few last-minute tests on something he essentially built from scratch.
GreenSTEM Network connects youth to the environment by giving students in Philadelphia-area schools the ability to monitor data from gardens, green roofs, and various types of green stormwater infrastructure.
Well, more accurately, we received the 2nd place award at the AT&T Edutech Hackathon event last week. Our project was in awesome form - we had the completed prototype hardware (complete with metal-and-plastic sunflower!) and a bucket of dirt. And during the presentation, we pour some water in it, and lo-and-behold, the data was being updated in realtime on the website!
Live demoing like a boss (a group of bosses, really).
Our project is looking good. Now we're moving into the next phase of Solar Sunflower improvements, the "would-be-nice" stuff that will really make it shine.
This includes: 1. SD Card for logging the data in case the network goes down 2. Additional sensors, including temperature, sunlight, etc. 3. Connecting to data sources for context (such as USGS stuff) using our server 4. Sprucing up the user interface on the student/teacher side to make understanding the data easier!
So Matt and I (Chris) worked on Solar Sunflower Saturday as a part of the AT&T EduTech Hackathon!
I was a little frustrated walking in, because I was reconstructing code that we'd lost after a computer-related accident. But Kevin and his eidetic memory saved the day, and we were able to remake the code and get our Arduino talking to the Ruby server!
This being the first time I'd ever worked with Ruby code (literally ever), I had to do a little bit of learning to get the whole thing working. Luckily, experience with Django helped quite a bit and it didn't take too much time.
There WERE 3 hours of trying to figure out problems that ultimately stemmed from our network connection. The Arduino couldn't register for Temple's guest network, so I was using Brian James Kirk's iPhone to tether (thanks Brian!) - unfortunately, something strange was going on and connections were being filtered for no reason. Once I switched to my phone for tethering it worked great!
Matt was working on getting our storage system up on another Arduino shield that he soldered himself! He also did the polish for the presentation, which we ended up ditching in favor of a live demo (we are brave, or stupid, or both).
I was also able to successfully get REAL values posted to the Ruby server, as opposed to the dummy data we were using. Coding for an Arduino (in Processing) is an interesting exercise in programming paradigms I'm less familiar with. Strong typing, for instance (I know Python is technically strongly typed, but the workarounds are so easy as to be practically intuitive).
At any rate - our team is one of five that were selected to be finalists for the $5,000 prize! We'll be presenting at an event during Philly Tech Week, by which time we hope to have the website polished, the waterproof housing complete, and an exposed API for the students to use!
Tonight's another night of Arduino hacking! As of last time, we're at a point where our Arduino is communicating with our Rails app (although they don't understand one another just yet).
So this evening we're going to be working on getting them talking the same language. In addition, I want to put out an open invitation to anyone who might be interested in this project in particular or Arduino in general to come by and check us out! I'll be bringing my Arduino for someone else to try, so if you have a laptop, I can even get you set up to start experimenting with Arduino code yourself!
Some of our goals for this evening include: -Getting communication with the Rails server working -Passing actual collected data from the moisture sensors to the server (right now we're just using dummy data to get it to work) -POSSIBLY integrating data storage code for an SD card on the Arduino, so that we'll have a backup in case the network goes down -POSSIBLY beginning design and architecture of a simple queuing system so that data that is NOT sent for whatever reason IS sent when communication is restored.
Well, last night was our second meetup at Drexel's ExCITe center. Matt, Amir, Jason, and I worked on the project for a couple of hours and we made real progress!
As of last night, our Arduino has been upgraded from a kind-of-finicky Ethernet shield to a much more easygoing WiFi shield. We were able to connect to the ExCITe WiFi network without a problem! So we spent the meetup tweaking our Rails server app and integrating our existing Arduino code with the new hardware.
After a bit of trouble, we got the Arduino talking with the Rail app! Right now we're still working on constructing a proper POST request via the Arduino (and passing the JSON-packaged sensor data along with it) but a dialog has been opened!
This next meetup, we're going to: 1. Continue our Rails work 2. Figure out how to send the POST request 3. Start working on passing the actual sensor values to the POST request
We've got the basics of the server-side application and the database running! In addition, our Arduino communicates with the sensors and packages the data it finds in JSON format. Right now we're continuing work on the server-side and writing code to connect the Arduino to the internet.