У меня есть проект, который измеряет температуру, влажность и напряжение (батареи) в комнате, на основе этого включает два реле и записывает эти данные в Excel. Проблема в том, что в месте, где он был развернут, нет Wi-Fi, поэтому я использую модуль SIM800L. Я пересмотрел много видео, но так и не понял. Мне нужна помощь.
Мой код приведен ниже:
#include "DHT.h"
#include "Wire.h"
#include "Adafruit_SH110X.h"
#include "WiFiS3.h"
#include "ArduinoHttpClient.h"
Adafruit_SH1106G display(128,64,&Wire,-1);
#define DHTPIN 2
#define DHTTYPE DHT11
#define v_in A0
#define fan 7
#define battery 8
int fan_state;
int bat_state;
float R1= 30000.0;
float R2= 7500.0;
float ref_volt= 5.0;
int adc_val= 0;
unsigned long last_send_time = 0;
unsigned long runtime = 0;
int allowFirstTime = 2;
int statusCode;
DHT dht(DHTPIN,DHTTYPE);
char ssid[]="my_wifi_ssid";
char pass[]="my_wifi_pass";
char serverAddress[] = "script.google.com";
String scriptPath = "/macros/s/my_apps_script_code/exec";
WiFiSSLClient wifi;
HttpClient client = HttpClient(wifi, serverAddress, 443);
void setup() {
Serial.begin(9600);
pinMode(DHTPIN,INPUT);
pinMode(fan,OUTPUT);
pinMode(battery,OUTPUT);
display.begin(0x3C,true);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SH110X_WHITE);
display.setCursor(0,0);
dht.begin();
WiFi.begin(ssid, pass);
while (WiFi.status()!=WL_CONNECTED) {
Serial.println("Connecting to WiFi....");
display.println("Connecting to WiFi....");
display.display();
delay(3000);
}
Serial.print("---Connected to Wifi----");
display.println("Connected to WiFi");
display.display();
}
void loop() {
display.clearDisplay();
display.setCursor(0,0);
if (WiFi.status() != WL_CONNECTED) {
Serial.println("WiFi lost, reconnecting...");
display.println("WiFi gone, reconnecting");
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
}
Serial.println("Reconnected!");
display.println("Reconnected!");
display.display();
}
delay(1000);
display.clearDisplay();
runtime=millis();
if (runtime < last_send_time){
last_send_time= 0;
}
float h = dht.readHumidity();
float t = dht.readTemperature();
float hic = dht.computeHeatIndex(t, h, false);
adc_val=analogRead(v_in);
float adc_volt = (adc_val*ref_volt)/1024;
float in_volt = adc_volt * (R1+R2)/R2;
float real_volt;
if (in_volt > 0.37){
real_volt = in_volt - 0.37;
}else{
real_volt = in_volt;
}
if (t >= 40){
digitalWrite(fan,LOW);
fan_state=1;
}else{
digitalWrite(fan,HIGH);
fan_state=0;
}
if (real_volt > 11.6){
digitalWrite(battery,LOW);
bat_state=1;
}else{
digitalWrite(battery,HIGH);
bat_state= 0;
}
Serial.print("Temperature: ");
Serial.println(t);
Serial.print("Humidity: ");
Serial.println(h);
Serial.print("Voltage: ");
Serial.println(real_volt);
display.setCursor(0,0);
display.print("Temperature: ");
display.println(t);
display.print("Humidity: ");
display.println(h);
display.print("Voltage: ");
display.println(real_volt);
if (fan_state==1){
display.println("Fan: ON");
}else{
display.println("Fan: OFF");
}
if (bat_state==1){
display.println("Battery Relay: ON");
}else{
display.println("Battery Relay: OFF");
}
display.display();
if ((runtime-last_send_time)>= 300000 || allowFirstTime > 0){ //300000 milliseconds=5 minutes
String getPath = scriptPath;
getPath += "?temperature=" + String(t);
getPath += "&humidity=" + String(h);
getPath += "&voltage=" + String(real_volt);
getPath += "&fan=" + String(fan_state);
getPath += "&battery=" + String(bat_state);
client.stop();
client.get(getPath);
last_send_time = millis();
statusCode = client.responseStatusCode();
String response = client.responseBody();
Serial.println(getPath);
Serial.println(statusCode);
if (allowFirstTime > 0){
allowFirstTime -=1;
}else{
allowFirstTime =0;
}
}
display.print("Status Code:");
display.println(statusCode);
display.display();
delay(2000);
}
Подробнее: https://stackoverflow.com/questions/799 ... im800l-how
HTTPS с SIM800L. Как? [закрыто] ⇐ C++
Программы на C++. Форум разработчиков
1774177996
Anonymous
У меня есть проект, который измеряет температуру, влажность и напряжение (батареи) в комнате, на основе этого включает два реле и записывает эти данные в Excel. Проблема в том, что в месте, где он был развернут, нет Wi-Fi, поэтому я использую модуль SIM800L. Я пересмотрел много видео, но так и не понял. Мне нужна помощь.
Мой код приведен ниже:
#include "DHT.h"
#include "Wire.h"
#include "Adafruit_SH110X.h"
#include "WiFiS3.h"
#include "ArduinoHttpClient.h"
Adafruit_SH1106G display(128,64,&Wire,-1);
#define DHTPIN 2
#define DHTTYPE DHT11
#define v_in A0
#define fan 7
#define battery 8
int fan_state;
int bat_state;
float R1= 30000.0;
float R2= 7500.0;
float ref_volt= 5.0;
int adc_val= 0;
unsigned long last_send_time = 0;
unsigned long runtime = 0;
int allowFirstTime = 2;
int statusCode;
DHT dht(DHTPIN,DHTTYPE);
char ssid[]="my_wifi_ssid";
char pass[]="my_wifi_pass";
char serverAddress[] = "script.google.com";
String scriptPath = "/macros/s/my_apps_script_code/exec";
WiFiSSLClient wifi;
HttpClient client = HttpClient(wifi, serverAddress, 443);
void setup() {
Serial.begin(9600);
pinMode(DHTPIN,INPUT);
pinMode(fan,OUTPUT);
pinMode(battery,OUTPUT);
display.begin(0x3C,true);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SH110X_WHITE);
display.setCursor(0,0);
dht.begin();
WiFi.begin(ssid, pass);
while (WiFi.status()!=WL_CONNECTED) {
Serial.println("Connecting to WiFi....");
display.println("Connecting to WiFi....");
display.display();
delay(3000);
}
Serial.print("---Connected to Wifi----");
display.println("Connected to WiFi");
display.display();
}
void loop() {
display.clearDisplay();
display.setCursor(0,0);
if (WiFi.status() != WL_CONNECTED) {
Serial.println("WiFi lost, reconnecting...");
display.println("WiFi gone, reconnecting");
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
}
Serial.println("Reconnected!");
display.println("Reconnected!");
display.display();
}
delay(1000);
display.clearDisplay();
runtime=millis();
if (runtime < last_send_time){
last_send_time= 0;
}
float h = dht.readHumidity();
float t = dht.readTemperature();
float hic = dht.computeHeatIndex(t, h, false);
adc_val=analogRead(v_in);
float adc_volt = (adc_val*ref_volt)/1024;
float in_volt = adc_volt * (R1+R2)/R2;
float real_volt;
if (in_volt > 0.37){
real_volt = in_volt - 0.37;
}else{
real_volt = in_volt;
}
if (t >= 40){
digitalWrite(fan,LOW);
fan_state=1;
}else{
digitalWrite(fan,HIGH);
fan_state=0;
}
if (real_volt > 11.6){
digitalWrite(battery,LOW);
bat_state=1;
}else{
digitalWrite(battery,HIGH);
bat_state= 0;
}
Serial.print("Temperature: ");
Serial.println(t);
Serial.print("Humidity: ");
Serial.println(h);
Serial.print("Voltage: ");
Serial.println(real_volt);
display.setCursor(0,0);
display.print("Temperature: ");
display.println(t);
display.print("Humidity: ");
display.println(h);
display.print("Voltage: ");
display.println(real_volt);
if (fan_state==1){
display.println("Fan: ON");
}else{
display.println("Fan: OFF");
}
if (bat_state==1){
display.println("Battery Relay: ON");
}else{
display.println("Battery Relay: OFF");
}
display.display();
if ((runtime-last_send_time)>= 300000 || allowFirstTime > 0){ //300000 milliseconds=5 minutes
String getPath = scriptPath;
getPath += "?temperature=" + String(t);
getPath += "&humidity=" + String(h);
getPath += "&voltage=" + String(real_volt);
getPath += "&fan=" + String(fan_state);
getPath += "&battery=" + String(bat_state);
client.stop();
client.get(getPath);
last_send_time = millis();
statusCode = client.responseStatusCode();
String response = client.responseBody();
Serial.println(getPath);
Serial.println(statusCode);
if (allowFirstTime > 0){
allowFirstTime -=1;
}else{
allowFirstTime =0;
}
}
display.print("Status Code:");
display.println(statusCode);
display.display();
delay(2000);
}
Подробнее: [url]https://stackoverflow.com/questions/79912236/https-with-sim800l-how[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия