Electric Kick Scooter? No, with S.mo.k.ing

8 May 2020

Scroll

smoking-module

Electric Kick Scooter? No, with S.mo.k.ing

Questa pagina è disponibile in Italiano Italiano

Licenza Creative Commons
SMOKING-Party Module of Riccardo Schifaudo is distributed under licence Creative Commons Attribution-NonCommercial 4.0 International.
Based on a work at https://www.the-shinobi-arts-of-eccentricity.com/blog/modulo-monopattino/.
For furthermore permissions contacts the Author https://www.the-shinobi-arts-of-eccentricity.com/blog/contattami/.

What S.mo.k.ing module is?

S.MO.K.ING means”Smart Module for Kick Scootering”, is a smart centreline to extend functionalities of normal kick scooter providing lights and radio FM

Basically it is my hand-made product using an Arduino microcontroller and a some sensors with electronic components


What can you do with this module?

Thank to SMOKING, you can have:

  • Light system for overnight moving with kick scooter;
  • Use it as emergency light during blackouts;
  • Create lights effects in Pary Module Mode;
  • Listen to music and news with Radio FM Mode;
  • Use it as a power bank to recharge your phone in case of emergency, to supply your phone during a party or generator for other electronic devices;

What do you need to create “SMOKING Module”?

  • Arduino Nano;
  • MOS FET Module;
  • LED strip of 12 Volts;
  • 3 Stock of battery;
  • 9 Rechargable Energizers Battery AA;
  • Step-down DC-DC converter with USB socket for power bank option;
  • Mini breadboard for wiring circuit;
  • Mini led as power supply indicator;
  • Jumpers cables;
  • Bluetooth HC-05 module;
  • Radio FM TEA5727 Module;

What to put in the shopping cart?

Arduino Nano
Microcontroller to manage external devices and sensors
HC-05 Bluetooth Module
Establish serial Bluetooth communication between mobile app and the Smoking Module
LED STRIPS
LED cold light strips for the module
TRANSISTOR MOS FET
The transistor is an electronic component with function of electricity tap and protects microcontroller circuit against overloading of electric charge of power supply of 12volts to provide energy of led strip and digital pins of Arduino which give output 5 volts.
There is an option of ready use MOS module without cabling circuit on breadboard or PCB
This is the ready solution of the MOS FET module.
JUMPER CABLES
Wiring cables to connect electronic components with Arduino board.
ENERGIZER RECHARGEBLE BATTERIES
I suggest using these batteries because they provide 5 Ampere (measured with a multimeter) in order to provide 60 watts of power to supply the smoking module and I test their last of 10 hours of autonomy.
STOCK BATTERIES
You need to put in series these sock batteries in order to create a power supply DC of 12 volts, so you must put 9 batteries to have this voltage to enable Led strips

STEP DOWN DC-DC CONVERTER
This module can convert unto 40volts of voltage in INPUT and decrease and stabilize an OUTPUT of 5 volts to provide energy to switch on Arduino and enable the Power Bank mode
MODULE TEA5767 FM Stereo Radio
This an option component if you want to include it in this project if you wish to listen to Radio FM and use Smoking Module in Party Module Mode.

How to assemble the S.mo.k.ing module with electrical schema?

smoking arduino per monopattino elettrico schema elettrico

Explanation of cabling circuit of S.mo.k.ing Module

How you can see the module receive 12 volts of power supply from 9batteries in series of black stocks (batteries type AA).

Why this?

Because LEDs strip of Smoking need of power supply with a range between 9 and 12 volts (it would be ideal)

Anyway, to supply Arduino we provide 5 volts of voltage, for this reason, I used this converter of direct current and keep stable from 12 to 5 volts in output.

For this aim I used the DC-DC converter with USB socket and voltmeter display HW-318 V.4, in order to have a power bank feature and visualize the level charge of stock batteries in Smoking/Party Module.

  • With range voltage between 9-12 volts, it is enough to supply the led strips and electronic controllers.
  • With power supply between 5-8 volts, you can still supply enough energy to let Radio Fm module, Bluetooth and microcontroller to work properly.
  • Below 5 volts you must recharge again the batteries.

How do you proceed to cabling circuits?

Wiring HW-318 V.4 module converter DC-DC with USB socket for Power Bank

  • Connect positive pole with positive +IN of batteries holder and negative pole with -IN, which they are the pin in of converter;
  • Connect GND(-) to the negative path of breadboard where they will be connected all grounds of sensors’ modules.
Electric Kick Scooter? No, with S.mo.k.ing

Wiring TEA5767 Radio FM Module

  • Vcc of Module is connected to 3.3 volts of Arduino;
  • Link pin SCL, of clock signal for TEA5767 FM to pin in A5 of Arduino;
  • Connect the pin SDA for transmission data of radio module to pin in A4 of Arduino microcontroller board;
  • Connect GND to Ground of Arduino.
TEA5767 Radio FM per Smoking Module Arduino

Cabling HC-05 Bluetooth module

  • Vcc Bluetooth module will be connected to +5volt of Arduino;
  • Connect TX pin of transmission on pin 11 of the microcontroller;
  • Connect RX pin of receiving data on pin 10 of electronic board;
  • Connect GND module to Arduino Ground.
