RSS

Category Archives: Programming

Remote Operated Laser Pointer – Part 2

Remote Operated Laser Pointer – Part 2

In this post, I will continue on with describing the development of the remote operated laser pointer from my previous post. I recently procured a couple of DC 3.7V-12V Mini Wireless Remote Control Switch Relay Micro Receiver Transmitter System For LED Light Smart Home units from Banggood. This unit acts as a remote controlled relay supporting both normally open (ON) and normally closed (NC) configurations. I was looking to use normally open, and when triggered, to close the circuit.

Here is a closer look at both the transmitter and receiver. I’ve included some pictures of the internals of the transmitter unit as well. We are only temporarily going to use it, as I will explain further. The unit is tiny and light and just what I was looking for related with this project.

Using an approach as shown in this informative youtube post from PiddlerInTheRoot, the transmission codes of the transmitter can be detected. I used an FS1000A 433mHz Tx & Rx RF Radio Module

FS1000A
FS1000A – Transmitter and Receiver Pair

Next, I connected all the pieces together so that I could trigger a transmit event that lights up a test green LED and another to switch it off. I haven’t used the red laser diode for testing in this case, as I need to work on a compact circuit that would be able to power both the RC relay and the laser diode. More to come in my next blog post on this.

The distance between the Transmission assembly and the Reception assembly could be an amazing 160m in ideal conditions as this youtube video shows. Here is another video with a successful range test of over 350m with some modifications to the hardware, such as adding longer antennae. The Reception assembly has two circuits with their own power sources. One circuit powers the wireless remote control switch and the other powers the green LED.

The pypi python site has a project for sending and receiving 433/315MHz LPD/SRD signals with generic low-cost GPIO RF modules on a Raspberry Pi. There are two script files that are of use. Click on the links to go to the source code that’s written in python.

Finally, as usual, I’ve recorded a demo of this project in action. Here’s the video:

Quick view of the setup in action

Now with the RC relay, I can switch the LED on/off from python code. Once I sort out the power circuit issue, it will be possible to ‘build’ the final assembly of the remote controlled laser pointer. I’ll then mount this assembly on my RYZE tello drone. Then will do some tests on that. The most important test would be to check for the stability of the flight of the aircraft with the final assembly mounted on it. And of course, to check whether the laser pointer lights up while the drone is in flight.

Once these basic tests pass, it would be time to focus on capturing live video from the RYZE tello drone onto the Raspberry Pi and doing some object inference / detection using the Intel Movidius Neural compute stick 2 for deep learning . Based on finding certain objects, I would have the code switch the laser that’s mounted on the drone to ON status followed by off. This is really where the fun begins.

I will demonstrate this in action in my next set of posts in this series. Stay tuned!

 
1 Comment

Posted by on February 17, 2020 in IoT, Programming

 

Tags:

Programmed RYZE Tello Drone Flight

Tello drone and battery charging array

What makes the Tello drone so amazing is the ability to programmatically send commands to it. The drone has an on-board camera and can stream both photos as well as videos. It does not have built in GPS and uses VPS instead to determine it’s flight stability routines. None the less, it is interesting to have an ability to “compute” and “actuate”. This can then become a robot UAV that could have some machine learning algorithms coupled with it to determine its own flying path including obstacle avoidance. In a way, the combination would give rise to an autonomous flying UAV.

I’m no where close to that with this Tello drone, but definitely inching towards it. As a first step, I worked on getting the drone to follow a programmed flight path based on fixed parameter values. I’ll cover the details of how I did this a little later in this article. You can view the output first.

This flight proceeded on it’s own, getting instructions via a python program over a wifi connection with the drone. The code is simple and involves sending UDP messages to the Tello over port 8889. Here is a view of the code with the key request / response commands highlighted.

Program code executing a sequence of commands from command.txt
This python class sends the commands and receives the responses from the Tello drone

The command.txt just has a list of commands from the Tello SDK, except delay, which is custom code. Here is a sample of the contents of a command.txt file.

Sample commands

From my iPad Pro, I did SSH into a RaspberryPi device and ran the python code that flew the drone in the video above. Here is the action happening in the console.

Raspberry Pi device

That’s it for now. In my next blog article related to further development around these experiments, I will cover how I extended this to use the Raspberry Pi display, wireless USB dongle, wifi repeater, Intel Neural compute stick and running a Jenkins instance on the device.

Quick preview of Jenkins on Pi. Pulls code from BitBucket to fly the drone. Raspberry Pi here becomes the non-human controller of the drone’s flight path.

The Tello drone is a remarkable device and allows for many possibilities. My main area of interest is autonomous flying UAVs, which like Shakey in the early 70s, could maneuver around obstacles in it’s path.

Very early years ground robot
 
Leave a comment

Posted by on August 16, 2019 in Programming

 

Tags: , ,

RYZE Tello Drone Fun Flight

I recently heard of the RYZE Tello mini drone with DJI technology. DJI is a reputed company that is known for high quality camera drones.

Over the years, I have tested several toy drones. The Tello was different though. It is an affordable drone with a camera and most interestingly is programmable. I wanted to check out how easy it is to program and control one. So I acquired a Tello drone and got started researching its SDK.

In this demo, I used the python project from https://github.com/dji-sdk/Tello-Python

Once you checkout the project, you get a folder structure created locally as shown here:

Tello python project

Single_Tello_Test folder contains all that you need to send commands to Tello so that it can execute those commands. On my laptop, I detected the WiFi network of the Tello drone and connected to it. Once connected, I ran the command below:

python tello_test.py "command - iPhoneVideo2.txt"

The text file can have any name. This is the one I used for setting a sequence of commands that represented my custom flight plan for the Tello. Here is what the commands in the file look like:

command
delay 2
takeoff
delay 2
up 30
delay 2
cw 180
delay 2
forward 300
delay 2
left 60
delay 3
right 60
delay 2
flip f
delay 2
land

The python code in tello_test.py reads each line and sends the instruction to the drone via UDP messages. This worked beautifully, and the command execution statuses can be viewed in the command window:

Command execution status

Here, Tello on 192.168.10.1 receives commands on port 8889 and sends back the command status message. I’ve captured a clip of the Tello drone in action. Enjoy!

RYZE Tello Drone in ‘auto-pilot’ mode
 
1 Comment

Posted by on June 2, 2019 in Programming

 

Tags: , ,