Die Anzeige auf dem LCD:
- Umgebungstemperatur
- Mindesttemperatur
- Höchsttemperatur
PC-Konnektivität (über RS232C-Port)
- Überwachung der Temperaturabfall graph
- Sparen Messdatei
- Programmierbarer Thermostat
- Temperaturregelung über das Internet auf die MySQL-Datenbank
- Temperaturregelung über das Internet mit dem FTP-Protokoll
1. Einarbeitung
Es ist ein elektronisches Thermometer mit der Ausgabe der Temperatur auf dem LCD-Display.
Umgebungstemperatur gemessen alle 840 MS bei einem digitalen Sensor DS1620, der Firma Dallas Semiconductor.
2. Konzept:
Version Nr. 1: ohne Schnittstelle RS232;
Version Nummer 2: mit Hilfe der RS232
HINWEIS: Die Firmware für den mikrocontroller ein und dieselbe für beide Varianten.
3. Übersicht der Temperatursensor DS1620
4. Das Funktionsprinzip des LCD-Displays (parallele Schnittstelle)
5. Die Funktionsweise des Geräts
5-1. Ohne Schnittstelle RS232;
Nach dem anlegen einer Spannung, Microcontroller 16F628A Pflegebedürftige Temperatursensor DS1620 (der Befehl Write-Config mit CPU = 1 " und " 1SHOT = 0, dann mit dem Befehl Start Convert T) und passt die LCD-Anzeige (Befehl Function Set-Modus für den Einsatz in 4-bit interface). Modul Timer1 (16 bit) Microcontroller 16F628A aktiviert, was zu einer Unterbrechung etwa alle 105 MS. Bei jeder Unterbrechung der Timer1-Modul, tastenstatus abgefragt SELECTION ECRAN und RESET MIN/MAX. Alle 8 Interrupts (etwa 840 MS) liest die Temperatur und Information auf dem LCD-Display aktualisiert wird:
5-2. Über RS232-Schnittstelle
Bezüglich der Arbeit ohne Schnittstelle RS232, werden zwei Interrupts:
- Interrupt UART empfangen (mikrocontroller meldet, dass er Daten vom PC über RS232)
- Interrupt UART-übertragung (mikrocontroller meldet, dass die UART gehen, um Daten auf den Computer)
5-2-1. Kabel die Kommunikation zwischen dem Computer und dem Gerät.
Конечно же нужен компьютер, который имеет COM-порт (разъем SUB-D, 9 контактов “папа”). Нужно подключить нуль-модемный кабель (кабель с перекрёстным соединением) между компьютером и устройством. Если у вас его нет, вы можете легко его сделать (нужно 3 провода и 2 разъема SUB-D, 9 контактов “мама”).
5-2-2. Das Kommunikationsprotokoll zwischen dem Computer und dem Gerät.
Der Computer sendet einen Befehl. Der mikrocontroller antwortet.
Der Computer sendet 3 Bytes (über RS232):
Команда DS1620 | 1. Byte (Befehlscode) | 2. Byte (Daten) | 3-te Byte (Daten) |
Read Temperature (alle 1000 Millisekunden) | 0Überall | 0х00 (nicht verwendet) | 0х00 (nicht verwendet) |
Read TH (Lesen Hochtemperatur-Thermostat) | 0HA1 | 0х00 (nicht verwendet) | 0х00 (nicht verwendet) |
Read TL (Lesen der niedrigen Temperatur des Thermostats) | 0HA2 | 0х00 (nicht verwendet) | 0х00 (nicht verwendet) |
Write TH (Aufnahme der hohen Temperatur des Thermostats) | 0X01 | (0000000 D8) | (D7 ... D0) |
Write TL (Aufnahme der niedrigen Temperatur des Thermostats) | 0X02 | (0000000 D8) | (D7 ... D0) |
Nachdem Sie, mikrocontroller sendet einen Befehl, den Sensor DS1620 (über 3-Draht Seriell, synchron). In dem Fall der Befehl für Lesezugriff (Read Temperature, TH Read, Read TL), Thermometer DS1620 sendet die Daten an den mikrocontroller (Temperatur als Binär 9 bit codiert zusätzlich in 2). Diese Zahl wird ohne änderungen auf dem Computer als 2-Byte:
1. Byte: (0000000 D8)
2-й байт: (D7 … D0)
D0 = бит
Für andere Teams, mikrocontroller Computer sendet zwei Bytes 0x00 (über RS232).
Команда DS1620 |
1. Byte (Daten) |
2. Byte (Daten) |
Read Temperature (alle 1000 Millisekunden) |
(0000000 D8) |
(D7 ... D0) |
Read TH (Lesen Hochtemperatur-Thermostat) |
(0000000 D8) |
(D7 ... D0) |
Read TL (Lesen der niedrigen Temperatur des Thermostats) |
(0000000 D8) |
(D7 ... D0) |
Write TH (Aufnahme der hohen Temperatur des Thermostats) | 0х00 (nicht verwendet) | 0х00 (nicht verwendet) |
Write TL (Aufnahme der niedrigen Temperatur des Thermostats) | 0х00 (nicht verwendet) | 0х00 (nicht verwendet) |
Ein Beispiel für Wellenformen: der Befehl Read Temperature
Kommunikation zwischen PC und PIC (RS232) :
0x00 0x2D = 0 0010 1101 = 45 = +22,5 °C
Die Verbindung zwischen PIC und DS1620 (Seriell, synchron) :
0 00101101 = 0x2D = 45 = +22,5 °C
6. App DS1620_104.exe für Windows
Diese Anwendung wurde geschrieben in C++ Borland Builder 5. Die App funktioniert auf Windows NT4 und Windows XP (auf Windows Vista nicht getestet).
Hinweis: für die Steuerung des Gerätes über RS232-Schnittstelle erforderlich, installieren Sie die Komponente TComPort (Version 2.64 genug):
Herunterladen
Installationsverfahren
Lehrbuch
So verwenden:
- Verbinden Sie Computer und Gerät mit einem Nullmodem-Kabel (im ausgeschalteten Zustand)
- Schließen Sie das Netzteil
- Offene Bewerbung
- Konfigurieren Sie die Verbindungsparameter mit RS232C :
9600 bit/Sek.
8 Datenbits
Parity-Bit, keine
1 стопбит
Flusskontrolle, keine - Open Port
Sollte die tatsächliche Temperatur (Update alle 1000 MS). Gibt es die Möglichkeit, das speichern von Daten in einer Textdatei:
Laden Sie die App DS1620_104.exe für Windows 797 Kb
Laden Sie den Quellcode der Anwendung DS1620_104.exe 224 Kb
7. Anwendung für RS232-Kommunikation mit LabVIEW
Hier sind zwei Anwendungen, die ich geschrieben habe für LabVIEW 5 :
ds1620_thermostat_004.vi
Bitte beachten Sie, dass diese Anwendungen funktionieren auch mit der Version 6 LabVIEW.
Download ds1620_011.vi 223 Kb
Download ds1620_thermostat_004.vi 223 Kb
8. Installieren Sie den RS232-Anschluss auf der Sprache Python
Python-Version: 2.7
Протестировано на Windows XP è Linux / Ubuntu
Dieses Skript benötigt das Paket pyserial (Download und Installation hier).
Quellcode:
# (C) Fabrice Сэнсэр
# python 2.7
# Verbindung RS232 mit einem digitalen Thermometer auf dem digitalen Sensor DS1620
#http://fabrice.sincere.pagespersoorange.fr/cm_электроника/проект_pic/ЖК термометр_DS1620htm/LCD термометр_DS1620.htm
# Test: OK (linux/ubuntu + winXP)
Importzeit
import serial # externe Bibliothek pyserial
print ‘Связь с COM-портом’
filename = ‘температура.txt’
print ‘\nФайл резервного копирования : ‘+filename
File = open(filename,’a’)
# Bibliothek pyserial :
# http://pyserial.sourceforge.net/shortintro.html
# http://pyserial.sourceforge.net/pyserial_api.html
Port = serial.Serial()
Port.baudrate = 9600
Port.bytesize = 8
Port.parities = 0
Port.stopbits = 1
Port.xonxoff = 0
Port.rtscts = 0
Port.timeout=0.1 # in Sekunden
print “””
# Unter Windows :
# COM1 -> 0 (oder COM1)
# COM2 -> 1 (oder COM2)
# Unter Linux :
# COM1 -> 0 (oder /dev/ttyS0)
# COM2 -> 1 (oder /dev/ttyS1)
“””
nomport = raw_input(‘Имя COM-порта ? ‘)
try:
int(nomport)
Port.port = int(nomport)
except:
Port.port = nomport
print (‘Port ->’, Port.portstr,’\n’
Port.open()
try:
while True:
# Aufzeichnung
Port.write(‘\xAA\x00\x00’)
# Lesen
MSB = Port.read() # High-Byte
LSB = Port.read() # Low-Byte
if (MSB !=” and LSB != “):
temperature = ord(LSB) + 256* ord(MSB)
if temperature >= 256:
temperature = temperature – 512
temperature *= 0.5
affichage = “time”.strftime(‘%H:%M:%S’,time.localtime()) + ‘ ‘+ str(temperature) +’ °C’
Druck affichage
Fichier.write(affichage +’\n’)
# Pause in 1 Sekunde
time.sleep(1.0)
except KeyboardInterrupt:
# STRG + C
print “\nCTRL+C\nЗакрытие порта”, Port.portstr
Port.close()
Fichier.close()
Die Ausführung des Skripts :
>>>
Die Kommunikation mit dem COM-Port
Backup-Datei : температура.txt
# Unter Windows :
# COM1 -> 0 (oder COM1)
# COM2 -> 1 (oder COM2)
# Unter Linux :
# COM1 -> 0 (oder /dev/ttyS0)
# COM2 -> 1 (oder /dev/ttyS1)
Name COM-Port ? 0
Port -> COM1
09:15:28 19.5 °C
09:15:29 19.5 °C
09:15:30 19.5 °C
09:15:31 19.5 °C
09:15:32 19.5 °C
09:15:33 19.5 °C
09:15:34 20.0 °C
09:15:35 20.0 °C
09:15:36 20.0 °C
09:15:37 20.0 °C
09:15:38 20.0 °C
09:15:39 20.0 °C
STRG + C
Schließen des COM1
>>>
Herunterladen сценарий Python
9. Prüfen Sie die Temperatur über das Internet mit Hilfe von CGI-Skripts in Python
Getestet habe ich auf Linux/Ubuntu auf die Livebox (der Autor ist dem Kunden Orange), mit folgenden Parametern des Netzwerks:
- private IP-Adresse: 192.168.1.10
- öffentlich: 90.14.148.96
Installation:
Neben Python 2.7 und Paket pyserial, müssen Sie auf Ihrem Computer installieren den Apache Web Server (hier mit XAMPP).Python-Skripte сді_чтение температуры.ру , сді_сборник установок.ру und сді_обработка Compilation установок.ру müssen platziert werden in das Verzeichnis /opt/lampp/cgi-bin/
Achtung bei der Installation: Eigenschaften -> Berechtigungen -> Zulassen der Ausführung Datei als Programm
Was für CGI-Skripts in Python:
Die erste Zeile der Skripts sollte:
#! /usr/bin/python
Die erste Ausfahrt muss (header) :
print “Content-Type: text/html\n\n”
Einstellen Der Livebox:
Путь – Преобразование сетевых адресов -> Добавить службу http(протокол TCP, порт 80, IP-адрес сервера 192.168.1.10)
Konfiguration der Firewall:
eingehende verbindungen auf Port 80 (TCP)
Запуск Веб-сервера :
В Linux набрать команду :
sudo / opt / lampp / lampp Start
Если сценарий cgi_ чтение температуры.py выдаёт ошибку типа:
Permission denied: ‘/dev/ttyS0’
тогда в Linux введите команду:
sudo chmod 666 /dev/ttyS0
Эти сценарии также работают в Windows (тестировалось на XP и Wampserver).
#! /usr/bin/python
#-*- coding:utf-8 -*-
# сценарий cgi_чтение температуры.py
# (C) Fabrice Сэнсэр
# python 2.7
# сценарий cgi
# Verbindung RS232 mit einem digitalen Thermometer auf dem digitalen Sensor DS1620
# http://fabrice.sincere.pagesperso orange.fr/cm_электроника/проект_pic/ЖК термометр_DS1620htm/ЖК термометр_DS1620.htm
# тест: ОК (linux/ubuntu 11.10 + xampp 1.7.7)
import cgitb # отладка программы cgi
cgitb.enable()
import serial # externe Bibliothek pyserial
# Библиотека pyserial :
# http://pyserial.sourceforge.net/shortintro.html
# http://pyserial.sourceforge.net/pyserial_api.html
Importzeit
print “Content-Type: text/html\n\n”
print “””<!DOCTYPE html
PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”ru” lang=”fr”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Mesure de température</title>
<meta http-equiv=”Refresh” content=”10″/>
<meta name=”Author” content=”Фабрис Sincère”/>
</head>
<body>”””
print ‘<p>Соединение с COM-портом</p>’
# предварительно, нужно создать реестр /opt/lampp/htdocs/температура
filename = ‘/opt/lampp/htdocs/ температура / температура.txt’
filename0 = ‘../ температура температура.txt’
print “<p><a href='”+filename0+”‘>Файл резервной копии</a></p>”
Fichier = open(filename,’a’)
Port = serial.Serial()
Port.baudrate = 9600
Port.bytesize = 8
Port.parities = 0
Port.stopbits = 1
Port.xonxoff = 0
Port.rtscts = 0
Port.timeout=0.1 # in Sekunden
# Unter Windows :
# COM1 -> 0 (oder COM1)
# COM2 -> 1 (oder COM2)
# Unter Linux :
# внимание : разрешение 666
# > sudo chmod 666 /dev/ttyS0
# COM1 -> 0 (oder /dev/ttyS0)
# COM2 -> 1 (oder /dev/ttyS1)
nomport = 0
try:
int(nomport)
Port.port = int(nomport)
exept:
Port.port = nomport
print ‘<p>Открытие порта”, Port.portstr,'</p>’
Port.open()
# чтение температуры
Port.write(‘\xAA\x00\x00’)
# Lesen
MSB = Port.read() # High-Byte
LSB = Port.read() # Low-Byte
if (MSB !=” and LSB != “):
temperature = ord(LSB) + 256* ord(MSB)
if temperature >= 256:
temperature = temperature – 512
temperature *= 0.5
affichage = “time”.strftime(‘%H:%M:%S’,time.localtime()) + ‘ —-> ‘+ str(temperature) +’ °C’
print ‘<p>’+ affichage +'</p>’
Fichier.write(affichage +’\n’)
else:
print ‘<div style=”color:red;”>Устройство не понимает!</p>’
# чтение низкой температуры термостата
Port.write(‘\xA2\x00\x00′)
MSB = Port.read() # High-Byte
LSB = Port.read() # Low-Byte
if (MSB !=” and LSB != “):
temperature = ord(LSB) + 256* ord(MSB)
if temperature >= 256:
temperature = temperature – 512
temperature *= 0.5
affichage = str(temperature) +’ °C’
print ‘<p>’+’Thermostat : TLow –>’+ affichage +'</p>’
# воспроизведение высокой температуры термостата
Port.write(‘\xA1\x00\x00′)
MSB = Port.read() # High-Byte
LSB = Port.read() # Low-Byte
if (MSB !=” and LSB != “):
temperature = ord(LSB) + 256* ord(MSB)
if temperature >= 256:
temperature = temperature – 512
temperature *= 0.5
affichage = str(temperature) +’ °C’
print ‘<p>’+’ Thermostat : Thigh –>’+ affichage +'</p>’
print “<p>Закрытие порта, Port.portstr,'</p>’
Port.close()
Fichier.close()
print “</body></html>”
Чтение температуры (обновляется каждые 10 секунд):
# -*- coding: utf-8 -*-
# сценарий cgi_сборник установок.py
# Просмотр HTML-формы
print “Content-Type: text/html\n\n”
print “””<!DOCTYPE html
PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”ru” lang=”ru”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Измерение температуры</title>
<meta name=”.Автор” content=”Фабрис Сэнсэр”/>
</head>
<body>
<p>Установка температуры (в °C) термостата:</p>
<p>например: 54.5</p>
<form action=”cgi_обработка сборника установок.py” method=”post”>
<p>
Tlow : <input type=”text” name=”tlow” /><br/><br/>
Thigh : <input type=”text” name=”thigh” /><br/><br/>
<input value=”СОХРАНИТЬ” type=”submit” name=”отправить”/>
</p>
</form>
</body>
</html>”””
# -*- coding: utf-8 -*-
# (C) Fabrice Сэнсэр
# сценарий cgi_обработка сборника установок.py
# Обработка данных, переданных через HTML-форму
Importserien
import cgi
form = “cgi”.FieldStorage()
def байт(температура):
temperature =int(temperature*2)
if temperature < 0:
температура += 256
MSB = 1
LSB = Temperatur
else:
MSB = 0
LSB = Temperatur
return [MSB,LSB]
print “Content-Type: text/html\n\n”
print “””<!DOCTYPE html
PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”ru” lang=”ru”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Измерение температуры</title>
<meta name=”Автор” content=”Фабрис Сэнсэр”/>
</head>
<body>”””
Port = serial.Serial()
Port.baudrate = 9600
Port.bytesize = 8
Port.parities = 0
Port.stopbits = 1
Port.xonxoff = 0
Port.rtscts = 0
Port.timeout=0.1 # в секунду
# Unter Windows :
# COM1 -> 0 (oder COM1)
# COM2 -> 1 (oder COM2)
# Unter Linux :
# внимание : разрешение 666
# > chmod 666 /dev/ttyS0
# COM1 -> 0 (oder /dev/ttyS0)
# COM2 -> 1 (oder /dev/ttyS1)
nomport = 0
try:
int(nomport)
Port.port = int(nomport)
except:
Port.port = nomport
print ‘<p>Открытие порта, ‘Port.portstr,'</p>’
Port.open()
if form.has_key(“tlow”):
Tlow = form[“tlow”].value
try:
Tlow = float(Tlow)
Port.write(‘\x02’+chr(байт(Tlow)[0])+chr(байт(Tlow)[1]))
Port.read()
Port read()
print ‘<p>Tlow : сохранённое значение</p>’
except:
print ‘<p>Tlow : недопустимое Значение</p>’
if form.has_key(“thigh”):
Thigh = form[“thigh”].value
try:
Thigh = float(Thigh)
Port.write(‘\x01’+chr(байт(Thigh)[0])+chr(байт(Thigh)[1]))
Port.read()
Port.read()
print ‘<p>Thigh : сохраненное значение</p>’
except:
print ‘<p>Thigh : недопустимое Значение</p>’
print “<p>Закрытие порта, Port.portstr,'</p>’
Port.close()
print “</body></html>”
10. Приложения для связи RS232 с LINUX
Связь между платой с микроконтроллером и компьютером (оснащенного операционной системой Linux) может установиться просто с консоли команд (командный процессор Linux).Для этого мы будем использовать два сценария bash :
- DS1620_reception.sh (выполняется первым)
- DS1620_emission.sh
Эти сценарии были успешно протестированы на многих системах Linux : Ubuntu, Mandriva и Puppy.
Эти сценарии являются базовыми: можно сделать гораздо более мощные!
1 bash-сценарий (файл DS1620_reception.sh) :
#!/bin/bash
# bash-сценарий для Linux
# (C) Фабрис Сэнсэр ; Версия 1.0.1
# Связь RS232 (COM-порт) между компьютером и микроконтроллером PIC
klar
# обнаружение COM-портов компьютера
message=’Команда : dmesg | grep tty’
echo-e “$message\n”
dmesg | grep tty
# настройка порта COM1 :
# 9600 бит/с
# 8 битов данных
# бит четности-нет
# 1 стоп-бит
# управление потоком-нет
message=’Commande: stty-F /dev/ttyS0 9600 cs8-parenb-parodd-cstopb-ixon cread clocal-crtscts-icanon’
echo-e “\n$message\n”
stty-F /dev/ttyS0 9600 cs8-parenb-parodd-cstopb-ixon cread clocal-crtscts-icanon
# отображает все параметры порта COM1
message=’ Commande: stty-a-F /dev/ttyS0′
echo-e “$message\n”
stty-a-F / dev / ttyS0
message=’Во второй консоли, запустить сценарий DS1620_emission.sh’
echo-e “\n*****************************************************************”
echo-e “$message”
echo-e”*****************************************************************\n”
# данные, полученные с компьютера, сохраняются в режиме реального времени в файл
message=’ Commande: cat /dev/ttyS0 > temperature.dat’
echo-e “$message\n”
cat /dev/ttyS0 > temperature.dat
В консоли, выполнение этого сценария bash даёт:
fabrice@imedia2089:~$ ./DS1620_reception.sh
Commande: dmesg | grep tty
[ 0.000000] console [tty0] enabled
[ 0.573305] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 0.573406] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[ 0.573739] 00:09: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 0.573872] 00:0a: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
Commande: stty-F /dev/ttyS0 9600 cs8-parenb-parodd-cstopb-ixon кред помощью clocal-crtscts-icanon
Commande: stty-a-F /dev/ttyS0
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; флеш = ^O; min = 1; time = 0;
-parenb-parodd cs8-hupcl-cstopb cread clocal-crtscts
-ignbrk-brkint-ignpar-parmrk-inpck-istrip-inlcr-igncr-icrnl-ixon-ixoff
-iuclc-ixany-imaxbel-iutf8
-opost-olcuc-ocrnl-onlcr-onocr-onlret-ofill-ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig-icanon iexten echo-echoe-echok-echonl-noflsh-xcase-tostop-echoprt
echoctl echoke
*****************************************************************
Во второй консоли, выполняется сценарий DS1620_emission.sh
*****************************************************************
Commande: cat /dev/ttyS0 > temperature.dat
2 bash-сценарий (файл DS1620_emission.sh) :
#!/bin/bash
# bash-сценарий для Linux
# (C) Фабрис Сэнсэр; Версия 1.0.1
# Связь RS232 (COM-порт) между компьютером и микроконтроллером PIC
klar
message=’В другой консоли, запуск первого сценария DS1620_reception.sh’
echo-e “\n**************************************************************************”
echo-e “$message”
echo-e”**************************************************************************\n”
# бесконечный цикл
# посылает 3 байта (0xAA 0x00 0x00) = ПИК
# повторяет операцию каждые 5 секунд
while [ 1 ]
machen
message=’Emission : echo-e-n “\xAA\x00\x00” > /dev/ttyS0′
echo “$message”
echo-e-n “\xAA\x00\x00” > /dev/ttyS0
Schlaf 5s
# вывод содержимого файла данных, полученного с помощью компьютера (в шестнадцатеричном формате)
echo-e “Прием”
od-t x1 temperature.dat
Fertig
В консоли, выполнение этого сценария bash дает :
fabrice@imedia2089:~$ ./DS1620_emission.sh
**************************************************************************
В другой консоли, исполнение первого сценария DS1620_reception.sh
**************************************************************************
Посылка: echo-e-n “\xAA\x00\x00” > /dev/ttyS0
Empfang
0000000 00 32
0000002
Посылка: echo-e-n “\xAA\x00\x00” > /dev/ttyS0
Empfang
0000000 00 32 00 32
0000004
Посылка: echo-e-n “\xAA\x00\x00” > /dev/ttyS0
Empfang
0000000 00 32 00 32 00 32
000000Sechs
Посылка: echo-e-n “\xAA\x00\x00” > /dev/ttyS0
Empfang
0000000 00 32 00 32 00 32 00 33
0000010
...
...
...
Два последних полученных байта – 0x33 0x00, соответствующих температуре +25,5 °C.
11. Проверка температуры через интернет с MySQL
Вам нужен Интернет-хостинг с PHP и базой данных MySQL.У автора статьи хостинг Olympe Network (бесплатный и без рекламы).
11-1. Локальная установка web_temperature.exe
Оно позволяет :
- просматривать температуру (обновление: 1 секунда)
- каждые 5 минут, температура сохраняется во внешней базе данных MySQL (через сеть интернет). Для этого используются 3 запроса SQL:
- CREATE TABLE IF NOT EXISTS web_temperature1 (ID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,date date NOT NULL,time time NOT NULL,temperature varchar(20) collate latin1_general_ci NOT NULL) ENGINE = MYISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
- INSERT INTO web_temperature1(ID,date,time,temperature) VALUES (NULL,CURDATE(), CURTIME(), ‘21,5’)
- SELECT date,time,temperature FROM web_temperature1 ORDER BY ID DESC LIMIT 0,1
Приложение состоит из двух файлов :
- web_temperature.exe
- libmysql.dll
Скачать web_temperature.exe (263 кб)
Скачать libmysql.dll (1,0 Мб)
Anwendungsquellcode
Это приложение было написано на C++ Borland Builder 5.
Hinweis: Для связи с COM-портом (RS232), необходимо установить компонент TComPort (о котором я уже говорил выше).Для связи с базой данных MySQL необходима библиотека C libmysql, которую вы можете свободно скачать с официального сайта www.mysql.com:
Раздел: Downloads
-> mysql-connector-c-noinstall-6.0.2-win32.zip
Чтобы использовать эту библиотеку в C++ Borland Builder 5, вот внешняя ссылка:
Учебник: Использование API MySQL в Borland C++ Builder
Небольшое упущение в этом учебнике: нужно добавить libmysql.lib в проект (Проект -> Добавить в проект -> libmysql.lib)
Полезная ссылка: http://fabrice.sincere.pagesperso-orange.fr/application_builder5/client_mysql/mysql_client_builder.html
11-2. Чтение температуры через интернет: сценарий PHP
В вашем любимом веб-браузере, температура доступна в режиме реального времени на веб-странице в php. Сценарий PHP подключается к базе данных MySQL (через сеть интернет).Он считывает и отображает информацию, ранее записанную локальным приложением (обновление каждые 5 минут).
Laden Sie den Quellcode für PHP-Script
12. Проверка температуры через интернет с FTP
Вам нужен интернет-хостинг .
12-1. Локальная установка web_temperature_ftp.exe
Оно позволяет :
- просматривать температуру (обновление: 1 секунда)
- каждые 5 минут, локальный файл (который содержит информацию о дате, времени и температуре), передаётся на веб-сайт по FTP-протоколу (File Transfer Protocol).
Скачать web_temperature_ftp.exe (292 кб)
Это приложение было написано на C++ Borland Builder 5.
12-2. Чтение температуры через интернет
В вашем любимом веб-браузере, температура доступна в реальном времени в URL:
http://fabrice.sincere.pagesperso-orange.fr/web_temperature.txt
13. Список оборудования и деталей
- Flash-Mikrocontroller Programmierer für PIC 16F628A
Без интерфейса RS232 :
- 1 буквенно-цифровой ЖК дисплей 2 × 16 с параллельным интерфейсом
- 3 резистора 10 кОм
- 1 подстроечный резистор 2,2 кОм ( для регулировки контраста дисплея)
- 1 цифровой датчик температуры DS1620 (Dallas Semiconductor)
Примечание : Sie können kostenlose Proben von der Dallas bestellen - 1 микроконтроллер PIC 16F628A (корпус PDIP)
Hinweis: Sie können kostenlose Proben von Microchip bestellen - 1 кварц на 20 МГц (20 МГц обязательно)
- 1 электролитический конденсатор 100 мкФ (фильтр)
- 1 электролитический конденсатор 10 мкФ (фильтр)
- 5 конденсаторов 100 нФ (фильтр)
- 2 конденсатора по 22 пФ
- 1 источник непрерывного питания +12 в (или батарейки 9 В)
- 1 микросхема регулятора напряжения 7805 (корпус ТО220)
- 2 кнопки (действующих на замыкание)
С интерфейсом RS232: дополнительные компоненты
- 1 инегральная микросхема MAX233A (интерфейс RS232C <-> TTL/CMOS)
Hinweis: Sie können kostenlose Proben von Maxims bestellen - 1 разъем SubD, 9 контактов “папа”
- 1 электролитический конденсатор 1 мкф (фильтр)
- 1 нуль-модемный кабель (“мама” / “мама”)
- 1 компьютер с COM-портом
14. Печатная плата
Размеры: 62 x 100 мм
Односторонняя.
web_temperature_ftp_code_source
Herunterladen fotoşaʙlon
Hinweis: Не забудьте 9–контактный разъём (припаяйте в первую очередь).
15. Прошивка для PIC 16F628A
Исходный код был написан на ассемблере в бесплатной среде MPLAB IDE от Microchip.
Скачать прошивку (.hex) исходный код на ассемблере (.asm)
Übersetzung Paul Blinkova (grayling3000) по заказу сайта Meandr