Club Arduino 💡🪛🧲
6.6K subscribers
179K photos
563 videos
1.19K files
42.9K links
Группа Denis Geek Club_arduino official.
По рекламе и сотрудничеству @DenisGeek
Download Telegram
MQ-135 Gas Sensor - это простой в использование датчик газа, широко применяются в робототехнике и системах автоматизации, подходит для Arduino проектов. Еще его называют датчик углекислого газа.
US $1.28
https://ali.pub/5cutkh

#define RLOAD 22.0
#include "MQ135.h"
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
MQ135 gasSensor = MQ135(A0);
int val;
int sensorPin = A0;
int sensorValue = 0;
void setup() {
Serial.begin(9600);
pinMode(sensorPin, INPUT);
display.begin(SSD1306_SWITCHCAPVCC);
display.clearDisplay();
display.display();
}
void loop() {
val = analogRead(A0);
Serial.print ("raw = ");
Serial.println (val);
// float zero = gasSensor.getRZero();
// Serial.print ("rzero: ");
//Serial.println (zero);
float ppm = gasSensor.getPPM();
Serial.print ("ppm: ");
Serial.println (ppm);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(18,43);
display.println("CO2");
display.setCursor(63,43);
display.println("(PPM)");
display.setTextSize(2);
display.setCursor(28,5);
display.println(ppm);
display.display();
display.clearDisplay();
delay(2000);
}
MQ-135 Gas Sensor - это простой в использование датчик газа, широко применяются в робототехнике и системах автоматизации, подходит для Arduino проектов. Еще его называют датчик углекислого газа.
US $1.28
https://ali.pub/5cutkh

#define RLOAD 22.0
#include "MQ135.h"
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
MQ135 gasSensor = MQ135(A0);
int val;
int sensorPin = A0;
int sensorValue = 0;
void setup() {
Serial.begin(9600);
pinMode(sensorPin, INPUT);
display.begin(SSD1306_SWITCHCAPVCC);
display.clearDisplay();
display.display();
}
void loop() {
val = analogRead(A0);
Serial.print ("raw = ");
Serial.println (val);
// float zero = gasSensor.getRZero();
// Serial.print ("rzero: ");
//Serial.println (zero);
float ppm = gasSensor.getPPM();
Serial.print ("ppm: ");
Serial.println (ppm);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(18,43);
display.println("CO2");
display.setCursor(63,43);
display.println("(PPM)");
display.setTextSize(2);
display.setCursor(28,5);
display.println(ppm);
display.display();
display.clearDisplay();
delay(2000);
}
Датчик атмосферного давления, влажности и температуры BME280
US $2.08
https://aliclick.shop/r/c/1qvw6uhprx3n7bi9?product_id=1005002434252889
Модуль BME280 предназначен для измерения атмосферного давления, температуры и влажности. Это очередной датчик давления фирмы Bosch Sensortec для измерения атмосферного давления и температуры. По сравнению с первыми датчиками серии (BMP085 и BMP180) он имеет лучшие характеристики и меньшие размеры. Отличие от датчика BMP280 – наличие гигрометра, что позволяет измерять относительную влажность воздуха и создать на его основе маленькую метеостанцию.

#include <Wire.h>

#include <SPI.h>

// подключение библиотек

#include <Adafruit_Sensor.h>

#include <Adafruit_BME280.h>

#include <OLED_I2C.h>

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme280; // BME280 на I2C

OLED oled(SDA, SCL, 8); //

extern uint8_t SmallFont[]; // шрифт



unsigned long millist;

String txt1="";



void setup() {

Serial.begin(9600);

bme280.begin();

oled.begin();

oled.setFont(SmallFont);

}



