Minggu, 04 Februari 2024

Logbook 5 Feb 2024 -ESP8266 SDcard

0730-0800 Absen Pagi hanya absen pagi

0800-0900 >>Buat presentasi untuk RIIM 4 bu Nazarina direncanakan 6-10 Halaman

(baru selesai 3 halaman) perlu ditambah kan program random nerd

0900-1200 Buat program ESP8266 sd card 

program untuk mengetes bukan pakai ESP8266 akan tetapi mengunakan ESP32

https://wokwi.com/projects/388854830688347137

 perlu diingat pin CS untuk komunikasi SPI adalah pada 5

program dicoba pada ESP8266 yang real sedangkan pin out yang dipergunakan  adalah

https://newbiely.com/tutorials/esp8266/esp8266-micro-sd-card

ingat pin CS biasanya mengunakann D8 (jika diarduino IDE akan error) sebenarnya d8 adalah GPIO15 jadi D8 di tulis angka 15 saja


#include <SD.h>
#define CS_PIN  15
String inputSTR,User,Password;
char buf[10] ;

void setup() {
  // put your setup code here, to run once:
 Serial.begin(115200);
 Serial.print("Inisialisasi SD Card..");
 
  if (!SD.begin(CS_PIN)) {
    Serial.println("Gagal load SD card.");
    return;
  }
   Serial.println("OK.");

  File textFile = SD.open("/Hello.txt");
  if (textFile) {
    Serial.print("Hello.txt: ");
    while (textFile.available()) {
     
      inputSTR=textFile.readString();

       User = "           ";
       Password = "                    ";
      Serial.println(inputSTR);
      Serial.println(inputSTR.length());
      Serial.println(inputSTR.indexOf(' '));
      for (int i = 0; i < inputSTR.indexOf(' '); i++)
      {
               User.setCharAt(i,inputSTR.charAt(i));
              //buf[i] = inputSTR.charAt(i);
             // reportString.setCharAt(colonPosition, '=');
             //Serial.println(User.charAt(i));
             
      }
        for (int i = inputSTR.indexOf(' '); i < inputSTR.length(); i++)
      {
               Password.setCharAt(i,inputSTR.charAt(i));
              Serial.println(Password.charAt(i));
      }
      Password.trim();
      Serial.println(User);
      Serial.println(Password);
    }
    textFile.close();
  } else {
    Serial.println("error opening wokwi.txt!");
  }

}

void loop() {
  // put your main code here, to run repeatedly:

}

file diatas ada di ESP8266_sdcard2.uno

untuk aplikasi RISPRO2024 program  AMH_ver4_2_ESP8266_ino.ino


#include <ESP8266WiFi.h>
#include <Servo.h>

Servo servo;
int angle = 10;
String kasus = "";
String azum = "ada";



//const char* ssid     = "BSN-Trial";
//const char* password = "bsntrial1";

const char* ssid     = "GalaxyM126A21";
const char* password = "uhuy";



const char* host = "www.remotecal.com";

WiFiClient client;
const int httpPort = 80;
String url;

unsigned long timeout;



#include <SD.h>
#define CS_PIN  15
String inputSTR,User,Password;
char buf[15] ;


unsigned long previousMillis = 0;
unsigned long interval = 1000;

