esp32
in blog on speech-recognition, Annyang, javascript
https://sites.google.com/a/mdex.co.kr/mdex-sensor-info-2017/online-shop/combo-seat-arduino-kor
https://randomnerdtutorials.com/esp32-pinout-reference-gpios/
https://www.instructables.com/id/ESP32-BLE-Android-App-Arduino-IDE-AWESOME/
#define LED 1
void setup() {
// Set pin mode
pinMode(LED,OUTPUT);
}
void loop() {
delay(500);
digitalWrite(LED,HIGH);
delay(500);
digitalWrite(LED,LOW);
}
int En0 = 25; // Low enabled
int En1 = 26; // Low enabled
int S0 = 27;
int S1 = 14;
int S2 = 12;
int S3 = 13;
int SIG_pin = 34;
void setup() {
Serial.begin(115200);
pinMode(En0, OUTPUT);
pinMode(En1, OUTPUT);
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
}
void loop() {
for(int i = 0; i < 32; i ++){
Serial.print(readMux(i));
Serial.print(" / ");
delay(1);
Serial.print(" ");
}
Serial.println(" ");
delay(1000);
}
int readMux(int channel){
int controlPin[] = {S0,S1,S2,S3,En0,En1};
int muxChannel[32][6]={
{0,0,0,0,0,1}, //channel 0
{0,0,0,1,0,1}, //channel 1
{0,0,1,0,0,1}, //channel 2
{0,0,1,1,0,1}, //channel 3
{0,1,0,0,0,1}, //channel 4
{0,1,0,1,0,1}, //channel 5
{0,1,1,0,0,1}, //channel 6
{0,1,1,1,0,1}, //channel 7
{1,0,0,0,0,1}, //channel 8
{1,0,0,1,0,1}, //channel 9
{1,0,1,0,0,1}, //channel 10
{1,0,1,1,0,1}, //channel 11
{1,1,0,0,0,1}, //channel 12
{1,1,0,1,0,1}, //channel 13
{1,1,1,0,0,1}, //channel 14
{1,1,1,1,0,1}, //channel 15
{0,0,0,0,1,0}, //channel 16
{0,0,0,1,1,0}, //channel 17
{0,0,1,0,1,0}, //channel 18
{0,0,1,1,1,0}, //channel 19
{0,1,0,0,1,0}, //channel 20
{0,1,0,1,1,0}, //channel 21
{0,1,1,0,1,0}, //channel 22
{0,1,1,1,1,0}, //channel 23
{1,0,0,0,1,0}, //channel 24
{1,0,0,1,1,0}, //channel 25
{1,0,1,0,1,0}, //channel 26
{1,0,1,1,1,0}, //channel 27
{1,1,0,0,1,0}, //channel 28
{1,1,0,1,1,0}, //channel 29
{1,1,1,0,1,0}, //channel 30
{1,1,1,1,1,0} //channel 31
};
//loop through the 6 sig
for(int i = 0; i < 6; i ++){
digitalWrite(controlPin[i], muxChannel[channel][i]);
}
//read the value at the SIG pin
int val = analogRead(SIG_pin);
//return the value
return val;
}
https://dl.espressif.com/dl/package_esp32_index.json
https://os.mbed.com/users/edamame22/code/BLEClient_mbedDevConn/file/b894b3508057/main.cpp/
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
int En0 = 25; // Low enabled
int En1 = 26; // Low enabled
int S0 = 27;
int S1 = 14;
int S2 = 12;
int S3 = 13;
int SIG_pin = 34;
#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"
#define MAXCH 31
int sensors[MAXCH] = {0,};
BLECharacteristic *pCharacteristic;
char* string2char(String command){
if(command.length()!=0){
char *p = const_cast<char*>(command.c_str());
return p;
}
}
char* cvtSensors() {
String value = "";
for(int i=0; i<MAXCH; i++) {
value += String(sensors[i])+"|";
}
return string2char(value);
}
void initBLE () {
Serial.println("Starting BLE work!");
BLEDevice::init("ESP-32D");
BLEServer *pServer = BLEDevice::createServer();
BLEService *pService = pServer->createService(SERVICE_UUID);
pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_READ |
BLECharacteristic::PROPERTY_WRITE
);
pCharacteristic->setValue(cvtSensors());
pService->start();
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
pAdvertising->addServiceUUID(SERVICE_UUID);
pAdvertising->setScanResponse(true);
pAdvertising->setMinPreferred(0x06); // functions that help with iPhone connections issue
pAdvertising->setMinPreferred(0x12);
BLEDevice::startAdvertising();
Serial.println("Characteristic defined! Now you can read it in your phone!");
}
void setup() {
Serial.begin(115200);
pinMode(En0, OUTPUT);
pinMode(En1, OUTPUT);
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
initBLE();
}
void loop() {
for(int i = 0; i < MAXCH; i ++){
sensors[i] = readMux(i);
}
pCharacteristic->setValue(cvtSensors());
delay(100);
}
int readMux(int channel){
int controlPin[] = {S0,S1,S2,S3,En0,En1};
int muxChannel[32][6]={
{0,0,0,0,0,1}, //channel 0
{0,0,0,1,0,1}, //channel 1
{0,0,1,0,0,1}, //channel 2
{0,0,1,1,0,1}, //channel 3
{0,1,0,0,0,1}, //channel 4
{0,1,0,1,0,1}, //channel 5
{0,1,1,0,0,1}, //channel 6
{0,1,1,1,0,1}, //channel 7
{1,0,0,0,0,1}, //channel 8
{1,0,0,1,0,1}, //channel 9
{1,0,1,0,0,1}, //channel 10
{1,0,1,1,0,1}, //channel 11
{1,1,0,0,0,1}, //channel 12
{1,1,0,1,0,1}, //channel 13
{1,1,1,0,0,1}, //channel 14
{1,1,1,1,0,1}, //channel 15
{0,0,0,0,1,0}, //channel 16
{0,0,0,1,1,0}, //channel 17
{0,0,1,0,1,0}, //channel 18
{0,0,1,1,1,0}, //channel 19
{0,1,0,0,1,0}, //channel 20
{0,1,0,1,1,0}, //channel 21
{0,1,1,0,1,0}, //channel 22
{0,1,1,1,1,0}, //channel 23
{1,0,0,0,1,0}, //channel 24
{1,0,0,1,1,0}, //channel 25
{1,0,1,0,1,0}, //channel 26
{1,0,1,1,1,0}, //channel 27
{1,1,0,0,1,0}, //channel 28
{1,1,0,1,1,0}, //channel 29
{1,1,1,0,1,0}, //channel 30
{1,1,1,1,1,0} //channel 31
};
//loop through the 6 sig
for(int i = 0; i < 6; i ++){
digitalWrite(controlPin[i], muxChannel[channel][i]);
}
//read the value at the SIG pin
int val = analogRead(SIG_pin);
//return the value
return val;
}