发动态
综合 最新发布 最新回复
图文
列表
置顶
HDI高密度互连板正式上线
走进嘉立创工厂 昨天,非常有幸参加了嘉立创组织的工厂参观活动,真正走进了这个在电子圈赫赫有名的现代化板厂。如果说以前对PCB的理解还停留在图纸和成品上,那么昨天的行程则让我彻底被“中国制造”的硬核实力震撼了!🤯 从踏入车间的那一刻起,扑面而来的不是传统工厂的嘈杂,而是高度自动化带来的秩序感。我们全程跟随讲解,完整见证了每一块电路板诞生的“奇幻漂流”: 🔹 开料与压合:看着巨大的自动化设备精准处理基材,多层板的压合过程严谨而高效,奠定了板材坚实的物理基础。 🔹 沉铜与线路:这是最考验技术的环节之一。亲眼看到化学沉铜如何让绝缘孔壁导电,以及蚀刻工序中对线宽线距的微米级控制,不得不感叹工艺的精密。 🔹 阻焊与字符:绿色的阻焊油墨均匀覆盖,字符打印清晰锐利。这里的自动化喷涂和曝光设备,极大减少了人为误差。 🔹 测试与打包:最后的电测和外观检环节,机器视觉与自动化机械臂配合默契,确保每一片发出的板子都符合高标准,随后迅速打包发货。 🌟 最大的感触:自动化与良率控制 整个参观过程中,最让我印象深刻的就是嘉立创对自动化、流程化的极致追求。几乎看不到传统意义上的人海战术,取而代之的是穿梭的AGV小车、机械臂和全封闭的生产线。 特别是在良率控制方面,每一个环节都有严格的数据监控和反馈机制。这种用数据驱动生产、用科技保障质量的理念,让嘉立创不仅仅是一个加工厂,更像是一个高科技的实验室。这也解释了为什么嘉立创能在保证速度的同时,依然维持如此稳定的高品质。📈💪 🙏 致谢 最后,衷心感谢嘉立创团队的精心组织和热情接待!🎉 这次活动不仅让我们零距离接触了行业顶尖的制造现场,更让我们对PCB制造这个行业有了全新的认知和敬畏之心。这不仅是一次参观,更是一堂生动的产业科普课。 如果你也是电子爱好者或工程师,有机会一定要来感受一下这种“工业美学”!🚀 #嘉立创工厂参观# #PCB高多层工厂参观#
嘉立创PCB
在很久之前有一期公众号介绍了如何使用HC05来实现蓝牙通信,但是事实上并没有很好的蓝牙通讯助手(手机上调试的是一个广告很多的软件),电脑端是利用另一个蓝牙模块接上CH340转TTL模块,将HC05/06的蓝牙转为串口进行通信。因此本期旨在开发一个蓝牙助手可以直接连接蓝牙模块进行通讯。 框架 利用ESP32来模拟BT蓝牙(BLE低功耗蓝牙后续也会进行测试) C#利用32feet.NET库来实现蓝牙的使用。 准备工作 界面布局 这个界面基本也是搬运至前面的串口助手界面,目前制作了发送和接收界面。并且代码逻辑也比较简单,还需要有很大的修改。 软件流程 (1)初始化扫描蓝牙设备写入选择框 (2)连接蓝牙设备,连接成功则开启监听线程 (3)监听线程接收到数据设置回调函数将接收到的内容显示在文本框上。 (4)点击发送按钮后将文本框的内容发送给接收端。 核心代码 初始化private async void Booth_Init() { try { client = new BluetoothClient(); // 使用 Task.Run 来在另一个线程中执行 DiscoverDevices devices = await Task.Run(() => client.DiscoverDevices()); BoothChoose.Items.Clear(); foreach (BluetoothDeviceInfo device in devices) { // 确保 UI 更新在 UI 线程上执行 this.Invoke((MethodInvoker)delegate { BoothChoose.Items.Add(device.DeviceName); }); Console.WriteLine(device.DeviceName); } // 确保在 UI 线程上修改 SelectedIndex this.Invoke((MethodInvoker)delegate { if (BoothChoose.Items.Count > 0) { BoothChoose.SelectedIndex = 0; } }); } catch (Exception ex) { Console.WriteLine("错误: " + ex.Mege); } } 初始化的代码是使用异步的方式扫描设备,并且将设备名称显示在选择控件上,之所以是采用异步的方式原因是不采用异步会占用UI线程导致UI线程无法使用。所以需要单独开线程来初始化,同时该函数也可以用于重新扫描设备。 蓝牙连接private async void BoothConnect() { try { if (BoothChoose.Items.Count != 0) { string selectedDeviceName = BoothChoose.SelectedItem.ToString(); // 寻找匹配的设备 BluetoothDeviceInfo deviceToConnect = devices.FirstOrDefault(d => d.DeviceName == selectedDeviceName); if (deviceToConnect != null) { // 连接到设备 await Task.Run(() => client.Connect(deviceToConnect.DeviceAddress, BluetoothService.SerialPort)); MessageBox.Show("连接成功", "信息"); if (client.Connected) { stream = client.GetStream(); StartListening(OnDataReceived); // 开始监听数据并指定回调 } } else { MeBox.Show("未找到选定的设备", "警告"); } } else { Messox.Show("未检测到设备", "警告"); } } catch (Exception ex) { Messox.Show("蓝牙连接失败: " + ex.Mesge, "错误"); } } 连接蓝牙的代码,根据选择控件选择的蓝牙名称匹配对应的蓝牙设别,接着使用异步的方式来连接蓝牙,防止连接蓝牙的过程中导致UI线程卡顿无法使用。 并且使用一个Stream流变量来接收蓝牙传输的信息,调用StartListening函数来实现蓝牙设备的监听 监听函数private void StartListening(Action<string> callback) { Task.Run(() => { byte[] buffer = new byte[1024]; // 数据缓冲区 int bytes; try { while (client.Connected) { bytes = stream.Read(buffer, 0, buffer.Length); if (bytes > 0) { string receivedData = Encoding.UTF8.GetString(buffer, 0, bytes); this.Invoke((MethodInvoker)delegate { callback(receivedData); // 在UI线程上调用回调 }); } } } catch (IOException ex) { // 连接丢失或读取错误 this.Invoke((MethodInvoker)delegate { MesBox.Show("读取数据错误: " + ex.Mesge, "错误"); }); } }); } private void OnDataReceived(string data) { if (Receive.InvokeRequired) { // 如果调用线程不是创建Receive控件的线程,则使用Invoke调用 Receive.Invoke(new MethodInvoker(delegate { Receive.AppendText(data); })); } else { // 如果已经在UI线程,则直接更新 Receive.AppendText(data); } } 监听函数中我们异步监听数据,并且设置OnDataReceived回调函数处理接收到的数据。 发送数据private void TransButton_Click(object sender, EventArgs e) { try { // 获取要发送的文本 string dataToSend = TransText.Text; if (NewLine.Checked) { dataToSend += Environment.NewLine; } if (client != null && client.Connected) { Stream stream = client.GetStream(); if (stream.CanWrite) { // 将文本转换为字节数据 byte[] buffer = Encoding.UTF8.GetBytes(dataToSend); // 发送数据 stream.Write(buffer, 0, buffer.Length); } } else { Messox.Show("Bluetooth is not connected."); } } catch (Exception ex) { Messox.Show("Error sending data: " + ex.Mese); } } 效果展示 ESP32中的代码是利用蓝牙传输接收到的信息。 因此我们发送信息会接收到发送的信息。 缺点还有很多,后续将会进行迭代升级
基于C#的软件大杂烩(6.1)——简单的蓝牙助手
嘉立创PCB
在这个科技日新月异的时代,图像处理和人脸识别技术已经广泛应用于各个领域。。本文将介绍如何使用C#结合ESP32_Cam来实现图像接收和人脸识别功能。因为后面的代码无论是逻辑还是细节都有太多太多需要注意的,所以文章内不具体讲解,只做关键部分说明。感兴趣的朋友可以加群拿源码或者来交流。1.概述    本项目旨在通过ESP32_Cam模块捕获图像,并使用C#编写的软件进行处理和人脸识别。我们将使用OpenCvSharp库来处理图像,初步实现灰度化、二值化的功能并利用Haar级联分类器进行人脸检测。2.准备工作硬件:ESP32_Cam模块。软件:Visual Studio(用于C#开发)。OpenCvSharp库(用于图像处理)。Haar级联分类器(用于人脸识别)。3. 界面布局核心代码解析监听端口接收图像private void StopListening() { // 停止TCP监听 isListening = false; if (cancellationTokenSource != null) { cancellationTokenSource.Cancel(); cancellationTokenSource.Dispose(); cancellationTokenSource = null; } if (tcpListener != null) { tcpListener.Stop(); } } private void ListenForText(CancellationToken cancellationToken) { try { while (!cancellationToken.IsCancellationRequested) { using (TcpClient tcpClient = tcpListener.AcceptTcpClient()) { using (NetworkStream networkStream = tcpClient.GetStream()) { using (MemoryStream memoryStream = new MemoryStream()) { byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = networkStream.Read(buffer, 0, buffer.Length)) > 0) { memoryStream.Write(buffer, 0, bytesRead); } // 处理和显示接收到的数据 string receivedText = Encoding.UTF8.GetString(memoryStream.ToArray()); ReciveText.AppendText(receivedText); } } // 关闭TcpClient tcpClient.Close(); } } } catch (Exception ex) { Console.WriteLine($"错误:{ex.Mege}"); } } // 在UI线程上显示图像的方法 private void Dispmage(Bitmap image) { if (InvokeRequired) { Invoke(new Action(() => DisplayImage(image))); } else { pictox.Image = image; } } private void Stten_Click(object sender, EventArgs e) { if (Staten.Text == "创建监听") { DisableAll(); StaeningText(); PicTurSta.Enabled = false; StartListen.Text = "关闭监听"; } else { EnableAll(); Stening(); PicTurSta.Enabled=true; StartListen.Text = "创建监听"; } } 图像处理 以下是图像处理的核心代码段: Bitmap bitmap = new Bitmap(image); Mat inputMat = OpenCvSharp.Extensions.Bitverter.ToMat(bitmap); Mat OutMat = new Mat(); OutMat = inputMat.Clone(); // 灰度化 if (HuiDuHua.Checked) { Cv2.CvtColor(inputMat, OutMat, ColonCodes.BGR2GRAY); } // 二值化 if (Erzhihua.Checked) { int thresholdValue = Throid.Value; Cv2.Threshold(OutMat, OutMat, thresholdValue, 255, ThresholdTypes.Binary); } 人脸识别人脸识别部分的代码如下:string classifierPath = @"rcascade_frontalfac.xml"; CascadeClassifier faceCascade = new Cassifier(classifierPath); Mat grayImage = new Mat(); Cv2.CvtColor(OutMat, grayImage, ColoonCodes.BGR2GRAY); Rect[] faces = faceCascade.DetectMultiScale(grayImage); foreach (Rect face in faces) { Cv2.Rectangle(OutMat, face, Scalar.Red, 2); } 注意点我们使用NuGet管理包来安装我们需要的OpenCV的包,需要注意的是,这四个包都是需要的,并且我们需要在代码开始的时候导入我们的库。using OpenCvSharp; using OpenCvSharp.Extensions; 5. 效果展示
基于C#的软件大杂烩(4.3)——TCP服务端的图像接收和处理
嘉立创PCB
咱们做硬件的,应该都绕不开这家公司。我反正是关注了十年出头,估计大家已经猜到了,它就是嘉立创。01前言从最早接触到现在,接近十年以上。那时候还在上学,做比赛、搞毕设,画个简单的两层板,嘉立创打样,便宜又快。后来毕业进公司,项目越来越复杂,从两层到四层,层数越来越多,还是一直在嘉立创打。包括它家的元器件商城,买电阻电容、买MCU,顺手就买了,不用东找西找,省心。之前我还专门写过一篇文章,介绍嘉立创的创业故事。他们老板原来也是硬件工程师出身,自己当过工程师,知道同行想要什么。很多工程师对嘉立创有感情,其实就是因为:它陪着我们从学生时代一路走过来,见证了我们画的板子从简单到复杂,也实实在在解决了最实际的痛点——打样方便、买器件方便、不用折腾。近两年嘉立创推出FPC软板打样,圈里还讨论了一阵,说软板都做了,这是要把柔性板市场也卷一遍。我当时想的是,软板都做了,高多层板什么时候能更进一步?毕竟现在的硬件,跟十年前完全不一样了。02从简单板子到高多层板:硬件变了,嘉立创也变了十年前做个产品,单片机跑一跑,几个传感器,几颗LED,两层板、四层板绰绰有余。现在呢?AI芯片、高速接口、大容量存储,全往一块板上堆。尤其是这两年AI硬件火起来,机器人、边缘计算盒子、AI服务器,对PCB的要求直接拉满。有些主控,二十层起步,信号层、电源层、地层反复堆叠,还要控制阻抗、做等长布线,稍微有点误差,板子就跑不起来。做服务器的更狠,四五十层是常态,里面走的是几百G的高速信号。这就是现状:硬件越来越复杂,板子越打越高。层数上去之后,难点不是一个一个来的,而是一堆一堆来的。要考虑压合、钻孔、孔金属化和对位——压合实不实,钻孔光不光,镀铜匀不匀,对位准不准,每一项都被放大几十倍。有些板子元件多、尺寸有限,就需要做盲埋孔。在高密度板的设计,盲埋孔几乎是绕不开的,尤其是BGA封装的芯片,底下那么多引脚,不用盲埋孔根本走不通。针对这些越来越复杂的高多层板需求,嘉立创已经能把盲埋孔、高多层板作为常规业务承接。从简单的几次压合,到复杂的多次压合、交错盲埋孔,都能接。而且因为是一站式服务,你不用自己去跟厂家掰扯工艺细节,下单的时候选好,后面就不用操心了。03HDI与高阶工艺:把天花板往上顶了顶盲埋孔再往上走,就是HDI,也就是高密度互连板。普通盲埋孔用机械钻,孔径有极限,钻太小了钻头会断。HDI用激光钻孔,孔径能做到更小,一般叫微盲孔。孔径小了,同样的面积就能放下更多过孔,走线密度自然就上来了。HDI还有一个特点,就是积层法,一层一层往上叠,像盖楼一样。每一层都很薄,层间用微盲孔连着。这样做出来的板子,层数可以很高,但厚度不会太厚,适合轻薄化产品。HDI一般分阶——1阶、2阶、3阶,阶数越高,工艺越复杂。1阶是一层微盲孔,2阶可以叠两层,3阶可以叠三层甚至更多。每上一阶,对位精度、镀铜均匀性的要求都往上跳一个台阶。现在的智能手机、无人机、智能手表,里面基本都是HDI板。空间就那么点,功能越来越多,不用HDI根本塞不下。去年我注意到一个消息:嘉立创现场首发了64层超高层PCB,还有1-2阶HDI板。64层什么概念?前面说的那些难点,到64层的时候,每一项都被放大了几十倍。这种高端多层板绝非一次压合而成,而是分多次逐渐叠加,然后再通过后续的增层压合,逐步累积到60多层。以前这种工艺,基本是航空航天、高端通信设备才敢用,普通工程师想都不敢想,因为根本没地方打样。现在嘉立创做这个,意味着做小型化AI硬件、智能穿戴、无人机的团队,打样门槛又低了一截,小批量也能用上以前大厂才舍得用的工艺。04看着它把硬件门槛一步步降下来回头看这十年,我最深的感触是:嘉立创一直在做同一件事,把硬件门槛一步步降下来。最早是两层板打样,把价格打下来,让学生和创客也能随便打板子。后来是四层、六层,把高多层打样的门槛往下拉。再后来是元器件商城,让你不用再满世界找料。然后是SMT贴片,板子回来直接上件,不用自己手焊。前几年上了FPC软板,现在又把64层和HDI铺开。从PCB到元器件到贴片,把硬件研发最基础的几个环节串起来,让你下单之后不用再操心,板子回来直接调。顺便说一句,嘉立创IPO在即。一个做PCB起家的公司,能做到这个体量,靠的是什么?技术肯定有,产能肯定有,但最核心的,是这些年攒下来的工程师口碑。祝嘉立创越来越好。
一家关注了十年的公司,看着它把硬件门槛一步步降下来
嘉立创PCB
1-32层pcb打样,真A级板材,最快12小时出货,自营制造,品质可靠!
打赏记录
服务时间:周一至周六 9::00-18:00 · 联系地址:中国·深圳(福田区商报路奥林匹克大厦27楼) · 媒体沟通:pr@jlc.com · 集团介绍
移动社区