Building A K9 Toy

[James West] has a young Doctor Who fan in the house and wanted to build something that could be played with without worrying about it being bumped and scratched. So, instead of creating a replica, [James] built a simple remote controlled K9 toy for his young fan.

K9 was a companion of the fourth Doctor (played by Tom Baker) in the classic Doctor Who series. He also appeared in several spin-offs. A robotic dog with the infinite knowledge of the TARDIS at hand, as well as a laser, K9 became a favorite among Who fans, especially younger children. [James] wanted his version of K9 to be able to be controlled by a remote control and be able to play sounds from the TV show.

Using some hand-cut acrylic, [James] built K9’s body, then started on plans for the motion control and brains. [James] selected the Raspberry Pi Zero for the controller board, a Speaker pHat for the audio, a couple of motors to move K9 around, and a motor controller. K9 is controlled by a WiiMote and has a button on his back to start pairing with the WiiMote (K9 answers with “Affirmative” when the pairing is successful.) When it came to the head, [James] was a little overwhelmed by trying to make the head in acrylic, so he got some foam board and used that instead. A red LED in the head lights up through translucent red acrylic.

It’s a great little project and [James] has put the Python code up on Github for anyone interested. We’ve had a couple of robot dog projects on the site over the years, like this one and this one.

Continue reading “Building A K9 Toy”

Controlling a Robot Over the Internet Grows Up

Since the beginning of the Internet people have been controlling robots over it, peering at grainy gifs of faraway rec rooms as the robot trundles around. RunMyRobot.com has taken that idea and brought it fully into the teens. These robots use wifi or mobile connections, are 3D printed, and run Python.

The site aims to provide everything to anyone who wants to participate. If you’re just an anonymous visitor, you can still play with the robots, but anyone can also play with the same one, and sometimes a whole bunch of visitors create a cacophony of commands that makes it not fun—but you can always move to a different robot. Logged-in members of the site have the option to take over a robot and not allow anyone else to use it.

If you want to build a robot and add it to the site, the creators show how to do that as well, with a Github code repository and 3D-printable designs available for download, as well as YouTube instructions on how to build either the printed robot or one made with off-the shelf parts. They’re also looking for patrons to help with development, with the first item on their list being a mobile app.

Thanks to [Sim] for the link.

 

Sudo Google Assistant

A Raspberry Pi kicking around one’s workbench is a project waiting to happen — if they remain unused long enough to be considered a ‘spare.’ If you find you’ve been pining after an Alexa or your own personal J.A.R.V.I.S., [Novaspirit Tech] might be able to help you out — provided you have a USB mic and speaker handy — with an accessible tutorial for setting up Google Assistant on your Pi.

A quick run-through on enabling a fresh API client on Google’s cloud platform, [Novaspirit] jumps over to the Raspbian console to start updating Python and a few other dependencies. Note: this is being conducted in the latest version of Raspbian, so be sure to update before you get underway with all of your sudos.

Once [Novaspirit] gets that sorted, he sets up an environment to run Google Assistant on the Pi, authenticates the process, and gets it running after offering a couple troubleshooting tips. [Novaspirit] has plans to expand on this further in the near future with some home automation implementation, but this is a great jumping-off point if you’ve been looking for a way to break into some high-tech home deliciousness — or something more stripped-down — for yourself.  Check out the video version of the tutorial after the break if you like watching videos of guys typing away at the command line.

Continue reading “Sudo Google Assistant”

Siri Controls Your PC Through Python and Gmail

Voice-based assistants are becoming more common on devices these days. Siri is known for being particularly good at responding to natural language and snarky responses. In comparison, Google’s Assistant is only capable of the most obvious commands, and this writer isn’t even sure Microsoft’s Cortana can understand English at all. So it makes sense then, if you want voice control for your PC, to choose Siri as your weapon of choice. [Sanjeet] is here to help, enabling Siri to control a PC through Python.

The first step is hooking up the iPhone’s Notes app to a Gmail account. [Sanjeet] suggests using a separate account for security reasons, as you’ll need to place the username and password in a Python script. The Python script checks the Gmail account every second, looking for new Notes from the iPhone. Then, it’s as simple as telling Siri to make a Note (for example, “Siri, Note shutdown”) and the Python script can then pick up the command, and act accordingly.

It’s a quick and easy way to get Siri to do your bidding. There’s other fancy ways to do it, too — like capturing Siri’s WiFi data on your home network.

Ask Hackaday: How Do You Python?

Python is the Arduino of software projects. It has a critical mass of libraries for anything from facial recognition and neural networks to robotics and remote sensing. And just like Arduino, I have yet to find the killer IDE for Python. Perhaps I just haven’t tried the right one yet, but it could be that I’m just doing Python wrong.

For Years I’ve Been IDLE

IDLE with interactive shell that has highlighting and code completion

