Posts with «raspberry pi» label

Hackaday Prize Entry: Smart USB Hub And IoT Power Meter

[Aleksejs Mirnijs] needed a tool to accurately measure the power consumption of his Raspberry Pi and Arduino projects, which is an important parameter for dimensioning adequate power supplies and battery packs. Since most SBC projects require a USB hub anyway, he designed a smart, WiFi-enabled 4-port USB hub that is also a power meter – his entry for this year’s Hackaday Prize.

[Aleksejs’s] design is based on the FE1.1s 4-port USB 2.0 hub controller, with two additional ports for charging. Each port features an LT6106 current sensor and a power MOSFET to individually switch devices on and off as required. An Atmega32L monitors the bus voltage and current draw, switches the ports and talks to an ESP8266 module for WiFi connectivity. The supercharged hub also features a display, which lets you read the measured current and power consumption at a glance.

Unlike most cheap hubs out there, [Aleksejs’s] hub has a properly designed power path. If an external power supply is present, an onboard buck converter actively regulates the bus voltage while a power path controller safely disconnects the host’s power line. Although the first prototype is are already up and running, this project is still under heavy development. We’re curious to see the announced updates, which include a 2.2″ touchscreen and a 3D-printable enclosure.


Filed under: The Hackaday Prize

Custom robot transmitter and a few robots (Rpi, nodemcu and arduino)

Hi good people!

I have alot of robotic projects,and now I'm trying to make the one remote to control them all.

I have a lasercut box with a raspberry pi 3 inside, with the original 7 inch touch display, there is also two 3 axis joysticks. The touch display will do everything that I can't do with the joysticks. I currently have a quadroped robot using Phoenix Code controlled with a PS2 joypad. The interfacing on the touch display will be made in Kivy and python.

read more

Custom robot transmitter and a few robots (Rpi, nodemcu and arduino)

Hi good people!

I have alot of robotic projects,and now I'm trying to make the one remote to control them all.

I have a lasercut box with a raspberry pi 3 inside, with the original 7 inch touch display, there is also two 3 axis joysticks. The touch display will do everything that I can't do with the joysticks. I currently have a quadroped robot using Phoenix Code controlled with a PS2 joypad. The interfacing on the touch display will be made in Kivy and python.

read more

Custom robot transmitter and a few robots (Rpi, nodemcu and arduino)

Hi good people!

I have alot of robotic projects,and now I'm trying to make the one remote to control them all.

I have a lasercut box with a raspberry pi 3 inside, with the original 7 inch touch display, there is also two 3 axis joysticks. The touch display will do everything that I can't do with the joysticks. I currently have a quadroped robot using Phoenix Code controlled with a PS2 joypad. The interfacing on the touch display will be made in Kivy and python.

read more

Custom robot transmitter and a few robots (Rpi, nodemcu and arduino)

Hi good people!

I have alot of robotic projects,and now I'm trying to make the one remote to control them all.

I have a lasercut box with a raspberry pi 3 inside, with the original 7 inch touch display, there is also two 3 axis joysticks. The touch display will do everything that I can't do with the joysticks. I currently have a quadroped robot using Phoenix Code controlled with a PS2 joypad. The interfacing on the touch display will be made in Kivy and python.

read more

Honey, I shrunk the NES… with Raspberry Pi and Arduino!

The NES was one of, if not, the first gaming consoles most of us ever played. That’s why we were all pretty excited to hear Nintendo’s recent plans of releasing the NES Classic Mini. As great as it sounds, though, turns out it’ll only support its 30 pre-loaded games–no Internet downloads, nor any cartridge slots. But leave it to a Maker to come up with a solution! Enter DaftMike, who has built his own shrunken-down, 3D-printed version of the retro system complete with some of the features we all would’ve loved to see with Nintendo’s re-creation.

The DIY system–which is 40% the size of the original–is powered by a Raspberry Pi and an Arduino. It runs on RetroPie emulation software and uses itsy-bitsy NFC tagged cartridges, ranging from Super Mario Bros. to Zelda. When a cartridge is inserted into the machine’s fully-functional slot, an NFC reader scans it, selects that specific game from the Pi’s internal memory, and boots it up onto the screen.

I designed the connections between the Arduino and Pi to use the top 10 GPIO pins so I could mount the Arduino directly to the Raspberry Pi using a 2×5 header. All the electronics would then sit in the case behind the USB ports.

The NFC reader mounts underneath the cartridge tray connected to the Arduino with a piece of flat cable. There’s enough length on it for the case halves to be splayed apart if I need to dismantle the unit and the Arduino ‘lump’ unplugs from the Pi so I can update the ‘firmware.’

DaftMike even rounded out his incredibly-realistic design with a mini, Arduino Pro Micro-based controller–although probably a bit too small for adult hands. (Cool nevertheless!)

In terms of software, an Arduino sketch is used to read the NFC tags and manage the power switching, while a Python script running on the Raspberry Pi is tasked with launching the games. The two communicate over serial.