void setup() {
  Serial.begin(115200);
  delay(1000);

  servo.attach(2); //GPIO2
  servo.write(angle);

  //pinMode(stepPin,OUTPUT);
  //pinMode(dirPin,OUTPUT);

  //pinMode(stepPink,OUTPUT);
  //pinMode(dirPink,OUTPUT);
 
 Serial.print("Inisialisasi SD Card..");
 
  if (!SD.begin(CS_PIN)) {
    Serial.println("Gagal load SD card.");
    return;
  }
   Serial.println("OK.");

   File textFile = SD.open("/WIFI.txt");
  if (textFile) {
    Serial.print("WIFI.txt: ");
    while (textFile.available()) {
     
      inputSTR=textFile.readString();

       User = "                 ";
       Password = "                          ";
      Serial.println(inputSTR);
      Serial.println(inputSTR.length());
      Serial.println(inputSTR.indexOf(' '));
      for (int i = 0; i < inputSTR.indexOf(' '); i++)
      {
               User.setCharAt(i,inputSTR.charAt(i));
              //buf[i] = inputSTR.charAt(i);
             // reportString.setCharAt(colonPosition, '=');
             //Serial.println(User.charAt(i));
             
      }
        for (int i = inputSTR.indexOf(' '); i < inputSTR.length(); i++)
      {
               Password.setCharAt(i,inputSTR.charAt(i));
              Serial.println(Password.charAt(i));
      }
      User.trim();
      Password.trim();
      Serial.println(User);
      Serial.println(Password);
    }
    textFile.close();
  } else {
    Serial.println("error opening WIFI.txt!");
  }

 // ssid = "GalaxyM126A21";
  //password="Salsa3349";
  WiFi.mode(WIFI_STA);
 //WiFi.begin(ssid, password);
   WiFi.begin(User,Password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.println(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");  
  ////Serial.printlnln("IP address: ");
  ////Serial.printlnln(WiFi.localIP());
}


void loop() {
 
  //Serial.println("connecting to ");
  ////Serial.printlnln(host);

  if (!client.connect(host, httpPort)) {
    ////Serial.printlnln("connection failed");
    //return;
  }

// We now create a URI for the request
  url = "http://www.remotecal.com/index.php/cekperintah?idse=1&idst=2&idstk=3";
 
  //Serial.println("Requesting URL: ");
  ////Serial.printlnln(url);

// This will send the request to the server
  client.print(String("GET ") + url + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "Connection: close\r\n\r\n");
  timeout = millis();
  while (client.available() == 0) {
    if (millis() - timeout > 5000) {
      ////Serial.printlnln(">>> Client Timeout !");
      client.stop();
      return;
    }
  }
//  while(client.available()){
//    String line = client.readStringUntil('\r');
//    //Serial.println(line);
    int size;
    int ang;
    int ang2;
    int ang3;
    int jumlahsisa;
    int jumlahsisa2;
    int jumlahsisa3;
    while ((size = client.available()) > 0) {
      uint8_t* msg = (uint8_t*)malloc(size);
      size = client.read(msg, size);
     // Serial.write(msg, size);
      azum = (char*)msg;
      //////Serial.printlnln(azum.substring(213));
      //azum = azum.substring(213);
      ang = azum.lastIndexOf('Z');
      azum = azum.substring(ang);
      azum = azum.substring(0,2);
      ////Serial.printlnln(azum);
      free(msg);
        if(azum == "ZN"){
          ////Serial.printlnln("servo nyala");
          for(angle = 10; angle < 90; angle++)  
          {                                  
          servo.write(angle);              
          delay(15);                  
          }
          // now scan back from 180 to 0 degrees
          for(angle = 90; angle > 10; angle--)    
          {
          servo.write(angle);          
          delay(15);      
          }
        }else if(azum == "ZM"){
          ////Serial.printlnln("servo dan stepper mati");
          servo.write(10);          
          delayMicroseconds(100);
        }else if(azum == "ZF"){
          ////Serial.printlnln("stepper maju");
          //maju dan mundur
           Serial.println("x-");
           //   digitalWrite(dirPin,LOW); // Enables the motor to move in a particular direction
          // Makes 200 pulses for making one full cycle rotation
         /*
          for(int x = 0; x < 1000; x++) {
            digitalWrite(stepPin,HIGH);
            delayMicroseconds(500);
            digitalWrite(stepPin,LOW);
            delayMicroseconds(500);
          }
          */
          delay(200); // 200 ms delay
        }else if(azum == "ZU"){
          ////Serial.printlnln("stepper mundur");
          //maju dan mundur
           Serial.println("x+");
            //  digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction
          // Makes 200 pulses for making one full cycle rotation
          /*
          for(int x = 0; x < 1000; x++) {
            digitalWrite(stepPin,HIGH);
            delayMicroseconds(500);
            digitalWrite(stepPin,LOW);
            delayMicroseconds(500);
          }
          */
          delay(200); // One second delay
        }else if(azum == "ZA"){
          ////Serial.printlnln("stepper kanan");  
           Serial.println("y-");        
          //kanan dan kiri
            //  digitalWrite(dirPink,LOW); // Enables the motor to move in a particular direction
          // Makes 200 pulses for making one full cycle rotation
          /*
          for(int x = 0; x < 1000; x++) {
            digitalWrite(stepPink,HIGH);
            delayMicroseconds(500);
            digitalWrite(stepPink,LOW);
            delayMicroseconds(500);
          }
          */
          delay(200); // One second delay
        }else if(azum == "ZI"){
          ////Serial.printlnln("stepper kiri");
          Serial.println("y+");
          //kanan dan kiri
           //   digitalWrite(dirPink,HIGH); // Enables the motor to move in a particular direction
          // Makes 200 pulses for making one full cycle rotation
         /*
          for(int x = 0; x < 1000; x++) {
            digitalWrite(stepPink,HIGH);
            delayMicroseconds(500);
            digitalWrite(stepPink,LOW);
            delayMicroseconds(500);
          }
          */
          delay(200); // One second delay
        }else{
          ////Serial.printlnln("servo dan stepper mati");
          servo.write(10);          
          delayMicroseconds(100);
        }
      delay(50);
    }
   
 
 
}


Buat RAB buat RISPRO 2024 dan sudah dikirim ke Adit

 Komunikasi ESP NOW

ESPNOW adalah komunikasi nirkabel untuk chip ESP untuk lebih detail dapat dilihat dari CHIP


ini adalah pin out dari Weemos D1 mini clone 



 Di Arduino IDE pergunakan ESP32 WROOM perlu dipencet boot kalau ESP32 tidak perlu

Untuk ESP NOW bisa dipergunakann ESP32 sebagai sender dan ESP8266 reciever 

 

 

/*
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp-now-esp32-arduino-ide/
 
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
 
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*/

#include <esp_now.h>
#include <WiFi.h>

// REPLACE WITH YOUR RECEIVER MAC Address
uint8_t broadcastAddress[] = {0x40, 0xF5, 0x20, 0x29, 0x1F, 0xB5};

// Structure example to send data
// Must match the receiver structure
typedef struct struct_message {
  char a[10];
  char b[10];
  char c[10];
  char d[10];
} struct_message;

// Create a struct_message called myData
struct_message myData;

esp_now_peer_info_t peerInfo;

// callback when data is sent
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
  Serial.print("\r\nLast Packet Send Status:\t");
  Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");
}
 
void setup() {
  // Init Serial Monitor
  Serial.begin(115200);
 
  // Set device as a Wi-Fi Station
  WiFi.mode(WIFI_STA);

  // Init ESP-NOW
  if (esp_now_init() != ESP_OK) {
    Serial.println("Error initializing ESP-NOW");
    return;
  }

  // Once ESPNow is successfully Init, we will register for Send CB to
  // get the status of Trasnmitted packet
  esp_now_register_send_cb(OnDataSent);
 
  // Register peer
  memcpy(peerInfo.peer_addr, broadcastAddress, 6);
  peerInfo.channel = 0;  
  peerInfo.encrypt = false;
 
  // Add peer        
  if (esp_now_add_peer(&peerInfo) != ESP_OK){
    Serial.println("Failed to add peer");
    return;
  }
}
 
void loop() {
  // Set values to send
  strcpy(myData.a, "pp 100");
  strcpy(myData.b, "pread 10");
  strcpy(myData.c, "loop 100");
   strcpy(myData.d, "pp 200");
 
  // Send message via ESP-NOW
  esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));
   
  if (result == ESP_OK) {
    Serial.println("Sent with success");
  }
  else {
    Serial.println("Error sending the data");
  }
  delay(2000);
}


 

 

 

 

 Untuk reciever ESP8266

