partea 1: serverul web - embedac.ro filepinii 1 si 2 sunt cei de la o dioda care in functie de...

4

Upload: others

Post on 27-Oct-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Studenti: Cernat Constantin([email protected]), Rapaila Vlad([email protected]

1.Proiectul urmareste realizarea unei constructii mecanice fixe care va realiza aerisirea unui blackbox in care va fi masurata

temperatura interna cu posibilitatea afisarii pe un display digital, deschiderea cutiei cu ajutorul unui servo motor.

Sistemul va fi actionat prin intermediul unui server web si o aplicatie grafica in Python care va rula pe Raspberry Pi,

senzorul de temperatura de pe FRDM KL25Z va trimite informatii catre Rpi, acesta din urma actionand servomotorul care

pune in actiune mecanismul de deschidere a cutiei.

Partea 1:

Serverul web:

Mai intai, a fost instalat SO Raspbian Jessie pe RaspberryPi. Urmatorul pas fiind configurarea serverului web:

sudo apt-get install apache2 -y

Modulul Apache care ne permite gazduirea paginilor dinamice( in cazul nostru pagina PHP)

sudo apt-get install php5 libapache2-mod-php5 -y

Modulul de PHP 5 care ne permite folosirea si afisarea contentului cu extensia .php

A fost creat utilizatorul cu drepturile CHMOD 777 care ne permite folosirea paginii cat si accesarea ei(rularea scripturilor).

Comanda data, atribuie utilizatorului current drepturile asupra paginii.

sudo chown pi: index.php

Pentru descrierea mai detaliata a configuratiilor, urmarim informatia de pe site-ul official :

https://www.raspberrypi.org/documentation/remote-access/web-server/apache.md

Aditional se instaleaza si pack-urile de Python folosind comanda :

sudo apt-get install python3-picamera

Urmatorul pas fiind crearea paginii WEB si a butoanelor prin care vor fi actionate actuatoarele.

Butoanele vor rula scripturile Python care defapt contin codul de executie pentru servo motor si ventilator.

Exemplu de cod PHP/HTML:

if (isset($_POST['on']))

{

shell_exec('sudo python /var/www/fanon.py');

}

if (isset($_POST['off']))

{

shell_exec('sudo python /var/www/fanoff.py');

}

Comunicatia intre placate se face prin intermediul porturilor USB;

Pentru FRDM :

#include "mbed.h"

#include "USBSerial.h"

//Virtual serial port over USB

USBSerial serial;

Serial pc(USBTX, USBRX);

int main(void) {

…….

}

Pentru Raspberry:

import serial, time

from time import sleep

ser=serial.Serial('/dev/ttyAMA0', 9600, timeout=5); // accesarea informatiilor prin serial

Senzorul de temperature de pe FRDM KL25Z

Senzorul de temperature folosit este : DS1820, conectarea, setarea facandu-se conform datasheet-ului :

http://www.systronix.com/Resource/ds1820.pdf

Tot pe aceiasi placuta a fost lipit si digit displayul care afiseaza temperatura. Pentru functionarea lui corecta cat si a

senzorului de temperature, am inclus librariile oficiale :

#include "DS1820.h"

#include "rtos.h"

Secvente de cod :

Preluare temperature :

void readTemp(void const *args)

{

while (true) {

probe.convertTemperature(true, DS1820::all_devices);

float temp = probe.temperature();

sprintf(temperat, "%.1f", temp);

Thread::wait(1000);

}

}

Afisare pe display a temperaturii:

// prima cifra

selector=7;

sem.wait();

c = temperat[0];

cifra = c - '0';

digit = vectorDigiti[cifra];

sem.release();

// wait(0.001);

Thread::wait(1);

// a doua cifra

selector=11;

c = temperat[1];

cifra = c - '0';

digit = vectorDigiti[cifra] + 1;

Thread::wait(1);

Prin aceiasi metoda este transmisa pe seriala catre RPi , valoarea temperaturii stocata intr-un vector.

Partea 3: Folosirea motorului si a ventilatorului de PC

Raspberry Pi-ul a mai fost folosit prin intermediul a unui port GPIO la actionarea unui servo motor 9g. Acest motor prin

intermediul unui script Python, putea fi actionat cu un slider ce controla motorul de la 0 la 180 grade.

Acest motor practice deschide usa “blackbox-ului” si o inchide doar prin simpla apasarea a unui buton aflat pe serverul web.

Partea de configurare este urmatoarea:

Am legat un pin de ground de la Raspberry, cel de la motor si cel de la sursa de alimentare intr-un singur punct , firul de

alimentare de la motor l-am legat direct la sursa de alimentare iar firul galben dupa cum puteti vedea si in imaginea de mai

sus l-am legat printr-o rezistenta(pentru a proteja pinul de la Raspberry) la pinul GPIO de la Raspberry. Urmatorul lucru care

a fost folosit in proiect este un ventilator de PC, cu alimentar de 12V. Noi am folosit o sursa de alimentare de la un PC vechi

pentru a avea necesarul de voltaj pentru a porni acel ventilator. Pentru a putea face legatura dintre Raspberry si acel

ventilator am avut nevoie de un optocuplor.

Optocuplorul folosit are configuratia ca cel din imaginea alaturata. Pinii 1 si 2 sunt cei de la o dioda care in functie de

curentul primit o deschideau sau inchideau, iar pinii 3 si 4 sunt ai unui transistor.Pinii de la dioda i-am legat la Raspberry,

anodul la pinul gpio si catodul la ground iar pinii 3 si 4 i-am legat la ventilator si respective sursa de alimentare iar groundul

de la sursa si ventilator i-am legat separate.

Mecanismul de functionare este relative simplu. Atunci cand dioda era aprinsa curentul de la sursa de alimentare circula la

ventilator si asa reusea sa il aprinda. Cand dioda nu primeste curent atunci ventilatorul ramane inchis, prin tranzistor

necirculand nici un fel de voltaj.