HC-05 Bluetooth Arduino collegamenti per Smoking Monopattino Elettrico

How to wire MOS FET module?

  • Connect red cable of LED’s stips to V+ pin of MOS FET module and the black one on the negative pin V-
  • Connect positive and negative pin directly on blue sockets of VIN and GND where will provide supply power of 12 volts to led strip through MOS FET module;
  • Connect pin SIG(SIGNAL) to pin 3 in PWM of Arduino where it will modulate the amplitude of the signal to control the brightness of LED strip.
IRF520 MOS FET Modulo cablaggio alimentazione striscie led per Arduino

Source code of sketch compiled in the S.Mo.K.ing module

Compile this sketch on Arduino with its dedicated IDE

//include library to control bluetooth communication
#include <SoftwareSerial.h>
//include library to enabled radio fm
#include <TEA5767.h>
#include <Wire.h>

//setting tx and rx bluetooth module
SoftwareSerial BTSerial(11,10); // RX | TX
//create radio FM object instance
TEA5767 Radio; //Pinout SLC and SDA - Arduino uno pins A5 and A4

char cmd = ' ';
const int led_pin = 3;
int timer = 1000;
//variables control radio fm 
//Variables:
double old_frequency;
double frequency;
int search_mode = 0;
int search_direction;
unsigned long last_pressed;
unsigned char buf[5];
int stereo;
int signal_level;
double current_freq;
unsigned long current_millis = millis();
char inByte = ' ';
int flag=0;
char BTSignal = ' ';

//VARIABLES OF STATES 
bool first_initialize_radio = true;
bool first_start = true;
bool shift_channel = false;

void setup() {
  // put your setup code here, to run once:
  pinMode(led_pin,OUTPUT);
  digitalWrite(led_pin,LOW);
  Serial.begin(9600);
  BTSerial.begin(9600);
}

void loop() {
  if(first_start){
    BTSerial.println("----------------------------------------------------");
    BTSerial.println("----------------------------------------------------");
    BTSerial.println("WELCOME IN S.MO.KICK.ING ");
    BTSerial.println("----------------------------------------------------");
    BTSerial.println("----------------------------------------------------");
    BTSerial.println("Choose one of the following options:");
    BTSerial.println("0 - LED strips - SWITCH OFF ");
    BTSerial.println("1 - LED strips - NORMAL MODE");
    BTSerial.println("2 - LED strips - SINUSOIDAL ");
    BTSerial.println("3 - LED strips - STROBO LIGHT (15Hz)");
    BTSerial.println("4 - LED strips - STROBO HEAVY(20Hz)");
    BTSerial.println("5 - LED strips - PULSAR EFFECT ");
    BTSerial.println("7 - Radio FM   - ENABLE");
    BTSerial.println("8 - Radio FM   - SHIFT CH. AHEAD");
    BTSerial.println("9 - Radio FM   - SHIFT CH. BACK");
    BTSerial.println("----------------------------------------------------");
    
    first_start = false;
  }
  // put your main code here, to run repeatedly:
   if(BTSerial.available()){
        cmd = BTSerial.read();
         if(cmd == '0'){
           BTSerial.println("LED OFF!");
         }
         if(cmd == '1'){
           BTSerial.println("Normal LED");
         }
         if(cmd == '2'){
           BTSerial.println("Sinusoidal LED");
         }
         if(cmd == '3'){
           BTSerial.println("Strobo LED Light");
         }
         if(cmd == '4'){
            BTSerial.println("Strobo LED Strong");
         }
         if(cmd == '5'){
            BTSerial.println("Pulsar LED");
         }
  
         if(cmd == '7'){
             BTSerial.println("Enable Radio FM");
         }

         if(cmd == '8'){
           BTSerial.println("Shift ahead one radio station");
           search_mode = 1;
           shift_channel = true;
           flag = 0;
           inByte = '8';
           radio_fm();
         }
         if(cmd == '9'){
           BTSerial.println("Shift behind one radio station");
           search_mode = 1;
           shift_channel = true;
           flag = 0;
           inByte = '8';
           radio_fm();
         }
       
   }

   if(cmd == ' ') 
     led_normal();

   if(cmd == '0')
     led_off();
     
   if(cmd == '1')
     led_normal();

   if(cmd == '2'){
     led_sinusoidal();
   }
   
   if(cmd == '3')
       led_strobo_light();

   if(cmd == '4') 
       led_strobo_strong();    
   
   if(cmd == '5') 
       led_pulsar();      
       
   if(cmd == '7')
     radio_fm();


   


}

