Documente Academic
Documente Profesional
Documente Cultură
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:
Modulul Apache care ne permite gazduirea paginilor dinamice( in cazul nostru pagina PHP)
sudo apt-get install php5 libapache2-mod-php5 -y
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 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.
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