• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Sharp 2Y0A21. Отправка данных в Twitter с помощью Arduino.

20 марта, 2017

Нам понадобится:

Sharp 2Y0A21: http://ali.ski/VZW_wp

Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.

 

Скетч для подсчета посетителей:

</pre>
const int IRpin = A0; // аналоговый пин для подключения выхода Vo сенсора
int value1; // для хранения аналогового значения
unsigned long timevisitors; // время прохождения
int count_visitors=0; // переменная подсчета посетителей

void setup() {
Serial.begin(9600); // Запуск последовательного порта
}

void loop() {
// получаем сглаженное значение и переводим в напряжение
value1=irRead();
//Serial.println(value1, DEC);
if(value1>50) // фиксация прохождения
{
timevisitors=millis();
while(irRead()>50) ;
if(millis()-timevisitors>300) // > минимального времени прохождения
{
count_visitors=count_visitors+1; // увеличение счетчика
Serial.print("count_visitors=");
Serial.println(count_visitors);
}
}
delay(200);
}
// Усреднение нескольких значений для сглаживания
int irRead() {
int averaging = 0; // переменная для суммирования данных

// Получение 5 значений
for (int i=0; i<5; i++) {
value1 = analogRead(IRpin);
averaging = averaging + value1;
delay(55); // Ожидание 55 ms перед каждым чтением
}
value1 = averaging / 5; // усреднить значения
return(value1);
}

 

Скетч с отправкой данных в twitter:

</pre>
#include
#include

byte mac[] = {0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02};
byte ip[] = { 192, 168, 1, 97 };
byte sdns[] = { 8, 8, 8, 8 };
byte gateway[] = { 192, 168, 1, 111 };
byte subnet[] = { 255, 255, 255, 0 };

const int IRpin = A0; // аналоговый пин для подключения выхода Vo сенсора
int value1; // для хранения аналогового значения
unsigned long timevisitors;
int count_visitors=0;
unsigned long time10minute=500000;

// ThingSpeak Settings
char thingSpeakAddress[] = "api.thingspeak.com";
String thingtweetAPIKey = "MR42T9YEUSOXV0T4";

// Variable Setup
long lastConnectionTime = 0;
boolean lastConnected = false;
int failedCounter = 0;

// Initialize Arduino Ethernet Client
EthernetClient client;

void setup() {
Serial.begin(9600); // Запуск последовательного порта
startEthernet();
delay(1000);
}

void loop() {
value1=irRead();
//Serial.println(value1, DEC);
// получаем сглаженное значение и переводим в напряжение
//float volts = analogRead(IRpin)*0.0048828125;
// и в расстояние в см
//float distance=32*pow(volts,-1.10);
//Serial.print(distance); // выдаем в порт значение
if(value1>50)
{
timevisitors=millis();
while(irRead()>50) ;
if(millis()-timevisitors>300)
{
Serial.println("passage!!!");
count_visitors=count_visitors+1;
Serial.print("count_visitors=");
Serial.println(count_visitors);
}
}
delay(200);
if(millis()-time10minute>600000)
{
String message="last 10 minute "+String(count_visitors)+" visitors";
updateTwitterStatus(message);
time10minute=millis();
}
// Print Update Response to Serial Monitor
while (client.available())
{
char c = client.read();
Serial.print(c);
}

// Disconnect from ThingSpeak
if (!client.connected() && lastConnected)
{
Serial.println("...disconnected");
Serial.println();

client.stop();
}

// Check if Arduino Ethernet needs to be restarted
if (failedCounter > 3 ) {startEthernet();}

lastConnected = client.connected();

}

// Усреднение нескольких значений для сглаживания
int irRead() {
int averaging = 0; // переменная для суммирования данных

// Получение 5 значений
for (int i=0; i<5; i++) {
value1 = analogRead(IRpin);
averaging = averaging + value1;
delay(55); // Ожидание 55 ms перед каждым чтением
}
value1 = averaging / 5; // усреднить значения
return(value1);
}

void startEthernet()
{

client.stop();

Serial.println("Connecting Arduino to network...");
Serial.println();

delay(1000);
Ethernet.begin(mac, ip, sdns, gateway, subnet);
Serial.println(Ethernet.localIP());

// Connect to network amd obtain an IP address using DHCP
Ethernet.begin(mac, ip, sdns, gateway, subnet);
Serial.println(Ethernet.localIP());

delay(1000);
}

void updateTwitterStatus(String tsData)
{
if (client.connect(thingSpeakAddress, 80))
{
// Create HTTP POST Data
tsData = "api_key="+thingtweetAPIKey+"&status="+tsData;

client.print("POST /apps/thingtweet/1/statuses/update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(tsData.length());
client.print("\n\n");

client.print(tsData);

lastConnectionTime = millis();

if (client.connected())
{
Serial.println("Connecting to ThingSpeak...");
Serial.println();
count_visitors=0;
failedCounter = 0;
}
else
{

failedCounter++;

Serial.println("Connection to ThingSpeak failed ("+String(failedCounter, DEC)+")");
Serial.println();
}

}
else
{
failedCounter++;

Serial.println("Connection to ThingSpeak Failed ("+String(failedCounter, DEC)+")");
Serial.println();

lastConnectionTime = millis();
}
}

 

Ссылка на скетч :https://yadi.sk/d/s3G_W3hp3GBTnB

Демонстрация работы данной программы можно увидеть в видео приведенном в конце статьи.

Видео:

Primary Sidebar

Поиск

Новые записи

  • Автоматизация перезагрузки устройства по команде Ping.
  • Разблокирование и добавление шлюза Xiaomi gateway 3 в Home Assistant для управления Bluetooth устройствами из экосистемы Xiaomi Home (mihome)
  • Интеграция для локального управления (без интернета) ик пультом Tuya работающим по wifi из Home Assistant
  • Транслируем показания с Уличного Bluetooth Датчика температуры по BTHome на дисплей датчика температуры XIaomi LYWSD03MMC
  • Заставляем Bluetooth датчики температуры tuya и xiaomi отправлять данные по Zigbee в Home Assistant.

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·