I want to have wifi in my shed. This proved to be a difficult proposition since an all galvanized steel enclosure with a concrete base is pretty impervious to 2.5GHz and 5GHz radio waves.
I was planning to deploy a UDOO Neo in the shed so I decided to test various antenna and record signal strengths. With antennas bigger is usually better. So I had 3 sizes under test - 5, 7 and 9 dBi dipoles. I also hooked up a small OLED containing Arduino shield which I got a part of my attempts to monitor energy usage. I will eventually use the energy monitor in conjunction with solar panels.
The first step in testing external antennas is to switch over the capacitor on the UDOO Neo board which feeds the signal from the PCB antenna to the traces that connect to the external U.FL. connector. As well as solder on the said U.FL. connector. My SMD soldering skills came in handy and I got some help from the UDOO guys over twitter and the mod took only 10 minutes.
The 9dBi performed best at signal levels around -78 dBm from the main router within the house, channeled via an external repeater.
The final signal to the install in the shed is shown below:
udooer@tishneo:~$ iw dev wlan0 link Connected to 00:e0:20:41:ba:3c (on wlan0) SSID: bowireless freq: 2437 RX: 596935 bytes (4068 packets) TX: 261071 bytes (2021 packets) signal: -71 dBm tx bitrate: 19.5 MBit/s MCS 2 bss flags: short-slot-time dtim period: 3 beacon int: 100
Python wifi scanner with OLED display for UDOO NEOPython
#!/usr/bin/env python # Ported from: # https://github.com/adafruit/Adafruit_Python_SSD1306/blob/master/examples/shapes.py # Also includes wifi scanning from oled.device import ssd1306, sh1106 from oled.render import canvas from PIL import ImageFont import commands import re font = ImageFont.load_default() device = ssd1306(port=1, address=0x3C) if __name__=="__main__": scan_result = commands.getoutput("sudo /sbin/iw dev wlan0 scan") ssids = [x.group(0)[6:] for x in re.finditer("SSID:.*\n",scan_result)] signals = [x.group(0).lstrip("signal: ").rstrip(" dBm\n") for x in re.finditer("signal:.*\n",scan_result)] print ssids,signals with canvas(device) as draw: # Load default font. font = ImageFont.load_default() # Alternatively load a TTF font. # Some other nice fonts to try: http://www.dafont.com/bitmap.php # font = ImageFont.truetype('Minecraftia.ttf', 8) # Write all SSID's in brief y = 0 for ssid,signal in zip(ssids,signals): draw.text((0, y), ssid[:10], font=font, fill=255) draw.text((84, y), signal, font=font, fill=255) y += 10
Did you replicate this project? Share it!I made one
Love this project? Think it could be improved? Tell us what you think!