Hydroponics Update Part 3


To understand the context of this post you may want to read updates one and two.

The half gallon mason jars worked well as shown with the romaine growing in the photo above. The jars started developing hairline cracks in the bottoms that started leaking.  This was more than likely due to routine handling during weekly water changes. This lead to attempting to find a plastic substitute for the mason jars.  The jars that were selected were a 96 ounce petg plastic container with a handle. These were prepared with a net cup similar to the process in post two. After a few months of growing an algae problem occurred in the jars. This is probably due to the high nutrient levels and bright lights the plants are grown under. A test is being conducted to see if painting the jars black will help combat this problem. Below is a photo of basil grown in the garden vs hydroponic basil grown in the new containers. The basil was started by cloning a basil plant purchased in the supermarket. The grow medium was rock wool.




Rack Mounting RTL-SDR


This post talks about rack mounting a RTL-SDR reciever attached to a raspberry pi into a 1U case. The donor case used was a used kramer broadcast 1110 balanced audio distributor, but any 1U case should work.

Parts Needed:

    • 1U Case
    • 5V 3A power supply (Mean Well RS-15-5)
    • Raspberry Pi
    • Class 10 SD Card
    • rtl-sdr receiver with antenna
    • Short 6″ ethernet patch cable
    • panel mount ethernet jack (“search ebay for “ip68 ethernet”)
    • Screws, wire, fuses, switches, etc…


Configuring the Raspberry PI:

    1. Get the Raspbian “lite” image from  https://www.raspberrypi.org/downloads/raspbian/
    2. Install the image based on this guide: https://www.raspberrypi.org/documentation/installation/installing-images/README.md
    3. Find the SD card on the computer and add an empty file to it with the file name “ssh” (no extension). This will enable ssh on boot
    4. Power up the raspberry pi with ethernet connected.
    5. Find the address of the pi by port scanning with a tool like Nmap or looking at your routers DHCP allocation table.
    6. Use a tool like Putty to ssh into the pi on port 23. User name “pi” Password: “raspberry”
    7. Its a good idea to change the password when you log in using the passwd utility
    8. Optional: since this is going to be a headless install it would be a good idea to lower the video memory using  raspi-config.
    9. Now run these commands to get Osmocom rtl-sdr up and running on the pi:
      sudo apt-get update
      sudo apt-get install git cmake build-essential libusb-1.0 libpulse-dev libx11-dev
      git clone git://git.osmocom.org/rtl-sdr.git
      cd rtl-sdr
      mkdir build
      cd build
      cmake ../ -DINSTALL_UDEV_RULES=ON
      sudo make install
      sudo ldconfig
  1. Now you should be able to run rtl_tcp -a IpAddressOfPiGoesHere If an error pop up like Failed to open rtlsdr device #0. run sudo rmmod dvb_usb_rtl28xxu rtl2832 This will prevent the pi from loading the stock drivers for the dongle.
  2. The pi now can be used as a remote rtl-sdr server

Mason Jar Hydroponics

The bucket system from a previous post was difficult to maintain. This was due to the fact that a 5 gallon bucket full of water weighs roughly forty pounds. Hauling that up my basement stairs to change out the water was not a fun task. This lead to trying to find a system that used smaller modular components to grow plants.

Parts Needed:

  • Wide mouth half gallon ball jars
  • Wide mouth plastic ball jar lids
  • 2″ net cups
  • 2″ hole saw
  • Tetra 77851 Whisper Air Pump, 10-Gallon
  • Tubing 1/4″ OD 3/16″ ID. This might be thicker than typical aquarium tubing.
  • Backflow valve
  • T valve
  • Small air stone
  • Rain Bird TS25/10PS Drip Irrigation 1/4″ Tubing Stake with Bug Cap Diffuser
  • rockwool cubes
  • fertilizer
  • 2″ hole saw
  • drill
  • drill bits

Assembly of the ball jar lids is pretty simple. Clamp the lid loosely in a vice and drill a 2″ hole with the hole saw for the net cup. Next drill a smaller hole so you are able to press fit the bug guard from the drip irrigation stakes. This part allows for the air tubing to be press fit into the jars for easy removal. After that plumb up the air pump add some water and the system is ready to grow plants.