void loop() {

// прошло 5 секунд?

if(millis()-millist>=5000) {

oled.clrScr();

// температура

txt1="Temp=";

txt1= txt1+String(bme280.readTemperature());

txt1= txt1+" *C";

oled.print(txt1, CENTER, 10);

// влажность

txt1="Hum=";

txt1= txt1+String(bme280.readHumidity());

txt1= txt1+" %";

oled.print(txt1, CENTER, 25);

// давление

txt1="P=";

txt1= txt1+String(bme280.readPressure() / 100.0F);

txt1= txt1+" hPa";

oled.print(txt1, CENTER, 40);

oled.update();

// новый отсчет 5 секунд

millist=millis();

}

}
https://aliclick.shop/r/c/1qvw6uhprx3n7bi9?product_id=1005002434252889&from_content=wall_-107877557_118570&gaid=bfc0fd12-544f-4bc8-96c7-c6e5f5a06353
Простые часы на ESp8266 +Oled display

Для сборки потребуется :
Плата NodeMcu v3 https://alii.pub/5wwx2u
0.96" I2C OLED Display https://ali.pub/54jn2p
Провода для спайки

Код
#include
#include

#include
#include
#include
#include

#define OLED_RESET LED_BUILTIN //4
Adafruit_SSD1306 display(OLED_RESET);

const char* ssid = "имя сети";
const char* password = "пароль от вай-фая";

int ledPin = 13;

int timezone = 7 * 3600;
int dst = 0;

#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

void setup() {

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

// Clear the buffer.
display.clearDisplay();
display.display();

pinMode(ledPin,OUTPUT);
digitalWrite(ledPin,LOW);

Serial.begin(115200);

display.setTextSize(1);
display.setTextColor(WHITE);

display.setCursor(0,0);
display.println("Wifi connecting to ");
display.println( ssid );

WiFi.begin(ssid,password);

display.println("\nConnecting");

display.display();

while( WiFi.status() != WL_CONNECTED ){
delay(500);
display.print(".");
display.display();
}

// Clear the buffer.
display.clearDisplay();
display.display();
display.setCursor(0,0);

display.println("Wifi Connected!");
display.print("IP:");
display.println(WiFi.localIP() );

display.display();

configTime(timezone, dst, "pool.ntp.org","time.nist.gov");
display.println("\nWaiting for NTP...");

while(!time(nullptr)){
Serial.print("*");

delay(1000);
}
display.println("\nTime response....OK");
display.display();
delay(1000);

display.clearDisplay();
display.display();
}

void loop() {

time_t now = time(nullptr);
struct tm* p_tm = localtime(&now);

Serial.print(p_tm->tm_mday);
Serial.print("/");
Serial.print(p_tm->tm_mon + 1);
Serial.print("/");
Serial.print(p_tm->tm_year + 1900);

Serial.print(" ");

Serial.print(p_tm->tm_hour);
Serial.print(":");
Serial.print(p_tm->tm_min);
Serial.print(":");
Serial.println(p_tm->tm_sec);

// Clear the buffer.
display.clearDisplay();

display.setTextSize(3);
display.setTextColor(WHITE);

display.setCursor(0,0);
display.print(p_tm->tm_hour);
display.print(":");
if( p_tm->tm_min <10)
display.print("0");
display.print(p_tm->tm_min);

display.setTextSize(2);
display.setCursor(90,5);
display.print(".");
if( p_tm->tm_sec <10)
display.print("0");
display.print(p_tm->tm_sec);

display.setTextSize(1);
display.setCursor(0,40);
display.print(p_tm->tm_mday);
display.print("/");
display.print(p_tm->tm_mon + 1);
display.print("/");
display.print(p_tm->tm_year + 1900);

display.display();

delay(1000); // update every 1 sec

}
Простые часы на ESp8266 +Oled display

Для сборки потребуется :
Плата NodeMcu v3 https://alii.pub/5wwx2u
0.96" I2C OLED Display https://ali.pub/54jn2p
Провода для спайки

Код
#include
#include

#include
#include
#include
#include

#define OLED_RESET LED_BUILTIN //4
Adafruit_SSD1306 display(OLED_RESET);

const char* ssid = "имя сети";
const char* password = "пароль от вай-фая";

int ledPin = 13;

