——
#DonLucElectronics #DonLuc #RadioFrequency #B4J #Bluetooth #SparkFunThingPlusESP32WROOM #Arduino #Project #Fritzing #Programming #Electronics #Microcontrollers #Consultant
——
——
——
——
B4J
RAD development tool for cross platform desktop, server and IoT solutions. B4J is a 100% free development tool for desktop, server and IoT solutions. With B4J you can easily create desktop applications, console programs and server solutions. B4J apps can run on Windows, Mac, Linux and ARM boards such as Raspberry Pi. The compiled apps are standalone, without any external dependencies.
DL2301Mk01
1 x SparkFun Thing Plus – ESP32 WROOM
1 x Lithium Ion Battery – 1 Ah
1 x SparkFun Cerberus USB Cable
SparkFun Thing Plus – ESP32 WROOM
TX0 – Digital 26
TR0 – Digital 27
VIN – +3.3V
GND – GND
DL2301Mk01p.ino
/* ***** Don Luc Electronics © *****
Software Version Information
Project #26 - Radio Frequency - B4J - Mk08
26-08
DL2301Mk01p.ino
1 x SparkFun Thing Plus - ESP32 WROOM
1 x GPS Receiver - GP-20U7 (56 Channel)
1 x Lithium Ion Battery - 1 Ah
1 x SparkFun Cerberus USB Cable
*/
// Include the Library Code
// Bluetooth Serial (ESP32SPP)
#include "BluetoothSerial.h"
// Bluetooth Serial (ESP32SPP)
BluetoothSerial SerialBT;
// Software Version Information
String sver = "26-08";
void loop() {
// Bluetooth Serial (ESP32SPP)
isBluetooth();
}
getBluetooth.ino
// Bluetooth
// isBluetooth
void isBluetooth() {
// Input
byte inputFromOtherSide;
// Bluetooth Serial (ESP32SPP)
if (SerialBT.available()) {
// Input Read
inputFromOtherSide = SerialBT.read();
// Write
SerialBT.write(inputFromOtherSide);
}
}
setup.ino
// Setup
void setup()
{
// Bluetooth Serial (ESP32SPP)
SerialBT.begin("DLE");
// Delay
delay(1000);
}
——
B4J – Bluetooth
Bluetooth.b4j
#Region Project Attributes
' Form Width and Form Height
#MainFormWidth: 600
#MainFormHeight: 400
#End Region
Sub Process_Globals
'Java OpenJDK 11
Private fx As JFX
' MainForm => Form
Private MainForm As Form
' Button
Private btnConnect As Button
Private btnSearch As Button
Private btnSend As Button
' List View
Private ListView1 As ListView
' Text Field
Private txtInput As TextField
' Text Area
Private txtLog As TextArea
' Bluetooth
Private bt As Bluetooth
' Async Streams
Private astream As AsyncStreams
' Boolean
Private connected As Boolean
Private searchingForDevices As Boolean
' Bluetooth Connection
Private currentConnection As BluetoothConnection
' Map
Private foundDevices As Map
' Button
Private btnDisconnect As Button
' Label
Private lblConnectionState As Label
Private lblSearchState As Label
' Image View
Private ImageView1 As ImageView
End Sub
Sub AppStart (Form1 As Form, Args() As String)
' App Start => MainForm = Form1
MainForm = Form1
MainForm.SetFormStyle("UNIFIED")
' Load the layout file.
MainForm.RootPane.LoadLayout("1")
' Show
MainForm.Show
' Bluetooth
bt.Initialize("bt")
foundDevices.Initialize
If bt.IsEnabled Then
bt.Listen
End If
' Update State
UpdateState
End Sub
Private Sub UpdateState
' Update State
If bt.IsEnabled = False Then
' No Bluetooth
lblSearchState.Text = "Bluetooth not available"
For Each n As Node In MainForm.RootPane
n.Enabled = False
Next
Else
' Bluetooth
' Button
btnSearch.Enabled = Not(searchingForDevices)
btnConnect.Enabled = Not(connected) And ListView1.SelectedIndex > -1
txtInput.Enabled = connected
btnSend.Enabled = connected
btnDisconnect.Enabled = connected
' State => Connected or Disconnected
Dim state As String
If connected Then
state = "Connected: " & currentConnection.Name
Else
state = "Disconnected"
End If
' Label
lblConnectionState.Text = state
lblSearchState.Text = "Searching..."
lblSearchState.Visible = searchingForDevices
End If
End Sub
Private Sub btnSearch_Action
' Button
' Search Boolean
Dim res As Boolean = bt.StartDiscovery
If res Then
' Searching For Devices
searchingForDevices = True
' List View
ListView1.Items.Clear
' Update State
UpdateState
Else
' Error
Log("Error starting discovery")
End If
End Sub
Private Sub bt_DeviceFound (Name As String, MacAddress As String)
' Button
' Device Found => Description
Dim description As String = Name & ": " & MacAddress
' List View
ListView1.Items.Add(description)
' Found Devices
foundDevices.Put(description, MacAddress)
End Sub
Private Sub bt_DiscoveryFinished
' Button
' Discovery Finished
searchingForDevices = False
' Update State
UpdateState
End Sub
Private Sub btnConnect_Action
' Button
' Connect
Dim address As String = foundDevices.Get(ListView1.SelectedItem)
' Bluetooth
bt.Connect(address)
End Sub
Private Sub bt_Connected (Success As Boolean, connection As BluetoothConnection)
' Button
Log($"Connected, success=${Success}"$)
' Success
If Success Then
' Connection
currentConnection = connection
connected = True
' AStream
If astream.IsInitialized Then astream.Close
astream.InitializePrefix(connection.InputStream, True, connection.OutputStream, "AStream")
End If
' Bluetooth Listen
bt.Listen
' Update State
UpdateState
End Sub
Sub AStream_NewData (Buffer() As Byte)
' AStream New Data
' You => Arduino
LogMessage("You", BytesToString(Buffer, 0, Buffer.Length, "UTF8"))
End Sub
Sub AStream_Error
' AStream Error
connected = False
' Update State
UpdateState
End Sub
Sub AStream_Terminated
' AStream Terminated
AStream_Error
End Sub
Private Sub txtInput_Action
' Button Send
btnSend_Action
End Sub
Private Sub btnSend_Action
' Button Send
If txtInput.Text.Length > 0 Then
' AStream
' Me => B4J
LogMessage("Me", txtInput.Text)
' AStream Write
astream.Write(txtInput.Text.GetBytes("utf8"))
txtInput.Text = ""
End If
End Sub
Private Sub LogMessage(From As String, Msg As String)
' Log Message
txtLog.Text = txtLog.Text & From & ": " & Msg & CRLF
txtLog.SetSelection(txtLog.Text.Length, txtLog.Text.Length)
End Sub
Private Sub ListView1_SelectedIndexChanged(Index As Int)
' Update State
UpdateState
End Sub
Private Sub btnDisconnect_Action
' Bluetooth Disconnect
currentConnection.Disconnect
' AStream Close
If astream.IsInitialized Then astream.Close
connected = False
' Update State
UpdateState
End Sub
——
People can contact us: https://www.donluc.com/?page_id=1927
Technology Experience
- Programming Language
- Single-Board Microcontrollers (PIC, Arduino, Raspberry Pi,Espressif, etc…)
- IoT
- Wireless (Radio Frequency, Bluetooth, WiFi, Etc…)
- Robotics
- Camera and Video Capture Receiver Stationary, Wheel/Tank and Underwater Vehicle
- Unmanned Vehicles Terrestrial and Marine
- Machine Learning
- RTOS
- Research & Development (R & D)
Instructor, E-Mentor, STEAM, and Arts-Based Training
- Programming Language
- IoT
- PIC Microcontrollers
- Arduino
- Raspberry Pi
- Espressif
- Robotics
Follow Us
Luc Paquin – Curriculum Vitae – 2022
https://www.donluc.com/luc/
Web: https://www.donluc.com/
Facebook: https://www.facebook.com/neosteam.labs.9/
YouTube: https://www.youtube.com/@thesass2063
Twitter: https://twitter.com/labs_steam
Pinterest: https://www.pinterest.com/NeoSteamLabs/
Instagram: https://www.instagram.com/neosteamlabs/
Don Luc