I’m a Linux-only type of a guy so using IDLE for Python is a natural fit. It’s in the repositories for super quick and easy install and there’s basically zero configuration to be done. Generally speaking my preferred development environment is text editor and command line compiler. IDLE is just one step above that. You get a separate window for the shell and each Python file you’re working on. Have IDLE run your code and it saves the file, then launches it in the shell window.

For me, there are two important features of IDLE’s shell. The first is that it keeps an interactive session open after you run your Python code. This means that any globals that your script uses are still available, and that you can experiment with your code by calling functions (and classes, etc) in real time. The second desirable feature is that while using this interactive shell, IDLE supports code completion and docstring support (it gives you hints for what parameters a function accepts/requires).

But simplicity has a tough time scaling. I’m working on larger and larger projects spread over many files and the individual nature of IDLE editor windows and lack of robust navigation has me looking to move forward.

The Contenders

I’ve tried perhaps a half-dozen different Python IDEs now, spending the most time on two of them: Geany and Atom. Both are easy to install on Linux and provide the more advanced features I want for larger projects: better navigation, cross-file code completion (and warnings), variable type and scope indication.

The look of Geany brings to mind an “IDE 1.0” layout style and theme. It’s the familiar three-pane layout that places symbols to the left, code to the right, and status along the bottom. When you run your program it launches in an interactive terminal, which I like, but you lose all IDE features at this point, which I despise. There is no code completion, and no syntax highlighting.

I have been using Atom much more than Geany and have grown to like it enough to stick with it for now. I’d call Atom the “IDE 2.0” layout. It launches with a dark theme and everything is a tab.

Atom has symbol view that isn’t shown all the time. CTRL-R brings it up and it uses a search style but you can also scroll through all symbols

Atom depends heavily on packages (plugins that anyone may write). The package management is good, and the packages I’ve tried have been superb. I’m using autocomplete-python and tabs-to-spaces, but again I come up short when it comes to running Python files. I’ve tried platformio-ide-terminal, script, and runner plugins.  The first brings up a terminal as a bottom pane but doesn’t automatically run the file in that terminal. Script also uses a bottom pane but I can’t get it to run interactively. I’m currently using runner which has an okay display but is not interactive. I’ve resorted to using a “fake” python file in my projects as a workaround for commands and tests I would normally run in the interactive shell.

Tell Us How You Python

It’s entirely possible I’ve just been using Python wrong all these years and that tinkering with your code in an interactive shell is a poor choose of development processes.

What do you prefer for your Python development? Does an interactive shell matter to you? Did you start with IDLE and move to a more mature IDE. Which IDE did you end up with and what kind of compromises did you make during that change. Let us know in the comments below.

Generator Monitor Gives the Phone Company the Boot

Part of the problem with having an alarm system is its reliance on land line telephone service. Some of them are getting away from this practice, but there are still many legacy systems out there that require a check to be sent in to Ma Bell every month in addition to the alarm system fees. Like these antiquated systems, [jgyates] was having a similar problem with the generator at his home which could only be monitored with a link to a cell network. Now that there’s a Raspberry Pi in every house, however, [jgyates] has a generator monitor that isn’t beholden to the phone company.

The hardware setup is little more than connecting the communications lines from the generator’s controller (in this case, a Generac Evolution controller) to the serial communications pins on a Raspberry Pi 3. [jgyates] did most of the work in Python, and his code is able to monitor almost every aspect of this generator and report it over WiFi or Ethernet, as well as control the generator settings from anywhere that has an Internet connection.

Even if you don’t have a generator with this particular controller, it will be a good guide for converting a monitor of any type into one that doesn’t require a land line or cell network connection. To that end, there have been lots of projects that convert even simple, old, analog household devices to report data over the LAN.

Bus Pirate Commandeers I2C

The Bus Pirate is one of our favorite tool for quick-and-dirty debugging in the microcontroller world. Essentially it makes it easy to communicate with a wide variety of different chips via a serial terminal regardless of the type of bus that the microcontroller uses. Although it was intended as a time-saving prototyping device, there are a lot of real-world applications where a Bus Pirate can be employed full-time, as [Scott] shows us with his Bus Pirate data logger.

[Scott] needed to constantly measure temperature, and the parts he had on hand included an LM75A breakout board that has a temperature sensor on board. These boards communicate with I2C, so it was relatively straightforward to gather data from the serial terminal. From there, [Scott] uses a Python script to automate the process of gathering the data. The process he uses to set everything up using a Raspberry Pi is available on the project site, including the code that he used in the project.

[Scott] has already used this device for a variety of different projects around his house and it has already proven incredibly useful. If you don’t already have a Bus Pirate lying around there are a few other ways to gather temperature data, but if you have an extra one around or you were thinking about purchasing one, then [Scott]’s project is a great illustration of the versatility of this device.