int timezone = 7 * 3600;
int dst = 0;

#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

void setup() {

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

// Clear the buffer.
display.clearDisplay();
display.display();

pinMode(ledPin,OUTPUT);
digitalWrite(ledPin,LOW);

Serial.begin(115200);

display.setTextSize(1);
display.setTextColor(WHITE);

display.setCursor(0,0);
display.println("Wifi connecting to ");
display.println( ssid );

WiFi.begin(ssid,password);

display.println("\nConnecting");

display.display();

while( WiFi.status() != WL_CONNECTED ){
delay(500);
display.print(".");
display.display();
}

// Clear the buffer.
display.clearDisplay();
display.display();
display.setCursor(0,0);

display.println("Wifi Connected!");
display.print("IP:");
display.println(WiFi.localIP() );

display.display();

configTime(timezone, dst, "pool.ntp.org","time.nist.gov");
display.println("\nWaiting for NTP...");

while(!time(nullptr)){
Serial.print("*");

delay(1000);
}
display.println("\nTime response....OK");
display.display();
delay(1000);

display.clearDisplay();
display.display();
}

void loop() {

time_t now = time(nullptr);
struct tm* p_tm = localtime(&now);

Serial.print(p_tm->tm_mday);
Serial.print("/");
Serial.print(p_tm->tm_mon + 1);
Serial.print("/");
Serial.print(p_tm->tm_year + 1900);

Serial.print(" ");

Serial.print(p_tm->tm_hour);
Serial.print(":");
Serial.print(p_tm->tm_min);
Serial.print(":");
Serial.println(p_tm->tm_sec);

// Clear the buffer.
display.clearDisplay();

display.setTextSize(3);
display.setTextColor(WHITE);

display.setCursor(0,0);
display.print(p_tm->tm_hour);
display.print(":");
if( p_tm->tm_min <10)
display.print("0");
display.print(p_tm->tm_min);

display.setTextSize(2);
display.setCursor(90,5);
display.print(".");
if( p_tm->tm_sec <10)
display.print("0");
display.print(p_tm->tm_sec);

display.setTextSize(1);
display.setCursor(0,40);
display.print(p_tm->tm_mday);
display.print("/");
display.print(p_tm->tm_mon + 1);
display.print("/");
display.print(p_tm->tm_year + 1900);

display.display();

delay(1000); // update every 1 sec

}
Дубликатор ключей ONEWIRE DS-1990 (Dallas Touch Memory DS-90) на ардуино

Простота устройства, дешевизна изготовления, надежность (нечему ломаться) привело к тому, что данные ключи стали использоваться повсеместно. Начиная от домофонов и заканчивая автомобильными сигнализациями.

Многие производители считывающих устройств поддерживают так называемые "мастер ключи" - т.е. универсальные коды ключей. Такие обычно выдают обслуживающим организациям для доступа в подъезд. Вот некоторые из них, что можно найти в открытом доступе:

01:BE:40:11:5A:36:00:E1

FF:FF:FF:FF:FF:FF

00:36:5A:11:40:BE

00:00:00:FE:D4:53

00:00:00:00:00:00

00:00:00:01:FF:FF

00:00:09:3С:E4:A9

00:00:FF:FF:FF:FF

00:00:AA:11:BE:00

00:00:0F:2E:B8:76

FF:FF:FF:FF:FF

36:5A:11:40:BE

01:FF:FF:FF:FF

36:5A:39:81:49

00:00:00:00:00

01:FF:FF:FF:FF

56:5A:11:40:BE

36:5A:39:81:49

00:00:00:00:00

0B:57:81:46:01

C9:8E

Соберем программатор для записи ключей. Нам потребуются болванки. В продаже часто встречаются DS1990 и TM2004. TM2004 - можно перезописывать, если не произведена финализация (подача 9 вольт). После финализации ключ сохраняется на вечно.

Программировать будем через Arduino Uno. Подключается ключ на 16 ногу и подтягивается к плюсу. Второй конец ключа на землю.

