Erro: Java.Lang.NullPointerException

Ola pessoal,
Sou iniciante em java e estou fazendo um projeto por conta própria, para praticar. Ao compilar gera o erro java.lang.NullPonterException. Não consigo identificar o problema.
Criei uma classe Pessoa, com os gets e sets, uma classe PessoaDAO, uma classe PessoaBO e uma para a conexão.

Conexão:

package DAO;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.sql.*;

public class Conexao {
Connection con;
PreparedStatement stmt;
ResultSet rs;

public void open() throws ClassNotFoundException {
      try{
          Class.forName("org.postgresql.Driver");
          con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/GeoPlan", "postgres", "1");
          }
      catch (Exception e){
          e.printStackTrace();
      }

  }

public void close() throws SQLException {
    try{
        con.close();
        }
    catch (Exception e){
        e.printStackTrace();
    }
}

}

PessoaDAO:

package DAO;

import Business.PessoaBO;
import Model.Pessoa;
import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;
import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

public class PessoaDAO {

Conexao conexao;

public PessoaDAO() throws ClassNotFoundException, SQLException {
    this.conexao = (Conexao) new Conexao().con;
   
}

private Pessoa resultSet2Model(ResultSet rs) throws SQLException, ClassNotFoundException {
   
        conexao.open();
   
    Pessoa p = new Pessoa(rs.getInt("id"),
    rs.getString("nome"),
    rs.getString("matricula"),
    rs.getString("setor"),
    rs.getString("login"),
    rs.getString("senha"),
    rs.getString("email"),
    rs.getString("telefone"),
    rs.getDate("nascimento"));
    conexao.close();
   return p; 
}


public Pessoa inserir(Pessoa p) throws SQLException {

   String sql1 = "INSERT INTO Pessoa (id,nome, matricula, setor, login, senha, email, telefone, nascimento) VALUES(?,?,?,?,?,?,?,?,?)";

            PreparedStatement st1 = conexao.con.prepareStatement(sql1);  //prepareStatement(sql1);
    st1.setInt(1, p.getId());
    st1.setString(2, p.getNome());
    st1.setString (3, p.getMatricula());
    st1.setString(4, p.getSetor());
    st1.setString(5, p.getLogin());
    st1.setString(6,p.getSenha());
    st1.setString(7, p.getEmail());
    st1.setString(8, p.getPhone());
    st1.setDate(9, new java.sql.Date (p.getNascimento().getDate()));
    ResultSet rs1 = st1.executeQuery();
    rs1.next();
    st1.execute(sql1);
    return p;
}

PessoaBO:

package Business;

import java.sql.SQLException;
import java.util.List;
import Model.Pessoa;
import DAO.PessoaDAO;
import Business.PessoaBO;

public class PessoaBO {
private PessoaDAO DAO;
public PessoaBO() throws ClassNotFoundException, SQLException {
DAO= new PessoaDAO();
}
private void validarDados(Pessoa p) throws Exception {

    if (p.getNome()==null){
        System.out.println("O campo Nome de ser preenchido.");
        //throw new Exception("O campo nome deve ser preenchido.");
        }
    if (p.getMatricula()==null){
        System.out.println("O campo Matricula de ser preenchido.");
       // throw new Exception ("O campo matricula deve ser preenchido.");

    }
     if (p.getSetor()==null){
         System.out.println("O campo Setor de ser preenchido.");
        //throw new Exception ("O campo setor deve ser preenchido.");

    }
      if (p.getLogin()==null){
          System.out.println("O campo Login de ser preenchido.");
        //throw new Exception ("O login matricula deve ser preenchido.");

    }
       if (p.getSenha()==null){
           System.out.println("O campo Semha de ser preenchido.");
        //throw new Exception ("O campo senha deve ser preenchido.");

    }
        if (p.getNascimento()==null){
            System.out.println("O campo Nascimento de ser preenchido.");
        //throw new Exception ("O campo matricula deve ser preenchido.");

    }

    
}

public Pessoa cadastrarPessoa(Pessoa p) throws SQLException, Exception {


    validarDados(p);
    

    if (p.getId()==0)

        p = DAO.inserir(p);

   else

        DAO.alterar(p);


    return p;


}

Você está tentando acessar algum objeto nulo, posta o seu log do erro.

Oi Jonathan, o erro gerado é esse:

Java.lang.NullPointerException
at DAO.PessoaDAO.inserir(PessoaDAO.java:75)
at Business.PessoaBO.cadastrarPessoa(PessoaBO.java:85)
at geoplanmcsa.GeoPlanMCSA.main(GeoPlanMCSA.java:30)

Acredito que o erro esteja na declaração do PreparedStatement
PreparedStatement st1 = conexao.con.prepareStatement(sql1);

Consegui resolver. Era realmente uma declaração que estava sendo feita errada na classe de conexão.
Agradeço a ajuda,Jonathan.