Those wishing to spark some childhood gaming nostalgia should check out Daftmike’s entire blog post, which provides a full rundown of the build and its inner workings.

 

This Telepresence Robot from the 1800s Helps Promote Metal Shop

AR-Duo is a steampunk telepresence robot that shows off the skills and ingenuity of a school's metal shop.

Read more on MAKE

The post This Telepresence Robot from the 1800s Helps Promote Metal Shop appeared first on Make: DIY Projects and Ideas for Makers.

Lawn Da Vinci is an open-source, remote-controlled lawn mower

Inspired by the one seen in Honey, I Shrunk The Kids, Blake Hodgson has built a remote-controlled lawn mower of his own dubbed ”Lawn Da Vinci.”

The robotic machine’s frame is made from angle iron and steel, while its wheels and motors were taken from a mobility scooter. Power is supplied by a pair of 12V car batteries wired in series, and it’s driven across the yard with an RC airplane remote.

The Lawn Da Vinci has two Arduino Pro Minis and a Raspberry Pi for a brain–one Arduino is used for the motors and RC signal, the other for the kill switches. Meanwhile, the Raspberry Pi is tasked with streaming video from an attached webcam to his phone.

To improve reliability and reduce complexity, the motor driver now gets its signal directly from the RC receiver once it goes through the two relays controlled by the Arduino, which is always looking for a good signal. The Arduino and Raspberry Pi are powered off of a disassembled car cigarette lighter USB charger which takes the 12v of the batteries down to a clean 5v. I originally had it powered off of the Sabertooth but have better reliability this way. There are many ways to kill the motors.  You can turn the remote off, push the trainer button, left with the right joystick, or push a button separate key fob and all of these will kill it.

Rather not to push a mower around all summer long? Check out Hodgson’s entire project–complete with its code–on his blog here, or read more on Hackaday.

Digital Opponent In An Analog Package

Unsatisfied with the present options for chess computers and preferring the feel of a real board and pieces, [Max Dobres] decided that his best option would be to build his own.

Light and dark wood veneer on 8mm MDF board created a board that was thin enough for adding LEDs to display moves and for the 10mm x 1mm neodymium magnets in the pieces to trip the reed switches under each space. The LEDs were wired in a matrix and connected to an Arduino Uno by a MAX7219 LED driver, while the reed switches were connected via a Centipede card. [Dobres] notes that you’ll want to test that the reed switches are positioned correctly — otherwise they might not detect the pieces!

A small LCD screen and four buttons also connect to the Arduino for configuring options a number of options, computer difficulty, and play styles, while a Raspberry Pi acts as the main computer.

The Raspberry Pi is using ChessBoard 2.05 as a rule set with consideration for special moves (such as en passant and castling). It’s currently unsupported but used with permission by its creator, John Eriksson. The chess program Stockfish is the actual engine; be sure to adjust the skill of the AI, as it defaults to an ELO of 2600! Unfortunately, it’s a rather finicky program, only running on Python 2.7. If that doesn’t appeal to you, [Dobres] has provided a nice list of other options to help you with your own build.

He has recently updated his design and done away with the need for the Arduino in the process which — especially if you use the Pi Zero — drops the cost of this project significantly. That should leave you with enough room in your budget to build a robot to make the moves for you!

[via Max Dobres]


Filed under: Arduino Hacks, Raspberry Pi

A Pi Robot Without a Hat

Daughter boards for microcontroller systems, whether they are shields, hats, feathers, capes, or whatever, are a convenient way to add sensors and controllers. Well, most of the time they are until challenges arise trying to stack multiple boards. Then you find the board you want to be mid-stack doesn’t have stackable headers, the top LCD board blocks the RF from a lower board, and extra headers are needed to provide clearance for the cabling to the servos, motors, and inputs. Then you find some boards try to use the pins for different purposes. Software gets into the act when support libraries want to use the same timer or other resources for different purposes. It can become a mess.

The alternative is to unstack the stack and use external boards. I took this approach in 2013 for a robotics competition. The computer on the robots was an ITX system which precluded using daughter boards, and USB ports were my interface of choice. I used a servo controller and two motor controllers from Pololu. They are still available and I’m using them on a rebuild, this time using the Raspberry Pi as the brain. USB isn’t the only option, though. A quick search found boards at Adafruit, Robotshop, and Sparkfun that use I2C.

This approach has challenges and benefits. A stack of daughter boards makes a neat package, where external boards makes a tangle of wires. Random sizes can make mounting a challenge. Providing power can also be a hassle because of the random placement of power pins. You can’t rely on USB power, especially from a Raspberry Pi whose USB is power limited.

On the other hand, external boards can offload processing from your main processor. Once a command is sent, these boards handle all the details including refresh requirements. They are likely to provide capabilities beyond the microcontroller software libraries since their processors are dedicated to the task.