Portable Battery Power Box

This post will discuss the construction of a portable battery box. The box was constructed to house a 12V 7AH sealed lead acid battery.


Parts Needed

  1. Plano Tactical Custom Ammo Box http://amzn.to/2ygsizL
  2. Schumacher SEM-1562A-CA 1.5 Amp Speed Charge Battery Maintainer http://amzn.to/2yiiqWc
  3. 12V 7 Amp Rechargeable Lead Acid Battery http://amzn.to/2yQhup9
  4. 12V Battery Low Voltage Cut off Switch PCB (see schematic for photo)
  5. Fuse Holder http://amzn.to/2xL0Siz
  6. Fast-blow Glass Fuses http://amzn.to/2x7bgiP
  7. 4 in 1 Socket Charger Panel http://amzn.to/2xKlQOo
  8. Schumacher WM-12 Cable Connector http://amzn.to/2xSR4oJ
  9. 100x68x50mm Project Box
  10. 1/2-Inch Hole Grommets http://amzn.to/2yPoF0J
  11. Wire
  12. Heat Shrink Tube http://amzn.to/2xTxHf6
  13. Crimp Connectors http://amzn.to/2xPWCzM


The battery was wired with the SAE (WM-12) connector that came with the battery maintainer. This allows for the battery to be connected to the battery maintainer to keep the battery in good condition. The battery box uses the secondary SAE (WM-12) connector that was purchased to connect the battery to the electronics. The Battery positive is run through a 10 AMP fast blow fuse. Then the voltage goes onto the low voltage cut off switch. This will prevent the battery from over discharging and damaging itself when in use. After that the voltage passes through the panel mount switch.  Next the panel meter, USB, and Lighter sockets are all wired in parallel.

The low voltage cut off switch and fuse holder are located in the 100x68x50mm Project Box. This was done to provide mechanical protection for the PCB and to also electrically isolate it since it otherwise would have been floating around in the ammo box.

The battery should not be charged with the box lid closed.

Here is a schematic:



Wireless RS-232 with ESP-Link and an ESP8266

This will show how to create a wireless WIFI serial port. This is accomplished by flashing esp-link onto an ESP8266 and using a  level shifter to convert 3.3V signals on the ESP8266 to computer levels.

Parts Needed:

  • nodemcu amica R2
  • RS-232 Level shifter using a MAX3232 Available from ebay by searching “MAX3232 converter” make sure you get one with four pins like this photo:


  • PCB Order from OSH Park
  • Micro USB cable
  • Micro USB 5V power supply for ESP8266
  • Windows PC
  • Optional RS-232 Loopback
  • Optional RS-232 DB9 gender changer


Flashing the nodemcu amica:

  1. Get the latest esp-link firmware from https://github.com/jeelabs/esp-link/releases
  2. Download the Nodemcu flashing software at https://github.com/nodemcu/nodemcu-flasher/archive/master.zip
  3. Connect the nodemcu amica to the computer using a USB Cable
  4. Setup the Nodemcu flashing software to flash the correct firmware files at the correct memory addresses See https://github.com/jeelabs/esp-link/blob/master/FLASHING.md for details: Flash
  5. Make sure that the checkbox is checked for all the files. It appears to not flash the file if it is unchecked:


Now you should be able to hit the flash button:


Setting up the esp-link software:

  • On a computer look for an open wifi hotspot with a name like  ESP_[??????] and connect to it.
  • In a web browser navigate to
  • On the right hand side of the website click on the Wifi Soft-AP and configure your SSID and add a password if you want. Note you will have to re-connect to the device if you change the SSID or password.
  • On the home tab configure the GPIO using the presets drop down choose the ESP-12 swapped option:


  • On the debug log tab turn off debugging since it will echo on the serial port:



The PCB connecting the ESP8266 and the level shiftier will need to be soldered as shown in this photo:


If you are unsure of the orientation make sure that the VCC and Grounds of the ESP8266 module are connected to the respective VCC and GND pins on the level shifter.

Testing and Use

