
Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari
IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik
Mengulik Digitalisasi data statistik dengan bantuan python untuk pemanfaatan di bidang transportasi, kesehatan, keuangan dan masih banyak lagi
Menghadirkan pemanfaatan AI dengan praktek-praktek yang mudah diikuti - cocok untuk mahasiswa yang mencari ide tugas akhir
Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul
Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red
import RPi.GPIO as GPIO import time import json from antares_http import antares #library antares antares.setDebug(True) antares.setAccessKey('ACCESS:KEY') #sesuaikan GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)#Button to GPIO17 GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP)#Button to GPIO27 GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP)#Button to GPIO22 def update_antares(pilihan): latestData = antares.get('Project name', 'device name') #Sesuaikan isi = latestData['content'] #parsing pertama satu= isi['satu'] #parsing kedua dua= isi['dua'] tiga= isi['tiga'] #pilhan dari penekanan tombol satu, dua, tiga if pilihan == 'satu': myData = {'satu':int(satu)+1,'dua':int(dua),'tiga':int(tiga)} elif pilihan == 'dua': myData = {'satu':int(satu),'dua':int(dua)+1,'tiga':int(tiga)} elif pilihan == 'tiga': myData = {'satu':int(satu),'dua':int(dua),'tiga':int(tiga)+1} antares.send(myData,'Project name', 'device name') #Sesuaikan try: while True: button_state1 = GPIO.input(17) #baca tombol button_state2 = GPIO.input(27) button_state3 = GPIO.input(22) if button_state1 == False: print('Button 1 is Pressed...') update_antares('satu') elif button_state2 == False: print('Button 2 is Pressed...') update_antares('dua') elif button_state3 == False: print('Button 3 is Pressed...') update_antares('tiga') time.sleep(0.2) except: GPIO.cleanup()
import RPi.GPIO as GPIO #library import time import pymongo import json #sesuaikan dengan client mongodb atlas kalian serta DB/Collection nya myclient = pymongo.MongoClient("mongodb+srv://user:password@cluster0-jb06l.mongodb.net/test?retryWrites=true&w=majority") mydb = myclient["latihan"] mycol = mydb["coba_tombol"] GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)#Button to GPIO17 GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP)#Button to GPIO27 GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP)#Button to GPIO22 ######Update by increment database value###### def update_db(kolom): x= mycol.find_one_and_update({'judul':'coba'},{'$inc':{kolom:1}}) print('update dbase :') print(x) try: while True: button_state1 = GPIO.input(17) button_state2 = GPIO.input(27) button_state3 = GPIO.input(22) if button_state1 == False: print('Button 1 is Pressed...') update_db('satu') elif button_state2 == False: print('Button 2 is Pressed...') update_db('dua') elif button_state3 == False: print('Button 3 is Pressed...') update_db('tiga') time.sleep(0.2) except: GPIO.cleanup()
import RPi.GPIO as GPIO #library Rpi sebagai input output lewat python import time GPIO.setmode(GPIO.BCM) #pilih GPIO pin yang dekat-dekat ground aja #semua GPIO di Pull UP GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)#TombolGPIO17 GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP)#TombolGPIO27 GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP)#TombolGPIO22 try: while True: button_state1 = GPIO.input(17) button_state2 = GPIO.input(27) button_state3 = GPIO.input(22) if button_state1 == False: #logic 0 ketika ditekan print('Tombol 1 ditekan...') elif button_state2 == False: print('Tombol 2 ditekan...') elif button_state3 == False: print('Tombol 3 ditekan...') time.sleep(0.2) except: GPIO.cleanup()
import RPi.GPIO as GPIO import time import pygame import os os.system ('xset s activate') #membunuh screen saver, tapi ini dulu export DISPLAY=:0.0 GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)#Button to GPIO GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP) pygame.mixer.init() #mixer suara try: while True: button_state1 = GPIO.input(17) button_state2 = GPIO.input(27) button_state3 = GPIO.input(22) if button_state1 == False: print('Ini tombol 1 broo...') os.system ('feh --hide-pointer -x -q -B black -F -Z "satu.png" &') pygame.mixer.music.load("nomer1.mp3") pygame.mixer.music.play(1) elif button_state2 == False: print('Iki tombol 2 jeeehh...') os.system ('feh --hide-pointer -x -q -B black -F -Z "dua.png" &') pygame.mixer.music.load("nomer2.mp3") pygame.mixer.music.play(1) elif button_state3 == False: print('Kepencet tombol telu boz...') os.system ('feh --hide-pointer -x -q -B black -F -Z "tiga.png" &') pygame.mixer.music.load("nomer3.mp3") pygame.mixer.music.play(1) time.sleep(0.2) while pygame.mixer.music.get_busy() == True: pass except: GPIO.cleanup()
import RPi.GPIO as GPIO import time import pygame import os import subprocess os.environ['DISPLAY'] = ":0" GPIO.setmode(GPIO.BCM) GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)#Button to GPIO23 GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP) pygame.mixer.init() # ================================= # >>>> code here to turn screen ON # ================================= # forse display on, disable dpms and set screensaver off subprocess.call('XAUTHORITY=~pi/.Xauthority DISPLAY=:0 xset dpms force on && xset -dpms && xset s off', shell=True) #vlc vid = subprocess.Popen(['vlc','bali.mp4','-L','-f','-q','&'], shell=False) def putar(musik): pygame.mixer.music.load(musik) pygame.mixer.music.set_volume(1.0) pygame.mixer.music.play(1) time.sleep(5) try: while True: button_state1 = GPIO.input(17) button_state2 = GPIO.input(27) button_state3 = GPIO.input(22) if button_state1 == False: print('Button 1 is Pressed...') putar("survey1.mp3") elif button_state2 == False: print('Button 2 is Pressed...') putar("survey2.mp3") elif button_state3 == False: print('Button 3 is Pressed...') putar("survey3.mp3") time.sleep(0.2) while pygame.mixer.music.get_busy() == True: pass except: vid.terminate() GPIO.cleanup()
void kirim(String tombol, String suhu, String humi) // kirim 3 item sekaligus { Serial.println("publish to antares topik: " ); Serial.print(TOPIKPUB); Serial.print(" : "); Serial.println(tombol + " - " + suhu + " - " + humi ); String pubString ; //isi json pub message yg super panjang pubString += F("{"); pubString += F("\"m2m:rqp\": {"); pubString += F("\"fr\": \""); pubString += String(accessKey) ; pubString += F("\","); pubString += F("\"to\": \"/antares-cse/antares-id/"); pubString += String(projDev); pubString += F("\","); pubString += F("\"op\": 1,"); pubString += F("\"rqi\": 123456,"); pubString += F("\"pc\": {"); pubString += F("\"m2m:cin\": {"); pubString += F("\"cnf\": \"message\","); pubString += F("\"con\": \"{\\\"tombol\\\":"); pubString += tombol; pubString += F(",\\\"suhu\\\":"); pubString += suhu; pubString += F(",\\\"humidity\\\":"); pubString += humi; pubString += F("}\""); pubString += F("}"); pubString += F("},"); pubString += F("\"ty\": 4"); pubString += F("}"); pubString += F("}"); // kirim ke topik TOPIKPUB char message_buff[pubString.length() + 1]; pubString.toCharArray(message_buff, pubString.length() + 1); client.publish(TOPIKPUB,message_buff); }
DynamicJsonDocument doc(512); deserializeJson(doc, message); String parsedString = doc["m2m:rsp"]["pc"]["m2m:cin"]["con"]; //pertama cari isi con deserializeJson(doc, parsedString); String lednya = doc["led"]; //kedua cari isi led on apa off Serial.println("lednya : " + lednya);
// by www.aisi55.com please attach our credential if you using our script #include <SoftwareSerial.h> #include <ESP8266WiFi.h> #include <PubSubClient.h> #include <ArduinoJson.h> SoftwareSerial mod(4, 5); // RX, TX const char *ssid = "nama wifi"; const char *pass = "password"; const char *mqtt_server = "mqtt.antares.id"; const int mqtt_port = 1883; const char *mqtt_user = ""; const char *mqtt_pass = ""; const char *mqtt_client_name = "ahocool1265352"; //sesuaikan dengan parameter akun antares kamu #define TOPIKPUB "/oneM2M/req/access:key/antares-cse/json" #define TOPIKSUB "/oneM2M/resp/antares-cse/access:key/json"
#define accessKey "access:key"
#define projDev "Project_name/Device_name" WiFiClient wclient; PubSubClient client(wclient); byte ledOn[] = {0x05, 0x05, 0x00, 0x00, 0xFF, 0x00, 0x8D, 0xBE};//ngidupin Led byte ledOff[] = {0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x4E};//matikan Led byte tombol[] = {0x05, 0x02, 0x00, 0x00, 0x00, 0x01, 0xB8, 0x4E};//tombol byte tombolL[] = {0x05, 0x02, 0x01, 0x00, 0xa0, 0xB8}; // tombol Low byte tombolH[] = {0x05, 0x02, 0x01, 0x01, 0x61, 0x78}; // tombol High byte humitemp[] = {0x05, 0x04, 0x00, 0x00, 0x00, 0x03, 0xB1, 0x8F};//baca dht11 byte dhtOK[] = {0x05, 0x04, 0x06} ; byte bufferDataModbus[50]; byte *ptr; bool urut= false; bool led= false; unsigned long previousMillis = 0; String suhunya ="0"; String huminya ="0"; String tomb ="0"; void setup() { Serial.begin(9600); Serial.println(F("ESP8266 Modbus Bridge to ANTARES")); Serial.println(F("http://www.aisi555.com")); Serial.println(); if (WiFi.status() != WL_CONNECTED) { Serial.print("Connecting to Wifi: "); Serial.print(ssid); Serial.println("..."); WiFi.begin(ssid, pass); if (WiFi.waitForConnectResult() != WL_CONNECTED) return; Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } mod.begin(9600); ptr = bufferDataModbus; client.setServer(mqtt_server, mqtt_port); client.setCallback(mqtt_callback); } void reconnectmqtt() { Serial.println("Connecting to MQTT server.."); if (client.connect(mqtt_client_name,mqtt_user, mqtt_pass)) { Serial.println("Connected to MQTT server"); } else { Serial.println("Could not connect to MQTT server"); } if (client.connected()){ Serial.println("subscribe to topic: "); Serial.println(TOPIKSUB); client.subscribe(TOPIKSUB); } } void kirim(String tombol, String suhu, String humi) { Serial.println("publish to antares topik: " ); Serial.print(TOPIKPUB); Serial.print(" : "); Serial.println(tombol + " - " + suhu + " - " + humi ); String pubString ; pubString += F("{"); pubString += F("\"m2m:rqp\": {"); pubString += F("\"fr\": \""); pubString += String(accessKey) ; pubString += F("\","); pubString += F("\"to\": \"/antares-cse/antares-id/"); pubString += String(projDev); pubString += F("\","); pubString += F("\"op\": 1,"); pubString += F("\"rqi\": 123456,"); pubString += F("\"pc\": {"); pubString += F("\"m2m:cin\": {"); pubString += F("\"cnf\": \"message\","); pubString += F("\"con\": \"{\\\"tombol\\\":"); pubString += tombol; pubString += F(",\\\"suhu\\\":"); pubString += suhu; pubString += F(",\\\"humidity\\\":"); pubString += humi; pubString += F("}\""); pubString += F("}"); pubString += F("},"); pubString += F("\"ty\": 4"); pubString += F("}"); pubString += F("}"); char message_buff[pubString.length() + 1]; pubString.toCharArray(message_buff, pubString.length() + 1); client.publish(TOPIKPUB,message_buff); } void loop() { if (!client.connected()) { reconnectmqtt(); } else client.loop(); //cek terus kalau ada data masuk unsigned long currentMillis = millis(); if(currentMillis - previousMillis >= 5000) { // save the last time you read the sensor previousMillis = currentMillis; if(!urut )mod.write(tombol, sizeof(tombol)); else mod.write(humitemp, sizeof(humitemp)); urut =!urut; } long millisResponModbus = millis() + 1000; while (!mod.available()) { if (millisResponModbus < millis()) { break;//timeout } } while (mod.available()) { byte b = mod.read(); *ptr++ = b; Serial.print("0x"); Serial.print(String(b, HEX)); Serial.print(" "); delay(2); } if (memcmp(bufferDataModbus, ledOn, sizeof(ledOn)) == 0) { ptr = bufferDataModbus; memset(bufferDataModbus, 0x00, sizeof(bufferDataModbus)); } else if (memcmp(bufferDataModbus, ledOff, sizeof(ledOff)) == 0) { ptr = bufferDataModbus; memset(bufferDataModbus, 0x00, sizeof(bufferDataModbus)); } else if (memcmp(bufferDataModbus, tombolL, sizeof(tombolL)) == 0) { ptr = bufferDataModbus; tomb="0"; kirim(tomb,suhunya,huminya); memset(bufferDataModbus, 0x00, sizeof(bufferDataModbus)); } else if (memcmp(bufferDataModbus, tombolH, sizeof(tombolH)) == 0) { ptr = bufferDataModbus; tomb="1"; kirim(tomb,suhunya,huminya); memset(bufferDataModbus, 0x00, sizeof(bufferDataModbus)); } else if (memcmp(bufferDataModbus, dhtOK, sizeof(dhtOK)) == 0) { ptr = bufferDataModbus; suhunya = String(ptr[4]) + '.' +String(ptr[6]) ; huminya = String(ptr[8]); kirim(tomb,suhunya,huminya) ; memset(bufferDataModbus, 0x00, sizeof(bufferDataModbus)); } else { ptr = bufferDataModbus; //Serial.println(""); memset(bufferDataModbus, 0x00, sizeof(bufferDataModbus)); } } void mqtt_callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived in topic: "); Serial.println(topic); //Serial.print("Message:"); String message; for (int i = 0; i < length; i++) { message = message + (char)payload[i]; //Conver *byte to String } // Serial.print(message); //kepanjangan makanya di tutup DynamicJsonDocument doc(512); deserializeJson(doc, message); String parsedString = doc["m2m:rsp"]["pc"]["m2m:cin"]["con"]; deserializeJson(doc, parsedString); String lednya = doc["led"]; Serial.println("lednya : " + lednya); if(lednya == "on") { mod.write(ledOn, sizeof(ledOn)); Serial.println("lednya hidup"); } if(lednya == "off") { mod.write(ledOff, sizeof(ledOff)); Serial.println("lednya mati "); } Serial.println(); Serial.println("-----------------------"); }