Site icon Меандр – занимательная электроника

Das Thermometer auf dem Mikrocontroller und digitale Sensor DS1620 PIC16F628A. Kontrolle über das Internet

Die Anzeige auf dem LCD:

PC-Konnektivität (über RS232C-Port)

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.
Eine Taste ermöglicht die Anzeige wechseln, wird die maximale und minimale Temperatur:
Die zweite Schaltfläche setzt die Werte Temperatur min./max. Als Option, können Sie das Gerät an den Computer (Via RS232). Die Temperatur wird vom Gerät auf den Computer gesteuerten Microcontroller 16F628A. Anwendung auf dem Computer, zeigt die Temperatur in Echtzeit und zeigt Sie auf Zeitplan. Andererseits, App Programmieren können zwei Grenzwerte der Temperatur des Thermostats der DS1620.

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:

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) :
0xAA = код команды lesen Temperatur

0x00 0x2D = 0 0010 1101 = 45 = +22,5 °C

Die Verbindung zwischen PIC und DS1620 (Seriell, synchron) :
10101010 = 0xAA = Befehlscode Read Temperature

0 00101101 = 0x2D = 45 = +22,5 °C

6. App DS1620_104.exe für Windows

Vorwort
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:

Этот файл затем может быть использован с Excel, Matlab …

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_011.vi
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:

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 секунд):
Файл резервной копии:

#! /usr/bin/python
# -*- 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>”””

#! /usr/bin/python
# -*- 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 :

Эти сценарии были успешно протестированы на многих системах 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

Это приложение запускается на локальном компьютере, куда подключено устройство для сбора данных о температуре (через порт RS232).

Оно позволяет :

  1. 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
  2. INSERT INTO web_temperature1(ID,date,time,temperature) VALUES (NULL,CURDATE(), CURTIME(), ‘21,5’)
  3. SELECT date,time,temperature FROM web_temperature1 ORDER BY ID DESC LIMIT 0,1

Приложение состоит из двух файлов :

Скачать web_temperature.exe (263 кб)
Скачать libmysql.dll (1,0 Мб)

Anwendungsquellcode
Это приложение было написано на C++ Borland Builder 5.

Скачать исходный код (222 кб)

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

Это приложение запускается на локальном компьютере, куда подключается устройство для сбора данных о температуре (через порт RS232).

Оно позволяет :

Скачать web_temperature_ftp.exe (292 кб)

Это приложение было написано на C++ Borland Builder 5.

Скачать исходный код (15 кб)

12-2. Чтение температуры через интернет

В вашем любимом веб-браузере, температура доступна в реальном времени в URL:

http://fabrice.sincere.pagesperso-orange.fr/web_temperature.txt

13. Список оборудования и деталей

Без интерфейса RS232 :

С интерфейсом RS232: дополнительные компоненты

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

Originalartikel

Exit mobile version