Скетч программы для Arduino записывает каждый бит отдельно:


include <OneWire.h>
#define pin 10
byte key_to_write[] = { 0x01, 0xBE, 0x40, 0x11, 0x5A, 0x36, 0x00, 0xE1 };
OneWire ds(pin); // pin 10 is 1-Wire interface pin now
void setup(void) {
Serial.begin(9600);
}
void loop(void) {
byte i;
byte data[8];
delay(1000); // 1 sec
ds.reset();
delay(50);
ds.write(0x33); // "READ" command
ds.read_bytes(data, 8);
Serial.print("KEY ");
for( i = 0; i < 8; i++) {
Serial.print(data[i], HEX);
if (i != 7) Serial.print(":");
}
// Check if FF:FF:FF:FF:FF:FF:FF:FF
// If your button is really programmed with FF:FF:FF:FF:FF:FF:FF:FF, then remove this check
if (data[0] & data[1] & data[2] & data[3] & data[4] & data[5] & data[6] & data[7] == 0xFF)
{
Serial.println("...nothing found!");
return;
}
return; // remove when ready to programm
// Check if read key is equal to the one to be programmed
for (i = 0; i < 8; i++)
if (data[i] != key_to_write[i])
break;
else
if (i == 7)
{
Serial.println("...already programmed!");
return;
}
Serial.println();
Serial.print("Programming new key...");
for (uint8_t i = 0; i < 8; i++)
{
ds.reset();
data[0] = 0x3C; // "WRITE" command
data[1] = i; // programming i-th byte
data[2] = 0;
data[3] = key_to_write[i];
ds.write_bytes(data, 4);
Serial.print(".");
uint8_t crc = ds.read();
if (OneWire::crc8(data, 4) != crc) {
Serial.print("error!\r\n");
return;
}
else
Serial.print(".");
send_programming_impulse();
}
Serial.println("done!");
}
void send_programming_impulse()
{
pinMode(pin, OUTPUT);
digitalWrite(pin, HIGH);
delay(60);
digitalWrite(pin, LOW);
delay(5);
digitalWrite(pin, HIGH);
delay(50);
}
Если вы хотите просто считать код ключа, а не программировать его, то закомментируйте строку "remove when ready to programm". При подключении ключа в консоль вывалится считанный код.

Таким образом, можно создать дубликат любого ключа или сделать свой мастер-ключ, если вам известен его код.
Датчик атмосферного давления, влажности и температуры BME280
US $2.08
https://aliclick.shop/r/c/1qvw6uhprx3n7bi9?product_id=1005002434252889
Модуль BME280 предназначен для измерения атмосферного давления, температуры и влажности. Это очередной датчик давления фирмы Bosch Sensortec для измерения атмосферного давления и температуры. По сравнению с первыми датчиками серии (BMP085 и BMP180) он имеет лучшие характеристики и меньшие размеры. Отличие от датчика BMP280 – наличие гигрометра, что позволяет измерять относительную влажность воздуха и создать на его основе маленькую метеостанцию.

#include

#include

// подключение библиотек

#include

#include

#include

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme280; // BME280 на I2C

OLED oled(SDA, SCL, 8); //

extern uint8_t SmallFont[]; // шрифт



unsigned long millist;

String txt1="";



void setup() {

Serial.begin(9600);

bme280.begin();

oled.begin();

oled.setFont(SmallFont);

}



void loop() {

// прошло 5 секунд?

if(millis()-millist>=5000) {

oled.clrScr();

// температура

txt1="Temp=";

txt1= txt1+String(bme280.readTemperature());

txt1= txt1+" *C";

oled.print(txt1, CENTER, 10);

// влажность

txt1="Hum=";

txt1= txt1+String(bme280.readHumidity());

txt1= txt1+" %";

oled.print(txt1, CENTER, 25);

// давление

txt1="P=";

txt1= txt1+String(bme280.readPressure() / 100.0F);

txt1= txt1+" hPa";

oled.print(txt1, CENTER, 40);

oled.update();

// новый отсчет 5 секунд

millist=millis();

}

}
https://aliclick.shop/r/c/1qvw6uhprx3n7bi9?product_id=1005002434252889&from_content=wall_-43363264_482771&gaid=bfc0fd12-544f-4bc8-96c7-c6e5f5a06353&sns_params=%7B%22vk_id%22%3A10943591%2C%22exps%22%3A%5B%5D%7D
Простые часы на ESp8266 +Oled display