I am using an 18-channel board from the Pololu Maestro Servo Controller family of boards that control from 6 to 24 servos using a single board. You might find the Adafruit 16 channel I2C board a useful alternative. For motor control I turned to the Pololu Simple Motor Controller family using one that will handle 18 amps. Others will handle from 7 to 25 amps. Or consider the Sparkfun Serial Controlled Motor Driver. Another source for USB controllers is Phidgets. I experimented with one of their spatial devices for the original robot. I should have used it to measure the tilt since one of my robots rolled over on a hill. Ooops!

Servo Control

The board currently installed on my robot is the Mini Maestro 18. The Maestro provides control over the servo speed, acceleration and movement limits. A home position can be set for startup or when errors occur. You can even do scripting or set movement sequences to play on command.

On the hardware side, the Maestro also allows channels to be used for digital input or output, and some channels for analog input. On some there is one channel for pulse width modulation output. An onboard regulator converts the servo power input to the voltage needed by the processor, simplifying part of the power distribution challenge.

My previous robot used the Maestro to control pan and tilt servos for camera positioning, a servo to lift samples from the ground, and a safety LED. Two analog inputs from current sensors on the motors helped avoid burnout during stalls, and four inputs from a simple RF key fob transmitter provided control. The latter came in handy for testing. I’d program a test sequence such as starting a 360° camera scan for landmarks or drive onto the starting platform and drop the sample. A button press on the key fob would initiate the activity. One button was always set up as an emergency halt to stop a rampaging robot. The rebuild is following this pattern with some additions.

Motor Controller

The two Simple Motor Controllers (SMC) each handled the three motors on either side of the Wild Thumper chassis. The SMC does more than just control the motor speed and direction. You can set acceleration, braking, and whether forward and reverse operate at the same or different speeds. The board monitors a number of error conditions for safety. These stop the motor and prohibit movement until cleared. Such blocking errors include lost communications, low input voltage, or drivers overheating.

An additional capability I found extremely helpful is the ability to read signals from a radio control (RC) receiver. These signals can be used to control the motor and, with some cross wiring between two controllers, provide differential drive control. This is useful for driving the robot to a new location using an RC transmitter. I didn’t use the RC inputs directly. Instead I read the RC inputs and issued the control commands from my program. This let me monitor the speed in my program logs for correlation with the other logged data. I also used an input to command the robot into autonomous or RC control operations. There are also two analog inputs that can be used to directly control the motor and can be read through commands.

Serial Communications

USB ports were my choice for communications but there is also a TTL level serial port with the standard RX and TX pins. This port can be used by the Raspberry Pi, Arduino, or any other microcontroller that has a TTL serial port.

The Maestro boards using USB appear as two serial ports. One is the command port that communications with the Maestro processor. The other is a TTL port. This port can serve as simply a USB to TTL serial port converter to allow communications with other boards, even from another vendor. Another use of the TTL port is to daisy chain Pololu boards. I could attach the SMC boards in this manner and save two USB ports for other devices. These boards support this by having a TXIN pin that ANDs the TX signal from the connected board with the TX on the board.

Both of these controllers support a few different communications protocols. I use the one Pololu created and is available on some of their other products. The command details are different between the boards, but the basic command structure is the same. They call it their binary protocol, and the basic format follows:

0xAA, <device address>, <command>, <optional data>, <crc>

All the fields are single bytes except for the data field which is frequently 2 bytes to transmit 16-bit data. The returned data is only one or two bytes with no additional formatting. Note they provide for detecting errors in the message by using a CRC (cyclical redundancy check). This is probably not critical over USB but a TTL line might receive noise from motors, servos, and other devices. A CRC error sets a bit in the error register that can be read if the command is critical.

I wrote my own code, C++ of course, for the PC and converted it just now to the Raspberry Pi. The main change is the different serial port code needed by Linux and Windows. Pololu now provides Arduino source for the protocol making it easy to use these boards with that family of controller boards.

Wrap Up

The chassis, Pi, and these boards are now installed on the Wild Thumper chassis along with a pan and tilt controlled by servos. A safety LED is on when power is applied and flashes when the robot is actively controlling the system. A LiPo battery powers all but the Pi because I need to configure a battery eliminator circuit to provide five volts. I’m powering it temporarily using a USB battery pack.

A test program, cross compiled from my desktop, moves the robot forward, pivots left than right, and then reverses. The pan / tilt moves and the LED flashes. I originally used a web camera for vision processing but will switch to the Pi camera since it is better. The Neato lidar discussed in a previous article will soon find a place onboard, along with an accelerometer to detect possible rollovers.

I’m sure I could have done this using Pi daughter boards despite the challenges I mentioned earlier. There are trade-offs to both approaches that need to be considered when working on a project. But there is one final advantage to the external boards: they have a lot of twinkly LEDs.

Product photos from Pololu.


Filed under: Arduino Hacks, Raspberry Pi, robots hacks