I will be using the EnviroPhat from Pimoroni to collect data about the solar eclipse on August 21. I was more motivated by the data than putting together my own hardware for this one.
+1 for PiAware. It's just about the easiest project and a good intro to the Pi.
Other things on Pi in my house: OpenVPN server (http://www.pivpn.io/) and Node-RED (https://nodered.org/) for collecting temperature data and pushing to Power BI.
I use my raspberry pi to run home assistant to control my IoT devices. I also have another pi mounted on my 3d printer running octoprint so I can remotely interact with the printer.
Nothing unique really but I have a handful of older ones laying around that used to be purposed as RaspBMC machines. I recently moved everything to Plex with different client devices so I repurposed one Pi to be a print server for my parent's older printer. Another one has been repurposed as an AirPlay client for my outdoor speaker setup using a cheap amp I bought on Prime day.
I also have a newer Pi 3 running Stratux for receiving ADS-B traffic and weather on my iPad while flying.
Aside from Stratux there are definitely cheaper/easier solutions for what I've set up but nothing beats the 'free' hardware collecting dust in the bin.
I used one to build a photobooth for my wedding. The raspberry pi controls a DSLR camera to take 4 photos, stitches them into a 4x6, prints the photo and uploads everything to a Google Photos album which was displayed live on a projector.
The photobooth application was written in Python and I was able to get picasawebsync (https://github.com/leocrawford/picasawebsync) working. Even though the documentation says it's probably no longer working, I can verify that it was working for me as of September 2016 which is after the Picasa deprecation. I had to edit the source a little so that I could call it from my app instead of the command line.
Another challenge was that I couldn't find a good application to display the Google photos album. Nothing I found would display any new photos added to the album after the slideshow had begun while also displaying everything in a continuous loop. I ended up writing a second small Python app also using picasawebsync to periodically sync the photos to a second Raspberry Pi which was hooked up to a projector and display them looped in a random order.
I'm also in the process of building a photobooth. Using the standard Pi Camera module + a Pimoroni Unicorn Hat HD to give people a prompt when the photo is about to be taken. It'll then publish the photos on it's own internal webserver that'll be visible on another Pi for easy emailing / browsing and tweeting! Going to pack it all in an transparent enclosure that looks like the approximate shape of an oversized DSLR.
Nice, that sounds quite a bit more compact than mine. Having really good quality photos for us to keep was the biggest priority so we settled on a DSLR and dedicated flash. Along with the printer, I ended up installing it all into an old speaker cabinet which ended up fitting everything perfectly. I do wish I wasn't living in an apartment at the time and had access to some better tools to build a proper enclosure though.
I looked at some guides for ideas and was hoping to find a ready to go solution but nothing seemed perfect for our use case. Good quality photos for keepsakes was a primary goal so I used this as an excuse to buy a DSLR (which still ended up being cheaper than renting a photobooth for a few hours would have been). I chose to code it up in Python since it seemed like the best candidate with plenty of libraries that could handle what I wanted. I chose a camera based on what devices were supported in gphoto2. Specifically, I chose a camera that supported live preview which allowed our guests to frame their photo better. I answered the question about connecting the camera in another comment but the tl;dr is that it was connected via USB and all communications were through the python app I wrote using the gphoto2 library.
I would be insanely interested in a thorough write-up of this. My mother is getting married in a few months and it would be incredible to build for her and her fiance!
The camera is hooked up to the raspberry pi via USB. I'm using the gphoto2 library in python to communicate with the camera, show a live preview on the attached LCD screen, snap photos and copy the photos onto the raspberry pi after they're taken.
Perfect, keep up the great work.I'm glad to hear of your project.The Alexa and accompanying hardware/software is one of the few non FOSS things I rely on within my home. I can't wait for a viable alternative!
I've done a little reading into making something along these lines using a Pi, Snowboy hotword detection, and one of the cloud APIs.
Two things I'm curious about...
1) What are you using for hardware with the Pi? It seems a high quality microphone is important to this application and the only array microphone I've been able to find is the MATRIX creator which seems steep in price if I could just buy an Amazon Dot.
2) Your numbers indicate significantly better performance than Google. How are you able to achieve that? Where does your training data come from if nothing is supposedly leaving my device?
I really strongly desire a system that wouldn't require relying on the cloud but I just don't know how you can get enough training data to be anywhere near as accurate as a cloud provider. That led me to thinking the next best thing would be a setup with Snowboy hotword detection where I know nothing is leaving my device until my own programmed hotword is spoken.
i used raspberry pi 2 in order to build 2d mapping robot(i installed ROS on top of ubuntu on pi2). i also tried to make it autonomus but lack of some hardware such as motor encoder made it quite hard to accomplish so i did not go for it. See snippets of video diary at https://robot.birkankolcu.com
I have one running a few home automation type tasks (an IP->serial gateway for my whole-house audio, SDR radio to monitor 4 utility meters [only 2 meters are currently reporting data as my 2 water meters are not reporting usage via radio to me or to the utility], and controlling relays for the sprinkler system). Next steps are I plan to create an Alexa skill that will control the whole-house audio and let me "pause" the sprinklers as needed and integrate with weather forecasting to predict near-future rainfall so I can save water/increase plant health if rain is expected.
I'll be honest: it's a lot of fun, but if I lived 100 lifetimes, it would never save me time on balance. ;)
I also use one to run stratux as another poster mentions. That one saved ~$650 vs buying the COTS solution.
Curious about your SDR meter monitoring. Any links or description of how that works? Would love to monitor my electric and water without using the energy company's devices.
I recently used a Pi to replace the game controller on an arcade style basketball game we have in our office (like this: http://imgur.com/a/B7YBq). It's running Android Things and has a couple of fun new game modes, better sound effects, and a whole bunch of LEDs for added awesomeness.
Just yesterday I used an old raspberry pi to make a bluetooth audio receiver that could be integrated with my vintage stereo equipment. You can buy something off the shelf for around $25 but they use cheap digital-to-analog converters and I wanted to use the high quality USB DAC I already had. Total hardware needed was the Pi, powered USB hub, USB DAC, and USB bluetooth adapter.
Did you have to use the USB bluetooth adapter with a Pi 3? I know the 3 has bluetooth but I don't know enough about it to know if I can just connect my phone to it to play music. I want to do something very similar to what you've done so I'm excited to see that somebody else succeeded.
I used the very first version of the Raspberry Pi model B. I bought one when they became available years ago and then never did anything with it. If the Pi 3 comes with a bluetooth chip built-in then you will just need to do some software configuration. There are three servers to configure: bluez, udev, and pulseaudio. I used the following gist as a guide, but didn't follow every step exactly:
Recreating the Sony Aibo robot dog using a pile of cheap servos, 3 axis gyro, the camera, wireless, neopixel lights, LiIon power, etc. Shoulder joints, body shell and chassis 3d printed. Total cost is around $150.
Locomotion is largely based upon the designs documented by Cynthia Brezeal Ferrell (MIT mobile robots lab, under Prof. Rod Brooks) in her PhD thesis for the hexapod robot, Atilla/Hannibal.
The first attempt was using Python which presented two insurmountable problems : 1) raspian OS boot time of 1.5 minutes which is unacceptable for an embedded device and 2) python threading is not sufficient for realtime. I was attempting to make series elastic actuators but the imprecision of the threading (jitter) was leading to wild oscillations... I finally had to accept it was a dead end.
I have started over in Elixir + Nerves which is designed at its core for embedded work. I will admit it is very slow going. Not because of any deficiencies in the language or environment. Quite the contrary -- I get a 10-second cold boot time and superb stability! But rather my mind is the limiting factor here. After three decades of imperative programming, the shift to functional programming is a challenge!
No, this is the first I've spoken of it, really. I've a few notebooks filled with sketches, thoughts, designs, etc. and a pile of prototype joins and brackets littering my workbench. It's actually a very challenging project from an electrical engineering and mechanical engineering standpoint. The Sony team were superstars. I still like the "mutant" prototype the best as it had the most character: https://www.youtube.com/watch?v=gfHape9Y31Q
In the mid 2000s, I had written some code for the Aibo to let it read books aloud.
Flash forward toa couple years ago. My kids saw some video of me with the Aibo Reader project and wanted an Aibo of their own. Unfortunately, the Aibo as a product is dead. The batteries are now dying and irreplaceable (thanks to Sony and their idiotic insistence upon DRM - it's not enough to merely provide electrons, the battery must also know the secret handshake in order for the Aibo to accept it. Maddening!!!) And those few used Aibos that do have working batteries are dying from other issues related to mechanical failure (mostly clutches in the head/neck assy.) yet command a premium price.
So now, my kids still want an Aibo. I got to thinking about how far technology had come in the past 20 years, and started wondering to myself if I could build a facsimile with the RPi. Thus the birth of this little side-project.
Could you share more about your experience with elastic actuators? What did your hardware look like? I'm working on something similar, and would love your input.
Using a flexible servo horn, this allows some degree of deformation when torque is applied. Embed a 1/32" neodymium
magnet in the horn, and a magnetic rotary position sensor in the driven part. As resistance to movement ("torque") increases, the flexible servo horn twists/deflects, angle of difference between the two parts changes and this can be detected by the magnetic sensor.
Picture a torque strain gauge, the way the needle deflects from the centerline of the gauge. This is similar but we're doing so in an radial (edit:removed axial) and not linear sense.
Different amounts of sensitivity are obtained by printing different spoke stiffness on the horn.
Result is a compact, modular torque sensor for about $2 in parts.
Feed the results to a PID look and you have a nice controller that can tell me when a robot leg is bearing a load, or is jammed, etc. This is essential to proper gait. Otherwise your robot is simply an electronic marionette.
One of the big challenges was getting 16 additional 16bit voltage reads back to my Rpi over i2c bus. (one value for each servo)
https://www.adafruit.com/product/1085
Although not strictly a Raspberry Pi project, I have a couple C.H.I.P. boards[1] scattered throughout my apartment collecting temperature and humidity readings (using a HIH8120 sensor[2]) and feeding it to my Raspberry Pi which runs InfluxDB and Chronograf[3] to store and display a simple dashboard. The end result looks like this: http://i.imgur.com/cIrhSUq.png
Nothing in particular. I just wanted a way to view the temperature and humidity in my apartment when I'm out. Also I wanted to know what affects the humidity in my apartment and by how much (for example, you can see when I take my morning shower). In the future I may use the data to control a humidifier to turn it on whenever the humidity drops below a certain level.
I'm the same, I use some cheap ESP8266 devices which have a temperature/humidity sensor attached. They submit their measurements every minute to a central MQ installation:
While I don't have any particular reason for collecting the data it can be fun to look at. For example you can easily spot when somebody has a shower because the humidity spikes in the bathroom:
Naively I expected to track the weather, because I figure on a hot day the temperature of my living-room/etc would spike. Turns out this house is pretty well insulated so the internal temperature has essentially no relationship to the external one. I guess that makes sense in a country where you might have -25'C in the winters.
This is really cool! I've been thinking about a similar idea lately and this seems like a great way of doing it. Do you by chance have any material on how you got the honeywell sensor working with the C.H.I.P. board? (This would be my first electronics project)
This was my first electronics project as well and I chose the Honeywell sensor because it has decent humidity accuracy (which is what I was mostly interested in) and a bonus temperature sensor built in. It uses the I2C protocol for communication which I found pleasant to work with although it would probably be simpler to just use am analog voltage sensor.
> Why not just run InfluxDB and Chronograf on one of the CHIPs?
I started off with a single C.H.I.P. and ran everything on it but then when I added a second C.H.I.P. I wanted to have all the data in a central location. I also found Chronograf lag a lot when trying to browse more than a couple day's worth of data. The Raspberry Pi has much faster storage and CPU.
> How are you sending data to the Pi?
The C.H.I.P. has a Python script that runs on a cron that calls a C program to read the sensor and then sends it to the Pi using InfluxDB's HTTP API.
I love the C.H.I.P board, seems like they'd have better market penetration if their name wasn't "CHIP" though. I feel like the Particle IOT line has suffered a similarly hindrence?
I built a voice-activated light switch using Pi. Demo and schematics here: http://arunpn.com/projects/voice-activated-light-switch/ After that project, I have slowly added more functionality to it like controlling music, alarms, etc.
Use Home Assistant to integrate anything in your house. Make voice assistants respond to your commands. Write advanced automations to help make your life easier.
Use our Hass.io OS build to setup Google Assistant easily on your Pi. Need a USB microphone and speakers connected to the Pi and you'll get the full Google Assistant experience.
We've built a whole business on top of the Raspberry Pi. The company/project is called Screenly[1], which is a digital signage solution for the Raspberry Pi and we have over 10,000 devices running it. We really gained a lot of momentum early on with our open source version[2].
Built a working prototype of a LAN based discovery and routing device for Evercam.io. Not very sophisticated but it worked and it was deployed to several locations successfully in a pilot program, allowing them to route to Cameras that were otherwise inaccessible.
Actual code didn't rely on rPi (Elixir/OTP on Linux). But we shipped them on Pis. Other options considered had been Galileo and also an SoC called (I think) Quark (also from Intel).
159 comments
[ 5.8 ms ] story [ 252 ms ] threadI built a "Kitchen Dashboard" last year: https://gavinr.com/2016/01/10/raspberry-pi-kitchen-dashboard...
And of course you have to build a RetroPie: https://retropie.org.uk/
Other things on Pi in my house: OpenVPN server (http://www.pivpn.io/) and Node-RED (https://nodered.org/) for collecting temperature data and pushing to Power BI.
I also have a newer Pi 3 running Stratux for receiving ADS-B traffic and weather on my iPad while flying.
Aside from Stratux there are definitely cheaper/easier solutions for what I've set up but nothing beats the 'free' hardware collecting dust in the bin.
Making an snes emulator in an HDMI dongle form factor with wireless controllers.
SNES on your main TV system, switch TV inputs, play Super Mario Kart. No hookups, no wires.
Another challenge was that I couldn't find a good application to display the Google photos album. Nothing I found would display any new photos added to the album after the slideshow had begun while also displaying everything in a continuous loop. I ended up writing a second small Python app also using picasawebsync to periodically sync the photos to a second Raspberry Pi which was hooked up to a projector and display them looped in a random order.
Here's a list of cameras that gphoto2 supports: http://gphoto.org/proj/libgphoto2/support.php
I made sure to buy a DSLR that supported live-preview so that our guests could frame themselves before the photos were taken.
We would love to see what you can do with what we are building and to feature you on our website !
Any plans to release source code? I can't trust any privacy claims without seeing it.
Two things I'm curious about...
1) What are you using for hardware with the Pi? It seems a high quality microphone is important to this application and the only array microphone I've been able to find is the MATRIX creator which seems steep in price if I could just buy an Amazon Dot.
2) Your numbers indicate significantly better performance than Google. How are you able to achieve that? Where does your training data come from if nothing is supposedly leaving my device?
I really strongly desire a system that wouldn't require relying on the cloud but I just don't know how you can get enough training data to be anywhere near as accurate as a cloud provider. That led me to thinking the next best thing would be a setup with Snowboy hotword detection where I know nothing is leaving my device until my own programmed hotword is spoken.
As others said, I'd feel more comfortable with an open codebase.
I'll be honest: it's a lot of fun, but if I lived 100 lifetimes, it would never save me time on balance. ;)
I also use one to run stratux as another poster mentions. That one saved ~$650 vs buying the COTS solution.
http://bemasher.net/rtlamr/
http://bemasher.net/rtlamr/signal.html has information on how it works, but you don't need to do/know anything about the protocol to get it to work.
Potato quality photo of the very advanced system I came up with for keeping all the components together: https://tootcatapril2017.s3-us-west-2.amazonaws.com/media_at...
If you're using BlueZ and Pulseaudio, it comes down to a couple of simple config entries (google for Linux Bluetooth A2DP Sink).
I used a RPi 2 with a USB Dongle for the Bluetooth though, so I can't vouch for the internal Bluetooth of the RPi 3.
https://gist.github.com/oleq/24e09112b07464acbda1
Hope this helps!
Locomotion is largely based upon the designs documented by Cynthia Brezeal Ferrell (MIT mobile robots lab, under Prof. Rod Brooks) in her PhD thesis for the hexapod robot, Atilla/Hannibal.
The first attempt was using Python which presented two insurmountable problems : 1) raspian OS boot time of 1.5 minutes which is unacceptable for an embedded device and 2) python threading is not sufficient for realtime. I was attempting to make series elastic actuators but the imprecision of the threading (jitter) was leading to wild oscillations... I finally had to accept it was a dead end.
I have started over in Elixir + Nerves which is designed at its core for embedded work. I will admit it is very slow going. Not because of any deficiencies in the language or environment. Quite the contrary -- I get a 10-second cold boot time and superb stability! But rather my mind is the limiting factor here. After three decades of imperative programming, the shift to functional programming is a challenge!
I also remember reading awhile back about the huge market for upkeeping these things once Sony abandoned it. Perhaps you're onto a business!
In the mid 2000s, I had written some code for the Aibo to let it read books aloud.
Flash forward toa couple years ago. My kids saw some video of me with the Aibo Reader project and wanted an Aibo of their own. Unfortunately, the Aibo as a product is dead. The batteries are now dying and irreplaceable (thanks to Sony and their idiotic insistence upon DRM - it's not enough to merely provide electrons, the battery must also know the secret handshake in order for the Aibo to accept it. Maddening!!!) And those few used Aibos that do have working batteries are dying from other issues related to mechanical failure (mostly clutches in the head/neck assy.) yet command a premium price.
So now, my kids still want an Aibo. I got to thinking about how far technology had come in the past 20 years, and started wondering to myself if I could build a facsimile with the RPi. Thus the birth of this little side-project.
Using a flexible servo horn, this allows some degree of deformation when torque is applied. Embed a 1/32" neodymium magnet in the horn, and a magnetic rotary position sensor in the driven part. As resistance to movement ("torque") increases, the flexible servo horn twists/deflects, angle of difference between the two parts changes and this can be detected by the magnetic sensor.
Picture a torque strain gauge, the way the needle deflects from the centerline of the gauge. This is similar but we're doing so in an radial (edit:removed axial) and not linear sense.
I went on to 3d print a flexible servo horn somewhat similar to this: http://mechanismsrobotics.asmedigitalcollection.asme.org/dat... but with the magnet embedded in the outer rim of the wheel and the sensor in the inner section.
Different amounts of sensitivity are obtained by printing different spoke stiffness on the horn.
Result is a compact, modular torque sensor for about $2 in parts. Feed the results to a PID look and you have a nice controller that can tell me when a robot leg is bearing a load, or is jammed, etc. This is essential to proper gait. Otherwise your robot is simply an electronic marionette.
One of the big challenges was getting 16 additional 16bit voltage reads back to my Rpi over i2c bus. (one value for each servo) https://www.adafruit.com/product/1085
Soln: used one of these multiplexer boards: https://www.adafruit.com/product/2717
and I used AdaFruit's excellent servo controller board: https://www.adafruit.com/product/815
and some neopixel rings for eyes: https://www.adafruit.com/product/3047
(wonderful for expressing mood)
[1]: https://getchip.com/
[2]: https://sensing.honeywell.com/HIH8120-021-001S-humidity-sens...
[3]: https://www.influxdata.com/time-series-platform/chronograf/
https://twitter.com/Stolen_Souls/status/848444075296641025
https://steve.fi/Hardware/d1-temperature-humidity/
While I don't have any particular reason for collecting the data it can be fun to look at. For example you can easily spot when somebody has a shower because the humidity spikes in the bathroom:
https://twitter.com/Stolen_Souls/status/848444075296641025
Naively I expected to track the weather, because I figure on a hot day the temperature of my living-room/etc would spike. Turns out this house is pretty well insulated so the internal temperature has essentially no relationship to the external one. I guess that makes sense in a country where you might have -25'C in the winters.
Here's the program I wrote to read the sensor over I2C: https://gist.github.com/tsyd/f48e933a21fb40b9f9eea28118f54e0...
This has the added benefits of being able to be powered with a solar panel.
I've been ~hoping~ to use Go to access the GPIO pins, but haven't had much success - any suggestions?
1. Why not just run InfluxDB and Chronograf on one of the CHIPs?
2. How are you sending data to the Pi?
I started off with a single C.H.I.P. and ran everything on it but then when I added a second C.H.I.P. I wanted to have all the data in a central location. I also found Chronograf lag a lot when trying to browse more than a couple day's worth of data. The Raspberry Pi has much faster storage and CPU.
> How are you sending data to the Pi?
The C.H.I.P. has a Python script that runs on a cron that calls a C program to read the sensor and then sends it to the Pi using InfluxDB's HTTP API.
http://pi.tafkas.net/temperatures/
Blog post: http://blog.tafkas.net/2012/10/03/gathering-and-charting-tem...
See http://www.nature.com/nature/journal/v540/n7632/full/nature2...
But basically the steps you would have
1. Get a Raspberry pi (obviously) and load linux with python support.
2. Use this shield https://www.amazon.com/Pimoroni-Unicorn-Hat-Shield-Raspberry...
3. Create a python script that blinks with the HZ that was in the Nature paper.
Use our Hass.io OS build to setup Google Assistant easily on your Pi. Need a USB microphone and speakers connected to the Pi and you'll get the full Google Assistant experience.
https://home-assistant.io
(disclaimer: I'm the founder)
[1] https://www.screenly.io
[2] https://github.com/Screenly/screenly-ose
Actual code didn't rely on rPi (Elixir/OTP on Linux). But we shipped them on Pis. Other options considered had been Galileo and also an SoC called (I think) Quark (also from Intel).
https://gitlab.com/evercam/evercam-gateway