Для сборки потребуется :
Плата NodeMcu v3 https://alii.pub/5wwx2u
0.96" I2C OLED Display https://ali.pub/54jn2p
Провода для спайки

Код
#include
#include

#include
#include
#include
#include

#define OLED_RESET LED_BUILTIN //4
Adafruit_SSD1306 display(OLED_RESET);

const char* ssid = "имя сети";
const char* password = "пароль от вай-фая";

int ledPin = 13;

int timezone = 7 * 3600;
int dst = 0;

#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

void setup() {

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

// Clear the buffer.
display.clearDisplay();
display.display();

pinMode(ledPin,OUTPUT);
digitalWrite(ledPin,LOW);

Serial.begin(115200);

display.setTextSize(1);
display.setTextColor(WHITE);

display.setCursor(0,0);
display.println("Wifi connecting to ");
display.println( ssid );

WiFi.begin(ssid,password);

display.println("\nConnecting");

display.display();

while( WiFi.status() != WL_CONNECTED ){
delay(500);
display.print(".");
display.display();
}

// Clear the buffer.
display.clearDisplay();
display.display();
display.setCursor(0,0);

display.println("Wifi Connected!");
display.print("IP:");
display.println(WiFi.localIP() );

display.display();

configTime(timezone, dst, "pool.ntp.org","time.nist.gov");
display.println("\nWaiting for NTP...");

while(!time(nullptr)){
Serial.print("*");

delay(1000);
}
display.println("\nTime response....OK");
display.display();
delay(1000);

display.clearDisplay();
display.display();
}

void loop() {

time_t now = time(nullptr);
struct tm* p_tm = localtime(&now);

Serial.print(p_tm->tm_mday);
Serial.print("/");
Serial.print(p_tm->tm_mon + 1);
Serial.print("/");
Serial.print(p_tm->tm_year + 1900);

Serial.print(" ");

Serial.print(p_tm->tm_hour);
Serial.print(":");
Serial.print(p_tm->tm_min);
Serial.print(":");
Serial.println(p_tm->tm_sec);

// Clear the buffer.
display.clearDisplay();

display.setTextSize(3);
display.setTextColor(WHITE);

display.setCursor(0,0);
display.print(p_tm->tm_hour);
display.print(":");
if( p_tm->tm_min <10)
display.print("0");
display.print(p_tm->tm_min);

display.setTextSize(2);
display.setCursor(90,5);
display.print(".");
if( p_tm->tm_sec <10)
display.print("0");
display.print(p_tm->tm_sec);

display.setTextSize(1);
display.setCursor(0,40);
display.print(p_tm->tm_mday);
display.print("/");
display.print(p_tm->tm_mon + 1);
display.print("/");
display.print(p_tm->tm_year + 1900);

display.display();

delay(1000); // update every 1 sec

}
MQ-135 Gas Sensor - это простой в использование датчик газа, широко применяются в робототехнике и системах автоматизации, подходит для Arduino проектов. Еще его называют датчик углекислого газа.
US $0.91
https://aliclick.shop/r/c/1r0ry1kr5ysnxijo?product_id=32728440738

