Example Code for Arduino-People Counting (Based on BeeBotte)
This project uses an ultrasonic sensor installed at a mall entrance to count people and transmit periodic foot traffic statistics to BeeBotte.
Hardware Preparation
- Arduino UNO board x 1
- IO Expansion board x1
- WiFi IoT module x1
- HC-SR04 Ultrasonic Sensor x1
- Wires
Software Preparation
- Arduino IDE
- Download and install the WiFi IoT Module Library. (About how to install the library?)
Wiring Diagram

Sample Code
#include "DFRobot_WiFi_IoT_Module.h"
#include <SoftwareSerial.h>
//I2C mode
DFRobot_WiFi_IoT_Module_I2C IOT;
#define time(x) (x*1000)
//configure WiFi
const char *WIFI_SSID = "hitest";
const char *WIFI_PASSWORD = "12345678";
//configure Beebotte
const char *BEEBOTTE_ADDRESS = "api.beebotte.com";
const char *BEEBOTTE_TOKEN = "token_PjXx9xPsygzy5GMU";
const char *BEEBOTTE_CHANNEL = "Data";
const char *BEEBOTTE_RESOURCE = "Data";
const char *BEEBOTTE_SEND_MESSAGE = "Send_Message";
int TrgPin = A0;
int EcoPin = A1;
int dist;
static long timestamp = millis();
int count;
void setup(void){
//Use 115200 as print port
Serial.begin(115200);
//Init port
while(IOT.begin() != 0){
Serial.println("init ERROR!!!!");
delay(100);
}
Serial.println("init Success");
//Connect to WiFi
while(IOT.connectWifi(WIFI_SSID, WIFI_PASSWORD) != 0){
Serial.print(".");
delay(100);
}
Serial.println("Wifi Connect Success");
//Init HTPP
while(IOT.HTTPBegin(BEEBOTTE_ADDRESS) != 0){
Serial.println("Parameter is empty!");
delay(100);
}
Serial.println("HTTP Configuration Succeeded");
//Init beebotte
while(IOT.beebotteBegin(BEEBOTTE_TOKEN) != 0){
Serial.print("Parameter is empty!");
delay(100);
}
Serial.println("Beebotte Configuration Succeeded");
//Set TrgPin to output status
pinMode(TrgPin, OUTPUT);
//Set EcoPin to input status
pinMode(EcoPin, INPUT);
}
//ultrasonic distance measurement
int getDist(void)
{
digitalWrite(TrgPin, LOW);
delayMicroseconds(8);
digitalWrite(TrgPin, HIGH);
//Maintian high for 10ms to generate a pulse
delayMicroseconds(10);
digitalWrite(TrgPin, LOW);
//Read the pulse width and convert to distance
dist = pulseIn(EcoPin, HIGH) / 58;
return dist;
}
void loop(void){
if(getDist()<10){
while(1){
Serial.print("dist:");
Serial.println(getDist());
if(getDist()>30){
count++;
Serial.println(count);
delay(100);
break;
}
}
}
//Send the counted number every 10s, time(10)
if(millis()-timestamp > time(10)){
String data = (String)count;
IOT.beebotteSendMessage(BEEBOTTE_CHANNEL, BEEBOTTE_RESOURCE,data.c_str());
Serial.println(data.c_str());
timestamp = millis();
count = 0;
}
}
Result
Check the number of people in a certian period of time on BeeBotte Platform.

Was this article helpful?
