A beekeeping IOT project: A/V streaming and sensor monitoring of hive activity.
- Recommended for development: Raspberry Pi 4B
- Microphone: USB or Respeaker
- Ethernet or WiFi connection to the Pi with >= 10 Mbps up / down
- 32 GB high performance microSD card
- Preferably a card optimised for dashcam storage, e.g. Sandisk High Endurance
- Raspberry Pi Camera
- Insert the microSD card into your computer
- Confirm that it's the right card, and you've backed up anything important on it!
- Download and run Raspberry Pi Imager
- Choose operating system
- Under Raspberry Pi OS (other), choose Raspberry Pi OS Lite (32 bit)
- Choose the correct microSD card
- Write
- Remove the microSD card
- Re-insert the microSD card
- Navigate to the microSD in a terminal window, e.g.
cd /Volumes/boot
- Run
touch ssh
to enable SSH access - If using WiFi:
- At the root of the microSD card (e.g.
/Volumes/boot
), create awpa_supplicant.conf
file, replacing the ssid and psk with the WiFi name, password, and security method as appropriate:
country=GB # Your 2-digit country code
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
network={
ssid="YOUR_NETWORK_NAME"
psk="YOUR_PASSWORD"
key_mgmt=WPA-PSK
}
- Unmount (software eject) the SD card
- Remove the microSD card
- Insert the microSD card into the Pi
- Power on the Pi
- Access the Pi using SSH in a terminal window:
ssh pi@raspberrypi
- If the Pi cannot be found, use your router's interface or networking tools (e.g.
arp -a
) to identify the pi's IP address, and SSH in using that, e.g.pi@192.168.1.177
- Log in using the default password of
raspberry
- Configure the Pi
- Run
sudo raspi-config
- Select
1 System Options
- Select
S3 Password
- Change the password for the Pi user. Generate a secure password with a tool like LastPass. Store the password securely in a password manager
- Select
1 System Options
- Select
S4 Hostname
- Change the hostname of the Pi to a memorable name. Store the hostname somewhere safe, as it will be needed to log in again (ideally alongside the password in a password manager)
- Select
3 Interface Options
- Select
P1 Camera
- Select
Yes
to enable the Pi camera - Select 3 Interface Options
- Select P5 I2C
- Select Yes to enable I2C (for environment sensing)
- Exit
raspi-config
- Restart the Pi with
sudo shutdown -r now
- SSH back into the Pi, using the new hostname. Test that the new password works correctly
- Test that the camera is working:
- Take a test image with
raspistill -o test.jpg
- Copy the test image to your machine with
scp pi@hostname:/home/pi/test.jpg .
(replace the last dot with the preferred destination on your machine) - Open the image and verify the picture has taken
- Take a test image with
- Use
exit
to disconnect from the Pi
- Run
- Set up public key authentication
- If you do not already have a keypair on your computer, create one with
ssh-keygen
- Copy your public key onto the pi with
ssh-copy-id pi@hostname
- Authenticate with the Pi's password
- You should now be able to SSH in without a password
- If you do not already have a keypair on your computer, create one with
- Ensure the Pi is updated to the latest version
sudo apt-get update && sudo apt-get upgrade
- Install Docker
curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh
- Install docker-compose
sudo apt-get install -y libffi-dev python python-pip python3 python3-pip && sudo pip3 install docker-compose
- Allow the
pi
user to run Dockersudo groupadd docker ; sudo usermod -aG docker $USER
- Logout with
exit
and log back in - Confirm the
pi
user can run Docker withdocker run --rm hello-world
- Confirm microphone presence and set microphone volume
- Run
alsamixer
- Press F6: select the sound card: e.g. typically "USB PnP Sound Device" for a USB microphone
- Press F4: a microphone capture device should be available
- Use the up / down arrow keys to adjust the microphone volume. This can be tweaked later if needed. Recommend maxing out the white bar (but not going into the red bar)
- Press
Esc
to exit
- Run
- Clone the repository
- Install git with
sudo apt-get install -y git
- Clone the repository:
git clone https://github.com/harryjubb/bee_iot.git
- Install git with
- Run the hive software
cd bee_iot/hive
- Set up libraries for picam (only required once)
$(cd ./services/av_streaming/picam && sh copy_libs.sh)
cp .env.example .env
- Edit
.env
in accordance with the comments in that file - Run with
docker-compose up -d --force-recreate --build --remove-orphans
- Check the logs for success with
docker-compose logs -f
TBA
docker-compose -f docker-compose.yml -f docker-compose.production.yml up -d --force-recreate --build --remove-orphans