Отображение на ЖК-дисплее:
- температуры окружающей среды
- минимальной температуры
- максимальной температуры
Связь с компьютером (через порт RS232C)
- Наблюдение за температурой в раскрывающемся графике
- Сохранение измерений в файле
- Программируемый термостат
- Контроль температуры через интернет на базе данных MySQL
- Контроль температуры через интернет с помощью протокола FTP
1. Ознакомление
Это электронный термометр с выводом температуры на ЖК-дисплей.
Температура окружающей среды измеряется каждые 840 мс при помощи цифрового датчика DS1620, фирмы Dallas Semiconductor.
2. Принципиальная схема:
Версия № 1: без интерфейса RS232;
Версия № 2: с помощью RS232
ПРИМЕЧАНИЕ: Прошивка для микроконтроллера одна и таже для обоих вариантов.
3. Обзор датчика температуры DS1620
4. Принцип работы ЖК-дисплея (параллельный интерфейс)
5. Принцип работы устройства
5-1. Без интерфейса RS232;
После подачи напряжения, микроконтроллер 16F628A опрашивает датчик температуры DS1620 (команда Write Config с CPU = 1 и 1SHOT = 0, затем команда Start Convert T) и настраивает ЖК-дисплей (команда Set Function для использования в режиме интерфейса 4 бита). Модуль Timer1 (16 бит) микроконтроллера 16F628A активируется, что приводит к прерыванию приблизительно каждые 105 мс. При каждом прерывании модуля Timer1, опрашивается состояние кнопки SELECTION ECRAN и кнопки RESET MIN/MAX. Каждые 8 прерываний (около 840 мс) происходит чтение температуры и информация на ЖК-дисплее обновляется:
5-2. Через порт RS232
Относительно работы без интерфейса RS232, добавляются два прерывания:
- Прерывание приема UART (сообщает микроконтроллеру, что он получил данные от компьютера через RS232)
- Прерывание передачи UART (сообщает микроконтроллеру, что UART собирается передать данные на компьютер)
5-2-1. Кабель связи между компьютером и устройством.
Конечно же нужен компьютер, который имеет COM-порт (разъем SUB-D, 9 контактов «папа»). Нужно подключить нуль-модемный кабель (кабель с перекрёстным соединением) между компьютером и устройством. Если у вас его нет, вы можете легко его сделать (нужно 3 провода и 2 разъема SUB-D, 9 контактов «мама»).
5-2-2. Протокол связи между компьютером и устройством.
Компьютер посылает команду. Микроконтроллер отвечает.
Компьютер посылает 3 байта (через RS232):
Команда DS1620 | 1-ый байт (код команды) | 2-ой байт (данные) | 3-ий байт (данные) |
Read Temperature (каждые 1000 мс) | 0хАА | 0х00 (не используется) | 0х00 (не используется) |
Read TH (чтение высокой температуры термостата) | 0хА1 | 0х00 (не используется) | 0х00 (не используется) |
Read TL (чтение низкой температуры термостата) | 0хА2 | 0х00 (не используется) | 0х00 (не используется) |
Write TH (запись высокой температуры термостата) | 0х01 | (0000000 D8) | (D7 … D0) |
Write TL (запись низкой температуры термостата) | 0х02 | (0000000 D8) | (D7 … D0) |
Получив же их, микроконтроллер передает команду датчику DS1620 (через 3-проводной последовательный порт, синхронный). В случае команды чтения (Read Temperature, TH Read, Read TL), термометр DS1620 отправляет данные в микроконтроллер (температура в виде двоичного числа 9 бит, закодированных в дополнение в 2). Это число передается без изменений на компьютер в виде 2-х байт:
1-й байт: (0000000 D8)
2-й байт: (D7 … D0)
D0 = бит
Для других команд, микроконтроллер посылает компьютеру два байта 0x00 (через RS232).
Команда DS1620 |
1-ый байт (данные) |
2-ой байт (данные) |
Read Temperature (каждые 1000 мс) |
(0000000 D8) |
(D7 … D0) |
Read TH (чтение высокой температуры термостата) |
(0000000 D8) |
(D7 … D0) |
Read TL (чтение низкой температуры термостата) |
(0000000 D8) |
(D7 … D0) |
Write TH (запись высокой температуры термостата) | 0х00 (не используется) | 0х00 (не используется) |
Write TL (запись низкой температуры термостата) | 0х00 (не используется) | 0х00 (не используется) |
Пример осциллограммы: команда Read Temperature
Связь между компьютером и PIC (RS232) :
0x00 0x2D = 0 0010 1101 = 45 = +22,5 °C
Связь между PIC и DS1620 (последовательный порт, синхронный) :
0 00101101 = 0x2D = 45 = +22,5 °C
6. Приложение DS1620_104.exe для Windows
Это приложение было написано на C++ Borland Builder 5. Приложение работает на Windows NT4 и Windows XP (на Windows Vista не тестировалось).
Примечание: для управления устройством через порт RS232 требуется установка компонента TComPort (версии 2.64 достаточно):
Скачать
Процедура установки
Учебник
Процедура использования:
- Соединить компьютер и устройство нуль-модемным кабелем (в выключенном состоянии)
- Подключить питание
- Открыть приложение
- Настроить параметры соединения с RS232C :
9600 бит/сек
8 бит данных
бит чётности-нет
1 стопбит
контроль потока-нет - Открыть порт
Должна появиться реальная температура (с обновлением каждые 1000 мс). Имеется возможность сохранения данных в текстовый файл:
Скачать приложение DS1620_104.exe для Windows 797 кб
Скачать исходный код приложения DS1620_104.exe 224 кб
7. Приложения для связи RS232 с LabVIEW
Вот два приложения, которые я написал для LabVIEW 5 :
ds1620_thermostat_004.vi
Обратите внимание, что эти приложения также работают с версией 6 LabVIEW.
Скачать ds1620_011.vi 223 кб
Скачать ds1620_thermostat_004.vi 223 кб
8. Установка соединения RS232 на языке Python
Версия Python: 2.7
Протестировано на Windows XP и Linux/Ubuntu
Этот сценарий требует наличия пакета pyserial (загрузка и процесс установки здесь).
Исходный код:
# (C) Фабрис Сэнсэр
# python 2.7
# соединение RS232 с цифровым термометром на цифровом датчике DS1620
#http://fabrice.sincere.pagespersoorange.fr/cm_электроника/проект_pic/ЖК термометр_DS1620htm/ЖК термометр_DS1620.htm
# тест: OK (linux/ubuntu + winXP)
import time
import serial # внешняя библиотека pyserial
print ‘Связь с COM-портом’
filename = ‘температура.txt’
print ‘\nФайл резервного копирования : ‘+filename
File = open(filename,’a’)
# библиотека 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 # в секундах
print «»»
# Под Windows :
# COM1 -> 0 (или COM1)
# COM2 -> 1 (или COM2)
# Под Linux :
# COM1 -> 0 (или /dev/ttyS0)
# COM2 -> 1 (или /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:
# запись
Port.write(‘\xAA\x00\x00’)
# чтение
MSB = Port.read() # старший байт
LSB = Port.read() # младший байт
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 affichage
Fichier.write(affichage +’\n’)
# пауза в 1 секунду
time.sleep(1.0)
except KeyboardInterrupt:
# CTRL + C
print «\nCTRL+C\nЗакрытие порта», Port.portstr
Port.close()
Fichier.close()
Выполнение сценария :
>>>
Связь с COM-портом
Файл резервной копии : температура.txt
# Под Windows :
# COM1 -> 0 (или COM1)
# COM2 -> 1 (или COM2)
# Под Linux :
# COM1 -> 0 (или /dev/ttyS0)
# COM2 -> 1 (или /dev/ttyS1)
Имя COM-порта ? 0
Порт -> 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
CTRL+C
Закрытие порта COM1
>>>
Скачать сценарий Python
9. Проверка температуры через интернет с помощью CGI-скрипта на Python
Тестировалось у меня на Linux/Ubuntu на Livebox (автор является клиентом Orange), со следующими настройками сети:
- частный IP-адрес: 192.168.1.10
- публичный: 90.14.148.96
Установка:
Помимо Python 2.7 и пакета pyserial, нужно установить на компьютер Веб-сервер Apache (здесь с XAMPP).Сценарии Python cgi_чтение температуры.py , cgi_сборник установок.py и cgi_обработка сборника установок.py должны быть помещены в каталог /opt/lampp/cgi-bin/
Внимание на установки: Свойства -> Разрешения -> Разрешить выполнение файла как программы
Что касается сценариев CGI в Python:
Первая линия сценариев должна быть:
#! /usr/bin/python
Первый выход должен быть (header) :
print «Content-Type: text/html\n\n»
Настройка Livebox:
Путь — Преобразование сетевых адресов -> Добавить службу http(протокол TCP, порт 80, IP-адрес сервера 192.168.1.10)
Настройка брандмауэра:
разрешить входящие соединения на порт 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) Фабрис Сэнсэр
# python 2.7
# сценарий cgi
# соединение RS232 с цифровым термометром на цифровом датчике 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 # внешняя библиотека pyserial
# Библиотека pyserial :
# http://pyserial.sourceforge.net/shortintro.html
# http://pyserial.sourceforge.net/pyserial_api.html
import time
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 # в секундах
# Под Windows :
# COM1 -> 0 (или COM1)
# COM2 -> 1 (или COM2)
# Под Linux :
# внимание : разрешение 666
# > sudo chmod 666 /dev/ttyS0
# COM1 -> 0 (или /dev/ttyS0)
# COM2 -> 1 (или /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’)
# чтение
MSB = Port.read() # старший байт
LSB = Port.read() # младший байт
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() # старший байт
LSB = Port.read() # младший байт
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() # старший байт
LSB = Port.read() # младший байт
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) Фабрис Сэнсэр
# сценарий cgi_обработка сборника установок.py
# Обработка данных, переданных через HTML-форму
import serial
import cgi
form = «cgi».FieldStorage()
def байт(температура):
temperature =int(temperature*2)
if temperature < 0:
температура += 256
MSB = 1
LSB = temperature
else:
MSB = 0
LSB = temperature
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 # в секунду
# Под Windows :
# COM1 -> 0 (или COM1)
# COM2 -> 1 (или COM2)
# Под Linux :
# внимание : разрешение 666
# > chmod 666 /dev/ttyS0
# COM1 -> 0 (или /dev/ttyS0)
# COM2 -> 1 (или /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
clear
# обнаружение 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
clear
message=’В другой консоли, запуск первого сценария DS1620_reception.sh’
echo-e «\n**************************************************************************»
echo-e «$message»
echo-e»**************************************************************************\n»
# бесконечный цикл
# посылает 3 байта (0xAA 0x00 0x00) = ПИК
# повторяет операцию каждые 5 секунд
while [ 1 ]
do
message=’Emission : echo-e-n «\xAA\x00\x00» > /dev/ttyS0′
echo «$message»
echo-e-n «\xAA\x00\x00» > /dev/ttyS0
sleep 5s
# вывод содержимого файла данных, полученного с помощью компьютера (в шестнадцатеричном формате)
echo-e «Прием»
od-t x1 temperature.dat
done
В консоли, выполнение этого сценария bash дает :
fabrice@imedia2089:~$ ./DS1620_emission.sh
**************************************************************************
В другой консоли, исполнение первого сценария DS1620_reception.sh
**************************************************************************
Посылка: echo-e-n «\xAA\x00\x00» > /dev/ttyS0
Приём
0000000 00 32
0000002
Посылка: echo-e-n «\xAA\x00\x00» > /dev/ttyS0
Приём
0000000 00 32 00 32
0000004
Посылка: echo-e-n «\xAA\x00\x00» > /dev/ttyS0
Приём
0000000 00 32 00 32 00 32
0000006
Посылка: echo-e-n «\xAA\x00\x00» > /dev/ttyS0
Приём
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 Мб)
Исходный код приложения
Это приложение было написано на C++ Borland Builder 5.
Примечание: Для связи с 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 минут).
Скачать исходный код сценария PHP
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. Список оборудования и деталей
- программатор для прошивки микроконтроллера PIC 16F628A
Без интерфейса RS232 :
- 1 буквенно-цифровой ЖК дисплей 2 × 16 с параллельным интерфейсом
- 3 резистора 10 кОм
- 1 подстроечный резистор 2,2 кОм ( для регулировки контраста дисплея)
- 1 цифровой датчик температуры DS1620 (Dallas Semiconductor)
Примечание : Вы можете заказать бесплатные образцы у фирмы Dallas - 1 микроконтроллер PIC 16F628A (корпус PDIP)
Примечание: Вы можете заказать бесплатные образцы у компании Microchip - 1 кварц на 20 МГц (20 МГц обязательно)
- 1 электролитический конденсатор 100 мкФ (фильтр)
- 1 электролитический конденсатор 10 мкФ (фильтр)
- 5 конденсаторов 100 нФ (фильтр)
- 2 конденсатора по 22 пФ
- 1 источник непрерывного питания +12 в (или батарейки 9 В)
- 1 микросхема регулятора напряжения 7805 (корпус ТО220)
- 2 кнопки (действующих на замыкание)
С интерфейсом RS232: дополнительные компоненты
- 1 инегральная микросхема MAX233A (интерфейс RS232C <-> TTL/CMOS)
Примечание: Вы можете заказать бесплатные образцы у компании Maxim - 1 разъем SubD, 9 контактов «папа»
- 1 электролитический конденсатор 1 мкф (фильтр)
- 1 нуль-модемный кабель («мама» / «мама»)
- 1 компьютер с COM-портом
14. Печатная плата
Размеры: 62 x 100 мм
Односторонняя.
web_temperature_ftp_code_source
Скачать фотошаблон
Примечание: Не забудьте 9–контактный разъём (припаяйте в первую очередь).
15. Прошивка для PIC 16F628A
Исходный код был написан на ассемблере в бесплатной среде MPLAB IDE от Microchip.
Скачать прошивку (.hex) исходный код на ассемблере (.asm)
Перевод Павла Блинкова (grayling3000) по заказу сайта Меандр