#define RLOAD 22.0
#include "MQ135.h"
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
MQ135 gasSensor = MQ135(A0);
int val;
int sensorPin = A0;
int sensorValue = 0;
void setup() {
Serial.begin(9600);
pinMode(sensorPin, INPUT);
display.begin(SSD1306_SWITCHCAPVCC);
display.clearDisplay();
display.display();
}
void loop() {
val = analogRead(A0);
Serial.print ("raw = ");
Serial.println (val);
// float zero = gasSensor.getRZero();
// Serial.print ("rzero: ");
//Serial.println (zero);
float ppm = gasSensor.getPPM();
Serial.print ("ppm: ");
Serial.println (ppm);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(18,43);
display.println("CO2");
display.setCursor(63,43);
display.println("(PPM)");
display.setTextSize(2);
display.setCursor(28,5);
display.println(ppm);
display.display();
display.clearDisplay();
delay(2000);
}
https://aliclick.shop/r/c/1r0ry1kr5ysnxijo?product_id=32728440738&from_content=wall_-107877557_124033&gaid=bfc0fd12-544f-4bc8-96c7-c6e5f5a06353&sns_params=%7B%22vk_id%22%3A10943591%2C%22exps%22%3A%5B%5D%7D
MQ-135 Gas Sensor - это простой в использование датчик газа, широко применяются в робототехнике и системах автоматизации, подходит для Arduino проектов. Еще его называют датчик углекислого газа.
US $0.91
https://aliclick.shop/r/c/1r0ry1kr5ysnxijo?product_id=32728440738

#define RLOAD 22.0
#include "MQ135.h"
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,
OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
MQ135 gasSensor = MQ135(A0);
int val;
int sensorPin = A0;
int sensorValue = 0;
void setup() {
Serial.begin(9600);
pinMode(sensorPin, INPUT);
display.begin(SSD1306_SWITCHCAPVCC);
display.clearDisplay();
display.display();
}
void loop() {
val = analogRead(A0);
Serial.print ("raw = ");
Serial.println (val);
// float zero = gasSensor.getRZero();
// Serial.print ("rzero: ");
//Serial.println (zero);
float ppm = gasSensor.getPPM();
Serial.print ("ppm: ");
Serial.println (ppm);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(18,43);
display.println("CO2");
display.setCursor(63,43);
display.println("(PPM)");
display.setTextSize(2);
display.setCursor(28,5);
display.println(ppm);
display.display();
display.clearDisplay();
delay(2000);
}
https://aliclick.shop/r/c/1r0ry1kr5ysnxijo?product_id=32728440738&from_content=wall_-43363264_503668&gaid=bfc0fd12-544f-4bc8-96c7-c6e5f5a06353&sns_params=%7B%22vk_id%22%3A10943591%2C%22exps%22%3A%5B%5D%7D
Датчик атмосферного давления, влажности и температуры BME280
US $2.08
https://aliclick.shop/r/c/1qvw6uhprx3n7bi9?product_id=1005002434252889
Модуль BME280 предназначен для измерения атмосферного давления, температуры и влажности. Это очередной датчик давления фирмы Bosch Sensortec для измерения атмосферного давления и температуры. По сравнению с первыми датчиками серии (BMP085 и BMP180) он имеет лучшие характеристики и меньшие размеры. Отличие от датчика BMP280 – наличие гигрометра, что позволяет измерять относительную влажность воздуха и создать на его основе маленькую метеостанцию.

#include

#include

// подключение библиотек

#include

#include

#include

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme280; // BME280 на I2C

OLED oled(SDA, SCL, 8); //

extern uint8_t SmallFont[]; // шрифт



unsigned long millist;

String txt1="";



void setup() {

Serial.begin(9600);

bme280.begin();

oled.begin();

oled.setFont(SmallFont);

}



