matching network BLE antenna - bluetooth-lowenergy

Hi I'm using a BLE module connected to a chip antenna, the antenna manufacture establish the path width is .4mm, if I need to match the network to 50ohm how can I do it? the system has a pi-match C1=0.8pF L=3.9nH and C2 is 0.8pF how can I make sure it match to 50 ohm?

Your network contain 2 parts:
Antenna + pi-match
BLE module
You need to make sure both 2 part meet the requirement 50 ohm itself so you have to isolate 2 part.
(You can use the knife to remove a small path in the transmission line)
After isolation, use a 50ohm cable, solder one side of cable to each part, other side to the Vector network analyzer.
If the S-parameter you got is <-8dB in your frequency range => You got 50 ohm matching.
(Try change value of your pi to got value close to 50ohm)

Related

Max TX power Classic bluetooth for ESP32

I have been using esp32 for some projects.
Now i want to include classic bluetooth with a serial profile for one of our old projects.
In theory ESP32 is class 1,2,3 Bluetooth and in theory it supports 100meters.
I have been trying to raise the TX power for bluetooth playing with function esp_bredr_tx_power_set.
I have been able to raise it a bit passing params:
esp_bredr_tx_power_set(ESP_PWR_LVL_P9,ESP_PWR_LVL_P9);
But it is not enough. I have another bluetooth class 1 device with serial profile with more power (one from bluegiga).
Power consumption is not a problem in this project but distance is critical.
Is it possible to raise the power of classic bluetooth more on ESP32?
To check that power is assigned right, i used the get fuction
esp_power_level_t min,max;
esp_ble_tx_power_set(ESP_BLE_PWR_TYPE_ADV,ESP_PWR_LVL_P9 );
esp_bredr_tx_power_set(ESP_PWR_LVL_P9,ESP_PWR_LVL_P9 );
delay(1000);
esp_bredr_tx_power_get(&min,&max);
Serial.printf("min %d max %d",min,max);
The pause is used to be sure that power is changed (if you do it without delay, you see the old value). Probably 1s is too much, but this is just a test.
Thanks.
The highest TX output for an ESP32 is +9dbm, which falls in-between BT class 1 (+12dbm) and class 2 (+4dbm). So you have what it seems already set your TX power output to the maximum. It's not clear if you are using an PCB antenna or an external antenna, the latter will of course increase the range.
For the different BT power classes see this link
See Espressive document (scroll down to section with ESP_PWR_LVL_P9)

Need Help in circuit diagram of 8*8 reed switch matrix

I am designing 8*8 reed switch matrix which will be connected to Arduino. I am using Arduino Duemilanove. I have completed the matrix portion but don't know how to connect and where to connect the other elements.
My Matrix circuit
I decided to use the following items:
Arduino (Duemilanove)
64x Reed Switch
64x Diode (1N4148)
20x Resistors (10K)
1x 74HC595
1x 74HC165
I dont know where to place the Resistors and shift Registers and connection from shift registers to arduino. I need help in the circuit diagram. Please help me out with the circuit diagram.
Reference: https://mtifall10.wordpress.com/2010/12/10/magnetic-sensing-chessboard/
I'd use something like that:
Where LOAD should be in HIGH state by default, LOW level loads inputs on 74HC165, and LOW to HIGH change loads outputs.
So you just send short LOW pulse to the LOAD, and then send next row to scan (will be loaded in next round) to the SPI. You have to remember the previous row or you have to connect QH* output from 595 to SER on 165 and shift out two bytes, one dummy and second will be the new row to be scanned.
And the matrix scanning is Active LOW. So you have to send the byte with one bit cleared (selected row) and rest bits set. And it's similar for reads (but you can use inverted output from 165 as well to get inverted values directly).
I'm not an expert but I'll try my best. I can't assure you that this is 100% correct.
Because of the limited amount of digital ports you will also have to use the analog ports.. In your case, the a, b, c, d... pins are "positive"(current goes from plus to minus). The pins 1, 2, 3... are your grounds/negative side.
The resistors should be connected to each positive pin, in your case pin a, b, c and so on.
EDIT: Sorry, I did bit consider the shift register. You will have to read the datasheet. You'll probably use a port with pulse width modulation(PWM), GND port and VoltageOut port.

How many MAX7219 chips maximum can be cascaded?

I am trying to make a large moving sign that consists of Arduino (as the microcontroller), an 8x8 dot matrix (as the display) and MAX7219 (as the controller for the dot matrix display).
Is it possible to use 16 MAX7219 chips?
Thanks.
I don't know what arduino board are you using, and the answer may vary. Anyway:
If you have an Arduino UNO: you can't connect them directly, since the UNO has 14 digital I/Os, and you need at least N+2 pins to communicate with N MAX7219. Moreover I think you want to send commands to it, so the number of pins is drastically reduced. You can however use any port expander to have more I/Os and so communicating with it.
If you have an Arduino MEGA you will probably already have already all the I/Os you need.
In both cases probably the limiting factor will be the speed.. Just make some tests and you'll find it out

