Open-source DIY Greenhouse Project


In a college class this last year, a group of us were assigned to design a system that would collect and graph environmental data from our campus greenhouse. We would take this data, graph it, and display those graphs on a public website. We’d also use current data to control the greenhouse (i.e. watering, heating, cooling…). Hopefully this information helps you if you are wanting to start your own DIY project and automate your greenhouse.

We decided to use an Arduino UNO, a PICAXE-14M2, and a desktop computer running Windows Vista. The Arduino functioned as the main interface and brain. We dedicated the PICAXE to simply reading sensors and sending that data in a continuous stream to the Arduino via a serial communication protocol.

The Arduino would format and send data to be logged to the PC, which runs MegunoLink. The Arduino would also decide, based on environmental conditions, if the heater/cooler/water should be turned on. Future groups working on the project would have to decided whether the Arduino would do this by sending a command to a dedicated microcontroller (reverse of what we did with the PICAXE being dedicated to sensors) or by directly controlling equipment in the greenhouse.

So, in essence, for this project, we figured out how to set up data logging and automation of the greenhouse environment using cheap materials and open source equipment.

In our report, we provide example code for both microcontrollers and discuss difficulties we ran into along the way. You can read this report by clicking on the PDF link below.

Final Report – COCC Greenhouse IT Group.pdf

IT Budget/Component Pricing.pdf

DATASHEETS:

 

Share via email
Share on Tumblr

OpenOffice and Java not Jiveing?

I recently installed OpenOffice on my computer again to experiment with some database ideas I have. I normally use my MS Office suite for document creation needs, although I have used OpenOffice a lot in the past.

For some reason, I couldn’t create a new database because OpenOffice said that I didn’t have the right version of Java installed or that it couldn’t find a valid installation.

I found an easy fix for this problem. You really just need to delete two files and you’ll be good to go. Since it can take a while to navigate to these files, it’s easier to just use Windows Search to find them for you.

  1. Close OpenOffice completely, including the Quick Start thing in the Taskbar
  2. Open Windows Search (Windows logo key Picture of Windows logo key +F)
  3. Type “javasettinsunopkginstall.xml”
  4. Delete the file.
  5. Search for “jvmfwk3.ini”
  6. Delete the file.

You should be good to go!

Share via email
Share on Tumblr

Windows Vista Install Problems with Audacity & Blender

If you’ve read any of the other things on this site, then you know that we are fans of Open Source software. Blender is one of these amazing programs. If you don’t know what it is, then I suggest you read our post about the Blender animation program. Audacity is another awesome program for recording and mixing audio. Check it out here.

I happen to have a Windows Vista Business operating system. I recently did a reinstall of the entire OS. When I got to installing all my programs, Audacity and Blender were on the top of my list. The install went successfully, however when I tried to open the programs afterwards, they would just crash or present me with some strange error message. I tried getting older versions of each program, which did work in the Audacity case, but not for Blender. Whatever I did, the program just would not open or run correctly.

A couple weeks later, I got to installing my Windows Live Essentials programs. WLE needs the “Windows Platform Update” if your using a Vista system, like I am. The update is described by Microsoft on this page: Install the Windows Platform Update. WLE installed the update and then completed installing the various associated programs. Everything seemed to be working fine.

Out of curiosity, I tried installing the most recent versions of Audacity and Blender again. Lo and behold, they work fine! If you are having a problem getting Audacity or Blender to work on your Vista system, then I suggest you make sure you’ve got the Windows Platform Update. I’m just guessing, but I think they are related. If you have the Windows Live Essentials programs installed, then you should have the update already.

I hope that helps! :-)

-RED 7

Share via email
Share on Tumblr

Login App – Useing External Database List

Here’s a program I wrote with the help of a friend who’s a little more familiar with Free Pascal than I am. I used Lazarus to program this. If you don’t know what Lazarus is, then you should look it up. It’s amazing.

This program will use an external list of names and passwords to grant access to whatever you want. You’d probably want to implement some sort of encryption/decryption in this system, but the basic framework of a login application is here. I had a basic text file called “doing” functioning as my database file. I also renamed the file extension from “.txt” to “.filter” just for the fun of it. Obviously you can change these to whatever you want as long as you change it in the program and recompile it.

Here’s the code:

Ext_list_Login_app_proj.zip



program Ext_list_Login_app_proj;

{$mode objfpc}{$H+}

uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };

var
name:string;
real_name:string;
pass:string;
real_pass:string;

{This program is divided up into procedures just to make it a little easier for me.}

procedure login_complete;
begin
writeln();
writeln('Hey you remembered BOTH your username AND password!');
writeln('If you wanted to really do something important with this,');
writeln('than you would probably launch a program or something at this point.');
writeln('But right now, this program does nothing like that.');
writeln();
writeln();