void loop() {

// прошло 5 секунд?

if(millis()-millist>=5000) {

oled.clrScr();

// температура

txt1="Temp=";

txt1= txt1+String(bme280.readTemperature());

txt1= txt1+" *C";

oled.print(txt1, CENTER, 10);

// влажность

txt1="Hum=";

txt1= txt1+String(bme280.readHumidity());

txt1= txt1+" %";

oled.print(txt1, CENTER, 25);

// давление

txt1="P=";

txt1= txt1+String(bme280.readPressure() / 100.0F);

txt1= txt1+" hPa";

oled.print(txt1, CENTER, 40);

oled.update();

// новый отсчет 5 секунд

millist=millis();

}

}
https://aliclick.shop/r/c/1qvw6uhprx3n7bi9?product_id=1005002434252889&from_content=wall_-107877557_134072&gaid=bfc0fd12-544f-4bc8-96c7-c6e5f5a06353&sns_params=%7B%22vk_id%22%3A10943591%2C%22exps%22%3A%5B%5D%7D
Простые часы на ESp8266 +Oled display
Для сборки потребуется :
Плата NodeMcu v3 https://alli.pub/6ca8io
0.96" I2C OLED Display https://alli.pub/6ca8iv
Провода для спайки
Код
#include
#include

#include
#include
#include
#include

#define OLED_RESET LED_BUILTIN //4
Adafruit_SSD1306 display(OLED_RESET);

const char* ssid = "имя сети";
const char* password = "пароль от вай-фая";

int ledPin = 13;

int timezone = 7 * 3600;
int dst = 0;

#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

void setup() {

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

// Clear the buffer.
display.clearDisplay();
display.display();

pinMode(ledPin,OUTPUT);
digitalWrite(ledPin,LOW);

Serial.begin(115200);

display.setTextSize(1);
display.setTextColor(WHITE);

display.setCursor(0,0);
display.println("Wifi connecting to ");
display.println( ssid );

WiFi.begin(ssid,password);

display.println("\nConnecting");

display.display();

while( WiFi.status() != WL_CONNECTED ){
delay(500);
display.print(".");
display.display();
}

// Clear the buffer.
display.clearDisplay();
display.display();
display.setCursor(0,0);

display.println("Wifi Connected!");
display.print("IP:");
display.println(WiFi.localIP() );

display.display();

configTime(timezone, dst, "pool.ntp.org","time.nist.gov");
display.println("\nWaiting for NTP...");

while(!time(nullptr)){
Serial.print("*");

delay(1000);
}
display.println("\nTime response....OK");
display.display();
delay(1000);

display.clearDisplay();
display.display();
}

void loop() {

time_t now = time(nullptr);
struct tm* p_tm = localtime(&now);

Serial.print(p_tm->tm_mday);
Serial.print("/");
Serial.print(p_tm->tm_mon + 1);
Serial.print("/");
Serial.print(p_tm->tm_year + 1900);

Serial.print(" ");

Serial.print(p_tm->tm_hour);
Serial.print(":");
Serial.print(p_tm->tm_min);
Serial.print(":");
Serial.println(p_tm->tm_sec);

// Clear the buffer.
display.clearDisplay();

display.setTextSize(3);
display.setTextColor(WHITE);

display.setCursor(0,0);
display.print(p_tm->tm_hour);
display.print(":");
if( p_tm->tm_min <10)
display.print("0");
display.print(p_tm->tm_min);

display.setTextSize(2);
display.setCursor(90,5);
display.print(".");
if( p_tm->tm_sec <10)
display.print("0");
display.print(p_tm->tm_sec);

display.setTextSize(1);
display.setCursor(0,40);
display.print(p_tm->tm_mday);
display.print("/");
display.print(p_tm->tm_mon + 1);
display.print("/");
display.print(p_tm->tm_year + 1900);

display.display();

delay(1000); // update every 1 sec

}
👍4👎1
Датчик атмосферного давления, влажности и температуры BME280
US $2.08
https://aliclick.shop/r/c/1qvw6uhprx3n7bi9?product_id=1005002434252889
Модуль BME280 предназначен для измерения атмосферного давления, температуры и влажности. Это очередной датчик давления фирмы Bosch Sensortec для измерения атмосферного давления и температуры. По сравнению с первыми датчиками серии (BMP085 и BMP180) он имеет лучшие характеристики и меньшие размеры. Отличие от датчика BMP280 – наличие гигрометра, что позволяет измерять относительную влажность воздуха и создать на его основе маленькую метеостанцию.

