LABA 120 - очередная домашняя метеостанция на ардуино
для трансляции на ESP8266 с прошивкой BortX
трансляция через Bluetooth для программы AEHA Display
Состав:
- дисплей 1602
- Давление BMP180
- Влажность DHT11
- Температура домашняя BMP180
- Температура уличная DS1820
- освещенность
- счетчик перезагрузок
- счетчик открываний дверей
- трансляция на ESP8266 с прошивкой BortX
- трансляция через Bluetooth для программы AEHA Display
Питание = зарядное от сотового
Программа на BasCom Avr исходник и бинарник
доступны для скачивания без регистрации и СМС
Устройство собрано на макетной плате за 70 рублей
разводка медным проводом в изоляции от витой пары интернет
на индикаторе
Td: - Температура домашняя
Tu: - Температура уличная
Dv: - Давление
Hy: - Влажность
К устройству можно подключить три датчика температуры
DS18b20, на дисплей выводятся показания только с первого
остальные передаются через serial Port
Прошивка является сборной солянкой кодов из разных интернет источников
даташитов и примеров и самого BasCom Avr
Показать код
для трансляции на ESP8266 с прошивкой BortX
используется программный UART на PortB.5
данные идут в формате
<0>Td:</0><1>Tu:</1><2>Dv:</2><3>Hy:</3>
В коде вот так-
print
#1, "<0>";Temperatur;"</0><1>";SS(1); "</1><2>";Luftdruck;"</2><3>"
; h11; "</3>"
для трансляции через блютуз на сотовый
для программы AEHA Display
используется программный UART на PortB.4
данные идут в формате
"a*, Td:, Tu: , Dv:, Hy: ,,,,,,,,,,,#";
Все значения разделяются запятыми, допускается пропуск значений
'+++++++++++++++++ ПЕРЕМЕННЫЕ DS1820 И КОНФИГ +++++++++++++++++++++
Dim Tt AsInteger
Dim n AsByte Dim dd1(8) AsByte Dim dd2(8) AsByte Dim dd3(8) AsByte Dim Ss(3) AsString * 5 Dim RS AsString * 8
DeclareSub Zamer
DeclareSub Find
'+++++++++++++ Конфиг 1wire Входа счетчика входящих и выхода Com Port (rs232)
' Для передачи показаний в BortX
' по умолчанию в BortX скорость передачи 115200, я в своем занизил до 19200
Config 1wire = Portb.2
'' DECLARE FOR BMP 180 Dim Ac1 AsInteger Dim Ac1a AsLong Dim Ac2 AsInteger Dim Ac3 AsInteger Dim Ac4 AsWord Dim Ac5 AsWord Dim Ac5a AsSingle Dim Ac6 AsWord Dim B1 AsInteger Dim B2 AsInteger Dim B3 AsLong Dim B3a AsLong Dim B4 AsLong Dim B5 AsLong Dim B6 AsInteger Dim B6a AsLong Dim B7 AsLong Dim Mb AsInteger Dim Mc AsInteger Dim Mc2 AsLong Dim Md AsInteger Dim Adres AsByte Dim Wert AsByte Dim Ut AsLong Dim X1 AsLong Dim X1t AsSingle Dim X2 AsLong Dim X3 AsLong Dim T AsSingle Dim T2 AsLong
Dim Temperatur AsString * 6 Dim Luftdruck AsString * 8 Dim Druck AsSingle
Dim P AsLong Dim P2 AsLong Dim 2potenz15 AsLong Dim 2potenz11 AsInteger Dim 2potenz13 AsInteger Dim 2potenz8 AsInteger Dim 2potenz4 AsInteger Dim 2potenz2 AsInteger Dim 2potenz16 AsLong Dim 2potenz12 AsInteger Dim Potenz5255 AsSingle Dim Altitude AsSingle Dim Altitudes AsString * 8 Dim Msb AsLong Dim Lsb AsLong Dim Up AsLong Dim Druckvar AsByte DeclareSub Berechne_temp DeclareSub Berechne_druck DeclareSub Schreibe_bmp085(byval Adres AsByte , Byval Wert AsByte) DeclareSub Lese_bmp085(byval Adres AsByte , Wert AsByte) DeclareSub Lese_roh_daten DeclareSub Messen DeclareSub Lese_kalib_data
'Print B4
'B7
B7 = Up - B3
B3a = 50000 Shift B3a , Right , 2 '
B7 = B7 * B3a If B7 <= 0 Then B7 = B7 * -1
'Print B7 If B7 < &H80000000 Then
P = B7 * 2
'Print "p1 " ; P
P = P / B4
'Print "p1 " ; P Else
P = B7 / B4
'Print "p2 " ; P
P = P * 2
'Print "p2 " ; P EndIf