Category: Raspberry PI
Raspberry Pi Magic Mirror
Monitor your Internet with a Pi
I plugged the AMD Radeon RX 6700 XT into a Raspberry Pi
Raspistill is still better
[Streaming Video Using VLC Player]
[How to Stop VLC Player from Automatically Resizing to Fit Video Resolution (on Desktop)]
raspivid -o – -t 0 -n | cvlc -vvv stream:///dev/stdin –sout ‘#rtp{sdp=rtsp://:8554/}’ :demux=h264
Terminal command streams video
VLC connects to the stream with Media->Open Network Stream
rtsp://IP_ADDRESS:8554/
libcamera Replaces raspistill
[How To Use Raspberry Pi Cameras with Bullseye]
sudo apt-get -y dist-upgrade sudo apt-get install --reinstall libegl1 libgles2
4 Pis on a mini ITX board! The Turing Pi 2
List PCI connected devices:
lspci
NodeJS – Use Express to Serve Pictures Captured on a RPI Without Saving To Disk
How to Install Node.js and npm on Raspberry Pi
[How to Install Node.js and npm on Raspberry Pi]
curl -sL https://deb.nodesource.com/setup_12.x | sudo bash –
sudo apt install nodejs
Visual Studio Code on Raspberry Pi
NodeJS: pi-camera module
The [pi-camera] module is able to capture from the RPI camera and display on a webpage without saving to disk.
Raspberry PI Imager
RPI – Home Assistant
The open source [Home Assistant] is perfect to run on a Raspberry Pi.
Pi PoE Switch HAT – Power over Ethernet for Raspberry Pi | Unboxing & First Look
The New Raspberry Pi HQ Camera Is Awesome! – Set Up And Testing
Raspberry Pi Projects 2020
How to assemble and connect a Raspberry Pi 4 (Model B 4 GB) DIY
Fan red wire goes to pin 4. Fan black wire goes to pin 6.
~/Desktop/blog.desktop
[Desktop Entry] Type=Link Name=TAGENIGMA Blog Comment=blog Icon=/usr/share/pixmaps/openbox.xpm URL=http://tagenigma.com/blog
Pi-Hole Router Filtering
[Pi-Hole] can filter unwanted traffic between your ISP and router.
RPI2 Cover Attachment to Mount Fixed Camera
I made a camera mount that attaches to the lid of my RPI2.
And one for RPI3.
A better Python script for uploading images
Install the [poster] module by running the command-line:
sudo pip install poster
UploadImage.py (RPI)
#!/usr/bin/env python import urllib, urllib2, os, os.path, sys from poster.encode import multipart_encode from poster.streaminghttp import register_openers from time import sleep register_openers() query = { 'id' : 1 } url = "http://domain.com/path/save_image.php?"+urllib.urlencode(query) filename = '/dev/shm/mjpeg/cam.jpg' #print 'Saved: '+filename; while True: try: if (os.path.isfile(filename)) : values = {'image':open(filename)} data, headers = multipart_encode(values) headers['User-Agent'] = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers['filename'] = filename req = urllib2.Request(url, data, headers) req.unverifiable = True content = urllib2.urlopen(req).read() except: print 'Upload failed.'; sleep(1)
Edit the crontab.
sudo crontab -e
Add the following to the end of the crontab.
0 * * * * /sbin/reboot @reboot python /home/pi/Documents/GetMacAdx.py & @reboot python /home/pi/Documents/UploadImage.py &
Reboot the Raspberry PI and the security camera is ready to go!
save_image.php (Server)
<?php if (!isset($_GET['id'])) { echo ('Invalid request!'); exit(0); } $id = intval($_GET['id']); $image = $_FILES["image"]; if ($image == null) { echo ("Missing image!"); exit(0); } else { echo "Saved image!"; $filename = "image" . $id . ".jpg"; $tmp_name = $_FILES["image"]["tmp_name"]; move_uploaded_file($tmp_name, $filename); } ?>
[Setup wifi on the command-line]
Turn off the camera LED by adding the following to the end of the file.
/boot/config.txt
disable_camera_led=1
Reboot Raspberry PI at Midnight
[Reboot automacticly at midnight]
In the terminal:
sudo crontab -e
Add the one of the lines:
At hour 0 – At midnight
0 0 * * * /sbin/reboot
At minute 0 – Every hour
0 * * * * /sbin/reboot
Control your LEDs with your TV remote?! || Arduino IR Tutorial
I created a [XamarinFormsIoT] Windows Core IoT project which can control LEDs and play sounds on a Raspberry PI 3 using C#/XAML. I used a portable dependency interface to expose the GPIO controller which only exists in the UWP project. GPIO is used to control the LEDs. I also ordered an IR receiver so I can detect IR signals from a remote and it works!
Next I need to [find] a UWP library for LIRC.
The [Arduino-IRremote] has a C++ library that can be converted to UWP.
I followed the idea from the video below.
[How to Control the GPIO on a Raspberry Pi with an IR Remote]
Adafruit: [IR (Infrared) Receiver Sensor]
[Raspberry Pis, Remotes & IR Receivers!]
[Play wav file in Raspberry PI with Windows IoT Core]
RPI: Configure Network Wifi Via the Command Line
Chirping Plush Owl Toy with Adafruit GEMMA
Raspberry PI 2 with Leap
The Leap Motion Controller requires ARM-9 or better and to make work with the Raspberry PI 2 I used a proxy HTTP server to work with the Raspberry PI 2. The Raspberry PI 2 controls servos based on the data from the leap. Each finger on the leap controls a different servo.
The project in action:
Details about the code:
The proxy sends JSON data for the finger rotations (in degrees).
{ "thumb": 27.815885630721692, "index": 8.8111549114070726, "middle": 16.216426372741033, "ring": 29.267951404867844, "pinky": 86.043786182477533 }
The script: `LeapServos.py`
#!/usr/bin/env python import RPi.GPIO as GPIO import datetime import time import urllib2 import threading import json servo_pin2 = 18 servo_pin3 = 22 # 60 degrees / 0.1seconds servo_speed = 0.1 GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) GPIO.setup(servo_pin2, GPIO.OUT) GPIO.setup(servo_pin3, GPIO.OUT) last_time = datetime.datetime.now() current_time = datetime.datetime.now() accuracy = 0.01 rotation1 = 90 rotation2 = 90 rotation3 = 90 rotation4 = 90 rotation5 = 90 timeRotation1 = 0 timeRotation2 = 0 timeRotation3 = 0 timeRotation4 = 0 timeRotation5 = 0 targetRotation1 = 90 targetRotation2 = 90 targetRotation3 = 90 targetRotation4 = 90 targetRotation5 = 90 pulse2 = GPIO.PWM(servo_pin2, 50) pulse3 = GPIO.PWM(servo_pin3, 50) logTime = datetime.datetime.now() stayAlive = True def getRotation(rotation): if (rotation > 90.0): return 180 if (rotation > 45.0): return 90 else: return 0 def newTarget(): global targetRotation1 global targetRotation2 global targetRotation3 global targetRotation4 global targetRotation5 while (stayAlive): content = urllib2.urlopen("http://192.168.2.97").read() #print (content) jsonObject = json.loads(content) #print (jsonObject) #for key in jsonObject: # print (key) #print ("index: " + str(jsonObject["index"])) targetRotation1 = getRotation(jsonObject["thumb"]) targetRotation2 = getRotation(jsonObject["index"]) targetRotation3 = getRotation(jsonObject["middle"]) targetRotation4 = getRotation(jsonObject["ring"]) targetRotation5 = getRotation(jsonObject["pinky"]) time.sleep(0) print ("Thread complete.") return webThread = threading.Thread(target=newTarget, args=(), kwargs={}) webThread.start() def log(): global logTime global timeRotation2 global timeRotation3 global targetRotation2 global targetRotation3 if (logTime < datetime.datetime.now()): logTime = datetime.datetime.now() + datetime.timedelta(0, 0.5) #print "****" #print ("2: TargetRotation: " + str(targetRotation2) + " Time: "+str(timeRotation2)) #print ("3: TargetRotation: " + str(targetRotation3) + " Time: "+str(timeRotation3)) return def reset(pulse): pulse.start(7.5); pulse.ChangeDutyCycle(7.5) time.sleep(0.5) pulse.ChangeDutyCycle(0) return def compare(timeRotation, rotation, targetRotation): global deltaTime if (timeRotation >= 100): return 0.25 elif (rotation == targetRotation): if (timeRotation >= 0.0): return timeRotation - deltaTime.total_seconds() else: return timeRotation; else: print "targetRotation changed." return 100 def update(pulse, timeRotation, targetRotation): cycle = 0 if (timeRotation >= 100): cycle = 0 if (targetRotation == 90): cycle = 7.5 elif (targetRotation == 0): cycle = 2.5 else: cycle = 12.5 print ("Cycle: "+str(cycle)) pulse.ChangeDutyCycle(cycle) elif (timeRotation >= 0.0 and ((timeRotation - deltaTime.total_seconds()) <= 0.0)): pulse.ChangeDutyCycle(0) print ("Cycle: "+str(cycle)) return targetRotation try: reset(pulse2) reset(pulse3) time.sleep(1) print "setup complete" while True: last_time = current_time current_time = datetime.datetime.now() deltaTime = current_time - last_time; log() timeRotation2 = compare(timeRotation2, rotation2, targetRotation2) timeRotation3 = compare(timeRotation3, rotation3, targetRotation3) rotation2 = update(pulse2, timeRotation2, targetRotation2); rotation3 = update(pulse3, timeRotation3, targetRotation3); time.sleep(0); except KeyboardInterrupt: print '\r\nProgram shutdown.' stayAlive = False time.sleep(1) GPIO.cleanup(); print '\r\nProgam complete.'