Resize Raspberry Pi image file 
Saturday, July 16, 2016, 10:13 PM - Tutorials
Posted by Administrator


Suppose you have your Pi perfectly configured on its 64GB SD card, and you want to back it up, and perhaps restore it onto a 16GB SD card. This introduces a problem -- even though your pi image may only be using 4GB or so, its backup img file will be 64GB. You can't restore a 64GB image onto a 16GB card.

AND... the backup image file is taking up more room than is needed.
AND... even if you do have a 64GB card to restore it onto, it takes forever.

This tutorial will walk you through resizing the img file down to the largest size that it really needs to be, perhaps 4GB or so.

Most of these steps were taken from:

First - shutdown pi, remove sd card, insert into another linux machine that has sufficient free space to copy the entire SD card (64GB card requires at least 64GB of free space).


Do each step below as root or with sudo:

1. backup the card to an image file.
dd bs=1M if=/dev/mmcblk of=myimage.img

2. mount the image as a loopback device
modprobe loop
losetup -f
losetup /dev/loop0 myimage.img
partprobe /dev/loop0

3. use gparted to resize to barely hold data, leave the rest as unpartitioned space
gparted /dev/loop0

4. exit gparted after resize is applied.

losetup -d /dev/loop0

5. use fdisk to view partition table:

fdisk -l myimage.img

Disk myimage.img: 14.9 GiB, 16012804096 bytes, 31275008 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xba2edfb9

Device Boot Start End Sectors Size Id Type
myimage.img1 8192 122879 114688 56M c W95 FAT32 (LBA)
myimage.img2 122880 8447999 8325120 4G 83 Linux

6. truncate everything after the "End" (+1 * 512) of the last partition:
truncate --size=$[(8447999+1)*512] myimage.img

7. restore image to sd card:
dd bs=1M if=myimage.img of=/dev/mmcblk

8. boot pi to image, use raspi-config to resize to fill card.
add comment ( 602 views )   |  permalink
Raspberry Pi Touchscreen Kiosk 
Saturday, July 16, 2016, 04:21 PM - Tutorials
Posted by Administrator

Raspberry Pi Browser Kiosk


So you've got a Raspberry Pi and a touchscreen, and you want to make it boot straight into a fullscreen web browser in kiosk mode. You also might want it to display a screen with some buttons that do things like reboot or shut down.



- A Raspberry Pi. This has been used on an original Pi B, and a Pi 3, so I figure it will work on pretty much anything in between.
- A touchscreen. This has been used with a couple of different touch screens. Getting your touchscreen to work is a whole nuther project. Here are the two I have used:
-- a very cheap HDMI+hat touchscreen, mounted to my Pi 3:
-- a very cheap hat-only touchscreen, mounted to my original Pi:


1. start with a working raspbian, and working touch screen

2. install the matchbox window manager and surf

sudo apt-get install matchbox-window-manager surf

3. create ~/.xsession file with the following:

surf &
exec matchbox-window-manager -use_titlebar no

4. reboot and observe that the pi boots to a kiosk screen

5. install the packages needed to get a webpage doing things like reboot or halt

sudo apt-get install suckless-tools lighttpd php5 php5-cgi
sudo lighty-enable-mod fastcgi-php
sudo /etc/init.d/lighttpd force-reload

6. give the www-data user access to shutdown/reboot.

add the following via visudo:
www-data ALL=NOPASSWD: /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/poweroff

7. create /var/www/html/kiosk.php, with the following:


if (isset($_POST['submit'])){
if ($_POST['submit']=='reboot'){
$cmd='sudo reboot';
$ret=exec($cmd, $out);
if ($_POST['submit']=='shutdown'){
$cmd='sudo shutdown -h now';
$ret=exec($cmd, $out);

// get ip address
$cmd='hostname -I';
$ret=exec($cmd, $out);

echo <<<eohtml
.formbutton {
width: 100px;
height: 50px;
Raspberry Pi Menu:<br>
IP: {$http_host}<br>
<form name="frm" id="frm" method="post" action="">
<input class="formbutton" style="background-color: #F30;" name="submit" type="submit" value="reboot"><br>
<input class="formbutton" style="background-color: #F30;" name="submit" type="submit" value="shutdown"><br>
<input class="formbutton" name="submit" type="submit" value="reload"><br>

8. modify ~/.xsession URL

Edit and point to http://localhost/kiosk.php and reboot
add comment ( 617 views )   |  permalink
Nerf Gun Robot 
Thursday, June 9, 2016, 03:41 PM - Robots, Programs
Posted by Administrator


This 4 wheel drive robot supports RC remote control, a headlight, a 2DOF arm with a gripper, remote Nerf gun firing, 5.8ghz video transmission, and automation via Raspberry Pi (not yet implemented).

Parts List:

4 x Pololu brushed DC gearmotors (2 with encodersj, 2 without)

4 x Pololu wheels

2 x Pololu motor mounting brackets (1 pair/pkg)

1 x Ion Motion 2x15A Roboclaw motor controller

Aluminum angles from Lowes - as needed to build frame.

2 x misc. servos for arm

1 x misc. servo for Nerf gun trigger

2 x misc. aluminum servo brackets (with bearing)
I can't find the ones that I usually get. I was getting them on ebay for around $4 each.

1 x ~5v headlight that can be turned on and off by simply removing or restoring power. Don't get one that uses a soft switch, because when you apply DC to those, they don't turn on until the button is pressed.

1 x Makeblock gripper

1 x Arduino Nano

1 x Arduino Nano breakout board

1 x Keystudio I2C PWM driver

1 x 5.8ghz video transmitter

1 x 12v camera

1 x Misc dual H Bridge, for controlling headlight and gripper

1 x electric Nerf gun. I used N Strike Elite

1 x 5v BEC for servo power and Arduino

1 x Misc 12v battery for video transmitter, camera, motor controller, and drive motors


Arduino Nano code is on my github:

add comment ( 561 views )   |  permalink
Remote Control and Thermometer for Cappuccino Machine 
Wednesday, November 18, 2015, 06:22 PM - Programs, Devices, IOT
Posted by Administrator


My cappuccino machine takes about five minutes to warm up, and I wanted to turn it on remotely over wifi when I wake up so that when I enter the kitchen in the morning I wouldn't have to wait for it to warm up. I also wanted to be able to tell whether or not it was warmed up, so I added a thermometer and a LED ring to display the temperature.

Parts List:

1 X ESP8266 ... ds=esp8266

Dallas temperature sensor ... V2RPBDKQ77

Adafruit Neopixel LED ring ... pixel+ring

PWM servo, a Hitec perhaps ... itec+servo

ESP8266 Code

The code is on my github:
add comment ( 546 views )   |  permalink
Sunday, June 14, 2015, 05:47 PM - Robots
Posted by Administrator


Atticbot is a remote control vehicle thing that I designed to remotely crawl around my attic and inspect the bats that had moved in. It's basically just a couple of continuous-rotation servos attached to a yardstick frame, a battery, an RC receiver, a video transmitter, and a camera.

Parts List:

2 x continuous rotation servos

2 x yardsticks for frame

1 x RC receiver - FrSky somethingorother
1 x RC transmitter - Turnigy 9XR-Pro perhaps
1 x 5.8ghz Video transmitter+camera
1 x 5.8ghz Video receiver/display

I've really skimped on details on this parts list. Email me if you have questions.

add comment ( 529 views )   |  permalink

<<First <Back | 1 | 2 | 3 | Next> Last>>