/*
  Rui Santos
  Complete project details at https://RandomNerdTutorials.com/esp-now-esp8266-nodemcu-arduino-ide/
 
  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files.
 
  The above copyright notice and this permission notice shall be included in all
  copies or substantial portions of the Software.
*/

#include <ESP8266WiFi.h>
#include <espnow.h>

// Structure example to receive data
// Must match the sender structure
typedef struct struct_message {
    char a[10];
    char b[10];
    char c[10];
    char d[10];
   
} struct_message;

// Create a struct_message called myData
struct_message myData;

// Callback function that will be executed when data is received
void OnDataRecv(uint8_t * mac, uint8_t *incomingData, uint8_t len) {
  memcpy(&myData, incomingData, sizeof(myData));
  Serial.print("Bytes received: ");
  Serial.println(len);
  Serial.print("Char: ");
  Serial.println(myData.a);
  Serial.print("Int: ");
  Serial.println(myData.b);
  Serial.print("Float: ");
  Serial.println(myData.c);
  Serial.print("String: ");
  Serial.println(myData.d);

  Serial.println();
}
 
void setup() {
  // Initialize Serial Monitor
  Serial.begin(115200);
 
  // Set device as a Wi-Fi Station
  WiFi.mode(WIFI_STA);

  // Init ESP-NOW
  if (esp_now_init() != 0) {
    Serial.println("Error initializing ESP-NOW");
    return;
  }
 
  // Once ESPNow is successfully Init, we will register for recv CB to
  // get recv packer info
  esp_now_set_self_role(ESP_NOW_ROLE_SLAVE);
  esp_now_register_recv_cb(OnDataRecv);
}

void loop() {
 
}






Selasa, 24 Oktober 2023

Belajar Python 3 Komunikasi serial, membuat program seperti Compass (serial comunication)

 Compass Sofware untuk mengetes komunikasi serial tampilan seperti dibawah ini






Belajar Python 2 GUI sederhana

 Untuk membuat GUI di python memang memerlukan lebih efort 

https://realpython.com/pysimplegui-python/

https://www.pysimplegui.org/en/latest/

 

program tambah tambahan

 import PySimpleGUI as sg