end;

function check_pass(const name:string;const pass:string): boolean;
var
f:textfile;
s:string;
x:integer;

begin
assignfile(f, 'doing.filter');
reset(f);
try
while not eof(f) do
begin
readln(f,s);
x:=pos(':',s);
result:=(copy(s, 1, x-1)=name) and (copy(s, x+1, length(s)-x)=pass);
if result then exit;
end;
finally
closefile(f);
end;
end;

procedure login;
begin
writeln();
writeln('Enter Username:');
readln(name);
writeln();
writeln('Enter Password:');
readln(pass);

{Now that we have user input, the application will now verify that information with the correct answers}

if check_pass(name, pass)then
login_complete;
end
else
begin
writeln();
writeln('Oops. You entered the wrong username and password combination.');
writeln('Try again.');
login;

end;
end;

{"Main" program below}

begin

writeln('Welcome to the Login Application!');
writeln();

login;
writeln('Press <enter> to quit.');
readln();
end.


Share via email
Share on Tumblr

Cell Phone Scam

I got a text awhile ago that said: “You have been selected to receive a FREE Best Buy gift card. Just go to www.myfreeoffersite.com/bestbuy within 48 hours to claim your gift.”

Of course it’s fake. Although Best Buy might contract with an outside company to handle prizes, it wouldn’t be from www.myfreeoffersite.com. I looked it up later to find that it’s completely fake. That URL actually redirects you to a different site that has to do with prize-winning/gambling or something. I didn’t look into it much further. It’s obviously a big scam.

Be careful! This stuff can be very easy to fall into if you’re not thinking about the logistics of the situation.

Stay safe!

-RED 7

Share via email
Share on Tumblr

Forums Coming Soon!

Status

Just to let you all know, we may soon be adding forums to the Northwest Tech Experience website. This would allow our users to discuss technology with others more freely.

We’ll let you all know when they are up and running!

-RED 7

Share via email
Share on Tumblr

Frequency Harmonic Calculator in C++

I just came up with a little Frequency Harmonic Calculator in C++. Calculating harmonics isn’t hard, but if your doing a bunch of calculations, this might come in handy. To calculate a harmonic, simply take the fundamental frequency (F) and multiply it by an integer value (i.e. 3). So, for example, if F = 520 KHz, then the 3rd harmonic would be (Fx3) = (520×3) = 1560 KHz.

I also wrote a section of this program to calculate frequencies that have a harmonic of the frequency you enter. So if you enter 520, it will let you know that 260 KHz has a harmonic of 520 KHz. I needed something like this for a project I’m working on, so I decided to share what I came up with.

There is something funny/nice that occurs. If you enter both the value (i.e. 520) and the measurement (i.e. KHz) when it asks for the fundamental frequency, it will somehow write the frequency to the ‘freq’ variable and the measurement to the ‘unit’ variable and skip the step where I ask for the unit of measurement. All the calculations are correct and everything. I might know why this is, but I’m not sure enough to spit it out. Anyway, kinda cool.

I also put up this code here: http://pastebin.com/8y8pcVPr



#include <iostream>
#include <stdio .h>
#include <string>

using namespace std;

class calculator
{
public:

int highArray[15];
int lowArray[15];
int freq;

void harmonics(int);
void lowFreq(int);

};

void calculator::harmonics(int freq)
{

for (int i; i < = 15; i=i+1)
{
highArray[i] = freq*(i+1);
}

}

void calculator::lowFreq(int freq)
{
for (int i=0; i<=15; i=i+1)
{
lowArray[i] = freq/(i+1);
}
}

int main()
{
int freq;
string unit;

cout << "What is the fundamental frequency?\n\n";
cin >> freq;
cout < < "\nWhat unit of measure are you useing? (Hz, KHz, MHz,... )\n\n";
cin >> unit;
cout < < "\n\n";

calculator related_freqs;

related_freqs.harmonics(freq);

cout << "The harmonics of " << freq << " ";
cout << unit << " are...\n\n";

for (int i=0; i<=15; i=i+1)
{
cout << "Harmonic #"<< (i+1) << " " << related_freqs.highArray[i];
cout << " " << unit << "\n";
}

cout << "\n\n\nNow I'll calculate frequencies that have a harmonic of " << freq;
cout << " " << unit << "\n\n";

related_freqs.lowFreq(freq);

for (int i=0; i<=15; i=i+1)
{
cout << "Frequency #"<< (i+1) << " " << related_freqs.lowArray[i];
cout << " " << unit << "\n";
}

cout << "\n\n\nPress any key and hit ENTER to quit.\n";
cin >> freq;
// getchar();    // For some reason or another, this command has never worked for me. That's why I wrote the above line so that the user can actually read the data output. It's not as nice, but it works.
return (0);
}


Share via email
Share on Tumblr