void led_strobo_light(){
  Serial.print("Enabled led strobo light");
  digitalWrite(led_pin,HIGH);
  delay(67);
  digitalWrite(led_pin,LOW);
  delay(67);
}
void led_strobo_strong(){
  Serial.print("Enabled led strobo strong");
  digitalWrite(led_pin,HIGH);
  delay(50);
  digitalWrite(led_pin,LOW);
  delay(50);
}
void led_normal(){
  digitalWrite(led_pin,HIGH);
}
void led_off(){
  digitalWrite(led_pin,LOW);
}
void led_pulsar(){
 
    for(int j = 0;j<255;j++){
       analogWrite(led_pin,j);
       delay(10);
       //Serial.println(j);
    }  

    for(int j = 255;j>0;j--){
       analogWrite(led_pin,j);
       delay(10);
       //Serial.println(j);
    }  
    delay(100);
}
void led_sinusoidal(){
  float something = millis()/1000.0;
  int value = 128.0 + 128 * sin( something * 2.0 * 255 );
  analogWrite(led_pin,value);
  delay(100);
}

void radio_fm(){
  
  if(first_initialize_radio){
     BTSerial.println("----------------------------------------------------");
     BTSerial.println("Radio Enabled!");
     Radio.init();
     Radio.set_frequency(96.2); //On power on go to station 95.2
     first_initialize_radio = false;
  }

  
  if (Radio.read_status(buf) == 1 || shift_channel == true) {
     current_freq =  floor (Radio.frequency_available (buf) / 100000 + .5) / 10;
     stereo = Radio.stereo(buf);
     signal_level = Radio.signal_level(buf);
     //By using flag variable the message will be printed only one time. 
       
      if(flag == 0){
      
          Serial.print("Current freq: ");
          BTSerial.println("Current freq: ");
          
          Serial.print(current_freq);
          Serial.print("MHz Signal: ");
          
          BTSerial.print(current_freq);
          BTSerial.print("MHz Signal: ");
          
          //Strereo or mono ?
          if (stereo){
            Serial.print("STEREO "); 
            BTSerial.println("STEREO ");
          } 
          else{
            Serial.print("MONO ");
            BTSerial.println("MONO ");
          } 
      
          Serial.print(signal_level);
          Serial.println("/15");
          BTSerial.print(signal_level);
          BTSerial.println("/15");
          flag=1;
     }
  }
     
  //When button pressed, search for new station
  if (search_mode == 1) {
      if (Radio.process_search (buf, search_direction) == 1) {
          search_mode = 0;
          shift_channel = false;
      }
  }
  //If forward button is pressed, go up to next station
  if (inByte == '8') {
    last_pressed = current_millis;
    search_mode = 1;
    search_direction = TEA5767_SEARCH_DIR_UP;
    Radio.search_up(buf);
  }
  //If backward button is pressed, go down to next station
  if (inByte == '9') {
    last_pressed = current_millis;
    search_mode = 1;
    search_direction = TEA5767_SEARCH_DIR_DOWN;
    Radio.search_down(buf);
  } 
  delay(500);

}

Esegui il dowload di tutta la cartella di progetto, dentro troverai:

  1. Circuiti di montaggio dei vari componenti;
  2. Sketch del progetto da caricare sull’Arduino;
  3. Libreria TEA5767 da integrare nelle librerie dell’Arduino IDE;

DOWNLOAD SKETCH E RISORSE


Download Arduino Bluetooth App

Download Arduino Bluetooth of PEGI3 e open it on “terminal mode”, where you can insert the option number provided of sketch in order to control effects of Smoking Module.

Arduino Bluetooth Controller App PEGI3

DOWLOAD APP


Which effects and features are included in SMOKING?

These are the functionalities available in the module but you can free to expand feature whatever you want.

Here what you can do:

  • COMMANDS TO CONTROL LED STRIPS
    • Press 0: Turn off LED;
    • Press 1: Turn on LED;
    • Press 2: Sine effects for LED;
    • Press 3: Slightly Strobe LED;
    • Press 4: Strong Strobe LED;
    • Press 5: Pulsar light effect;
  • COMMANDS FOR RADIO
    • Press 7: Turn on Radio FM;
    • Press 8: Switch ahead frequency of FM Radio;
    • Press 9: Go back with frequency of FM Radio;

Final Assembling of the circuit in a container or box

In my case I made my home-made container with polystyrene and cardboard where I placed whole electronic equipment to assemble my smoking for the kick scooter in order to move with it in the night during my summers’ days o wandering in the countryside.

Here it is reported the assembled schema of the project:

Schama di Montaggio Finale Smoking Module- Party Module

I try to keep compacted more possible I can, in order to keep portable the module and put inside my backpack or luggages during my travels.

I used this module to organize an overnight party during a youth exchange in Lithuania.

It was a funny situation when I try to explain what it is to airport security who looked at me weirdly, and they told me only Italians are people of inventors and I will find problems in all airports during the check of my luggage

Anyway it was a beautiful experience thank to this module we had organized a fantastic disco party in the lost woodlands of Lithuania

If you can not go party to discotheque, bring the disco in your trips.

If you are interested, I made also a portable disco bracelet with sensor of motion 😉

This is the final result of this project:

Smoking Arduino modulo intelligente estensore di monopattino

I thought afterward to add a supplementary power supply jack of 12 volts with a parallel wiring of batteries holder in order to have a front light for my kick scooter 😉

Monopattino elettrico con smoking e faro anteriore a striscia led frontale

Do you like the Article?


 
Next Post
Copied!