So you go on holiday and you take your tablets, laptop, phones and other stuff that connects to wifi. You then have to go and enter the new network details into each device to the new network and you put the details away and then find there's something else you haven't connected.
Wouldn't it be nice to take your own wifi connection with you.
So, I had a spare Raspberry Pi zero W version 2, broken camera port, a nice little case, a micro USB to large USB adaptor and some hot glue. All I needed was a second wifi adaptor.
I got this one from our friends at Amazon.
You don't have to get this one, I bought it and it works but feel free to try out any other ones.
First thing of course is to install Raspbian onto the Pi. I've gone for the lite 32 bit version. No desktop but it really isn't a problem. I'm not going through the setup process as if you can't do that you shouldn't do this. And all the config is done through ssh to the onboard wifi. Anything below that's in bold and italics is ok to copy and paste.
Once you have finished setting it up, plug the adaptor in and you'll find like I did that although it's detected it doesn't work, yet.
The documentation with the adaptor gives you a link to the manufacturers website.
On the webpage it tells you to run the following.
sh -c 'wget linux.brostrend.com/install -O /tmp/install && sh /tmp/install'
It takes a while and then it just works, you'll have the onboard adaptor of wlan0 and this one wlan2.
Now we start doing other things and getting some software installed.
sudo apt install hostapd dnsmasq mc
I like mc, it's like Xtree Gold from the old dos days and is a great way to navigate the file system.
Paste this in, changing the country code to where you live, the ssid to the same as your home one if you want and the passphrase needs to be changed too.
country_code=UK
interface=wlan1
ssid=SSID
hw_mode=g
channel=7
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=PWD
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
Now we run this to get it starting up when the pi boots.
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd
Then give it one final reboot and you should see a new wifi connection pop up.
That's about it really.
Thanks to hackster.io for the initial guidance and Github for a little help in making it work.
You can use just about any Pi for this, seems to work quite well and I may even add a connection to my vpn from it.
If you want to connect the Pi to a different wifi connection when you're away and travelling, boot it up, ssh into it and run
sudo raspi-config
Select option 1
Then select S1 and enter the wifi connection details there. There may be a more elegant way like setting up a graphical desktop but this is nice and minimal and it works.
Here's some pictures of the complete thing with a few magnets attached to the back to make it easy to stick to things. And yes, I went overboard with the hot glue gun as I was going to make something that was waterproof first.
I want to be able to play music from my PC, phone tablet to my hifi system which is on the other side of the room. Bluetooth seems to drop out and I mostly use Spotify or Itunes as a music player.
I thought I'd have a look at what could be done with a Raspberry Pi and an external sound card to improve the standard sound quality. In the end I tested this out with a Raspberry Pi zero W which worked quite well and ended up running it on a Raspberry Pi Zero 2.
For Spotify to work you do need Spotify premium but iTunes will work quite happily with local files.
I'm not going through with how to install Raspbian onto an SD card and configure the wifi settings here.
Here's the sound card I got hold of from Amazon. £6.99 and it seems to work quite well. You'll also need an adaptor to connect this to the micro USB socket if you're using a Pi Zero.
Once that's all connected it together and you have Raspbian Lite installed on an SD card it's time to get it up and running
As always let's update the os first.
sudo apt-get update
sudo apt-get upgrade
Then we use the following line to install raspotify
curl -sL https://dtcooper.github.io/raspotify/install.sh | sh
Once it's completed we can edit some settings with:
sudo nano /etc/raspotify/conf
Look for the following line.
# Device name.
# Raspotify defaults to "raspotify (*hostname)".
# Librespot defaults to "Librespot".
# LIBRESPOT_NAME="Music1"
Uncomment the last line and change the Music1 to whatever you want to call it.
Now we activate the USB sound card
sudo nano /usr/share/alsa/alsa.conf
defaults.ctl.card 0
defaults.pcm.card 0
Change the above to the settings shown below
defaults.ctl.card 1
defaults.pcm.card 1
Save the file and then run sudo alsamixer
This should show the display below, just turn the sound all the way up.
If you now run sudo service raspotify restart you should see the device name showing up in your Spotify client, if you connect the audio output to your hifi you can play music from your devices to it.
Now we're going to add Airplay support for Itunes.
The original PiCorder worked, took ages to start recording and I couldn't hear what I was recording as it was being recorded, it was time for a rethink.
I decided to throw away the original idea and add a small USB sound card, this is what I got in all for it, apart from the Raspberry Pi Zero W of course.
These are fantastic, reversible USB micro leads, not USB C, USB micro, they can go in either way around.
I got them from Amazon, £7.99 for 2, there are probably other places so please shop around/
This is the mic I got, again from Amazon, £7.59, you can probably use any mic with a 3.5mm jack, I didn't have one so this did the job.
Nice little case for it all to go in, as it's transparent you can use the onboard LED as a sort of status thingy, Amazon again and £8.99
Then there's the sound card, there's quite a few of these about, I got two and they seem to work quite well to be fair. Again from Amazon at a cost of £7.59.
You don't have to get one of these but in my mind it makes the sound card fit better with the case. Cost for the two is £5.10 from Amazon.
Power was the next thing on my shopping list, I got one of these, mainly because I liked the look of it and if you press the test button on it then it turns the power back on, more on that later. I managed to get one from Morrisons at £9.99.
And last but not least apart from the Raspberry Pi itself was something to give me a bit of directionality without being too big and intrusive and was light. I looked at bullet mics and parabolic dishes and although the dish itself probably gives the best results I fell back on the idea of the really old hearing aids, basically a funnel. I found these in Poundland and managed to get some grey ones.
You need a micro SD card too of course, I got a 32GB one, I would suggest getting a decent make, I got some cheap ones and they gave up after about a week.
Put together will all the magic stuff from a glue gun and the old favourite Blu Tack and it looks like this, the special effect guys from Blakes 7 couldn't have done better. You have a headphone socket so that you can hear what you're recording and you can collapse the funnel back to make it less obtrusive. It's not brilliant but it works, the funnel does get rid of some outside noise and I'll include some sound samples later on.
I also added some small push buttons, top one is connected to GPIO 3 and ground, the bottom to GPIO 13 and ground. I soldered these directly to the board but you can break it and the warranty is void of course.
Time to put it all together now, I'm not going through how to install the OS onto the SD card, I used Raspbian Lite for it, don't really need a desktop environment and it's all set up by SSH so make sure that's enabled.
We're going to have to get the sound card working first and change the playback and sound levels, run the following:
sudo nano /usr/share/alsa/alsa.conf
defaults.ctl.card 0
defaults.pcm.card 0
Change these to a 1 as shown below.
defaults.ctl.card 1
defaults.pcm.card 1
Run sudo alsamixer and you should see this, select the Speaker and Mic and up the levels and we are now ready to get on with the rest.
We're going to turn off bluetooth as this seemed to be the cause of some electrical noise.
Open up the /boot/config.txt file with:
sudo nano /boot/config.txt
Add the following to the bottom of the file
# Disable bluetooth
dtoverlay=disable-bt
# Allows power off and on
dtoverlay=gpio-shutdown
Now we remove the bluetooth software
sudo systemctl disable hciuart.service
sudo systemctl disable bluealsa.service
sudo systemctl disable bluetooth.service
sudo apt-get purge bluez -y
sudo apt-get autoremove -y
Now reboot to continue, once it's back up you should find a press of the top button will shut the Pi down and once it's closed down completely the status lights on the charger will go off. Press the test button on the charger and the Pi will come back on.
I've made a small script called mtbootme which is in the bin folder, makes it easier to add things when it boots up, just run sudo nano /bin/mtbootme and add the following lines
# Turns the light off
echo 0 >/sys/class/leds/led0/brightness
# Makes the light flash
echo heartbeat >/sys/class/leds/led0/trigger
Save it and make it executable with sudo chmod +x /bin/mtbootme
Now we need a way of recording the sound and also of being able to monitor it while it's recording. There's probably a better way of doing it but I came up with this, there's about a second delay.
The bit of shell script I use checks for a file number, if it's not there it starts at 1, if it is there it adds a 1 to it.
sudo nano /bin/mtcapture
Paste this lot in
#!/bin/bash
# shuts down the wifi
ifconfig wlan0 down
# Turns the LED on fully
echo 0 >/sys/class/leds/led0/brightness
echo 1 >/sys/class/leds/led0/brightness
# sorts the file number
FILE=/share/filenum
if [ -f "$FILE" ]; then
echo "$FILE exists."
else
echo "$FILE does not exist."
echo "0"> /share/filenum
fi
read newfile < /share/filenum
echo $newfile
newfile=$((newfile+1))
echo $newfile > /share/filenum
# Records the noises
arecord -f cd - | tee /share/AudioTux1-$newfile.wav | aplay - &
echo $newfile
# updates the file number
echo $newfile > /share/filenum
Make it executable with sudo chmod +x /bin/mtcapture
That's how we start it recording, don't run this just yet as it will turn the wifi off and you'll lose your connection or rem out the wifi line while testing.
Now we do the stop recording file
sudo nano /bin/mtstop
#!/bin/bash
# Kill all recording services
pkill mtcapture
pkill mtcapture
pkill arecord
pkill aplay
# Starts up the wifi
ifconfig wlan0 up
# Flashes the green light so we know recording has stopped
echo 0 >/sys/class/leds/led0/brightness
echo heartbeat >/sys/class/leds/led0/trigger
Save it and make it executable again with sudo chmod +x /bin/mtstop
A bit of python now to monitor the stop start button.
sudo nano record.py
This lot goes in here.
# !/bin/python
import RPi.GPIO as GPIO
import time
from subprocess import call
import os
GPIO.setmode(GPIO.BCM)
GPIO.setup(13,GPIO.IN,pull_up_down=GPIO.PUD_UP)
flag = False
while True:
input = GPIO.input(13)
if(input == False):
if(flag == False):
os.system("/bin/mtcapture")
flag = True
time.sleep(0.4)
else:
os.system("/bin/mtstop")
flag = False
We don't need to make this executable to run it.
Finally we edit the rc.local file to get things working on startup
sudo nano /etc/rc.local
Add these two lines just before the exit 0 at the bottom
python2 /root/record.py &
/bin/mtbootme &
Save it and reboot and you're ready to go, one last thing I've done is to install samba so I can pull the files off it. All the recordings are saved in the directory /share.
Install Samba and MC, it's one of the first things I install as it makes navigating the structure and editing really easy.
sudo apt install samba mc
Once done edit the samba config file
sudo nano /etc/samba/smb.conf
Add this to the bottom[Shares]
path = /share
public = yes
browseable = yes
writeable = yes
delete readonly = yes
force create mode = 777
force directory mode = 777
writeable = yes
directory mode = 777
create mode = 777
Save it and restart samba with sudo service smbd restart
And you are now ready to go, once you've powered it up the green status LED should be flashing, plus some headphones into the socket and press the lower button and it should start recording, you'll hear a delayed sound in the headphones, press it again and it will stop.
It's not supposed to be a professional bit of equipment, it's small, it's light and it sort of works and more than anything it's a bit of fun and it will get you more involved with nature.
Advantages of the funnel at the end are that it's completely collapsible, you can put it in a pocket and fold it over as shown below and it still works. Disadvantages are that you look like a mad professor when you're out and about with it.
And finally some sample sounds, there's a bit of noise in the background which is from a nearby industrial unit,
Been a while since I've done anything on here, let's face it 2020 was a washout and the first bit of 2021 has gone that way too. It does mean that things at home have come higher up the list of things to do and one of those things was to add a camera to a Raspberry Pi, point it at the sky and take pictures. The main idea was to get some shots of the stars moving but the clouds looked interesting too.
The first attempt was a quick lash up stuck in a plastic bag to give it some water proofing and put on the floor in the garden out of site of the street light at the back. This was a Raspberry Pi 2 and the version 1 camera which can go down to about a 6 second exposure, nothing lower than that so the stars didn't really stand out that well and there is a lot light pollution too.
Here's my first test, not great but it seems to show a bit of promise if we can get a clear night and even more so if we could try somewhere with a darker sky.
The other plan or project was a camera at the from of the house which apart from doing some timelapse would also take a picture every day at dawn, noon and sunset for a year from the 21st of March. For no other reason than it can be done. The noon bit was fairly straight forward, the sunrise and sunset were going to be harder. Until I came across something called "Heliocron". You can use this app to run a task at various times of the day and it calculates sunrise and sunset for you. Many thanks to the author for this.
Let's get started with my SkyCam as I call it, to run properly the Raspberry Pi needs a connection to a network so it can get the correct time. I have a plan B for a travel version but I'll come back to that.
I'm going to build this with a Raspberry Pi 3, a version 2 camera which gives 8Mp and shutter speeds down to 10 seconds. I need a waterproof case so I can stick it outside and a power and ethernet lead out of it. There will be some code which I've borrowed and modified from various searches, I can't remember where I got them but if it's yours then it's much appreciated.
This may not be the best way of doing it but it seems to work.
The finished article looks like this, I've managed to find an old Tripod bush so I can mount it outside and adjust the position.
Using the above mentioned Heliocron, it changes the exposure settings as it gets darker and lighter to keep some detail. I'm not clever enough to get it to take a measurement and do it automatically.
The script that will be taking the pictures is called:
mtshutter
There's going to be a couple of versions of it called mtday, mtdusk, mtearly and mtnight.
I stick the mt in front as it makes them easier to find.
I'm storing them in the /bin folder, I can't see any reason as to why not but if I'm wrong I'm sure somebody will tell me.
They all look fairly similar except for the picture taking settings, starting with mtshutter:
The pictures once taken are stored on a small file server mounted at /mnt/webcam in their own folder called skycam1, there may be another one in the future. You can of course change the location to wherever you want.
Make these executable with chmod +x /bin/mtshutter and so on. All these do is take one picture, which isn't much use for a timelapse camera.
Next we make a script to continually take pictures
This is mttakepic
#!/bin/bash
for (( ; ; ))
do
sh /bin/mtshutter
done
All it does is continually call the mtshutter script
We can get this running as a service on startup by creating another file:
nano /etc/systemd/system/takepics.service
Paste this into it
[Unit]
Description=Take Pictures
After=network.target
[Service]
ExecStart=/bin/mttakepic
WorkingDirectory=/mnt/webcam
StandardOutput=inherit
StandardError=inherit
Restart=always
User=root
[Install]
WantedBy=multi-user.target
And activate it with systemctl enable takepics.service
All that will happen now is the service will start, take some pictures, it will get dark and you won't see anything till it gets light again, this is where the other files come in to play.
At the moment we are running the daytime script, as it gets darker we need to shift to the dusk option.
nano /bin/duskmode
#!/bin/bash
echo "Dusk Mode" > ~/mode.log
service takepics stop
sleep 1
cp /bin/mtdusk /bin/mtshutter
service takepics restart
sleep 1
Then
nano /bin/nightmode
#!/bin/bash
echo "Night Mode " > ~/mode.log
service takepics stop
sleep 1
cp /bin/mtnight /bin/mtshutter
service takepics restart
sleep 1
nano /bin/earlymode
#!/bin/bash
echo "Early Mode" > ~/mode.log
service takepics stop
sleep 1
cp /bin/mtearly /bin/mtshutter
service takepics restart
sleep 1
nano /bin/daymode
#!/bin/bash
echo "Day Mode" > ~/mode.log
service takepics stop
sleep 1
cp /bin/mtday /bin/mtshutter
service takepics restart
sleep 1
You will need to get Heliocron now which can be found here.
I've made it executable and again put it in the /bin folder.
These are coordinates for Swansea, you will need to get yours for it to work properly.
At certain time of the day, the mtshutter will be overwritten and hopefully, we'll get a proper series of pictures which can then be compiled into a timelapse movie.
I've used mencoder to do it, you can install it with sudo apt install mencoder, I've got another script called mttimelapse which consists of the following.