Cheese making

From Real Vegan Cheese
Revision as of 19:03, 4 April 2014 by Juul (talk | contribs)
Jump to navigation Jump to search

In parallel with the synthetic biology work, we are experimenting with cheeses made from powdered purified casein, and using vegan oils to replace milkfat. This page documents our cheese-making efforts.

Electric cheese cave

Most hard cheeses that are the least bit interesting need to be aged at colder than room temperature and high humidity. We've built a wifi-enabled cheese cave out of modified wine chiller.

The cheese cave is based around a "Haier 18-Bottle Thermal Electric Wine Tower" that we found for $40 on craigslist. This is an upright wine chiller that uses two large peltier modules with heatsinks and fans to chill the bottles.

Arduino and sensor

The temperature and humidity are read every second using a 3.3 volt Arduino Pro and a SHT15 sensor breakout board from Sparkfun.

The arduino is powered by 3.3v coming from the wifi router and communicates with the router using TTL serial.

The sensor communicates with the Arduino using 2-wire.

Wifi router

A Linksys/Cisco WRT160NL router was flashed with OpenWRT version 12.09 Attitude Adjustment. OpenWRT was configured to use an external usb flash drive as its root partition (extroot). Avahi was installed and the hostname set to cheese, such that any mDNS compatible operating systems are able to access the router through the domain name cheese.local.

A simple web server was written in lua to read the temperature and humidity from the Arduino and display it on a web page such that the status of the cheese cave can be monitored by accessing http://cheese.local in a web browser.

Physical modifications

The wine shelves were cut to make them flatter and a sushi mats was places on each shelf.

Wires were run into the chiller by un-mounting the bottom peltier module, cutting a small amount of insulation away, running the wire through and re-mounting the peltier module. One 110 vac power cord was run for the humidifier and a communications cord was run for the temperature/humidity sensor.

ToDo

  • Allow changing humidity set-point from the web app
  • Allow changing temperature set-point from the web app
  • Write step-by-step guide for replicating the electric cheese cave

OpenWRT configuration

The following assumes some knowledge of networks and *nix command line.

Go to the OpenWRT table of hardware and find the wiki page for your router. It will tell you how to flash it with OpenWRT. You should use a wifi router that has the following minimum specs:

  • Atheros chipset
  • 32 MB ram
  • 4 MB flash
  • USB
  • Supported by OpenWRT

After flashing, telnet into the router using:

telnet 192.168.1.1

Set the root password:

passwd

Now exit the telnet session and log in with ssh instead:

ssh root@192.168.1.1

Wifi setup

We'll set up the router to connect to your existing wifi access point as a client (you could also connect it using wired ethernet if you prefer, which should not require any configuration, provided your router has a wan port).

Edit the "config wifi-iface" section in /etc/config/wireless (using vi) too look like this:

 config wifi-iface
     option device   radio0
     option ifname   wlan0
     option network  wifi
     option mode     sta
     option ssid     myaccesspoint
     option encryption none

Replacing myaccesspoint with your wifi access point name. If the access point is password protected you will have to specify the encryption method and password.

In the same file, remove the following line:

     option disabled 1

Now edit /etc/config/network, adding the following section to the end of the file:

 config interface 'wifi'
       option ifname 'wlan0'
       option proto 'dhcp'

If you're planning on using the router on a network that uses 192.168.1.x IP addresses, then you should change the line "option ipaddr '192.168.1.1'" to e.g:

option ipaddr '192.168.2.1'

If you change this, then you'll have to use this new ip addr connecting to your node with ssh in the future.

Now reboot the router. When it finishes booting, ssh back into it and check if the internet is working:

ping sudomesh.org

USB extroot

Now you can set up extroot to use a flash drive as your root partition. Take a usb flash drive, and plug it into a normal linux system (e.g. debian). It should show up as e.g. /dev/sdb (you can check using dmesg). First unmount it in case it's mounted:

sudo umount /dev/sdb1

Now change the flash disk partition type to linux:

sudo fdisk /dev/sdb 
At the fdisk menu, hit:
  t <enter>
  83 <enter>
  w <enter>
  ctrl+c

Format the flash drive as ext4:

sudo mkfs.ext4 /dev/sdb1

Now plug the usb flash drive into your router and ssh into the router. The rest of the commands in this section take place on your router.

Install the required packages for extroot:

opkg update
opkg install blkid block-mount kmod-fs-ext4 kmod-lib-crc16kmod-nls-base kmod-scsi-core kmod-usb-core kmod-usb ohci kmod-usb-storage libblkid libuuid swap-utils

Change the section "config mount" in /etc/config/fstab to look like this:

 config mount
       option target   /
       option device   /dev/sda1
       option fstype   ext4
       option options  rw,sync
       option enabled  1
       option enabled_fsck 0

Now mount the usb drive and copy the filesystem:

mkdir /tmp/mnt
mount /dev/sda1 /tmp/mnt
cd /
cp -a bin etc lib rom root sbin usr var www /tmp/mnt/
cd /tmp/mnt
mkdir dev mnt overlay proc sys tmp
sync
cd /
umount /tmp/mnt

If the following command gives any output after rebooting, then you are now using extroot:

mount | grep sda1

Avahi (mDNS)

To set up mDNS, first install avahi-daemon:

opkg update
opkg install avahi-daemon

Make it work without d-bus by adding this line to the [server] section of /etc/avahi/avahi-daemon.conf:

enable-dbus=no

Make it auto-start on boot:

/etc/init.d/avahi-daemon enable

Change your hostname to something relevant by editing the hostname option in /etc/config/system (maybe set it to cheese so you can use cheese.local to access the cheese cave).

Start avahi:

/etc/init.d/avahi-daemon start

Wiring notes

Communications cables between sensor, router and arduino take place over old PS/2 cables that have been cut and soldered onto the different devices. These cables are shielded, easy to get for free, and the plugs make it easy to disconnect and reconnect components.

From router:

  • RX: Brown
  • TX: Orange
  • 3.3v: Green
  • GND: Ground (shield)