4 digit 7 segment & 8 buttons normal keypad on single port (PORTC) if PIC Microcontroller

I am using PIC16F882 (28 pins) microcontroller.
I have the hardware in which 4 digit seven segment (common anode & connected by 4 transistor via PORT B1 TO B4) and 8 buttons normal keypad in connected to single PORT pins (PORT C). Now i am able to run 4 digit seven segment without using any buttons. I have to write a code in which when i press button then only the display should get on and show some value.
Now my problem is that, to recognize keypad i have to make (initialize) port pins as input and to place value in display i have to make port (initialize) pins as output pins. So how can i operate display with the keypad who are connected to same port.
I tried to scan keypad and display one by one for 1ms but keypad is not working. ( controller is am not able to recognize a key press). Doing this scanning process when i see the voltage at any key i found floating value of 1.56 V & 2.65 V (Without pressing key) No change in voltage when i press key.
I don't know what should i do? I need some idea or concept which i can try to implement.
Please Help.
Thanks in advance.
I think you better use a chip which has more ports for your project (say pic16F877) so that you can have the 7 segment display on 1 port (portB) and the other port (portC) to turn on/off the segment that you like. PortD used for keypad. If you use separate port like I mentioned above, it saves a lot of your time when you have to look at your circuit as well as the code. You can have a look at this link below from Trini Robotics to see how they control the 7 Segment Display:
http://trinirobotics.com/?p=652

Receiving data from multiple devices using parallel wired RS232

I'm currently developing a small application for monitoring the power / current our solar collector is generating.
The array is connected to 3 inverters. Every inverter has a RS232 interface, transmitting one Line of information(its current status) every 10 seconds.
Since I want to do the monitoring using a device only having one serial port, I need to come up with a way to be able to read the data from all of the inverters in parallel.
I don't need to send anything to one of the inverters!
Is it possible to just connect 3 RS232 wires in parallel to one serial port? Collisions will be pretty unlikely since every inverter is transmitting only 64Byte / 10seconds ending with a newline, so I could check for variable line lengths to detect collisions.
I'm sort of chuckling at doomsday and wacky answers that so often pop up on stackoverflow...
But anyway, in years gone buy I have used paralleled RS-232 transmit lines using diodes and it can work fine for situations where collisions are unlikely. In one particular application I used this technique there were two input terminals where a user could key in simple commands to control the system (a specialized security system) and it was very unlikely that two people would be trying to control it at the same time from the two different terminals. Amazingly enough there are no problems with voltage levels with most RS-232A receivers I tested at the time and they tolerated the signal characteristics (no negative voltage) that result from the simple use of the diodes in series with the TXD signals. However, if I had to do this again I would likely add a simple pull-down resister and capacitor to ground with a diode between RXD and the cap in a sort of charge pump configuration or a pull-down to negative going handshake signal to ensure the "OR'd" input signal goes truly negative since the RS-232 spec defines +3 to -3v as invalid.
In any case, I would recommend not using this technique except in very specific, limited, and non-mission critical cases and would not use it in the case where you have multiple devices sending information at a programmed interval as in the case of the OP or where there is a software handshake.
In can be a simple solution to the problem of not enough serial input ports but only in a very limited set of environments.
No, you should NOT connect 3 serial output port in parallel. If you do that you are probably going to broke the RS232 output circuitry of your inverters.
You have 3 RS232 outputs, so you need 3 RS232 input, then you can manage these 3 input the way you like: maybe you can buffer the data from each input, and reoutput the data on a single RS232 output, to be connected to your monitoring device.... but you should add some code in the data flow to differentiate the data coming from the 3 inverters.
Maybe you can use some kind of IC that do the job for you, I'm not sure, but maybe that some IC that multiplex multiple RS232 input on a single RS232 output already exist.
Try this search: rs232 port input multiplexer on Google
Or, if the monitoring device is a Window computer, you can use 3 serial-to-usb converter: that will create 3 virtual COM port on your computer and you can read data from them with any software.
Update
About the hypothesis of securing the output circuitry using diods to block reentering current, I don't think it's going to work...
Many year have passed by since last time I've used an RS232 link at low level (so maybe I'm wrong) but I think that there is some kind of handshake going on between RS232 input and output port (speed to use, parity, stop bit...).
Each RS232 port have inputs and outputs signal, both for data and for transmission control, so your multiple RS232 outputs does have some input signals, and your single RS232 input does have some outputs.
This mean that your input monitoring RS323 port is going to try to make a handshake with 3 RS323 ports at the same time... and the 3 RS232 ports are probably going to respond at the same time... so I think it's not going to work.
Other than that if you place diodes on your output, you are going to loose 0.7v, I don't remember the tolerance on signal level of RS232, but maybe that 0.7v can be relevant.

Resources