#include

#include

// подключение библиотек

#include

#include

#include

#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme280; // BME280 на I2C

OLED oled(SDA, SCL, 8); //

extern uint8_t SmallFont[]; // шрифт



unsigned long millist;

String txt1="";



void setup() {

Serial.begin(9600);

bme280.begin();

oled.begin();

oled.setFont(SmallFont);

}



void loop() {

// прошло 5 секунд?

if(millis()-millist>=5000) {

oled.clrScr();

// температура

txt1="Temp=";

txt1= txt1+String(bme280.readTemperature());

txt1= txt1+" *C";

oled.print(txt1, CENTER, 10);

// влажность

txt1="Hum=";

txt1= txt1+String(bme280.readHumidity());

txt1= txt1+" %";

oled.print(txt1, CENTER, 25);

// давление

txt1="P=";

txt1= txt1+String(bme280.readPressure() / 100.0F);

txt1= txt1+" hPa";

oled.print(txt1, CENTER, 40);

oled.update();

// новый отсчет 5 секунд

millist=millis();

}

}
https://aliclick.shop/r/c/1qvw6uhprx3n7bi9?product_id=1005002434252889&from_content=wall_-43363264_556423&gaid=bfc0fd12-544f-4bc8-96c7-c6e5f5a06353&sns_params=%7B%22vk_id%22%3A10943591%2C%22exps%22%3A%5B%5D%7D
👍2
Название проекта: О'кей Google, Сезам, открой дверь

Платформа: Arduino
Описание:

В проекте реализовано открывание двери с помощью голосовой команды. Чтобы попасть в дом, нужно просто сказать: "Сезам, откройся".

Использованные компоненты: Arduino UNO, cерводвигатель , Bluetooth-модуль HC-05
Купить комплектующие на Алиэкспресс :
Сервопривод https://aliclick.shop/r/c/1r4jf5zc7fwoz4bw?product_id=1005001265737959
Arduino uno r3 https://aliclick.shop/r/c/1r4jf6t3ou7yo90h?product_id=1005002379248792
Bluetooth HC-05 https://aliclick.shop/r/c/1r4jf8z62a6ii0km?product_id=32786773297

Сайт проекта: https://dheera.net/projects/sesame
Отличный DIY-проект, в котором использована базовая схема подключения серводвигателя к arduino. Сделай сам умный дом и интернет вещей.
Для разблокирования дверей студент MIT использовал команды Google Now.
Мейкер создал приложение для мобильных устройств, которое окрестили именем «Сезам». Теперь чтобы открыть дверь, ему нужно просто произнести слова: "О'кей Google, Сезам, откройся". Приложение, установленное на android-часах, которые он носит на запястье, отдает команду дверному замку.
Для реализации идеи на двери размещены: плата Arduino Uno (ATmega328), bluetooth-модуль и сервопривод. Сервопривод прикреплен к дверной защелке, а модуль bluetooth ожидает сигнал и при его получении отдает команду arduino через serial-порт. Arduino в свою очередь отдает команду сервоприводу.

Скетч для ардуино
#include

#define SERVO_PIN 9

Servo servo;

void setup() {

Serial.begin(9600);

}

void loop() {

char inputLine[200];

int bytesRead;

String argv[10];

char* i;

if (Serial.available()) {

bytesRead=Serial.readBytesUntil('n',inputLine,200);

inputLine[bytesRead]=0;

if(inputLine[bytesRead-1]=='r') inputLine[bytesRead-1]=0;

argv[0]=strtok_r(inputLine," ",&i);

argv[1]=strtok_r(NULL," ",&i);

if(argv[0]=="ping") {

Serial.write("pongrn");

} else if(argv[0]=="write") {

servo.attach(SERVO_PIN);

servo.write(argv[1].toInt());

delay(2000);

servo.detach();

}

}

}
https://youtu.be/JfZt8_a6fVY
https://alii.pub/5qsovr
👍1