sg.theme('DarkAmber')   # Add a touch of color
#  python C:\Users\Dell\python\GUI4.py
# penambahan
layout = [  [sg.Text('Masukan angka ke 1'), sg.InputText(1)],

            [sg.Text('masukan angka ke 2'),sg.InputText(2)],
            [sg.Button('Ok'), sg.Button('Cancel')] ]

# Create the Window
window = sg.Window('Coba GUI', layout)
# Event Loop to process "events" and get the "values" of the inputs
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event == 'Cancel': # if user closes window or clicks cancel
        break
    print('Angka 1= ', values[0])
    print('Angka 2= ', values[1])
    print('Angka 1 + angka 2 = ', int(values[1])+int(values[0]))
    #sg.Text(values[0]+values[1])
  # window('gelo')
window.close()

 


 

 import PySimpleGUI as sg
import serial

sg.theme('DarkAmber')   # Add a touch of color
#  python C:\Users\Dell\python\GUI5.py
# penambahan
layout = [  [sg.Text('Masukan Port Serial'), sg.InputText(1)],
            [sg.Button('Ok'), sg.Button('Cancel')]
         ]
 
# Create the Window
window = sg.Window('Coba GUI Serial port', layout)
# Event Loop to process "events" and get the "values" of the inputs
ser = serial.Serial('COM5',baudrate=9600,timeout=1)
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event == 'Cancel': # if user closes window or clicks cancel
        break
    
    arduinoData = ser.readline()
    print(arduinoData)
   
window.close()

 


 

 

 



Senin, 23 Oktober 2023

Belajar Python 1 Komunikasi Serial

 Untuk menginstal python dapat dilihat di 

https://www.python.org/

unduh instalan untuk windows

setelah selesai instalasi python buka command promt

ketik python




 

menginstal pyserial

keluar python dengan mengetik exit()

kemudian ketikan pip install pyserial


mencoba serial port arduino

(arduino dapat berfunsi sebagai serial port ) dalam hal ini akan dicoba comunikasi yang biasanya mempergunakan serial port monitor pada Arduino IDE diubah mempergunakan python


Hubungkan arduino dalam  hal ini saya mempergunakan Arduino Mega WIFI sebagai serial port

 

 
 



untuk program pythonnya dapat dipergunakan perintah seperti dibawah ini

 python C:\Users\Dell\python\serial.py

import serial
ser = serial.Serial('COM5',baudrate=9600,timeout=1)
while 1:
    arduinoData = ser.readline()
    print(arduinoData)




Kamis, 28 September 2023

"Tumbang" -Dere

 "Tumbang"

Langkah-langkahku berhati-hati
Betapa takut engkau pergi
Jangan sampailah hilang rasamu

Sebelumnya aku tak pernah
Jatuh jauh sedalam ini
Suramku saat kau sungguh-sungguh pergi

Setahun berlalu upayaku 'tuk lupa
Tapi cukup dengar namamu saja
Buatku ingat lagi semua

Sudah tidak ada lagi terang
Sudah dingin lagi hari-hariku
Satu pohon harapku telah tumbang
Hilang lagi harapan cinta
Entah di mana kini naungmu
Entah masihkah kau ingat parasku

Sebelumnya aku tak pernah
Jatuh jauh sedalam ini
Suramku saat kau sungguh-sungguh pergi

Setahun berlalu upayaku 'tuk lupa
Tapi cukup dengar namamu saja
Buatku ingat lagi semua

Sudah tidak ada lagi terang
Sudah dingin lagi hari-hariku
Satu pohon harapku telah tumbang
Hilang lagi harapan cinta
Entah di mana kini naungmu
Entah masihkah kau ingat parasku

Bila kau dengar lagu ini, datanglah lagi
Bila kau dengar lagu ini, ayo kembali
Bila kau dengar lagu ini, datanglah lagi
Bila kau dengar lagu ini, ayo kembali, kembali

Sudah tidak ada lagi terang
Sudah dingin lagi hari-hariku
Satu pohon harapku telah tumbang
Hilang lagi harapan cinta
Entah di mana kini naungmu
Entah masihkah kau ingat parasku

(Bila kau dengar lagu ini, datanglah lagi)
Entah masihkah kau ingat parasku
(Bila kau dengar lagu ini, ayo kembali)
Entah masihkah kau ingat parasku

Rabu, 06 September 2023

Berbisik

 

Satu tahun berlalu 

Kau berbisik kembali kepadaku

Sebagian indah yang kau ambil kembali

Sedikit demi sedikit


Mataku yang tak awas lagi

Semua nafasku

Yang tak sama dengan seperti

Waktu itu


Yang kuingat hanya

Kilasan hantaran waktu yang terlalu

Berkilatan dan berlarian

Diantaranya 


Bayangan yang terpapar panas

Hilang tertutup redupnya hari

Hembusan angin yang menghampiri

Tanpa rasa