This web page is a small devlog on research on creating smart/connected electronic devices from a to z , and oriented for the education and learning field and using AI technology.
​
v 1.001 getting more experiences on design with autocad : enclosure, screw support, places for electronics.
below pictures of 3d print design / design of smart electronic devices
​
powerbank
v 1.002 prototype electronics circuits with smart intelligence with properties in mind
- project will use AI voice recognition.
- device will think by itself with randomness on activities( so even the developer doesn't know the outcome).
below the picture is the first step on creating smart memory/ audio player / audio amplifier to give life to smart devices / premium shield :)
v1.003 to 1.006 improving , testing other capabilities of the project ,
- easy plug for other shield by usb( extensions of product)
-power by external battery for easy of use, or plug in on computer or charger.
- add 32 gb with usb stick memory
- add sd card 32 gb of memory, with possibilities to switch between so 64 gb of memory in total :) ( smart)
- adding manual controls with buttons
​
​
v1.007 to 1.009 adding voice recognition trough third parties amazon Alexa, as microcontroller cannot handle smart recognition due to their limitations. only testing the viability, and it's a positive check.
​
​
v1.010
​
getting familiar on amazon api , create communications between the two to give smart activities in math as a start.
- create a smart buzzer system to a able to interact with players with sound and light
​
v1.0.11 support for circuit and components for external plug in. (pic below)
​
​
​
v1.012 to 1.035
finished all the physicals parts with buzzers' connection, linked with microcontroller
-light buzzer
-button buzzer
- all cables ...
​
1.036 to 1.038
- buzzer 1 on , others off when pressed
-sound response when pressed.
​
​
​
​
​
​
AI voice recognition.
1.039 changing plan to free up memory on esp. and move all games ( unlimited possibilities and memory) as Alexa skills.
​
1.040 testing with my kid buzzer and voice recognition -- great motivation for kids, nice experience.
​
1.41 make full game , give random calculation , listen to answer and give feedbacks correct/ wrong.
great potential.
​
​
1.042 ... linked buzzers to voice so if correct answer play light effects and sounds
-wrong , activate sounds and lights to show bad answers, make all buzzer light up one second to restart game. players can replay until good answers is given.
​
​
coding parts on microcontroller. + app external.
1.043 to 1.062
-made the android app to connect to smart buzzers and use as a remote or more....
-code for bluetooth connection
-code for generating list of students , and remove from lists when played.
-encode audio files of students names...
- polished sounds and light and voices effects when playing smart buzzers.
-add decibel for clear sound of voices.
Sample code below
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
//bluetooth
#include "BluetoothSerial.h"
BluetoothSerial ESP_BT;
//
// Parameters for Bluetooth interface
int incoming;
int value = incoming ;
// Use pins 2 and 3 to communicate with DFPlayer Mini
static const uint8_t PIN_MP3_TX = 25; // Connects to module's RX
static const uint8_t PIN_MP3_RX = 26; // Connects to module's TX
SoftwareSerial softwareSerial(PIN_MP3_RX, PIN_MP3_TX);
//buzzer
//end buzzer
const int ledPin1 = 14;// ufirst buzzer right usb
const int ledPin2 = 12;//second buzzer
const int ledPin3 = 13;//second buzzer
const int ledPin4 = 05;//second buzzer
const unsigned char leds[4] = {14, 12, 13, 05};
const int buttonPin1 = 23;// usb1
const int buttonPin2 = 19;// usb2
const int buttonPin3 = 18;// usb2
const int buttonPin4 = 01;// usb2
const unsigned char switches[4] = {23, 19, 18, 01};
// button design
// reset
// Reset button
const unsigned char switch_reset = 16;
//end buzzer
// Create the Player object
DFRobotDFPlayerMini player;
//int
int volume ;
// design button quiz
//fuctions
void Volumedown()
{
volume = (volume-1);
player.volume(volume);
delay (500);
}
void Volumeup()
{
volume = (volume+1);
player.volume(volume);
delay (500);
}
//functions
void resetting()
{
for (unsigned char sw=0; sw<4; sw++)
{
digitalWrite(leds[sw], HIGH);
delay(300);
digitalWrite(leds[sw], LOW);
delay(300);
digitalWrite(leds[sw], HIGH);
delay(300);
digitalWrite(leds[sw], LOW);
}
}
//end functons
void setup() {
// Init USB serial port for debugging
Serial.begin(115200);
// Init serial port for DFPlayer Mini
softwareSerial.begin(9600);
ESP_BT.begin("Smart Buzzer"); //Name of your Bluetooth interface -> will show up on your phone
// Prepare the pins
pinMode(switch_reset, INPUT_PULLUP);
for (unsigned char sw=0; sw<4; sw++)
{
pinMode(switches[sw], INPUT_PULLUP);
pinMode(leds[sw], OUTPUT);
digitalWrite(leds[sw], LOW);
}
resetting();
//end prepare pin
// button for volume
//pinMode(17, INPUT_PULLUP);
//pinMode(16, INPUT_PULLUP);
//end volume
//buzzer
pinMode(ledPin1, OUTPUT); //usb a 1
pinMode(ledPin2, OUTPUT); //usb a 1
pinMode(ledPin3, OUTPUT); //usb a 3
pinMode(ledPin4, OUTPUT); //usb a 4
pinMode(buttonPin1,INPUT_PULLUP); // Set the Tilt Switch as an input
pinMode(buttonPin2,INPUT_PULLUP); // Set the Tilt Switch as an input
pinMode(buttonPin3,INPUT_PULLUP); // Set the Tilt Switch as an input
pinMode(buttonPin4,INPUT_PULLUP); // Set the Tilt Switch as an input
//end buzzer
//quiz
// Start communication with DFPlayer Mini
if (player.begin(softwareSerial)) {
Serial.println("OK");
player.EQ(DFPLAYER_EQ_BASS);
//----Set device we use SD as default----
player.outputDevice(DFPLAYER_DEVICE_U_DISK);
// Set volume to maximum (0 to 30).
player.volume(25);
volume =25;
player.playFolder(01,001);
//1=USB-Disk, 2=TF-Card, 3=Aux, 4=Sleep, 5=NOR Flash
//player.playFolder(01,001);
// Play the "0001.mp3" in the "mp3" folder on the SD card
// player.playMp3Folder(1);
//player.randomAll();
} else {
Serial.println("Connecting to DFPlayer Mini failed!");
}
}
void loop()
{
//bluetooth
// code value 1 = resetting game
if (ESP_BT.available())
{
incoming = ESP_BT.read(); //Read what we receive
switch (incoming) {
case 1:
Serial.print("Button 1:"); Serial.println(value);
player.playFolder(01,002); //play specific mp3 in SD:/15/004.mp3; Folder Name(1~99); File Name(1~255)
delay (3500);
Serial.print("working button1");
delay (3500);
incoming =0;
break;
case 2:
Serial.print("Button 2:"); Serial.println(value);
player.playFolder(01,003); //play specific mp3 in SD:/15/004.mp3; Folder Name(1~99); File Name(1~255)
delay (3500);
delay (3500);
incoming =0;
break;
}//end switch
}// enf if avalaiable bluetooth
//
// fucntion button press
//end button press
// Check all 4 switches
for (unsigned char sw=0; sw<4; sw++)
{
// Is it pressed?
if (digitalRead(switches[sw]) == LOW) {
// Turn on its LED
digitalWrite(leds[sw], HIGH);
// Play its sfx
player.play(sw+1);
// Wait for the reset button
while (digitalRead(switch_reset) == HIGH) {};
// Stop any playing sfx
player.stop();
player.playFolder(01,002);
// Turn off the LED
digitalWrite(leds[sw], LOW);
resetting();
// Stop!
break;
}
}
}
//end loop
ideas of development :
​
talking response to color winner / students names
- script to select random students , assign to colors and remove students from list if game over ( might have manual validation in case of students errors until voice recognition) +keep winner and let it on the list.
​
- 1 reset button for manual quiz game , other quiz
​
- add files for calculation process , additions, subtractions, multiply , divisions)
​
- app to be able to select different quizzes, subjects ( example additions, subtractions...). --- bluetooth connection with esp. ( possible problem with double connection : app and voice recognition).
​
- count and tell by voice state of championship : quater final, semi-final ...
​
​
- build a language game , exemple on phonics. spell the words, guess the words with voice recognition .
​
- add voice recognition connectivity, sending back to esp an integer, then esp checks validity.
​
- make different gameplay mode : competitive or cooperative ( students against a bot of different intelligence/speed/ probabilities of mistakes/ )