The esp-link software has a built in serial terminal that works OK for a quick test. It is located on the uC Console tab. A quick way to test if everything is working is to use a loopback. The loopback can be as simple as connecting pins 2 and 3 of the dsub on the level shifter together. When the loopback is attached anything typed should be echoed in the console. When it is disconnected no echoing should occur.

The serial port can also be accessed using telnet. This can be done using a telnet client like PUTTY http://www.putty.org/

Connect to the device on port 23 using telnet

Network Attached GPIO with HP Jetdirect

The goal of this is to create some network attached GPIO with some of the HP Jetdirects in my junk box. Here are some of the web sites used to figure this out:

As far as hardware the project was started with a Jetdirect 300x this was replaced with a 170x. The 300x has 10/100 base t which is why it was initially chosen. This was later replaced with the 170x which is only 10 base t. If you are looking to buy hardware, shoot for the 170x. The 300x, at least the one tested, does not appear to be as stable as the 170x.

The Jetdirects did not come with a power supply. The power connector was a somewhat weird diameter. Sourcing the power supply on Ebay proved more time consuming and expensive than desired. The search did lead to this listing which is hilarious.  Just picture a person driving with a wired network and a printer in their car. No one probably ever buys this…


The easiest solution for this was to pop open the case and solder some wires to the power connectors. That was also a problem since HP was nice enough to use some super tiny Torx security bits. A quick trip to the hardware store and the screws were no match for my new set of security screwdriver bits.

These wires were then attached to a surplus 12v wall wart.


For testing a PCB was created and the design was sent to https://macrofab.com/.


The original PCB did not have the connection on the DB25 connector between pins 1,  10, 13 and 15. This was added later on with some red 30 awg wire wrap wire.

The first problem that was encountered was finding the Jetdirect’s IP address. Usually this would be a simple task. All that would be required is holding down a button on startup and the jet direct would print out a configuration page that lists its IP address. This would be easy other than the fact that I no longer own a printer with a parallel port interface. The device is supposed to have a default IP of so that was tried first. After some reading it appears that if the device is power cycled while holding the
“test”button and releasing after 5 seconds it will go into reset and have factory defaults. After this was accomplished it was possible to ping, telnet and connect to the device using a web browser.


The telnet interface looked somewhat primitive so I opted for the web interface. The web interface failed to load in chrome so IE was tried. IE gave this lovely error:


After updating Java and adding the IP to the trusted sites in the java control panel, the web interface still did not work.


After some reading this is due to stricter security in the newer versions of Java. The work around for this was to use the telnet interface.


The jet direct’s default IP address of was not convenient so it was changed to be in the 192.168.1.xxx range. This was done by issuing the command ip: (or whatever IP you want) hitting enter then typing quit. After that wait one minute and power cycle the Jetdirect. The Jetdirect should now show up hopefully at the new IP. One other setting also needs to be set to gain control of the Jetdirect’s parallel port. The “set cmnty name” setting also needs to be set. This can be done by sending set-cmnty-name: private then typing quit.

One more thing needs to be done to trick the Jetdirect into thinking it has a printer attached. This is setting the npPortCentronicsHandshaking value in the jet direct. This was done with SNMPGetSet available here: http://www.fileguru.com/SNMPGetSet/download. The register is set by putting the value of into the OID box at the bottom of the form. Once that is done hit the SNMPGet button. The returned value should be 3.


To set the value change the value in the box to 2. After changing the value of 2 make sure that you set the value type to ANS1_INT. Then press the SNMPSet Button.  If you do not change the value type the setting will not save.  You can confirm the setting was saved by pressing the SNMPGet button again.


If everything is working correctly the Jetdirect should now be able to be controlled. To verify everything is working correctly first check to see if the Jetdirect will open port 9100. This can be done from a Unix shell with netcat. Command nc -vz 9100 you should see  [tcp/*] succeeded! if everything is working. If that does not work try port 23. If you can connect on port 23 but not on 9100 the Jetdirect does not think a printer is connected. Check your wiring especially on pins 1,  10, 13 and 15.

If everything works the fun begins. A printf "\xFF" | nc 9100 should turn on all the leds.

A sample program was constructed in C# to simulate the Knight Rider dash or a Cylon.

Here is the code: https://github.com/mdunakin/JetDirectDemo

Here is a video of the code running: